Kaynağa Gözat

Merge branch 'master' into js-unit-testing

El RIDO 9 yıl önce
ebeveyn
işleme
30993d8763

+ 1 - 2
.github/ISSUE_TEMPLATE.md

@@ -35,5 +35,4 @@ If you have access to the server log files, also copy them here.
 <!-- The version of PrivateBin, if you use an unstable version paste the commit hash or the GitHub link to the commit here (you can get it by running `git rev-parse HEAD`) -->
 <!-- The version of PrivateBin, if you use an unstable version paste the commit hash or the GitHub link to the commit here (you can get it by running `git rev-parse HEAD`) -->
 **PrivateBin version:**
 **PrivateBin version:**
 
 
-* I can reproduce this issue on <https://privatebin.net>: Yes / No
-
+I can reproduce this issue on <https://privatebin.net>: Yes / No

+ 1 - 149
INSTALL.md

@@ -1,149 +1 @@
-# Installation
-
-**TL;DR:** Download the
-[latest release archive](https://github.com/PrivateBin/PrivateBin/releases/latest)
-and extract it in your web hosts folder where you want to install your PrivateBin
-instance. We try to provide a safe default configuration, but we advise you to
-check the options and adjust them as you see fit.
-
-## Basic installation
-
-### Requirements
-
-- PHP version 5.4 or above
-- _one_ of the following sources of cryptographically safe randomness is required:
-  - PHP 7 or higher
-  - [Libsodium](https://download.libsodium.org/libsodium/content/installation/) and it's [PHP extension](https://paragonie.com/book/pecl-libsodium/read/00-intro.md#installing-libsodium)
-  - open_basedir access to `/dev/urandom`
-  - mcrypt extension
-  - com_dotnet extension
-  
-  Mcrypt needs to be able to access `/dev/urandom`. This means if `open_basedir` is set, it must include this file.
-- GD extension
-- some disk space or (optional) a database supported by [PDO](https://secure.php.net/manual/book.pdo.php)
-- ability to create files and folders in the installation directory and the PATH
-- A web browser with javascript support
-
-### Configuration
-
-In the file `cfg/conf.ini` you can configure PrivateBin. A `cfg/conf.ini.sample`
-is provided containing all options and default values. You can copy it to
-`cfg/conf.ini` and adapt it as needed. The config file is divided into multiple
-sections, which are enclosed in square brackets.
-
-In the `[main]` section you can enable or disable the discussion feature, set
-the limit of stored pastes and comments in bytes. The `[traffic]` section lets
-you set a time limit in seconds. Users may not post more often then this limit
-to your PrivateBin installation.
-
-More details can be found in the
-[configuration documentation](https://github.com/PrivateBin/PrivateBin/wiki/Configuration).
-
-## Further configuration
-
-After (or before) setting up PrivateBin, also set up HTTPS, as without HTTPS
-PrivateBin is not secure. (
-[More information](https://github.com/PrivateBin/PrivateBin/wiki/FAQ#how-should-i-setup-https))
-
-If you want to use PrivateBin behind Cloudflare, make sure you disabled Rocket
-loader and unchecked "Javascript" for Auto Minify, found in your domain settings,
-under "Speed". (More information
-[in this FAQ entry](https://github.com/PrivateBin/PrivateBin/wiki/FAQ#user-content-how-to-make-privatebin-work-when-using-cloudflare-for-ddos-protection))
-
-## Advanced installation
-
-### Changing the path
-
-In the index.php you can define a different `PATH`. This is useful to secure your
-installation. You can move the configuration, data files, templates and PHP
-libraries (directories cfg, doc, data, lib, tpl, tst and vendor) outside of your
-document root. This new location must still be accessible to your webserver / PHP
-process (see also
-[open_basedir setting](https://secure.php.net/manual/en/ini.core.php#ini.open-basedir)).
-
-> #### PATH Example
-> Your PrivateBin installation lives in a subfolder called "paste" inside of
-> your document root. The URL looks like this:
-> http://example.com/paste/
->
-> The full path of PrivateBin on your webserver is:
-> /home/example.com/htdocs/paste
-> 
-> When setting the path like this:
-> define('PATH', '../../secret/privatebin/');
->
-> PrivateBin will look for your includes / data here:
-> /home/example.com/secret/privatebin
-
-### Web server configuration
-
-A `robots.txt` file is provided in the root dir of PrivateBin. It disallows all
-robots from accessing your pastes. It is recommend to place it into the root of
-your web directory if you have installed PrivateBin in a subdirectory. Make sure
-to adjust it, so that the file paths match your installation. Of course also
-adjust the file if you already use a `robots.txt`.
-
-A `.htaccess.disabled` file is provided in the root dir of PrivateBin. It blocks
-some known robots and link-scanning bots. If you use Apache, you can rename the
-file to `.htaccess` to enable this feature. If you use another webserver, you
-have to configure it manually to do the same.
-
-### Using a database instead of flat files
-
-In the configuration file the `[model]` and `[model_options]` sections let you
-configure your favourite way of storing the pastes and discussions on your
-server.
-
-`Filesystem` is the default model, which stores everything in files in the
-data folder. This is the recommended setup for most sites.
-
-Under high load, in distributed setups or if you are not allowed to store files
-locally, you might want to switch to the `Database` model. This lets you
-store your data in a database. Basically all databases that are supported by
-[PDO](https://secure.php.net/manual/en/book.pdo.php) may be used. Automatic table
-creation is provided for `pdo_ibm`, `pdo_informix`, `pdo_mssql`, `pdo_mysql`,
-`pdo_oci`, `pdo_pgsql` and `pdo_sqlite`. You may want to provide a table prefix,
-if you have to share the PrivateBin database with another application or you want
-to use a prefix for
-[security reasons](https://security.stackexchange.com/questions/119510/is-using-a-db-prefix-for-tables-more-secure).
-The table prefix option is called `tbl`.
-
-> #### Note
-> The `Database` model has only been tested with SQLite, MySQL and PostgreSQL,
-> although it would not be recommended to use SQLite in a production environment.
-> If you gain any experience running PrivateBin on other RDBMS, please let us
-> know.
-
-For reference or if you want to create the table schema for yourself (replace
-`prefix_` with your own table prefix and create the table schema with phpMyAdmin
-or the MYSQL console):
-
-    CREATE TABLE prefix_paste (
-        dataid CHAR(16) NOT NULL,
-        data BLOB,
-        postdate INT,
-        expiredate INT,
-        opendiscussion INT,
-        burnafterreading INT,
-        meta TEXT,
-        attachment MEDIUMBLOB,
-        attachmentname BLOB,
-        PRIMARY KEY (dataid)
-    );
-    
-    CREATE TABLE prefix_comment (
-        dataid CHAR(16),
-        pasteid CHAR(16),
-        parentid CHAR(16),
-        data BLOB,
-        nickname BLOB,
-        vizhash BLOB,
-        postdate INT,
-        PRIMARY KEY (dataid)
-    );
-    CREATE INDEX parent ON prefix_comment(pasteid);
-    
-    CREATE TABLE prefix_config (
-        id CHAR(16) NOT NULL, value TEXT, PRIMARY KEY (id)
-    );
-    INSERT INTO prefix_config VALUES('VERSION', '1.1');
+For installation instructions, see [our wiki](https://github.com/PrivateBin/PrivateBin/wiki/Installation).

+ 21 - 21
README.md

@@ -12,13 +12,13 @@
 **PrivateBin** is a minimalist, open source online pastebin where the server has
 **PrivateBin** is a minimalist, open source online pastebin where the server has
 zero knowledge of pasted data.
 zero knowledge of pasted data.
 
 
-Data is encrypted/decrypted in the browser using 256bit AES in [Galois Counter mode](https://en.wikipedia.org/wiki/Galois/Counter_Mode).
+Data is encrypted and decrypted in the browser using 256bit AES in [Galois Counter mode](https://en.wikipedia.org/wiki/Galois/Counter_Mode).
 
 
 This is a fork of ZeroBin, originally developed by
 This is a fork of ZeroBin, originally developed by
-[Sébastien Sauvage](https://github.com/sebsauvage/ZeroBin). It was refactored
-to allow easier and cleaner extensions and has now many more features than the
-original. It is however still fully compatible to the original ZeroBin 0.19
-data storage scheme. Therefore such installations can be upgraded to this fork
+[Sébastien Sauvage](https://github.com/sebsauvage/ZeroBin). ZeroBin was refactored
+to allow easier and cleaner extensions. PrivateBin has many more features than the
+original ZeroBin. It is, however, still fully compatible to the original ZeroBin 0.19
+data storage scheme. Therefore, such installations can be upgraded to PrivateBin
 without losing any data.
 without losing any data.
 
 
 ## What PrivateBin provides
 ## What PrivateBin provides
@@ -38,37 +38,37 @@ without losing any data.
 
 
 ## What it doesn't provide
 ## What it doesn't provide
 
 
-- As a user you have to trust the server administrator, your internet provider
-  and any country the traffic passes not to inject any malicious javascript code.
-  For a basic security the PrivateBin installation *has to provide HTTPS*!
-  Additionally it should be secured by
+- As a user you have to trust the server administrator not to inject any malicious
+  javascript code.
+  For basic security, the PrivateBin installation *has to provide HTTPS*!
+  Otherwise you would also have to trust your internet provider, and any country
+  the traffic passes through.
+  Additionally the instance should be secured by
   [HSTS](https://en.wikipedia.org/wiki/HTTP_Strict_Transport_Security) and
   [HSTS](https://en.wikipedia.org/wiki/HTTP_Strict_Transport_Security) and
   ideally by [HPKP](https://en.wikipedia.org/wiki/HTTP_Public_Key_Pinning) using a
   ideally by [HPKP](https://en.wikipedia.org/wiki/HTTP_Public_Key_Pinning) using a
-  certificate either validated by a trusted third party (check the certificate
-  when first using a new PrivateBin instance) or self-signed by the server
-  operator, validated using a
+  certificate. It can use traditional certificate authorities and/or use
   [DNSSEC](https://en.wikipedia.org/wiki/Domain_Name_System_Security_Extensions)
   [DNSSEC](https://en.wikipedia.org/wiki/Domain_Name_System_Security_Extensions)
   protected
   protected
   [DANE](https://en.wikipedia.org/wiki/DNS-based_Authentication_of_Named_Entities)
   [DANE](https://en.wikipedia.org/wiki/DNS-based_Authentication_of_Named_Entities)
   record.
   record.
 
 
 - The "key" used to encrypt the paste is part of the URL. If you publicly post
 - The "key" used to encrypt the paste is part of the URL. If you publicly post
-  the URL of a paste that is not password-protected, everybody can read it.
-  Use a password if you want your paste to be private. In this case make sure to
-  use a strong password and do only share it privately and end-to-end-encrypted.
+  the URL of a paste that is not password-protected, anyone can read it.
+  Use a password if you want your paste to be private. In this case, make sure to
+  use a strong password and only share it privately and end-to-end-encrypted.
 
 
 - A server admin might be forced to hand over access logs to the authorities.
 - A server admin might be forced to hand over access logs to the authorities.
-  PrivateBin encrypts your text and the discussion contents, but who accessed it
-  first might still be disclosed via such access logs.
+  PrivateBin encrypts your text and the discussion contents, but who accessed a
+  paste (first) might still be disclosed via access logs.
 
 
 - In case of a server breach your data is secure as it is only stored encrypted
 - In case of a server breach your data is secure as it is only stored encrypted
-  on the server. However the server could be misused or the server admin could
+  on the server. However, the server could be misused or the server admin could
   be legally forced into sending malicious JavaScript to all web users, which
   be legally forced into sending malicious JavaScript to all web users, which
-  grabs the decryption key and send it to the server when a user accesses a
+  grabs the decryption key and sends it to the server when a user accesses a
   PrivateBin.  
   PrivateBin.  
-  Therefore do not access any PrivateBin instance if you think it has been
+  Therefore, do not access any PrivateBin instance if you think it has been
   compromised. As long as no user accesses this instance with a previously
   compromised. As long as no user accesses this instance with a previously
-  generated URL, the content can''t be decrypted.
+  generated URL, the content can't be decrypted.
 
 
 ## Options
 ## Options
 
 

+ 1 - 1
composer.json

@@ -4,7 +4,7 @@
     "type": "project",
     "type": "project",
     "keywords": ["private", "secure", "end-to-end-encrypted", "e2e", "paste", "pastebin", "zero", "zero-knowledge", "encryption", "encrypted", "AES"],
     "keywords": ["private", "secure", "end-to-end-encrypted", "e2e", "paste", "pastebin", "zero", "zero-knowledge", "encryption", "encrypted", "AES"],
     "homepage": "https://github.com/PrivateBin",
     "homepage": "https://github.com/PrivateBin",
-    "license":"zlib-acknowledgement",
+    "license":"zlib",
     "support": {
     "support": {
         "issues": "https://github.com/PrivateBin/PrivateBin/issues",
         "issues": "https://github.com/PrivateBin/PrivateBin/issues",
         "wiki": "https://github.com/PrivateBin/PrivateBin/wiki",
         "wiki": "https://github.com/PrivateBin/PrivateBin/wiki",

+ 5 - 5
i18n/es.json

@@ -93,7 +93,7 @@
     "Anonymous":
     "Anonymous":
         "Anónimo",
         "Anónimo",
     "Avatar generated from IP address":
     "Avatar generated from IP address":
-        "Avatar anónimo (Vizhash de la dirección IP)",
+        "Avatar generado a partir de la dirección IP",
     "Add comment":
     "Add comment":
         "Añadir comentario",
         "Añadir comentario",
     "Optional nickname…":
     "Optional nickname…":
@@ -130,7 +130,7 @@
     "Markdown": "Markdown",
     "Markdown": "Markdown",
     "Download attachment": "Descargar adjunto",
     "Download attachment": "Descargar adjunto",
     "Cloned: '%s'": "Clonado: '%s'.",
     "Cloned: '%s'": "Clonado: '%s'.",
-    "The cloned file '%s' was attached to this paste.": "The cloned file '%s' was attached to this paste.",
+    "The cloned file '%s' was attached to this paste.": "El archivo clonado '%s' ha sido adjuntado a este texto.",
     "Attach a file": "Adjuntar archivo",
     "Attach a file": "Adjuntar archivo",
     "Remove attachment": "Remover adjunto",
     "Remove attachment": "Remover adjunto",
     "Your browser does not support uploading encrypted files. Please use a newer browser.":
     "Your browser does not support uploading encrypted files. Please use a newer browser.":
@@ -147,9 +147,9 @@
     "Enter password":
     "Enter password":
         "Ingrese contraseña",
         "Ingrese contraseña",
     "Loading…": "Cargando…",
     "Loading…": "Cargando…",
-    "Decrypting paste…": "Decrypting paste…",
-    "Preparing new paste…": "Preparing new paste…",
+    "Decrypting paste…": "Descifrando texto…",
+    "Preparing new paste…": "Preparando texto nuevo…",
     "In case this message never disappears please have a look at <a href=\"https://github.com/PrivateBin/PrivateBin/wiki/FAQ#why-does-not-the-loading-message-go-away\">this FAQ for information to troubleshoot</a>.":
     "In case this message never disappears please have a look at <a href=\"https://github.com/PrivateBin/PrivateBin/wiki/FAQ#why-does-not-the-loading-message-go-away\">this FAQ for information to troubleshoot</a>.":
         "En caso de que este mensaje nunca desaparezca por favor revise <a href=\"https://github.com/PrivateBin/PrivateBin/wiki/FAQ#why-does-not-the-loading-message-go-away\">este FAQ para obtener información para solucionar problemas</a>.",
         "En caso de que este mensaje nunca desaparezca por favor revise <a href=\"https://github.com/PrivateBin/PrivateBin/wiki/FAQ#why-does-not-the-loading-message-go-away\">este FAQ para obtener información para solucionar problemas</a>.",
-    "+++ no paste text +++": "+++ no paste text +++"
+    "+++ no paste text +++": "+++ sin texto +++"
 }
 }

+ 4 - 4
i18n/fr.json

@@ -1,7 +1,7 @@
 {
 {
     "PrivateBin": "PrivateBin",
     "PrivateBin": "PrivateBin",
     "%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted <i>in the browser</i> using 256 bits AES. More information on the <a href=\"https://privatebin.info/\">project page</a>.":
     "%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted <i>in the browser</i> using 256 bits AES. More information on the <a href=\"https://privatebin.info/\">project page</a>.":
-        "%s est un 'pastebin' (ou gestionnaire d'extraits de texte et de code source) minimaliste et open source, dans lequel le serveur n'a aucune connaissance des données envoyées. Les données sont chiffrées/déchiffrées <i>dans le navigateur</i> par un chiffrage AES 256 bits. Plus d'informations sur <a href=\"https://privatebin.info/\">la page du projet</a>.",
+        "%s est un 'pastebin' (ou gestionnaire d'extraits de texte et de code source) minimaliste et open source, dans lequel le serveur n'a aucune connaissance des données envoyées. Les données sont chiffrées/déchiffrées <i>dans le navigateur</i> par un chiffrement AES 256 bits. Plus d'informations sur <a href=\"https://privatebin.info/\">la page du projet</a>.",
     "Because ignorance is bliss":
     "Because ignorance is bliss":
         "Parce que l'ignorance c'est le bonheur",
         "Parce que l'ignorance c'est le bonheur",
     "en": "fr",
     "en": "fr",
@@ -123,7 +123,7 @@
     "Could not create paste: %s":
     "Could not create paste: %s":
         "Impossible de créer le paste : %s",
         "Impossible de créer le paste : %s",
     "Cannot decrypt paste: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)":
     "Cannot decrypt paste: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)":
-        "Impossible de déchiffrer le paste : Clé de déchiffrage manquante dans l'URL (Avez-vous utilisé un redirecteur ou un site de réduction d'URL qui supprime une partie de l'URL ?)",
+        "Impossible de déchiffrer le paste : Clé de déchiffrement manquante dans l'URL (Avez-vous utilisé un redirecteur ou un site de réduction d'URL qui supprime une partie de l'URL ?)",
     "B": "o",
     "B": "o",
     "KiB": "Kio",
     "KiB": "Kio",
     "MiB": "Mio",
     "MiB": "Mio",
@@ -156,8 +156,8 @@
     "Enter password":
     "Enter password":
         "Entrez le mot de passe",
         "Entrez le mot de passe",
     "Loading…": "Chargement…",
     "Loading…": "Chargement…",
-    "Decrypting paste…": "Decrypting paste…",
-    "Preparing new paste…": "Preparing new paste…",
+    "Decrypting paste…": "Déchiffrement du paste…",
+    "Preparing new paste…": "Préparation du paste…",
     "In case this message never disappears please have a look at <a href=\"https://github.com/PrivateBin/PrivateBin/wiki/FAQ#why-does-not-the-loading-message-go-away\">this FAQ for information to troubleshoot</a>.":
     "In case this message never disappears please have a look at <a href=\"https://github.com/PrivateBin/PrivateBin/wiki/FAQ#why-does-not-the-loading-message-go-away\">this FAQ for information to troubleshoot</a>.":
         "Si ce message ne disparaîssait pas, jetez un oeil à <a href=\"https://github.com/PrivateBin/PrivateBin/wiki/FAQ#why-does-not-the-loading-message-go-away\">cette FAQ pour des idées de résolution</a> (en Anglais).",
         "Si ce message ne disparaîssait pas, jetez un oeil à <a href=\"https://github.com/PrivateBin/PrivateBin/wiki/FAQ#why-does-not-the-loading-message-go-away\">cette FAQ pour des idées de résolution</a> (en Anglais).",
     "+++ no paste text +++": "+++ no paste text +++"
     "+++ no paste text +++": "+++ no paste text +++"

+ 18 - 18
i18n/oc.json

@@ -1,9 +1,9 @@
 {
 {
     "PrivateBin": "PrivateBin",
     "PrivateBin": "PrivateBin",
     "%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted <i>in the browser</i> using 256 bits AES. More information on the <a href=\"https://privatebin.info/\">project page</a>.":
     "%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted <i>in the browser</i> using 256 bits AES. More information on the <a href=\"https://privatebin.info/\">project page</a>.":
-        "%s es un 'pastebin' (o gestionari d'extrachs de tèxte e còdi font) minimalista e open source, dins lo qual lo servidor a pas cap de coneissença de las donadas mandadas. Las donadas son chifradas/deschifradas <i>dins lo navigator</i> per un chiframent AES 256 bits. Mai informacions sus <a href=\"https://privatebin.info/\">la pagina del projècte</a>.",
+        "%s es un 'pastebin' (o gestionari dextrachs de tèxte e còdi font) minimalista e open source, dins lo qual lo servidor a pas cap de coneissença de las donadas mandadas. Las donadas son chifradas/deschifradas <i>dins lo navigator</i> per un chiframent AES 256 bits. Mai informacions sus <a href=\"https://privatebin.info/\">la pagina del projècte</a>.",
     "Because ignorance is bliss":
     "Because ignorance is bliss":
-        "Perque l'ignorància es bonaür",
+        "Perque lo bonaür es l’ignorància",
     "en": "oc",
     "en": "oc",
     "Paste does not exist, has expired or has been deleted.":
     "Paste does not exist, has expired or has been deleted.":
         "Lo tèxte existís pas, a expirat, o es estat suprimit.",
         "Lo tèxte existís pas, a expirat, o es estat suprimit.",
@@ -32,11 +32,11 @@
     "Paste was properly deleted.":
     "Paste was properly deleted.":
         "Lo tèxte es estat correctament suprimit.",
         "Lo tèxte es estat correctament suprimit.",
     "JavaScript is required for %s to work.<br />Sorry for the inconvenience.":
     "JavaScript is required for %s to work.<br />Sorry for the inconvenience.":
-        "JavaScript es requesit per far foncionar %s. <br />O planhèm per l'inconvenient.",
+        "JavaScript es requesit per far foncionar %s. <br />O planhèm per linconvenient.",
     "%s requires a modern browser to work.":
     "%s requires a modern browser to work.":
         "%s necessita un navigator modèrn per foncionar.",
         "%s necessita un navigator modèrn per foncionar.",
     "Still using Internet Explorer? Do yourself a favor, switch to a modern browser:":
     "Still using Internet Explorer? Do yourself a favor, switch to a modern browser:":
-        "Encora sus Internet Explorer ? Fasètz-vos una favor, passatz a un navigator modèrn :",
+        "Encora sus Internet Explorer ? Fasètz-vos una favor, passatz a un navigator modèrn :",
     "New":
     "New":
         "Nòu",
         "Nòu",
     "Send":
     "Send":
@@ -67,7 +67,7 @@
     "Never":
     "Never":
         "Jamai",
         "Jamai",
     "Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service.":
     "Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service.":
-        "Nota : Aquò es un servici d'espròva : las donadas pòdon èsser suprimidas a cada moment. De catons moriràn s'abusatz d'aqueste servici.",
+        "Nota : Aquò es un servici d’espròva : las donadas pòdon èsser suprimidas a cada moment. De catons moriràn s’abusatz d’aqueste servici.",
     "This document will expire in %d seconds.":
     "This document will expire in %d seconds.":
         ["Ce document expirera dans %d seconde.", "Aqueste document expirarà dins %d segondas."],
         ["Ce document expirera dans %d seconde.", "Aqueste document expirarà dins %d segondas."],
     "This document will expire in %d minutes.":
     "This document will expire in %d minutes.":
@@ -79,21 +79,21 @@
     "This document will expire in %d months.":
     "This document will expire in %d months.":
         ["Ce document expirera dans %d mois.", "Aqueste document expirarà dins %d meses."],
         ["Ce document expirera dans %d mois.", "Aqueste document expirarà dins %d meses."],
     "Please enter the password for this paste:":
     "Please enter the password for this paste:":
-        "Picatz lo senhal per aqueste tèxte :",
+        "Picatz lo senhal per aqueste tèxte:",
     "Could not decrypt data (Wrong key?)":
     "Could not decrypt data (Wrong key?)":
-        "Impossible de deschifrar las donadas (marrida clau ?)",
+        "Impossible de deschifrar las donadas (marrida clau?)",
     "Could not delete the paste, it was not stored in burn after reading mode.":
     "Could not delete the paste, it was not stored in burn after reading mode.":
         "Impossible de suprimir lo tèxte, perque es pas estat gardat en mòde \"Escafar aprèp lectura\".",
         "Impossible de suprimir lo tèxte, perque es pas estat gardat en mòde \"Escafar aprèp lectura\".",
     "FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.":
     "FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.":
         "PER VÒSTRES UÈLHS SOLAMENT. Tampetz pas aquesta fenèstra, aqueste tèxte poirà pas mai èsser afichat.",
         "PER VÒSTRES UÈLHS SOLAMENT. Tampetz pas aquesta fenèstra, aqueste tèxte poirà pas mai èsser afichat.",
     "Could not decrypt comment; Wrong key?":
     "Could not decrypt comment; Wrong key?":
-        "Impossible de deschifrar lo comentari ; marrida clau ?",
+        "Impossible de deschifrar lo comentari ; marrida clau?",
     "Reply":
     "Reply":
         "Respondre",
         "Respondre",
     "Anonymous":
     "Anonymous":
         "Anonime",
         "Anonime",
     "Avatar generated from IP address":
     "Avatar generated from IP address":
-        "Avatar anonime (Vizhash de l'adreça IP)",
+        "Avatar anonime (Vizhash de ladreça IP)",
     "Add comment":
     "Add comment":
         "Apondre un comentari",
         "Apondre un comentari",
     "Optional nickname…":
     "Optional nickname…":
@@ -105,25 +105,25 @@
     "Comment posted.":
     "Comment posted.":
         "Comentari mandat.",
         "Comentari mandat.",
     "Could not refresh display: %s":
     "Could not refresh display: %s":
-        "Impossible d'actualizar l'afichatge : %s",
+        "Impossible d’actualizar l’afichatge : %s",
     "unknown status":
     "unknown status":
         "Estatut desconegut",
         "Estatut desconegut",
     "server error or not responding":
     "server error or not responding":
         "Lo servidor respond pas o a rencontrat una error",
         "Lo servidor respond pas o a rencontrat una error",
     "Could not post comment: %s":
     "Could not post comment: %s":
-        "Impossible de mandar lo comentari : %s",
+        "Impossible de mandar lo comentari : %s",
     "Please move your mouse for more entropy…":
     "Please move your mouse for more entropy…":
         "Mercés de bolegar vòstra mirga per mai entropia…",
         "Mercés de bolegar vòstra mirga per mai entropia…",
     "Sending paste…":
     "Sending paste…":
         "Mandadís del tèxte…",
         "Mandadís del tèxte…",
     "Your paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit [Ctrl]+[c] to copy)</span>":
     "Your paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit [Ctrl]+[c] to copy)</span>":
-        "Vòstre tèxte es disponible a l'adreça <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Picatz sus [Ctrl]+[c] per copiar)</span>",
+        "Vòstre tèxte es disponible a ladreça <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Picatz sus [Ctrl]+[c] per copiar)</span>",
     "Delete data":
     "Delete data":
         "Supprimir las donadas del tèxte",
         "Supprimir las donadas del tèxte",
     "Could not create paste: %s":
     "Could not create paste: %s":
-        "Impossible de crear lo tèxte : %s",
+        "Impossible de crear lo tèxte : %s",
     "Cannot decrypt paste: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)":
     "Cannot decrypt paste: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)":
-        "Impossible de deschifrar lo tèxte : Clau de deschiframent absenta de l'URL (Avètz utilizat un redirector o un site de reduccion d'URL que suprimís una partida de l'URL ?)",
+        "Impossible de deschifrar lo tèxte : Clau de deschiframent absenta de l’URL (Avètz utilizat un redirector o un site de reduccion d’URL que suprimís una partida de l’URL ?)",
     "B": "o",
     "B": "o",
     "KiB": "Kio",
     "KiB": "Kio",
     "MiB": "Mio",
     "MiB": "Mio",
@@ -139,14 +139,14 @@
     "Markdown": "Markdown",
     "Markdown": "Markdown",
     "Download attachment": "Telecargar la pèça junta",
     "Download attachment": "Telecargar la pèça junta",
     "Cloned: '%s'": "Clonar: '%s'",
     "Cloned: '%s'": "Clonar: '%s'",
-    "The cloned file '%s' was attached to this paste.": "The cloned file '%s' was attached to this paste.",
+    "The cloned file '%s' was attached to this paste.": "Aqueste fichièr clonat '%s' es estat ajustat a aqueste tèxte.",
     "Attach a file": "Juntar un fichièr ",
     "Attach a file": "Juntar un fichièr ",
     "Remove attachment": "Levar la pèca junta",
     "Remove attachment": "Levar la pèca junta",
     "Your browser does not support uploading encrypted files. Please use a newer browser.":
     "Your browser does not support uploading encrypted files. Please use a newer browser.":
-        "Vòstre navigator es pas compatible amb lo mandadís de fichièrs chifrats. Mercés d'emplegar un navigator mai recent.",
+        "Vòstre navigator es pas compatible amb lo mandadís de fichièrs chifrats. Mercés demplegar un navigator mai recent.",
     "Invalid attachment.": "Pèça junta invalida.",
     "Invalid attachment.": "Pèça junta invalida.",
     "Options": "Opcions",
     "Options": "Opcions",
-    "Shorten URL": "Acorchir l'URL",
+    "Shorten URL": "Acorchir lURL",
     "Editor": "Editar",
     "Editor": "Editar",
     "Preview": "Previsualizar",
     "Preview": "Previsualizar",
     "%s requires the PATH to end in a \"%s\". Please update the PATH in your index.php.":
     "%s requires the PATH to end in a \"%s\". Please update the PATH in your index.php.":
@@ -159,6 +159,6 @@
     "Decrypting paste…": "Decrypting paste…",
     "Decrypting paste…": "Decrypting paste…",
     "Preparing new paste…": "Preparing new paste…",
     "Preparing new paste…": "Preparing new paste…",
     "In case this message never disappears please have a look at <a href=\"https://github.com/PrivateBin/PrivateBin/wiki/FAQ#why-does-not-the-loading-message-go-away\">this FAQ for information to troubleshoot</a>.":
     "In case this message never disappears please have a look at <a href=\"https://github.com/PrivateBin/PrivateBin/wiki/FAQ#why-does-not-the-loading-message-go-away\">this FAQ for information to troubleshoot</a>.":
-        "Se per cas aqueste messatge quita pas de s'afichar mercés de gaitar <a href=\"https://github.com/PrivateBin/PrivateBin/wiki/FAQ#why-does-not-the-loading-message-go-away\">aquesta FAQ per las solucions</a> (en Anglés).",
+        "Se per cas aqueste messatge quita pas de safichar mercés de gaitar <a href=\"https://github.com/PrivateBin/PrivateBin/wiki/FAQ#why-does-not-the-loading-message-go-away\">aquesta FAQ per las solucions</a> (en Anglés).",
     "+++ no paste text +++": "+++ no paste text +++"
     "+++ no paste text +++": "+++ no paste text +++"
 }
 }

+ 1 - 1
tpl/bootstrap.php

@@ -280,7 +280,7 @@ if ($PASSWORD):
 ?>
 ?>
 					<li>
 					<li>
 						<div id="password" class="navbar-form hidden">
 						<div id="password" class="navbar-form hidden">
-							<input type="password" id="passwordinput" placeholder="<?php echo I18n::_('Password (recommended)'); ?>" class="form-control" size="19" />
+							<input type="password" id="passwordinput" placeholder="<?php echo I18n::_('Password (recommended)'); ?>" class="form-control" size="23" />
 						</div>
 						</div>
 					</li>
 					</li>
 <?php
 <?php

+ 1 - 0
vendor/composer/autoload_classmap.php

@@ -23,6 +23,7 @@ return array(
     'PrivateBin\\Model\\Comment' => $baseDir . '/lib/Model/Comment.php',
     'PrivateBin\\Model\\Comment' => $baseDir . '/lib/Model/Comment.php',
     'PrivateBin\\Model\\Paste' => $baseDir . '/lib/Model/Paste.php',
     'PrivateBin\\Model\\Paste' => $baseDir . '/lib/Model/Paste.php',
     'PrivateBin\\Persistence\\AbstractPersistence' => $baseDir . '/lib/Persistence/AbstractPersistence.php',
     'PrivateBin\\Persistence\\AbstractPersistence' => $baseDir . '/lib/Persistence/AbstractPersistence.php',
+    'PrivateBin\\Persistence\\DataStore' => $baseDir . '/lib/Persistence/DataStore.php',
     'PrivateBin\\Persistence\\PurgeLimiter' => $baseDir . '/lib/Persistence/PurgeLimiter.php',
     'PrivateBin\\Persistence\\PurgeLimiter' => $baseDir . '/lib/Persistence/PurgeLimiter.php',
     'PrivateBin\\Persistence\\ServerSalt' => $baseDir . '/lib/Persistence/ServerSalt.php',
     'PrivateBin\\Persistence\\ServerSalt' => $baseDir . '/lib/Persistence/ServerSalt.php',
     'PrivateBin\\Persistence\\TrafficLimiter' => $baseDir . '/lib/Persistence/TrafficLimiter.php',
     'PrivateBin\\Persistence\\TrafficLimiter' => $baseDir . '/lib/Persistence/TrafficLimiter.php',

+ 1 - 0
vendor/composer/autoload_static.php

@@ -52,6 +52,7 @@ class ComposerStaticInitDontChange
         'PrivateBin\\Model\\Comment' => __DIR__ . '/../..' . '/lib/Model/Comment.php',
         'PrivateBin\\Model\\Comment' => __DIR__ . '/../..' . '/lib/Model/Comment.php',
         'PrivateBin\\Model\\Paste' => __DIR__ . '/../..' . '/lib/Model/Paste.php',
         'PrivateBin\\Model\\Paste' => __DIR__ . '/../..' . '/lib/Model/Paste.php',
         'PrivateBin\\Persistence\\AbstractPersistence' => __DIR__ . '/../..' . '/lib/Persistence/AbstractPersistence.php',
         'PrivateBin\\Persistence\\AbstractPersistence' => __DIR__ . '/../..' . '/lib/Persistence/AbstractPersistence.php',
+        'PrivateBin\\Persistence\\DataStore' => __DIR__ . '/../..' . '/lib/Persistence/DataStore.php',
         'PrivateBin\\Persistence\\PurgeLimiter' => __DIR__ . '/../..' . '/lib/Persistence/PurgeLimiter.php',
         'PrivateBin\\Persistence\\PurgeLimiter' => __DIR__ . '/../..' . '/lib/Persistence/PurgeLimiter.php',
         'PrivateBin\\Persistence\\ServerSalt' => __DIR__ . '/../..' . '/lib/Persistence/ServerSalt.php',
         'PrivateBin\\Persistence\\ServerSalt' => __DIR__ . '/../..' . '/lib/Persistence/ServerSalt.php',
         'PrivateBin\\Persistence\\TrafficLimiter' => __DIR__ . '/../..' . '/lib/Persistence/TrafficLimiter.php',
         'PrivateBin\\Persistence\\TrafficLimiter' => __DIR__ . '/../..' . '/lib/Persistence/TrafficLimiter.php',