Skip to content
This repository has been archived by the owner on Jun 14, 2019. It is now read-only.

Commit

Permalink
many changes, see changelog v0.11.0
Browse files Browse the repository at this point in the history
  • Loading branch information
brainfoolong committed Apr 3, 2017
1 parent c030eb9 commit 5be666e
Show file tree
Hide file tree
Showing 26 changed files with 313 additions and 192 deletions.
14 changes: 14 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# v0.11.0 - 03.04.2017 - alpha 3
* added DE translation
* added dark/light theme
* added windows start bat file
* fixed problems with user management (pw hash and login tokens)
* moved transfer settings replace mode to contextmenu instead of dedicated settings
* changelog now comes from this changelog file instead of release info

# v0.10.0 - 01.04.2017 - alpha 2
* most features are basically tested and working
* numerous fixes and improvements

# v0.9.0 - 29.03.2017 - alpha 1
* initial commit and alpha
21 changes: 15 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,11 @@ A web based FTP client. Like really simple, kind of, filezilla, but for your bro

![Screenshot](https://brainfoolong.github.io/web-ftp-client/images/screenshot.jpg)


# Alpha release
Give this thing a try and help improving it -> https://github.com/brainfoolong/web-ftp-client/releases/latest

# Code languages and standards we use
* JS: https://standardjs.com
* ES6 (with Babel converter for frontend): https://babeljs.io/docs/plugins/preset-env/
* SCSS (with converter for frontend): http://sass-lang.com/
# Help wanted
If someone maybe would create a simple, static, modern, responsive homepage in plain html/css for this project, with screenshots and good english descriptions, i really would appriciate that. Directly will be placed in the `docs` folder.

# Install linux
* Download a [realase zip](https://github.com/brainfoolong/web-ftp-client/releases/latest) and unpack to a directory and switch to that directory
Expand All @@ -27,6 +24,13 @@ Give this thing a try and help improving it -> https://github.com/brainfoolong/w
* Automatic boot on startup for DSM 6 or above
* `sudo ln -s $(pwd)/wfc /usr/local/etc/rc.d/web-ftp-client.sh && sudo chmod 0755 wfc`
* Notice: Some disk-stations have too low RAM and CPU to run this application at full speed. But at least constant 5MB/s download/upload should be possible.

# Install windows
* Download a [realase zip](https://github.com/brainfoolong/web-ftp-client/releases/latest) and unpack to a directory and switch to that directory
* Run `npm install --production`
* Start server with `./wfc.bat`
* Close the .bat window to stop the server
* Open http://IPTOSERVER:4340 in your browser

# Development setup
* Git clone master to a directory of your choice
Expand All @@ -38,4 +42,9 @@ Give this thing a try and help improving it -> https://github.com/brainfoolong/w
* Changes in backend `/src` folder require `./wfc restart` to be executed afterwards

# Development procedure
First, always talk with me/us. If you have an idea, don't go ahead and investigate much time for development. Maybe there is already something similar in development. Use GitHub issues to discuss about requests and bugs. Fork it, pull changes. There are some pre-commit hooks that don't let you commit your code that isn't passing our tests.
First, always talk with me/us. If you have an idea, don't go ahead and investigate much time for development. Maybe there is already something similar in development. Use GitHub issues to discuss about requests and bugs. Fork it, pull changes. There are some pre-commit hooks that don't let you commit your code that isn't passing our tests.

# Code languages and standards we use
* JS: https://standardjs.com
* ES6 (with Babel converter for frontend): https://babeljs.io/docs/plugins/preset-env/
* SCSS (with converter for frontend): http://sass-lang.com/
229 changes: 119 additions & 110 deletions lang/de.json
Original file line number Diff line number Diff line change
@@ -1,112 +1,121 @@
{
"administrator": null,
"administrator.description": null,
"administrator.missing": null,
"cancel.edit": null,
"confirm.delete.files": null,
"coreupdate.error": null,
"coreupdate.started": null,
"create.directory": null,
"create.directory.placeholder": null,
"delete": null,
"donate": null,
"donate.tooltip": null,
"download": null,
"download.queue": null,
"filename": null,
"filesize": null,
"filtermask": null,
"filtermask.tooltip": null,
"first.time.visit": null,
"flat.transfer": null,
"flat.transfer.tooltip": null,
"general": null,
"local.path": null,
"log.ftpserver.connect": null,
"log.ftpserver.disconnect": null,
"log.ftpserver.download": null,
"log.ftpserver.download.complete": null,
"log.ftpserver.readdir": null,
"log.ftpserver.ready": null,
"log.ftpserver.sftpready": null,
"log.ftpserver.upload": null,
"log.ftpserver.upload.complete": null,
"log.local.file.deleted": null,
"log.server.file.deleted": null,
"log.server.queue.stopped": null,
"log.server.transfers.stopped": null,
"log.transfer.file.exist": null,
"login": null,
"login.failed": null,
"login.remember": null,
"login.success": null,
"loginhash": null,
"loginhash.description": null,
"logout": null,
"logs.transfer.queue.added.download": null,
"logs.transfer.queue.added.upload": null,
"menu.file": null,
"modal.confirm.accept": null,
"modal.confirm.cancel": null,
"modal.confirm.header": null,
"mode": null,
"mode.download": null,
"mode.upload": null,
"mtime": null,
"no": null,
"password": null,
"password.description": null,
"permissions": null,
"progress": null,
"save.edited": null,
"saved": null,
"server": null,
"server.add": null,
"server.auth": null,
"server.auth.keyfile": null,
"server.auth.keyfile.description": null,
"server.auth.keyfile.passphrase": null,
"server.auth.normal": null,
"server.connect": null,
"server.encryption": null,
"server.encryption.both": null,
"server.encryption.control": null,
"server.encryption.implicit": null,
"server.encryption.none": null,
"server.host": null,
"server.name": null,
"server.path": null,
"server.port": null,
"server.protocol": null,
"servermanager": null,
"settings": null,
"socket.disconnect": null,
"sure": null,
"transfer.error": null,
"transfer.max": null,
"transfer.max.description": null,
"transfer.mode": null,
"transfer.mode.never": null,
"transfer.mode.rename": null,
"transfer.mode.replace-always": null,
"transfer.mode.replace-newer": null,
"transfer.mode.replace-newer-or-sizediff": null,
"transfer.mode.replace-sizediff": null,
"transfer.move": null,
"transfer.queue": null,
"transfer.remove": null,
"transfer.speed": null,
"transfer.start": null,
"transfer.stop": null,
"transfer.success": null,
"transfer.total.size": null,
"transfer.transfering": null,
"update.available": null,
"update.available.modal": null,
"upload": null,
"upload.queue": null,
"user.add": null,
"usermanager": null,
"username": null,
"yes": null
"about": "Über das Projekt",
"about.modal": "Hi, hier ist Brain Foo Long. Was mich zu diesem Projekt inspiriert hat es relativ einfach erklärt. Ich hab mir ein NAS gekauft und fand schnell heraus das es keinen einfachen Weg gab um Dateien von einem FTP direkt auf meine NAS zu laden. Es gibt zwar halbare GUI tools oder Hardcore Apps für die Kommandozeile aber nichts was mich wirklich zufrieden gestellt hat. Lange Rede kurzer Sinn, daraus enstand dieses Projekt. Ich hoffe du hast Spaß damit und findest was du brauchst. Schönen Tag noch.",
"about.tools": "Nennenswerte Tools und Dinge die ich benutzt habe damit das Ding hier läuft",
"administrator": "Administrator",
"administrator.description": "Nur Administratoren können Server und User bearbeiten",
"administrator.missing": "Es muss immer mindestens ein Administrator vorhanden sein",
"cancel.edit": "Abbrechen",
"confirm.delete.files": "Bist du sicher? Das kann nicht mehr rückgängig gemacht werden",
"coreupdate.error": "Automatisches Update nicht möglich. Das Betriebssystem unterstützt diese Methode nicht oder es ist der Entwicklermodus aktiviert",
"coreupdate.started": "Update gestartet. Die Applikation wird automatisch neu starten wenn das Update erledigt ist",
"create.directory": "Verzeichnis erstellen",
"create.directory.placeholder": "Verzeichnisname",
"delete": "Löschen",
"donate": "Spenden",
"donate.tooltip": "Falls du mir etwas spenden möchtest, ein paar Red Bull oder Kaffee, dann kannst du das hier gerne tun",
"download": "Download",
"download.queue": "Zu Download Warteschlange hinzufügen",
"filename": "Dateiname",
"filesize": "Dateigröße",
"filtermask": "Filter",
"filtermask.tooltip": "Du kannst einen Filter für den Up-/Download aktivieren. Zum Beispiel: *.zip -> Filtert nur alle .zip Dateien. Benutze Leerzeichen für mehrere Filter",
"first.time.visit": "Du besuchst diese Applikation das erste mal. Der Benutzer den du jetzt eingibst wird als Administrator gespeichert. Du kannst diese Daten nachträglich bearbeiten.",
"flat.transfer": "Flat Transfer",
"flat.transfer.disabled": "Flat Transfer deaktiviert",
"flat.transfer.enabled": "Flat Transfer aktiviert",
"flat.transfer.tooltip": "Alle Dateien werden in den aktuellen Ordner transferiert, egal wie die Ordnerstruktur der Quelldateien aussieht. Funktioniert nur wenn du auch den Filter aktiviert hast.",
"general": "Allgemein",
"goodbye": "Ciau, bis später",
"local.path": "Lokaler Pfad",
"log.ftpserver.connect": "Verbindung zum Server",
"log.ftpserver.disconnect": "Server Verbindung getrennt",
"log.ftpserver.download": "Download gestartet von {serverPath} auf {localPath}",
"log.ftpserver.download.complete": "Download fertig von {serverPath} auf {localPath}",
"log.ftpserver.readdir": "Lese Verzeichnis {directory}",
"log.ftpserver.ready": "Server bereit",
"log.ftpserver.sftpready": "SSH Verbindung bereit",
"log.ftpserver.upload": "Upload gestartet von {localPath} auf {serverPath}",
"log.ftpserver.upload.complete": "Upload fertig von {localPath} auf {serverPath}",
"log.local.file.deleted": "Lokale Datei gelöscht {file}",
"log.server.file.deleted": "Server Datei gelöscht {file}",
"log.server.queue.stopped": "Transfer gestoppt",
"log.server.transfers.stopped": "Alle Transfers gestoppt",
"log.transfer.file.exist": "Überspringe Datei weil sie bereits existiert {file}",
"login": "Login",
"login.failed": "Login fehlgeschlagen",
"login.remember": "Login merken",
"login.success": "Login erfolgreich",
"loginhash": "Logintoken",
"loginhash.description": "Ein zufällig generierter Token für den Cookie Login",
"logout": "Ausloggen",
"logs.transfer.queue.added.download": "Datei zur Download Warteschlange hinzugefügt {serverPath} auf {localPath}",
"logs.transfer.queue.added.upload": "Datei zur Upload Warteschlange hinzugefügt {localPath} auf {serverPath}",
"menu.file": "Datei",
"modal.confirm.accept": "Bestätigen",
"modal.confirm.cancel": "Abbrechen",
"modal.confirm.header": "Bestätigung",
"mode": "Modus",
"mode.download": "Download",
"mode.upload": "Upload",
"mtime": "Zuletzt bearbeitet",
"no": "Nein",
"password": "Passwort",
"password.description": "Leerlassen wenn du es nicht verändern willst. Hinweis: Das Passwort wird als Hash gespeichert, kann also nicht mehr entschlüsselt werden.",
"permissions": "Berechtigungen",
"progress": "Prozess",
"save": "Speichern",
"save.edited": "Bearbeitung speichern",
"saved": "Speichern",
"server": "Server",
"server.add": "Neuen Server hinzufügen",
"server.auth": "Authentifizierung",
"server.auth.keyfile": "PPK Keyfile",
"server.auth.keyfile.description": "Füge den Dateinhalt hier ein",
"server.auth.keyfile.passphrase": "Keyfile Passwort",
"server.auth.normal": "Benutzername + Passwort",
"server.connect": "Verbinden",
"server.encryption": "Verschlüsselung",
"server.encryption.both": "TLS für Kontroll und Datenverbindung",
"server.encryption.control": "TLS für Kontrollverbindung",
"server.encryption.implicit": "Implizietes TLS für Kontrollverbindung",
"server.encryption.none": "Keine",
"server.host": "Hostname / IP",
"server.name": "Name",
"server.password.description": "Leerlassen wenn du es nicht verändern willst. Hinweis: Das Passwort wird mit AES verschlüsselt gespeichert. Nichts desto trotz muss die Applikation das Passwort entschlüsseln können",
"server.path": "Serverpfad",
"server.port": "Port",
"server.protocol": "Protokoll",
"servermanager": "Servermanager",
"settings": "Einstellungen",
"socket.disconnect": "Socket getrennt. Neuer Versuch in 5 Sekunden...",
"sure": "Bist du sicher?",
"theme.toggle": "Hell/Dunkel",
"transfer.error": "Fehler",
"transfer.max": "Maximale gleichzeitige Transfers",
"transfer.max.description": "Zwischen 2-4 ist eine gute Wahl",
"transfer.mode": "Aktion when Zieldatei existiert",
"transfer.mode.never": "Nie ersetzen",
"transfer.mode.rename": "Automatisch Umbennenen (Fügt zufällige Zeichenketten hinzu)",
"transfer.mode.replace-always": "Immer ersetzen",
"transfer.mode.replace-newer": "Nur ersetzen wenn Quelldatei neuer",
"transfer.mode.replace-newer-or-sizediff": "Nur ersetzen wenn Quelldatei neuer oder Größe unterschiedlich",
"transfer.mode.replace-sizediff": "Nur ersetzen wenn Quelldatei Größe unterschiedlich",
"transfer.move": "Zurücksetzen auf Warteschlange",
"transfer.queue": "Warteschlange",
"transfer.remove": "Aus Warteschlange entfernen",
"transfer.speed": "Aktuelle Transfergeschwindigkeit",
"transfer.start": "Transfer starten",
"transfer.stop": "Transfer beenden",
"transfer.success": "Erfolgreich",
"transfer.total.size": "Gesamte Transfergröße",
"transfer.transfering": "Wird transferiert",
"update.available": "Update verfügbar",
"update.available.modal": "Es ist eine neue Version verfügbar. Du hast {currentVersion} und die neueste Version ist {latestVersion}. Stelle sicher das du immer ein Backup hast bevor du irgendwelche Updates einspielst. Mit dem Klick auf den Bestätigen Button wird das Update ausgeführt. Die Applikation startet automatisch neu wenn das Update fertig ist. Du solltest aber in jedem Fall auch den Zugriff auf die Kommandozeile parat haben um im Fehlerfall den Fehler beheben zu können.",
"upload": "Upload",
"upload.queue": "Zur Upload Warteschlange hinzufügen",
"user.add": "Neuen Benutzer hinzufügen",
"usermanager": "Benutzermanager",
"username": "Benutzername",
"yes": "Ja"
}
13 changes: 11 additions & 2 deletions lang/en.json
Original file line number Diff line number Diff line change
@@ -1,11 +1,14 @@
{
"about": "About this project",
"about.modal": "Hi, it's Brain Foo Long. What me really inspired to make this project was, i bought a synology NAS and quickly realized that there is no comfortable way to download files from a FTP server directly to my NAS. There are some half-made GUI tools and hardcore command line apps but nothing of that is what i've searched for. Long story short, the result is this application. Hope you like it, hope it's usefull for you. Have a nice day.",
"about.tools": "Markable tools and stuff i've used to make this thing working",
"administrator": "Administrator",
"administrator.description": "Only admin can create/edit servers and users",
"administrator.missing": "There must be at least one administrator",
"cancel.edit": "Cancel",
"confirm.delete.files": "Are you sure? This cannot be undone. It will delete all files recursively, so, be careful",
"coreupdate.error": "Cannot execute automatic update. OS doesn't support this method or development mode is enabled",
"coreupdate.started": "Update started, application will restart automatically when all is done",
"coreupdate.started": "Update started. The application will restart automatically when all is done",
"create.directory": "Create directory",
"create.directory.placeholder": "Directory name",
"delete": "Delete",
Expand All @@ -19,8 +22,11 @@
"filtermask.tooltip": "You can enter a filemask to download/upload only the given files. For example: *.zip -> will just filter only zip files, use spaces to use multiple filemasks",
"first.time.visit": "You are visiting this application for the first time. The user that you now enter will be the administrator of this application. You can manage the users later as well.",
"flat.transfer": "Flat Transfer",
"flat.transfer.disabled": "Flat transfer disabled",
"flat.transfer.enabled": "Flat transfer enabled",
"flat.transfer.tooltip": "All files will be transfered to the current folder, ignoring folder hierarchy. Only works when filter is active. Example: Filter *.zip and flat transfer and all zip files will be transfered to the current folder, doesn't matter how deep they are",
"general": "General",
"goodbye": "See you later",
"local.path": "Local Path",
"log.ftpserver.connect": "Connecting to server",
"log.ftpserver.disconnect": "Disconnected",
Expand Down Expand Up @@ -55,9 +61,10 @@
"mtime": "Last modified",
"no": "No",
"password": "Password",
"password.description": "Leave empty if you don't want to change it. Notice: The password will be stored with aes encryption. However, the application must be able to decrypt it.",
"password.description": "Leave empty if you don't want to change it. Notice: The password will be stored as a hash, it cannot be decrypted anymore.",
"permissions": "Permissions",
"progress": "Progress",
"save": "Speichern",
"save.edited": "Save edited",
"saved": "Saved",
"server": "Server",
Expand All @@ -75,13 +82,15 @@
"server.encryption.none": "None",
"server.host": "Hostname / IP",
"server.name": "Name",
"server.password.description": "Leave empty if you don't want to change it. Notice: The password will be stored with AES encryption. However, the application must be able to decrypt it.",
"server.path": "Server Path",
"server.port": "Port",
"server.protocol": "Protocol",
"servermanager": "Servermanager",
"settings": "Settings",
"socket.disconnect": "Socket closed. Retry in 5 seconds...",
"sure": "Are you sure?",
"theme.toggle": "Light/Dark",
"transfer.error": "Error",
"transfer.max": "Max. simultaneous transfers",
"transfer.max.description": "Between 2-4 is a good choice",
Expand Down
7 changes: 4 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"author": "BrainFooLong (https://github.com/brainfoolong/web-ftp-client)",
"name": "web-ftp-client",
"description": "A web based FTP client. Like a simply version filezilla but for your browser.",
"version": "0.10.0",
"version": "0.11.0",
"license": "MIT",
"main": "src/main.js",
"repository": {
Expand All @@ -15,6 +15,7 @@
"ftp": "^0.3.10",
"jszip": "^3.1.3",
"lowdb": "^0.16.0",
"marked": "^0.3.6",
"mkdir-recursive": "^0.3.0",
"request": "^2.79.0",
"ssh2": "^0.5.4",
Expand All @@ -35,8 +36,8 @@
"release": "node dev/release.js"
},
"pre-commit": [
"test",
"build"
"build",
"test"
],
"standard": {
"globals": [
Expand Down
6 changes: 4 additions & 2 deletions public/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,8 @@
<meta name="msapplication-tap-highlight" content="no">
<meta name="viewport"
content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width">
<link rel="stylesheet" type="text/css" href="stylesheets/lib/sandstone/bootstrap.min.css">
<link rel="stylesheet" type="text/css" href="stylesheets/lib/bootstrap-select.min.css">
<link rel="stylesheet" type="text/css" href="stylesheets/dist/page.css">
<link rel="stylesheet" type="text/css" href="stylesheets/dist/general.css">
<link rel="shortcut icon" href="images/logo.png" type="image/png">
<script type="text/javascript" src="scripts/lib/jquery-3.2.1.min.js"></script>
<script type="text/javascript" src="scripts/lib/jquery-ui.min.js"></script>
Expand All @@ -26,6 +25,9 @@
<script type="text/javascript" src="scripts/dist/form.js"></script>
<script type="text/javascript" src="scripts/dist/splitbox.js"></script>
<title>Web FTP Client</title>
<script type="application/javascript">
gl.loadTheme(gl.storage.get('theme') || 'light')
</script>
</head>
<body>
<div class="loader"></div>
Expand Down
Loading

0 comments on commit 5be666e

Please sign in to comment.