From 877a8bffddfc71603955f2c42b11d8af8b58821e Mon Sep 17 00:00:00 2001 From: Matthias Strubel Date: Sun, 16 Feb 2014 09:42:22 +0100 Subject: [PATCH 01/90] LibraryBox 2.0 ReleaseCandidat 1 --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index ae15bad..c547d2d 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ NAME = librarybox -VERSION = 2.0.0_beta5 +VERSION = 2.0.0_RC1 ARCH = all #PIRATEBOX_IMG_URL = "http://piratebox.aod-rpg.de/piratebox_ws_0.6_img.gz" From 1a4fcd6df671354d20803e5786cd50e838e94839 Mon Sep 17 00:00:00 2001 From: Matthias Strubel Date: Wed, 2 Apr 2014 18:20:23 +0200 Subject: [PATCH 02/90] Fixes #6 --- piratebox_origin/piratebox/piratebox/bin/shoutbox_stuff.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/piratebox_origin/piratebox/piratebox/bin/shoutbox_stuff.sh b/piratebox_origin/piratebox/piratebox/bin/shoutbox_stuff.sh index 8bf5f5a..e1839be 100755 --- a/piratebox_origin/piratebox/piratebox/bin/shoutbox_stuff.sh +++ b/piratebox_origin/piratebox/piratebox/bin/shoutbox_stuff.sh @@ -31,6 +31,6 @@ python psogen.py generate #Set correct permissions chown $LIGHTTPD_USER:$LIGHTTPD_GROUP $SHOUTBOX_CHATFILE chown $LIGHTTPD_USER:$LIGHTTPD_GROUP $SHOUTBOX_GEN_HTMLFILE - +chmod ug+rw $SHOUTBOX_CHATFILE From e08683eb2fc096b2f51ffdb1be903d184e93b1f3 Mon Sep 17 00:00:00 2001 From: Matthias Strubel Date: Thu, 3 Apr 2014 22:16:51 +0200 Subject: [PATCH 03/90] Add changes in bin folder to config preparation --- Makefile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Makefile b/Makefile index c547d2d..015d4cf 100644 --- a/Makefile +++ b/Makefile @@ -85,7 +85,9 @@ building: $(BUILD_SCRIPT_LOCATION) prepare_image_config: $(IMAGE_BUILD_SRC) $(IMAGE_BUILD_TGT) cd $(SRC_FOLDER) && make image_stuff/openwrt/conf + cd $(SRC_FOLDER) && make image_stuff/openwrt/bin cp -rv $(SRC_FOLDER)/image_stuff/openwrt/* $(IMAGE_BUILD_SRC) + # We need to apply our custom configuration again, because we are copy them over from the origin again # I'm doin it this way, because the origin image knows what to change. From 793187c1823ef2b87442f01cc117a53b5e39eca4 Mon Sep 17 00:00:00 2001 From: Matthias Strubel Date: Thu, 3 Apr 2014 22:33:18 +0200 Subject: [PATCH 04/90] LibraryBox 2.0.0 RC2 --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 015d4cf..1d54081 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ NAME = librarybox -VERSION = 2.0.0_RC1 +VERSION = 2.0.0_RC2 ARCH = all #PIRATEBOX_IMG_URL = "http://piratebox.aod-rpg.de/piratebox_ws_0.6_img.gz" From d128524c9bfc1ad7305e9eff3b57c41b606b538e Mon Sep 17 00:00:00 2001 From: Matthias Strubel Date: Mon, 14 Apr 2014 22:21:01 +0200 Subject: [PATCH 05/90] Make the browser to not use his browser cache. Fix #9 --- LibraryBox-landingpage/www_content/index.html | 1 + 1 file changed, 1 insertion(+) diff --git a/LibraryBox-landingpage/www_content/index.html b/LibraryBox-landingpage/www_content/index.html index a182df7..b7820a6 100755 --- a/LibraryBox-landingpage/www_content/index.html +++ b/LibraryBox-landingpage/www_content/index.html @@ -3,6 +3,7 @@ + LibraryBox 2.0 From 41ffadf73d3f0125501486589b7705f51fb49b47 Mon Sep 17 00:00:00 2001 From: Matthias Strubel Date: Mon, 14 Apr 2014 22:25:07 +0200 Subject: [PATCH 06/90] Fix #9 to recognize url change in direct URL access --- customization/www_librarybox/index.html | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) mode change 100755 => 120000 customization/www_librarybox/index.html diff --git a/customization/www_librarybox/index.html b/customization/www_librarybox/index.html deleted file mode 100755 index 64c5d42..0000000 --- a/customization/www_librarybox/index.html +++ /dev/null @@ -1,8 +0,0 @@ - -Redirect... - - - -Redirect - - diff --git a/customization/www_librarybox/index.html b/customization/www_librarybox/index.html new file mode 120000 index 0000000..b122455 --- /dev/null +++ b/customization/www_librarybox/index.html @@ -0,0 +1 @@ +redirect.html \ No newline at end of file From 7f98714f3b2e39c9ab7f67cb9459e6cd1127c177 Mon Sep 17 00:00:00 2001 From: Matthias Strubel Date: Sun, 27 Apr 2014 10:42:25 +0200 Subject: [PATCH 07/90] Add linebreaks to make source a bit more readable in directory listing --- customization/www_librarybox/dir-generator.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/customization/www_librarybox/dir-generator.php b/customization/www_librarybox/dir-generator.php index 960f4a2..de892fd 100644 --- a/customization/www_librarybox/dir-generator.php +++ b/customization/www_librarybox/dir-generator.php @@ -397,7 +397,7 @@ function get_folder_statistics ($my_path, &$folder_statistics) { print "Parent Directory/"; print " "; print " "; - print "Directory"; + print "Directory\n"; } @@ -407,13 +407,13 @@ function get_folder_statistics ($my_path, &$folder_statistics) { print "" .htmlentities($folder['name']). "/"; print "" . date('Y-M-d H:i:s', $folder['modtime']) . ""; print "" . (($calculate_folder_size)?format_bytes($folder['size'], 2):'--') . " "; - print "" . $folder['file_type'] . ""; + print "" . $folder['file_type'] . "\n"; } // This simply creates an extra line for file/folder seperation -print ""; +print "\n"; @@ -435,7 +435,7 @@ function get_folder_statistics ($my_path, &$folder_statistics) { if ( $display_dl_count ) { print "" . $file['counter'] . ""; } - print ""; + print "\n"; } From dbaa43a1324f928f7d74e493cb95ac779d3dcb78 Mon Sep 17 00:00:00 2001 From: Matthias Strubel Date: Mon, 12 May 2014 07:25:17 +0200 Subject: [PATCH 08/90] Other handling of "Content" Folder provisioning. Closes #11 Closes #1 --- customization/bin/hooks/hook_piratebox_start_done.sh | 11 +++++++++++ customization/bin/hooks/hook_pre_init.sh | 4 ---- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/customization/bin/hooks/hook_piratebox_start_done.sh b/customization/bin/hooks/hook_piratebox_start_done.sh index 6719468..794b873 100755 --- a/customization/bin/hooks/hook_piratebox_start_done.sh +++ b/customization/bin/hooks/hook_piratebox_start_done.sh @@ -16,6 +16,17 @@ fi # You can uncommend this line to see when hook is starting: echo "------------------ Running $0 ------------------" +# Recreate the content folder, if it was deleted +# only if it is not already existing. +if [ ! -d $WWW_CONTENT ] ; then + # Prepare content folder + echo "Creating 'content' folder on USB stick and move over stuff" + mkdir -p $WWW_CONTENT + cp -r $PIRATEBOX_FOLDER/www_content/* $WWW_CONTENT +fi + + + if [ "$FTP_ENABLED" = "yes" ] ; then echo "starting PROFTPD.." diff --git a/customization/bin/hooks/hook_pre_init.sh b/customization/bin/hooks/hook_pre_init.sh index dfad09e..ea18b31 100755 --- a/customization/bin/hooks/hook_pre_init.sh +++ b/customization/bin/hooks/hook_pre_init.sh @@ -27,10 +27,6 @@ mv $WWW_FOLDER $PIRATEBOX_FOLDER/www_old mv $PIRATEBOX_FOLDER/www_librarybox $WWW_FOLDER cp -rv $PIRATEBOX_FOLDER/www_old/cgi-bin $WWW_FOLDER/cgi-bin -# Prepare content folder -echo "Creating 'content' folder on USB stick and move over stuff" -mkdir -p $WWW_CONTENT -cp -r $PIRATEBOX_FOLDER/www_content/* $WWW_CONTENT # Link to the USB-Stick ln -s $WWW_CONTENT $WWW_FOLDER/content From 82544e8626e20dd054e47afe3f605f9323908908 Mon Sep 17 00:00:00 2001 From: Matthias Strubel Date: Mon, 12 May 2014 07:36:04 +0200 Subject: [PATCH 09/90] Adds hostname view into ftp-configuration Fixes #3 --- customization/bin/ftp_enable.sh | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/customization/bin/ftp_enable.sh b/customization/bin/ftp_enable.sh index 8941247..c6b97ad 100755 --- a/customization/bin/ftp_enable.sh +++ b/customization/bin/ftp_enable.sh @@ -14,6 +14,12 @@ PIRATEBOX_HOOK_CONF=$PIRATEBOX_CONF_FOLDER/hook_custom.conf ##Here is the confi IS_OPENWRT=' -e /etc/openwrt_version ' +if [ $IS_OPENWRT ] ; then + MY_HOSTNAME=`uci get system.@system[0].hostname` +else + MY_HOSTNAME=`hostname` +fi + FTP_CONF_FOLDER=$PIRATEBOX_CONF_FOLDER/ftp BASIC_FTP_CONFIG=$FTP_CONF_FOLDER/ftp.conf FTP_SYNC_CLIENT_CONFIG=$FTP_CONF_FOLDER/ftp_sync_client.conf @@ -81,6 +87,8 @@ print_current_config() { echo " FTP Sync hostname : $SYNC_CLIENT_HOST " echo " FTP Sync password : $SYNC_CLIENT_STATIC_PASSWORD " echo " " + echo " -- " + echo " The hostname this box is :" $MY_HOSTNAME print_line } From 4393fc04b498844f72df145ed4959a40ac3f61ff Mon Sep 17 00:00:00 2001 From: Matthias Strubel Date: Mon, 7 Jul 2014 21:20:18 +0200 Subject: [PATCH 10/90] Fixing timesave typo --- piratebox_origin/piratebox/piratebox/bin/timesave.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/piratebox_origin/piratebox/piratebox/bin/timesave.sh b/piratebox_origin/piratebox/piratebox/bin/timesave.sh index 839af38..55514b1 100755 --- a/piratebox_origin/piratebox/piratebox/bin/timesave.sh +++ b/piratebox_origin/piratebox/piratebox/bin/timesave.sh @@ -65,7 +65,7 @@ if [ "$2" = "save" ] ; then fi if [ "$2" = "recover" ] ; then - if [ `get_datetime` -lt `cat $TIMESAVE` ] ; + if [ `get_datetime` -lt `cat $TIMESAVE` ] ; then date `cat $TIMESAVE ` [ "$?" != "0" ] && echo "error in recovering time" && exit 255 echo "Time recovered" From fdf30742e6e884cfe05e65325057d21a37c6a708 Mon Sep 17 00:00:00 2001 From: Matthias Strubel Date: Mon, 7 Jul 2014 21:21:15 +0200 Subject: [PATCH 11/90] tagging bugfix version --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 1d54081..2faa5b1 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ NAME = librarybox -VERSION = 2.0.0_RC2 +VERSION = 2.0.1-beta ARCH = all #PIRATEBOX_IMG_URL = "http://piratebox.aod-rpg.de/piratebox_ws_0.6_img.gz" From de5e8d67ec95dc82016479ec27e3fe6be1a90e0f Mon Sep 17 00:00:00 2001 From: Gilles Coulais Date: Wed, 20 Aug 2014 16:34:17 +0200 Subject: [PATCH 12/90] Add l10n library --- LibraryBox-landingpage/www_content/index.html | 1 + LibraryBox-landingpage/www_content/js/l10n.js | 1157 +++++++++++++++++ 2 files changed, 1158 insertions(+) create mode 100644 LibraryBox-landingpage/www_content/js/l10n.js diff --git a/LibraryBox-landingpage/www_content/index.html b/LibraryBox-landingpage/www_content/index.html index b7820a6..bef2a92 100755 --- a/LibraryBox-landingpage/www_content/index.html +++ b/LibraryBox-landingpage/www_content/index.html @@ -102,5 +102,6 @@

Text Color:

+ diff --git a/LibraryBox-landingpage/www_content/js/l10n.js b/LibraryBox-landingpage/www_content/js/l10n.js new file mode 100644 index 0000000..9d99c68 --- /dev/null +++ b/LibraryBox-landingpage/www_content/js/l10n.js @@ -0,0 +1,1157 @@ +/** + * Copyright (c) 2011-2013 Fabien Cazenave, Mozilla. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + +/*jshint browser: true, devel: true, es5: true, globalstrict: true */ +'use strict'; + +document.webL10n = (function(window, document, undefined) { + var gL10nData = {}; + var gTextData = ''; + var gTextProp = 'textContent'; + var gLanguage = ''; + var gMacros = {}; + var gReadyState = 'loading'; + + + /** + * Synchronously loading l10n resources significantly minimizes flickering + * from displaying the app with non-localized strings and then updating the + * strings. Although this will block all script execution on this page, we + * expect that the l10n resources are available locally on flash-storage. + * + * As synchronous XHR is generally considered as a bad idea, we're still + * loading l10n resources asynchronously -- but we keep this in a setting, + * just in case... and applications using this library should hide their + * content until the `localized' event happens. + */ + + var gAsyncResourceLoading = true; // read-only + + + /** + * Debug helpers + * + * gDEBUG == 0: don't display any console message + * gDEBUG == 1: display only warnings, not logs + * gDEBUG == 2: display all console messages + */ + + var gDEBUG = 1; + + function consoleLog(message) { + if (gDEBUG >= 2) { + console.log('[l10n] ' + message); + } + }; + + function consoleWarn(message) { + if (gDEBUG) { + console.warn('[l10n] ' + message); + } + }; + + + /** + * DOM helpers for the so-called "HTML API". + * + * These functions are written for modern browsers. For old versions of IE, + * they're overridden in the 'startup' section at the end of this file. + */ + + function getL10nResourceLinks() { + return document.querySelectorAll('link[type="application/l10n"]'); + } + + function getL10nDictionary() { + var script = document.querySelector('script[type="application/l10n"]'); + // TODO: support multiple and external JSON dictionaries + return script ? JSON.parse(script.innerHTML) : null; + } + + function getTranslatableChildren(element) { + return element ? element.querySelectorAll('*[data-l10n-id]') : []; + } + + function getL10nAttributes(element) { + if (!element) + return {}; + + var l10nId = element.getAttribute('data-l10n-id'); + var l10nArgs = element.getAttribute('data-l10n-args'); + var args = {}; + if (l10nArgs) { + try { + args = JSON.parse(l10nArgs); + } catch (e) { + consoleWarn('could not parse arguments for #' + l10nId); + } + } + return { id: l10nId, args: args }; + } + + function fireL10nReadyEvent(lang) { + var evtObject = document.createEvent('Event'); + evtObject.initEvent('localized', true, false); + evtObject.language = lang; + document.dispatchEvent(evtObject); + } + + function xhrLoadText(url, onSuccess, onFailure, asynchronous) { + onSuccess = onSuccess || function _onSuccess(data) {}; + onFailure = onFailure || function _onFailure() { + consoleWarn(url + ' not found.'); + }; + + var xhr = new XMLHttpRequest(); + xhr.open('GET', url, asynchronous); + if (xhr.overrideMimeType) { + xhr.overrideMimeType('text/plain; charset=utf-8'); + } + xhr.onreadystatechange = function() { + if (xhr.readyState == 4) { + if (xhr.status == 200 || xhr.status === 0) { + onSuccess(xhr.responseText); + } else { + onFailure(); + } + } + }; + xhr.onerror = onFailure; + xhr.ontimeout = onFailure; + + // in Firefox OS with the app:// protocol, trying to XHR a non-existing + // URL will raise an exception here -- hence this ugly try...catch. + try { + xhr.send(null); + } catch (e) { + onFailure(); + } + } + + + /** + * l10n resource parser: + * - reads (async XHR) the l10n resource matching `lang'; + * - imports linked resources (synchronously) when specified; + * - parses the text data (fills `gL10nData' and `gTextData'); + * - triggers success/failure callbacks when done. + * + * @param {string} href + * URL of the l10n resource to parse. + * + * @param {string} lang + * locale (language) to parse. + * + * @param {Function} successCallback + * triggered when the l10n resource has been successully parsed. + * + * @param {Function} failureCallback + * triggered when the an error has occured. + * + * @return {void} + * uses the following global variables: gL10nData, gTextData, gTextProp. + */ + + function parseResource(href, lang, successCallback, failureCallback) { + var baseURL = href.replace(/[^\/]*$/, '') || './'; + + // handle escaped characters (backslashes) in a string + function evalString(text) { + if (text.lastIndexOf('\\') < 0) + return text; + return text.replace(/\\\\/g, '\\') + .replace(/\\n/g, '\n') + .replace(/\\r/g, '\r') + .replace(/\\t/g, '\t') + .replace(/\\b/g, '\b') + .replace(/\\f/g, '\f') + .replace(/\\{/g, '{') + .replace(/\\}/g, '}') + .replace(/\\"/g, '"') + .replace(/\\'/g, "'"); + } + + // parse *.properties text data into an l10n dictionary + function parseProperties(text) { + var dictionary = []; + + // token expressions + var reBlank = /^\s*|\s*$/; + var reComment = /^\s*#|^\s*$/; + var reSection = /^\s*\[(.*)\]\s*$/; + var reImport = /^\s*@import\s+url\((.*)\)\s*$/i; + var reSplit = /^([^=\s]*)\s*=\s*(.+)$/; // TODO: escape EOLs with '\' + + // parse the *.properties file into an associative array + function parseRawLines(rawText, extendedSyntax) { + var entries = rawText.replace(reBlank, '').split(/[\r\n]+/); + var currentLang = '*'; + var genericLang = lang.replace(/-[a-z]+$/i, ''); + var skipLang = false; + var match = ''; + + for (var i = 0; i < entries.length; i++) { + var line = entries[i]; + + // comment or blank line? + if (reComment.test(line)) + continue; + + // the extended syntax supports [lang] sections and @import rules + if (extendedSyntax) { + if (reSection.test(line)) { // section start? + match = reSection.exec(line); + currentLang = match[1]; + skipLang = (currentLang !== '*') && + (currentLang !== lang) && (currentLang !== genericLang); + continue; + } else if (skipLang) { + continue; + } + if (reImport.test(line)) { // @import rule? + match = reImport.exec(line); + loadImport(baseURL + match[1]); // load the resource synchronously + } + } + + // key-value pair + var tmp = line.match(reSplit); + if (tmp && tmp.length == 3) { + dictionary[tmp[1]] = evalString(tmp[2]); + } + } + } + + // import another *.properties file + function loadImport(url) { + xhrLoadText(url, function(content) { + parseRawLines(content, false); // don't allow recursive imports + }, null, false); // load synchronously + } + + // fill the dictionary + parseRawLines(text, true); + return dictionary; + } + + // load and parse l10n data (warning: global variables are used here) + xhrLoadText(href, function(response) { + gTextData += response; // mostly for debug + + // parse *.properties text data into an l10n dictionary + var data = parseProperties(response); + + // find attribute descriptions, if any + for (var key in data) { + var id, prop, index = key.lastIndexOf('.'); + if (index > 0) { // an attribute has been specified + id = key.substring(0, index); + prop = key.substr(index + 1); + } else { // no attribute: assuming text content by default + id = key; + prop = gTextProp; + } + if (!gL10nData[id]) { + gL10nData[id] = {}; + } + gL10nData[id][prop] = data[key]; + } + + // trigger callback + if (successCallback) { + successCallback(); + } + }, failureCallback, gAsyncResourceLoading); + }; + + // load and parse all resources for the specified locale + function loadLocale(lang, callback) { + callback = callback || function _callback() {}; + + clear(); + gLanguage = lang; + + // check all nodes + // and load the resource files + var langLinks = getL10nResourceLinks(); + var langCount = langLinks.length; + if (langCount == 0) { + // we might have a pre-compiled dictionary instead + var dict = getL10nDictionary(); + if (dict && dict.locales && dict.default_locale) { + consoleLog('using the embedded JSON directory, early way out'); + gL10nData = dict.locales[lang] || dict.locales[dict.default_locale]; + callback(); + } else { + consoleLog('no resource to load, early way out'); + } + // early way out + fireL10nReadyEvent(lang); + gReadyState = 'complete'; + return; + } + + // start the callback when all resources are loaded + var onResourceLoaded = null; + var gResourceCount = 0; + onResourceLoaded = function() { + gResourceCount++; + if (gResourceCount >= langCount) { + callback(); + fireL10nReadyEvent(lang); + gReadyState = 'complete'; + } + }; + + // load all resource files + function l10nResourceLink(link) { + var href = link.href; + var type = link.type; + this.load = function(lang, callback) { + var applied = lang; + parseResource(href, lang, callback, function() { + consoleWarn(href + ' not found.'); + applied = ''; + }); + return applied; // return lang if found, an empty string if not found + }; + } + + for (var i = 0; i < langCount; i++) { + var resource = new l10nResourceLink(langLinks[i]); + var rv = resource.load(lang, onResourceLoaded); + if (rv != lang) { // lang not found, used default resource instead + consoleWarn('"' + lang + '" resource not found'); + gLanguage = ''; + } + } + } + + // clear all l10n data + function clear() { + gL10nData = {}; + gTextData = ''; + gLanguage = ''; + // TODO: clear all non predefined macros. + // There's no such macro /yet/ but we're planning to have some... + } + + + /** + * Get rules for plural forms (shared with JetPack), see: + * http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html + * https://github.com/mozilla/addon-sdk/blob/master/python-lib/plural-rules-generator.p + * + * @param {string} lang + * locale (language) used. + * + * @return {Function} + * returns a function that gives the plural form name for a given integer: + * var fun = getPluralRules('en'); + * fun(1) -> 'one' + * fun(0) -> 'other' + * fun(1000) -> 'other'. + */ + + function getPluralRules(lang) { + var locales2rules = { + 'af': 3, + 'ak': 4, + 'am': 4, + 'ar': 1, + 'asa': 3, + 'az': 0, + 'be': 11, + 'bem': 3, + 'bez': 3, + 'bg': 3, + 'bh': 4, + 'bm': 0, + 'bn': 3, + 'bo': 0, + 'br': 20, + 'brx': 3, + 'bs': 11, + 'ca': 3, + 'cgg': 3, + 'chr': 3, + 'cs': 12, + 'cy': 17, + 'da': 3, + 'de': 3, + 'dv': 3, + 'dz': 0, + 'ee': 3, + 'el': 3, + 'en': 3, + 'eo': 3, + 'es': 3, + 'et': 3, + 'eu': 3, + 'fa': 0, + 'ff': 5, + 'fi': 3, + 'fil': 4, + 'fo': 3, + 'fr': 5, + 'fur': 3, + 'fy': 3, + 'ga': 8, + 'gd': 24, + 'gl': 3, + 'gsw': 3, + 'gu': 3, + 'guw': 4, + 'gv': 23, + 'ha': 3, + 'haw': 3, + 'he': 2, + 'hi': 4, + 'hr': 11, + 'hu': 0, + 'id': 0, + 'ig': 0, + 'ii': 0, + 'is': 3, + 'it': 3, + 'iu': 7, + 'ja': 0, + 'jmc': 3, + 'jv': 0, + 'ka': 0, + 'kab': 5, + 'kaj': 3, + 'kcg': 3, + 'kde': 0, + 'kea': 0, + 'kk': 3, + 'kl': 3, + 'km': 0, + 'kn': 0, + 'ko': 0, + 'ksb': 3, + 'ksh': 21, + 'ku': 3, + 'kw': 7, + 'lag': 18, + 'lb': 3, + 'lg': 3, + 'ln': 4, + 'lo': 0, + 'lt': 10, + 'lv': 6, + 'mas': 3, + 'mg': 4, + 'mk': 16, + 'ml': 3, + 'mn': 3, + 'mo': 9, + 'mr': 3, + 'ms': 0, + 'mt': 15, + 'my': 0, + 'nah': 3, + 'naq': 7, + 'nb': 3, + 'nd': 3, + 'ne': 3, + 'nl': 3, + 'nn': 3, + 'no': 3, + 'nr': 3, + 'nso': 4, + 'ny': 3, + 'nyn': 3, + 'om': 3, + 'or': 3, + 'pa': 3, + 'pap': 3, + 'pl': 13, + 'ps': 3, + 'pt': 3, + 'rm': 3, + 'ro': 9, + 'rof': 3, + 'ru': 11, + 'rwk': 3, + 'sah': 0, + 'saq': 3, + 'se': 7, + 'seh': 3, + 'ses': 0, + 'sg': 0, + 'sh': 11, + 'shi': 19, + 'sk': 12, + 'sl': 14, + 'sma': 7, + 'smi': 7, + 'smj': 7, + 'smn': 7, + 'sms': 7, + 'sn': 3, + 'so': 3, + 'sq': 3, + 'sr': 11, + 'ss': 3, + 'ssy': 3, + 'st': 3, + 'sv': 3, + 'sw': 3, + 'syr': 3, + 'ta': 3, + 'te': 3, + 'teo': 3, + 'th': 0, + 'ti': 4, + 'tig': 3, + 'tk': 3, + 'tl': 4, + 'tn': 3, + 'to': 0, + 'tr': 0, + 'ts': 3, + 'tzm': 22, + 'uk': 11, + 'ur': 3, + 've': 3, + 'vi': 0, + 'vun': 3, + 'wa': 4, + 'wae': 3, + 'wo': 0, + 'xh': 3, + 'xog': 3, + 'yo': 0, + 'zh': 0, + 'zu': 3 + }; + + // utility functions for plural rules methods + function isIn(n, list) { + return list.indexOf(n) !== -1; + } + function isBetween(n, start, end) { + return start <= n && n <= end; + } + + // list of all plural rules methods: + // map an integer to the plural form name to use + var pluralRules = { + '0': function(n) { + return 'other'; + }, + '1': function(n) { + if ((isBetween((n % 100), 3, 10))) + return 'few'; + if (n === 0) + return 'zero'; + if ((isBetween((n % 100), 11, 99))) + return 'many'; + if (n == 2) + return 'two'; + if (n == 1) + return 'one'; + return 'other'; + }, + '2': function(n) { + if (n !== 0 && (n % 10) === 0) + return 'many'; + if (n == 2) + return 'two'; + if (n == 1) + return 'one'; + return 'other'; + }, + '3': function(n) { + if (n == 1) + return 'one'; + return 'other'; + }, + '4': function(n) { + if ((isBetween(n, 0, 1))) + return 'one'; + return 'other'; + }, + '5': function(n) { + if ((isBetween(n, 0, 2)) && n != 2) + return 'one'; + return 'other'; + }, + '6': function(n) { + if (n === 0) + return 'zero'; + if ((n % 10) == 1 && (n % 100) != 11) + return 'one'; + return 'other'; + }, + '7': function(n) { + if (n == 2) + return 'two'; + if (n == 1) + return 'one'; + return 'other'; + }, + '8': function(n) { + if ((isBetween(n, 3, 6))) + return 'few'; + if ((isBetween(n, 7, 10))) + return 'many'; + if (n == 2) + return 'two'; + if (n == 1) + return 'one'; + return 'other'; + }, + '9': function(n) { + if (n === 0 || n != 1 && (isBetween((n % 100), 1, 19))) + return 'few'; + if (n == 1) + return 'one'; + return 'other'; + }, + '10': function(n) { + if ((isBetween((n % 10), 2, 9)) && !(isBetween((n % 100), 11, 19))) + return 'few'; + if ((n % 10) == 1 && !(isBetween((n % 100), 11, 19))) + return 'one'; + return 'other'; + }, + '11': function(n) { + if ((isBetween((n % 10), 2, 4)) && !(isBetween((n % 100), 12, 14))) + return 'few'; + if ((n % 10) === 0 || + (isBetween((n % 10), 5, 9)) || + (isBetween((n % 100), 11, 14))) + return 'many'; + if ((n % 10) == 1 && (n % 100) != 11) + return 'one'; + return 'other'; + }, + '12': function(n) { + if ((isBetween(n, 2, 4))) + return 'few'; + if (n == 1) + return 'one'; + return 'other'; + }, + '13': function(n) { + if ((isBetween((n % 10), 2, 4)) && !(isBetween((n % 100), 12, 14))) + return 'few'; + if (n != 1 && (isBetween((n % 10), 0, 1)) || + (isBetween((n % 10), 5, 9)) || + (isBetween((n % 100), 12, 14))) + return 'many'; + if (n == 1) + return 'one'; + return 'other'; + }, + '14': function(n) { + if ((isBetween((n % 100), 3, 4))) + return 'few'; + if ((n % 100) == 2) + return 'two'; + if ((n % 100) == 1) + return 'one'; + return 'other'; + }, + '15': function(n) { + if (n === 0 || (isBetween((n % 100), 2, 10))) + return 'few'; + if ((isBetween((n % 100), 11, 19))) + return 'many'; + if (n == 1) + return 'one'; + return 'other'; + }, + '16': function(n) { + if ((n % 10) == 1 && n != 11) + return 'one'; + return 'other'; + }, + '17': function(n) { + if (n == 3) + return 'few'; + if (n === 0) + return 'zero'; + if (n == 6) + return 'many'; + if (n == 2) + return 'two'; + if (n == 1) + return 'one'; + return 'other'; + }, + '18': function(n) { + if (n === 0) + return 'zero'; + if ((isBetween(n, 0, 2)) && n !== 0 && n != 2) + return 'one'; + return 'other'; + }, + '19': function(n) { + if ((isBetween(n, 2, 10))) + return 'few'; + if ((isBetween(n, 0, 1))) + return 'one'; + return 'other'; + }, + '20': function(n) { + if ((isBetween((n % 10), 3, 4) || ((n % 10) == 9)) && !( + isBetween((n % 100), 10, 19) || + isBetween((n % 100), 70, 79) || + isBetween((n % 100), 90, 99) + )) + return 'few'; + if ((n % 1000000) === 0 && n !== 0) + return 'many'; + if ((n % 10) == 2 && !isIn((n % 100), [12, 72, 92])) + return 'two'; + if ((n % 10) == 1 && !isIn((n % 100), [11, 71, 91])) + return 'one'; + return 'other'; + }, + '21': function(n) { + if (n === 0) + return 'zero'; + if (n == 1) + return 'one'; + return 'other'; + }, + '22': function(n) { + if ((isBetween(n, 0, 1)) || (isBetween(n, 11, 99))) + return 'one'; + return 'other'; + }, + '23': function(n) { + if ((isBetween((n % 10), 1, 2)) || (n % 20) === 0) + return 'one'; + return 'other'; + }, + '24': function(n) { + if ((isBetween(n, 3, 10) || isBetween(n, 13, 19))) + return 'few'; + if (isIn(n, [2, 12])) + return 'two'; + if (isIn(n, [1, 11])) + return 'one'; + return 'other'; + } + }; + + // return a function that gives the plural form name for a given integer + var index = locales2rules[lang.replace(/-.*$/, '')]; + if (!(index in pluralRules)) { + consoleWarn('plural form unknown for [' + lang + ']'); + return function() { return 'other'; }; + } + return pluralRules[index]; + } + + // pre-defined 'plural' macro + gMacros.plural = function(str, param, key, prop) { + var n = parseFloat(param); + if (isNaN(n)) + return str; + + // TODO: support other properties (l20n still doesn't...) + if (prop != gTextProp) + return str; + + // initialize _pluralRules + if (!gMacros._pluralRules) { + gMacros._pluralRules = getPluralRules(gLanguage); + } + var index = '[' + gMacros._pluralRules(n) + ']'; + + // try to find a [zero|one|two] key if it's defined + if (n === 0 && (key + '[zero]') in gL10nData) { + str = gL10nData[key + '[zero]'][prop]; + } else if (n == 1 && (key + '[one]') in gL10nData) { + str = gL10nData[key + '[one]'][prop]; + } else if (n == 2 && (key + '[two]') in gL10nData) { + str = gL10nData[key + '[two]'][prop]; + } else if ((key + index) in gL10nData) { + str = gL10nData[key + index][prop]; + } else if ((key + '[other]') in gL10nData) { + str = gL10nData[key + '[other]'][prop]; + } + + return str; + }; + + + /** + * l10n dictionary functions + */ + + // fetch an l10n object, warn if not found, apply `args' if possible + function getL10nData(key, args) { + var data = gL10nData[key]; + if (!data) { + consoleWarn('#' + key + ' is undefined.'); + } + + /** This is where l10n expressions should be processed. + * The plan is to support C-style expressions from the l20n project; + * until then, only two kinds of simple expressions are supported: + * {[ index ]} and {{ arguments }}. + */ + var rv = {}; + for (var prop in data) { + var str = data[prop]; + str = substIndexes(str, args, key, prop); + str = substArguments(str, args, key); + rv[prop] = str; + } + return rv; + } + + // replace {[macros]} with their values + function substIndexes(str, args, key, prop) { + var reIndex = /\{\[\s*([a-zA-Z]+)\(([a-zA-Z]+)\)\s*\]\}/; + var reMatch = reIndex.exec(str); + if (!reMatch || !reMatch.length) + return str; + + // an index/macro has been found + // Note: at the moment, only one parameter is supported + var macroName = reMatch[1]; + var paramName = reMatch[2]; + var param; + if (args && paramName in args) { + param = args[paramName]; + } else if (paramName in gL10nData) { + param = gL10nData[paramName]; + } + + // there's no macro parser yet: it has to be defined in gMacros + if (macroName in gMacros) { + var macro = gMacros[macroName]; + str = macro(str, param, key, prop); + } + return str; + } + + // replace {{arguments}} with their values + function substArguments(str, args, key) { + var reArgs = /\{\{\s*(.+?)\s*\}\}/; + var match = reArgs.exec(str); + while (match) { + if (!match || match.length < 2) + return str; // argument key not found + + var arg = match[1]; + var sub = ''; + if (args && arg in args) { + sub = args[arg]; + } else if (arg in gL10nData) { + sub = gL10nData[arg][gTextProp]; + } else { + consoleLog('argument {{' + arg + '}} for #' + key + ' is undefined.'); + return str; + } + + str = str.substring(0, match.index) + sub + + str.substr(match.index + match[0].length); + match = reArgs.exec(str); + } + return str; + } + + // translate an HTML element + function translateElement(element) { + var l10n = getL10nAttributes(element); + if (!l10n.id) + return; + + // get the related l10n object + var data = getL10nData(l10n.id, l10n.args); + if (!data) { + consoleWarn('#' + l10n.id + ' is undefined.'); + return; + } + + // translate element (TODO: security checks?) + if (data[gTextProp]) { // XXX + if (getChildElementCount(element) === 0) { + element[gTextProp] = data[gTextProp]; + } else { + // this element has element children: replace the content of the first + // (non-empty) child textNode and clear other child textNodes + var children = element.childNodes; + var found = false; + for (var i = 0, l = children.length; i < l; i++) { + if (children[i].nodeType === 3 && /\S/.test(children[i].nodeValue)) { + if (found) { + children[i].nodeValue = ''; + } else { + children[i].nodeValue = data[gTextProp]; + found = true; + } + } + } + // if no (non-empty) textNode is found, insert a textNode before the + // first element child. + if (!found) { + var textNode = document.createTextNode(data[gTextProp]); + element.insertBefore(textNode, element.firstChild); + } + } + delete data[gTextProp]; + } + + for (var k in data) { + element[k] = data[k]; + } + } + + // webkit browsers don't currently support 'children' on SVG elements... + function getChildElementCount(element) { + if (element.children) { + return element.children.length; + } + if (typeof element.childElementCount !== 'undefined') { + return element.childElementCount; + } + var count = 0; + for (var i = 0; i < element.childNodes.length; i++) { + count += element.nodeType === 1 ? 1 : 0; + } + return count; + } + + // translate an HTML subtree + function translateFragment(element) { + element = element || document.documentElement; + + // check all translatable children (= w/ a `data-l10n-id' attribute) + var children = getTranslatableChildren(element); + var elementCount = children.length; + for (var i = 0; i < elementCount; i++) { + translateElement(children[i]); + } + + // translate element itself if necessary + translateElement(element); + } + + + /** + * Startup & Public API + * + * Warning: this part of the code contains browser-specific chunks -- + * that's where obsolete browsers, namely IE8 and earlier, are handled. + * + * Unlike the rest of the lib, this section is not shared with FirefoxOS/Gaia. + */ + + // load the default locale on startup + function l10nStartup() { + gReadyState = 'interactive'; + + // most browsers expose the UI language as `navigator.language' + // but IE uses `navigator.userLanguage' instead + var userLocale = navigator.language || navigator.userLanguage; + consoleLog('loading [' + userLocale + '] resources, ' + + (gAsyncResourceLoading ? 'asynchronously.' : 'synchronously.')); + + // load the default locale and translate the document if required + if (document.documentElement.lang === userLocale) { + loadLocale(userLocale); + } else { + loadLocale(userLocale, translateFragment); + } + } + + // browser-specific startup + if (document.addEventListener) { // modern browsers and IE9+ + if (document.readyState === 'loading') { + // the document is not fully loaded yet: wait for DOMContentLoaded. + document.addEventListener('DOMContentLoaded', l10nStartup); + } else { + // l10n.js is being loaded with + @@ -19,7 +23,7 @@ @@ -48,16 +52,17 @@
-

Welcome to LibraryBox v2.0

-

Browse and download any of the available files, or chat with other users below.

LibraryBox is private; no logs or other identifying data are retained.

+

Welcome to LibraryBox v2.0

+

Browse and download any of the available files, or chat with other users below.

+

LibraryBox is private; no logs or other identifying data are retained.

@@ -71,8 +71,8 @@

Content Downloads

Back to top

-

The LibraryBox Project is Software Licensed under GPLv2, see http://www.gnu.org/licenses/gpl-2.0.html for license details.

- All LibraryBox content not otherwise licensed is released under a Creative Commons NC-BY license. For more information, visit http://librarybox.us +

The LibraryBox Project is Software Licensed under GPLv2, see http://www.gnu.org/licenses/gpl-2.0.html for license details.

+ All LibraryBox content not otherwise licensed is released under a Creative Commons NC-BY license. For more information, visit http://librarybox.us
From 75d2014c85c0ffc750fafca9ff8fa22c5456bf84 Mon Sep 17 00:00:00 2001 From: Gilles Coulais Date: Fri, 22 Aug 2014 11:46:30 +0200 Subject: [PATCH 24/90] Update 2 keys moved to common, as they are used by several pages --- LibraryBox-landingpage/www_content/index.html | 4 ++-- LibraryBox-landingpage/www_content/locales/data.en.properties | 4 ++-- LibraryBox-landingpage/www_content/locales/data.fr.properties | 4 ++-- LibraryBox-landingpage/www_content/stats.html | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/LibraryBox-landingpage/www_content/index.html b/LibraryBox-landingpage/www_content/index.html index 513b3bd..93f4f22 100755 --- a/LibraryBox-landingpage/www_content/index.html +++ b/LibraryBox-landingpage/www_content/index.html @@ -62,8 +62,8 @@

Welcome

Top Downloads

-

Nothing's been downloaded yet.

-

Why don't you download something and get this party started?

+

Nothing's been downloaded yet.

+

Why don't you download something and get this party started?

diff --git a/LibraryBox-landingpage/www_content/locales/data.en.properties b/LibraryBox-landingpage/www_content/locales/data.en.properties index 2989e8a..6f7bf82 100644 --- a/LibraryBox-landingpage/www_content/locales/data.en.properties +++ b/LibraryBox-landingpage/www_content/locales/data.en.properties @@ -13,13 +13,13 @@ commonNavbarAbout = About commonFooterBackToTop = Back to top commonFooterLicenceMain = The LibraryBox Project is Software Licensed under GPLv2, see https://www.gnu.org/licenses/gpl-2.0.html for license details. commonFooterLicenceOther = All LibraryBox content not otherwise licensed is released under a Creative Commons NC-BY license. For more information, visit http://librarybox.us +commonFilestopNothingDownloaded = Rien n'a encore été téléchargé. +commonFilestopStartParty = Pourquoi ne pas être le premier ? indexContentWelcome = Welcome to LibraryBox v2.0 indexContentWelcomeDescription = Browse and download any of the available files, or chat with other users below. indexContentWelcomePrivate = LibraryBox is private; no logs or other identifying data are retained. indexFilestopTop = Top Downloads -indexFilestopNothingDownloaded = Rien n'a encore été téléchargé. -indexFilestopStartParty = Pourquoi ne pas être le premier ? indexChatChat = Chat indexChatSend = Send indexChatName.placeholder = Alias diff --git a/LibraryBox-landingpage/www_content/locales/data.fr.properties b/LibraryBox-landingpage/www_content/locales/data.fr.properties index d34743a..5cd55c3 100644 --- a/LibraryBox-landingpage/www_content/locales/data.fr.properties +++ b/LibraryBox-landingpage/www_content/locales/data.fr.properties @@ -13,13 +13,13 @@ commonNavbarAbout = À propos commonFooterBackToTop = Vers le haut commonFooterLicenceMain = Le projet LibraryBox est publié sous licence GPLv2, rendez vous sur https://www.gnu.org/licenses/gpl-2.0.html pour en obtenir les détails. commonFooterLicenceOther = Sauf mention contraire, les contenus de LibraryBox sont publiés sous licence Creative Commons BY-NC. Pour plus d'information, rendez vous sur http://librarybox.us +commonFilestopNothingDownloaded = Rien n'a encore été téléchargé. +commonFilestopStartParty = Pourquoi ne pas être le premier ? indexContentWelcome = Bienvenue sur LibraryBox v2.0 indexContentWelcomeDescription = Naviguez et téléchargez n'importe quel fichier, ou participez à la discussion avec d'autres utilisateurs ci-dessous indexContentWelcomePrivate = LibraryBox respecte votre vie privée. Aucune information sur vous n'est enregistrée. indexFilestopTop = Top Téléchargements -indexFilestopNothingDownloaded = Rien n'a encore été téléchargé. -indexFilestopStartParty = Pourquoi ne pas être le premier ? indexChatChat = Discussion indexChatSend = Envoyer indexChatName.placeholder = Pseudo diff --git a/LibraryBox-landingpage/www_content/stats.html b/LibraryBox-landingpage/www_content/stats.html index 436bd04..0043cf2 100755 --- a/LibraryBox-landingpage/www_content/stats.html +++ b/LibraryBox-landingpage/www_content/stats.html @@ -60,8 +60,8 @@

User Counts

Content Downloads

-

Nothing's been downloaded yet.

-

Why don't you download something and get this party started?

+

Nothing's been downloaded yet.

+

Why don't you download something and get this party started?

From 3feefe7b67b85c6190f57354090792c9a8f1ae4a Mon Sep 17 00:00:00 2001 From: Gilles Coulais Date: Fri, 22 Aug 2014 11:49:29 +0200 Subject: [PATCH 25/90] Add stats page fr basic translation --- .../www_content/locales/data.fr.properties | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/LibraryBox-landingpage/www_content/locales/data.fr.properties b/LibraryBox-landingpage/www_content/locales/data.fr.properties index 5cd55c3..2fc525f 100644 --- a/LibraryBox-landingpage/www_content/locales/data.fr.properties +++ b/LibraryBox-landingpage/www_content/locales/data.fr.properties @@ -38,3 +38,9 @@ aboutFilesTopKickstarter = LibraryBox v2.0 n'aurait pas été possible sans le s aboutFilesTopSafety = LibraryBox est conçue pour être sûre et sécurisée. Aucun compte utilisateur n'est requis et aucune donnée utilisateur n'est sauvegardée. Le système n'est volontairement pas connecté à Internet afin de prévenir toute tentative de suivi et de préserver la vie privée de ses utilisateurs. aboutFilesTopView = Voir les statistiques de téléchargement et de visite aboutKickstarterBackers = Contributeurs KickStarters + +statsWelcomeDownloads = Téléchargements +statsWelcomeDescription = Vous trouverez ci-dessous les statistiques et le compteur visiteur de cette LibraryBox. +statsFilesTopUserCounts = Compteur visiteur +statsFilesTopNoVisitor = Pas encore de visiteur. Il est probable que vous n'ayez pas réglé la date et l'heure de cette LibraryBox/ +statsFilesTopDownloads = Téléchargements de contenus From 55c9e19df736f07cc11d0f6ac9528ee426fdc94a Mon Sep 17 00:00:00 2001 From: Gilles Coulais Date: Fri, 22 Aug 2014 11:56:27 +0200 Subject: [PATCH 26/90] Add visitors key on php counter --- LibraryBox-landingpage/www_content/locales/data.en.properties | 1 + LibraryBox-landingpage/www_content/locales/data.fr.properties | 1 + LibraryBox-landingpage/www_content/vc_statistics.html.php | 2 +- 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/LibraryBox-landingpage/www_content/locales/data.en.properties b/LibraryBox-landingpage/www_content/locales/data.en.properties index 6f7bf82..3304147 100644 --- a/LibraryBox-landingpage/www_content/locales/data.en.properties +++ b/LibraryBox-landingpage/www_content/locales/data.en.properties @@ -44,3 +44,4 @@ statsWelcomeDescription = Below are download statistics and user counts for this statsFilesTopUserCounts = User Counts statsFilesTopNoVisitor = No visitors yet. This probably means you haven't set the time/date on LibraryBox. statsFilesTopDownloads = Content Downloads +statsVisitors = Visitors: diff --git a/LibraryBox-landingpage/www_content/locales/data.fr.properties b/LibraryBox-landingpage/www_content/locales/data.fr.properties index 2fc525f..40e5573 100644 --- a/LibraryBox-landingpage/www_content/locales/data.fr.properties +++ b/LibraryBox-landingpage/www_content/locales/data.fr.properties @@ -44,3 +44,4 @@ statsWelcomeDescription = Vous trouverez ci-dessous les statistiques et le compt statsFilesTopUserCounts = Compteur visiteur statsFilesTopNoVisitor = Pas encore de visiteur. Il est probable que vous n'ayez pas réglé la date et l'heure de cette LibraryBox/ statsFilesTopDownloads = Téléchargements de contenus +statsVisitors = Visiteurs : diff --git a/LibraryBox-landingpage/www_content/vc_statistics.html.php b/LibraryBox-landingpage/www_content/vc_statistics.html.php index 19933e4..3eecd89 100644 --- a/LibraryBox-landingpage/www_content/vc_statistics.html.php +++ b/LibraryBox-landingpage/www_content/vc_statistics.html.php @@ -39,7 +39,7 @@ function print_table_head() { echo << - Day:Visitors: + Day:Visitors: EOD; } From e6542111036b4504224ee08cb828e763bb9f01c4 Mon Sep 17 00:00:00 2001 From: Gilles Coulais Date: Fri, 22 Aug 2014 11:56:42 +0200 Subject: [PATCH 27/90] Add downloads key on php counter --- LibraryBox-landingpage/www_content/dl_statistics.html.php | 2 +- LibraryBox-landingpage/www_content/locales/data.en.properties | 1 + LibraryBox-landingpage/www_content/locales/data.fr.properties | 1 + 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/LibraryBox-landingpage/www_content/dl_statistics.html.php b/LibraryBox-landingpage/www_content/dl_statistics.html.php index 81c6389..fe8fd67 100644 --- a/LibraryBox-landingpage/www_content/dl_statistics.html.php +++ b/LibraryBox-landingpage/www_content/dl_statistics.html.php @@ -39,7 +39,7 @@ function print_table_head() { echo << - Filename:Downloads: + Filename:Downloads: EOD; } diff --git a/LibraryBox-landingpage/www_content/locales/data.en.properties b/LibraryBox-landingpage/www_content/locales/data.en.properties index 3304147..362096a 100644 --- a/LibraryBox-landingpage/www_content/locales/data.en.properties +++ b/LibraryBox-landingpage/www_content/locales/data.en.properties @@ -45,3 +45,4 @@ statsFilesTopUserCounts = User Counts statsFilesTopNoVisitor = No visitors yet. This probably means you haven't set the time/date on LibraryBox. statsFilesTopDownloads = Content Downloads statsVisitors = Visitors: +statsDownloads = Downloads: diff --git a/LibraryBox-landingpage/www_content/locales/data.fr.properties b/LibraryBox-landingpage/www_content/locales/data.fr.properties index 40e5573..e0da01f 100644 --- a/LibraryBox-landingpage/www_content/locales/data.fr.properties +++ b/LibraryBox-landingpage/www_content/locales/data.fr.properties @@ -45,3 +45,4 @@ statsFilesTopUserCounts = Compteur visiteur statsFilesTopNoVisitor = Pas encore de visiteur. Il est probable que vous n'ayez pas réglé la date et l'heure de cette LibraryBox/ statsFilesTopDownloads = Téléchargements de contenus statsVisitors = Visiteurs : +statsDownloads = Téléchargements : From b486752576e5296f77fdc70a57c5273bb9e636b6 Mon Sep 17 00:00:00 2001 From: Gilles Coulais Date: Fri, 22 Aug 2014 12:10:31 +0200 Subject: [PATCH 28/90] Add webL10n library to stats page Update typos on download strings --- LibraryBox-landingpage/www_content/index.html | 3 +-- .../www_content/locales/data.en.properties | 3 +-- .../www_content/locales/data.fr.properties | 5 ++--- LibraryBox-landingpage/www_content/stats.html | 9 ++++++--- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/LibraryBox-landingpage/www_content/index.html b/LibraryBox-landingpage/www_content/index.html index 93f4f22..01be434 100755 --- a/LibraryBox-landingpage/www_content/index.html +++ b/LibraryBox-landingpage/www_content/index.html @@ -62,8 +62,7 @@

Welcome

Top Downloads

-

Nothing's been downloaded yet.

-

Why don't you download something and get this party started?

+

Nothing's been downloaded yet. Why don't you download something and get this party started?

diff --git a/LibraryBox-landingpage/www_content/locales/data.en.properties b/LibraryBox-landingpage/www_content/locales/data.en.properties index 362096a..731f19e 100644 --- a/LibraryBox-landingpage/www_content/locales/data.en.properties +++ b/LibraryBox-landingpage/www_content/locales/data.en.properties @@ -13,8 +13,7 @@ commonNavbarAbout = About commonFooterBackToTop = Back to top commonFooterLicenceMain = The LibraryBox Project is Software Licensed under GPLv2, see https://www.gnu.org/licenses/gpl-2.0.html for license details. commonFooterLicenceOther = All LibraryBox content not otherwise licensed is released under a Creative Commons NC-BY license. For more information, visit http://librarybox.us -commonFilestopNothingDownloaded = Rien n'a encore été téléchargé. -commonFilestopStartParty = Pourquoi ne pas être le premier ? +commonFilestopNothingDownloaded = Nothing's been downloaded yet. Why not start this party? indexContentWelcome = Welcome to LibraryBox v2.0 indexContentWelcomeDescription = Browse and download any of the available files, or chat with other users below. diff --git a/LibraryBox-landingpage/www_content/locales/data.fr.properties b/LibraryBox-landingpage/www_content/locales/data.fr.properties index e0da01f..d2ab9bf 100644 --- a/LibraryBox-landingpage/www_content/locales/data.fr.properties +++ b/LibraryBox-landingpage/www_content/locales/data.fr.properties @@ -13,8 +13,7 @@ commonNavbarAbout = À propos commonFooterBackToTop = Vers le haut commonFooterLicenceMain = Le projet LibraryBox est publié sous licence GPLv2, rendez vous sur https://www.gnu.org/licenses/gpl-2.0.html pour en obtenir les détails. commonFooterLicenceOther = Sauf mention contraire, les contenus de LibraryBox sont publiés sous licence Creative Commons BY-NC. Pour plus d'information, rendez vous sur http://librarybox.us -commonFilestopNothingDownloaded = Rien n'a encore été téléchargé. -commonFilestopStartParty = Pourquoi ne pas être le premier ? +commonFilestopNothingDownloaded = Rien n'a encore été téléchargé. Pourquoi ne pas être le premier ? indexContentWelcome = Bienvenue sur LibraryBox v2.0 indexContentWelcomeDescription = Naviguez et téléchargez n'importe quel fichier, ou participez à la discussion avec d'autres utilisateurs ci-dessous @@ -42,7 +41,7 @@ aboutKickstarterBackers = Contributeurs KickStarters statsWelcomeDownloads = Téléchargements statsWelcomeDescription = Vous trouverez ci-dessous les statistiques et le compteur visiteur de cette LibraryBox. statsFilesTopUserCounts = Compteur visiteur -statsFilesTopNoVisitor = Pas encore de visiteur. Il est probable que vous n'ayez pas réglé la date et l'heure de cette LibraryBox/ +statsFilesTopNoVisitor = Pas encore de visiteur. Il est probable que vous n'ayez pas réglé la date et l'heure de cette LibraryBox. statsFilesTopDownloads = Téléchargements de contenus statsVisitors = Visiteurs : statsDownloads = Téléchargements : diff --git a/LibraryBox-landingpage/www_content/stats.html b/LibraryBox-landingpage/www_content/stats.html index 0043cf2..fdee816 100755 --- a/LibraryBox-landingpage/www_content/stats.html +++ b/LibraryBox-landingpage/www_content/stats.html @@ -9,6 +9,10 @@ + + + + @@ -60,9 +64,8 @@

User Counts

Content Downloads

-

Nothing's been downloaded yet.

-

Why don't you download something and get this party started?

-
+

Nothing's been downloaded yet. Why don't you download something and get this party started?

+ From e559b91a342fb1f3aa9eb6e4b1ac3198c381850d Mon Sep 17 00:00:00 2001 From: Jason Griffey Date: Wed, 27 Aug 2014 21:42:36 -0500 Subject: [PATCH 29/90] Revised directory listing for LibraryBox 2.1 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit More responsive, hidden columns on size breaks, better typography, better line breaks. It’s just better --- .../www_content/css/dir_list.css | 224 ++++++++++++++++++ .../www_librarybox/dir-generator.php | 67 ++---- 2 files changed, 246 insertions(+), 45 deletions(-) create mode 100755 LibraryBox-landingpage/www_content/css/dir_list.css diff --git a/LibraryBox-landingpage/www_content/css/dir_list.css b/LibraryBox-landingpage/www_content/css/dir_list.css new file mode 100755 index 0000000..8f62ce1 --- /dev/null +++ b/LibraryBox-landingpage/www_content/css/dir_list.css @@ -0,0 +1,224 @@ + +@font-face { + font-family: 'GearedSlab'; + src: url("../fonts/gearedslab-webfont.eot"); + src: url("../fonts/gearedslab-webfont.svg"); + src: url("../fonts/gearedslab-webfont.ttf"); + src: url("../fonts/gearedslab-webfont.woff"); +} + +@font-face { + font-family: 'Open Sans'; + src: url("../fonts/OpenSans-Regular.ttf"); +} + + + +* { + margin:0; + padding:0; + -webkit-box-sizing:border-box; + -moz-box-sizing:border-box; + box-sizing: border-box; +} + +html { + min-height:100%; + border-top:10px solid #c03d14; + border-bottom:10px solid #c03d14; + color:#61666c; + font-weight:400; + font-size:1em; + font-family:'Open Sans', sans-serif; + line-height:2em; +} +body { + padding:0px; + -webkit-backface-visibility:hidden; + background-color: #9099A3; +} +code { + font-family:consolas,monospace; +} +a { + color:#c03d14; + text-decoration:none; +} +a:hover { + color:#009933; +} + +a:visited { + color: #48468F; +} + +h1 { + padding: 0px 0px 0px 10px; + margin-bottom: 12px; + font-family:'GearedSlab', sans-serif; + } +h2 { + padding: 0px 0px 0px 10px; + margin-bottom: 12px; + font-family:'GearedSlab', sans-serif; + } + +/*------------------------------------*\ + Wrapper +\*------------------------------------*/ +.wrapper { + margin:0 auto; + padding-top:20px; + max-width:500px; +} +/*------------------------------------*\ + Demo block +\*------------------------------------*/ +.block { + // font-size:.875em; + margin:20px 0; + padding:20px; + color:#9099A3; +} +/*------------------------------------*\ + Table (directory listing) +\*------------------------------------*/ + +table { + width:98%; + border-collapse:collapse; + font-size:1.25em; + line-height: 1.25em; + margin-left: 12px; + padding:0px; + +} + +th, td { font-family:'Open Sans', sans-serif;} + +td.s, th.s {text-align: right;} +div.list { + background-color: white; + border-top: 1px solid #646464; + border-bottom: 1px solid #646464; + padding-top: 10px; + padding-bottom: 14px; + } + +div.foot, div.script_title { + font-family:'Open Sans', sans-serif; + font-size: 10pt; + color: #787878; + padding-top: 4px;} +div.script_title { + float:right; + text-align:right; + font-size:8pt; + color:#999; + } + + +tr { + outline:0; + border:0; +} +tr:hover td { + background:#f6f6f6; +} +th { + text-align:left; + // font-size:.75em; + padding-right:20px; + font-weight: bold; + padding-bottom: 3px; +} +/* 2nd Column: Filename */ +th + th { + // width:65%; +} +/* 3rd Column: Last Modified */ +th + th + th { +} +/* 4th Column: Size */ +th + th + th + th { + width:5%; +} +tr td:first-of-type { + padding-left:10px; + padding-right:10px; +} +td { + padding:8px 0; + outline:0; + border:0; + border-bottom:5px solid #edf1f5; + vertical-align:center; + text-align:left; + -webkit-transition:background 300ms ease; + -moz-transition:background 300ms ease; + -ms-transition:background 300ms ease; + -o-transition:background 300ms ease; + transition:background 300ms ease; +} +td a{ + //display: block; +} + +td.n a { background: url( /Content/dir-images/file.png) no-repeat 10px 50%; + padding-left: 35px; + } +td.n a#img { background-image: url(/content/dir-images/image.png); } +td.n a#video { background-image: url(/content/dir-images/video.png); } +td.n a#audio { background-image: url(/content/dir-images/sound.png); } +td.n a#archive { background-image: url(/content/dir-images/zip.png); } +td.n a#doc { background-image: url(/content/dir-images/office.png); } +td.n a#font { background-image: url(/content/dir-images/file.png); } +td.n a#file { background-image: url(/content/dir-images/file.png); } +td.n a#folder { background-image: url(/content/dir-images/folder.png); } + +tr.parent a { + color:#9099A3; +} + .parent a:hover { + color:#2281d0; + } +/*------------------------------------*\ + Footer +\*------------------------------------*/ +.footer { + text-align:center; + font-size:.75em; +} + +/*------------------------------------*\ + Column style +\*------------------------------------*/ +.n { + text-align:center; + white-space: -moz-pre-wrap; /* Mozilla */ +white-space: -hp-pre-wrap; /* HP printers */ +white-space: -o-pre-wrap; /* Opera 7 */ +white-space: -pre-wrap; /* Opera 4-6 */ +white-space: pre-wrap; /* CSS 2.1 */ +white-space: pre-line; /* CSS 3 (and 2.1 as well, actually) */ +word-wrap: break-word; /* IE */ +word-break: break-all; + +} + +.s { + text-align:center; + font-size:.75em; +} + +.t { + text-align:center; + font-size:.75em; +} + +.c { + text-align:center; + font-size:.75em; +} + + diff --git a/customization/www_librarybox/dir-generator.php b/customization/www_librarybox/dir-generator.php index de892fd..6aa3580 100644 --- a/customization/www_librarybox/dir-generator.php +++ b/customization/www_librarybox/dir-generator.php @@ -9,6 +9,8 @@ * * Since 1.0 ; Matthias Strubel * Modifications for including a download-count. + * Since 1.0 ; Jason Griffey + * Modifications for responsive design * * GNU License Agreement * --------------------- @@ -228,34 +230,10 @@ function get_folder_statistics ($my_path, &$folder_statistics) { + Index of /'.$vpath.' - - + + '; @@ -373,19 +351,19 @@ function get_folder_statistics ($my_path, &$folder_statistics) { $sort_methods = array(); $sort_methods['name'] = "Name"; -$sort_methods['modtime'] = "Last Modified"; -$sort_methods['size'] = "Size"; -$sort_methods['file_type'] = "Type"; +//$sort_methods['modtime'] = "Last Modified"; +$sort_methods['size'] = ""; +$sort_methods['file_type'] = ""; if ( $display_dl_count ) { - $sort_methods['counter'] = "Downloads"; + $sort_methods['counter'] = ""; } foreach($sort_methods as $key=>$item) { if($_GET['sort'] == $key) { - print "
$item"; + print "$item"; } else { - print "$item"; + print "$item"; } } print ""; @@ -395,9 +373,9 @@ function get_folder_statistics ($my_path, &$folder_statistics) { // Parent directory link if($path != "./") { print "Parent Directory/"; - print " "; - print " "; - print "Directory\n"; + //print " "; + print " "; + print "Directory\n"; } @@ -405,9 +383,9 @@ function get_folder_statistics ($my_path, &$folder_statistics) { // Print folder information foreach($folderlist as $folder) { print "" .htmlentities($folder['name']). "/"; - print "" . date('Y-M-d H:i:s', $folder['modtime']) . ""; - print "" . (($calculate_folder_size)?format_bytes($folder['size'], 2):'--') . " "; - print "" . $folder['file_type'] . "\n"; + //print "" . date('Y-M-d H:i:s', $folder['modtime']) . ""; + print "" . (($calculate_folder_size)?format_bytes($folder['size'], 2):'--') . " "; + print "" . $folder['file_type'] . "\n"; } @@ -429,11 +407,11 @@ function get_folder_statistics ($my_path, &$folder_statistics) { } print "" .htmlentities($file['name']). ""; - print "" . date('Y-M-d H:i:s', $file['modtime']) . ""; - print "" . format_bytes($file['size'],2) . " "; - print "" . $file['file_type'] . ""; + // print "" . date('Y-M-d H:i:s', $file['modtime']) . ""; + print "" . format_bytes($file['size'],2) . " "; + print "" . $file['file_type'] . ""; if ( $display_dl_count ) { - print "" . $file['counter'] . ""; + print "" . $file['counter'] . ""; } print "\n"; } @@ -460,8 +438,7 @@ function get_folder_statistics ($my_path, &$folder_statistics) { } } -print "
Lighttpd Enhanced Directory Listing Script
-
". $_ENV['SERVER_SOFTWARE'] . "
+print "
"LibraryBox v2.1"
"; From d5f2c8db6eed240b744b7406757f55be1a3568e5 Mon Sep 17 00:00:00 2001 From: Jason Griffey Date: Thu, 28 Aug 2014 12:23:59 -0500 Subject: [PATCH 30/90] Fixed Path issue, updated version Fixed a couple of bugs. Thanks, Matthias! :-) --- LibraryBox-landingpage/www_content/css/dir_list.css | 12 ++++++------ customization/www_librarybox/dir-generator.php | 11 ++--------- 2 files changed, 8 insertions(+), 15 deletions(-) diff --git a/LibraryBox-landingpage/www_content/css/dir_list.css b/LibraryBox-landingpage/www_content/css/dir_list.css index 8f62ce1..8fe582b 100755 --- a/LibraryBox-landingpage/www_content/css/dir_list.css +++ b/LibraryBox-landingpage/www_content/css/dir_list.css @@ -1,15 +1,15 @@ @font-face { font-family: 'GearedSlab'; - src: url("../fonts/gearedslab-webfont.eot"); - src: url("../fonts/gearedslab-webfont.svg"); - src: url("../fonts/gearedslab-webfont.ttf"); - src: url("../fonts/gearedslab-webfont.woff"); + src: url("/content/fonts/gearedslab-webfont.eot"); + src: url("/content/fonts/gearedslab-webfont.svg"); + src: url("/content/fonts/gearedslab-webfont.ttf"); + src: url("/content/fonts/gearedslab-webfont.woff"); } @font-face { font-family: 'Open Sans'; - src: url("../fonts/OpenSans-Regular.ttf"); + src: url("/content/fonts/OpenSans-Regular.ttf"); } @@ -164,7 +164,7 @@ td a{ //display: block; } -td.n a { background: url( /Content/dir-images/file.png) no-repeat 10px 50%; +td.n a { background: url( /content/dir-images/file.png) no-repeat 10px 50%; padding-left: 35px; } td.n a#img { background-image: url(/content/dir-images/image.png); } diff --git a/customization/www_librarybox/dir-generator.php b/customization/www_librarybox/dir-generator.php index 6aa3580..8109963 100644 --- a/customization/www_librarybox/dir-generator.php +++ b/customization/www_librarybox/dir-generator.php @@ -1,6 +1,6 @@ "; -/* -------------------------------------------------------------------------------- *\ - I hope you enjoyed my take on the enhanced directory listing script! - If you have any questions, feel free to contact me. - - Regards, - Evan Fosmark < me@evanfosmark.com > -\* -------------------------------------------------------------------------------- */ From 81d945d018a5fb055951c1081c3ef33b65c43f32 Mon Sep 17 00:00:00 2001 From: Matthias Strubel Date: Fri, 29 Aug 2014 16:01:54 +0200 Subject: [PATCH 31/90] Squashed 'piratebox_origin/' changes from 0073803..43baaeb 43baaeb Fixing bootup issue on RPi with some USB-wifi-Dongles cdf7957 added forgotten entries 18be118 Added note about the updated on box-installer Testing 1.0.1 RC1 Release 92fff1b Fixing customization for Leasefile location on OpenWRT devices 626bed1 Fixing cleanup for imagebuild in order to fix droopy building a85663e Distribute Files for DirectoryListing once upon initialization. 50bd60a Fix relativ link to board on splash page c5dc443 Added fixnote about russion translation 7b068a3 Merge branch 'denis-d-patch-1' into hotfix-1.0.1 - Fix russion translation in droopy c236bcc Update droopy 9906dd9 Added more fixes on depended packages 5369319 Added changelog and Version bump 5af4f40 Merge branch 'hotfix-1.0.1' of github.com:PirateBox-Dev/PirateBoxScripts_Webserver into hotfix-1.0.1 a3e0ba2 Closes #63 Thank you Merge branch 'taffy-nay-patch-1' into hotfix-1.0.1 10b352a Removed thanks button padding. c40cd7b Fixed typo 2d1b987 typo in hosts Merge branch 'campino2k-patch-1' into hotfix-1.0.1 38fe658 Update hosts 1221435 Fixing wrong link path to board out of shared folder 1292515 Force the user to change the password, because he has to edit the file anyway. (remove leading # ) 6f5e1e4 Fix for duplicate symlinks 37a0680 fixed missing then 56d9569 Adding systemd file for RPi Image 9d50d00 Fixed typo in generate config script 3021d2c uncommon line mix fixed 660531e Release PirateBox 1.0 0756f76 only download kareha-zip file when it is not available af7b000 Ensure Shoutbox File is always writable 7fdfaf4 added imagefile to changelog e488216 Upgrade opt/piratebox image from ext3 to ext4 and 50MB file 13b0d5c Release 1.0.0-beta5 a493301 updated Changelog for mising points 28c6271 deliver sample configuration of minidlna within PirateBox release 41b4873 Release 1.0.0-beta4 7b5ee7e Fixed captive Portal detection for iOS7 a800308 Merge branch 'hotfix-v0.6G' into stable 3a86370 Release 0.6G * Fixed captive Portal detection for iOS7 * ignore hidden Files in directory list b021550 Fixed captive Portal detection for iOS7 3e2acfb Release 1.0-beta3 a59d569 Enable unescaped blanks in upload-folder variable 9673ae2 update of beta3 changes a20db8f moved Config entry from timesave to piratebox.conf emptied out the openwrt section in timesave script, which wasn't called anymore 4a4be36 install_piratebox.sh now uses schema based generation for redirect.html 379f3d3 added mimetype for json files 8e55ae1 OVERWORK of calls of "date" and better initialize of timesave file (less error messages) 7b5a332 fix for calling change hostname service e3152c3 Fixes issue in package generation + initialition on Debian dbc069e Changes for working subdirectories with custom directory listing a30ad81 Release beta2 693775b fix for OpenWRT systems b6555ae Get back to PirateBox-Logo for kareha 99f4a97 Added new directory-Design to CHANGELOG and David Brooks to Authors e1c6f00 Directory-Listing with PirateBox Design now aa36558 Distribute Files which are responsible for the new design in directory listing 1ddc78f Merge pull request #52 from dsbrooks/responsive_design a29154f Quick-fix 1d65900 Pull Request 1f4b863 Merge branch 'change_hostname' into release-1.0 5a5f3ac Generating lease-file location based on config file. Place it on OpenWRT into /tmp => memory 958f18f Fix for droopy on OpenWRT #49 6cba62f Documentation 119fa6f fixed changelog .. ff42872 removal of service bf2d385 Version beta1 73a6d60 added responsive design to changelog 7b205e0 Merge branch 'responsive_design' into development 83fd53d Merge branch 'dsbrooks-responsive_design' into responsive_design e937f0f Merge branch 'responsive_design' of https://github.com/dsbrooks/PirateBoxScripts_Webserver into dsbrooks-responsive_design b5484ba Changes 7b8c852 Created changelog to keep track of changes in releases 9dfc3e6 Don't show hidden .dot-files anmore Merge branch 'mrrcollins-nodotfiles' into hotfix-v0.6G 50488be Stop lighttpd from showing hidden files in directory listing for OS X users who save to an external drive 4eeba32 New Stable version v0.6F Merge branch 'v0.6' into stable 7462fcf small fix .. 28201d1 small fixes with path & wget 0f8b756 Add .epub mime-type to lighttpd configuration Merge branch 'mime_type_issues' into v0.6 b432108 typo fix ee2d88a more fix during installation of imageboard 8985e67 F-Release 35b194c Fix for moving extracted content 2e1c809 check unzip status 8f6547c differ between OpenWRT and Linux in calling unzip e927261 be more verbose, if init_done found during kareha install 1111eeb Prevent Caching in redirect.html 5f99dcd only copy over the kareha link out of the source-folder... 73f06ac Merge branch 'dsbrooks-responsive_design' into responsive_design 78b1c2f Merge branch 'responsive_design' of https://github.com/dsbrooks/PirateBoxScripts_Webserver into dsbrooks-responsive_design be76e2b Fixed issue with clearing chat input after sending. dfeed87 Reworked layout, new chat-gen 618b561 Merge branch 'dsbrooks-responsive_design' into responsive_design ; First implementation of new UI 3a44250 Rebuild and design tweaks 7de1e2d Revert to original state b01cca0 Initial commit of sent files REVERT: 0073803 Fixed captive Portal detection for iOS7 REVERT: b3d602a Merge commit '93060d55a91aab41448a963e015eb22082c38693' into rpi_support REVERT: 91c8864 Fixes issue in package generation + initialition on Debian REVERT: c5ae25d removal of service REVERT: 057aace Fix for droopy on OpenWRT #49 REVERT: 0d0c37f Generating lease-file location based on config file. Place it on OpenWRT into /tmp => memory REVERT: b6d38ca fix for calling change hostname service REVERT: 155829f overwork of calls of "date" and better initialize of timesave file (less error messages) REVERT: 8e60dd5 added mimetype for json files REVERT: f51be25 install_piratebox.sh now uses schema based generation for redirect.html REVERT: cafbbb8 moved Config entry from timesave to piratebox.conf emptied out the openwrt section in timesave script, which wasn't called anymore REVERT: 66b3106 Merge remote-tracking branch 'origin/change_hostname' into librarybox_dev REVERT: 010bcc9 Added fix to changelog REVERT: 83e7136 only save new-date & time if the old one is "behind" the current date&time. That solves issues during bootup, when cron starts to save before the date&time recover is done REVERT: 06071d2 . git-subtree-dir: piratebox_origin git-subtree-split: 43baaeb944730e3a23827602497eb1334192df34 --- AUTHORS | 3 + BuildScripts/piratebox.service | 14 + CHANGELOG | 47 ++- Makefile | 14 +- README | 22 +- image_stuff/OpenWRT.img.gz | Bin 23573 -> 0 bytes image_stuff/OpenWRT_ext4_100MB.img.gz | Bin 0 -> 107404 bytes image_stuff/OpenWRT_ext4_50MB.img.gz | Bin 0 -> 54561 bytes .../bin/distribute_file_into_directory.sh | 29 ++ piratebox/piratebox/bin/distribute_files.sh | 48 +++ piratebox/piratebox/bin/droopy | 28 +- .../piratebox/bin/generate_config_files.sh | 2 +- piratebox/piratebox/bin/install_piratebox.sh | 21 +- piratebox/piratebox/bin/shoutbox_stuff.sh | 3 +- piratebox/piratebox/bin/timesave.sh | 2 +- piratebox/piratebox/conf/hosts | 2 +- .../piratebox/conf/lighttpd/lighttpd.conf | 24 +- piratebox/piratebox/conf/piratebox.conf | 2 +- piratebox/piratebox/init.d/piratebox | 5 +- piratebox/piratebox/init.d/piratebox_alt | 5 +- piratebox/piratebox/python_lib/psogen.py | 17 +- piratebox/piratebox/src/HEADER.txt | 28 ++ piratebox/piratebox/src/README.txt | 12 + piratebox/piratebox/src/kareha_img_config.pl | 4 +- .../piratebox/src/linux.example.minidlna.conf | 17 + .../piratebox/src/openwrt.example.minidlna | 17 + piratebox/piratebox/www/chat.html | 43 --- piratebox/piratebox/www/forum.html | 12 - piratebox/piratebox/www/index.html | 222 ++++------- piratebox/piratebox/www/jquery.min.js | 0 piratebox/piratebox/www/menu.png | Bin 0 -> 2992 bytes .../www/piratebox-logo-horizontal-white.png | Bin 0 -> 6607 bytes piratebox/piratebox/www/piratebox-logo.png | Bin 16453 -> 0 bytes piratebox/piratebox/www/scripts.js | 131 +++++++ piratebox/piratebox/www/style.css | 362 +++++++++++++++++- 35 files changed, 852 insertions(+), 284 deletions(-) create mode 100644 BuildScripts/piratebox.service delete mode 100755 image_stuff/OpenWRT.img.gz create mode 100644 image_stuff/OpenWRT_ext4_100MB.img.gz create mode 100644 image_stuff/OpenWRT_ext4_50MB.img.gz create mode 100755 piratebox/piratebox/bin/distribute_file_into_directory.sh create mode 100755 piratebox/piratebox/bin/distribute_files.sh create mode 100644 piratebox/piratebox/src/HEADER.txt create mode 100644 piratebox/piratebox/src/README.txt create mode 100644 piratebox/piratebox/src/linux.example.minidlna.conf create mode 100644 piratebox/piratebox/src/openwrt.example.minidlna delete mode 100755 piratebox/piratebox/www/chat.html delete mode 100755 piratebox/piratebox/www/forum.html mode change 100755 => 100644 piratebox/piratebox/www/index.html mode change 100644 => 100755 piratebox/piratebox/www/jquery.min.js create mode 100644 piratebox/piratebox/www/menu.png create mode 100644 piratebox/piratebox/www/piratebox-logo-horizontal-white.png delete mode 100755 piratebox/piratebox/www/piratebox-logo.png create mode 100755 piratebox/piratebox/www/scripts.js mode change 100755 => 100644 piratebox/piratebox/www/style.css diff --git a/AUTHORS b/AUTHORS index 8e76041..5a69383 100644 --- a/AUTHORS +++ b/AUTHORS @@ -14,6 +14,9 @@ Contributors for modifications: # someguy - Modifications for running on OpenWRT # ToM'aSs - Languag-Support +Design: + * David Brooks + Based on Software: * Droopy - http://stackp.online.fr/?p=28 * forest.py - http://www.triv.org.uk/~nelis/forest/ diff --git a/BuildScripts/piratebox.service b/BuildScripts/piratebox.service new file mode 100644 index 0000000..ac7a1a9 --- /dev/null +++ b/BuildScripts/piratebox.service @@ -0,0 +1,14 @@ +[Unit] +Description=PirateBox Service + +[Service] +Type=idle +RemainAfterExit=yes +ExecStart=/opt/piratebox/init.d/piratebox_alt start +ExecStop=/opt/piratebox/init.d/piratebox_alt stop +#Restart=/opt/piratebox/init.d/piratebox_alt restart +#PIDFile=/var/run/piratebox.pid + +[Install] +WantedBy=multi-user.target + diff --git a/CHANGELOG b/CHANGELOG index 70c3b74..d9f23d9 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,19 +1,52 @@ CHANGELOG +=== 1.0.1 === +* [Fix] Fixed setting permissions of shoutbox datafile +* [New] Service File for RPi image +* [Fix] Several typos in scripts +* [Fix] Typo in front page and directory listing +* [Fix] in timsave.sh while restoring date&time +* [Fix] [OpenWRT] Timesave create bootup restore +* [Fix] [OpenWRT] Fix for not working "already installed" recognition to skip parts +* [Fix] [OpenWRT] Fix for errors during installing piratebox-mod-imageboard because of duplicate links +* [Fix] [OpenWRT] Fix for LED flashing during auto install (box-installer on image) +* [Fix] [OpenWRT] Fix error messages on package reinstall. (extendRoot) +* [Fix] No dublicates symlink after double "part2" via install_piratebox.sh +* [New] Remove # in front of secret & password to force user to change it before using the board +* [Fix] Button padding in UI +* [Fix] Board Link out of nested Shared folder +* [Fix] Russian Translation in Droopy +* [Fix] ReDistribute DirectoryListing files upon initialization on first Startup +* [Fix] [OpenWRT] Fixing customization of lease-file location for OpenWRT +* [Fix] [OpenWRT] Fixes issues when extendRoot couldn't get initilized correctly +* [New] [OpenWRT] Optimized handling of mount options in extendRoot +* [Fix] [RPi] Bootup issue with some USB-wifi sticks. === 1.0.0 === NOTE: This may only be a partial changelog, check github / your package manager for more info. -* [New] push of systemd structure +* Overwork into new Responsive design + * New Frontpage + * Directory Listing in design + * Configuration in lighttpd.conf + * During startup README.txt & HEADER.txt get copied into /opt/piratebox/share/Shared folder + -> Exisiting files won't be overwritten! + -> Scripts can be used in console with overwrite parameter do distribute your own files * [New] install method - * [New] install dependencies + * [New] install dependencies * [Fixed] General cleaning - * [Removed] [Testing] Executable, we will stick to service based -* [Fixed] Overwritten saved timestamp with 1970 one * [New] possibility in install_piratebox.sh to exchange the hostname easily -* [Fixed] Hide dot files in directory-listing which are usually hidden files * [New] Moved DHCP leasefile into memory on OpenWRT system (/tmp is memory) +* [Fix] Timesave script does not contain parts for OpenWRT anymore +* [Fix] Timesave-file location is now configured in piratebox.conf +* [Fix] Fix in Changing hostname functionality +* [New] Hostname changing generates the redirect.html now based on a Schema file +* [New] Added JSON Mime-Type +* [Fix] Enable unescaped blanks in Upload-Folder +* [Fix] iOS 7 captive Portal fix +* [New] Sample configuration for UPnP Server +* [New] Image file is ext4 and 50MB === v0.6G === -* [Fixed] Hide dot files in directory-listing which are usually hidden files -* [Fixed] captive Portal detection for iOS7 +* [Fix] Hide dot files in directory-listing which are usually hidden files +* [Fix] Fixed captive Portal detection for iOS7 diff --git a/Makefile b/Makefile index e7804e8..31d4ea6 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ NAME = piratebox-ws -VERSION = 1.0.0 +VERSION = 1.0.1RC1 ARCH = all PB_FOLDER=piratebox PB_SRC_FOLDER=$(PB_FOLDER)/$(PB_FOLDER) @@ -10,7 +10,7 @@ VERSION_FILE=$(PB_FOLDER)/$(PB_FOLDER)/version IMAGE_FILE=piratebox_ws_1.0_img.gz TGZ_IMAGE_FILE=piratebox_ws_1.0_img.tar.gz -SRC_IMAGE=image_stuff/OpenWRT.img.gz +SRC_IMAGE=image_stuff/OpenWRT_ext4_50MB.img.gz SRC_IMAGE_UNPACKED=image_stuff/piratebox_img MOUNT_POINT=image_stuff/image OPENWRT_FOLDER=image_stuff/openwrt @@ -48,7 +48,7 @@ $(OPENWRT_CONFIG_FOLDER): sed 's:DNSMASQ_INTERFACE="wlan0":DNSMASQ_INTERFACE="br-lan":' -i $@/piratebox.conf sed 's:192.168.77:192.168.1:g' -i $@/piratebox.conf sed 's:DROOPY_USE_USER="yes":DROOPY_USE_USER="no":' -i $@/piratebox.conf - sed 's:LEASE_FILE_LOCATION=$PIRATEBOX_FOLDER/tmp/lease.file:LEASE_FILE_LOCATION=/tmp/lease.file:' -i $@/piratebox.conf + sed 's:LEASE_FILE_LOCATION=$$PIRATEBOX_FOLDER/tmp/lease.file:LEASE_FILE_LOCATION=/tmp/lease.file:' -i $@/piratebox.conf $(OPENWRT_BIN_FOLDER): mkdir -p $@ @@ -67,16 +67,16 @@ package: $(PACKAGE) all: package shortimage -clean: cleanimage - rm -f $(PACKAGE) - rm -f $(VERSION_FILE) - cleanimage: - rm -f $(TGZ_IMAGE_FILE) - rm -f $(SRC_IMAGE_UNPACKED) - rm -fr $(OPENWRT_CONFIG_FOLDER) - rm -v $(IMAGE_FILE) + - rm -rv $(OPENWRT_BIN_FOLDER) +clean: cleanimage + rm -f $(PACKAGE) + rm -f $(VERSION_FILE) shortimage: $(IMAGE_FILE) $(TGZ_IMAGE_FILE) diff --git a/README b/README index f719066..85f77d2 100644 --- a/README +++ b/README @@ -11,10 +11,6 @@ # Contains: Shoutbox, Forum # # - ---------------- This release is the dev. base for LibraryBox 2.0 --------------- - - PirateBox is a collection of scripts / programs that allows you to use your wireless card as a local network to share files and chat anonymously. For more information please visit http://daviddarts.com/ @@ -55,28 +51,14 @@ PirateBox should be in most common repositories soon, but in the mean time you c ##### For alpha testing Download the package: -https://github.com/MaStr/PirateBoxScripts_Webserver/archive/master.zip +https://github.com/MaStr/PirateBoxScripts_Webserver/archive/development.zip Unzip the package: -$unzip master.zip +$unzip development.zip Run the installer in the unzipped folder: $ cd PirateBoxScripts_Webserver/piratebox $ sudo ./install.sh default #Default can be substituted with 'board' if you want an image board on your PB -Starting / Stopping PirateBox -WARNING: Some major distributions have changed from init.d to systemd which means you should use the -commands that are labeled under your distribution or what your distribution is based on. It should -also be noted that as of recently Ubuntu has systemd enabled but not set as the default init system -which means that you may have to use the systemctl commands. - -Newest versions of Ubuntu, Fedora, Arch, OpenSUSE, Mageia, and Mandriva: -$ systemctl start piratebox -$ systemctl start piratebox -$ systemctl restart piratebox -Older Ubuntu (xubuntu, lubuntu, etc), Mint, Debian, most Debian based distros: -$ service piratebox start -$ service piratebox stop -$ service piratebox restart diff --git a/image_stuff/OpenWRT.img.gz b/image_stuff/OpenWRT.img.gz deleted file mode 100755 index be31df89bd2558c41ca67af864564144afdd0ae7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23573 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 GH~n9y*+oA9 diff --git a/image_stuff/OpenWRT_ext4_100MB.img.gz b/image_stuff/OpenWRT_ext4_100MB.img.gz new file mode 100644 index 0000000000000000000000000000000000000000..edc0825a4c3c4f8df8306fb3ac06c6d68548a9f9 GIT binary patch literal 107404 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 literal 0 HcmV?d00001 diff --git a/image_stuff/OpenWRT_ext4_50MB.img.gz b/image_stuff/OpenWRT_ext4_50MB.img.gz new file mode 100644 index 0000000000000000000000000000000000000000..61a50cff2cd1520ab05d1aec4d5d7b295dacff6d GIT binary patch literal 54561 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 r-hVB^ud3?7L!W=D4Dj3_00JNY0w4eaAn Check if that subdirectory already exits.
If it does not, make sure you are only using characters a-zA-Z0-9 for the username and password.
If the directory exists and the characters are valid, you probably are using the wrong password

", - "advanced": "advanced options", - "userdirname": "Name of directory to place files in ", - "userdirpassword": "Password for saving files to that directory (optional)", - "retry": u"Повторить.", - "discover": u"Посмотреть адрес этой страницы"} +ru = {"maintitle": u"Отправить файл", + "submit": u"Отправить", + "sending": u"Отправляю", + "successtitle": u"Файл получен", + "received": u"Файл получен!", + "another": u"Отправить другой файл", + "errortitle": u"Ошибка", + "problem": u"Произошла ошибка!", + "subdirerror": u"Невозможно загрузить файлы в этот подкаталог.
Проверьте что подкаталог уже существует.
Если нет, убедитесть что для логина и пароля вы используете только следующие символы a-zA-Z0-9
Если каталог существует и символы правильны, возможно вы ошиблись с паролем

", + "advanced": u"расширенные настройки", + "userdirname": u"Имя каталога для сохранения файлов", + "userdirpassword": u"Пароль для сохранения файлов в этот каталог (опционально)", + "retry": u"Повторить", + "discover": u"Посмотреть адрес этой страницы"} sk = {"maintitle": u"PoÅ¡li súbor", "submit": u"PoÅ¡li", diff --git a/piratebox/piratebox/bin/generate_config_files.sh b/piratebox/piratebox/bin/generate_config_files.sh index 52e4aa9..8da4979 100755 --- a/piratebox/piratebox/bin/generate_config_files.sh +++ b/piratebox/piratebox/bin/generate_config_files.sh @@ -123,7 +123,7 @@ generate_lighttpd_env() { local PIRATEBOX=$5 local SHOUTBOX_CHATFILE=$6 - echo "Generating Environment-config for ligttpd ....." + echo "Generating Environment-config for lighttpd ....." LIGHTTPD_ENV_BR_LINE="" if [ "$GLOBAL_CHAT" = "yes" ] ; then diff --git a/piratebox/piratebox/bin/install_piratebox.sh b/piratebox/piratebox/bin/install_piratebox.sh index 99cd59b..62fd102 100755 --- a/piratebox/piratebox/bin/install_piratebox.sh +++ b/piratebox/piratebox/bin/install_piratebox.sh @@ -60,7 +60,9 @@ if [ $2 = 'part2' ] ; then #Copy Forban-Link spacer cp $PIRATEBOX_FOLDER/src/no_link.html $PIRATEBOX_FOLDER/www/forban_link.html -#Set permissions + #Distribute the Directory Listing files + $PIRATEBOX_FOLDER/bin/distribute_files.sh $SHARE_FOLDER/Shared true + #Set permissions chown $LIGHTTPD_USER:$LIGHTTPD_GROUP $PIRATEBOX_FOLDER/share -R chmod u+rw $PIRATEBOX_FOLDER/share chown $LIGHTTPD_USER:$LIGHTTPD_GROUP $PIRATEBOX_FOLDER/www -R @@ -73,9 +75,9 @@ if [ $2 = 'part2' ] ; then if [ ! -f $PIRATEBOX_FOLDER/share/board/kareha.pl ] ; then cp $PIRATEBOX_FOLDER/src/kareha.pl $PIRATEBOX_FOLDER/share/board fi - - ln -s $PIRATEBOX_FOLDER/share/board $PIRATEBOX_FOLDER/www/board - ln -s $UPLOADFOLDER $PIRATEBOX_FOLDER/www/Shared + + [[ ! -L $PIRATEBOX_FOLDER/www/board ]] && ln -s $PIRATEBOX_FOLDER/share/board $PIRATEBOX_FOLDER/www/board + [[ ! -L $PIRATEBOX_FOLDER/www/Shared ]] && ln -s $UPLOADFOLDER $PIRATEBOX_FOLDER/www/Shared fi #Install the image-board @@ -90,12 +92,15 @@ if [ $2 = 'imageboard' ] ; then exit 0; fi - echo " Wgetting kareha-zip file " + cd $PIRATEBOX_FOLDER/tmp KAREHA_RELEASE=kareha_3.1.4.zip - wget http://wakaba.c3.cx/releases/$KAREHA_RELEASE - if [ "$?" != "0" ] ; then - echo "wget kareha failed.. you can place the current file your to $PIRATEBOX_FOLDER/tmp " + if [ ! -e $PIRATEBOX_FOLDER/tmp/$KAREHA_RELEASE ] ; then + echo " Wgetting kareha-zip file " + wget http://wakaba.c3.cx/releases/$KAREHA_RELEASE + if [ "$?" != "0" ] ; then + echo "wget kareha failed.. you can place the current file your to $PIRATEBOX_FOLDER/tmp " + fi fi if [ -e $PIRATEBOX_FOLDER/tmp/$KAREHA_RELEASE ] ; then diff --git a/piratebox/piratebox/bin/shoutbox_stuff.sh b/piratebox/piratebox/bin/shoutbox_stuff.sh index 8bf5f5a..0d357cc 100755 --- a/piratebox/piratebox/bin/shoutbox_stuff.sh +++ b/piratebox/piratebox/bin/shoutbox_stuff.sh @@ -31,6 +31,7 @@ python psogen.py generate #Set correct permissions chown $LIGHTTPD_USER:$LIGHTTPD_GROUP $SHOUTBOX_CHATFILE chown $LIGHTTPD_USER:$LIGHTTPD_GROUP $SHOUTBOX_GEN_HTMLFILE - +chmod ug+rw $SHOUTBOX_CHATFILE +chmod ug+rw $SHOUTBOX_CHATFILE diff --git a/piratebox/piratebox/bin/timesave.sh b/piratebox/piratebox/bin/timesave.sh index 839af38..55514b1 100755 --- a/piratebox/piratebox/bin/timesave.sh +++ b/piratebox/piratebox/bin/timesave.sh @@ -65,7 +65,7 @@ if [ "$2" = "save" ] ; then fi if [ "$2" = "recover" ] ; then - if [ `get_datetime` -lt `cat $TIMESAVE` ] ; + if [ `get_datetime` -lt `cat $TIMESAVE` ] ; then date `cat $TIMESAVE ` [ "$?" != "0" ] && echo "error in recovering time" && exit 255 echo "Time recovered" diff --git a/piratebox/piratebox/conf/hosts b/piratebox/piratebox/conf/hosts index d363cb1..115a88f 100644 --- a/piratebox/piratebox/conf/hosts +++ b/piratebox/piratebox/conf/hosts @@ -4,6 +4,6 @@ ### commented because this will cause the default redirect. ### left here for documentary the stuff ### dns.msftncsi.com 131.107.255.255 -#------- Satic end ... Gernated stuff now +#------- Static end ... Generated stuff now diff --git a/piratebox/piratebox/conf/lighttpd/lighttpd.conf b/piratebox/piratebox/conf/lighttpd/lighttpd.conf index 06b867a..7ad6ed3 100644 --- a/piratebox/piratebox/conf/lighttpd/lighttpd.conf +++ b/piratebox/piratebox/conf/lighttpd/lighttpd.conf @@ -31,9 +31,27 @@ static-file.exclude-extensions = ( ".php", ".pl", ".fcgi" , ".cgi" , ".py" ) #include_shell "/usr/share/lighttpd/use-ipv6.pl" -dir-listing.encoding = "utf-8" -server.dir-listing = "enable" -dir-listing.hide-dotfiles = "enable" +dir-listing.encoding = "utf-8" +server.dir-listing = "enable" + +# Grabs main css +dir-listing.external-css = "/style.css" + +# Header +# Enables header section +dir-listing.show-header = "enable" +dir-listing.encode-header = "disable" +# Hides HEADER.txt from listing +dir-listing.hide-header-file = "enable" + +# Footer +# Enables footer section +dir-listing.show-readme = "enable" +dir-listing.encode-readme = "disable" +# Hides README.txt from listing +dir-listing.hide-readme-file = "enable" +# Diables default footer text +dir-listing.set-footer = " " # Disabled, maybe fixes reload problem on imageboard #compress.cache-dir = "/var/cache/lighttpd/compress/" diff --git a/piratebox/piratebox/conf/piratebox.conf b/piratebox/piratebox/conf/piratebox.conf index c1d999d..a4ec328 100644 --- a/piratebox/piratebox/conf/piratebox.conf +++ b/piratebox/piratebox/conf/piratebox.conf @@ -142,7 +142,7 @@ GEN_CHATFILE="$WWW_FOLDER/chat_content.html" RESET_CHAT="yes" #Inititiation Chat-Message -CHATMSG="00:00:00  PirateBox:   Chat and share files anonymously!
" +CHATMSG="

00:00:00 PirateBox: Chat and share files anonymously!
" #Activate Global chat # Still experimentall! diff --git a/piratebox/piratebox/init.d/piratebox b/piratebox/piratebox/init.d/piratebox index 2723119..f35aeae 100755 --- a/piratebox/piratebox/init.d/piratebox +++ b/piratebox/piratebox/init.d/piratebox @@ -83,6 +83,9 @@ case "$1" in echo "Empty tmp folder" find $PIRATEBOX/tmp/ -exec rm {} \; + echo "Copy over design files" + $PIRATEBOX/bin/distribute_files.sh $SHARE_FOLDER/Shared + if [ "$DO_IW" = "yes" ] ; then log_daemon_msg " Setting up Interface (iw) " iw $PHY_IF interface add $INTERFACE type managed @@ -142,7 +145,7 @@ case "$1" in DROOPY_USER=" -c $LIGHTTPD_USER:$LIGHTTPD_GROUP " fi log_daemon_msg "Starting droopy..." - start-stop-daemon $DROOPY_USER -m --start --background --pidfile $PIDFILE_DROOPY --exec $PIRATEBOX/bin/droopy -- -H $HOST -d $UPLOADFOLDER -c "" -m "$DROOPY_TXT" $DROOPY_USERDIR $DROOPY_PORT + start-stop-daemon $DROOPY_USER -m --start --background --pidfile $PIDFILE_DROOPY --exec $PIRATEBOX/bin/droopy -- -H $HOST -d "$UPLOADFOLDER" -c "" -m "$DROOPY_TXT" $DROOPY_USERDIR $DROOPY_PORT log_end_msg $? fi diff --git a/piratebox/piratebox/init.d/piratebox_alt b/piratebox/piratebox/init.d/piratebox_alt index 0905ad8..66e2489 100755 --- a/piratebox/piratebox/init.d/piratebox_alt +++ b/piratebox/piratebox/init.d/piratebox_alt @@ -74,6 +74,9 @@ case "$1" in echo "Empty tmp folder" find $PIRATEBOX/tmp/ -exec rm {} \; + echo "Copy over design files" + $PIRATEBOX/bin/distribute_files.sh $SHARE_FOLDER/Shared + if [ "$DO_IW" = "yes" ] ; then @@ -135,7 +138,7 @@ case "$1" in if [ "$DROOPY_USE_USER" = "yes" ] ; then DROOPY_USER=" -c $LIGHTTPD_USER:$LIGHTTPD_GROUP " fi - start-stop-daemon $DROOPY_USER -m -S -b -p $PIDFILE_DROOPY -x $PIRATEBOX/bin/droopy -- -H $HOST -d $UPLOADFOLDER -m "$DROOPY_TXT" -c "" $DROOPY_USERDIR $DROOPY_PORT + start-stop-daemon $DROOPY_USER -m -S -b -p $PIDFILE_DROOPY -x $PIRATEBOX/bin/droopy -- -H $HOST -d "$UPLOADFOLDER" -m "$DROOPY_TXT" -c "" $DROOPY_USERDIR $DROOPY_PORT echo $? fi diff --git a/piratebox/piratebox/python_lib/psogen.py b/piratebox/piratebox/python_lib/psogen.py index 853ecb7..70911f5 100755 --- a/piratebox/piratebox/python_lib/psogen.py +++ b/piratebox/piratebox/python_lib/psogen.py @@ -27,12 +27,7 @@ # content - String containing preformatted data #-------------- def generate_html(content): - css = open("style.css", 'r') - stl = css.read() - css.close() - - htmlstring = "Shout-Out Data" + htmlstring = "Shout-Out Data" htmlstring += content htmlstring += "" return htmlstring @@ -43,10 +38,6 @@ def generate_html(content): # content - String containing preformatted data #-------------- def generate_html_into_file(content): - css = open("style.css", 'r') - stl = css.read() - css.close() - htmlstring = generate_html ( content ) htmlfile = open( htmlfilename , 'w' ) @@ -122,7 +113,11 @@ def prepare_line ( name, indata, color ): datapass = re.sub("<", "<", indata) data = re.sub(">", ">", datapass) curdate = datetime.datetime.now() - content = "" + curdate.strftime("%H:%M:%S") + "  " + name + ":   " + data + "
\n" + # Trying to make it look like this: + #
+ # 00:00:00 Nickname: Lorem ipsum dolor sit amet + #
+ content = "
" + curdate.strftime("%H:%M:%S") + " " + name + ": " + data + "
\n" return content #-------------- diff --git a/piratebox/piratebox/src/HEADER.txt b/piratebox/piratebox/src/HEADER.txt new file mode 100644 index 0000000..a82fc2b --- /dev/null +++ b/piratebox/piratebox/src/HEADER.txt @@ -0,0 +1,28 @@ + + PirateBox - Share Freely! + + + + + +
+
diff --git a/piratebox/piratebox/src/README.txt b/piratebox/piratebox/src/README.txt new file mode 100644 index 0000000..3bf6304 --- /dev/null +++ b/piratebox/piratebox/src/README.txt @@ -0,0 +1,12 @@ + +
+
+
+
+

Back to top

+

About PirateBox

+

Inspired by pirate radio and the free culture movement, PirateBox is a self-contained mobile collaboration and file sharing device. PirateBox utilizes Free, Libre and Open Source software (FLOSS) to create mobile wireless file sharing networks where users can anonymously share images, video, audio, documents, and other digital content.

+

PirateBox is designed to be safe and secure. No logins are required and no user data is logged. The system is purposely not connected to the Internet in order to prevent tracking and preserve user privacy.

+ PirateBox is licensed under GPLv3. +
+
diff --git a/piratebox/piratebox/src/kareha_img_config.pl b/piratebox/piratebox/src/kareha_img_config.pl index 0a47cff..51b7a0f 100644 --- a/piratebox/piratebox/src/kareha_img_config.pl +++ b/piratebox/piratebox/src/kareha_img_config.pl @@ -6,8 +6,8 @@ # # System config - use constant ADMIN_PASS => 'CHANGEME'; # Admin password. For fucks's sake, change this. - use constant SECRET => 'CHANGEME'; # Cryptographic secret. CHANGE THIS to something totally random, and long. +# use constant ADMIN_PASS => 'CHANGEME'; # Admin password. For fucks's sake, change this. +# use constant SECRET => 'CHANGEME'; # Cryptographic secret. CHANGE THIS to something totally random, and long. #use constant CAPPED_TRIPS => ('!!example1'=>' capcode','!!example2'=>' cap'); # Admin tripcode hash, for startng threads when locked down, and similar. Format is '!trip'=>'capcode', where 'capcode' is what is shown instead of the trip. This can contain HTML, but keep it valid XHTML! # Page look diff --git a/piratebox/piratebox/src/linux.example.minidlna.conf b/piratebox/piratebox/src/linux.example.minidlna.conf new file mode 100644 index 0000000..a88bb63 --- /dev/null +++ b/piratebox/piratebox/src/linux.example.minidlna.conf @@ -0,0 +1,17 @@ +port=8200 +# Adjust the interfaces u are using +# network_interface=wlan0 +friendly_name=PirateBox DLNA +db_dir=/opt/piratebox/tmp +log_dir=/opt/piratebox/tmp +inotify=yes +enable_tivo=no +strict_dlna=no +album_art_names=Cover.jpg/cover.jpg/AlbumArtSmall.jpg/albumartsmall.jpg/AlbumArt.jpg/albumart.jpg/Album.jpg/album.jpg/Folder.jpg/folder.jpg/Thumb.jpg/thumb.jpg +presentation_url=http://piratebox.lan +notify_interval=900 +serial=12345678 +model_number=1 +root_container=B +media_dir=/opt/piratebox/share/Shared + diff --git a/piratebox/piratebox/src/openwrt.example.minidlna b/piratebox/piratebox/src/openwrt.example.minidlna new file mode 100644 index 0000000..d8f25a4 --- /dev/null +++ b/piratebox/piratebox/src/openwrt.example.minidlna @@ -0,0 +1,17 @@ +config minidlna config + option 'enabled' '1' + option port '8200' + option interface 'br-lan' + option friendly_name 'PirateBox DLNA' + option db_dir '/var/run/minidlna' + option log_dir '/var/log' + option inotify '1' + option enable_tivo '0' + option strict_dlna '0' + option presentation_url 'http://piratebox.lan' + option notify_interval '900' + option serial '12345678' + option model_number '1' + option root_container '.' + list media_dir '/mnt/usb/PirateBox/Shared/' + option album_art_names 'Cover.jpg/cover.jpg/AlbumArtSmall.jpg/albumartsmall.jpg/AlbumArt.jpg/albumart.jpg/Album.jpg/album.jpg/Folder.jpg/folder.jpg/Thumb.jpg/thumb.jpg' diff --git a/piratebox/piratebox/www/chat.html b/piratebox/piratebox/www/chat.html deleted file mode 100755 index 2fdd76b..0000000 --- a/piratebox/piratebox/www/chat.html +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - - - -
-
- -

- - -
-Name:   Message:   -
-Color: Default | -Blue -| Green -| Orange -| Red

-
-
- - diff --git a/piratebox/piratebox/www/forum.html b/piratebox/piratebox/www/forum.html deleted file mode 100755 index c442596..0000000 --- a/piratebox/piratebox/www/forum.html +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - diff --git a/piratebox/piratebox/www/index.html b/piratebox/piratebox/www/index.html old mode 100755 new mode 100644 index 2374899..61e8365 --- a/piratebox/piratebox/www/index.html +++ b/piratebox/piratebox/www/index.html @@ -1,147 +1,85 @@ + - - - PirateBox: Send a file - - - - - - - - - + + PirateBox - Share Freely! + + + -
- -
-
-1. Learn more about the project here.

-2. Click button below to begin sharing.

-3. Browse and download files here.
- - -
- - - -
- -
-
-Name:   Message:   -
Color: Default | -Blue -| Green -| Orange -| Red

-
-
- -
- - -
- - -
-
- + + +
+
+
+

Welcome

+

Now, first of all, there is nothing illegal or scary going on here. This is a social place where you can chat and share files with people around you, anonymously! This is an off-line network, specially designed and developed for file-sharing and chat services. Staying off the grid is a precaution to maintain your full anonymity. Please have fun, chat with people, and feel free to share any files you may like.

+ +
+ + +
+
+

Chat

+
+
+
+ + + +
+
+

Text Color:

+ + + + + +
+
+
+
+
+
+ +
+
+

Back to top

+

About PirateBox

+

Inspired by pirate radio and the free culture movement, PirateBox is a self-contained mobile collaboration and file sharing device. PirateBox utilizes Free, Libre and Open Source software (FLOSS) to create mobile wireless file sharing networks where users can anonymously share images, video, audio, documents, and other digital content.

+

PirateBox is designed to be safe and secure. No logins are required and no user data is logged. The system is purposely not connected to the Internet in order to prevent tracking and preserve user privacy.

+ PirateBox is licensed under GPLv3. +
+
+ + + diff --git a/piratebox/piratebox/www/jquery.min.js b/piratebox/piratebox/www/jquery.min.js old mode 100644 new mode 100755 diff --git a/piratebox/piratebox/www/menu.png b/piratebox/piratebox/www/menu.png new file mode 100644 index 0000000000000000000000000000000000000000..63396253889f7f86d7e0272ee17395e19a567d22 GIT binary patch literal 2992 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 N002ovPDHLkV1jWucp(4) literal 0 HcmV?d00001 diff --git a/piratebox/piratebox/www/piratebox-logo.png b/piratebox/piratebox/www/piratebox-logo.png deleted file mode 100755 index 6ad7cb41e5af41ce1e12a8239ffde82101deadeb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16453 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 0) { + return el; + } else { + $scrollElement.scrollTop(1); + var isScrollable = $scrollElement.scrollTop()> 0; + $scrollElement.scrollTop(0); + if (isScrollable) { + return el; + } + } + } + return []; + } +}); + +function refresh_shoutbox () { + $.get('chat_content.html', function(data) { + $('div#shoutbox').html(data); + }); +} + +function refresh_time_sb () { + // Refresh rate in milli seconds + mytime=setTimeout('display_shoutbox()', 10000); +} + +function post_shoutbox () { + $.post("/cgi-bin/psowrte.py" , $("#sb_form").serialize()) + .success(function() { + refresh_shoutbox(); + }); + $('#shoutbox-input .message').val(''); +} + +function display_shoutbox() { + refresh_shoutbox(); + refresh_time_sb(); +} + +function fnGetDomain(url) { + return url.match(/:\/\/(.[^/]+)/)[1]; +} \ No newline at end of file diff --git a/piratebox/piratebox/www/style.css b/piratebox/piratebox/www/style.css old mode 100755 new mode 100644 index 0b49a2f..cef92ac --- a/piratebox/piratebox/www/style.css +++ b/piratebox/piratebox/www/style.css @@ -1,8 +1,354 @@ -date { font-size: 10pt; color: #666666; font-family:Tahoma } -name { font-weight: bold; font-family:Tahoma } -data { font-family: Tahoma } -data.def { color: #000000 } -data.blue { color: #0000FF } -data.green { color: #008000 } -data.orange { color: #FF8040 } -data.red { color: #FF0000 } \ No newline at end of file +* { + overflow: auto; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + margin: 0; + padding: 0; +} + +html, body, div, object, iframe, fieldset { + border: 0; +} + +ol, ul { + list-style: none; +} + +table { + border-spacing: 0; + border-collapse: collapse; +} + +header, footer, footer, nav, section, article, hgroup, figure { + display: block; +} + +legend { + display: none; +} + +body { + color: #1b1d1e; + font-family: sans-serif; + font-size: 100%; +} + +h1 { + font-size: 1em; + font-weight: bold; + line-height: auto; + margin: 0; +} + +h2 { + font-size: 1.3em; + font-weight: bold; + line-height: auto; + margin: 0 0 0.25em; +} + +h3 { + font-size: 1em; + font-weight: bold; + line-height: auto; + margin: 0 0 0.25em; +} + +p { + font-size: 1em; + font-weight: normal; + line-height: 1.5em; + margin: 0 0 1em; +} + +a { + color: #ad000b; + text-decoration: none; +} + +a:hover { + text-decoration: underline; +} + +.current { + color: white; +} + +#top-nav a { + display: block; + font-size: 1.5em; + font-weight: normal; + line-height: 1.5em; + margin: 0; +} + +input { + font-size: .75em; +} + +label { + color: white; + font-size: .75em; +} + +footer { + color: #e7e9ea; +} + +.message date { + font-size: .625em; + color: #979ea1; +} +.message name { + font-size: .75em; + font-weight: bold; +} +.message data { + font-size: .75em; +} + +.red { + color: red; +} + +.green { + color: green; +} + +.blue { + color: blue; +} + +.orange { + color: #ff8040; +} + +body { + background: #e7e9ea; +} + +header, footer { + background: #1b1d1e; +} +header img, footer img { + vertical-align: bottom; +} + +#logo { + float: left; + overflow: hidden; +} + +#menu-icon { + float: right; + width: 36px; + -webkit-transition: all 0.5s ease-in-out; + -moz-transition: all 0.5s ease-in-out; + -o-transition: all 0.5s ease-in-out; + transition: all 0.5s ease-in-out; +} + +.rotate { + -webkit-transform: rotate(-90deg); + -moz-transform: rotate(-90deg); + -ms-transform: rotate(-90deg); + -o-transform: rotate(-90deg); + transform: rotate(-90deg); + -webkit-transition: all 0.5s ease-in-out; + -moz-transition: all 0.5s ease-in-out; + -o-transition: all 0.5s ease-in-out; + transition: all 0.5s ease-in-out; +} + +#top-nav { + clear: both; + display: none; + padding: 1em 0 0 0; +} + +#thanks { + float: right; +} + +#upload iframe { + border: 1px solid #979ea1; + border-radius: 3px; + margin: 0 0 1em; +} + +#shoutbox { + height: 350px; + overflow: auto; + width: 100%; + border: 1px solid #979ea1; + border-radius: 3px; + margin: 0 0 1em; + padding: 0.5em; +} +#shoutbox .message { + margin: 0 0 .25em 0; +} + +#shoutbox-input { + margin: 0 0 1em 0; +} +#shoutbox-input .nickname, +#shoutbox-input .message, +#shoutbox-input .button { + width: 100%; +} + +#shoutbox-options label { + float: left; + overflow: hidden; + border-radius: 3px; + margin: 0 0.5em 0.5em 0; + padding: 0.5em 1em; +} +#shoutbox-options label input { + margin: 0 .5em 0 0; +} +#shoutbox-options .bg-black { + background: #1b1d1e; +} +#shoutbox-options .bg-blue { + background: blue; +} +#shoutbox-options .bg-green { + background: green; +} +#shoutbox-options .bg-orange { + background: #ff8040; +} +#shoutbox-options .bg-red { + background: red; +} + +input { + height: 3em; + border: 1px solid #979ea1; + border-radius: 3px; + margin: 0 0 1em; + padding: 0 0.5em; +} + +input[type=radio] { + height: 1.3em; + margin: 0 .5em 0 0; +} + +.button { + background: #979ea1; + border: 0; + color: white; + margin: 0; +} + +.button:active { + background: #7c8589; + color: #cccccc; + -webkit-box-shadow: #4b5154 0px -3px 0px inset; + -moz-box-shadow: #4b5154 0px -3px 0px inset; + box-shadow: #4b5154 0px -3px 0px inset; +} + +.card { + background: white; + border-radius: 3px; + -webkit-box-shadow: #979ea1 0px 3px 0px; + -moz-box-shadow: #979ea1 0px 3px 0px; + box-shadow: #979ea1 0px 3px 0px; + margin: 0 0 1em; + padding: 1em; +} + +.container { + height: 100%; + padding: 1em; + width: 100%; +} + +.list table { + width: 100%; +} +.list table thead { + text-align: left; +} +.list table tbody tr { + height: 2em; + vertical-align: middle; +} +.list table tbody tr:hover { + background: #e7e9ea; +} +.list table .m, .list table .s, .list table .t { + display: none; +} + +@media screen and (min-width: 801px) { + #logo { + margin: 0 2em 0 0; + } + + #menu-icon { + display: none; + } + + #top-nav { + clear: none; + display: table-cell; + padding: 0; + vertical-align: middle; + } + #top-nav ul li { + float: left; + } + #top-nav ul li a { + margin: 0 1em 0 0; + padding: 0; + } + + #sidebar { + float: right; + width: 40%; + } + + #main { + float: left; + padding: 0 1em 0 0; + width: 60%; + } + + #shoutbox-input .nickname { + float: left; + margin: 0 1em 0 0; + width: 20%; + } + #shoutbox-input .message { + float: left; + margin: 0 1em 0 0; + width: 60%; + } + #shoutbox-input .button { + float: right; + margin: 0; + width: 15%; + } + + .to-top { + display: none; + } + + .container { + margin: 0 auto; + max-width: 1280px; + width: 90%; + } + + .list table .m, + .list table .s, + .list table .t { + display: table-cell; + } +} From 6fc00b4d7de2a631a5e5718b40d2abcf9fa7af08 Mon Sep 17 00:00:00 2001 From: Matthias Strubel Date: Fri, 29 Aug 2014 18:29:04 +0200 Subject: [PATCH 32/90] Remove not configurable functionality out of source --- .../piratebox/bin/install_piratebox.sh | 2 -- .../piratebox/conf/lighttpd/lighttpd.conf | 19 +------------------ .../piratebox/piratebox/init.d/piratebox | 3 --- .../piratebox/piratebox/init.d/piratebox_alt | 3 --- 4 files changed, 1 insertion(+), 26 deletions(-) diff --git a/piratebox_origin/piratebox/piratebox/bin/install_piratebox.sh b/piratebox_origin/piratebox/piratebox/bin/install_piratebox.sh index 62fd102..3a4c8f0 100755 --- a/piratebox_origin/piratebox/piratebox/bin/install_piratebox.sh +++ b/piratebox_origin/piratebox/piratebox/bin/install_piratebox.sh @@ -60,8 +60,6 @@ if [ $2 = 'part2' ] ; then #Copy Forban-Link spacer cp $PIRATEBOX_FOLDER/src/no_link.html $PIRATEBOX_FOLDER/www/forban_link.html - #Distribute the Directory Listing files - $PIRATEBOX_FOLDER/bin/distribute_files.sh $SHARE_FOLDER/Shared true #Set permissions chown $LIGHTTPD_USER:$LIGHTTPD_GROUP $PIRATEBOX_FOLDER/share -R chmod u+rw $PIRATEBOX_FOLDER/share diff --git a/piratebox_origin/piratebox/piratebox/conf/lighttpd/lighttpd.conf b/piratebox_origin/piratebox/piratebox/conf/lighttpd/lighttpd.conf index a6b643d..8852c4a 100644 --- a/piratebox_origin/piratebox/piratebox/conf/lighttpd/lighttpd.conf +++ b/piratebox_origin/piratebox/piratebox/conf/lighttpd/lighttpd.conf @@ -35,25 +35,8 @@ $SERVER["socket"] == "[::]:80" { } dir-listing.encoding = "utf-8" server.dir-listing = "enable" +dir-listing.hide-dotfiles = "enable" -# Grabs main css -dir-listing.external-css = "/style.css" - -# Header -# Enables header section -dir-listing.show-header = "enable" -dir-listing.encode-header = "disable" -# Hides HEADER.txt from listing -dir-listing.hide-header-file = "enable" - -# Footer -# Enables footer section -dir-listing.show-readme = "enable" -dir-listing.encode-readme = "disable" -# Hides README.txt from listing -dir-listing.hide-readme-file = "enable" -# Diables default footer text -dir-listing.set-footer = " " # Disabled, maybe fixes reload problem on imageboard #compress.cache-dir = "/var/cache/lighttpd/compress/" diff --git a/piratebox_origin/piratebox/piratebox/init.d/piratebox b/piratebox_origin/piratebox/piratebox/init.d/piratebox index fc64615..8c46839 100755 --- a/piratebox_origin/piratebox/piratebox/init.d/piratebox +++ b/piratebox_origin/piratebox/piratebox/init.d/piratebox @@ -86,9 +86,6 @@ case "$1" in echo "Empty tmp folder" find $PIRATEBOX/tmp/ -exec rm {} \; - echo "Copy over design files" - $PIRATEBOX/bin/distribute_files.sh $SHARE_FOLDER/Shared - if [ "$DO_IW" = "yes" ] ; then log_daemon_msg " Setting up Interface (iw) " iw $PHY_IF interface add $INTERFACE type managed diff --git a/piratebox_origin/piratebox/piratebox/init.d/piratebox_alt b/piratebox_origin/piratebox/piratebox/init.d/piratebox_alt index 70ac021..82b091d 100755 --- a/piratebox_origin/piratebox/piratebox/init.d/piratebox_alt +++ b/piratebox_origin/piratebox/piratebox/init.d/piratebox_alt @@ -78,9 +78,6 @@ case "$1" in echo "Empty tmp folder" find $PIRATEBOX/tmp/ -exec rm {} \; - echo "Copy over design files" - $PIRATEBOX/bin/distribute_files.sh $SHARE_FOLDER/Shared - if [ "$DO_IW" = "yes" ] ; then From c0d1afd24a2a1d93dd0483cb17004718b8ea5261 Mon Sep 17 00:00:00 2001 From: goofy-bz Date: Fri, 29 Aug 2014 18:55:16 +0200 Subject: [PATCH 33/90] typofix and typographic apostrophe added --- .../www_content/locales/data.fr.properties | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/LibraryBox-landingpage/www_content/locales/data.fr.properties b/LibraryBox-landingpage/www_content/locales/data.fr.properties index d2ab9bf..61512cc 100644 --- a/LibraryBox-landingpage/www_content/locales/data.fr.properties +++ b/LibraryBox-landingpage/www_content/locales/data.fr.properties @@ -1,7 +1,7 @@ # French translation # vim: ft=jproperties -commonNavbarToggle = Basculer la navigatio +commonNavbarToggle = Basculer la navigation commonNavbarHome=Accueil commonNavbarText = Texte commonNavbarAudio = Audio @@ -12,12 +12,12 @@ commonNavbarStats = Statistiques commonNavbarAbout = À propos commonFooterBackToTop = Vers le haut commonFooterLicenceMain = Le projet LibraryBox est publié sous licence GPLv2, rendez vous sur https://www.gnu.org/licenses/gpl-2.0.html pour en obtenir les détails. -commonFooterLicenceOther = Sauf mention contraire, les contenus de LibraryBox sont publiés sous licence Creative Commons BY-NC. Pour plus d'information, rendez vous sur http://librarybox.us -commonFilestopNothingDownloaded = Rien n'a encore été téléchargé. Pourquoi ne pas être le premier ? +commonFooterLicenceOther = Sauf mention contraire, les contenus de LibraryBox sont publiés sous licence Creative Commons BY-NC. Pour plus d’information, rendez vous sur http://librarybox.us +commonFilestopNothingDownloaded = Rien n’a encore été téléchargé. Pourquoi ne pas être le premier ? indexContentWelcome = Bienvenue sur LibraryBox v2.0 -indexContentWelcomeDescription = Naviguez et téléchargez n'importe quel fichier, ou participez à la discussion avec d'autres utilisateurs ci-dessous -indexContentWelcomePrivate = LibraryBox respecte votre vie privée. Aucune information sur vous n'est enregistrée. +indexContentWelcomeDescription = Naviguez et téléchargez n’importe quel fichier, ou participez à la discussion avec d’autres utilisateurs ci-dessous +indexContentWelcomePrivate = LibraryBox respecte votre vie privée. Aucune information sur vous n’est enregistrée. indexFilestopTop = Top Téléchargements indexChatChat = Discussion indexChatSend = Envoyer @@ -31,17 +31,17 @@ indexShoutboxOrange = Orange indexShoutboxRed = Rouge aboutWelcomeAboutLibrarybox = À propos de LibraryBox -aboutWelcomeDescription = LibraryBox est conçue pour permettre la distribution d'information numérique là où il y a peu voire pas du tout d'accès à Internet. Cela est rendu possible grâce à l'utilisation de logiciels libres et de matériel très bon marché, permettant ainsi la distribution de ces informations à un coût très inférieur à d'autres solutions. Si vous souhaitez en savoir plus à propos du projet LibraryBox, rendez vous sur http://librarybox.us lorsque vous serez de retour sur Internet. +aboutWelcomeDescription = LibraryBox est conçue pour permettre la distribution d’information numérique là où il y a peu voire pas du tout d’accès à Internet. Cela est rendu possible grâce à l’utilisation de logiciels libres et de matériel très bon marché, permettant ainsi la distribution de ces informations à un coût très inférieur à d’autres solutions. Si vous souhaitez en savoir plus à propos du projet LibraryBox, rendez vous sur http://librarybox.us lorsque vous serez de retour sur Internet. aboutFilesTopThanks = Remerciements -aboutFilesTopKickstarter = LibraryBox v2.0 n'aurait pas été possible sans le support des contributeurs KickStarters, tous sont cités ci-dessous. Merci à ma femme et à ma fille d'avoir supporter de si longues heures. Remerciements spéciaux à Matt Neer, Ross Singer, Bo Baker et Andromeda Yelton d'avoir prêté main forte dès le début du projet, et à John Blyberg de nous avoir rejoint à la dernière minute. Tous les meilleurs morceaux de code de la version 2.0 sont dûs aux incroyables talents de développeur de Matthias Strubel et au travail graphique de David Brooks. -aboutFilesTopSafety = LibraryBox est conçue pour être sûre et sécurisée. Aucun compte utilisateur n'est requis et aucune donnée utilisateur n'est sauvegardée. Le système n'est volontairement pas connecté à Internet afin de prévenir toute tentative de suivi et de préserver la vie privée de ses utilisateurs. +aboutFilesTopKickstarter = LibraryBox v2.0 n’aurait pas été possible sans le support des contributeurs KickStarters, tous sont cités ci-dessous. Merci à ma femme et à ma fille d’avoir supporté de si longues heures. Remerciements spéciaux à Matt Neer, Ross Singer, Bo Baker et Andromeda Yelton d’avoir prêté main-forte dès le début du projet, et à John Blyberg de nous avoir rejoints à la dernière minute. Tous les meilleurs morceaux de code de la version 2.0 sont dûs aux incroyables talents de développeur de Matthias Strubel et au travail graphique de David Brooks. +aboutFilesTopSafety = LibraryBox est conçue pour être sûre et sécurisée. Aucun compte utilisateur n’est requis et aucune donnée utilisateur n’est sauvegardée. Le système n’est volontairement pas connecté à Internet afin de prévenir toute tentative de suivi et de préserver la vie privée de ses utilisateurs. aboutFilesTopView = Voir les statistiques de téléchargement et de visite aboutKickstarterBackers = Contributeurs KickStarters statsWelcomeDownloads = Téléchargements statsWelcomeDescription = Vous trouverez ci-dessous les statistiques et le compteur visiteur de cette LibraryBox. statsFilesTopUserCounts = Compteur visiteur -statsFilesTopNoVisitor = Pas encore de visiteur. Il est probable que vous n'ayez pas réglé la date et l'heure de cette LibraryBox. +statsFilesTopNoVisitor = Pas encore de visiteur. Il est probable que vous n’avez pas réglé la date et l’heure de cette LibraryBox. statsFilesTopDownloads = Téléchargements de contenus statsVisitors = Visiteurs : statsDownloads = Téléchargements : From 1c95dbfb9a8c52c5dd2bd7ab5f63f3ff0e062e74 Mon Sep 17 00:00:00 2001 From: Matthias Strubel Date: Mon, 1 Sep 2014 08:25:31 +0200 Subject: [PATCH 34/90] Fixing src image for OpenWRT - opt/piratebox image file that changed on PirateBox --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 93e9a2f..d8a54ea 100644 --- a/Makefile +++ b/Makefile @@ -96,7 +96,7 @@ apply_custom_config: $(call ReconfigureConfig,$(IMAGE_BUILD_SRC)/conf) $(MOD_IMAGE): - gunzip -dc $(SRC_FOLDER)/image_stuff/OpenWRT.img.gz > $@ + gunzip -dc $(SRC_FOLDER)/image_stuff/OpenWRT_ext4_50MB.img.gz > $@ $(MOD_IMAGE_TGZ): $(IMAGE_BUILD_TGT) $(MOD_IMAGE) $(MOD_VERSION_TAG) From cab499c0ea5aa95471cbbabb94941f99e8c48158 Mon Sep 17 00:00:00 2001 From: Matthias Strubel Date: Tue, 2 Sep 2014 21:42:19 +0200 Subject: [PATCH 35/90] Create OpenWRT image with new version number.. --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index d8a54ea..aed208a 100644 --- a/Makefile +++ b/Makefile @@ -24,7 +24,7 @@ MOD_VERSION_TAG=$(BUILD_SCRIPT_LOCATION)/version_tag_mod # Filename requested by MOD_IMAGE=$(IMAGE_BUILD)/OpenWRT_image -MOD_IMAGE_TGZ=$(NAME)_2.0_img.tar.gz +MOD_IMAGE_TGZ=$(NAME)_2.1_img.tar.gz #------------ From 3029a6922e9790eb185821cd1d5d7be98a4acb6a Mon Sep 17 00:00:00 2001 From: Jason Griffey Date: Tue, 2 Sep 2014 21:53:30 -0500 Subject: [PATCH 36/90] Added l10n support to directory listing, bug fixes Fixed bug in PHP, added l10n support, fixed CSS errors --- .../www_content/css/dir_list.css | 66 ++++++++----------- .../www_content/locales/data.en.properties | 12 +++- .../www_librarybox/dir-generator.php | 17 +++-- 3 files changed, 47 insertions(+), 48 deletions(-) diff --git a/LibraryBox-landingpage/www_content/css/dir_list.css b/LibraryBox-landingpage/www_content/css/dir_list.css index 8fe582b..dc5f40f 100755 --- a/LibraryBox-landingpage/www_content/css/dir_list.css +++ b/LibraryBox-landingpage/www_content/css/dir_list.css @@ -1,4 +1,3 @@ - @font-face { font-family: 'GearedSlab'; src: url("/content/fonts/gearedslab-webfont.eot"); @@ -12,8 +11,6 @@ src: url("/content/fonts/OpenSans-Regular.ttf"); } - - * { margin:0; padding:0; @@ -52,16 +49,16 @@ a:visited { color: #48468F; } -h1 { - padding: 0px 0px 0px 10px; - margin-bottom: 12px; - font-family:'GearedSlab', sans-serif; - } -h2 { - padding: 0px 0px 0px 10px; - margin-bottom: 12px; - font-family:'GearedSlab', sans-serif; - } +h1 { + padding: 0px 0px 0px 10px; + margin-bottom: 12px; + font-family:'GearedSlab', sans-serif; + } +h2 { + padding: 0px 0px 0px 10px; + margin-bottom: 12px; + font-family:'GearedSlab', sans-serif; + } /*------------------------------------*\ Wrapper @@ -91,7 +88,6 @@ table { line-height: 1.25em; margin-left: 12px; padding:0px; - } th, td { font-family:'Open Sans', sans-serif;} @@ -116,8 +112,6 @@ div.script_title { font-size:8pt; color:#999; } - - tr { outline:0; border:0; @@ -128,20 +122,21 @@ tr:hover td { th { text-align:left; // font-size:.75em; - padding-right:20px; + // padding-right:20px; font-weight: bold; - padding-bottom: 3px; + padding-bottom: 5px; } /* 2nd Column: Filename */ th + th { - // width:65%; + text-align:left; } /* 3rd Column: Last Modified */ th + th + th { + text-align:left; } /* 4th Column: Size */ th + th + th + th { - width:5%; + text-align:center; } tr td:first-of-type { padding-left:10px; @@ -187,38 +182,31 @@ tr.parent a { \*------------------------------------*/ .footer { text-align:center; - font-size:.75em; } - /*------------------------------------*\ Column style \*------------------------------------*/ + .n { - text-align:center; + text-align:left; white-space: -moz-pre-wrap; /* Mozilla */ -white-space: -hp-pre-wrap; /* HP printers */ -white-space: -o-pre-wrap; /* Opera 7 */ -white-space: -pre-wrap; /* Opera 4-6 */ -white-space: pre-wrap; /* CSS 2.1 */ -white-space: pre-line; /* CSS 3 (and 2.1 as well, actually) */ -word-wrap: break-word; /* IE */ -word-break: break-all; - -} + white-space: -hp-pre-wrap; /* HP printers */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: pre-wrap; /* CSS 2.1 */ + white-space: pre-line; /* CSS 3 (and 2.1 as well, actually) */ + word-wrap: break-word; /* IE */ + word-break: break-all; + } .s { - text-align:center; - font-size:.75em; + text-align:center; } .t { text-align:center; - font-size:.75em; } - + .c { text-align:center; - font-size:.75em; } - - diff --git a/LibraryBox-landingpage/www_content/locales/data.en.properties b/LibraryBox-landingpage/www_content/locales/data.en.properties index 731f19e..3933d3d 100644 --- a/LibraryBox-landingpage/www_content/locales/data.en.properties +++ b/LibraryBox-landingpage/www_content/locales/data.en.properties @@ -1,4 +1,4 @@ -# French translation +# English translation # vim: ft=jproperties commonNavbarToggle = Toggle navigation @@ -15,7 +15,7 @@ commonFooterLicenceMain = The LibraryBox Project is Software Licensed under GPLv commonFooterLicenceOther = All LibraryBox content not otherwise licensed is released under a Creative Commons NC-BY license. For more information, visit http://librarybox.us commonFilestopNothingDownloaded = Nothing's been downloaded yet. Why not start this party? -indexContentWelcome = Welcome to LibraryBox v2.0 +indexContentWelcome = Welcome to LibraryBox v2.1 indexContentWelcomeDescription = Browse and download any of the available files, or chat with other users below. indexContentWelcomePrivate = LibraryBox is private; no logs or other identifying data are retained. indexFilestopTop = Top Downloads @@ -45,3 +45,11 @@ statsFilesTopNoVisitor = No visitors yet. This probably means you haven't set th statsFilesTopDownloads = Content Downloads statsVisitors = Visitors: statsDownloads = Downloads: + +filedirIndex = Index of /; +filedirName = Name; +filedirSize = Size; +filedirType = Type; +filedirDownloads = Downloads; +filedirParDir = Parent Directory; + diff --git a/customization/www_librarybox/dir-generator.php b/customization/www_librarybox/dir-generator.php index 8109963..50f0ba5 100644 --- a/customization/www_librarybox/dir-generator.php +++ b/customization/www_librarybox/dir-generator.php @@ -234,6 +234,9 @@ function get_folder_statistics ($my_path, &$folder_statistics) { Index of /'.$vpath.' + + + '; @@ -257,7 +260,7 @@ function get_folder_statistics ($my_path, &$folder_statistics) { } } -print "

Index of /" . $vpath ."

+print "

Index of /" . $vpath ."

"; @@ -350,13 +353,13 @@ function get_folder_statistics ($my_path, &$folder_statistics) { print ""; $sort_methods = array(); -$sort_methods['name'] = "Name"; +$sort_methods['name'] = "
Name
"; //$sort_methods['modtime'] = "Last Modified"; -$sort_methods['size'] = ""; -$sort_methods['file_type'] = ""; +$sort_methods['size'] = ""; +$sort_methods['file_type'] = ""; if ( $display_dl_count ) { - $sort_methods['counter'] = ""; + $sort_methods['counter'] = ""; } foreach($sort_methods as $key=>$item) { @@ -372,7 +375,7 @@ function get_folder_statistics ($my_path, &$folder_statistics) { // Parent directory link if($path != "./") { - print ""; + print ""; //print ""; print ""; print "\n"; @@ -438,7 +441,7 @@ function get_folder_statistics ($my_path, &$folder_statistics) { } } -print "
"LibraryBox v2.1"
+print "
LibraryBox v2.1
"; From bb3e904ae98939d623b47d6bf751670ee8212a69 Mon Sep 17 00:00:00 2001 From: Jason Griffey Date: Thu, 4 Sep 2014 15:37:14 -0500 Subject: [PATCH 37/90] Adding Swahili to languages Adding swahili, fixing english. :-) --- .../www_content/locales/data.en.properties | 12 ++--- .../www_content/locales/data.sw.properties | 54 +++++++++++++++++++ .../www_content/locales/locales.ini | 3 ++ customization/www_librarybox/index.html | 9 +++- 4 files changed, 71 insertions(+), 7 deletions(-) create mode 100644 LibraryBox-landingpage/www_content/locales/data.sw.properties mode change 120000 => 100755 customization/www_librarybox/index.html diff --git a/LibraryBox-landingpage/www_content/locales/data.en.properties b/LibraryBox-landingpage/www_content/locales/data.en.properties index 3933d3d..a563679 100644 --- a/LibraryBox-landingpage/www_content/locales/data.en.properties +++ b/LibraryBox-landingpage/www_content/locales/data.en.properties @@ -46,10 +46,10 @@ statsFilesTopDownloads = Content Downloads statsVisitors = Visitors: statsDownloads = Downloads: -filedirIndex = Index of /; -filedirName = Name; -filedirSize = Size; -filedirType = Type; -filedirDownloads = Downloads; -filedirParDir = Parent Directory; +filedirIndex = Index of / +filedirName = Name +filedirSize = Size +filedirType = Type +filedirDownloads = Downloads +filedirParDir = Parent Directory diff --git a/LibraryBox-landingpage/www_content/locales/data.sw.properties b/LibraryBox-landingpage/www_content/locales/data.sw.properties new file mode 100644 index 0000000..baf83d6 --- /dev/null +++ b/LibraryBox-landingpage/www_content/locales/data.sw.properties @@ -0,0 +1,54 @@ +# Kiswahili translation +# vim: ft=jproperties + +commonNavbarToggle = Badilisha +commonNavbarHome = Nyumbani +commonNavbarText = Text +commonNavbarAudio = Audio +commonNavbarVideo = Video +commonNavbarApps = Vitumizi +commonNavbarAll = Maudhui Yote +commonNavbarStats = Takwimu +commonNavbarAbout = Kuhusu +commonFooterBackToTop = Rudi Juu +commonFooterLicenceMain = LibraryBox Project ni Programu ina ruhusu ya GPLv2, ona kwa https://www.gnu.org/licenses/gpl-2.0.html kupata maelezo. +commonFooterLicenceOther = All LibraryBox content not otherwise licensed is released under a Creative Commons NC-BY license. For more information, visit http://librarybox.us +commonFilestopNothingDownloaded = Nothing's been downloaded yet. Why not start this party? + +indexContentWelcome = Karibu kwa LibraryBox v2.1 +indexContentWelcomeDescription = Browse and download any of the available files, ama ongea na watu hapa. +indexContentWelcomePrivate = LibraryBox haishiki data itayo kutambua. +indexFilestopTop = Top Downloads +indexChatChat = Ongea +indexChatSend = Tuma +indexChatName.placeholder = Jina bandia +indexChatName.value = Bila jina +indexChatMessage.placeholder = Ujumbe... +indexShoutboxDefault = Default +indexShoutboxBlue = Bluu +indexShoutboxGreen = Kijani +indexShoutboxOrange = Rangi ya machungwa +indexShoutboxRed = Nyekundu + +aboutWelcomeAboutLibrarybox = Kuhusu LibraryBox +aboutWelcomeDescription = LibraryBox iliundwa kuwezesha mgwawanyo wa digital information kwa maeneo bila Internet. Inatumia programu open source na hardware ya bei rahisi, kuruhusu mgwawanyo wa digital information kwa bei nafuu. Ukitaka kujifunza zaidi kuhusu LibraryBox Project, elekea http://librarybox.us +aboutFilesTopThanks = Asante +aboutFilesTopKickstarter = LibraryBox v2.0 haingewengezeka bila Kickstarter Backers, majina zao ziko hapa. Asanteni kwa bibi and binti yangu kwa kuni ruhusu kutengeza hi Programu. Shukrani Maalum: Matt Neer, Ross Singer, Bo Baker, na Andromeda Yelton kwa kunisaidia, na John Blyberg kwa kazi yake. Maendeleo yote mpya ya v2.0 ni kwa sababu ya Matthias Strubel na kazi ya UI ni ya David Brooks. +aboutFilesTopSafety = LibraryBox iko salama na ime fungwa kutoka Internet kwa hivyo uwezo was kufuatilia utumiaji haimo +aboutFilesTopView = Angalia Utumiaji +aboutKickstarterBackers = Kickstarter Backers + +statsWelcomeDownloads = LibraryBox Downloads +statsWelcomeDescription = Hapa chini ni hesabu ya utumiaji ya LibraryBox. +statsFilesTopUserCounts = Hesabu ya Utumiaji +statsFilesTopNoVisitor = Bado huna wageni. Labda huja weka tarehe/wakati kwa LibraryBox. +statsFilesTopDownloads = Hesabu ya Utumiaji +statsVisitors = Wageni: +statsDownloads = Downloads: + +filedirIndex = Index of / +filedirName = Jina +filedirSize = Kipimo +filedirType = Aina +filedirDownloads = Downloads +filedirParDir = Rudi Nyuma \ No newline at end of file diff --git a/LibraryBox-landingpage/www_content/locales/locales.ini b/LibraryBox-landingpage/www_content/locales/locales.ini index 94c711c..f687932 100644 --- a/LibraryBox-landingpage/www_content/locales/locales.ini +++ b/LibraryBox-landingpage/www_content/locales/locales.ini @@ -3,3 +3,6 @@ [fr] @import url(data.fr.properties) + +[sw] +@import url(data.sw.properties) \ No newline at end of file diff --git a/customization/www_librarybox/index.html b/customization/www_librarybox/index.html deleted file mode 120000 index b122455..0000000 --- a/customization/www_librarybox/index.html +++ /dev/null @@ -1 +0,0 @@ -redirect.html \ No newline at end of file diff --git a/customization/www_librarybox/index.html b/customization/www_librarybox/index.html new file mode 100755 index 0000000..dd0edfb --- /dev/null +++ b/customization/www_librarybox/index.html @@ -0,0 +1,8 @@ + +Redirect... + + + +Redirect + + From 422e7e320b3491e83765c88d9a33a605728f59b9 Mon Sep 17 00:00:00 2001 From: Matthias Strubel Date: Fri, 5 Sep 2014 14:56:09 +0200 Subject: [PATCH 38/90] reconfigured minidlna configuration for LibraryBox usecase --- customization/src/linux.example.minidlna.conf | 17 +++++++++++++++++ customization/src/openwrt.example.minidlna | 17 +++++++++++++++++ 2 files changed, 34 insertions(+) create mode 100644 customization/src/linux.example.minidlna.conf create mode 100644 customization/src/openwrt.example.minidlna diff --git a/customization/src/linux.example.minidlna.conf b/customization/src/linux.example.minidlna.conf new file mode 100644 index 0000000..9fbde92 --- /dev/null +++ b/customization/src/linux.example.minidlna.conf @@ -0,0 +1,17 @@ +port=8200 +# Adjust the interfaces u are using +# network_interface=wlan0 +friendly_name=LibraryBox DLNA +db_dir=/opt/piratebox/tmp +log_dir=/opt/piratebox/tmp +inotify=yes +enable_tivo=no +strict_dlna=no +album_art_names=Cover.jpg/cover.jpg/AlbumArtSmall.jpg/albumartsmall.jpg/AlbumArt.jpg/albumart.jpg/Album.jpg/album.jpg/Folder.jpg/folder.jpg/Thumb.jpg/thumb.jpg +presentation_url=http://librarybox.lan +notify_interval=900 +serial=12345678 +model_number=1 +root_container=B +media_dir=/opt/piratebox/share/Shared + diff --git a/customization/src/openwrt.example.minidlna b/customization/src/openwrt.example.minidlna new file mode 100644 index 0000000..8df7599 --- /dev/null +++ b/customization/src/openwrt.example.minidlna @@ -0,0 +1,17 @@ +config minidlna config + option 'enabled' '1' + option port '8200' + option interface 'br-lan' + option friendly_name 'LibraryBox DLNA' + option db_dir '/opt/piratebox/tmp/minidlna' + option log_dir '/var/log' + option inotify '1' + option enable_tivo '0' + option strict_dlna '0' + option presentation_url 'http://librarybox.lan' + option notify_interval '900' + option serial '12345678' + option model_number '1' + option root_container '.' + list media_dir '/opt/piratebox/share/Shared/' + option album_art_names 'Cover.jpg/cover.jpg/AlbumArtSmall.jpg/albumartsmall.jpg/AlbumArt.jpg/albumart.jpg/Album.jpg/album.jpg/Folder.jpg/folder.jpg/Thumb.jpg/thumb.jpg' From dc1af2f780a1c063be6b77d727cfa037ef175d6a Mon Sep 17 00:00:00 2001 From: Matthias Strubel Date: Sat, 6 Sep 2014 23:12:47 +0200 Subject: [PATCH 39/90] Correct counter image & Generate redirect.html once during first initialization --- customization/src/redirect.html.schema | 2 +- customization/www_librarybox/redirect.html | 8 -------- .../piratebox/piratebox/bin/install_piratebox.sh | 4 ++++ 3 files changed, 5 insertions(+), 9 deletions(-) delete mode 100755 customization/www_librarybox/redirect.html diff --git a/customization/src/redirect.html.schema b/customization/src/redirect.html.schema index 5c585db..c21d482 100755 --- a/customization/src/redirect.html.schema +++ b/customization/src/redirect.html.schema @@ -3,6 +3,6 @@ -Redirect... +Redirect... diff --git a/customization/www_librarybox/redirect.html b/customization/www_librarybox/redirect.html deleted file mode 100755 index dd0edfb..0000000 --- a/customization/www_librarybox/redirect.html +++ /dev/null @@ -1,8 +0,0 @@ - -Redirect... - - - -Redirect - - diff --git a/piratebox_origin/piratebox/piratebox/bin/install_piratebox.sh b/piratebox_origin/piratebox/piratebox/bin/install_piratebox.sh index 3a4c8f0..5e20b35 100755 --- a/piratebox_origin/piratebox/piratebox/bin/install_piratebox.sh +++ b/piratebox_origin/piratebox/piratebox/bin/install_piratebox.sh @@ -76,6 +76,10 @@ if [ $2 = 'part2' ] ; then [[ ! -L $PIRATEBOX_FOLDER/www/board ]] && ln -s $PIRATEBOX_FOLDER/share/board $PIRATEBOX_FOLDER/www/board [[ ! -L $PIRATEBOX_FOLDER/www/Shared ]] && ln -s $UPLOADFOLDER $PIRATEBOX_FOLDER/www/Shared + + + # Generate Redirect.html once + sed "s|#####HOST#####|$HOST|g" $PIRATEBOX_FOLDER/src/redirect.html.schema > $WWW_FOLDER/redirect.html fi #Install the image-board From 3fb33c7baaa4f0e8385a462bee678d9853da9d9a Mon Sep 17 00:00:00 2001 From: Jason Griffey Date: Sat, 6 Sep 2014 17:59:33 -0500 Subject: [PATCH 40/90] Adding Norwegian to languages Yay! Norwegian! --- .../www_content/locales/data.no.properties | 56 +++++++++++++++++++ .../www_content/locales/locales.ini | 5 +- 2 files changed, 60 insertions(+), 1 deletion(-) create mode 100644 LibraryBox-landingpage/www_content/locales/data.no.properties diff --git a/LibraryBox-landingpage/www_content/locales/data.no.properties b/LibraryBox-landingpage/www_content/locales/data.no.properties new file mode 100644 index 0000000..a444dac --- /dev/null +++ b/LibraryBox-landingpage/www_content/locales/data.no.properties @@ -0,0 +1,56 @@ +# Norwegian translation +# vim: ft=jproperties + +commonNavbarToggle = Skift navigasjon +commonNavbarHome = Hjem +commonNavbarText = Tekst +commonNavbarAudio = Audio +commonNavbarVideo = Video +commonNavbarApps = Apper +commonNavbarAll = Alt Innhold +commonNavbarStats = Statistikk +commonNavbarAbout = Om +commonFooterBackToTop = Tilbake til toppen +commonFooterLicenceMain = LibraryBoxprosjektet er programvare lisensiert under GPLv2, se https://www.gnu.org/licenses/gpl-2.0.html for lisensdetaljer. +commonFooterLicenceOther = Alt LibraryBoxinnhold som ikke er lisensiert på annen måte er publisert under en Creative Commons NC-BY lisens. Mer informasjon på http://librarybox.us +commonFilestopNothingDownloaded = Ingenting had blitt lasted ned ennå. Hvorfor ikke start festen? + +indexContentWelcome = Velkommen til LibraryBox v2.1 +indexContentWelcomeDescription = Kikk på og last ned hvilken som helst av de tilgjengelige filne, eller chatt med andre brukere under. +indexContentWelcomePrivate = LibraryBox er personvernvennlig; ingen logger eller annen identifiserende data blir lagret. +indexFilestopTop = Topp nedlastinger +indexChatChat = Chat +indexChatSend = Send +indexChatName.placeholder = Alias +indexChatName.value = Anonym +indexChatMessage.placeholder = Melding… +indexShoutboxDefault = Default +indexShoutboxBlue = Blå +indexShoutboxGreen = Grønn +indexShoutboxOrange = Oransje +indexShoutboxRed = Rød + +aboutWelcomeAboutLibrarybox = Om LibraryBox +aboutWelcomeDescription = LibraryBox er lager for å gjøre det mulig å sore digital informasjon i områder hvor det er liten eller ingen internetforbindelse. Dette gjør den gjennom bruk av fri og åpen programvare go svært billing maskinvare. Dette gjør at set er mulig å sore digital informasjon til en langt lavers pris enn andre alternativ. Om du vil vote mer om LibraryBox prosjektet kan du gå til: http://librarybox.us når du er tilbake på internett. +aboutFilesTopThanks = Takk +aboutFilesTopKickstarter = LibraryBox v2.0 hadde ikke vært mulig uten støtte fra Kickstarter støttespillere. Alle er på listen under. Takk til min kone og datter for all støtte og for at dere holdt ut lange kvelder. Spesiell takk til: Matt Neer, Ross Singer, Bo Baker, og Andromeda Yelton for en hjelpende hånd tidlig i prosjektets liv og +til John Blyberg for å komme susende inn i siste øyeblikk. Utviklingen av alle de gode delene av v2.0 er takket være den utrolig talentfulle kodingen til Matthias Strubel og brukergrensesnittarbeidet til David Brooks. +aboutFilesTopSafety = LibraryBox er utviklet for å være trygg og sikker. Ingen pålogging er krevet og ingen brukerdata blir lagret. Systemet er med vilje ikke knyttet til internett for å forindre sporing og for å bevare ditt personvern. +aboutFilesTopView = Se nedlastings- og besøksstatistikk +aboutKickstarterBackers = Kickstarter støttespillere + +statsWelcomeDownloads = LibraryBox Nedlastinger +statsWelcomeDescription = Under er nedlastingsstatistikk og brukertelling for denne LibraryBoxen +statsFilesTopUserCounts = Brukertelling +statsFilesTopNoVisitor = Ingen besøkende ennå. Det betyr sannsynligvis at du ikke har satt opp tid/dato på LibraryBoxen. +statsFilesTopDownloads = Innhold nedlastinger +statsVisitors = Besøkende: +statsDownloads = Nedlastinger: + +filedirIndex = Indeksert på / +filedirName = Navn +filedirSize = Størrelse +filedirType = Type +filedirDownloads = Nedlasting +filedirParDir = Overliggende mappe + diff --git a/LibraryBox-landingpage/www_content/locales/locales.ini b/LibraryBox-landingpage/www_content/locales/locales.ini index f687932..36fd9bb 100644 --- a/LibraryBox-landingpage/www_content/locales/locales.ini +++ b/LibraryBox-landingpage/www_content/locales/locales.ini @@ -5,4 +5,7 @@ @import url(data.fr.properties) [sw] -@import url(data.sw.properties) \ No newline at end of file +@import url(data.sw.properties + +[no] +@import url(data.no.properties) \ No newline at end of file From 6feaef2391eabb5ecfd6185c0655c26ecb05e6cc Mon Sep 17 00:00:00 2001 From: Matthias Strubel Date: Mon, 8 Sep 2014 07:25:53 +0200 Subject: [PATCH 41/90] Generate link between index.html and redirect.html once during init Closed #19 --- customization/bin/hooks/hook_pre_init.sh | 5 +++++ customization/www_librarybox/index.html | 8 -------- 2 files changed, 5 insertions(+), 8 deletions(-) delete mode 100755 customization/www_librarybox/index.html diff --git a/customization/bin/hooks/hook_pre_init.sh b/customization/bin/hooks/hook_pre_init.sh index ea18b31..242b112 100755 --- a/customization/bin/hooks/hook_pre_init.sh +++ b/customization/bin/hooks/hook_pre_init.sh @@ -30,5 +30,10 @@ cp -rv $PIRATEBOX_FOLDER/www_old/cgi-bin $WWW_FOLDER/cgi-bin # Link to the USB-Stick ln -s $WWW_CONTENT $WWW_FOLDER/content +# link index.html with redirect.html +if [ ! -e $WWW_CONTENT/index.html ] ; then + ln -s $WWW_CONTENT/redirect.html $WWW_CONTENT/index.html +fi + $PIRATEBOX_FOLDER/bin/ftp_enable.sh generate diff --git a/customization/www_librarybox/index.html b/customization/www_librarybox/index.html deleted file mode 100755 index dd0edfb..0000000 --- a/customization/www_librarybox/index.html +++ /dev/null @@ -1,8 +0,0 @@ - -Redirect... - - - -Redirect - - From c1314235c77e63d9b1e542f8b19f5ec8808a31ac Mon Sep 17 00:00:00 2001 From: Jason Griffey Date: Mon, 8 Sep 2014 11:10:16 -0500 Subject: [PATCH 42/90] Deleting index.html and adding korean and german Killing the index.html hardlink, and adding Korean and German to languages. --- .../www_content/locales/data.de.properties | 55 +++++++++++++++++++ .../www_content/locales/data.kr.properties | 55 +++++++++++++++++++ .../www_content/locales/locales.ini | 8 ++- customization/www_librarybox/index.html | 8 --- customization/www_librarybox/redirect.html | 2 +- 5 files changed, 118 insertions(+), 10 deletions(-) create mode 100644 LibraryBox-landingpage/www_content/locales/data.de.properties create mode 100644 LibraryBox-landingpage/www_content/locales/data.kr.properties delete mode 100755 customization/www_librarybox/index.html diff --git a/LibraryBox-landingpage/www_content/locales/data.de.properties b/LibraryBox-landingpage/www_content/locales/data.de.properties new file mode 100644 index 0000000..cdb79ef --- /dev/null +++ b/LibraryBox-landingpage/www_content/locales/data.de.properties @@ -0,0 +1,55 @@ +# German translation +# vim: ft=jproperties + +commonNavbarToggle = Navigation Wechseln +commonNavbarHome = Home +commonNavbarText = Text +commonNavbarAudio = Audio +commonNavbarVideo = Video +commonNavbarApps = Anwendungen +commonNavbarAll = Alle Inhalte +commonNavbarStats = Statistiken +commonNavbarAbout = Über LibraryBox +commonFooterBackToTop = Zurück nach Oben +commonFooterLicenceMain = Das LibraryBox Projekt Programm ist lizensiert unter GPLv2, siehe https://www.gnu.org/licenses/gpl-2.0.html für Lizenz Details. +commonFooterLicenceOther = Alle LibraryBox Inhalte, die nicht anderweitig lizensiert sind, sind freigegeben unter der Creative Commons NC-BY Lizenz. Weitere Informationen sind unter http://librarybox.us zu finden. +commonFilestopNothingDownloaded = Es wurde noch nichts heruntergeladen. Fang doch die Party an! + +indexContentWelcome = Willkommen zur LibraryBox v2.1 +indexContentWelcomeDescription = Durchstöbere und lade jegliche Dateien herunter oder plaudere mit anderen Benutzern, die unten gelistet sind. +indexContentWelcomePrivate = LibraryBox ist privat; keine Protokolle oder andere identifizierende Daten werden gespeichert. +indexFilestopTop = Top-Downloads +indexChatChat = Chat +indexChatSend = Senden +indexChatName.placeholder = Alias +indexChatName.value = Anonym +indexChatMessage.placeholder = Nachricht... +indexShoutboxDefault = Default +indexShoutboxBlue = Blau +indexShoutboxGreen = Grün +indexShoutboxOrange = Orange +indexShoutboxRed = Rot + +aboutWelcomeAboutLibrarybox = Über LibraryBox +aboutWelcomeDescription = LibraryBox wurde entwickelt, um die Verbreitung digitaler Informationen in Gegenden ohne oder mit geringer Internet Verbindung zu gewährleisten, selbst ohne Netzzugang. Dies wird durch die Verwendung von Open-Source Programmen und günstiger Hardware erreicht, die es ermöglicht digitale Informationen jeglicher Art zu verteilen, zu einem Kostenpunkt der weit unter anderen Lösungen liegt. Weitere Informationen über das LibraryBox Projekt sind unter http://librarybox.us zu finden wenn Internet Zugang vorhanden ist. +aboutFilesTopThanks = Danksagung +aboutFilesTopKickstarter = LibraryBox v2.0 wäre nicht ohne die Hilfe von Kickstarter Unterstützen möglich gewesen, die alle unten aufgelistet sind. Dank geht auch an meine Frau und meine Tochter für ihre Geduld mit mir während langer Arbeitsstunden und ihre Hilfe. Spezieller Dank geht an: Matt Neer, Ross Singer, Bo Baker, und Andromeda Yelton für die Hilfeleistung am Anfang des Projektes und an John Blyberg für die Unterstützung in letzter Minute. Die Entwicklung fast aller guten Teile der 2.0 Version wurde durch das unglaublich gute Programmierungstalent von Matthias Strubel und der Arbeit an der Benutzeroberfläche von David Brooks ermöglicht. +aboutFilesTopSafety = LibraryBox ist entworfen, sicher zu sein. Es ist keine Anmeldung nötig und es werden keine Daten protokolliert. Das System ist absichtlich nicht mit dem Internet verbunden, um die Privatsphäre der Benutzer zu sichern und Datensammlung zu vermeiden. +aboutFilesTopView = Benutzer und Download Statistiken ansehen +aboutKickstarterBackers = Kickstarter Unterstützer + +statsWelcomeDownloads = LibraryBox Downloads +statsWelcomeDescription = Unten sind die Download Statistiken und Benutzerzahlen dieser LibraryBox aufgelistet. +statsFilesTopUserCounts = Benutzer Zahlen +statsFilesTopNoVisitor = Keine Besucher bisher. Das heisst wahrscheinlich, dass das Datum und die Uhrzeit auf der LibraryBox noch nicht eingestellt sind. +statsFilesTopDownloads = Content Downloads +statsVisitors = Besucher: +statsDownloads = Downloads: + +filedirIndex = Index von / +filedirName = Name +filedirSize = Grösse +filedirType = Typ +filedirDownloads = Downloads +filedirParDir = Übergeordnetes Verzeichnis + diff --git a/LibraryBox-landingpage/www_content/locales/data.kr.properties b/LibraryBox-landingpage/www_content/locales/data.kr.properties new file mode 100644 index 0000000..0814a22 --- /dev/null +++ b/LibraryBox-landingpage/www_content/locales/data.kr.properties @@ -0,0 +1,55 @@ +# Korean translation +# vim: ft=jproperties + +commonNavbarToggle = 네비게이션 전환 +commonNavbarHome = 홈 +commonNavbarText = 문서 +commonNavbarAudio = 오디오 +commonNavbarVideo = 동영상 +commonNavbarApps = 앱 +commonNavbarAll = 모든 콘텐츠 +commonNavbarStats = 통계 +commonNavbarAbout = 소개 +commonFooterBackToTop = 페이지 상단으로 +commonFooterLicenceMain = 도서관 상자 프로젝트는 자유 소프트웨어 재단 일반 공중 사용 허가서 (GPLv2) 아래 사용 허가된 소프트웨어입니다. 라이센스 세부내용은 https://www.gnu.org/licenses/gpl-2.0.html 에서 보실 수 있습니다. +commonFooterLicenceOther = 달리 명시되지 않는 한, 도서관 상자의 모든 내용은 크리에이티브 커먼즈 저작자 표시-비영리 라이센스 아래 배포됩니다. 세부내용을 보시려면 다음 웹 페이지를 참조하십시오. http://librarybox.us +commonFilestopNothingDownloaded = 다운받은 내용이 아직 없습니다. 다운로드 받아보시겠습니까? + +indexContentWelcome = 도서관 상자 v2.1에 오신 것을 환영합니다 +indexContentWelcomeDescription = 파일을 열람 혹은 다운로드 받거나 하단에서 다른 이용자와 채팅하십시오. +indexContentWelcomePrivate = 도서관 상자는 프라이버시를 존중합니다; 웹 로그나 신원 확인에 사용될 수 있는 어떤 정보도 저장되지 않습니다. +indexFilestopTop = 최고 다운로드 +indexChatChat = 채팅 +indexChatSend = 전송 +indexChatName.placeholder = 닉네임 +indexChatName.value = 익명 +indexChatMessage.placeholder = 메세지… +indexShoutboxDefault = 기본설정 +indexShoutboxBlue = 파랑 +indexShoutboxGreen = 녹색 +indexShoutboxOrange = 주황 +indexShoutboxRed = 빨강 + +aboutWelcomeAboutLibrarybox = 도서관 상자에 대해서 +aboutWelcomeDescription = 도서관 상자는 인터넷에 접속하는 것이 힘들거나 아예 불가능한 장소에서도 디지탈 정도를 배포할 수 있도록 설계되었습니다. 이 기능은 오픈 소스 소프트웨어와 아주 저렴한 장비로 만들어졌으며 그 결과로 다른 어떤 장비보다도 훨씬 저렴한 비용으로 디지탈 정보의 배포를 가능케 합니다. 도서관 상자 프로젝트에 대해 더 알고 싶으시면 인터넷에 접속하여 다음 웹 페이지를 방문해주십시오. http://librarybox.us +aboutFilesTopThanks = 감사합니다 +aboutFilesTopKickstarter = 도서관 상자 2.0 버전은 아래에 나열된 킥스타터 후원자들의 후원이 없었더라면 이루어지지 못했을 것입니다. 긴 일과시간을 이해해주고 후원을 보내준 아내와 딸에게 감사를 표합니다. 또한 다음의 사람들에게 특별한 감사를 표합니다: 프로젝트 초기에 도움을 준 맷 니어, 로스 싱어, 보 베이커, 안드로메다 옐튼, 프로젝트 마지막에 급히 필요한 도움을 준 존 블라이버그. 도서관 상자 2.0 버전의 좋은 부분 모두는 기본적으로 마티아스 스트루벨의 훌륭한 프로그래밍 재능과 데이빗 브룩스의 사용자 인터페이스 작업 덕분입니다. +aboutFilesTopSafety = 도서관 상자는 안전하고 보안성이 있도록 설계되었습니다. 어떤 로그인도 요구되지 않으며 그 어떠한 이용자 정보도 웹로그에 기록되지 않습니다. 이용자의 프라이버시를 보호하고 신원 추적을 방지하기 위해 도서관 상자 시스템은 의도적으로 인터넷 비접속 상태를 유지합니다. +aboutFilesTopView = 다운로드와 방문자 통계 보기 +aboutKickstarterBackers = 킥스타터 후원자들 + +statsWelcomeDownloads = 도서관 상자 다운로드 +statsWelcomeDescription = 아래는 이 도서관 상자로부터의 다운로드 통계와 이용자 합계입니다. +statsFilesTopUserCounts = 이용자 합계 +statsFilesTopNoVisitor = 아직 방문자가 없습니다. 이는 아직 도서관 상자의 날짜와 시간을 설정하지 않았음을 의미할 수 있습니다. +statsFilesTopDownloads = 콘텐츠 다운로드 +statsVisitors = 방문자: +statsDownloads = 다운로드: + +filedirIndex = 홈 디렉토리 색인 +filedirName = 이름 +filedirSize = 사이즈 +filedirType = 종류 +filedirDownloads = 다운로드 +filedirParDir = 상위 디렉토리 + diff --git a/LibraryBox-landingpage/www_content/locales/locales.ini b/LibraryBox-landingpage/www_content/locales/locales.ini index 36fd9bb..fab0963 100644 --- a/LibraryBox-landingpage/www_content/locales/locales.ini +++ b/LibraryBox-landingpage/www_content/locales/locales.ini @@ -8,4 +8,10 @@ @import url(data.sw.properties [no] -@import url(data.no.properties) \ No newline at end of file +@import url(data.no.properties) + +[kr] +@import url(data.kr.properties) + +[de] +@import url(data.de.properties) \ No newline at end of file diff --git a/customization/www_librarybox/index.html b/customization/www_librarybox/index.html deleted file mode 100755 index dd0edfb..0000000 --- a/customization/www_librarybox/index.html +++ /dev/null @@ -1,8 +0,0 @@ - -Redirect... - - - -Redirect - - diff --git a/customization/www_librarybox/redirect.html b/customization/www_librarybox/redirect.html index dd0edfb..920b14a 100755 --- a/customization/www_librarybox/redirect.html +++ b/customization/www_librarybox/redirect.html @@ -5,4 +5,4 @@ Redirect - + \ No newline at end of file From e5319dfd2312f0ee5f9f561b88fdd2cbe62095cf Mon Sep 17 00:00:00 2001 From: Jason Griffey Date: Thu, 11 Sep 2014 16:36:20 -0500 Subject: [PATCH 43/90] Added Italian and Swedish to languages Added two more languages! --- .../www_content/locales/data.it.properties | 56 +++++++++++++++++++ .../www_content/locales/data.sv.properties | 55 ++++++++++++++++++ .../www_content/locales/locales.ini | 8 ++- 3 files changed, 118 insertions(+), 1 deletion(-) create mode 100644 LibraryBox-landingpage/www_content/locales/data.it.properties create mode 100644 LibraryBox-landingpage/www_content/locales/data.sv.properties diff --git a/LibraryBox-landingpage/www_content/locales/data.it.properties b/LibraryBox-landingpage/www_content/locales/data.it.properties new file mode 100644 index 0000000..04c7e5c --- /dev/null +++ b/LibraryBox-landingpage/www_content/locales/data.it.properties @@ -0,0 +1,56 @@ +# Italian translation +# vim: ft=jproperties + +commonNavbarToggle = Espandi/riduci menu +commonNavbarHome = Home +commonNavbarText = Testi +commonNavbarAudio = Audio +commonNavbarVideo = Video +commonNavbarApps = App +commonNavbarAll = Tutto il contenuto +commonNavbarStats = Statistiche +commonNavbarAbout = Info +commonFooterBackToTop = Torna in cima +commonFooterLicenceMain = Il LibraryBox Project è Software rilasciato sotto Licenza GPLv2, vedi https://www.gnu.org/licenses/gpl-2.0.html per i dettagli della licenza. +commonFooterLicenceOther = Tutto il contenuto del LibraryBox non licenziato diversamente è rilasciato con licenza Creative Commons NC-BY. Per maggiori informazioni, visita http://librarybox.us +commonFilestopNothingDownloaded = Non è stato ancora scaricato niente. Perchè non diamo inizio alla festa? + +indexContentWelcome = Benvenuti in LibraryBox v2.1 +indexContentWelcomeDescription = Naviga e scarica i files disponibili, o chatta con altri utenti qui sotto. +indexContentWelcomePrivate = LibraryBox è privato; non sono conservati log o altri dati identificativi. +indexFilestopTop = Top Downloads +indexChatChat = Chat +indexChatSend = Invia +indexChatName.placeholder = Alias +indexChatName.value = Anonimo +indexChatMessage.placeholder = Messaggio... +indexShoutboxDefault = Default +indexShoutboxBlue = Blu +indexShoutboxGreen = Verde +indexShoutboxOrange = Arancio +indexShoutboxRed = Rosso + +aboutWelcomeAboutLibrarybox = Informazioni su LibraryBox +aboutWelcomeDescription = LibraryBox è progettato per permettere la distribuzione di contenuti digitali in aree con scarsa o nessuna connessione Internet, anche in assenza totale di rete. Lo fa grazie all'uso di software open source e hardware molto economico, ad un costo nettamente inferiore ad altre soluzioni. Se ti interessa saperne di più sul Progetto LibraryBox, visita http://librarybox.us appena torni su Internet. +aboutFilesTopThanks = Grazie +aboutFilesTopKickstarter = LibraryBox v2.0 non sarebbe stato possibile senza il supporto dei sostenitori del progetto su Kickstarter, sono tutti elencati più in basso. Grazie a mia moglie e mia figlia per tutto il sostegno e per avermi incoraggiato durante i momenti più difficili. Un ringraziamento speciale a: Matt Neer, Ross Singer, Bo Baker e Andromeda Yelton per avermi aiutato all'inizio del progetto, e a John Blyberg per l'incursione dell'ultimo minuto. +Lo sviluppo di praticamente tutte le parti migliori della versione 2.0 è dovuto all'incredibile talento nella programmazione di Matthias Strubel e al lavoro sulla UI di David Brooks. +aboutFilesTopSafety = LibraryBox è progettato per essere sicuro e protetto. Non è necessario alcun login e non vengono memorizzati dati dell'utente. Il sistema è volutamente sconnesso da Internet per prevenire il tracciamento e preservare la privacy dell'utente. +aboutFilesTopView = Vedi i download e le statistiche sui visitatori +aboutKickstarterBackers = Kickstarter Backers + +statsWelcomeDownloads = LibraryBox Downloads +statsWelcomeDescription = Qui sotto sono riportate le statistiche dei download e sugli utenti di questo LibraryBox. +statsFilesTopUserCounts = Conteggio utenti +statsFilesTopNoVisitor = Ancora nessun visitatore. Questo probabilmente significa che non hai impostato l'ora/data del LibraryBox. +statsFilesTopDownloads = Download dei contenuti +statsVisitors = Visitatori: +statsDownloads = Downloads: + +filedirIndex = Indice di / +filedirName = Nome +filedirSize = Dimensioni +filedirType = Tipo +filedirDownloads = Downloads +filedirParDir = Cartella superiore + diff --git a/LibraryBox-landingpage/www_content/locales/data.sv.properties b/LibraryBox-landingpage/www_content/locales/data.sv.properties new file mode 100644 index 0000000..50f2496 --- /dev/null +++ b/LibraryBox-landingpage/www_content/locales/data.sv.properties @@ -0,0 +1,55 @@ +# Swedish translation +# vim: ft=jproperties + +commonNavbarToggle = Byt navigation +commonNavbarHome = Hem +commonNavbarText = Text +commonNavbarAudio = Ljud +commonNavbarVideo = Video +commonNavbarApps = Appar +commonNavbarAll = Allt innehåll +commonNavbarStats = Statistik +commonNavbarAbout = Om +commonFooterBackToTop = Tillbaka till toppen +commonFooterLicenceMain = LibraryBox-projektet är mjukvarulicensierat enligt GPLv2, se https://www.gnu.org/licenses/gpl-2.0.html för licensdetaljer. +commonFooterLicenceOther = Allt LibraryBox-innehåll som inte är licensierat på annat sätt, är släppt enligt en Creative Commons NC-BY-licens. För mer information, besök http://librarybox.us +commonFilestopNothingDownloaded = Det har inte laddats ned något än. Varför inte sätta igång? + +indexContentWelcome = Välkommen till LibraryBox v2.1 +indexContentWelcomeDescription = Bläddra och ladda ned tillgängliga filer eller chatta med andra användare nedan. +indexContentWelcomePrivate = LibraryBox är privat; inga loggar eller utpekande data sparas. +indexFilestopTop = Toppnedladdat +indexChatChat = Chatta +indexChatSend = Skicka +indexChatName.placeholder = Alias +indexChatName.value = Anonym +indexChatMessage.placeholder = Meddelande... +indexShoutboxDefault = Förval +indexShoutboxBlue = Blå +indexShoutboxGreen = Grön +indexShoutboxOrange = Orange +indexShoutboxRed = Röd + +aboutWelcomeAboutLibrarybox = Om LibraryBox +aboutWelcomeDescription = LibraryBox är utvecklat för att möjliggöra spridningen av digital information till områden som har liten eller ingen Internet-åtkomst, till och med utan elnät. Det använder mjukvara baserad på öppen källkod och mycket billig hårdvara, vilket gör att digital information kan spridas till mycket lägre kostnader än andra lösningar. Om du vill veta mer om LibraryBox-projektet, besök gärna http://librarybox.us när du är tillbaka på Internet. +aboutFilesTopThanks = Tack +aboutFilesTopKickstarter = LibraryBox v2.0 skulle inte ha varit möjlig utan stöd från Kickstarter-uppbackarna, vilka alla listas nedan. Tack till min fru och dotter för att ni stod ut med alla sena timmar och för allt stöd. Särskilt tack till: Matt Neer, Ross Singer, Bo Baker och Andromeda Yelton som hjälpte till i början av projektet, och till John Blyberg som dök upp i sista minuten. Utvecklingen av i princip alla de bra delarna av v2.0-releasen är resultatet av den fantastiska programmeringstalangen hos Matthias Strubel och gränssnittsarbetet av David Brooks. +aboutFilesTopSafety = LibraryBox är utvecklat för att vara säkert och skyddat. Det krävs ingen inloggning och inga användardata loggas. Systemet är medvetet inte kopplat till Internet för att förhindra spårning och för att skydda användarnas integritet. +aboutFilesTopView = Se nedladdnings- och besökarstatistik +aboutKickstarterBackers = Kickstarter-uppbackare + +statsWelcomeDownloads = LibraryBox-nedladdningar +statsWelcomeDescription = Nedan finns nedladdnings- och besökarstatistik för denna LibraryBox. +statsFilesTopUserCounts = Antalet användare +statsFilesTopNoVisitor = Inga besökare än. Det betyder att du förmodligen inte ställt in tid/datum för LibraryBox. +statsFilesTopDownloads = Nedladdning av innehåll +statsVisitors = Besökare: +statsDownloads = Nedladdat: + +filedirIndex = Index för / +filedirName = Namn +filedirSize = Storlek +filedirType = Typ +filedirDownloads = Nedladdat +filedirParDir = Ovanliggande katalog + diff --git a/LibraryBox-landingpage/www_content/locales/locales.ini b/LibraryBox-landingpage/www_content/locales/locales.ini index fab0963..4e2d11d 100644 --- a/LibraryBox-landingpage/www_content/locales/locales.ini +++ b/LibraryBox-landingpage/www_content/locales/locales.ini @@ -14,4 +14,10 @@ @import url(data.kr.properties) [de] -@import url(data.de.properties) \ No newline at end of file +@import url(data.de.properties) + +[it] +@import url(data.it.properties) + +[sv] +@import url(data.sv.properties) \ No newline at end of file From cc656dfbb3516787e6ffef2ed0ab2ae7a3f624e6 Mon Sep 17 00:00:00 2001 From: Jason Griffey Date: Tue, 16 Sep 2014 20:44:25 -0500 Subject: [PATCH 44/90] Adding English, fixing one CSS bug Yay another language! --- .../www_content/css/dir_list.css | 4 +- .../www_content/locales/data.es.properties | 54 +++++++++++++++++++ .../www_content/locales/locales.ini | 5 +- 3 files changed, 60 insertions(+), 3 deletions(-) create mode 100644 LibraryBox-landingpage/www_content/locales/data.es.properties diff --git a/LibraryBox-landingpage/www_content/css/dir_list.css b/LibraryBox-landingpage/www_content/css/dir_list.css index dc5f40f..420866a 100755 --- a/LibraryBox-landingpage/www_content/css/dir_list.css +++ b/LibraryBox-landingpage/www_content/css/dir_list.css @@ -200,7 +200,7 @@ tr.parent a { } .s { - text-align:center; + text-align:left; } .t { @@ -208,5 +208,5 @@ tr.parent a { } .c { - text-align:center; + text-align:left; } diff --git a/LibraryBox-landingpage/www_content/locales/data.es.properties b/LibraryBox-landingpage/www_content/locales/data.es.properties new file mode 100644 index 0000000..38c85f2 --- /dev/null +++ b/LibraryBox-landingpage/www_content/locales/data.es.properties @@ -0,0 +1,54 @@ +# Spanish translation +# vim: ft=jproperties + +commonNavbarToggle = Cambiar navegacin +commonNavbarHome = Inicio +commonNavbarText = Texto +commonNavbarAudio = Audio +commonNavbarVideo = Vdeo +commonNavbarApps = Apps +commonNavbarAll = Todo el Contenido +commonNavbarStats = Estadsticas +commonNavbarAbout = Sobre LibraryBox +commonFooterBackToTop = Regresar +commonFooterLicenceMain = El proyecto LibraryBox es un software creado bajo la licencia GPLv2, para obtener ms informacin consulte https://www.gnu.org/licenses/gpl-2.0.html. +commonFooterLicenceOther = Todo el contenido de LibraryBox est disponible bajo licencia Creative Commons NC-BY. Para obtener ms informacin, visite http://librarybox.us +commonFilestopNothingDownloaded = No se ha bajado ningn contenido. Quiere empezar? + +indexContentWelcome = Bienvenido a LibraryBox v2.1 +indexContentWelcomeDescription = Navegar y bajar contenido disponible, o chatear con los usuarios identificados abajo. +indexContentWelcomePrivate = LibraryBox es privado; no se registran actividades ni datos personales del usuario. +indexFilestopTop = Lo Ms Descargado +indexChatChat = Chat +indexChatSend = Enviar +indexChatName.placeholder = Alias +indexChatName.value = Annimo +indexChatMessage.placeholder = Enviar Mensaje... +indexShoutboxDefault = Predeterminado +indexShoutboxBlue = Azul +indexShoutboxGreen = Verde +indexShoutboxOrange = Naranja +indexShoutboxRed = Rojo + +aboutWelcomeAboutLibrarybox = Sobre LibraryBox +aboutWelcomeDescription = LibraryBox est diseado para distribuir informacin digital a los lugares sin acceso al Internet, an lugares fuera de la red. Se usa un software abierto y un hardware de bajo costo y permite la difusin de informacin a un bajo costo. Si usted quisiera aprender ms acerca del proyecto LibraryBox visite a http://librarybox.us. +aboutFilesTopThanks = Gracias +aboutFilesTopKickstarter = LibraryBox v2.0 no hubiera sido posbible sin el apoyo de los Kickstarter Backers, quienes estn citados abajo. Agradezco a mi esposa y mi hija por su apoyo. Gracias tambin a: Matt Neer, Ross Singer, Bo Baker, and Andromeda Yelton por su ayuda durante los primeros das del proyecto, y a John Blyberg por su ayuda al ltimo minuto. El desarrollo de todas la partes buenas de la versin v2.0 se deben a los talentos de programacin de Matthias Strubel y el trabajo de experiencia del usuario son de David Brooks. +aboutFilesTopSafety = LibraryBox est diseado para ser seguro. No se requiere usuario ni contrasea, y no se registran datos del usuario. El sistema se ha creado para no conectar al Internet para motivos de seguridad y privacidad. +aboutFilesTopView = Ver estadsticas de descargas y visitas +aboutKickstarterBackers = Kickstarter Backers + +statsWelcomeDownloads = Descargas de LibraryBox +statsWelcomeDescription = Estadsticas de descargas y recuento de usuarios para este dispositivo se muestran abajo. +statsFilesTopUserCounts = Recuento de usuarios +statsFilesTopNoVisitor = Todava no se han registrado visitantes. Esto probablemente significa que usted no ha ajustado la fecha / hora del LibraryBox. +statsFilesTopDownloads = Descargas +statsVisitors = Visitantes: +statsDownloads = Descargas: + +filedirIndex = ndice / +filedirName = Nombre +filedirSize = Tamao +filedirType = Tipo +filedirDownloads = Descargas +filedirParDir = Directory Principal \ No newline at end of file diff --git a/LibraryBox-landingpage/www_content/locales/locales.ini b/LibraryBox-landingpage/www_content/locales/locales.ini index 4e2d11d..1fb8849 100644 --- a/LibraryBox-landingpage/www_content/locales/locales.ini +++ b/LibraryBox-landingpage/www_content/locales/locales.ini @@ -20,4 +20,7 @@ @import url(data.it.properties) [sv] -@import url(data.sv.properties) \ No newline at end of file +@import url(data.sv.properties) + +[es] +@import url(data.es.properties) \ No newline at end of file From 1349a1f7d08d2917a4bfdff441052b7e8a767959 Mon Sep 17 00:00:00 2001 From: Matthias Strubel Date: Fri, 10 Oct 2014 12:24:55 +0200 Subject: [PATCH 45/90] Proper check of GET var --- customization/www_librarybox/dir-generator.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/customization/www_librarybox/dir-generator.php b/customization/www_librarybox/dir-generator.php index 50f0ba5..ec19c29 100644 --- a/customization/www_librarybox/dir-generator.php +++ b/customization/www_librarybox/dir-generator.php @@ -339,7 +339,7 @@ function get_folder_statistics ($my_path, &$folder_statistics) { } // Order the files and folders -if($_GET['order']) { +if(isset($_GET['order'])) { array_multisort($folder_order_by, SORT_DESC, $folderlist); array_multisort($file_order_by, SORT_DESC, $filelist); } else { From a5dae84c2bc8e5a90188fe6aef21a52d2580cbeb Mon Sep 17 00:00:00 2001 From: Matthias Strubel Date: Thu, 16 Oct 2014 09:52:02 +0200 Subject: [PATCH 46/90] Fixes for issue #12 --- customization/www_librarybox/dir-generator.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/customization/www_librarybox/dir-generator.php b/customization/www_librarybox/dir-generator.php index ec19c29..2ad698b 100644 --- a/customization/www_librarybox/dir-generator.php +++ b/customization/www_librarybox/dir-generator.php @@ -200,7 +200,7 @@ function get_download_count ($filename ) { global $path; global $folder_statistics; - $full_filename = "/$path".$filename ; + $full_filename = "/$path".urlencode($filename) ; if ( isset ( $folder_statistics[ $full_filename ] ) ) { return $folder_statistics[ $full_filename ][ 'counter'] ; @@ -385,7 +385,7 @@ function get_folder_statistics ($my_path, &$folder_statistics) { // Print folder information foreach($folderlist as $folder) { - print ""; + print ""; //print ""; print ""; print "\n"; @@ -409,7 +409,7 @@ function get_folder_statistics ($my_path, &$folder_statistics) { $file_link_prefix="/dl_statistics_counter.php?DL_URL=/$path"; } - print ""; + print ""; // print ""; print ""; print ""; From bfc173b7678ab2c4a93a08ff98bf1b63ebe51308 Mon Sep 17 00:00:00 2001 From: Matthias Strubel Date: Thu, 16 Oct 2014 10:43:00 +0200 Subject: [PATCH 47/90] Correct display of relevant file & folder in directory listing. Fixes #12 --- customization/www_librarybox/dir-generator.php | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/customization/www_librarybox/dir-generator.php b/customization/www_librarybox/dir-generator.php index 2ad698b..a6ba021 100644 --- a/customization/www_librarybox/dir-generator.php +++ b/customization/www_librarybox/dir-generator.php @@ -200,7 +200,7 @@ function get_download_count ($filename ) { global $path; global $folder_statistics; - $full_filename = "/$path".urlencode($filename) ; + $full_filename = "/$path".$filename ; if ( isset ( $folder_statistics[ $full_filename ] ) ) { return $folder_statistics[ $full_filename ][ 'counter'] ; @@ -223,6 +223,15 @@ function get_folder_statistics ($my_path, &$folder_statistics) { } } +function get_utf8_encoded($string) { + $encoding = mb_detect_encoding($string, "auto" ) ; + if ( $encoding == "UTF-8" || $encoding == "ASCII" ) { + return $string ; + } else { + $return_string = mb_convert_encoding($string, "UTF-8"); + return $return_string; + } +} // Print the heading stuff $vpath = ($path != "./")?$path:""; @@ -385,7 +394,7 @@ function get_folder_statistics ($my_path, &$folder_statistics) { // Print folder information foreach($folderlist as $folder) { - print ""; + print ""; //print ""; print ""; print "\n"; @@ -409,7 +418,7 @@ function get_folder_statistics ($my_path, &$folder_statistics) { $file_link_prefix="/dl_statistics_counter.php?DL_URL=/$path"; } - print ""; + print ""; // print ""; print ""; print ""; From 6164babbe627a02c38ef9b8284cef8b3f03b6a45 Mon Sep 17 00:00:00 2001 From: Matthias Strubel Date: Thu, 16 Oct 2014 10:44:28 +0200 Subject: [PATCH 48/90] Tool for identifying encoding problems Helps for #12 --- customization/bin/hex_dump_directory.php | 94 ++++++++++++++++++++++++ 1 file changed, 94 insertions(+) create mode 100644 customization/bin/hex_dump_directory.php diff --git a/customization/bin/hex_dump_directory.php b/customization/bin/hex_dump_directory.php new file mode 100644 index 0000000..4107787 --- /dev/null +++ b/customization/bin/hex_dump_directory.php @@ -0,0 +1,94 @@ += 0x20 && $i <= 0x7E) ? chr($i) : $pad; + } + } + + $hex = str_split(bin2hex($data), $width*2); + $chars = str_split(strtr($data, $from, $to), $width); + + $offset = 0; + foreach ($hex as $i => $line) + { + echo sprintf('%6X',$offset).' : '.implode(' ', str_split($line,2)) . ' [' . $chars[$i] . ']' . $newline; + $offset += $width; + } +} + + +function dump_dir_r($folder) { + + if ($handle = opendir($folder)) { + echo "------------------- $folder --------------------- \n"; + echo "Directory handle: $handle\n"; + echo "Files:\n"; + + /* Das ist der korrekte Weg, ein Verzeichnis zu durchlaufen. */ + while (false !== ($file = readdir($handle))) { + if ($file != "." && $file != "..") { + if ( is_dir( $file ) ) { + dump_dir_r($file); + } else { + $found_encoding=mb_detect_encoding($file, "auto"); + echo "$file\n"; + echo "Encoding detected: $found_encoding \n"; + + hex_dump("$file"); + + if ( !( $found_encoding == 'UTF-8' || $found_encoding == 'ASCII') ) { + $file_utf8 = mb_convert_encoding($file, "UTF-8"); + echo "\nConverted to UTF-8: $file_utf8 \n"; + hex_dump($file_utf8); + } + } + } + } + echo "---------------------------------------------------- \n"; + closedir($handle); + } + +} + +echo "Environment variables:\n"; +print_r($_ENV ); +echo "Internal encoding: ", mb_internal_encoding(), "\n"; + +#echo "Known encodings:"; +#print_r( mb_list_encodings () ); + +$path="./"; + +if ( isset( $argv[1] ) && $argv[1] != "" ) { + $path=$argv[1]; +} +echo "Starting dump in $path \n" ; +dump_dir_r($path); + +?> From 356eab8ed4fb75a6f5acd586262c797aec1133ac Mon Sep 17 00:00:00 2001 From: Matthias Strubel Date: Thu, 16 Oct 2014 12:02:09 +0200 Subject: [PATCH 49/90] Squashed 'piratebox_origin/' changes from 43baaeb..274b839 274b839 Added RPi-login message b4b5a5c Stable release 1.0.1 Merge branch 'hotfix-1.0.1' 21b0746 changes for 1.0.1 stable release 8138310 added latest contributions to AUTHORS file 5ac0714 Fixes XSS in forest.py Merge branch 'Liblor-hotfix-1.0.2' into hotfix-1.0.1 f21d577 [fix] XSS in forest.py eb57028 Merge pull request #76 from stylesuxx/master 343e015 Update README.md 7d061b5 Rename README to README.md git-subtree-dir: piratebox_origin git-subtree-split: 274b839bd2a38f8598f3cfc143ac3dc0e8921570 --- AUTHORS | 4 ++ BuildScripts/RPi_motd.txt | 28 ++++++++++++++ CHANGELOG | 1 + Makefile | 2 +- README | 64 ------------------------------- README.md | 57 +++++++++++++++++++++++++++ piratebox/piratebox/src/forest.py | 2 +- 7 files changed, 92 insertions(+), 66 deletions(-) create mode 100644 BuildScripts/RPi_motd.txt delete mode 100644 README create mode 100644 README.md diff --git a/AUTHORS b/AUTHORS index 5a69383..acf7a17 100644 --- a/AUTHORS +++ b/AUTHORS @@ -7,12 +7,16 @@ Live CD & Installer by: TerrorByte Contributors for modifications: + * General Support + # stylesuxx - Makefile and development support + # FriedZombie - OpenWRT and scripting support * Droopy # someguy - Droopy Directory support # Reventlov - Modification for better iOS Support * python Forum # someguy - Modifications for running on OpenWRT # ToM'aSs - Languag-Support + # Liblor - Fixes Design: * David Brooks diff --git a/BuildScripts/RPi_motd.txt b/BuildScripts/RPi_motd.txt new file mode 100644 index 0000000..c4f5ec8 --- /dev/null +++ b/BuildScripts/RPi_motd.txt @@ -0,0 +1,28 @@ +PirateBox RPi-Image 1.0.1 +PirateBox Version 1.0.1 + Website: http://piratebox.cc + Forum: http://forum.piratebox.cc + IRC: #piratebox on irc.Freenode.net + +Want to start a not enabled piratebox, run + # systemctl start piratebox + +Next Steps after first flashing: +0. Change password: + # passwd +1. If you want to have PirateBox enabled on startup: + # systemctl enable piratebox + # systemctl start piratebox +2. Enable Fake-Timeservice + 2.1 Set time like + # date 101016112014 for "Fri Oct 10 16:11:00 2014" format is: MMDDhhmmCCYY + # /opt/piratebox/bin/timesave.sh /opt/piratebox/conf/piratebox.conf install +3. Activate the Kareha Image and Discussion Board by using editor + change the admin username and password (ADMIN_PASS and SECRET) + # nano /opt/piratebox/www/board/config.pl + # wget http://127.0.0.1/board/kareha.pl +4. If you want, enable UPnP Media Server + # cp /etc/minidlna.conf /etc/minidlna.conf.bkp + # cp /opt/piratebox/src/linux.example.minidlna.conf /etc/minidlna.conf + # systemctl start minidlna + # systemctl enable minidlna diff --git a/CHANGELOG b/CHANGELOG index d9f23d9..422638d 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -21,6 +21,7 @@ CHANGELOG * [Fix] [OpenWRT] Fixes issues when extendRoot couldn't get initilized correctly * [New] [OpenWRT] Optimized handling of mount options in extendRoot * [Fix] [RPi] Bootup issue with some USB-wifi sticks. +* [Fix] Prevent XSS in forest.py === 1.0.0 === NOTE: This may only be a partial changelog, check github / your package manager for more info. diff --git a/Makefile b/Makefile index 31d4ea6..7e63e0b 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ NAME = piratebox-ws -VERSION = 1.0.1RC1 +VERSION = 1.0.1 ARCH = all PB_FOLDER=piratebox PB_SRC_FOLDER=$(PB_FOLDER)/$(PB_FOLDER) diff --git a/README b/README deleted file mode 100644 index 85f77d2..0000000 --- a/README +++ /dev/null @@ -1,64 +0,0 @@ -# PirateBoxScripts with Modifications for running in a Webserver -# (c) 2013 Matthias Strubel licenced under GPL-3 -# matthias.strubel@aod-rpg.de -# -# Maintained by Matthias Strubel -# matthias.strubel@aod-rpg.de -# Cale Black -# cablack@rams.colostate.edu -# -# Sources for Running PirateBox with Webserver lighttpd -# Contains: Shoutbox, Forum -# -# -PirateBox is a collection of scripts / programs that allows you to use your wireless card -as a local network to share files and chat anonymously. For more information please visit -http://daviddarts.com/ - ------ Info ----- -Packages contains only scripts based PirateBox scripts with running lighttpd webserver. - -PirateBox scripts can: - * Setup WLAN Interface via iw - * Setup hotspot functionality (hostapd) - * Setup IP Adresses of wlan interface - * Proping until USB-WLAN is available - * Can add wlan interface to an existing bridge - * Sets Up a DHCP Server with redirect to wlan-interface IP - * Upload landing page (via iframe droopy) - * Browse Uploaded files - * Announce "Internet yes" for iOS - * Announce "Internet yes" for MS devices - * ShoutBox - * Optional small python Forum - * Optional imageboard - * Optional Station counter - * Optional Inihibit starting upload-script - * Optional Timesave script (for devices without RTC) - can be found in piratebox/bin/timesave.sh - * Optional Poll for WLAN device until it available (for USB wifi cards) - - -More information can be found ont http://piratebox.aod-rpg.de -Installation-HowTo und current Download-Link: http://piratebox.aod-rpg.de/dokuwiki/doku.php/piratebox_lighttpd - -Is supported by mkPirateBox > v0.5 for OpenWRT Systems https://github.com/MaStr/mkPirateBox -and by PirateBox Manager https://github.com/TerrorByte/PirateBox-Manager - ------ Installation ----- -PirateBox should be in most common repositories soon, but in the mean time you can use this method: - - -##### For alpha testing - -Download the package: -https://github.com/MaStr/PirateBoxScripts_Webserver/archive/development.zip - -Unzip the package: -$unzip development.zip - -Run the installer in the unzipped folder: -$ cd PirateBoxScripts_Webserver/piratebox -$ sudo ./install.sh default #Default can be substituted with 'board' if you want an image board on your PB - - - diff --git a/README.md b/README.md new file mode 100644 index 0000000..ed4be83 --- /dev/null +++ b/README.md @@ -0,0 +1,57 @@ +# PirateBoxScripts with Modifications for running in a Webserver +© 2013 [Matthias Strubel](mailto:matthias.strubel@aod-rpg.de) licenced under GPL-3 + +## Maintainers +* [Matthias Strubel](matthias.strubel@aod-rpg.de) +* [Cale Black](cablack@rams.colostate.edu) + +Sources for Running PirateBox with Webserver lighttpd +Contains: Shoutbox, Forum + +PirateBox is a collection of scripts / programs that allows you to use your wireless card +as a local network to share files and chat anonymously. For more information please visit +http://daviddarts.com/ + +## Info +Packages contains only scripts based PirateBox scripts with running lighttpd webserver. + +PirateBox scripts can: +* Setup WLAN Interface via iw +* Setup hotspot functionality (hostapd) +* Setup IP Adresses of wlan interface +* Probing until USB-WLAN is available +* Can add wlan interface to an existing bridge +* Sets Up a DHCP Server with redirect to wlan-interface IP +* Upload landing page (via iframe droopy) +* Browse Uploaded files +* Announce "Internet yes" for iOS +* Announce "Internet yes" for MS devices +* ShoutBox +* Optional small python Forum +* Optional imageboard +* Optional Station counter +* Optional Inihibit starting upload-script +* Optional Timesave script (for devices without RTC) - can be found in piratebox/bin/timesave.sh +* Optional Poll for WLAN device until it available (for USB wifi cards) + +More information can be found on: http://piratebox.aod-rpg.de +Installation-HowTo and current Download-Link: http://piratebox.aod-rpg.de/dokuwiki/doku.php/piratebox_lighttpd + +Is supported by [mkPirateBox > v0.5 for OpenWRT Systems](https://github.com/MaStr/mkPirateBox) +and by [PirateBox Manager](https://github.com/TerrorByte/PirateBox-Manager). + +## Installation +PirateBox should be in most common repositories soon, but in the mean time you can use this method: + +### For alpha testing +Download the [development package](https://github.com/MaStr/PirateBoxScripts_Webserver/archive/development.zip). + +Unzip the package: + + unzip development.zip + +Run the installer in the unzipped folder: + + cd PirateBoxScripts_Webserver/piratebox + sudo ./install.sh default + #Default can be substituted with 'board' if you want an image board on your PirateBox diff --git a/piratebox/piratebox/src/forest.py b/piratebox/piratebox/src/forest.py index d17bb1e..e91db3c 100755 --- a/piratebox/piratebox/src/forest.py +++ b/piratebox/piratebox/src/forest.py @@ -338,7 +338,7 @@ def new_subject(field_storage): raise ValueError( ERR_NO_SUBJECT ) elif not body: raise ValueError( ERR_NO_BODY ) - subject = subject.replace('\t', ' ') + subject = strip_html(subject.replace('\t', ' ')) row_hash = update_thread( author, subject ) new_post( author, subject, body, row_hash ) return row_hash From 65c0a832d94523195ef0ecab7d9a2b35adb08b59 Mon Sep 17 00:00:00 2001 From: Matthias Strubel Date: Thu, 16 Oct 2014 14:17:12 +0200 Subject: [PATCH 50/90] =?UTF-8?q?Package=20f=C3=BCr=202.0.1=20beta2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index aed208a..eced009 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ NAME = librarybox -VERSION = 2.1.0_beta1 +VERSION = 2.1.0_beta2 ARCH = all #PIRATEBOX_IMG_URL = "http://piratebox.aod-rpg.de/piratebox_ws_0.6_img.gz" From 0bc078ac62aef7176fecd6377224d415d73d7323 Mon Sep 17 00:00:00 2001 From: Matthias Strubel Date: Thu, 16 Oct 2014 17:23:17 +0200 Subject: [PATCH 51/90] Fix for missing index.html --- customization/bin/hooks/hook_pre_init.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/customization/bin/hooks/hook_pre_init.sh b/customization/bin/hooks/hook_pre_init.sh index 242b112..e4aa6a1 100755 --- a/customization/bin/hooks/hook_pre_init.sh +++ b/customization/bin/hooks/hook_pre_init.sh @@ -31,8 +31,8 @@ cp -rv $PIRATEBOX_FOLDER/www_old/cgi-bin $WWW_FOLDER/cgi-bin ln -s $WWW_CONTENT $WWW_FOLDER/content # link index.html with redirect.html -if [ ! -e $WWW_CONTENT/index.html ] ; then - ln -s $WWW_CONTENT/redirect.html $WWW_CONTENT/index.html +if [ ! -e $WWW_FOLDER/index.html ] ; then + ln -s $WWW_FOLDER/redirect.html $WWW_FOLDER/index.html fi $PIRATEBOX_FOLDER/bin/ftp_enable.sh generate From 6de36edecb72216c8501dacbfefdd79fda751702 Mon Sep 17 00:00:00 2001 From: aidik Date: Thu, 30 Oct 2014 23:47:25 +0100 Subject: [PATCH 52/90] jQuery non-conflict typo --- LibraryBox-landingpage/www_content/js/main.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/LibraryBox-landingpage/www_content/js/main.js b/LibraryBox-landingpage/www_content/js/main.js index 9a706ed..cae3652 100644 --- a/LibraryBox-landingpage/www_content/js/main.js +++ b/LibraryBox-landingpage/www_content/js/main.js @@ -18,7 +18,7 @@ $j(document).ready(function() { // tells you there is a ShoutBox error $j('div#shoutbox').ajaxError(function() { - $(this).text( "Triggered ajaxError handler on shoutbox" ); + $j(this).text( "Triggered ajaxError handler on shoutbox" ); }); // submits new text to ShoutBox From 82d6413c72d2691d781f31c6436fa6d6b892c041 Mon Sep 17 00:00:00 2001 From: Jason Griffey Date: Tue, 14 Apr 2015 17:32:54 -0500 Subject: [PATCH 53/90] Adding Croatian translation Added Croatian --- .../www_content/locales/data.hr.properties | 54 +++++++++++++++++++ .../www_content/locales/locales.ini | 5 +- 2 files changed, 58 insertions(+), 1 deletion(-) create mode 100644 LibraryBox-landingpage/www_content/locales/data.hr.properties diff --git a/LibraryBox-landingpage/www_content/locales/data.hr.properties b/LibraryBox-landingpage/www_content/locales/data.hr.properties new file mode 100644 index 0000000..f22f251 --- /dev/null +++ b/LibraryBox-landingpage/www_content/locales/data.hr.properties @@ -0,0 +1,54 @@ +# Croatian translation +# vim: ft=jproperties + +commonNavbarToggle = Promjeni navigaciju +commonNavbarHome = Home +commonNavbarText = Tekst +commonNavbarAudio = Audio +commonNavbarVideo = Video +commonNavbarApps = Apps +commonNavbarAll = Sav Sadraj +commonNavbarStats = Statistike +commonNavbarAbout = O +commonFooterBackToTop = Natrag na vrh +commonFooterLicenceMain = LibraryBox Projekt je Software Licenciran pod GPLv2, pogledaj https://www.gnu.org/licenses/gpl-2.0.html za detalje o licenci. +commonFooterLicenceOther = Sav LibraryBox sadraj koji nije licenciran je puten pod Creative Commons NC-BY licencom. Za vie informacija , posjetite http://librarybox.us +commonFilestopNothingDownloaded = Nita jo nije skinuto. Zato ne skinete neto vi? + +indexContentWelcome = Dobrodoli u LibraryBox v2.1 +indexContentWelcomeDescription = Pregledavajte i preuzimite bilo koju od dostupnih datoteka , ili razgovarajte s drugim korisnicima u nastavku. +indexContentWelcomePrivate = LibraryBox je privatan; ne zadrava nikakve podatke ili identifikaciju o korisnicima. +indexFilestopTop = Top Preuzimanja +indexChatChat = Chat +indexChatSend = Poalji +indexChatName.placeholder = Nick +indexChatName.value = Anonymous +indexChatMessage.placeholder = Poruka... +indexShoutboxDefault = Zadano +indexShoutboxBlue = Plavo +indexShoutboxGreen = Zeleno +indexShoutboxOrange = Naranasto +indexShoutboxRed = Crveno + +aboutWelcomeAboutLibrarybox = O LibraryBox +aboutWelcomeDescription = LibraryBox je osmiljen kako bi se omoguilo distribuciju digitalnih informacija na podrujima s malo ili bez pristupa internetu , ak i izvan mree . To radi koristei open source softver i vrlo jeftin hardver , ime distribuciju digitalnih podataka ini na daleko nioj cijeni od ostalih rjeenja . Ako elite saznati vie o LibraryBox projektu , molimo vas da posjetite http://librarybox.us kad se vratite na internet . +aboutFilesTopThanks = Hvala +aboutFilesTopKickstarter = LibraryBox v2.0 ne bi bio mogu bez podrke od Kickstarter Backera , koji su svi navedeni u nastavku . Hvala mojoj supruzi i keri za podnoenje mog dugog radnog vremena i svu potporu . Posebna zahvala : Matt neer , Ross Singer , Bo Baker i Andromeda Yelton za pomo rano u ivotu projekta , te Ivana Blyberg za pomo u posljednjem trenutaku . Za izradu praktiki svih dobrih stvari u v2.0 izdanju su zbog nevjerojatnog talenta kodiranja Matthias Strubel i UI rad David Brooks. +aboutFilesTopSafety = LibraryBox je osmiljen kako bi bio siguran . Nema prijave i korisniki podatci nisu registrirani . Sustav namjerno nije spojen na internet , kako bi se sprijeilo praenje i sauvala privatnost korisnika . +aboutFilesTopView = Pogledaj statistike korisnika i preuzimanja +aboutKickstarterBackers = Kickstarter backeri + +statsWelcomeDownloads = LibraryBox Preuzimanja +statsWelcomeDescription = Dolje su statistike preuzimanja i korisnika za ovaj LibraryBox.. +statsFilesTopUserCounts = Broj Korisnika +statsFilesTopNoVisitor = Nema jo posjetitelja. To vjerovatno znai da niste postavili vrijeme na svom LibraryBoxu. +statsFilesTopDownloads = Sadraj Preuzimanja +statsVisitors = Posjetitelji: +statsDownloads = Preuzimanja: + +filedirIndex = Index od / +filedirName = Ime +filedirSize = Veliina +filedirType = Tip +filedirDownloads = Preuzimanja +filedirParDir = Top Direktorij \ No newline at end of file diff --git a/LibraryBox-landingpage/www_content/locales/locales.ini b/LibraryBox-landingpage/www_content/locales/locales.ini index 1fb8849..bc87ec6 100644 --- a/LibraryBox-landingpage/www_content/locales/locales.ini +++ b/LibraryBox-landingpage/www_content/locales/locales.ini @@ -23,4 +23,7 @@ @import url(data.sv.properties) [es] -@import url(data.es.properties) \ No newline at end of file +@import url(data.es.properties) + +[hr] +@import url(data.hr.properties) \ No newline at end of file From cd1ed060d3db0c9ccee7536ef5916a4f1985e1bc Mon Sep 17 00:00:00 2001 From: Matthias Strubel Date: Sat, 18 Apr 2015 10:40:24 +0200 Subject: [PATCH 54/90] Switch to 2.1 beta release 3 --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index eced009..7c6a01b 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ NAME = librarybox -VERSION = 2.1.0_beta2 +VERSION = 2.1.0_beta3 ARCH = all #PIRATEBOX_IMG_URL = "http://piratebox.aod-rpg.de/piratebox_ws_0.6_img.gz" From e349ac7494bba3714b8941eb11430080fcbf4c0b Mon Sep 17 00:00:00 2001 From: Jason Griffey Date: Sun, 19 Apr 2015 10:42:17 -0500 Subject: [PATCH 55/90] Updated HTML files Updated to fix Content link, and to change 2.0 to 2.1 Beta --- LibraryBox-landingpage/www_content/about.html | 6 +++--- LibraryBox-landingpage/www_content/index.html | 6 +++--- LibraryBox-landingpage/www_content/stats.html | 4 ++-- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/LibraryBox-landingpage/www_content/about.html b/LibraryBox-landingpage/www_content/about.html index f3bba33..b301bc4 100755 --- a/LibraryBox-landingpage/www_content/about.html +++ b/LibraryBox-landingpage/www_content/about.html @@ -3,7 +3,7 @@ - About LibraryBox 2.0 + About LibraryBox 2.1 Beta @@ -19,7 +19,7 @@ "; + print ""; //print ""; print ""; print "\n"; From a15571b66105ba4facadb9b457d622afe200df52 Mon Sep 17 00:00:00 2001 From: Jason Griffey Date: Thu, 21 May 2015 12:14:22 -0500 Subject: [PATCH 57/90] Adding Dutch translation Adding Dutch language to translations --- .../www_content/locales/data.nl.properties | 54 +++++++++++++++++++ .../www_content/locales/locales.ini | 5 +- 2 files changed, 58 insertions(+), 1 deletion(-) create mode 100644 LibraryBox-landingpage/www_content/locales/data.nl.properties diff --git a/LibraryBox-landingpage/www_content/locales/data.nl.properties b/LibraryBox-landingpage/www_content/locales/data.nl.properties new file mode 100644 index 0000000..5afdd16 --- /dev/null +++ b/LibraryBox-landingpage/www_content/locales/data.nl.properties @@ -0,0 +1,54 @@ +# Dutch translation +# vim: ft=jproperties + +commonNavbarToggle = Navigatie +commonNavbarHome = Start +commonNavbarText = Tekst +commonNavbarAudio = Audio +commonNavbarVideo = Video +commonNavbarApps = Apps +commonNavbarAll = Hele inhoud +commonNavbarStats = Statistieken +commonNavbarAbout = Over +commonFooterBackToTop = Terug naar begin pagina +commonFooterLicenceMain = The LibraryBox Project is Software Licensed under GPLv2, see https://www.gnu.org/licenses/gpl-2.0.html for license details. +commonFooterLicenceOther = All LibraryBox content not otherwise licensed is released under a Creative Commons NC-BY license. For more information, visit http://librarybox.us +commonFilestopNothingDownloaded = Er is nog niks gedownload. Ben jij de eerste? + +indexContentWelcome = Welkom bij LibraryBox v2.1 +indexContentWelcomeDescription = Blader door bestanden, download betanden of chat met andere gebruikers hieronder +indexContentWelcomePrivate = LibraryBox is priv; er worden geen logbestanden of andere identificerende data bewaard. +indexFilestopTop = Top Downloads +indexChatChat = Chat +indexChatSend = Verstuur +indexChatName.placeholder = Alias +indexChatName.value = Anoniem +indexChatMessage.placeholder = Bericht... +indexShoutboxDefault = Default +indexShoutboxBlue = Blauw +indexShoutboxGreen = Groen +indexShoutboxOrange = Oranje +indexShoutboxRed = Rood + +aboutWelcomeAboutLibrarybox = Over LibraryBox +aboutWelcomeDescription = LibraryBox is ontwikkeld om in gebieden waar weinig of geen internet voor handen is, toch digitale informatie te kunnen delen, zelfs off-line. Er wordt alleen gebruikt gemaakt van open source software en goedkope hardware. Hierdoor is het delen van digitale informatie veel goedkoper dan van andere oplossingen. Als je meer wilt weten over het Library Project, kijk dan op http://librarybox.us als je weer online bent. +aboutFilesTopThanks = Bedankt +aboutFilesTopKickstarter = LibraryBox v2.0 zou niet mogelijk zijn zonder de support van Kickstarter Backers, waarvan de namen hieronder staan. Dank aan mijn vrouw en dochter voor de vele uren die ik met dit project bezig ben geweest en hun ondersteuning hierbij. Speciale dank aan: Matt Neer, Ross Singer, Bo Baker, and Andromeda Yelton voor het helpen tijdens de begin fase van het project en John Blyberg voor de laatste korrekties. De ontwikkeling van alle goede delen van versie 2.0 komen door de geweldige programmeerkunsten van Matthias Strubel en David Brooks. +aboutFilesTopSafety = LibraryBox is ontwikkeld om anoniem en veilig te zijn. Je hoeft niet in te loggen en er wordt geen gebruikersinformatie bijgehouden. Het systeem is expres niet verbonden met internet om zo de privacy van gebruikers veilig te stellen. +aboutFilesTopView = Bekijk download en bezoekers statistieken +aboutKickstarterBackers = Kickstarter Backers + +statsWelcomeDownloads = LibraryBox Downloads +statsWelcomeDescription = Hieronder staan de download statistieken en het aantal gebruikers van deze LibraryBox. +statsFilesTopUserCounts = Aantal Gebruikers +statsFilesTopNoVisitor = Nog geen gebruikers. Waarchijnlijk komt dit doordat je de datum en tijd van je LibraryBox nog niet hebt ingesteld. +statsFilesTopDownloads = Inhoud Downloads +statsVisitors = Bezoekers: +statsDownloads = Downloads: + +filedirIndex = Index van / +filedirName = Naam +filedirSize = Grootte +filedirType = Type +filedirDownloads = Downloads +filedirParDir = Map Omhoog diff --git a/LibraryBox-landingpage/www_content/locales/locales.ini b/LibraryBox-landingpage/www_content/locales/locales.ini index bc87ec6..0031da3 100644 --- a/LibraryBox-landingpage/www_content/locales/locales.ini +++ b/LibraryBox-landingpage/www_content/locales/locales.ini @@ -26,4 +26,7 @@ @import url(data.es.properties) [hr] -@import url(data.hr.properties) \ No newline at end of file +@import url(data.hr.properties) + +[nl] +@import url(data.nl.properties) \ No newline at end of file From 808242b7337d6ec28c915747bf222ffd5d36502e Mon Sep 17 00:00:00 2001 From: The Gitter Badger Date: Tue, 18 Aug 2015 05:27:50 +0000 Subject: [PATCH 58/90] Added Gitter link --- README | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README b/README index 918844a..17f38c7 100644 --- a/README +++ b/README @@ -93,3 +93,5 @@ dir-generator.php => KittyKat dir Listing with customization for counting downl Creates a SQLite file in /opt/piratebox/share called /opt/piratebox/share/vc_statistics.sqlite + +Join the chat at https://gitter.im/LibraryBox-Dev/LibraryBox-core From bb26d619fae37f5bec91adae7a6e6c7600b3269a Mon Sep 17 00:00:00 2001 From: Matthias Strubel Date: Tue, 18 Aug 2015 07:31:10 +0200 Subject: [PATCH 59/90] Place gitter link correctly --- README | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README b/README index 17f38c7..931b67e 100644 --- a/README +++ b/README @@ -1,5 +1,8 @@ LibraryBox 2.0 Core script files. +Join the chat at https://gitter.im/LibraryBox-Dev/LibraryBox-core + + Matthias Strubel 2013-07-24 matthias.strubel@aod-rpg.de This sourcecode is licenced under GPL-3 @@ -94,4 +97,3 @@ dir-generator.php => KittyKat dir Listing with customization for counting downl Creates a SQLite file in /opt/piratebox/share called /opt/piratebox/share/vc_statistics.sqlite -Join the chat at https://gitter.im/LibraryBox-Dev/LibraryBox-core From 39e2c736e77c2d5d8ac1deb9d531b35e60de63c3 Mon Sep 17 00:00:00 2001 From: The Gitter Badger Date: Tue, 18 Aug 2015 05:27:50 +0000 Subject: [PATCH 60/90] Added Gitter link --- README | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README b/README index 918844a..17f38c7 100644 --- a/README +++ b/README @@ -93,3 +93,5 @@ dir-generator.php => KittyKat dir Listing with customization for counting downl Creates a SQLite file in /opt/piratebox/share called /opt/piratebox/share/vc_statistics.sqlite + +Join the chat at https://gitter.im/LibraryBox-Dev/LibraryBox-core From 295bd15587658118b49ebde7e3440ba1e4e4766c Mon Sep 17 00:00:00 2001 From: Matthias Strubel Date: Tue, 18 Aug 2015 07:31:10 +0200 Subject: [PATCH 61/90] Place gitter link correctly --- README | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README b/README index 17f38c7..931b67e 100644 --- a/README +++ b/README @@ -1,5 +1,8 @@ LibraryBox 2.0 Core script files. +Join the chat at https://gitter.im/LibraryBox-Dev/LibraryBox-core + + Matthias Strubel 2013-07-24 matthias.strubel@aod-rpg.de This sourcecode is licenced under GPL-3 @@ -94,4 +97,3 @@ dir-generator.php => KittyKat dir Listing with customization for counting downl Creates a SQLite file in /opt/piratebox/share called /opt/piratebox/share/vc_statistics.sqlite -Join the chat at https://gitter.im/LibraryBox-Dev/LibraryBox-core From 1af42361a24cfdeaaabec93d36bec3f228c11a50 Mon Sep 17 00:00:00 2001 From: Jason Griffey Date: Tue, 18 Aug 2015 09:40:47 -0500 Subject: [PATCH 62/90] Removed "Parent Directory", fixed double text problem MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Text was appear twice, once programmatically and once printed…this fixes. --- customization/www_librarybox/dir-generator.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/customization/www_librarybox/dir-generator.php b/customization/www_librarybox/dir-generator.php index a6ba021..d2ea011 100644 --- a/customization/www_librarybox/dir-generator.php +++ b/customization/www_librarybox/dir-generator.php @@ -384,7 +384,7 @@ function get_utf8_encoded($string) { // Parent directory link if($path != "./") { - print ""; + print ""; //print ""; print ""; print "\n"; From 490440eedc635e17c613b231a447ed3b96b7a6b9 Mon Sep 17 00:00:00 2001 From: Matthias Strubel Date: Wed, 19 Aug 2015 21:06:13 +0200 Subject: [PATCH 63/90] Fixes another issue with #12 , directories accounted urls --- customization/www_librarybox/dir-generator.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/customization/www_librarybox/dir-generator.php b/customization/www_librarybox/dir-generator.php index d2ea011..efa8800 100644 --- a/customization/www_librarybox/dir-generator.php +++ b/customization/www_librarybox/dir-generator.php @@ -415,7 +415,7 @@ function get_utf8_encoded($string) { $file_link_prefix=""; if ( $collect_dl_count ) { - $file_link_prefix="/dl_statistics_counter.php?DL_URL=/$path"; + $file_link_prefix="/dl_statistics_counter.php?DL_URL=/urlencode($path)"; } print ""; From 49cc5ed9042f57f82c3c6b02d52b0bcc3850116f Mon Sep 17 00:00:00 2001 From: Matthias Strubel Date: Wed, 19 Aug 2015 21:08:36 +0200 Subject: [PATCH 64/90] Revert "Fixes another issue with #12 , directories accounted urls" This reverts commit 490440eedc635e17c613b231a447ed3b96b7a6b9. --- customization/www_librarybox/dir-generator.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/customization/www_librarybox/dir-generator.php b/customization/www_librarybox/dir-generator.php index efa8800..d2ea011 100644 --- a/customization/www_librarybox/dir-generator.php +++ b/customization/www_librarybox/dir-generator.php @@ -415,7 +415,7 @@ function get_utf8_encoded($string) { $file_link_prefix=""; if ( $collect_dl_count ) { - $file_link_prefix="/dl_statistics_counter.php?DL_URL=/urlencode($path)"; + $file_link_prefix="/dl_statistics_counter.php?DL_URL=/$path"; } print ""; From 851459e728da47b6d327b6be75c30d0a2fc9e5fe Mon Sep 17 00:00:00 2001 From: Matthias Strubel Date: Wed, 19 Aug 2015 21:09:42 +0200 Subject: [PATCH 65/90] rework, Fixes another issue with #12 , directories accounted urls --- customization/www_librarybox/dir-generator.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/customization/www_librarybox/dir-generator.php b/customization/www_librarybox/dir-generator.php index d2ea011..8953453 100644 --- a/customization/www_librarybox/dir-generator.php +++ b/customization/www_librarybox/dir-generator.php @@ -415,7 +415,7 @@ function get_utf8_encoded($string) { $file_link_prefix=""; if ( $collect_dl_count ) { - $file_link_prefix="/dl_statistics_counter.php?DL_URL=/$path"; + $file_link_prefix="/dl_statistics_counter.php?DL_URL=/" . urlencode($path); } print ""; From 0306e1a3e248128d743a047051e53e1c0f3a3924 Mon Sep 17 00:00:00 2001 From: Matthias Strubel Date: Sat, 18 Apr 2015 10:40:24 +0200 Subject: [PATCH 66/90] Switch to 2.1 beta release 3 --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index eced009..7c6a01b 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ NAME = librarybox -VERSION = 2.1.0_beta2 +VERSION = 2.1.0_beta3 ARCH = all #PIRATEBOX_IMG_URL = "http://piratebox.aod-rpg.de/piratebox_ws_0.6_img.gz" From b24607d4f4d5dabf2ac250c886a8dbe08f12b262 Mon Sep 17 00:00:00 2001 From: Jason Griffey Date: Sun, 19 Apr 2015 10:42:17 -0500 Subject: [PATCH 67/90] Updated HTML files Updated to fix Content link, and to change 2.0 to 2.1 Beta --- LibraryBox-landingpage/www_content/about.html | 6 +++--- LibraryBox-landingpage/www_content/index.html | 6 +++--- LibraryBox-landingpage/www_content/stats.html | 4 ++-- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/LibraryBox-landingpage/www_content/about.html b/LibraryBox-landingpage/www_content/about.html index f3bba33..b301bc4 100755 --- a/LibraryBox-landingpage/www_content/about.html +++ b/LibraryBox-landingpage/www_content/about.html @@ -3,7 +3,7 @@ - About LibraryBox 2.0 + About LibraryBox 2.1 Beta @@ -19,7 +19,7 @@ "; + print ""; //print ""; print ""; print "\n"; From fa41315d453f0b5a31e21084bba9da4b29f77134 Mon Sep 17 00:00:00 2001 From: Jason Griffey Date: Thu, 21 May 2015 12:14:22 -0500 Subject: [PATCH 69/90] Adding Dutch translation Adding Dutch language to translations --- .../www_content/locales/data.nl.properties | 54 +++++++++++++++++++ .../www_content/locales/locales.ini | 5 +- 2 files changed, 58 insertions(+), 1 deletion(-) create mode 100644 LibraryBox-landingpage/www_content/locales/data.nl.properties diff --git a/LibraryBox-landingpage/www_content/locales/data.nl.properties b/LibraryBox-landingpage/www_content/locales/data.nl.properties new file mode 100644 index 0000000..5afdd16 --- /dev/null +++ b/LibraryBox-landingpage/www_content/locales/data.nl.properties @@ -0,0 +1,54 @@ +# Dutch translation +# vim: ft=jproperties + +commonNavbarToggle = Navigatie +commonNavbarHome = Start +commonNavbarText = Tekst +commonNavbarAudio = Audio +commonNavbarVideo = Video +commonNavbarApps = Apps +commonNavbarAll = Hele inhoud +commonNavbarStats = Statistieken +commonNavbarAbout = Over +commonFooterBackToTop = Terug naar begin pagina +commonFooterLicenceMain = The LibraryBox Project is Software Licensed under GPLv2, see https://www.gnu.org/licenses/gpl-2.0.html for license details. +commonFooterLicenceOther = All LibraryBox content not otherwise licensed is released under a Creative Commons NC-BY license. For more information, visit http://librarybox.us +commonFilestopNothingDownloaded = Er is nog niks gedownload. Ben jij de eerste? + +indexContentWelcome = Welkom bij LibraryBox v2.1 +indexContentWelcomeDescription = Blader door bestanden, download betanden of chat met andere gebruikers hieronder +indexContentWelcomePrivate = LibraryBox is priv; er worden geen logbestanden of andere identificerende data bewaard. +indexFilestopTop = Top Downloads +indexChatChat = Chat +indexChatSend = Verstuur +indexChatName.placeholder = Alias +indexChatName.value = Anoniem +indexChatMessage.placeholder = Bericht... +indexShoutboxDefault = Default +indexShoutboxBlue = Blauw +indexShoutboxGreen = Groen +indexShoutboxOrange = Oranje +indexShoutboxRed = Rood + +aboutWelcomeAboutLibrarybox = Over LibraryBox +aboutWelcomeDescription = LibraryBox is ontwikkeld om in gebieden waar weinig of geen internet voor handen is, toch digitale informatie te kunnen delen, zelfs off-line. Er wordt alleen gebruikt gemaakt van open source software en goedkope hardware. Hierdoor is het delen van digitale informatie veel goedkoper dan van andere oplossingen. Als je meer wilt weten over het Library Project, kijk dan op http://librarybox.us als je weer online bent. +aboutFilesTopThanks = Bedankt +aboutFilesTopKickstarter = LibraryBox v2.0 zou niet mogelijk zijn zonder de support van Kickstarter Backers, waarvan de namen hieronder staan. Dank aan mijn vrouw en dochter voor de vele uren die ik met dit project bezig ben geweest en hun ondersteuning hierbij. Speciale dank aan: Matt Neer, Ross Singer, Bo Baker, and Andromeda Yelton voor het helpen tijdens de begin fase van het project en John Blyberg voor de laatste korrekties. De ontwikkeling van alle goede delen van versie 2.0 komen door de geweldige programmeerkunsten van Matthias Strubel en David Brooks. +aboutFilesTopSafety = LibraryBox is ontwikkeld om anoniem en veilig te zijn. Je hoeft niet in te loggen en er wordt geen gebruikersinformatie bijgehouden. Het systeem is expres niet verbonden met internet om zo de privacy van gebruikers veilig te stellen. +aboutFilesTopView = Bekijk download en bezoekers statistieken +aboutKickstarterBackers = Kickstarter Backers + +statsWelcomeDownloads = LibraryBox Downloads +statsWelcomeDescription = Hieronder staan de download statistieken en het aantal gebruikers van deze LibraryBox. +statsFilesTopUserCounts = Aantal Gebruikers +statsFilesTopNoVisitor = Nog geen gebruikers. Waarchijnlijk komt dit doordat je de datum en tijd van je LibraryBox nog niet hebt ingesteld. +statsFilesTopDownloads = Inhoud Downloads +statsVisitors = Bezoekers: +statsDownloads = Downloads: + +filedirIndex = Index van / +filedirName = Naam +filedirSize = Grootte +filedirType = Type +filedirDownloads = Downloads +filedirParDir = Map Omhoog diff --git a/LibraryBox-landingpage/www_content/locales/locales.ini b/LibraryBox-landingpage/www_content/locales/locales.ini index bc87ec6..0031da3 100644 --- a/LibraryBox-landingpage/www_content/locales/locales.ini +++ b/LibraryBox-landingpage/www_content/locales/locales.ini @@ -26,4 +26,7 @@ @import url(data.es.properties) [hr] -@import url(data.hr.properties) \ No newline at end of file +@import url(data.hr.properties) + +[nl] +@import url(data.nl.properties) \ No newline at end of file From 0c9674811683eebb4a8ac3008cb03442358d1479 Mon Sep 17 00:00:00 2001 From: Jason Griffey Date: Tue, 1 Sep 2015 08:39:07 -0500 Subject: [PATCH 70/90] Added Indonesian to dev Added new language! Indonesian! --- .../www_content/locales/data.id.properties | 54 +++++++++++++++++++ .../www_content/locales/locales.ini | 5 +- 2 files changed, 58 insertions(+), 1 deletion(-) create mode 100644 LibraryBox-landingpage/www_content/locales/data.id.properties diff --git a/LibraryBox-landingpage/www_content/locales/data.id.properties b/LibraryBox-landingpage/www_content/locales/data.id.properties new file mode 100644 index 0000000..f37eee7 --- /dev/null +++ b/LibraryBox-landingpage/www_content/locales/data.id.properties @@ -0,0 +1,54 @@ +# Bahasa Indonesia translation +# vim: ft=jproperties + +commonNavbarToggle = Beralih Daftar +commonNavbarHome = Beranda +commonNavbarText = Dokumen +commonNavbarAudio = Audio +commonNavbarVideo = Video +commonNavbarApps = Applikasi +commonNavbarAll = Daftar Isi +commonNavbarStats = Statistik +commonNavbarAbout = Tentang Kami +commonFooterBackToTop = Kembali ke Atas +commonFooterLicenceMain = LibraryBox Proyek dibawah izin Software GPLv2, lihat https://www.gnu.org/licenses/gpl-2.0.html untuk rincian lisensi. +commonFooterLicenceOther = Semua isi LibraryBox yang tidak memiliki liensi dirilis di bawah lisensi Creative Commons NC-BY. Untuk informasi lagi, kunjungi http://librarybox.us +commonFilestopNothingdownloaded = Belum ada yang di downloadkan. Ingin segera memulai partai ini? + +indexContentWelcome = Selamat Datang di KotakInfo (LibraryBox). +indexContentWelcomeDescription = Browse dan download salah satu file yang tersedia, atau ngobrol dengan pengguna lain di bawah. +indexContentWelcomePrivate = KotakInfo (LibraryBox) pribadi; tidak ada log atau data identitas lainnya dipertahankan. +indexFilestopTop = Kebanyakan Download +indexChatChat = Obrolan +indexChatSend = Kirim +indexChatName.placeholder = Alias +indexChatName.value = Tanpa nama +indexChatMessage.placeholder = Pesan... +indexShoutboxDefault = Default +indexShoutboxBlue = Biru +indexShoutboxGreen = Hijau +indexShoutboxOrange = Jingga +indexShoutboxRed = Merah + +aboutWelcomeAboutLibrarybox = Tentang KotakInfo +aboutWelcomeDescription = KotakInfo (LibraryBox) dirancang untuk memungkinkan distribusi informasi digital untuk daerah dengan akses internet sedikit atau yang tidak ada. Hal itu di mungkinkan oleh perangkat lunak "open source" dan perangkat keras yang sangat murah, yang memungkinkan distribusi informasi digital dengan biaya yang jauh lebih rendah dibandingkan solusi lain. Jika Anda ingin mempelajari lebih lanjut tentang proyek LibraryBox, silakan kunjungi http://librarybox.us ketika Anda kembali ke Internet. +aboutFilesTopThanks = Ungkapan Rasa Terima Kasih +aboutFilesTopKickstarter = LibraryBox v2.0 tidak akan mungkin terjadi tanpa dukungan dari Pendukung Kickstarter, yang semuanya tercantum di bawah ini. Terima kasih kepada istri saya dan putri untuk memasang dengan jam kerja yang panjang dan semua dukungan. Terima kasih khusus kepada: Matt Neer, Ross Singer, Bo Baker, dan Andromeda Yelton untuk membantu awal dalam kehidupan proyek, dan John Blyberg untuk membantu pada menit terakhir. Pengembangan pada dasarnya semua bagian yang baik dari rilis v2.0 adalah karena bakat coding yang luar biasa dari Matthias Strubel dan pekerjaan "User Interface" dari David Brooks. +aboutFilesTopSafety = KotakInfo dirancang untuk menjadi aman dan terkunci. Tidak ada login yang diperlukan dan tidak ada data pengguna yang login. Sistem ini sengaja tidak berhubung ke Internet untuk mencegah pelacakan dan menjaga privasi pengguna. +aboutFilesTopView = Lihat statistik download dan pengunjung +aboutKickstarterBackers = Pendukung Kickstarter + +statsWelcomedownloads = Statistik KotakInfo +statsWelcomeDescription = Berikut adalah statistik download dan jumlah pengguna untuk KotakInfo ini. +statsFilesTopUserCounts = Jumlah Pengguna +statsFilesTopNoVisitor = Belum ada pengunjung. Ini mungkin berarti Anda belum mengatur waktu/tanggal KotakInfo. +statsFilesTopdownloads = Download Konten +statsVisitors = Pengunjung: +statsdownloads = Download2: + +filedirIndex = Indeks / +filedirName = Nama +filedirSize = Kebesaran +filedirType = Jenis +filedirdownloads = Download2 +filedirParDir = Direktori Induk \ No newline at end of file diff --git a/LibraryBox-landingpage/www_content/locales/locales.ini b/LibraryBox-landingpage/www_content/locales/locales.ini index bc87ec6..b1037d5 100644 --- a/LibraryBox-landingpage/www_content/locales/locales.ini +++ b/LibraryBox-landingpage/www_content/locales/locales.ini @@ -26,4 +26,7 @@ @import url(data.es.properties) [hr] -@import url(data.hr.properties) \ No newline at end of file +@import url(data.hr.properties) + +[id] +@import url(data.id.properties) \ No newline at end of file From 9faad73736504f924e8d499f2e503c4e6a1b6ae6 Mon Sep 17 00:00:00 2001 From: Matthias Strubel Date: Thu, 10 Dec 2015 19:24:59 +0100 Subject: [PATCH 71/90] Change LibraryBox version to Stable v2.1 even in locales. Closed #28 #29 --- LibraryBox-landingpage/www_content/about.html | 2 +- LibraryBox-landingpage/www_content/index.html | 4 ++-- LibraryBox-landingpage/www_content/locales/data.de.properties | 2 +- LibraryBox-landingpage/www_content/locales/data.en.properties | 2 +- LibraryBox-landingpage/www_content/locales/data.es.properties | 2 +- LibraryBox-landingpage/www_content/locales/data.fr.properties | 4 ++-- LibraryBox-landingpage/www_content/locales/data.hr.properties | 2 +- LibraryBox-landingpage/www_content/locales/data.id.properties | 2 +- LibraryBox-landingpage/www_content/locales/data.it.properties | 2 +- LibraryBox-landingpage/www_content/locales/data.nl.properties | 2 +- LibraryBox-landingpage/www_content/locales/data.no.properties | 2 +- LibraryBox-landingpage/www_content/locales/data.sv.properties | 2 +- LibraryBox-landingpage/www_content/locales/data.sw.properties | 2 +- LibraryBox-landingpage/www_content/stats.html | 2 +- 14 files changed, 16 insertions(+), 16 deletions(-) diff --git a/LibraryBox-landingpage/www_content/about.html b/LibraryBox-landingpage/www_content/about.html index b301bc4..b344da4 100755 --- a/LibraryBox-landingpage/www_content/about.html +++ b/LibraryBox-landingpage/www_content/about.html @@ -3,7 +3,7 @@ - About LibraryBox 2.1 Beta + About LibraryBox 2.1 diff --git a/LibraryBox-landingpage/www_content/index.html b/LibraryBox-landingpage/www_content/index.html index 2f4cf08..47f41b2 100755 --- a/LibraryBox-landingpage/www_content/index.html +++ b/LibraryBox-landingpage/www_content/index.html @@ -4,7 +4,7 @@ - LibraryBox 2.1 Beta + LibraryBox 2.1 @@ -52,7 +52,7 @@
-

Welcome to LibraryBox v2.1 Beta

+

Welcome to LibraryBox v2.1

Browse and download any of the available files, or chat with other users below.

LibraryBox is private; no logs or other identifying data are retained.

diff --git a/LibraryBox-landingpage/www_content/locales/data.de.properties b/LibraryBox-landingpage/www_content/locales/data.de.properties index cdb79ef..7933287 100644 --- a/LibraryBox-landingpage/www_content/locales/data.de.properties +++ b/LibraryBox-landingpage/www_content/locales/data.de.properties @@ -33,7 +33,7 @@ indexShoutboxRed = Rot aboutWelcomeAboutLibrarybox = Über LibraryBox aboutWelcomeDescription = LibraryBox wurde entwickelt, um die Verbreitung digitaler Informationen in Gegenden ohne oder mit geringer Internet Verbindung zu gewährleisten, selbst ohne Netzzugang. Dies wird durch die Verwendung von Open-Source Programmen und günstiger Hardware erreicht, die es ermöglicht digitale Informationen jeglicher Art zu verteilen, zu einem Kostenpunkt der weit unter anderen Lösungen liegt. Weitere Informationen über das LibraryBox Projekt sind unter http://librarybox.us zu finden wenn Internet Zugang vorhanden ist. aboutFilesTopThanks = Danksagung -aboutFilesTopKickstarter = LibraryBox v2.0 wäre nicht ohne die Hilfe von Kickstarter Unterstützen möglich gewesen, die alle unten aufgelistet sind. Dank geht auch an meine Frau und meine Tochter für ihre Geduld mit mir während langer Arbeitsstunden und ihre Hilfe. Spezieller Dank geht an: Matt Neer, Ross Singer, Bo Baker, und Andromeda Yelton für die Hilfeleistung am Anfang des Projektes und an John Blyberg für die Unterstützung in letzter Minute. Die Entwicklung fast aller guten Teile der 2.0 Version wurde durch das unglaublich gute Programmierungstalent von Matthias Strubel und der Arbeit an der Benutzeroberfläche von David Brooks ermöglicht. +aboutFilesTopKickstarter = LibraryBox v2.1 wäre nicht ohne die Hilfe von Kickstarter Unterstützen möglich gewesen, die alle unten aufgelistet sind. Dank geht auch an meine Frau und meine Tochter für ihre Geduld mit mir während langer Arbeitsstunden und ihre Hilfe. Spezieller Dank geht an: Matt Neer, Ross Singer, Bo Baker, und Andromeda Yelton für die Hilfeleistung am Anfang des Projektes und an John Blyberg für die Unterstützung in letzter Minute. Die Entwicklung fast aller guten Teile der 2.0 Version wurde durch das unglaublich gute Programmierungstalent von Matthias Strubel und der Arbeit an der Benutzeroberfläche von David Brooks ermöglicht. aboutFilesTopSafety = LibraryBox ist entworfen, sicher zu sein. Es ist keine Anmeldung nötig und es werden keine Daten protokolliert. Das System ist absichtlich nicht mit dem Internet verbunden, um die Privatsphäre der Benutzer zu sichern und Datensammlung zu vermeiden. aboutFilesTopView = Benutzer und Download Statistiken ansehen aboutKickstarterBackers = Kickstarter Unterstützer diff --git a/LibraryBox-landingpage/www_content/locales/data.en.properties b/LibraryBox-landingpage/www_content/locales/data.en.properties index a563679..4b86fc8 100644 --- a/LibraryBox-landingpage/www_content/locales/data.en.properties +++ b/LibraryBox-landingpage/www_content/locales/data.en.properties @@ -33,7 +33,7 @@ indexShoutboxRed = Red aboutWelcomeAboutLibrarybox = About LibraryBox aboutWelcomeDescription = LibraryBox is designed to enable the distribution of digital information to areas with little or no Internet access, even off the grid. It does so using open source software and very inexpensive hardware, allowing the distribution of digital information at a far lower cost than other solutions. If you'd like to learn more about the LibraryBox Project, please visit http://librarybox.us when you get back to the Internet. aboutFilesTopThanks = Thanks -aboutFilesTopKickstarter = LibraryBox v2.0 would not have been possible without the support of the Kickstarter Backers, all of whom are listed below. Thanks to my wife and daughter for putting up with the long hours and all the support. Special thanks to: Matt Neer, Ross Singer, Bo Baker, and Andromeda Yelton for lending a hand early in the project's life, and to John Blyberg for swooping in at the last minute. Development of basically all of the good parts of the v2.0 release are due to the incredible coding talents of Matthias Strubel and the UI work of David Brooks. +aboutFilesTopKickstarter = LibraryBox v2.1 would not have been possible without the support of the Kickstarter Backers, all of whom are listed below. Thanks to my wife and daughter for putting up with the long hours and all the support. Special thanks to: Matt Neer, Ross Singer, Bo Baker, and Andromeda Yelton for lending a hand early in the project's life, and to John Blyberg for swooping in at the last minute. Development of basically all of the good parts of the v2.0 release are due to the incredible coding talents of Matthias Strubel and the UI work of David Brooks. aboutFilesTopSafety = LibraryBox is designed to be safe and secure. No logins are required and no user data is logged. The system is purposely not connected to the Internet in order to prevent tracking and preserve user privacy. aboutFilesTopView = View download and visitor statistics aboutKickstarterBackers = Kickstarter Backers diff --git a/LibraryBox-landingpage/www_content/locales/data.es.properties b/LibraryBox-landingpage/www_content/locales/data.es.properties index 38c85f2..5c04e06 100644 --- a/LibraryBox-landingpage/www_content/locales/data.es.properties +++ b/LibraryBox-landingpage/www_content/locales/data.es.properties @@ -33,7 +33,7 @@ indexShoutboxRed = Rojo aboutWelcomeAboutLibrarybox = Sobre LibraryBox aboutWelcomeDescription = LibraryBox est diseado para distribuir informacin digital a los lugares sin acceso al Internet, an lugares fuera de la red. Se usa un software abierto y un hardware de bajo costo y permite la difusin de informacin a un bajo costo. Si usted quisiera aprender ms acerca del proyecto LibraryBox visite a http://librarybox.us. aboutFilesTopThanks = Gracias -aboutFilesTopKickstarter = LibraryBox v2.0 no hubiera sido posbible sin el apoyo de los Kickstarter Backers, quienes estn citados abajo. Agradezco a mi esposa y mi hija por su apoyo. Gracias tambin a: Matt Neer, Ross Singer, Bo Baker, and Andromeda Yelton por su ayuda durante los primeros das del proyecto, y a John Blyberg por su ayuda al ltimo minuto. El desarrollo de todas la partes buenas de la versin v2.0 se deben a los talentos de programacin de Matthias Strubel y el trabajo de experiencia del usuario son de David Brooks. +aboutFilesTopKickstarter = LibraryBox v2.1 no hubiera sido posbible sin el apoyo de los Kickstarter Backers, quienes estn citados abajo. Agradezco a mi esposa y mi hija por su apoyo. Gracias tambin a: Matt Neer, Ross Singer, Bo Baker, and Andromeda Yelton por su ayuda durante los primeros das del proyecto, y a John Blyberg por su ayuda al ltimo minuto. El desarrollo de todas la partes buenas de la versin v2.0 se deben a los talentos de programacin de Matthias Strubel y el trabajo de experiencia del usuario son de David Brooks. aboutFilesTopSafety = LibraryBox est diseado para ser seguro. No se requiere usuario ni contrasea, y no se registran datos del usuario. El sistema se ha creado para no conectar al Internet para motivos de seguridad y privacidad. aboutFilesTopView = Ver estadsticas de descargas y visitas aboutKickstarterBackers = Kickstarter Backers diff --git a/LibraryBox-landingpage/www_content/locales/data.fr.properties b/LibraryBox-landingpage/www_content/locales/data.fr.properties index 61512cc..08e5ac2 100644 --- a/LibraryBox-landingpage/www_content/locales/data.fr.properties +++ b/LibraryBox-landingpage/www_content/locales/data.fr.properties @@ -15,7 +15,7 @@ commonFooterLicenceMain = Le projet LibraryBox est publié sous licence GPLv2, r commonFooterLicenceOther = Sauf mention contraire, les contenus de LibraryBox sont publiés sous licence Creative Commons BY-NC. Pour plus d’information, rendez vous sur http://librarybox.us commonFilestopNothingDownloaded = Rien n’a encore été téléchargé. Pourquoi ne pas être le premier ? -indexContentWelcome = Bienvenue sur LibraryBox v2.0 +indexContentWelcome = Bienvenue sur LibraryBox v2.1 indexContentWelcomeDescription = Naviguez et téléchargez n’importe quel fichier, ou participez à la discussion avec d’autres utilisateurs ci-dessous indexContentWelcomePrivate = LibraryBox respecte votre vie privée. Aucune information sur vous n’est enregistrée. indexFilestopTop = Top Téléchargements @@ -33,7 +33,7 @@ indexShoutboxRed = Rouge aboutWelcomeAboutLibrarybox = À propos de LibraryBox aboutWelcomeDescription = LibraryBox est conçue pour permettre la distribution d’information numérique là où il y a peu voire pas du tout d’accès à Internet. Cela est rendu possible grâce à l’utilisation de logiciels libres et de matériel très bon marché, permettant ainsi la distribution de ces informations à un coût très inférieur à d’autres solutions. Si vous souhaitez en savoir plus à propos du projet LibraryBox, rendez vous sur http://librarybox.us lorsque vous serez de retour sur Internet. aboutFilesTopThanks = Remerciements -aboutFilesTopKickstarter = LibraryBox v2.0 n’aurait pas été possible sans le support des contributeurs KickStarters, tous sont cités ci-dessous. Merci à ma femme et à ma fille d’avoir supporté de si longues heures. Remerciements spéciaux à Matt Neer, Ross Singer, Bo Baker et Andromeda Yelton d’avoir prêté main-forte dès le début du projet, et à John Blyberg de nous avoir rejoints à la dernière minute. Tous les meilleurs morceaux de code de la version 2.0 sont dûs aux incroyables talents de développeur de Matthias Strubel et au travail graphique de David Brooks. +aboutFilesTopKickstarter = LibraryBox v2.1 n’aurait pas été possible sans le support des contributeurs KickStarters, tous sont cités ci-dessous. Merci à ma femme et à ma fille d’avoir supporté de si longues heures. Remerciements spéciaux à Matt Neer, Ross Singer, Bo Baker et Andromeda Yelton d’avoir prêté main-forte dès le début du projet, et à John Blyberg de nous avoir rejoints à la dernière minute. Tous les meilleurs morceaux de code de la version 2.0 sont dûs aux incroyables talents de développeur de Matthias Strubel et au travail graphique de David Brooks. aboutFilesTopSafety = LibraryBox est conçue pour être sûre et sécurisée. Aucun compte utilisateur n’est requis et aucune donnée utilisateur n’est sauvegardée. Le système n’est volontairement pas connecté à Internet afin de prévenir toute tentative de suivi et de préserver la vie privée de ses utilisateurs. aboutFilesTopView = Voir les statistiques de téléchargement et de visite aboutKickstarterBackers = Contributeurs KickStarters diff --git a/LibraryBox-landingpage/www_content/locales/data.hr.properties b/LibraryBox-landingpage/www_content/locales/data.hr.properties index f22f251..a8f905a 100644 --- a/LibraryBox-landingpage/www_content/locales/data.hr.properties +++ b/LibraryBox-landingpage/www_content/locales/data.hr.properties @@ -33,7 +33,7 @@ indexShoutboxRed = Crveno aboutWelcomeAboutLibrarybox = O LibraryBox aboutWelcomeDescription = LibraryBox je osmiljen kako bi se omoguilo distribuciju digitalnih informacija na podrujima s malo ili bez pristupa internetu , ak i izvan mree . To radi koristei open source softver i vrlo jeftin hardver , ime distribuciju digitalnih podataka ini na daleko nioj cijeni od ostalih rjeenja . Ako elite saznati vie o LibraryBox projektu , molimo vas da posjetite http://librarybox.us kad se vratite na internet . aboutFilesTopThanks = Hvala -aboutFilesTopKickstarter = LibraryBox v2.0 ne bi bio mogu bez podrke od Kickstarter Backera , koji su svi navedeni u nastavku . Hvala mojoj supruzi i keri za podnoenje mog dugog radnog vremena i svu potporu . Posebna zahvala : Matt neer , Ross Singer , Bo Baker i Andromeda Yelton za pomo rano u ivotu projekta , te Ivana Blyberg za pomo u posljednjem trenutaku . Za izradu praktiki svih dobrih stvari u v2.0 izdanju su zbog nevjerojatnog talenta kodiranja Matthias Strubel i UI rad David Brooks. +aboutFilesTopKickstarter = LibraryBox v2.1 ne bi bio mogu bez podrke od Kickstarter Backera , koji su svi navedeni u nastavku . Hvala mojoj supruzi i keri za podnoenje mog dugog radnog vremena i svu potporu . Posebna zahvala : Matt neer , Ross Singer , Bo Baker i Andromeda Yelton za pomo rano u ivotu projekta , te Ivana Blyberg za pomo u posljednjem trenutaku . Za izradu praktiki svih dobrih stvari u v2.0 izdanju su zbog nevjerojatnog talenta kodiranja Matthias Strubel i UI rad David Brooks. aboutFilesTopSafety = LibraryBox je osmiljen kako bi bio siguran . Nema prijave i korisniki podatci nisu registrirani . Sustav namjerno nije spojen na internet , kako bi se sprijeilo praenje i sauvala privatnost korisnika . aboutFilesTopView = Pogledaj statistike korisnika i preuzimanja aboutKickstarterBackers = Kickstarter backeri diff --git a/LibraryBox-landingpage/www_content/locales/data.id.properties b/LibraryBox-landingpage/www_content/locales/data.id.properties index f37eee7..3598b44 100644 --- a/LibraryBox-landingpage/www_content/locales/data.id.properties +++ b/LibraryBox-landingpage/www_content/locales/data.id.properties @@ -33,7 +33,7 @@ indexShoutboxRed = Merah aboutWelcomeAboutLibrarybox = Tentang KotakInfo aboutWelcomeDescription = KotakInfo (LibraryBox) dirancang untuk memungkinkan distribusi informasi digital untuk daerah dengan akses internet sedikit atau yang tidak ada. Hal itu di mungkinkan oleh perangkat lunak "open source" dan perangkat keras yang sangat murah, yang memungkinkan distribusi informasi digital dengan biaya yang jauh lebih rendah dibandingkan solusi lain. Jika Anda ingin mempelajari lebih lanjut tentang proyek LibraryBox, silakan kunjungi http://librarybox.us ketika Anda kembali ke Internet. aboutFilesTopThanks = Ungkapan Rasa Terima Kasih -aboutFilesTopKickstarter = LibraryBox v2.0 tidak akan mungkin terjadi tanpa dukungan dari Pendukung Kickstarter, yang semuanya tercantum di bawah ini. Terima kasih kepada istri saya dan putri untuk memasang dengan jam kerja yang panjang dan semua dukungan. Terima kasih khusus kepada: Matt Neer, Ross Singer, Bo Baker, dan Andromeda Yelton untuk membantu awal dalam kehidupan proyek, dan John Blyberg untuk membantu pada menit terakhir. Pengembangan pada dasarnya semua bagian yang baik dari rilis v2.0 adalah karena bakat coding yang luar biasa dari Matthias Strubel dan pekerjaan "User Interface" dari David Brooks. +aboutFilesTopKickstarter = LibraryBox v2.1 tidak akan mungkin terjadi tanpa dukungan dari Pendukung Kickstarter, yang semuanya tercantum di bawah ini. Terima kasih kepada istri saya dan putri untuk memasang dengan jam kerja yang panjang dan semua dukungan. Terima kasih khusus kepada: Matt Neer, Ross Singer, Bo Baker, dan Andromeda Yelton untuk membantu awal dalam kehidupan proyek, dan John Blyberg untuk membantu pada menit terakhir. Pengembangan pada dasarnya semua bagian yang baik dari rilis v2.0 adalah karena bakat coding yang luar biasa dari Matthias Strubel dan pekerjaan "User Interface" dari David Brooks. aboutFilesTopSafety = KotakInfo dirancang untuk menjadi aman dan terkunci. Tidak ada login yang diperlukan dan tidak ada data pengguna yang login. Sistem ini sengaja tidak berhubung ke Internet untuk mencegah pelacakan dan menjaga privasi pengguna. aboutFilesTopView = Lihat statistik download dan pengunjung aboutKickstarterBackers = Pendukung Kickstarter diff --git a/LibraryBox-landingpage/www_content/locales/data.it.properties b/LibraryBox-landingpage/www_content/locales/data.it.properties index 04c7e5c..5a5aec3 100644 --- a/LibraryBox-landingpage/www_content/locales/data.it.properties +++ b/LibraryBox-landingpage/www_content/locales/data.it.properties @@ -33,7 +33,7 @@ indexShoutboxRed = Rosso aboutWelcomeAboutLibrarybox = Informazioni su LibraryBox aboutWelcomeDescription = LibraryBox è progettato per permettere la distribuzione di contenuti digitali in aree con scarsa o nessuna connessione Internet, anche in assenza totale di rete. Lo fa grazie all'uso di software open source e hardware molto economico, ad un costo nettamente inferiore ad altre soluzioni. Se ti interessa saperne di più sul Progetto LibraryBox, visita http://librarybox.us appena torni su Internet. aboutFilesTopThanks = Grazie -aboutFilesTopKickstarter = LibraryBox v2.0 non sarebbe stato possibile senza il supporto dei sostenitori del progetto su Kickstarter, sono tutti elencati più in basso. Grazie a mia moglie e mia figlia per tutto il sostegno e per avermi incoraggiato durante i momenti più difficili. Un ringraziamento speciale a: Matt Neer, Ross Singer, Bo Baker e Andromeda Yelton per avermi aiutato all'inizio del progetto, e a John Blyberg per l'incursione dell'ultimo minuto. +aboutFilesTopKickstarter = LibraryBox v2.1 non sarebbe stato possibile senza il supporto dei sostenitori del progetto su Kickstarter, sono tutti elencati più in basso. Grazie a mia moglie e mia figlia per tutto il sostegno e per avermi incoraggiato durante i momenti più difficili. Un ringraziamento speciale a: Matt Neer, Ross Singer, Bo Baker e Andromeda Yelton per avermi aiutato all'inizio del progetto, e a John Blyberg per l'incursione dell'ultimo minuto. Lo sviluppo di praticamente tutte le parti migliori della versione 2.0 è dovuto all'incredibile talento nella programmazione di Matthias Strubel e al lavoro sulla UI di David Brooks. aboutFilesTopSafety = LibraryBox è progettato per essere sicuro e protetto. Non è necessario alcun login e non vengono memorizzati dati dell'utente. Il sistema è volutamente sconnesso da Internet per prevenire il tracciamento e preservare la privacy dell'utente. aboutFilesTopView = Vedi i download e le statistiche sui visitatori diff --git a/LibraryBox-landingpage/www_content/locales/data.nl.properties b/LibraryBox-landingpage/www_content/locales/data.nl.properties index 5afdd16..6c9d4a5 100644 --- a/LibraryBox-landingpage/www_content/locales/data.nl.properties +++ b/LibraryBox-landingpage/www_content/locales/data.nl.properties @@ -33,7 +33,7 @@ indexShoutboxRed = Rood aboutWelcomeAboutLibrarybox = Over LibraryBox aboutWelcomeDescription = LibraryBox is ontwikkeld om in gebieden waar weinig of geen internet voor handen is, toch digitale informatie te kunnen delen, zelfs off-line. Er wordt alleen gebruikt gemaakt van open source software en goedkope hardware. Hierdoor is het delen van digitale informatie veel goedkoper dan van andere oplossingen. Als je meer wilt weten over het Library Project, kijk dan op http://librarybox.us als je weer online bent. aboutFilesTopThanks = Bedankt -aboutFilesTopKickstarter = LibraryBox v2.0 zou niet mogelijk zijn zonder de support van Kickstarter Backers, waarvan de namen hieronder staan. Dank aan mijn vrouw en dochter voor de vele uren die ik met dit project bezig ben geweest en hun ondersteuning hierbij. Speciale dank aan: Matt Neer, Ross Singer, Bo Baker, and Andromeda Yelton voor het helpen tijdens de begin fase van het project en John Blyberg voor de laatste korrekties. De ontwikkeling van alle goede delen van versie 2.0 komen door de geweldige programmeerkunsten van Matthias Strubel en David Brooks. +aboutFilesTopKickstarter = LibraryBox v2.1 zou niet mogelijk zijn zonder de support van Kickstarter Backers, waarvan de namen hieronder staan. Dank aan mijn vrouw en dochter voor de vele uren die ik met dit project bezig ben geweest en hun ondersteuning hierbij. Speciale dank aan: Matt Neer, Ross Singer, Bo Baker, and Andromeda Yelton voor het helpen tijdens de begin fase van het project en John Blyberg voor de laatste korrekties. De ontwikkeling van alle goede delen van versie 2.0 komen door de geweldige programmeerkunsten van Matthias Strubel en David Brooks. aboutFilesTopSafety = LibraryBox is ontwikkeld om anoniem en veilig te zijn. Je hoeft niet in te loggen en er wordt geen gebruikersinformatie bijgehouden. Het systeem is expres niet verbonden met internet om zo de privacy van gebruikers veilig te stellen. aboutFilesTopView = Bekijk download en bezoekers statistieken aboutKickstarterBackers = Kickstarter Backers diff --git a/LibraryBox-landingpage/www_content/locales/data.no.properties b/LibraryBox-landingpage/www_content/locales/data.no.properties index a444dac..f278ad3 100644 --- a/LibraryBox-landingpage/www_content/locales/data.no.properties +++ b/LibraryBox-landingpage/www_content/locales/data.no.properties @@ -33,7 +33,7 @@ indexShoutboxRed = Rød aboutWelcomeAboutLibrarybox = Om LibraryBox aboutWelcomeDescription = LibraryBox er lager for å gjøre det mulig å sore digital informasjon i områder hvor det er liten eller ingen internetforbindelse. Dette gjør den gjennom bruk av fri og åpen programvare go svært billing maskinvare. Dette gjør at set er mulig å sore digital informasjon til en langt lavers pris enn andre alternativ. Om du vil vote mer om LibraryBox prosjektet kan du gå til: http://librarybox.us når du er tilbake på internett. aboutFilesTopThanks = Takk -aboutFilesTopKickstarter = LibraryBox v2.0 hadde ikke vært mulig uten støtte fra Kickstarter støttespillere. Alle er på listen under. Takk til min kone og datter for all støtte og for at dere holdt ut lange kvelder. Spesiell takk til: Matt Neer, Ross Singer, Bo Baker, og Andromeda Yelton for en hjelpende hånd tidlig i prosjektets liv og +aboutFilesTopKickstarter = LibraryBox v2.1 hadde ikke vært mulig uten støtte fra Kickstarter støttespillere. Alle er på listen under. Takk til min kone og datter for all støtte og for at dere holdt ut lange kvelder. Spesiell takk til: Matt Neer, Ross Singer, Bo Baker, og Andromeda Yelton for en hjelpende hånd tidlig i prosjektets liv og til John Blyberg for å komme susende inn i siste øyeblikk. Utviklingen av alle de gode delene av v2.0 er takket være den utrolig talentfulle kodingen til Matthias Strubel og brukergrensesnittarbeidet til David Brooks. aboutFilesTopSafety = LibraryBox er utviklet for å være trygg og sikker. Ingen pålogging er krevet og ingen brukerdata blir lagret. Systemet er med vilje ikke knyttet til internett for å forindre sporing og for å bevare ditt personvern. aboutFilesTopView = Se nedlastings- og besøksstatistikk diff --git a/LibraryBox-landingpage/www_content/locales/data.sv.properties b/LibraryBox-landingpage/www_content/locales/data.sv.properties index 50f2496..95013c0 100644 --- a/LibraryBox-landingpage/www_content/locales/data.sv.properties +++ b/LibraryBox-landingpage/www_content/locales/data.sv.properties @@ -33,7 +33,7 @@ indexShoutboxRed = Röd aboutWelcomeAboutLibrarybox = Om LibraryBox aboutWelcomeDescription = LibraryBox är utvecklat för att möjliggöra spridningen av digital information till områden som har liten eller ingen Internet-åtkomst, till och med utan elnät. Det använder mjukvara baserad på öppen källkod och mycket billig hårdvara, vilket gör att digital information kan spridas till mycket lägre kostnader än andra lösningar. Om du vill veta mer om LibraryBox-projektet, besök gärna http://librarybox.us när du är tillbaka på Internet. aboutFilesTopThanks = Tack -aboutFilesTopKickstarter = LibraryBox v2.0 skulle inte ha varit möjlig utan stöd från Kickstarter-uppbackarna, vilka alla listas nedan. Tack till min fru och dotter för att ni stod ut med alla sena timmar och för allt stöd. Särskilt tack till: Matt Neer, Ross Singer, Bo Baker och Andromeda Yelton som hjälpte till i början av projektet, och till John Blyberg som dök upp i sista minuten. Utvecklingen av i princip alla de bra delarna av v2.0-releasen är resultatet av den fantastiska programmeringstalangen hos Matthias Strubel och gränssnittsarbetet av David Brooks. +aboutFilesTopKickstarter = LibraryBox v2.1 skulle inte ha varit möjlig utan stöd från Kickstarter-uppbackarna, vilka alla listas nedan. Tack till min fru och dotter för att ni stod ut med alla sena timmar och för allt stöd. Särskilt tack till: Matt Neer, Ross Singer, Bo Baker och Andromeda Yelton som hjälpte till i början av projektet, och till John Blyberg som dök upp i sista minuten. Utvecklingen av i princip alla de bra delarna av v2.0-releasen är resultatet av den fantastiska programmeringstalangen hos Matthias Strubel och gränssnittsarbetet av David Brooks. aboutFilesTopSafety = LibraryBox är utvecklat för att vara säkert och skyddat. Det krävs ingen inloggning och inga användardata loggas. Systemet är medvetet inte kopplat till Internet för att förhindra spårning och för att skydda användarnas integritet. aboutFilesTopView = Se nedladdnings- och besökarstatistik aboutKickstarterBackers = Kickstarter-uppbackare diff --git a/LibraryBox-landingpage/www_content/locales/data.sw.properties b/LibraryBox-landingpage/www_content/locales/data.sw.properties index baf83d6..eab367b 100644 --- a/LibraryBox-landingpage/www_content/locales/data.sw.properties +++ b/LibraryBox-landingpage/www_content/locales/data.sw.properties @@ -33,7 +33,7 @@ indexShoutboxRed = Nyekundu aboutWelcomeAboutLibrarybox = Kuhusu LibraryBox aboutWelcomeDescription = LibraryBox iliundwa kuwezesha mgwawanyo wa digital information kwa maeneo bila Internet. Inatumia programu open source na hardware ya bei rahisi, kuruhusu mgwawanyo wa digital information kwa bei nafuu. Ukitaka kujifunza zaidi kuhusu LibraryBox Project, elekea http://librarybox.us aboutFilesTopThanks = Asante -aboutFilesTopKickstarter = LibraryBox v2.0 haingewengezeka bila Kickstarter Backers, majina zao ziko hapa. Asanteni kwa bibi and binti yangu kwa kuni ruhusu kutengeza hi Programu. Shukrani Maalum: Matt Neer, Ross Singer, Bo Baker, na Andromeda Yelton kwa kunisaidia, na John Blyberg kwa kazi yake. Maendeleo yote mpya ya v2.0 ni kwa sababu ya Matthias Strubel na kazi ya UI ni ya David Brooks. +aboutFilesTopKickstarter = LibraryBox v2.1 haingewengezeka bila Kickstarter Backers, majina zao ziko hapa. Asanteni kwa bibi and binti yangu kwa kuni ruhusu kutengeza hi Programu. Shukrani Maalum: Matt Neer, Ross Singer, Bo Baker, na Andromeda Yelton kwa kunisaidia, na John Blyberg kwa kazi yake. Maendeleo yote mpya ya v2.0 ni kwa sababu ya Matthias Strubel na kazi ya UI ni ya David Brooks. aboutFilesTopSafety = LibraryBox iko salama na ime fungwa kutoka Internet kwa hivyo uwezo was kufuatilia utumiaji haimo aboutFilesTopView = Angalia Utumiaji aboutKickstarterBackers = Kickstarter Backers diff --git a/LibraryBox-landingpage/www_content/stats.html b/LibraryBox-landingpage/www_content/stats.html index 9b24582..1307950 100755 --- a/LibraryBox-landingpage/www_content/stats.html +++ b/LibraryBox-landingpage/www_content/stats.html @@ -3,7 +3,7 @@ - LibraryBox 2.1 Beta + LibraryBox 2.1 From aa27b072c89beadc56fbcb33a2b8328bcdcef1b6 Mon Sep 17 00:00:00 2001 From: Matthias Strubel Date: Thu, 10 Dec 2015 19:55:55 +0100 Subject: [PATCH 72/90] Fix Folder links with special characters - Fixes #12 --- customization/www_librarybox/dir-generator.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/customization/www_librarybox/dir-generator.php b/customization/www_librarybox/dir-generator.php index 6ce5b34..e6a2a6a 100644 --- a/customization/www_librarybox/dir-generator.php +++ b/customization/www_librarybox/dir-generator.php @@ -394,7 +394,7 @@ function get_utf8_encoded($string) { // Print folder information foreach($folderlist as $folder) { - print "
"; + print ""; //print ""; print ""; print "\n"; From 49a22651989f1906d80b86b5452bb34fda436e69 Mon Sep 17 00:00:00 2001 From: Matthias Strubel Date: Thu, 10 Dec 2015 20:08:45 +0100 Subject: [PATCH 73/90] dir-generator.php: Also make the word Parent as a link --- customization/www_librarybox/dir-generator.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/customization/www_librarybox/dir-generator.php b/customization/www_librarybox/dir-generator.php index e6a2a6a..e9f62fd 100644 --- a/customization/www_librarybox/dir-generator.php +++ b/customization/www_librarybox/dir-generator.php @@ -384,7 +384,7 @@ function get_utf8_encoded($string) { // Parent directory link if($path != "./") { - print ""; + print ""; //print ""; print ""; print "\n"; From 816d5687b80a5fd0bbb4cc152a10719338028dfa Mon Sep 17 00:00:00 2001 From: Matthias Strubel Date: Thu, 10 Dec 2015 20:38:10 +0100 Subject: [PATCH 74/90] LibraryBox 2.1 release Features: - minidlna pre installed - minidlna activation via box_init_setup.sh - Encoding fixes for directory listing - More multi-language options - Autoflash via LibraryBox-Installer for smoother upgrades - Streamlineing with PirateBox build process - Preparations for RaspberryPi support --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 7c6a01b..944f2e3 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ NAME = librarybox -VERSION = 2.1.0_beta3 +VERSION = 2.1.0 ARCH = all #PIRATEBOX_IMG_URL = "http://piratebox.aod-rpg.de/piratebox_ws_0.6_img.gz" From b1735dba1899e5e2206cf8f610f6b9622565b1f2 Mon Sep 17 00:00:00 2001 From: Jason Griffey Date: Mon, 28 Sep 2015 22:13:30 -0400 Subject: [PATCH 75/90] Added Brazilian portugeuse and testing hebrew for localizations MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Hebrew is under testing…have never tried a right-to-left language before. --- .../www_content/locales/data.he.properties | 57 +++++++++++++++++++ .../www_content/locales/data.pt-br.properties | 55 ++++++++++++++++++ .../www_content/locales/locales.ini | 8 ++- 3 files changed, 119 insertions(+), 1 deletion(-) create mode 100644 LibraryBox-landingpage/www_content/locales/data.he.properties create mode 100644 LibraryBox-landingpage/www_content/locales/data.pt-br.properties diff --git a/LibraryBox-landingpage/www_content/locales/data.he.properties b/LibraryBox-landingpage/www_content/locales/data.he.properties new file mode 100644 index 0000000..e2322d2 --- /dev/null +++ b/LibraryBox-landingpage/www_content/locales/data.he.properties @@ -0,0 +1,57 @@ +# Hebrew translation +# vim: ft=jproperties + +commonNavbarToggle = +commonNavbarHome = +commonNavbarText = +commonNavbarAudio = +commonNavbarVideo = +commonNavbarApps = +commonNavbarAll = +commonNavbarStats = +commonNavbarAbout = +commonFooterBackToTop = +commonFooterLicenceMain = LibraryBox GPLv2. : https://www.gnu.org/licenses/gpl-2.0.html. + +commonFooterLicenceOther = , NC-BY.http://librarybox.us : + +commonFilestopNothingDownloaded = . ? + +indexContentWelcome = LibraryBox v2.1 +indexContentWelcomeDescription = , . +indexContentWelcomePrivate = LibraryBox . +indexFilestopTop = +indexChatChat = +indexChatSend = +indexChatName.placeholder = +indexChatName.value = +indexChatMessage.placeholder = +indexShoutboxDefault = +indexShoutboxBlue = +indexShoutboxGreen = +indexShoutboxOrange = +indexShoutboxRed = + +aboutWelcomeAboutLibrarybox = LibraryBox +aboutWelcomeDescription = LibraryBox http://librarybox.us- . , . , +aboutFilesTopThanks = +aboutFilesTopKickstarter = . , . . : , , , ' . 2.0 - ' +aboutFilesTopSafety = . . , - . +aboutFilesTopView = , +aboutKickstarterBackers = Kickstarter + +statsWelcomeDownloads = LibraryBox +statsWelcomeDescription = . +statsFilesTopUserCounts = +statsFilesTopNoVisitor = . /. +statsFilesTopDownloads = +statsVisitors = : +statsDownloads = : + +filedirIndex = / +filedirName = +filedirSize = +filedirType = +filedirDownloads = +filedirParDir = + diff --git a/LibraryBox-landingpage/www_content/locales/data.pt-br.properties b/LibraryBox-landingpage/www_content/locales/data.pt-br.properties new file mode 100644 index 0000000..c7ca31f --- /dev/null +++ b/LibraryBox-landingpage/www_content/locales/data.pt-br.properties @@ -0,0 +1,55 @@ +# Brasilian Portuguese translation +# vim: ft=jproperties + +commonNavbarToggle = Abrir Navegação +commonNavbarHome = Início +commonNavbarText = Texto +commonNavbarAudio = Audio +commonNavbarVideo = Video +commonNavbarApps = Apps +commonNavbarAll = Todo o conteúdo +commonNavbarStats = Estatísticas +commonNavbarAbout = Sobre +commonFooterBackToTop = Voltar ao topo +commonFooterLicenceMain = O projeto LibraryBox Project é um Software Licenciado em GPLv2, veja https://www.gnu.org/licenses/gpl-2.0.html para detalhes da licença. +commonFooterLicenceOther = Todo o conteúdo do LibraryBox, não licenciado de outra maneira, é lançado sob uma licença Creative Commons NC-BY. Para mais informações, visite http://librarybox.us +commonFilestopNothingDownloaded = Nada foi baixado ainda. Por que não começar essa festa? + +indexContentWelcome = Bem vindo ao LibraryBox v2.1 +indexContentWelcomeDescription = Procure e baixe qualquer arquivo disponível, ou bata papo com outros usuários abaixo. +indexContentWelcomePrivate = LibraryBox é privativo; nenhum log ou outro dado de identificação é armazenado. +indexFilestopTop = Mais Baixados +indexChatChat = Bate Papo +indexChatSend = Enviar +indexChatName.placeholder = Pseudo +indexChatName.value = Anônimo +indexChatMessage.placeholder = Messagem… +indexShoutboxDefault = Padrão +indexShoutboxBlue = Azul +indexShoutboxGreen = Verde +indexShoutboxOrange = Laranja +indexShoutboxRed = Vermelho + +aboutWelcomeAboutLibrarybox = Sobre o LibraryBox +aboutWelcomeDescription = LibraryBox é desenhado para permitir a distribuição de informação digital a áreas com pouco ou nenhum acesso a internet, mesmo desconectado. Ele faz isso utilizando um programa de código livre e equipamentos de baixo custos, permitindo a distribuição de informação digital a custos bem muito mais baixos que outras soluções. Se você tiver interesse em aprender mais sobre o projeto LibraryBox, por favor visite http://librarybox.us quando tiver internet novamente. +aboutFilesTopThanks = Obrigado +aboutFilesTopKickstarter = LibraryBox v2.0 não seria possível sem o suporte dos Apoiadores do Kickstarter, todos eles listados abaixo. Obrigado a minha mulher e filha pelas longas horas e todo o suporte. Agradecimentos especiais a: Matt Neer, Ross Singer, Bo Baker, e Andromeda Yelton por darem uma mão no início da vida do projeto, e a John Blyberg por se unir nos últimos minutos. O desenvolvimento de basicamente todas as partes boas da v2.0 é devido aos incríveis talentos de programação de Matthias Strubel e ao trabalho de interface de usuário do David Brooks. +aboutFilesTopSafety = LibraryBox é desenhado para ser seguro e protegido. Nenhum login é necessário e nenhum dado sobre o usuário é gravado. O sistema é propositalmente desconectado da internet afim de prevenir rastreamento e preservar a privacidade dos usuários. +aboutFilesTopView = Veja estatísticas de download e visitantes +aboutKickstarterBackers = Apoiadores do Kickstarter + +statsWelcomeDownloads = LibraryBox Downloads +statsWelcomeDescription = Abaixo estão as estatísticas de download e contagem de usuários para esse LibraryBox. +statsFilesTopUserCounts = Contagem de usuários +statsFilesTopNoVisitor = Nenhum visitante ainda. Isto provavelmente significa que você não configurou a data/hora no LibraryBox. +statsFilesTopDownloads = Downloads de Conteúdo +statsVisitors = Visitantes: +statsDownloads = Downloads: + +filedirIndex = Índice de / +filedirName = Nome +filedirSize = Tamanho +filedirType = Tipo +filedirDownloads = Downloads +filedirParDir = Diretório superior + diff --git a/LibraryBox-landingpage/www_content/locales/locales.ini b/LibraryBox-landingpage/www_content/locales/locales.ini index b1037d5..7fa0a44 100644 --- a/LibraryBox-landingpage/www_content/locales/locales.ini +++ b/LibraryBox-landingpage/www_content/locales/locales.ini @@ -29,4 +29,10 @@ @import url(data.hr.properties) [id] -@import url(data.id.properties) \ No newline at end of file +@import url(data.id.properties) + +[pt-br] +@import url(data.pt-br.properties) + +[he] +@import url(data.he.properties) \ No newline at end of file From 17250a708ac04ee74c5327532d4fafebb204d3be Mon Sep 17 00:00:00 2001 From: Jason Griffey Date: Sun, 13 Dec 2015 00:24:49 -0600 Subject: [PATCH 76/90] Fixed SVG mime type issue Added ".svg" => "image/svg+xml" to mime.types, should be fix for SVG rendering in browser --- .../piratebox/conf/lighttpd/mime.types | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/piratebox_origin/piratebox/piratebox/conf/lighttpd/mime.types b/piratebox_origin/piratebox/piratebox/conf/lighttpd/mime.types index ea8b09a..81a3f09 100644 --- a/piratebox_origin/piratebox/piratebox/conf/lighttpd/mime.types +++ b/piratebox_origin/piratebox/piratebox/conf/lighttpd/mime.types @@ -4,7 +4,7 @@ ## Use the "Content-Type" extended attribute to obtain mime type if ## possible ## -mimetype.use-xattr = "disable" +mimetype.use-xattr = "disable" ## ## mimetype mapping @@ -63,14 +63,14 @@ mimetype.assign = ( ".bz2" => "application/x-bzip", ".tbz" => "application/x-bzip-compressed-tar", ".tar.bz2" => "application/x-bzip-compressed-tar", - ".odt" => "application/vnd.oasis.opendocument.text", - ".ods" => "application/vnd.oasis.opendocument.spreadsheet", - ".odp" => "application/vnd.oasis.opendocument.presentation", - ".odg" => "application/vnd.oasis.opendocument.graphics", - ".odc" => "application/vnd.oasis.opendocument.chart", - ".odf" => "application/vnd.oasis.opendocument.formula", - ".odi" => "application/vnd.oasis.opendocument.image", - ".odm" => "application/vnd.oasis.opendocument.text-master", + ".odt" => "application/vnd.oasis.opendocument.text", + ".ods" => "application/vnd.oasis.opendocument.spreadsheet", + ".odp" => "application/vnd.oasis.opendocument.presentation", + ".odg" => "application/vnd.oasis.opendocument.graphics", + ".odc" => "application/vnd.oasis.opendocument.chart", + ".odf" => "application/vnd.oasis.opendocument.formula", + ".odi" => "application/vnd.oasis.opendocument.image", + ".odm" => "application/vnd.oasis.opendocument.text-master", ".ott" => "application/vnd.oasis.opendocument.text-template", ".ots" => "application/vnd.oasis.opendocument.spreadsheet-template", ".otp" => "application/vnd.oasis.opendocument.presentation-template", @@ -83,6 +83,7 @@ mimetype.assign = ( ".json" => "application/json", ".epub" => "application/epub+zip", ".fb2" => "text/xml", + ".svg" => "image/svg+xml" # make the default mime type application/octet-stream. "" => "application/octet-stream", From 6fe3039894432a39fd4cef64d0831f2701c22d44 Mon Sep 17 00:00:00 2001 From: Matthias Strubel Date: Sun, 13 Dec 2015 13:03:04 +0100 Subject: [PATCH 77/90] Revert "Fixed SVG mime type issue" This reverts commit 17250a708ac04ee74c5327532d4fafebb204d3be. --- .../piratebox/conf/lighttpd/mime.types | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/piratebox_origin/piratebox/piratebox/conf/lighttpd/mime.types b/piratebox_origin/piratebox/piratebox/conf/lighttpd/mime.types index 81a3f09..ea8b09a 100644 --- a/piratebox_origin/piratebox/piratebox/conf/lighttpd/mime.types +++ b/piratebox_origin/piratebox/piratebox/conf/lighttpd/mime.types @@ -4,7 +4,7 @@ ## Use the "Content-Type" extended attribute to obtain mime type if ## possible ## -mimetype.use-xattr = "disable" +mimetype.use-xattr = "disable" ## ## mimetype mapping @@ -63,14 +63,14 @@ mimetype.assign = ( ".bz2" => "application/x-bzip", ".tbz" => "application/x-bzip-compressed-tar", ".tar.bz2" => "application/x-bzip-compressed-tar", - ".odt" => "application/vnd.oasis.opendocument.text", - ".ods" => "application/vnd.oasis.opendocument.spreadsheet", - ".odp" => "application/vnd.oasis.opendocument.presentation", - ".odg" => "application/vnd.oasis.opendocument.graphics", - ".odc" => "application/vnd.oasis.opendocument.chart", - ".odf" => "application/vnd.oasis.opendocument.formula", - ".odi" => "application/vnd.oasis.opendocument.image", - ".odm" => "application/vnd.oasis.opendocument.text-master", + ".odt" => "application/vnd.oasis.opendocument.text", + ".ods" => "application/vnd.oasis.opendocument.spreadsheet", + ".odp" => "application/vnd.oasis.opendocument.presentation", + ".odg" => "application/vnd.oasis.opendocument.graphics", + ".odc" => "application/vnd.oasis.opendocument.chart", + ".odf" => "application/vnd.oasis.opendocument.formula", + ".odi" => "application/vnd.oasis.opendocument.image", + ".odm" => "application/vnd.oasis.opendocument.text-master", ".ott" => "application/vnd.oasis.opendocument.text-template", ".ots" => "application/vnd.oasis.opendocument.spreadsheet-template", ".otp" => "application/vnd.oasis.opendocument.presentation-template", @@ -83,7 +83,6 @@ mimetype.assign = ( ".json" => "application/json", ".epub" => "application/epub+zip", ".fb2" => "text/xml", - ".svg" => "image/svg+xml" # make the default mime type application/octet-stream. "" => "application/octet-stream", From 5a405ba7af4175f7660937d584315fbc26e6834b Mon Sep 17 00:00:00 2001 From: Matthias Strubel Date: Sun, 13 Dec 2015 13:10:05 +0100 Subject: [PATCH 78/90] Patch PirateBox upstream code with svg support if not included Fixes #31 --- Makefile | 1 + 1 file changed, 1 insertion(+) diff --git a/Makefile b/Makefile index eced009..e1afa42 100644 --- a/Makefile +++ b/Makefile @@ -70,6 +70,7 @@ define ReconfigureConfig echo 'include "/opt/piratebox/conf/lighttpd/fastcgi.conf"' >> $(1)/lighttpd/lighttpd.conf echo 'include "/opt/piratebox/conf/lighttpd/custom_index.conf"' >> $(1)/lighttpd/lighttpd.conf sed 's|IPV6_ENABLE="no"|IPV6_ENABLE="yes"|' -i $(1)/ipv6.conf + grep -q "svg" $(1)/lighttpd/mime.types || sed -i 's|".fb2" => "text/xml",|".fb2" => "text/xml",\n".svg" => "image/svg+xml",|' $(1)/lighttpd/mime.types endef building: $(BUILD_SCRIPT_LOCATION) From 5b07ec0c17ad65b173c77b6726af6871ade459cb Mon Sep 17 00:00:00 2001 From: Matthias Strubel Date: Sun, 13 Dec 2015 13:15:14 +0100 Subject: [PATCH 79/90] Squashed 'piratebox_origin/' changes from 274b839..de985d3 de985d3 Merge branch 'hotfix-1.0.6' 59ab973 Also remove grey background color of droopy, which looks bad on some devices c484fa1 Raizing version for release preparing bdffc64 Adding droopy fix to changelog 8957bc6 Fix orientation / linebreaks of the upload box 088c202 Merge branch 'hotfix-1.0.5' 4c6c297 Release preparation for 1.0.5 66b8407 Improved handling of timesave script on normal Linux system. d266d74 Better styling for droopy upload frame c28860d Removes an unwanted linebreak in the droopy startup 20753b0 Merge branch 'master' of github.com:PirateBox-Dev/PirateBoxScripts_Webserver 4c631d5 Hotfix release 1.0.4 3bc6242 Merge pull request #122 from gitter-badger/gitter-badge afdc175 Added Gitter badge b5f794e Fixes not working Python Script for generating 204 e5470cc Cleanup unnessecary spacer files 936f26c Display Station count again. 7333b8a Set the Timestamp of the shoutbox generated file with a delay. 4f26929 Remove spacer index.htm and generate first page aff1bea Changelog entry for generate_204 patch c19b591 Generate the HTTP Resonse with python for 1.0.x PirateBox too 8c099f2 Generate default page for forum link 3ab58c5 Disabling exchange_www.sh - it helped nobody, only breakes stuff. 05edc74 Added CHANGELOG informations to commit 70823c1e4faef9c5556c714e4cb94bfd4630cb99 70823c1 This commit aligns the Droopy code back to the latest versions. b7a6b70 Merge pull request #119 from jessstubenbord/hotfix-1.0.4 6f3ef8f Edited Authors & Changelog files 2d79bdf Reformatted about & gave body an id 6802381 Reformatted welcome card 2da5a68 Improve cache handling of redirect.html and it schema file c701d79 Merge branch 'patch-2' of https://github.com/herr-gabriel/PirateBoxScripts_Webserver into herr-gabriel-patch-1 44c9071 Fixes a typo , finalizes Backport #118 8046279 Feature: board-autoconf.sh for OpenWrt available Made the board un-useable, if it is not setup. fdb686e Add interactive imageboard system configuration 67c1ad0 Added redirect fix d9fa73b Fixed accidental redirects 407f40f added forgotten Changelog entry 6626cbc Merge branch 'hotfix-1.0.2' - Hotfix 1.0.2 release a98d3d3 Added new Fixes & authors to changelog Updated version to 1.0.2 a4103de Merge pull request #93 from Sjd-Risca/hotfix-1.0.2 602ec24 Bugfix: the scritp distribute_file_into_directory is now working even when the path contain white spaces. 9e44802 Merge pull request #92 from Sjd-Risca/installscript 46b6500 typo in bash test a8dcaf7 typo in bash test 00646cb typo error: the comparison of string in bash require only on "=" 6d534fd Dash compatibility issue (many system use dash as default shell) 8fe529c typo error: the default parameter of line 31 (src_file) should be a string, not a variable! 3ae5c4d Now the file path of the install.sh script is absolute, therefore it will be possible to launch the script also from other path like: /bin/bash /home/myuser/PirateBoxScripts_Webserver-master/piratebox/install.sh This also corrects a wrong path on line 47 that was causing the install script to fail. 530b050 Now the path is absolute, therefore the install.sh script could be launched by any path, eg. the following will work as well: /bin/bash/ /home/myuser/PirateBoxScripts_Webserver-master/piratebox/install.sh Also line 36 and line 47 where pointing to incompatible launching path (the first was in PirateBoxScripts_Webserver-master/piratebox, the second just in PirateBoxScripts_Webserver-master/). 4e43cc6 Merge pull request #87 from Liblor/hotfix-1.0.2 e62a50e Unified HTML-character-escaping 646174b Some documentation cleanups 2a72bad Merge branch 'hotfix-1.0.2' of github.com:PirateBox-Dev/PirateBoxScripts_Webserver into hotfix-1.0.2 dbadab0 Merge pull request #84 from Liblor/hotfix-1.0.2 ea24f6d Merge branch 'indentation_fix' into hotfix-1.0.2 f347b96 [FIX] Consistent use of indentation e7388d8 added fix_probe to Changelog b53ca9e move "probe" function to the top of the script, that it can be found in any case 157e13f Corrected wrong permission setup like commented in 3021d2cdd646a48e0fc115e3addb3d7d6dcd7ff5 git-subtree-dir: piratebox_origin git-subtree-split: de985d3a2d5c104a1ef0aeb49a4bb6513c24cb78 --- AUTHORS | 17 +- BuildScripts/timesave.service | 10 + CHANGELOG | 47 + Makefile | 4 +- README.md | 5 +- piratebox/install.sh | 6 +- piratebox/piratebox/bin/board-autoconf.sh | 22 + .../bin/distribute_file_into_directory.sh | 4 +- piratebox/piratebox/bin/distribute_files.sh | 4 +- piratebox/piratebox/bin/droopy | 1070 +++++++++-------- piratebox/piratebox/bin/exchange_www.sh | 13 +- piratebox/piratebox/bin/install_piratebox.sh | 16 +- .../piratebox/bin/piratebox_setup_wlan.sh | 41 +- piratebox/piratebox/bin/shoutbox_stuff.sh | 4 +- piratebox/piratebox/bin/timesave.sh | 7 +- .../piratebox/conf/lighttpd/lighttpd.conf | 4 + piratebox/piratebox/conf/piratebox.conf | 7 + piratebox/piratebox/init.d/piratebox | 4 +- piratebox/piratebox/init.d/piratebox_alt | 2 +- piratebox/piratebox/python_lib/broadcast.py | 4 +- piratebox/piratebox/python_lib/discover.py | 18 +- piratebox/piratebox/python_lib/messages.py | 59 +- piratebox/piratebox/python_lib/psogen.py | 49 +- piratebox/piratebox/src/forban_link.html | 1 - piratebox/piratebox/src/forum_forest.html | 13 - piratebox/piratebox/src/forum_kareha.html | 13 - piratebox/piratebox/src/kareha_img_config.pl | 6 +- piratebox/piratebox/src/no_forum.html | 10 + piratebox/piratebox/src/redirect.html.schema | 4 +- piratebox/piratebox/www/cgi-bin/psowrte.py | 12 +- piratebox/piratebox/www/generate_204 | 3 + piratebox/piratebox/www/index.html | 27 +- piratebox/piratebox/www/redirect.html | 4 +- piratebox/piratebox/www/scripts.js | 11 +- 34 files changed, 828 insertions(+), 693 deletions(-) create mode 100644 BuildScripts/timesave.service create mode 100755 piratebox/piratebox/bin/board-autoconf.sh delete mode 100644 piratebox/piratebox/src/forban_link.html delete mode 100755 piratebox/piratebox/src/forum_forest.html delete mode 100755 piratebox/piratebox/src/forum_kareha.html create mode 100644 piratebox/piratebox/src/no_forum.html create mode 100644 piratebox/piratebox/www/generate_204 diff --git a/AUTHORS b/AUTHORS index acf7a17..f90ff02 100644 --- a/AUTHORS +++ b/AUTHORS @@ -4,19 +4,26 @@ Script collection by: Matthias Strubel http://piratebox.aod-rpg.de Live CD & Installer by: - TerrorByte + TerrorByte ~ Cale Blac k Contributors for modifications: - * General Support # stylesuxx - Makefile and development support # FriedZombie - OpenWRT and scripting support - * Droopy # someguy - Droopy Directory support # Reventlov - Modification for better iOS Support - * python Forum # someguy - Modifications for running on OpenWRT # ToM'aSs - Languag-Support - # Liblor - Fixes + # Liblor - Fixes + # Loris Reiff + # iamarf + # stylesuxx + # denis-d + # taffy-nay + # risca + # herr-gabriel + # Jess Stubenbord + # ... and all others I might have forgotten. + Design: * David Brooks diff --git a/BuildScripts/timesave.service b/BuildScripts/timesave.service new file mode 100644 index 0000000..26a4c13 --- /dev/null +++ b/BuildScripts/timesave.service @@ -0,0 +1,10 @@ +[Unit] +Description=PirateBox timesave service + +[Service] +Type=oneshot +ExecStart=/opt/piratebox/bin/timesave.sh /opt/piratebox/conf/piratebox.conf recover +TimeoutSec=20 + +[Install] +WantedBy=multi-user.target diff --git a/CHANGELOG b/CHANGELOG index 422638d..bc9f575 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,5 +1,52 @@ CHANGELOG +=== 1.0.6 === +* [Fix] Styling of the upload box iframe was quite ugly. + +=== 1.0.5 === +* [New] Improved styling for droopy iframe. +* [New] Timesave script service file to run set the time during startup. +* [Fix] Droopy call in init.d/piratebox failed to use the correct port. +* [Fix] Timesave script behaviour fixed on full Linux systems. +* OpenWrt's date format is now customized during build & piratebox.conf . + +=== 1.0.4 === +* [New] New feature: /opt/piratebox/bin/board-autoconf.sh for setting up the imageboard +* [New] Droopy update: Multiple upload +* [New] Droopy update: In general user/password setting (non configurable via + PirateBox) +* [New] imageboard: inital dummy page for a not installed board. +* [New] Send HTTP-Code 204 for Android devices, avoids captive Portal and leaving devices. + +* [Fix] Some script cleanups +* [Fix] Improved Cachehandling +* [Fix] Modified index HTML structure for increased stylability +* [Fix] Droopy update: Language encoding +* [Fix] Droopy update: Uploaded filepermission can be configured. + PirateBox default: 755 +* [Fix] Fix not refreshing shoutbox after bootup +* [Fix] Show station count again, after it is enabled + +* [Removed] Droopy update: Include hostname to templates (not needed anymore) +* [Removed] Droopy update: Field including iframe for shoutbox (not needed anymore) +* [Removed] Droopy update: iOS fake answer code, which was included in lighttpd since + Piratebox 0.5.x +* [Removed] exchange_www.sh : This feature is not available anymore, because it breaks + more then it helps. +* [Removed] Unnessecary AJAX calls & files from pre 1.0 + +=== 1.0.3 === + + (skipped) + +=== 1.0.2 === +* [Fix] Settings for correct permission of shoutbox files +* [Fix] Broken probe function in some shells +* [Fix] Issues with Python scripts on some plattforms +* [Fix] Fixes in installation script +* [Fix] Distribute files did not work with folder containing whitespaces +* [Fix] Fixed CSS issue with the shoutbox + === 1.0.1 === * [Fix] Fixed setting permissions of shoutbox datafile * [New] Service File for RPi image diff --git a/Makefile b/Makefile index 7e63e0b..94dac15 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ NAME = piratebox-ws -VERSION = 1.0.1 +VERSION = 1.0.6 ARCH = all PB_FOLDER=piratebox PB_SRC_FOLDER=$(PB_FOLDER)/$(PB_FOLDER) @@ -49,6 +49,8 @@ $(OPENWRT_CONFIG_FOLDER): sed 's:192.168.77:192.168.1:g' -i $@/piratebox.conf sed 's:DROOPY_USE_USER="yes":DROOPY_USE_USER="no":' -i $@/piratebox.conf sed 's:LEASE_FILE_LOCATION=$$PIRATEBOX_FOLDER/tmp/lease.file:LEASE_FILE_LOCATION=/tmp/lease.file:' -i $@/piratebox.conf + sed 's:TIMESAVE_FORMAT="":TIMESAVE_FORMAT="+%C%g%m%d%H%M":' -i $@/piratebox.conf + $(OPENWRT_BIN_FOLDER): mkdir -p $@ diff --git a/README.md b/README.md index ed4be83..368646a 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,10 @@ # PirateBoxScripts with Modifications for running in a Webserver -© 2013 [Matthias Strubel](mailto:matthias.strubel@aod-rpg.de) licenced under GPL-3 + +[![Join the chat at https://gitter.im/PirateBox-Dev/PirateBoxScripts_Webserver](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/PirateBox-Dev/PirateBoxScripts_Webserver?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) +© 2012-2014 [Matthias Strubel](mailto:matthias.strubel@aod-rpg.de) licenced under GPL-3 ## Maintainers * [Matthias Strubel](matthias.strubel@aod-rpg.de) -* [Cale Black](cablack@rams.colostate.edu) Sources for Running PirateBox with Webserver lighttpd Contains: Shoutbox, Forum diff --git a/piratebox/install.sh b/piratebox/install.sh index 5cc6936..4147439 100755 --- a/piratebox/install.sh +++ b/piratebox/install.sh @@ -18,6 +18,8 @@ #======================================================================= #Import PirateBox conf CURRENT_CONF=piratebox/conf/piratebox.conf +scriptfile="$(readlink -f $0)" +CURRENT_DIR="$(dirname ${scriptfile})" #Must be root if [[ $EUID -ne 0 ]]; then @@ -32,7 +34,7 @@ else exit 0 fi -if [[ -f $CURRENT_CONF ]]; then +if [[ -f "$CURRENT_DIR"/$CURRENT_CONF ]]; then . $CURRENT_CONF 2> /dev/null else echo "PirateBox config is not in its normal directory" @@ -44,7 +46,7 @@ if [[ ! -d /opt ]]; then mkdir -p /opt fi -cp -rv piratebox/piratebox /opt &> /dev/null +cp -rv "$CURRENT_DIR"/piratebox /opt &> /dev/null echo "Finished copying files..." echo "$NET.$IP_SHORT piratebox.lan">>/etc/hosts echo "$NET.$IP_SHORT piratebox">>/etc/hosts diff --git a/piratebox/piratebox/bin/board-autoconf.sh b/piratebox/piratebox/bin/board-autoconf.sh new file mode 100755 index 0000000..18f25e1 --- /dev/null +++ b/piratebox/piratebox/bin/board-autoconf.sh @@ -0,0 +1,22 @@ +#!/bin/sh + +if [[ ! -d /opt/piratebox/share/board ]]; then + echo "You have to install the imageboard first!" + echo "Run (as root):" + echo "\t/opt/piratebox/bin/install_piratebox.sh /opt/piratebox/conf/piratebox.conf imageboard" +else + echo -n "Imageboard admin password: " + read -s BOARDPASSWORD + echo + sed -i "s|xyzPASSWORDzyx|$BOARDPASSWORD|g" /opt/piratebox/share/board/config.pl + + TEMPRAND=$(< /dev/urandom tr -dc A-Za-z0-9_ | head -c128) + sed -i "s|xyzSECRETCODEzyx|$TEMPRAND|g" /opt/piratebox/share/board/config.pl + + sed -i "s|#use constant ADMIN_PASS|use constant ADMIN_PASS|" /opt/piratebox/share/board/config.pl + sed -i "s|#use constant SECRET|use constant SECRET|" /opt/piratebox/share/board/config.pl + + # Remove temporary index page and then try to initialize the board + test -e /opt/piratebox/share/board/index.htm && rm /opt/piratebox/share/board/index.htm + wget -q -s -O - http://127.0.0.1/board/kareha.pl 2>/dev/null +fi diff --git a/piratebox/piratebox/bin/distribute_file_into_directory.sh b/piratebox/piratebox/bin/distribute_file_into_directory.sh index 746b648..d109885 100755 --- a/piratebox/piratebox/bin/distribute_file_into_directory.sh +++ b/piratebox/piratebox/bin/distribute_file_into_directory.sh @@ -18,10 +18,10 @@ filename="${src_file##*/}" $DEBUG && echo "filename: $filename" $DEBUG && echo "Overwrite mode : $overwrite " -if [ ! -e $directory/$filename ] || [ "$overwrite" == "true" ] ; then +if [ ! -e "$directory/$filename" ] || [ "$overwrite" = true ] ; then echo "Distribute $filename into $directory " $DEBUG && echo " cp $src_file $directory " - $TEST_RUN || cp $src_file $directory + $TEST_RUN || cp "$src_file" "$directory" else $DEBUG && echo "File exists" fi diff --git a/piratebox/piratebox/bin/distribute_files.sh b/piratebox/piratebox/bin/distribute_files.sh index 20530e5..45d59c4 100755 --- a/piratebox/piratebox/bin/distribute_files.sh +++ b/piratebox/piratebox/bin/distribute_files.sh @@ -28,7 +28,7 @@ destination=$1 overwrite=$2 overwrite=${overwrite:=false} src_file=$3 -src_file=${src_file:=all} +src_file=${src_file:="all"} $DEBUG && echo "parameters: destination $destination @@ -38,7 +38,7 @@ $DEBUG && echo "parameters: call script: $script "; -if [ "$src_file" == "all" ] ; then +if [ "$src_file" = "all" ] ; then work_on_file $destination $PIRATEBOX_FOLDER/src/HEADER.txt work_on_file $destination $PIRATEBOX_FOLDER/src/README.txt else diff --git a/piratebox/piratebox/bin/droopy b/piratebox/piratebox/bin/droopy index f67002c..43f55e7 100755 --- a/piratebox/piratebox/bin/droopy +++ b/piratebox/piratebox/bin/droopy @@ -1,24 +1,26 @@ #!/usr/bin/env python -# -*- coding: utf-8 -*- +# -*- coding: utf-8 -*- # Droopy (http://stackp.online.fr/droopy) -# Copyright 2008-2010 (c) Pierre Duquesne +# Copyright 2008-2013 (c) Pierre Duquesne # Licensed under the New BSD License. # Changelog -# 20130206 * CBlack; changed from os.getenv to ctypes -# 20120421 * Added Directory create.. Thank you "someguy" -# 20120402 * Return success Message for iOS devices # Thank you "Reventlov" -# 20120401 * Input of chatbox from outside... extend modularisation -# 20120317 * MStrubel; no upload of index.html -# 20110314 * MStrubel; hostname as param -# 20110310 * MStrubel; Centraized PB-Chat and hostname :) -# 20110225 * Customized CSS and HTML for PirateBox with Chat -# * Added shoutbox iframes to maintmpl, successtmpl & errortmpl -# * Added favicon link to maintmpl, successtmpl & errortmpl +# 20131121 * Update HTML/CSS for mobile devices +# * Add HTTPS support +# * Add HTTP basic authentication +# * Add option to change uploaded file permissions +# * Add support for HTML5 multiple file upload +# 20120108 * Taiwanese translation by Li-cheng Hsu. +# 20110928 * Correctly save message with --save-config. Fix by Sven Radde. +# 20110708 * Polish translation by Jacek Politowski. +# 20110625 * Fix bug regarding filesystem name encoding. +# * Save the --dl option when --save-config is passed. +# 20110501 * Add the --dl option to let clients download files. +# * CSS speech bubble. # 20101130 * CSS and HTML update. Switch to the new BSD License. # 20100523 * Simplified Chinese translation by Ye Wei. -# 20100521 * Hungarian translation by Csaba Szigetvári. +# 20100521 * Hungarian translation by Csaba Szigetvári. # * Russian translation by muromec. # * Use %APPDATA% Windows environment variable -- fix by Maik. # 20091229 * Brazilian Portuguese translation by @@ -51,7 +53,7 @@ # 20080727 * Spanish translation by Federico Kereki. # 20080624 * Option -d or --directory to specify the upload directory. # 20080622 * File numbering to avoid overwriting. -# 20080620 * Czech translation by Jiří. +# 20080620 * Czech translation by Jiří. # * German translation by Michael. # 20080408 * First release. @@ -70,12 +72,14 @@ import shutil import tempfile import socket import locale +import urllib +import base64 import string from pickle import load,dump from ctypes import CDLL, c_char_p LOGO = '''\ - _____ + _____ | \.----.-----.-----.-----.--.--. | -- | _| _ | _ | _ | | | |_____/|__| |_____|_____| __|___ | @@ -87,27 +91,29 @@ Usage: droopy [options] [PORT] Options: -h, --help show this help message and exit - -H, --hostname set hostname - -c, --chatbox include something + -d DIRECTORY, --directory DIRECTORY set the directory to upload files to -m MESSAGE, --message MESSAGE set the message -p PICTURE, --picture PICTURE set the picture - -d DIRECTORY, --directory DIRECTORY set the directory to upload files to + --dl provide download links + -a USER:PASS, --auth USER:PASS set the authentication credentials + --ssl PEMFILE set up https using the certificate file + --chmod MODE set the file permissions (octal value) --save-config save options in a configuration file --delete-config delete the configuration file and exit - -u True , --userdirs allow users to specify file subdirectory - + Example: droopy -m "Hi, this is Bob. You can send me a file." -p avatar.png -''' +''' picture = None message = "" -port = 80 +port = 8000 directory = os.curdir must_save_options = False - -# 20110310 Hostname for links -hostname_pb = "piratebox.lan" +publish_files = False +auth = None +certfile = None +file_mode = None ## User supplied subdirectory stuff userdirs= False # disabled by default, overridden by command line @@ -122,8 +128,7 @@ useAnondir=1 userdirform='''
%(advanced)s -
-
+
''' - - # -- HTML templates -# 20110310 - Piratebox Chat template -piratebox_chat = ''' - -''' - - - -style = ''' - - - -''' + border-spacing: 24px 0; padding: 0; vertical-align: bottom;} +#progress td {height: 17px; width: 17px; background-color: #eee; + padding: 0px; border-radius: 90px; box-shadow: 0 0 3px #bbb;} +#userinfo {padding-bottom: 20px;} +#files { + margin: auto; + padding: 13px 0; + text-align: left; + overflow: auto; + margin-bottom: 20px; +} +#files a {text-decoration: none; display: block; padding: 10px 20px;} +#files a:nth-child(2n+1) {background-color: #F7F7F7;} +#files a:link {color: #4499cc} +#files a:visited {color: #a0c0e0} +#files a:hover {background-color:#f0f0f0} +-->''' userinfo = ''' -
%(htmlpicture)s
-
%(message)s
+
+ %(message)s + %(divpicture)s +
''' -maintmpl = '''%(maintitle)s +maintmpl = ''' + + + +%(maintitle)s ''' + style + ''' -
-''' + userinfo + ''' %(linkurl)s +
- - %(userdiropts)s + - + %(userdiropts)s +
-
%(sending)s   -
Parent Directory/
Parent Directory/
" .htmlentities($folder['name']). "/
" .htmlentities($folder['name']). "/" . date('Y-M-d H:i:s', $folder['modtime']) . "
" .htmlentities($file['name']). "
" .htmlentities($file['name']). "" . date('Y-M-d H:i:s', $file['modtime']) . "
" .htmlentities($folder['name']). "/
" .get_utf8_encoded($folder['name']). "/" . date('Y-M-d H:i:s', $folder['modtime']) . "
" .htmlentities($file['name']). "
" .get_utf8_encoded($file['name']). "" . date('Y-M-d H:i:s', $file['modtime']) . "
" .get_utf8_encoded($folder['name']). "/
" .get_utf8_encoded($folder['name']). "/" . date('Y-M-d H:i:s', $folder['modtime']) . "
Parent Directory/
/
" .get_utf8_encoded($file['name']). "
" .get_utf8_encoded($file['name']). "
" .get_utf8_encoded($file['name']). "
" .get_utf8_encoded($folder['name']). "/
" .get_utf8_encoded($folder['name']). "/" . date('Y-M-d H:i:s', $folder['modtime']) . "
" .get_utf8_encoded($folder['name']). "/
" .get_utf8_encoded($folder['name']). "/" . date('Y-M-d H:i:s', $folder['modtime']) . "
/
/
-
-
+ +
+ + + +
+ +
+
%(sending)s
- -%(pb_chat)s - - +''' + userinfo + ''' +%(files)s + + + ''' -successtmpl = '''%(successtitle)s +successtmpl = ''' + + + %(successtitle)s ''' + style + ''' -
-''' + userinfo + ''' +
%(received)s %(another)s
- -%(pb_chat)s - -
+''' + userinfo + ''' + ''' -errortmpl = '''%(errortitle)s +errortmpl = ''' + + + %(errortitle)s ''' + style + ''' -
-''' + userinfo + ''' +
%(problem)s %(retry)s
- -%(pb_chat)s - -
+''' + userinfo + ''' + -''' +''' -linkurltmpl = '''
- %(discover)s +linkurltmpl = '''''' -# 20120402 Start -iostmpl = ''' - - - Success - - - Success - - ''' - -# 20120402 -templates = { "ios": iostmpl, "main": maintmpl, "success": successtmpl, "error": errortmpl } -# 20120402 End +templates = {"main": maintmpl, "success": successtmpl, "error": errortmpl} # -- Translations -ar = {"maintitle": u"إرسال ملف", - "submit": u"إرسال", - "sending": u"الملف قيد الإرسال", - "successtitle": u"تم استقبال الملف", - "received": u"تم استقبال الملف !", - "another": u"إرسال ملف آخر", - "errortitle": u"مشكلة", - "problem": u"حدثت مشكلة !", - "subdirerror": "There is a problem uploading to that subdirectory.
Check if that subdirectory already exits.
If it does not, make sure you are only using characters a-zA-Z0-9 for the username and password.
If the directory exists and the characters are valid, you probably are using the wrong password

", - "advanced": "advanced options", - "userdirname": "Name of directory to place files in ", - "userdirpassword": "Password for saving files to that directory (optional)", - "retry": u"إعادة المحاولة", - "discover": u"اكتشاف عنوان هذه الصفحة"} +ar = {"maintitle": u"إرسال ملف", + "submit": u"إرسال", + "sending": u"الملف قيد الإرسال", + "successtitle": u"تم استقبال الملف", + "received": u"تم استقبال الملف !", + "another": u"إرسال ملف آخر", + "errortitle": u"مشكلة", + "problem": u"حدثت مشكلة !", + "retry": u"إعادة المحاولة", + "discover": u"اكتشاف عنوان هذه الصفحة"} cs = {"maintitle": u"Poslat soubor", "submit": u"Poslat", - "sending": u"Posílám", - "successtitle": u"Soubor doručen", - "received": u"Soubor doručen !", - "another": u"Poslat další soubor", + "sending": u"Posílám", + "successtitle": u"Soubor doručen", + "received": u"Soubor doručen !", + "another": u"Poslat další soubor", "errortitle": u"Chyba", "problem": u"Stala se chyba !", - "subdirerror": "There is a problem uploading to that subdirectory.
Check if that subdirectory already exits.
If it does not, make sure you are only using characters a-zA-Z0-9 for the username and password.
If the directory exists and the characters are valid, you probably are using the wrong password

", - "advanced": "advanced options", - "userdirname": "Name of directory to place files in ", - "userdirpassword": "Password for saving files to that directory (optional)", "retry": u"Zkusit znova.", - "discover": u"Zjistit adresu stránky"} + "discover": u"Zjistit adresu stránky"} da = {"maintitle": u"Send en fil", "submit": u"Send", @@ -324,12 +323,8 @@ da = {"maintitle": u"Send en fil", "received": u"Fil modtaget!", "another": u"Send en fil til.", "errortitle": u"Problem", - "problem": u"Det er opstÃ¥et en fejl!", - "subdirerror": "There is a problem uploading to that subdirectory.
Check if that subdirectory already exits.
If it does not, make sure you are only using characters a-zA-Z0-9 for the username and password.
If the directory exists and the characters are valid, you probably are using the wrong password

", - "advanced": "advanced options", - "userdirname": "Name of directory to place files in ", - "userdirpassword": "Password for saving files to that directory (optional)", - "retry": u"Forsøg igen.", + "problem": u"Det er opstået en fejl!", + "retry": u"Forsøg igen.", "discover": u"Find adressen til denne side"} de = {"maintitle": "Datei senden", @@ -340,87 +335,68 @@ de = {"maintitle": "Datei senden", "another": "Weitere Datei senden", "errortitle": "Fehler", "problem": "Ein Fehler ist aufgetreten!", - "subdirerror": "Problem beim Hochladen in dieses Verzeichnis:
Prüfe ob das Unterverzeichnis bereits existiert.
Benutzername und Passwort dürfen nur a-zA-Z0-9 beeinhalten.
Existiert das Verzeichnis und du verwendest nur die erlaubten Zeichen ist es wahrscheinlich, dass dein Passwort falsch eingegeben wurde.

", - "advanced": "Weitere Optionen", - "userdirname": "Name des Zielverzeichnisses ", - "userdirpassword": "Passwort zum Speichern in dieses Verzeichnis (optional)", "retry": "Wiederholen", "discover": "Internet-Adresse dieser Seite feststellen"} -el = {"maintitle": u"Στείλε ένα αρχείο", - "submit": u"Αποστολή", - "sending": u"Αποστέλλεται...", - "successtitle": u"Επιτυχής λήψη αρχείου ", - "received": u"Λήψη αρχείου ολοκληρώθηκε", - "another": u"Στείλε άλλο ένα αρχείο", - "errortitle": u"Σφάλμα", - "problem": u"Παρουσιάστηκε σφάλμα", - "subdirerror": "There is a problem uploading to that subdirectory.
Check if that subdirectory already exits.
If it does not, make sure you are only using characters a-zA-Z0-9 for the username and password.
If the directory exists and the characters are valid, you probably are using the wrong password

", - "advanced": "advanced options", - "userdirname": "Name of directory to place files in ", - "userdirpassword": "Password for saving files to that directory (optional)", - "retry": u"Επανάληψη", - "discover": u"Βρες την διεύθυνση της σελίδας"} +el = {"maintitle": u"Στείλε ένα αρχείο", + "submit": u"Αποστολή", + "sending": u"Αποστέλλεται...", + "successtitle": u"Επιτυχής λήψη αρχείου ", + "received": u"Λήψη αρχείου ολοκληρώθηκε", + "another": u"Στείλε άλλο ένα αρχείο", + "errortitle": u"Σφάλμα", + "problem": u"Παρουσιάστηκε σφάλμα", + "retry": u"Επανάληψη", + "discover": u"Βρες την διεύθυνση της σελίδας"} en = {"maintitle": "Send a file", "submit": "Send", "sending": "Sending", "successtitle": "File received", - "received": "File received !", + "received": "File received!", "another": "Send another file.", "errortitle": "Problem", - "problem": "There has been a problem !", + "problem": "There has been a problem!", + "retry": "Retry.", + "discover": "Discover the address of this page", "subdirerror": "There is a problem uploading to that subdirectory.
Check if that subdirectory already exits.
If it does not, make sure you are only using characters a-zA-Z0-9 for the username and password.
If the directory exists and the characters are valid, you probably are using the wrong password

", "advanced": "advanced options", "userdirname": "Name of directory to place files in ", - "userdirpassword": "Password for saving files to that directory (optional)", - "retry": "Retry.", - "discover": "Discover the address of this page"} + "userdirpassword": "Password for saving files to that directory (optional)" + } es = {"maintitle": u"Enviar un archivo", "submit": u"Enviar", "sending": u"Enviando", "successtitle": u"Archivo recibido", - "received": u"¡Archivo recibido!", + "received": u"¡Archivo recibido!", "another": u"Enviar otro archivo.", "errortitle": u"Error", - "problem": u"¡Hubo un problema!", - "subdirerror": "There is a problem uploading to that subdirectory.
Check if that subdirectory already exits.
If it does not, make sure you are only using characters a-zA-Z0-9 for the username and password.
If the directory exists and the characters are valid, you probably are using the wrong password

", - "advanced": "advanced options", - "userdirname": "Name of directory to place files in ", - "userdirpassword": "Password for saving files to that directory (optional)", + "problem": u"¡Hubo un problema!", "retry": u"Reintentar", - "discover": u"Descubrir la dirección de esta página"} + "discover": u"Descubrir la dirección de esta página"} -fi = {"maintitle": u"Lähetä tiedosto", - "submit": u"Lähetä", - "sending": u"Lähettää", +fi = {"maintitle": u"Lähetä tiedosto", + "submit": u"Lähetä", + "sending": u"Lähettää", "successtitle": u"Tiedosto vastaanotettu", "received": u"Tiedosto vastaanotettu!", - "another": u"Lähetä toinen tiedosto.", + "another": u"Lähetä toinen tiedosto.", "errortitle": u"Virhe", - "problem": u"Virhe lahetettäessä tiedostoa!", - "subdirerror": "There is a problem uploading to that subdirectory.
Check if that subdirectory already exits.
If it does not, make sure you are only using characters a-zA-Z0-9 for the username and password.
If the directory exists and the characters are valid, you probably are using the wrong password

", - "advanced": "advanced options", - "userdirname": "Name of directory to place files in ", - "userdirpassword": "Password for saving files to that directory (optional)", + "problem": u"Virhe lahetettäessä tiedostoa!", "retry": u"Uudelleen.", - "discover": u"Näytä tämän sivun osoite"} + "discover": u"Näytä tämän sivun osoite"} fr = {"maintitle": u"Envoyer un fichier", "submit": u"Envoyer", "sending": u"Envoi en cours", - "successtitle": u"Fichier reçu", - "received": u"Fichier reçu !", + "successtitle": u"Fichier reçu", + "received": u"Fichier reçu !", "another": u"Envoyer un autre fichier.", - "errortitle": u"Problème", - "problem": u"Il y a eu un problème !", - "subdirerror": "There is a problem uploading to that subdirectory.
Check if that subdirectory already exits.
If it does not, make sure you are only using characters a-zA-Z0-9 for the username and password.
If the directory exists and the characters are valid, you probably are using the wrong password

", - "advanced": "advanced options", - "userdirname": "Name of directory to place files in ", - "userdirpassword": "Password for saving files to that directory (optional)", - "retry": u"Réessayer.", - "discover": u"Découvrir l'adresse de cette page"} + "errortitle": u"Problème", + "problem": u"Il y a eu un problème !", + "retry": u"Réessayer.", + "discover": u"Découvrir l'adresse de cette page"} gl = {"maintitle": u"Enviar un ficheiro", "submit": u"Enviar", @@ -429,28 +405,20 @@ gl = {"maintitle": u"Enviar un ficheiro", "received": u"Ficheiro recibido!", "another": u"Enviar outro ficheiro.", "errortitle": u"Erro", - "problem": u"Xurdíu un problema!", - "subdirerror": "There is a problem uploading to that subdirectory.
Check if that subdirectory already exits.
If it does not, make sure you are only using characters a-zA-Z0-9 for the username and password.
If the directory exists and the characters are valid, you probably are using the wrong password

", - "advanced": "advanced options", - "userdirname": "Name of directory to place files in ", - "userdirpassword": "Password for saving files to that directory (optional)", + "problem": u"Xurdíu un problema!", "retry": u"Reintentar", - "discover": u"Descubrir o enderezo desta páxina"} - -hu = {"maintitle": u"Állomány küldése", - "submit": u"Küldés", - "sending": u"Küldés folyamatban", - "successtitle": u"Az állomány beérkezett", - "received": u"Az állomány beérkezett!", - "another": u"További állományok küldése", + "discover": u"Descubrir o enderezo desta páxina"} + +hu = {"maintitle": u"Állomány küldése", + "submit": u"Küldés", + "sending": u"Küldés folyamatban", + "successtitle": u"Az állomány beérkezett", + "received": u"Az állomány beérkezett!", + "another": u"További állományok küldése", "errortitle": u"Hiba", - "problem": u"Egy hiba lépett fel!", - "subdirerror": "There is a problem uploading to that subdirectory.
Check if that subdirectory already exits.
If it does not, make sure you are only using characters a-zA-Z0-9 for the username and password.
If the directory exists and the characters are valid, you probably are using the wrong password

", - "advanced": "advanced options", - "userdirname": "Name of directory to place files in ", - "userdirpassword": "Password for saving files to that directory (optional)", - "retry": u"Megismételni", - "discover": u"Az oldal Internet-címének megállapítása"} + "problem": u"Egy hiba lépett fel!", + "retry": u"Megismételni", + "discover": u"Az oldal Internet-címének megállapítása"} id = {"maintitle": "Kirim sebuah berkas", "submit": "Kirim", @@ -460,10 +428,6 @@ id = {"maintitle": "Kirim sebuah berkas", "another": "Kirim berkas yang lain.", "errortitle": "Permasalahan", "problem": "Telah ditemukan sebuah kesalahan!", - "subdirerror": "There is a problem uploading to that subdirectory.
Check if that subdirectory already exits.
If it does not, make sure you are only using characters a-zA-Z0-9 for the username and password.
If the directory exists and the characters are valid, you probably are using the wrong password

", - "advanced": "advanced options", - "userdirname": "Name of directory to place files in ", - "userdirpassword": "Password for saving files to that directory (optional)", "retry": "Coba kembali.", "discover": "Kenali alamat IP dari halaman ini"} @@ -474,43 +438,31 @@ it = {"maintitle": u"Invia un file", "received": u"File ricevuto!", "another": u"Invia un altro file.", "errortitle": u"Errore", - "problem": u"Si è verificato un errore!", - "subdirerror": "There is a problem uploading to that subdirectory.
Check if that subdirectory already exits.
If it does not, make sure you are only using characters a-zA-Z0-9 for the username and password.
If the directory exists and the characters are valid, you probably are using the wrong password

", - "advanced": "advanced options", - "userdirname": "Name of directory to place files in ", - "userdirpassword": "Password for saving files to that directory (optional)", + "problem": u"Si è verificato un errore!", "retry": u"Riprova.", - "discover": u"Scopri l’indirizzo di questa pagina"} - -ja = {"maintitle": u"ファイル送信", - "submit": u"送信", - "sending": u"送信中", - "successtitle": u"受信完了", - "received": u"ファイルを受信しました!", - "another": u"他のファイルを送信する", - "errortitle": u"問題発生", - "problem": u"問題が発生しました!", - "subdirerror": "There is a problem uploading to that subdirectory.
Check if that subdirectory already exits.
If it does not, make sure you are only using characters a-zA-Z0-9 for the username and password.
If the directory exists and the characters are valid, you probably are using the wrong password

", - "advanced": "advanced options", - "userdirname": "Name of directory to place files in ", - "userdirpassword": "Password for saving files to that directory (optional)", - "retry": u"リトライ", - "discover": u"このページのアドレスを確認する"} - -ko = {"maintitle": u"파일 보내기", - "submit": u"보내기", - "sending": u"보내는 중", - "successtitle": u"파일이 받아졌습니다", - "received": u"파일이 받아졌습니다!", - "another": u"다른 파일 보내기", - "errortitle": u"ë¬¸ì œê°€ 발생했습니다", - "problem": u"ë¬¸ì œê°€ 발생했습니다!", - "subdirerror": "There is a problem uploading to that subdirectory.
Check if that subdirectory already exits.
If it does not, make sure you are only using characters a-zA-Z0-9 for the username and password.
If the directory exists and the characters are valid, you probably are using the wrong password

", - "advanced": "advanced options", - "userdirname": "Name of directory to place files in ", - "userdirpassword": "Password for saving files to that directory (optional)", - "retry": u"다시 시도", - "discover": u"이 페이지 주소 알아보기"} + "discover": u"Scopri l’indirizzo di questa pagina"} + +ja = {"maintitle": u"ファイル送信", + "submit": u"送信", + "sending": u"送信中", + "successtitle": u"受信完了", + "received": u"ファイルを受信しました!", + "another": u"他のファイルを送信する", + "errortitle": u"問題発生", + "problem": u"問題が発生しました!", + "retry": u"リトライ", + "discover": u"このページのアドレスを確認する"} + +ko = {"maintitle": u"파일 보내기", + "submit": u"보내기", + "sending": u"보내는 중", + "successtitle": u"파일이 받아졌습니다", + "received": u"파일이 받아졌습니다!", + "another": u"다른 파일 보내기", + "errortitle": u"문제가 발생했습니다", + "problem": u"문제가 발생했습니다!", + "retry": u"다시 시도", + "discover": u"이 페이지 주소 알아보기"} nl = {"maintitle": "Verstuur een bestand", "submit": "Verstuur", @@ -520,10 +472,6 @@ nl = {"maintitle": "Verstuur een bestand", "another": "Verstuur nog een bestand.", "errortitle": "Fout", "problem": "Er is een fout opgetreden!", - "subdirerror": "There is a problem uploading to that subdirectory.
Check if that subdirectory already exits.
If it does not, make sure you are only using characters a-zA-Z0-9 for the username and password.
If the directory exists and the characters are valid, you probably are using the wrong password

", - "advanced": "advanced options", - "userdirname": "Name of directory to place files in ", - "userdirpassword": "Password for saving files to that directory (optional)", "retry": "Nog eens.", "discover": "Vind het adres van deze pagina"} @@ -535,13 +483,20 @@ no = {"maintitle": u"Send en fil", "another": u"Send en ny fil.", "errortitle": u"Feil", "problem": u"Det har skjedd en feil !", - "subdirerror": "There is a problem uploading to that subdirectory.
Check if that subdirectory already exits.
If it does not, make sure you are only using characters a-zA-Z0-9 for the username and password.
If the directory exists and the characters are valid, you probably are using the wrong password

", - "advanced": "advanced options", - "userdirname": "Name of directory to place files in ", - "userdirpassword": "Password for saving files to that directory (optional)", - "retry": u"Send pÃ¥ nytt.", + "retry": u"Send på nytt.", "discover": u"Finn addressen til denne siden"} +pl = {"maintitle": u"Wyślij plik", + "submit": u"Wyślij", + "sending": u"Wysyłanie", + "successtitle": u"Plik wysłany", + "received": u"Plik wysłany!", + "another": u"Wyślij kolejny plik.", + "errortitle": u"Problem", + "problem": u"Wystąpił błąd!", + "retry": u"Spróbuj ponownie.", + "discover": u"Znajdź adres tej strony"} + pt = {"maintitle": u"Enviar um ficheiro", "submit": u"Enviar", "sending": u"A enviar", @@ -550,12 +505,8 @@ pt = {"maintitle": u"Enviar um ficheiro", "another": u"Enviar outro ficheiro.", "errortitle": u"Erro", "problem": u"Ocorreu um erro !", - "subdirerror": "There is a problem uploading to that subdirectory.
Check if that subdirectory already exits.
If it does not, make sure you are only using characters a-zA-Z0-9 for the username and password.
If the directory exists and the characters are valid, you probably are using the wrong password

", - "advanced": "advanced options", - "userdirname": "Name of directory to place files in ", - "userdirpassword": "Password for saving files to that directory (optional)", "retry": u"Tentar novamente.", - "discover": u"Descobrir o endereço desta página"} + "discover": u"Descobrir o endereço desta página"} pt_br = { "maintitle": u"Enviar um arquivo", @@ -566,86 +517,62 @@ pt_br = { "another": u"Enviar outro arquivo.", "errortitle": u"Erro", "problem": u"Ocorreu um erro!", - "subdirerror": "There is a problem uploading to that subdirectory.
Check if that subdirectory already exits.
If it does not, make sure you are only using characters a-zA-Z0-9 for the username and password.
If the directory exists and the characters are valid, you probably are using the wrong password

", - "advanced": "advanced options", - "userdirname": "Name of directory to place files in ", - "userdirpassword": "Password for saving files to that directory (optional)", "retry": u"Tentar novamente.", - "discover": u"Descobrir o endereço desta página"} + "discover": u"Descobrir o endereço desta página"} -ro = {"maintitle": u"Trimite un fiÅŸier", +ro = {"maintitle": u"Trimite un fişier", "submit": u"Trimite", "sending": u"Se trimite", - "successtitle": u"FiÅŸier recepÅ£ionat", - "received": u"FiÅŸier recepÅ£ionat !", - "another": u"Trimite un alt fiÅŸier.", - "errortitle": u"Problemă", - "problem": u"A intervenit o problemă !", - "subdirerror": "There is a problem uploading to that subdirectory.
Check if that subdirectory already exits.
If it does not, make sure you are only using characters a-zA-Z0-9 for the username and password.
If the directory exists and the characters are valid, you probably are using the wrong password

", - "advanced": "advanced options", - "userdirname": "Name of directory to place files in ", - "userdirpassword": "Password for saving files to that directory (optional)", - "retry": u"Reîncearcă.", - "discover": u"Descoperă adresa acestei pagini"} + "successtitle": u"Fişier recepţionat", + "received": u"Fişier recepţionat !", + "another": u"Trimite un alt fişier.", + "errortitle": u"Problemă", + "problem": u"A intervenit o problemă !", + "retry": u"Reîncearcă.", + "discover": u"Descoperă adresa acestei pagini"} ru = {"maintitle": u"Отправить файл", "submit": u"Отправить", "sending": u"Отправляю", "successtitle": u"Файл получен", - "received": u"Файл получен!", - "another": u"Отправить другой файл", + "received": u"Файл получен !", + "another": u"Отправить другой файл.", "errortitle": u"Ошибка", - "problem": u"Произошла ошибка!", - "subdirerror": u"Невозможно загрузить файлы в этот подкаталог.
Проверьте что подкаталог уже существует.
Если нет, убедитесть что для логина и пароля вы используете только следующие символы a-zA-Z0-9
Если каталог существует и символы правильны, возможно вы ошиблись с паролем

", - "advanced": u"расширенные настройки", - "userdirname": u"Имя каталога для сохранения файлов", - "userdirpassword": u"Пароль для сохранения файлов в этот каталог (опционально)", - "retry": u"Повторить", + "problem": u"Произошла ошибка !", + "retry": u"Повторить.", "discover": u"Посмотреть адрес этой страницы"} -sk = {"maintitle": u"PoÅ¡li súbor", - "submit": u"PoÅ¡li", +sk = {"maintitle": u"Pošli súbor", + "submit": u"Pošli", "sending": u"Posielam", - "successtitle": u"Súbor prijatý", - "received": u"Súbor prijatý !", - "another": u"PoslaÅ¥ ďalší súbor.", + "successtitle": u"Súbor prijatý", + "received": u"Súbor prijatý !", + "another": u"Poslať ďalší súbor.", "errortitle": u"Chyba", "problem": u"Vyskytla sa chyba!", - "subdirerror": "There is a problem uploading to that subdirectory.
Check if that subdirectory already exits.
If it does not, make sure you are only using characters a-zA-Z0-9 for the username and password.
If the directory exists and the characters are valid, you probably are using the wrong password

", - "advanced": "advanced options", - "userdirname": "Name of directory to place files in ", - "userdirpassword": "Password for saving files to that directory (optional)", - "retry": u"SkúsiÅ¥ znova.", - "discover": u"Zisti adresu tejto stránky"} + "retry": u"Skúsiť znova.", + "discover": u"Zisti adresu tejto stránky"} -sl = {"maintitle": u"PoÅ¡lji datoteko", - "submit": u"PoÅ¡lji", - "sending": u"PoÅ¡iljam", +sl = {"maintitle": u"Pošlji datoteko", + "submit": u"Pošlji", + "sending": u"Pošiljam", "successtitle": u"Datoteka prejeta", "received": u"Datoteka prejeta !", - "another": u"PoÅ¡lji novo datoteko.", + "another": u"Pošlji novo datoteko.", "errortitle": u"Napaka", - "problem": u"PriÅ¡lo je do napake !", - "subdirerror": "There is a problem uploading to that subdirectory.
Check if that subdirectory already exits.
If it does not, make sure you are only using characters a-zA-Z0-9 for the username and password.
If the directory exists and the characters are valid, you probably are using the wrong password

", - "advanced": "advanced options", - "userdirname": "Name of directory to place files in ", - "userdirpassword": "Password for saving files to that directory (optional)", + "problem": u"Prišlo je do napake !", "retry": u"Poizkusi ponovno.", - "discover": u"Poišči naslov na tej strani"} + "discover": u"Poišči naslov na tej strani"} -sr = {"maintitle": u"PoÅ¡alji fajl", - "submit": u"PoÅ¡alji", - "sending": u"Å aljem", +sr = {"maintitle": u"Pošalji fajl", + "submit": u"Pošalji", + "sending": u"Šaljem", "successtitle": u"Fajl primljen", "received": u"Fajl primljen !", - "another": u"PoÅ¡alji joÅ¡ jedan fajl.", + "another": u"Pošalji još jedan fajl.", "errortitle": u"Problem", "problem": u"Desio se problem !", - "subdirerror": "There is a problem uploading to that subdirectory.
Check if that subdirectory already exits.
If it does not, make sure you are only using characters a-zA-Z0-9 for the username and password.
If the directory exists and the characters are valid, you probably are using the wrong password

", - "advanced": "advanced options", - "userdirname": "Name of directory to place files in ", - "userdirpassword": "Password for saving files to that directory (optional)", - "retry": u"PokuÅ¡aj ponovo.", + "retry": u"Pokušaj ponovo.", "discover": u"Otkrij adresu ove stranice"} sv = {"maintitle": u"Skicka en fil", @@ -655,50 +582,51 @@ sv = {"maintitle": u"Skicka en fil", "received": u"Fil mottagen !", "another": u"Skicka en fil till.", "errortitle": u"Fel", - "problem": u"Det har uppstÃ¥tt ett fel !", - "subdirerror": "There is a problem uploading to that subdirectory.
Check if that subdirectory already exits.
If it does not, make sure you are only using characters a-zA-Z0-9 for the username and password.
If the directory exists and the characters are valid, you probably are using the wrong password

", - "advanced": "advanced options", - "userdirname": "Name of directory to place files in ", - "userdirpassword": "Password for saving files to that directory (optional)", - "retry": u"Försök igen.", - "discover": u"Ta reda pÃ¥ adressen till denna sida"} - -tr = {"maintitle": u"Dosya gönder", - "submit": u"Gönder", - "sending": u"Gönderiliyor...", - "successtitle": u"Gönderildi", - "received": u"Gönderildi", - "another": u"BaÅŸka bir dosya gönder.", + "problem": u"Det har uppstått ett fel !", + "retry": u"Försök igen.", + "discover": u"Ta reda på adressen till denna sida"} + +tr = {"maintitle": u"Dosya gönder", + "submit": u"Gönder", + "sending": u"Gönderiliyor...", + "successtitle": u"Gönderildi", + "received": u"Gönderildi", + "another": u"Başka bir dosya gönder.", "errortitle": u"Problem.", "problem": u"Bir problem oldu !", - "subdirerror": "There is a problem uploading to that subdirectory.
Check if that subdirectory already exits.
If it does not, make sure you are only using characters a-zA-Z0-9 for the username and password.
If the directory exists and the characters are valid, you probably are using the wrong password

", - "advanced": "advanced options", - "userdirname": "Name of directory to place files in ", - "userdirpassword": "Password for saving files to that directory (optional)", "retry": u"Yeniden dene.", - "discover": u"Bu sayfanın adresini bul"} + "discover": u"Bu sayfanın adresini bul"} zh_cn = { - "maintitle": u"发送文件", - "submit": u"发送", - "sending": u"发送中", - "successtitle": u"文件已收到", - "received": u"文件已收到!", - "another": u"发送另一个文件。", - "errortitle": u"问题", - "problem": u"出现问题!", - "subdirerror": "There is a problem uploading to that subdirectory.
Check if that subdirectory already exits.
If it does not, make sure you are only using characters a-zA-Z0-9 for the username and password.
If the directory exists and the characters are valid, you probably are using the wrong password

", - "advanced": "advanced options", - "userdirname": "Name of directory to place files in ", - "userdirpassword": "Password for saving files to that directory (optional)", - "retry": u"重试。", - "discover": u"查看本页面的地址"} + "maintitle": u"发送文件", + "submit": u"发送", + "sending": u"发送中", + "successtitle": u"文件已收到", + "received": u"文件已收到!", + "another": u"发送另一个文件。", + "errortitle": u"问题", + "problem": u"出现问题!", + "retry": u"重试。", + "discover": u"查看本页面的地址"} + +zh_tw = { + "maintitle": u"上傳檔案", + "submit": u"上傳", + "sending": u"傳送中...", + "successtitle": u"已收到檔案", + "received": u"已收到檔案!", + "another": u"上傳另一個檔案。", + "errortitle": u"錯誤", + "problem": u"出現錯誤!", + "retry": u"重試。", + "discover": u"查閱本網頁的網址"} translations = {"ar": ar, "cs": cs, "da": da, "de": de, "el": el, "en": en, "es": es, "fi": fi, "fr": fr, "gl": gl, "hu": hu, "id": id, - "it": it, "ja": ja, "ko": ko, "nl": nl, "no": no, "pt": pt, - "pt-br": pt_br, "ro": ro, "ru": ru, "sk": sk, "sl": sl, - "sr": sr, "sv": sv, "tr": tr, "zh-cn": zh_cn} + "it": it, "ja": ja, "ko": ko, "nl": nl, "no": no, "pl": pl, + "pt": pt, "pt-br": pt_br, "ro": ro, "ru": ru, "sk": sk, + "sl": sl, "sr": sr, "sv": sv, "tr": tr, "zh-cn": zh_cn, + "zh-tw": zh_tw} class DroopyFieldStorage(cgi.FieldStorage): @@ -706,8 +634,10 @@ class DroopyFieldStorage(cgi.FieldStorage): stored in the tmpfilename attribute. """ + TMPPREFIX = 'tmpdroopy' + def make_file(self, binary=None): - fd, name = tempfile.mkstemp(dir=directory) + fd, name = tempfile.mkstemp(dir=directory, prefix=self.TMPPREFIX) self.tmpfile = os.fdopen(fd, 'w+b') self.tmpfilename = name return self.tmpfile @@ -717,6 +647,8 @@ class HTTPUploadHandler(BaseHTTPServer.BaseHTTPRequestHandler): protocol_version = 'HTTP/1.0' form_field = 'upfile' + divpicture = '

' + def _safername(self,name): """ Checking whether we can make a directory-name out of this name @@ -732,50 +664,52 @@ class HTTPUploadHandler(BaseHTTPServer.BaseHTTPRequestHandler): print('WARNING: name too complex; try %s'%name2) return False + def _mkuserpath(self,userdir,filename): - mydir = directory + "/" + userdir - if (os.path.exists(mydir)): - localpath = os.path.join(mydir, filename).encode('utf-8') + mydir = directory + "/" + userdir + if (os.path.exists(mydir)): + localpath = os.path.join(mydir, filename).encode('utf-8') + else: + try: + os.mkdir(mydir) + except IOError: + print ("can't make directory") else: - try: - os.mkdir(mydir) - except IOError: - print ("can't make directory") - else: - localpath = os.path.join(mydir, filename).encode('utf-8') - return localpath + localpath = os.path.join(mydir, filename).encode('utf-8') + return localpath def _login(self,subdir, passwd ): - """ Allow user to provide subdirectory & write access password. - This offers little security, but helps organization - returns success,NAME - """ - name = self._safername( subdir.lower() ) - password = passwd #safename( passwd ) - - if (name == "" or name == anondir) : - return (True, anondir ) # don't let people set password on anon - try: - pairs = load(open(password_file)) - except IOError: - print('WARNING: No password file found. Starting from scratch.') - pairs = {} - if name in pairs: - if pairs[name] == password: - return True,name - else: - print('ERROR: wrong password') - return False,"BadPassword" - else: - print('INFO: Adding subdir %s to the system'%name) - pairs[name] = password - dump(pairs, open(password_file, 'w')) - return True,name - - def html(self, page , errormsg=""): + """ Allow user to provide subdirectory & write access password. + This offers little security, but helps organization + returns success,NAME + """ + name = self._safername( subdir.lower() ) + password = passwd #safename( passwd ) + + if (name == "" or name == anondir) : + return (True, anondir ) # don't let people set password on anon + try: + pairs = load(open(password_file)) + except IOError: + print('WARNING: No password file found. Starting from scratch.') + pairs = {} + if name in pairs: + if pairs[name] == password: + return True,name + else: + print('ERROR: wrong password') + return False,"BadPassword" + else: + print('INFO: Adding subdir %s to the system'%name) + pairs[name] = password + dump(pairs, open(password_file, 'w')) + return True,name + + + + def html(self, page, errormsg=""): """ page can be "main", "success", or "error" - errormsg is optional, more specific error name returns an html page (in the appropriate language) as a string """ @@ -792,7 +726,7 @@ class HTTPUploadHandler(BaseHTTPServer.BaseHTTPRequestHandler): a.reverse() a = [x[1] for x in a] # now a is an ordered list of preferred languages - + # -- Choose the appropriate translation dictionary (default is english) lang = "en" for l in a: @@ -802,55 +736,84 @@ class HTTPUploadHandler(BaseHTTPServer.BaseHTTPRequestHandler): dico = copy.copy(translations[lang]) # -- Set message and picture - dico["message"] = message + if message: + dico["message"] = ('
%s
' % + message) + else: + dico["message"] = "" + if picture != None: - dico["htmlpicture"] = ''% os.path.basename(picture) + dico["divpicture"] = self.divpicture else: - dico["htmlpicture"] = "" + dico["divpicture"] = "" + + # -- Possibly provide download links + links = "" + names = self.published_files() + if names: + for name in names: + links += '%s' % ( + urllib.quote(name.encode('utf-8')), + name) + links = '
' + links + '
' + dico["files"] = links # -- Add a link to discover the url if self.client_address[0] == "127.0.0.1": dico["port"] = self.server.server_port + dico["ssl"] = int(certfile is not None) dico["linkurl"] = linkurltmpl % dico else: dico["linkurl"] = "" - # 20110314 Start - add hostname in template var - dico["hostname"] = hostname_pb - dico["pb_chat"] = piratebox_chat - # 20110314 End - if(userdirs == True): - dico["userdiropts"] = userdirform % dico + if (userdirs == True): + dico["userdiropts"] = userdirform % dico else: - dico["userdiropts"] = '' - + dico["userdiropts"] = '' + + dico["problem"] = "" if (errormsg != ""): if dico[errormsg]: dico["problem"]=dico[errormsg] return templates[page] % dico + def check_auth(method): + def decorated(self, *args): + if auth and self.headers.getheader('Authorization') != \ + 'Basic ' + base64.b64encode(auth): + self.send_response(401) + self.send_header('WWW-Authenticate', 'Basic realm=\"Droopy\"') + self.send_header('Content-type', 'text/html') + self.end_headers() + else: + method(self, *args) + return decorated + @check_auth def do_GET(self): - if picture != None and self.path == '/' + os.path.basename(picture): + name = self.path.lstrip('/') + name = urllib.unquote(name) + name = name.decode('utf-8') + + if picture != None and self.path == '/__droopy/picture': # send the picture - self.send_response(200) - self.send_header('Content-type', mimetypes.guess_type(picture)[0]) - self.end_headers() - self.wfile.write(open(picture, 'rb').read()) -# 20120402 Start - elif self.path == '/library/test/success.html': - self.send_html(self.html("ios")) -# 20120402 End + self.send_file(picture) + + elif name in self.published_files(): + localpath = os.path.join(directory, name) + self.send_file(localpath) + else: self.send_html(self.html("main")) + @check_auth def do_POST(self): # Do some browsers /really/ use multipart ? maybe Opera ? try: self.log_message("Started file transfer") - + # -- Set up environment for cgi.FieldStorage env = {} env['REQUEST_METHOD'] = self.command @@ -861,78 +824,97 @@ class HTTPUploadHandler(BaseHTTPServer.BaseHTTPRequestHandler): # -- Save file (numbered to avoid overwriting, ex: foo-3.png) form = DroopyFieldStorage(fp = self.rfile, environ = env); - fileitem = form[self.form_field] - filename = self.basename(fileitem.filename).decode('utf-8') - if filename == "": - self.send_response(303) - self.send_header('Location', '/') - self.end_headers() - return - - #20120317 Start - if filename.lower() == "index.html" or filename.lower() == "index.htm": - self.send_response(303) - self.send_header('Location', '/') - self.end_headers() - return - #20120317 End - -#--- Directory Handling Start - localpath='' - if (userdirs == True ): - - subdir = form['subdir'].value - passwd = form['secret'].value - success,userdir=self._login(subdir, passwd ) - if success == False: - self.send_html(self.html("error","subdirerror")) - os.unlink(fileitem.tmpfilename) - return - else: - if (userdir == anondir or userdir == ''): - if ( useAnondir == 0): - localpath = None - else: - localpath=self._mkuserpath(anondir,filename) - else: + file_items = form[self.form_field] + + #-- Handle multiple file upload + if not isinstance(file_items, list): + file_items = [file_items] + + for item in file_items: + filename = self.basename(item.filename).decode('utf-8') + if filename == "": + continue + + + if filename.lower() == "index.html" or filename.lower() == "index.htm": + self.send_response(303) + self.send_header('Location', '/') + self.end_headers() + continue + + + localpath ='' + if (userdirs == True ): + subdir = form['subdir'].value + passwd = form['secret'].value + success,userdir=self._login(subdir, passwd ) + if success == False: + self.send_html(self.html("error","subdirerror")) + #os.unlink(fileitem.tmpfilename) + return + else: + if (userdir == anondir or userdir == ''): + if ( useAnondir == 0): + localpath = None + else: + localpath=self._mkuserpath(anondir,filename) + else: localpath=self._mkuserpath(userdir,filename) - if (localpath == None or localpath == ''): - localpath = os.path.join(directory, filename).encode('utf-8') - -#--- directory handling end - root, ext = os.path.splitext(localpath) - i = 1 - # race condition, but hey... - while (os.path.exists(localpath)): - localpath = "%s-%d%s" % (root, i, ext) - i = i+1 - if hasattr(fileitem, 'tmpfile'): - # DroopyFieldStorage.make_file() has been called - fileitem.tmpfile.close() - shutil.move(fileitem.tmpfilename, localpath) - else: - # no temporary file, self.file is a StringIO() - # see cgi.FieldStorage.read_lines() - fout = file(localpath, 'wb') - shutil.copyfileobj(fileitem.file, fout) - fout.close() - self.log_message("Received: %s", os.path.basename(localpath)) + localpath = os.path.join(directory, filename).encode('utf-8') + root, ext = os.path.splitext(localpath) + i = 1 + + # race condition, but hey... + while (os.path.exists(localpath)): + localpath = "%s-%d%s" % (root, i, ext) + i = i + 1 + if hasattr(item, 'tmpfile'): + # DroopyFieldStorage.make_file() has been called + item.tmpfile.close() + shutil.move(item.tmpfilename, localpath) + else: + # no temporary file, self.file is a StringIO() + # see cgi.FieldStorage.read_lines() + fout = file(localpath, 'wb') + shutil.copyfileobj(item.file, fout) + fout.close() + + if file_mode is not None: + os.chmod(localpath, file_mode) + self.log_message("Received: %s", os.path.basename(localpath)) # -- Reply - self.send_html(self.html("success")) + if publish_files: + # The file list gives a feedback for the upload + # success + self.send_response(301) + self.send_header("Location", "/") + self.end_headers() + else: + self.send_html(self.html("success")) except Exception, e: self.log_message(repr(e)) self.send_html(self.html("error")) + def send_html(self, htmlstr): self.send_response(200) self.send_header('Content-type','text/html; charset=utf-8') self.end_headers() self.wfile.write(htmlstr.encode('utf-8')) + def send_file(self, localpath): + f = open(localpath, 'rb') + self.send_response(200) + self.send_header('Content-type', + mimetypes.guess_type(localpath)[0]) + self.send_header('Content-length', os.fstat(f.fileno())[6]) + self.end_headers() + shutil.copyfileobj(f, self.wfile) + def basename(self, path): """Extract the file base name (some browsers send the full file path). """ @@ -940,6 +922,22 @@ class HTTPUploadHandler(BaseHTTPServer.BaseHTTPRequestHandler): path = mod.basename(path) return path + def published_files(self): + """Returns the list of files that should appear as download links. + + The returned filenames are unicode strings. + """ + if publish_files: + # os.listdir() returns a list of unicode strings when the + # directory is passed as an unicode string itself. + names = [name for name in os.listdir(unicode(directory)) + if os.path.isfile(os.path.join(directory, name)) + and not name.startswith(DroopyFieldStorage.TMPPREFIX)] + names.sort(key=lambda s: s.lower()) + else: + names = [] + return names + def handle(self): try: BaseHTTPServer.BaseHTTPRequestHandler.handle(self) @@ -963,16 +961,19 @@ class ThreadedHTTPServer(SocketServer.ThreadingMixIn, # -- Options +def fullpath(path): + return os.path.abspath(os.path.expanduser(path)) + def configfile(): appname = 'droopy' # os.name is 'posix', 'nt', 'os2', 'mac', 'ce' or 'riscos' if os.name == 'posix': - getenv = CDLL("libc.so.6").getenv - getenv.restype = c_char_p - filename = "%s/.%s" % (getenv("HOME"), appname) + getenv = CDLL("libc.so.6").getenv + getenv.restype = c_char_p + filename = "%s/.%s" % (getenv("HOME"), appname) elif os.name == 'mac': - filename = ("%s/Library/Application Support/%s" % + filename = ("%s/Library/Application Support/%s" % (os.environ["HOME"], appname)) elif os.name == 'nt': @@ -992,13 +993,21 @@ def save_options(): opt.append('--picture=%s' % picture) if directory: opt.append('--directory=%s' % directory) + if auth: + opt.append('--auth=%s' % auth) + if certfile: + opt.append('--ssl=%s' % certfile) + if file_mode: + opt.append('--chmod=%s' % file_mode) + if publish_files: + opt.append('--dl') if port: opt.append('%d' % port) f = open(configfile(), 'w') f.write('\n'.join(opt).encode('utf8')) f.close() - + def load_options(): try: f = open(configfile()) @@ -1016,48 +1025,43 @@ def parse_args(cmd=None): Parse sys.argv[1:] if no argument is passed. """ -# 20110314 added hostname -# 20120401 added piratebox_chat -# 20120421 added userdirs - global picture, message, port, directory, must_save_options , hostname_pb , piratebox_chat , userdirs + global picture, message, port, directory, must_save_options, publish_files + global auth, certfile, file_mode + global userdirs if cmd == None: cmd = sys.argv[1:] lang, encoding = locale.getdefaultlocale() if encoding != None: cmd = [a.decode(encoding) for a in cmd] - + opts, args = None, None try: -# 20110314 - Added Hostname as opt - opts, args = getopt.gnu_getopt(cmd, "c:H:p:m:u:d:h", - ["chatbox=","hostname=","picture=","message=", - "directory=", "help","userdirs", - "save-config","delete-config"]) + opts, args = getopt.gnu_getopt(cmd, "p:m:d:a:u:h", + ["picture=","message=", "directory=", + "auth=", "ssl=", "chmod=", "help", "userdirs", + "save-config", "delete-config", "dl"]) except Exception, e: print e sys.exit(1) - for o,a in opts: - if o in ["-p", "--picture"] : - picture = os.path.expanduser(a) -# 20110314 Start - elif o in ["-H", "--hostname" ] : - hostname_pb = a -# 20110314 End -# 20120401 Start - elif o in ["-c", "--chatbox" ] : - piratebox_chat = a -# 20120401 End + for o, a in opts: + if o in ["-p", "--picture"]: + if os.path.exists(a): + picture = fullpath(a) + else: + print "Picture not found: '%s'" % a + + elif o in ["-m", "--message"]: + message = a + + elif o in ['-d', '--directory']: + directory = fullpath(a) + elif o in ["-u", "--userdirs" ] : userdirs = True print "userdirs are %s" %userdirs - elif o in ["-m", "--message"] : - message = a - - elif o in ['-d', '--directory']: - directory = a - + elif o in ['--save-config']: must_save_options = True @@ -1070,6 +1074,30 @@ def parse_args(cmd=None): print e sys.exit(0) + elif o in ['--dl']: + publish_files = True + + elif o in ['-a', '--auth']: + if ':' not in a: + print "Error: authentication credentials must be " \ + "specified as USER:PASSWORD" + sys.exit(1) + auth = a + + elif o in ['--ssl']: + if not os.path.isfile(a): + print "PEM file not found: '%s'" % a + sys.exit(1) + certfile = fullpath(a) + + elif o in ['--chmod']: + try: + file_mode = int(a, 8) + except ValueError: + print "Invalid octal value passed to chmod option: '%s'" % a + sys.exit(1) + + elif o in ['-h', '--help']: print USAGE sys.exit(0) @@ -1083,13 +1111,21 @@ def parse_args(cmd=None): sys.exit(1) -# -- +# -- def run(): """Run the webserver.""" socket.setdefaulttimeout(3*60) server_address = ('', port) httpd = ThreadedHTTPServer(server_address, HTTPUploadHandler) + if certfile: + try: + import ssl + except: + print "Error: Could not import module 'ssl', exiting." + sys.exit(2) + httpd.socket = ssl.wrap_socket(httpd.socket, certfile=certfile, + server_side=True) httpd.serve_forever() @@ -1103,15 +1139,17 @@ if __name__ == '__main__': print 'Configuration found in %s' % configfile() else: print "No configuration file found." - + if must_save_options: save_options() print "Options saved in %s" % configfile() + proto = 'https' if certfile else 'http' print "Files will be uploaded to %s" % directory + print + print ("HTTP server running... Check it out at %s://localhost:%d" + % (proto, port)) try: - print - print "HTTP server running... Check it out at http://localhost:%d"%port run() except KeyboardInterrupt: print '^C received, shutting down server' diff --git a/piratebox/piratebox/bin/exchange_www.sh b/piratebox/piratebox/bin/exchange_www.sh index 0522df6..94df486 100755 --- a/piratebox/piratebox/bin/exchange_www.sh +++ b/piratebox/piratebox/bin/exchange_www.sh @@ -1,7 +1,18 @@ #!/bin/sh -# Matthias Strubel , 2013 (c) GPL-3 +# Matthias Strubel , 2013-2015 (c) GPL-3 # matthias.strubel@aod-rpg.de + +## This is an obsolete feature. +## we exit that stuff only and skip processing it. +## In 99% this breaks stuff, over helping you. +## Will be removed with the next full release. + +echo "exchange_www.sh - was deactivated and does nothing now." +echo " Will be removed with the next full release." +exit 0 + + # Move www folder to given destination # Load configfile diff --git a/piratebox/piratebox/bin/install_piratebox.sh b/piratebox/piratebox/bin/install_piratebox.sh index 62fd102..869e12d 100755 --- a/piratebox/piratebox/bin/install_piratebox.sh +++ b/piratebox/piratebox/bin/install_piratebox.sh @@ -37,12 +37,10 @@ PIRATEBOX_CONFIG=$1 if [ $2 = 'pyForum' ] ; then cp -v $PIRATEBOX_FOLDER/src/forest.py $WWW_FOLDER/cgi-bin cp -v $PIRATEBOX_FOLDER/src/forest.css $WWW_FOLDER/ - cp -v $PIRATEBOX_FOLDER/src/forum_forest.html $WWW_FOLDER/forum.html mkdir -p $PIRATEBOX_FOLDER/forumspace chmod a+rw -R $PIRATEBOX_FOLDER/forumspace chown $LIGHTTPD_USER:$LIGHTTPD_GROUP $WWW_FOLDER/cgi-bin/forest.py chown $LIGHTTPD_USER:$LIGHTTPD_GROUP $WWW_FOLDER/forest.css - chown $LIGHTTPD_USER:$LIGHTTPD_GROUP $WWW_FOLDER/forum.html echo "Copied the files. Recheck your PirateBox now. " fi @@ -58,8 +56,6 @@ if [ $2 = 'part2' ] ; then mkdir -p $PIRATEBOX_FOLDER/tmp #Copy Forban-Link spacer - cp $PIRATEBOX_FOLDER/src/no_link.html $PIRATEBOX_FOLDER/www/forban_link.html - #Distribute the Directory Listing files $PIRATEBOX_FOLDER/bin/distribute_files.sh $SHARE_FOLDER/Shared true #Set permissions @@ -76,17 +72,13 @@ if [ $2 = 'part2' ] ; then cp $PIRATEBOX_FOLDER/src/kareha.pl $PIRATEBOX_FOLDER/share/board fi - [[ ! -L $PIRATEBOX_FOLDER/www/board ]] && ln -s $PIRATEBOX_FOLDER/share/board $PIRATEBOX_FOLDER/www/board - [[ ! -L $PIRATEBOX_FOLDER/www/Shared ]] && ln -s $UPLOADFOLDER $PIRATEBOX_FOLDER/www/Shared + [ ! -L $PIRATEBOX_FOLDER/www/board ] && ln -s $PIRATEBOX_FOLDER/share/board $PIRATEBOX_FOLDER/www/board + [ ! -L $PIRATEBOX_FOLDER/www/Shared ] && ln -s $UPLOADFOLDER $PIRATEBOX_FOLDER/www/Shared fi #Install the image-board if [ $2 = 'imageboard' ] ; then - #Activate on mainpage - cp $PIRATEBOX_FOLDER/src/forum_kareha.html $WWW_FOLDER/forum.html - - if [ -e $PIRATEBOX_FOLDER/share/board/init_done ] ; then echo "$PIRATEBOX_FOLDER/share/board/init_done file Found in Kareha folder. Won't reinstall board." exit 0; @@ -117,13 +109,11 @@ if [ $2 = 'imageboard' ] ; then cd $PIRATEBOX_FOLDER/share/board cp -R mode_image/* ./ cp $PIRATEBOX_FOLDER/src/kareha_img_config.pl $PIRATEBOX_FOLDER/share/board/config.pl + cp $PIRATEBOX_FOLDER/src/no_forum.html $PIRATEBOX_FOLDER/share/board/index.htm chown -R $LIGHTTPD_USER:$LIGHTTPD_GROUP $PIRATEBOX_FOLDER/share/board #Install filetype thumbnails mv $PIRATEBOX_FOLDER/share/board/extras/icons $PIRATEBOX_FOLDER/share/board/ - #Activate on mainpage - cp $PIRATEBOX_FOLDER/src/forum_kareha.html $WWW_FOLDER/forum.html - echo "Errors in chown occurs if you are using vfat on the USB stick" echo " . don't Panic!" echo "Generating index page" diff --git a/piratebox/piratebox/bin/piratebox_setup_wlan.sh b/piratebox/piratebox/bin/piratebox_setup_wlan.sh index dc89f08..f2c2b91 100755 --- a/piratebox/piratebox/bin/piratebox_setup_wlan.sh +++ b/piratebox/piratebox/bin/piratebox_setup_wlan.sh @@ -8,6 +8,28 @@ # Netmask # Interface +probe() { + if [ "$PROBE_INTERFACE" = "yes" ] ; then + echo -n "Probing interface $INTERFACE" + ifconfig "$INTERFACE" >> /dev/null 2>&1 + TEST_OK=$? + CNT=$PROBE_TIME + while [[ "$TEST_OK" != "0" && "$CNT" != "0" ]] + do + echo -n "." + sleep 1 + CNT=$(( $CNT - 1 )) + if [ "$CNT" = 0 ] ; then + exit 99 + fi + ifconfig "$INTERFACE" >> /dev/null 2>&1 + TEST_OK=$? + done + fi +} + + + # Load configfile if [ -z $1 ] || [ -z $2 ]; then @@ -82,23 +104,4 @@ elif [ $ = "probe" ] ; then fi -probe() { - if [ "$PROBE_INTERFACE" = "yes" ] ; then - echo -n "Probing interface $INTERFACE" - ifconfig "$INTERFACE" >> /dev/null 2>&1 - TEST_OK=$? - CNT=$PROBE_TIME - while [[ "$TEST_OK" != "0" && "$CNT" != "0" ]] - do - echo -n "." - sleep 1 - CNT=$(( $CNT - 1 )) - if [ "$CNT" = 0 ] ; then - exit 99 - fi - ifconfig "$INTERFACE" >> /dev/null 2>&1 - TEST_OK=$? - done - fi -} diff --git a/piratebox/piratebox/bin/shoutbox_stuff.sh b/piratebox/piratebox/bin/shoutbox_stuff.sh index 0d357cc..a7301d5 100755 --- a/piratebox/piratebox/bin/shoutbox_stuff.sh +++ b/piratebox/piratebox/bin/shoutbox_stuff.sh @@ -28,10 +28,12 @@ fi #Generate content file python psogen.py generate +$( sleep 20 && touch $GEN_CHATFILE ) & + #Set correct permissions chown $LIGHTTPD_USER:$LIGHTTPD_GROUP $SHOUTBOX_CHATFILE chown $LIGHTTPD_USER:$LIGHTTPD_GROUP $SHOUTBOX_GEN_HTMLFILE chmod ug+rw $SHOUTBOX_CHATFILE -chmod ug+rw $SHOUTBOX_CHATFILE +chmod ug+rw $SHOUTBOX_GEN_HTMLFILE diff --git a/piratebox/piratebox/bin/timesave.sh b/piratebox/piratebox/bin/timesave.sh index 55514b1..73f9356 100755 --- a/piratebox/piratebox/bin/timesave.sh +++ b/piratebox/piratebox/bin/timesave.sh @@ -8,12 +8,13 @@ # gives a sort of stability to complete standalone # systems. # -# Licenced under GPL-2 @ 2012 +# Licenced under GPL-2 @ 2012,2015 # Matthias Strubel matthias.strubel@aod-rgp.de ##function for similar saving & getting time get_datetime() { - date +%C%g%m%d%H%M + # Get format from piratebox.conf + date $TIMESAVE_FORMAT } @@ -66,7 +67,7 @@ fi if [ "$2" = "recover" ] ; then if [ `get_datetime` -lt `cat $TIMESAVE` ] ; then - date `cat $TIMESAVE ` + date -s `cat $TIMESAVE ` [ "$?" != "0" ] && echo "error in recovering time" && exit 255 echo "Time recovered" exit 0 diff --git a/piratebox/piratebox/conf/lighttpd/lighttpd.conf b/piratebox/piratebox/conf/lighttpd/lighttpd.conf index 7ad6ed3..ef013c6 100644 --- a/piratebox/piratebox/conf/lighttpd/lighttpd.conf +++ b/piratebox/piratebox/conf/lighttpd/lighttpd.conf @@ -71,6 +71,10 @@ $HTTP["url"] =~ "^/cgi-bin/" { cgi.assign = ( ".py" => "/usr/bin/python" ) } +$HTTP["url"] =~ "^/generate_204" { + cgi.assign = ( "generate_204" => "/usr/bin/python" ) +} + ## Warning this represents a security risk, as it allow to execute any file ## with a .pl/.py even outside of /usr/lib/cgi-bin. # diff --git a/piratebox/piratebox/conf/piratebox.conf b/piratebox/piratebox/conf/piratebox.conf index a4ec328..44c9a98 100644 --- a/piratebox/piratebox/conf/piratebox.conf +++ b/piratebox/piratebox/conf/piratebox.conf @@ -118,6 +118,11 @@ IP=$NET.$IP_SHORT ## Timesave file for non RTC devices TIMESAVE="$PIRATEBOX_FOLDER/share/timesave_file" +#On non OpenWRT you can use the default output format +# as an input format. For OpenWrt you need to specify +%C%g%m%d%H%M +# The content is exchanged during makefile processing and image build +TIMESAVE_FORMAT="" + #Start droopy? - Enable upload? DROOPY_ENABLED="yes" #Image-SRC @@ -125,6 +130,8 @@ IMAGENAME="piratebox-logo-small.png" IMAGE="$PIRATEBOX_FOLDER/src/$IMAGENAME" DROOPY_TXT="" DROOPY_PORT="8080" +# Set correct permissions for an uploaded file +DROOPY_CHMOD="755" DROOPY_USERDIR="" # Uncomment line below for adding directory feature #DROOPY_USERDIR=" -u True " diff --git a/piratebox/piratebox/init.d/piratebox b/piratebox/piratebox/init.d/piratebox index f35aeae..dcacc7d 100755 --- a/piratebox/piratebox/init.d/piratebox +++ b/piratebox/piratebox/init.d/piratebox @@ -54,7 +54,7 @@ else fi -if [[ -f $PIRATEBOX/conf/init_done ]] ; then +if [ -f $PIRATEBOX/conf/init_done ] ; then INIT=OK else $PIRATEBOX/bin/hooks/hook_pre_init.sh "$CONF" @@ -145,7 +145,7 @@ case "$1" in DROOPY_USER=" -c $LIGHTTPD_USER:$LIGHTTPD_GROUP " fi log_daemon_msg "Starting droopy..." - start-stop-daemon $DROOPY_USER -m --start --background --pidfile $PIDFILE_DROOPY --exec $PIRATEBOX/bin/droopy -- -H $HOST -d "$UPLOADFOLDER" -c "" -m "$DROOPY_TXT" $DROOPY_USERDIR $DROOPY_PORT + start-stop-daemon $DROOPY_USER -m --start --background --pidfile $PIDFILE_DROOPY --exec $PIRATEBOX/bin/droopy -- -d "$UPLOADFOLDER" -m "$DROOPY_TXT" --chmod $DROOPY_CHMOD $DROOPY_USERDIR $DROOPY_PORT log_end_msg $? fi diff --git a/piratebox/piratebox/init.d/piratebox_alt b/piratebox/piratebox/init.d/piratebox_alt index 66e2489..b767d0d 100755 --- a/piratebox/piratebox/init.d/piratebox_alt +++ b/piratebox/piratebox/init.d/piratebox_alt @@ -138,7 +138,7 @@ case "$1" in if [ "$DROOPY_USE_USER" = "yes" ] ; then DROOPY_USER=" -c $LIGHTTPD_USER:$LIGHTTPD_GROUP " fi - start-stop-daemon $DROOPY_USER -m -S -b -p $PIDFILE_DROOPY -x $PIRATEBOX/bin/droopy -- -H $HOST -d "$UPLOADFOLDER" -m "$DROOPY_TXT" -c "" $DROOPY_USERDIR $DROOPY_PORT + start-stop-daemon $DROOPY_USER -m -S -b -p $PIDFILE_DROOPY -x $PIRATEBOX/bin/droopy -- -d "$UPLOADFOLDER" -m "$DROOPY_TXT" --chmod $DROOPY_CHMOD $DROOPY_USERDIR $DROOPY_PORT echo $? fi diff --git a/piratebox/piratebox/python_lib/broadcast.py b/piratebox/piratebox/python_lib/broadcast.py index e2916f2..70107bf 100644 --- a/piratebox/piratebox/python_lib/broadcast.py +++ b/piratebox/piratebox/python_lib/broadcast.py @@ -80,8 +80,8 @@ def __errorMessage (self, msg): def send(self): for destination in self.destination: if socket.has_ipv6 and re.search(":", destination) and not self.ipv6_disabled == 1: - - self.__debugMessage( "working in ipv6 part on destination " + destination ) + + self.__debugMessage( "working in ipv6 part on destination " + destination ) # Even if Python is compiled with IPv6, it doesn't mean that the os # is supporting IPv6. (like the Nokia N900) diff --git a/piratebox/piratebox/python_lib/discover.py b/piratebox/piratebox/python_lib/discover.py index 4cdee2f..9ab4f6d 100644 --- a/piratebox/piratebox/python_lib/discover.py +++ b/piratebox/piratebox/python_lib/discover.py @@ -17,16 +17,16 @@ def handle(self): socket = self.request[1] if data[:9] == "piratebox": if data[10:12] == "sb": - if data != lastmsg : - msg = messages.shoutbox_message() - msg.set_message(data) - content = msg.get() - writeToDisk(content) + if data != lastmsg : + msg = messages.shoutbox_message() + msg.set_message(data) + content = msg.get() + writeToDisk(content) generate_html_from_file() - lastmsg = data - else: - print data[11:12] - print data + lastmsg = data + else: + print data[11:12] + print data else: print "debug : not a piratebox message" diff --git a/piratebox/piratebox/python_lib/messages.py b/piratebox/piratebox/python_lib/messages.py index dae0843..1884efb 100644 --- a/piratebox/piratebox/python_lib/messages.py +++ b/piratebox/piratebox/python_lib/messages.py @@ -6,46 +6,43 @@ import sys class message: - - def __init__(self, name="generate" ): - if name == "generate": - self.name=socket.gethostname() - else: - self.name=name + def __init__(self, name="generate" ): + if name == "generate": + self.name=socket.gethostname() + else: + self.name=name - self.type="gc" - self.decoded="" + self.type="gc" + self.decoded="" - def set ( self, content=" " ): - base64content = base64.b64encode ( content ) - self.decoded="piratebox;"+ self.type + ";01;" + self.name + ";" + base64content - - def get ( self ): - - # TODO Split decoded part - message_parts = string.split ( self.decoded , ";" ) + def set ( self, content=" " ): + base64content = base64.b64encode ( content ) + self.decoded="piratebox;"+ self.type + ";01;" + self.name + ";" + base64content - if message_parts[0] != "piratebox" : - return None + def get ( self ): + # TODO Split decoded part + message_parts = string.split ( self.decoded , ";" ) - b64_content_part = message_parts[4] + if message_parts[0] != "piratebox": + return None - content = base64.b64decode ( b64_content_part ) - return content + b64_content_part = message_parts[4] + + content = base64.b64decode ( b64_content_part ) + return content - def get_sendername (self): - return self.name + def get_sendername (self): + return self.name - def get_message ( self ): - return self.decoded + def get_message ( self ): + return self.decoded - def set_message ( self , decoded): - self.decoded = decoded + def set_message ( self , decoded): + self.decoded = decoded class shoutbox_message(message): - def __init__(self, name="generate" ): - message.__init__( self , name) - self.type="sb" - + def __init__(self, name="generate" ): + message.__init__( self , name) + self.type="sb" diff --git a/piratebox/piratebox/python_lib/psogen.py b/piratebox/piratebox/python_lib/psogen.py index 70911f5..00a28b7 100755 --- a/piratebox/piratebox/python_lib/psogen.py +++ b/piratebox/piratebox/python_lib/psogen.py @@ -21,6 +21,14 @@ broadcast_destination = False +def html_escape(text): + """Remove HTML chars from the given text and replace them with HTML +entities. """ + html_escape_table = { + '"': """, "'": "'", ">": ">", + "<": "<"} + return "".join(html_escape_table.get(c,c) for c in text) + #-------------- # Generates Shoutbox-HTML-Frame ... # Imports: @@ -91,27 +99,27 @@ def save_input( name , indata , color ): return writeToDisk ( content ) def writeToNetwork ( content , broadcast_destination ): - message = messages.shoutbox_message() - message.set(content) - casting = broadcast.broadcast( ) - casting.setDestination(broadcast_destination) - casting.set( message.get_message() ) - casting.send() - return None + message = messages.shoutbox_message() + message.set(content) + casting = broadcast.broadcast( ) + casting.setDestination(broadcast_destination) + casting.set( message.get_message() ) + casting.send() + return None def writeToDisk ( content ): - old = read_data_file() - finalcontent = content + old - datafile = open(datafilename, 'r+') - datafile.write(finalcontent) - #datafile.truncate(0) - datafile.close() - return finalcontent - - -def prepare_line ( name, indata, color ): - datapass = re.sub("<", "<", indata) - data = re.sub(">", ">", datapass) + old = read_data_file() + finalcontent = content + old + datafile = open(datafilename, 'r+') + datafile.write(finalcontent) + #datafile.truncate(0) + datafile.close() + return finalcontent + +def prepare_line (name, indata, color): + name = html_escape(name) + data = html_escape(indata) + color = html_escape(color) curdate = datetime.datetime.now() # Trying to make it look like this: #
@@ -132,6 +140,3 @@ def prepare_line ( name, indata, color ): generate_html_from_file () print "Generated HTML-Shoutbox File." - - - diff --git a/piratebox/piratebox/src/forban_link.html b/piratebox/piratebox/src/forban_link.html deleted file mode 100644 index dd3ad6d..0000000 --- a/piratebox/piratebox/src/forban_link.html +++ /dev/null @@ -1 +0,0 @@ -Visit installed Forban
diff --git a/piratebox/piratebox/src/forum_forest.html b/piratebox/piratebox/src/forum_forest.html deleted file mode 100755 index aca57e6..0000000 --- a/piratebox/piratebox/src/forum_forest.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - -4. Discuss about it here.
- - diff --git a/piratebox/piratebox/src/forum_kareha.html b/piratebox/piratebox/src/forum_kareha.html deleted file mode 100755 index 003ba80..0000000 --- a/piratebox/piratebox/src/forum_kareha.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - -4. Discuss about it here.
- - diff --git a/piratebox/piratebox/src/kareha_img_config.pl b/piratebox/piratebox/src/kareha_img_config.pl index 51b7a0f..80e28ee 100644 --- a/piratebox/piratebox/src/kareha_img_config.pl +++ b/piratebox/piratebox/src/kareha_img_config.pl @@ -1,13 +1,13 @@ # # Example config file. -# +# # Uncomment and edit the options you want to specifically change from the # default values. You must specify ADMIN_PASS and SECRET. # # System config -# use constant ADMIN_PASS => 'CHANGEME'; # Admin password. For fucks's sake, change this. -# use constant SECRET => 'CHANGEME'; # Cryptographic secret. CHANGE THIS to something totally random, and long. +#use constant ADMIN_PASS => 'xyzPASSWORDzyx'; # Admin password. For fucks's sake, change this. +#use constant SECRET => 'xyzSECRETCODEzyx'; # Cryptographic secret. CHANGE THIS to something totally random, and long. #use constant CAPPED_TRIPS => ('!!example1'=>' capcode','!!example2'=>' cap'); # Admin tripcode hash, for startng threads when locked down, and similar. Format is '!trip'=>'capcode', where 'capcode' is what is shown instead of the trip. This can contain HTML, but keep it valid XHTML! # Page look diff --git a/piratebox/piratebox/src/no_forum.html b/piratebox/piratebox/src/no_forum.html new file mode 100644 index 0000000..6582521 --- /dev/null +++ b/piratebox/piratebox/src/no_forum.html @@ -0,0 +1,10 @@ + + +The kareha imageboard is not fully configured.
+
+Visit the following Link to do the initial configuration. +
+
+Or go back to PirateBox start page. + + diff --git a/piratebox/piratebox/src/redirect.html.schema b/piratebox/piratebox/src/redirect.html.schema index 2ce7385..eeb2d67 100644 --- a/piratebox/piratebox/src/redirect.html.schema +++ b/piratebox/piratebox/src/redirect.html.schema @@ -1,7 +1,9 @@ Redirect... - + + + Redirect diff --git a/piratebox/piratebox/www/cgi-bin/psowrte.py b/piratebox/piratebox/www/cgi-bin/psowrte.py index 0a9d96f..363d51c 100755 --- a/piratebox/piratebox/www/cgi-bin/psowrte.py +++ b/piratebox/piratebox/www/cgi-bin/psowrte.py @@ -4,26 +4,26 @@ # Writes the recieved information to the data file. -import cgi, datetime, os, re +import cgi, datetime from psogen import process_form + print "Content-type:text/html\r\n\r\n" values = cgi.FieldStorage() if values.has_key("name"): - name = values["name"].value + rawname = values["name"].value else: - name = " " + rawname = " " if values.has_key("data"): rawdata = values["data"].value else: rawdata = " " -datapass = re.sub("<", "<", rawdata) -data = re.sub(">", ">", datapass) + color = values["color"].value curdate = datetime.datetime.now() -process_form( name , rawdata , color ) +process_form(rawname, rawdata, color) print """ok""" diff --git a/piratebox/piratebox/www/generate_204 b/piratebox/piratebox/www/generate_204 new file mode 100644 index 0000000..d043d64 --- /dev/null +++ b/piratebox/piratebox/www/generate_204 @@ -0,0 +1,3 @@ +print("Status: 204 No response") +print("Content-Type: text/html; charset=ISO-8859-1") +print("") diff --git a/piratebox/piratebox/www/index.html b/piratebox/piratebox/www/index.html index 61e8365..08af48c 100644 --- a/piratebox/piratebox/www/index.html +++ b/piratebox/piratebox/www/index.html @@ -7,7 +7,7 @@ - +