Compare commits

...

139 Commits

Author SHA1 Message Date
El RIDO 74ac3350a3
Merge pull request #1268 from PrivateBin/crowdin-translation
New Crowdin updates
2024-03-18 19:24:44 +01:00
PrivateBin Translator Bot 5a52f71bb7 New translations en.json (French) 2024-03-18 18:14:41 +01:00
El RIDO f0794e3c0b document & attribute changes from #1267 2024-03-18 07:48:20 +01:00
El RIDO db287a10fe
Merge pull request #1267 from asherber/shorten-yourls
Allow for shortenviayourls in query params
2024-03-18 07:42:59 +01:00
Aaron Sherber 7a4c6c010f
Update conf.sample.php 2024-03-16 19:46:57 -04:00
Aaron Sherber 7c9cc7754f
Allow for shortenviayourls in query params 2024-03-16 16:55:49 -04:00
El RIDO 6eb5fdcc06
Merge pull request #1264 from PrivateBin/email-shortend-url
shortened paste URL does not appear in email
2024-03-14 06:59:07 +01:00
El RIDO e1e0e8399c
phpdoc improvements 2024-03-10 18:01:46 +01:00
El RIDO 89a5d07b94
shortened paste URL does not appear in email
fixes #606
2024-03-10 17:26:30 +01:00
El RIDO 5f00587d71
phpdoc improvements, fixes #1036 2024-03-10 17:07:10 +01:00
El RIDO 53d2d3334d
document & attribute changes 2024-03-10 16:12:40 +01:00
Aaron Sherber fd7d9f4715
Fix styleci issues 2024-03-09 16:55:44 -05:00
Aaron Sherber 8abf6ae9cb
Always add cache control headers 2024-03-09 16:49:42 -05:00
El RIDO a62f4babbf
Merge pull request #1258 from PrivateBin/dependabot/composer/phpunit/phpunit-9.6.17
Bump phpunit/phpunit from 9.6.16 to 9.6.17
2024-02-26 12:37:38 +01:00
El RIDO d52b8af0f5
Merge pull request #1257 from PrivateBin/crowdin-translation
New Crowdin updates
2024-02-26 12:35:33 +01:00
dependabot[bot] 6474c374e2
Bump phpunit/phpunit from 9.6.16 to 9.6.17
Bumps [phpunit/phpunit](https://github.com/sebastianbergmann/phpunit) from 9.6.16 to 9.6.17.
- [Changelog](https://github.com/sebastianbergmann/phpunit/blob/9.6.17/ChangeLog-9.6.md)
- [Commits](https://github.com/sebastianbergmann/phpunit/compare/9.6.16...9.6.17)

---
updated-dependencies:
- dependency-name: phpunit/phpunit
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-02-26 11:13:45 +00:00
PrivateBin Translator Bot b15571ae4a New translations en.json (German) 2024-02-26 10:05:41 +01:00
El RIDO c162f04384
Merge pull request #1256 from LMS235/patch-1
Update de.json
2024-02-22 08:46:08 +01:00
Florian 6999ed3f4b
Update de.json
Text verständlicher gemacht
2024-02-21 11:34:33 +01:00
El RIDO 03e7f6a9a7
Merge pull request #1250 from PrivateBin/crowdin-translation
New Crowdin updates
2024-02-17 20:25:15 +01:00
PrivateBin Translator Bot a1095d0d21 New translations en.json (Arabic) 2024-02-17 17:15:15 +01:00
El RIDO 7576459135
Merge pull request #1249 from PrivateBin/doc-slsa
doc: Fix (direct) link to SLSA verifier
2024-02-17 09:03:14 +01:00
rugk cb117d6797
doc: Fix (direct) link to SLSA verifier
Apparently the headline changed, this is the direct link for GitHub.
2024-02-16 17:19:17 +01:00
El RIDO 244703babb
Merge pull request #1248 from PrivateBin/crowdin-translation
New Crowdin updates
2024-02-15 07:53:06 +01:00
PrivateBin Translator Bot b00085f30f New translations en.json (Romanian) 2024-02-15 07:09:13 +01:00
PrivateBin Translator Bot fc1b1ae0ca New translations en.json (Russian) 2024-02-15 07:09:12 +01:00
PrivateBin Translator Bot 45e335eca6 New translations en.json (German) 2024-02-15 07:09:11 +01:00
PrivateBin Translator Bot f03bccd31e New translations en.json (Bulgarian) 2024-02-15 07:09:10 +01:00
PrivateBin Translator Bot 04da6db079 New translations en.json (Arabic) 2024-02-15 07:09:09 +01:00
PrivateBin Translator Bot 580a034189 New translations en.json (French) 2024-02-15 07:09:08 +01:00
PrivateBin Translator Bot 6c5a500fcd New translations en.json (Corsican) 2024-02-15 00:50:42 +01:00
PrivateBin Translator Bot da4ad06758 New translations en.json (Occitan) 2024-02-14 21:17:17 +01:00
PrivateBin Translator Bot 2f394a4714 New translations en.json (Lojban) 2024-02-14 21:17:16 +01:00
PrivateBin Translator Bot 39949cea34 New translations en.json (Estonian) 2024-02-14 21:17:15 +01:00
PrivateBin Translator Bot a9d287874b New translations en.json (Thai) 2024-02-14 21:17:14 +01:00
PrivateBin Translator Bot 2381e30dc4 New translations en.json (Indonesian) 2024-02-14 21:17:13 +01:00
PrivateBin Translator Bot 0255f72ae0 New translations en.json (Chinese Simplified) 2024-02-14 21:17:12 +01:00
PrivateBin Translator Bot 900200c35f New translations en.json (Ukrainian) 2024-02-14 21:17:11 +01:00
PrivateBin Translator Bot 860b4b183e New translations en.json (Turkish) 2024-02-14 21:17:10 +01:00
PrivateBin Translator Bot e585aeacda New translations en.json (Swedish) 2024-02-14 21:17:09 +01:00
PrivateBin Translator Bot a4820618dd New translations en.json (Slovenian) 2024-02-14 21:17:08 +01:00
PrivateBin Translator Bot d957d344d1 New translations en.json (Slovak) 2024-02-14 21:17:07 +01:00
PrivateBin Translator Bot c9c99f7535 New translations en.json (Portuguese) 2024-02-14 21:17:06 +01:00
PrivateBin Translator Bot 516a4c7d13 New translations en.json (Polish) 2024-02-14 21:17:05 +01:00
PrivateBin Translator Bot 2ccc90798f New translations en.json (Norwegian) 2024-02-14 21:17:04 +01:00
PrivateBin Translator Bot 647ddebb5c New translations en.json (Dutch) 2024-02-14 21:17:03 +01:00
PrivateBin Translator Bot f40f3dd3a5 New translations en.json (Lithuanian) 2024-02-14 21:17:02 +01:00
PrivateBin Translator Bot ce4f3a1b09 New translations en.json (Japanese) 2024-02-14 21:17:01 +01:00
PrivateBin Translator Bot 888b3cb49c New translations en.json (Italian) 2024-02-14 21:17:00 +01:00
PrivateBin Translator Bot 6e0bc8bceb New translations en.json (Hungarian) 2024-02-14 21:16:59 +01:00
PrivateBin Translator Bot 43d396efd9 New translations en.json (Hebrew) 2024-02-14 21:16:58 +01:00
PrivateBin Translator Bot 3b6ebfdf02 New translations en.json (Finnish) 2024-02-14 21:16:57 +01:00
PrivateBin Translator Bot f3df151a8c New translations en.json (Greek) 2024-02-14 21:16:56 +01:00
PrivateBin Translator Bot e4329b623d New translations en.json (Czech) 2024-02-14 21:16:55 +01:00
PrivateBin Translator Bot e18ec99aa9 New translations en.json (Catalan) 2024-02-14 21:16:54 +01:00
PrivateBin Translator Bot 6d2d19c38c New translations en.json (Spanish) 2024-02-14 21:16:53 +01:00
PrivateBin Translator Bot 532f85c6b7 New translations en.json (Romanian) 2024-02-14 19:53:04 +01:00
PrivateBin Translator Bot 0dc7b1f6fc New translations en.json (Corsican) 2024-02-14 19:53:03 +01:00
PrivateBin Translator Bot f0cc0e878a New translations en.json (Occitan) 2024-02-14 19:53:02 +01:00
PrivateBin Translator Bot 2f775c218c New translations en.json (Latin) 2024-02-14 19:53:01 +01:00
PrivateBin Translator Bot 98b3d0e2ae New translations en.json (Lojban) 2024-02-14 19:53:00 +01:00
PrivateBin Translator Bot 7ba642c0ad New translations en.json (Hindi) 2024-02-14 19:52:59 +01:00
PrivateBin Translator Bot 63b63354d7 New translations en.json (Estonian) 2024-02-14 19:52:58 +01:00
PrivateBin Translator Bot 569b47ee62 New translations en.json (Thai) 2024-02-14 19:52:57 +01:00
PrivateBin Translator Bot 050917f035 New translations en.json (Indonesian) 2024-02-14 19:52:56 +01:00
PrivateBin Translator Bot eff7eb5e23 New translations en.json (Chinese Simplified) 2024-02-14 19:52:55 +01:00
PrivateBin Translator Bot 326feb1808 New translations en.json (Ukrainian) 2024-02-14 19:52:54 +01:00
PrivateBin Translator Bot 3ed954fef4 New translations en.json (Turkish) 2024-02-14 19:52:53 +01:00
PrivateBin Translator Bot ebe997bd02 New translations en.json (Swedish) 2024-02-14 19:52:52 +01:00
PrivateBin Translator Bot a90a874d82 New translations en.json (Slovenian) 2024-02-14 19:52:51 +01:00
PrivateBin Translator Bot dd49b8e694 New translations en.json (Slovak) 2024-02-14 19:52:50 +01:00
PrivateBin Translator Bot fec82754bb New translations en.json (Russian) 2024-02-14 19:52:50 +01:00
PrivateBin Translator Bot 24bd804d38 New translations en.json (Portuguese) 2024-02-14 19:52:49 +01:00
PrivateBin Translator Bot d0d77325de New translations en.json (Polish) 2024-02-14 19:52:48 +01:00
PrivateBin Translator Bot a8b4bf84c4 New translations en.json (Norwegian) 2024-02-14 19:52:47 +01:00
PrivateBin Translator Bot a398b1ff59 New translations en.json (Dutch) 2024-02-14 19:52:46 +01:00
PrivateBin Translator Bot 3e2fc24e11 New translations en.json (Lithuanian) 2024-02-14 19:52:45 +01:00
PrivateBin Translator Bot e6acab38d8 New translations en.json (Kurdish) 2024-02-14 19:52:44 +01:00
PrivateBin Translator Bot bcd899b3c4 New translations en.json (Japanese) 2024-02-14 19:52:43 +01:00
PrivateBin Translator Bot 196e5046ac New translations en.json (Italian) 2024-02-14 19:52:42 +01:00
PrivateBin Translator Bot 64a209483a New translations en.json (Hungarian) 2024-02-14 19:52:41 +01:00
PrivateBin Translator Bot a5725d503e New translations en.json (Hebrew) 2024-02-14 19:52:40 +01:00
PrivateBin Translator Bot 14a73ddc61 New translations en.json (Finnish) 2024-02-14 19:52:39 +01:00
PrivateBin Translator Bot 1503fb8aa7 New translations en.json (Greek) 2024-02-14 19:52:38 +01:00
PrivateBin Translator Bot 5291e381c8 New translations en.json (German) 2024-02-14 19:52:37 +01:00
PrivateBin Translator Bot a412a85ad0 New translations en.json (Czech) 2024-02-14 19:52:37 +01:00
PrivateBin Translator Bot 64e533ba8c New translations en.json (Catalan) 2024-02-14 19:52:36 +01:00
PrivateBin Translator Bot 57a03839fa New translations en.json (Bulgarian) 2024-02-14 19:52:35 +01:00
PrivateBin Translator Bot 7d8f57ffe8 New translations en.json (Arabic) 2024-02-14 19:52:34 +01:00
PrivateBin Translator Bot a14151b85c New translations en.json (Spanish) 2024-02-14 19:52:33 +01:00
PrivateBin Translator Bot 76affbc63b New translations en.json (French) 2024-02-14 19:52:32 +01:00
El RIDO 253e078263 fix base translation 2024-02-14 19:49:52 +01:00
PrivateBin Translator Bot 8b66612622 New translations en.json (Corsican) 2024-02-14 17:50:16 +01:00
PrivateBin Translator Bot bfddc388b9 New translations en.json (Russian) 2024-02-14 17:50:15 +01:00
PrivateBin Translator Bot a68d81b10b New translations en.json (Russian) 2024-02-14 16:14:15 +01:00
PrivateBin Translator Bot c37ca3f495 New translations en.json (Corsican) 2024-02-14 01:19:05 +01:00
PrivateBin Translator Bot 4048e2f45d New translations en.json (Occitan) 2024-02-14 01:19:04 +01:00
PrivateBin Translator Bot 024bbc246e New translations en.json (Latin) 2024-02-14 01:19:03 +01:00
PrivateBin Translator Bot 25318facd7 New translations en.json (Lojban) 2024-02-14 01:19:02 +01:00
PrivateBin Translator Bot 1e9c5cb812 New translations en.json (Hindi) 2024-02-14 01:19:01 +01:00
PrivateBin Translator Bot cab26c619b New translations en.json (Estonian) 2024-02-14 01:19:00 +01:00
PrivateBin Translator Bot cabfa18a35 New translations en.json (Thai) 2024-02-14 01:18:59 +01:00
PrivateBin Translator Bot 629faeea8d New translations en.json (Indonesian) 2024-02-14 01:18:58 +01:00
PrivateBin Translator Bot 0a9770ae51 New translations en.json (Chinese Simplified) 2024-02-14 01:18:57 +01:00
PrivateBin Translator Bot 5c76cc9203 New translations en.json (Ukrainian) 2024-02-14 01:18:56 +01:00
PrivateBin Translator Bot 7710a6066c New translations en.json (Turkish) 2024-02-14 01:18:55 +01:00
PrivateBin Translator Bot 94f0808996 New translations en.json (Swedish) 2024-02-14 01:18:55 +01:00
PrivateBin Translator Bot 494623eec7 New translations en.json (Slovenian) 2024-02-14 01:18:54 +01:00
PrivateBin Translator Bot 7174be4dfb New translations en.json (Slovak) 2024-02-14 01:18:53 +01:00
PrivateBin Translator Bot af72f0694d New translations en.json (Russian) 2024-02-14 01:18:52 +01:00
PrivateBin Translator Bot 126d08933a New translations en.json (Portuguese) 2024-02-14 01:18:51 +01:00
PrivateBin Translator Bot 5ec102a75c New translations en.json (Polish) 2024-02-14 01:18:50 +01:00
PrivateBin Translator Bot cd33a4824b New translations en.json (Norwegian) 2024-02-14 01:18:49 +01:00
PrivateBin Translator Bot 966d0f5d64 New translations en.json (Dutch) 2024-02-14 01:18:48 +01:00
PrivateBin Translator Bot 37c57e5815 New translations en.json (Lithuanian) 2024-02-14 01:18:47 +01:00
PrivateBin Translator Bot 5854770286 New translations en.json (Kurdish) 2024-02-14 01:18:46 +01:00
PrivateBin Translator Bot 40df875334 New translations en.json (Japanese) 2024-02-14 01:18:45 +01:00
PrivateBin Translator Bot 120fe77e1e New translations en.json (Italian) 2024-02-14 01:18:45 +01:00
PrivateBin Translator Bot 5bf7c04e04 New translations en.json (Hungarian) 2024-02-14 01:18:44 +01:00
PrivateBin Translator Bot 9f623b4130 New translations en.json (Hebrew) 2024-02-14 01:18:43 +01:00
PrivateBin Translator Bot 41b20da78b New translations en.json (Finnish) 2024-02-14 01:18:42 +01:00
PrivateBin Translator Bot 3547e67cc6 New translations en.json (Greek) 2024-02-14 01:18:41 +01:00
PrivateBin Translator Bot 4eb55be55e New translations en.json (Czech) 2024-02-14 01:18:39 +01:00
PrivateBin Translator Bot c3d143f9ba New translations en.json (Catalan) 2024-02-14 01:18:39 +01:00
PrivateBin Translator Bot 7467c7998c New translations en.json (Bulgarian) 2024-02-14 01:18:38 +01:00
PrivateBin Translator Bot 979dc58575 New translations en.json (Arabic) 2024-02-14 01:18:37 +01:00
PrivateBin Translator Bot 41a3748656 New translations en.json (Spanish) 2024-02-14 01:18:36 +01:00
El RIDO c5704b445a
Merge pull request #1246 from PrivateBin/crowdin-translation
New Crowdin updates
2024-02-14 00:02:04 +01:00
El RIDO c172cde994
Merge pull request #1245 from PrivateBin/send-create-button
Rename "Send" button to "Create"
2024-02-14 00:00:29 +01:00
El RIDO 7d070fe3a4
Merge pull request #1244 from PrivateBin/composer
composer fixes for #1222
2024-02-13 23:58:53 +01:00
PrivateBin Translator Bot 28a05abfc5 New translations en.json (Arabic) 2024-02-13 13:56:04 +01:00
PrivateBin Translator Bot 456e62f29b New translations en.json (Romanian) 2024-02-12 23:51:38 +01:00
El RIDO 63b2526ee7
"Send" button now labeled "Create", fixes #946 2024-02-12 21:50:11 +01:00
El RIDO dd8aa4f8fb
Merge branch 'master' into send-create-button 2024-02-12 21:42:15 +01:00
El RIDO 6dddf808c6
composer fixes #1222
- clarify installation
- ensure composer files get released in exported archive
- fix lock checksum
2024-02-12 21:18:58 +01:00
El RIDO eb59f3a4f3
post-release cleanup 2024-02-11 15:36:59 +01:00
El RIDO aad975a721
incrementing version 2024-02-11 15:31:11 +01:00
El RIDO 5c29619fee
post-release cleanup
- prep changelog for future changes
- composer changes from re-running composer on the repo, testing deps
- change to phpunit coverage make target, required with newer releases
2024-02-11 15:10:01 +01:00
J. Fernando LAGRANGE f797311650 Change "Send" button label to "Save"
Includes french translation.
2022-06-28 10:34:40 +02:00
82 changed files with 240 additions and 204 deletions

2
.gitattributes vendored
View File

@ -26,8 +26,6 @@ js/test/ export-ignore
.vscode export-ignore
codacy-analysis.yml export-ignore
crowdin.yml export-ignore
composer.json export-ignore
composer.lock export-ignore
BADGES.md export-ignore
CODE_OF_CONDUCT.md export-ignore
Makefile export-ignore

View File

@ -1,14 +1,23 @@
# PrivateBin version history
## 1.7.2 (not yet released)
* ADDED: Allow use of `shortenviayourls` in query parameters (#1267)
* CHANGED: "Send" button now labeled "Create" (#946)
* FIXED: Add cache control headers also to API calls (#1263)
* FIXED: Shortened paste URL does not appear in email (#606)
## 1.7.1 (2024-02-11)
* FIXED: zlib 1.3.1 wasm file reference
## 1.7.0 (2024-02-11)
* ADDED: Translations for Romanian
* ADDED: Detect and report on damaged pastes (#1218)
* CHANGED: Ask for confirmation, before loading burn after reading pastes #1237
* CHANGED: Ask for confirmation, before loading burn after reading pastes (#1237)
* CHANGED: Focus on password input in modal dialog
* CHANGED: Upgrading libraries to: DOMpurify 3.0.8 & zlib 1.3.1
* FIXED: Support more types of valid URLs for shorteners, incl. IDN ones (#1224)
* FIXED: Email timezone buttons overlapping in some languages #1039
* FIXED: Changing language mangles URL #1191
* FIXED: Email timezone buttons overlapping in some languages (#1039)
* FIXED: Changing language mangles URL (#1191)
* FIXED: Needless reload when visiting default URL
## 1.6.2 (2023-12-15)
@ -21,7 +30,7 @@
## 1.6.0 (2023-09-11)
* ADDED: Translations for Japanese & Arabic
* ADDED: Configuration option to disable Email button (#1164)
* ADDED: Configuration option to disable email button (#1164)
* CHANGED: Minimum required PHP version is 7.3, due to upgrading PHPunit (#707)
* CHANGED: Removed PHP 5 polyfill for random_bytes()

View File

@ -32,6 +32,7 @@
* Felix J. Ogris - S3 Storage backend, script for data backend migrations, dropped singleton behaviour of data backends
* Mounir Idrassi & J. Mozdzen - secure YOURLS integration
* Felipe Nakandakari - enabled AWS SDK to use default credential provider chain in the S3 Storage backend
* Aaron Sherber - cache control headers for API calls & use of `shortenviayourls` in query parameters
## Translations
* Hexalyse - French

View File

@ -1,7 +1,7 @@
.PHONY: all coverage coverage-js coverage-php doc doc-js doc-php increment sign test test-js test-php help
CURRENT_VERSION = 1.7.0
VERSION ?= 1.7.1
CURRENT_VERSION = 1.7.1
VERSION ?= 1.7.2
VERSION_FILES = index.php bin/ cfg/ *.md doc/Installation.md css/ i18n/ img/ js/package.json js/privatebin.js lib/ Makefile tpl/ tst/
REGEX_CURRENT_VERSION := $(shell echo $(CURRENT_VERSION) | sed "s/\./\\\./g")
REGEX_VERSION := $(shell echo $(VERSION) | sed "s/\./\\\./g")
@ -17,7 +17,7 @@ coverage-js: ## Run JS unit tests and generate code coverage reports.
cd js && nyc mocha
coverage-php: ## Run PHP unit tests and generate code coverage reports.
cd tst && phpunit 2> /dev/null
cd tst && XDEBUG_MODE=coverage phpunit 2> /dev/null
cd tst/log/php-coverage-report && sed -i "s#$(CURDIR)/##g" *.html */*.html
doc: doc-js doc-php ## Generate all code documentation.

View File

@ -1,6 +1,6 @@
# [![PrivateBin](https://cdn.rawgit.com/PrivateBin/assets/master/images/preview/logoSmall.png)](https://privatebin.info/)
*Current version: 1.7.0*
*Current version: 1.7.1*
**PrivateBin** is a minimalist, open source online
[pastebin](https://en.wikipedia.org/wiki/Pastebin)

View File

@ -4,8 +4,8 @@
| Version | Supported |
| ------- | ------------------ |
| 1.7.0 | :heavy_check_mark: |
| < 1.7.0 | :x: |
| 1.7.1 | :heavy_check_mark: |
| < 1.7.1 | :x: |
## Reporting a Vulnerability

View File

@ -9,7 +9,7 @@
* @link https://github.com/PrivateBin/PrivateBin
* @copyright 2012 Sébastien SAUVAGE (sebsauvage.net)
* @license https://www.opensource.org/licenses/zlib-license.php The zlib/libpng License
* @version 1.7.0
* @version 1.7.1
*/
namespace PrivateBin;

View File

@ -254,8 +254,8 @@ dir = PATH "data"
; Only use this if you allow short URL creation without credentials.
; - Alternatively, using the parameters in this section ("signature" and
; "apiurl"), "urlshortener" needs to point to the base URL of your PrivateBin
; instance with "shortenviayourls?link=" appended. For example:
; urlshortener = "${basepath}shortenviayourls?link="
; instance with "?shortenviayourls&link=" appended. For example:
; urlshortener = "${basepath}?shortenviayourls&link="
; This URL will in turn call YOURLS on the server side, using the URL from
; "apiurl" and the "access signature" from the "signature" parameters below.

View File

@ -24,10 +24,10 @@
"docs" : "https://privatebin.info/codedoc/"
},
"require" : {
"php" : "^7.3 || ^8.0",
"yzalis/identicon" : "2.0.0",
"mlocati/ip-lib" : "1.18.0",
"jdenticon/jdenticon": "1.0.2"
"php": "^7.3 || ^8.0",
"jdenticon/jdenticon": "1.0.2",
"mlocati/ip-lib": "1.18.0",
"yzalis/identicon": "2.0.0"
},
"suggest" : {
"google/cloud-storage" : "1.32.0",

14
composer.lock generated
View File

@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
"content-hash": "96f9b3968855bf9f45813d12568f1cac",
"content-hash": "b76c0c25f93dc79c4525cb3c86e5af99",
"packages": [
{
"name": "jdenticon/jdenticon",
@ -802,16 +802,16 @@
},
{
"name": "phpunit/phpunit",
"version": "9.6.16",
"version": "9.6.17",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/phpunit.git",
"reference": "3767b2c56ce02d01e3491046f33466a1ae60a37f"
"reference": "1a156980d78a6666721b7e8e8502fe210b587fcd"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/3767b2c56ce02d01e3491046f33466a1ae60a37f",
"reference": "3767b2c56ce02d01e3491046f33466a1ae60a37f",
"url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/1a156980d78a6666721b7e8e8502fe210b587fcd",
"reference": "1a156980d78a6666721b7e8e8502fe210b587fcd",
"shasum": ""
},
"require": {
@ -885,7 +885,7 @@
"support": {
"issues": "https://github.com/sebastianbergmann/phpunit/issues",
"security": "https://github.com/sebastianbergmann/phpunit/security/policy",
"source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.16"
"source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.17"
},
"funding": [
{
@ -901,7 +901,7 @@
"type": "tidelift"
}
],
"time": "2024-01-19T07:03:14+00:00"
"time": "2024-02-23T13:14:51+00:00"
},
{
"name": "sebastian/cli-parser",

View File

@ -6,7 +6,7 @@
* @link https://github.com/PrivateBin/PrivateBin
* @copyright 2012 Sébastien SAUVAGE (sebsauvage.net)
* @license https://www.opensource.org/licenses/zlib-license.php The zlib/libpng License
* @version 1.7.0
* @version 1.7.1
*/
body {

View File

@ -6,7 +6,7 @@
* @link https://github.com/PrivateBin/PrivateBin
* @copyright 2012 Sébastien SAUVAGE (sebsauvage.net)
* @license https://www.opensource.org/licenses/zlib-license.php The zlib/libpng License
* @version 1.7.0
* @version 1.7.1
*/
/* When there is no script at all other */

View File

@ -6,7 +6,7 @@
* @link https://github.com/PrivateBin/PrivateBin
* @copyright 2012 Sébastien SAUVAGE (sebsauvage.net)
* @license https://www.opensource.org/licenses/zlib-license.php The zlib/libpng License
* @version 1.7.0
* @version 1.7.1
*/
/* CSS Reset from YUI 3.4.1 (build 4118) - Copyright 2011 Yahoo! Inc. All rights reserved.

View File

@ -201,7 +201,7 @@ 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.7.0');
INSERT INTO prefix_config VALUES('VERSION', '1.7.1');
```
In **PostgreSQL**, the `data`, `attachment`, `nickname` and `vizhash` columns
@ -228,7 +228,12 @@ If you want to deploy PrivateBin in a serverless manner in the Google Cloud, you
can choose the `GoogleCloudStorage` as backend.
To use this backend, you first have to install the SDK from the installation
directory of PrivateBin: `composer require google/cloud-storage`
directory of PrivateBin:
```console
composer require --no-update google/cloud-storage
composer update --no-dev --optimize-autoloader
```
You have to create a GCS bucket and specify the name as the model option `bucket`.
Alternatively, you can set the name through the environment variable `PRIVATEBIN_GCS_BUCKET`.
@ -246,7 +251,12 @@ the AWS SDK for PHP, but can also talk to a Rados gateway as part of a Ceph
cluster.
To use this backend, you first have to install the SDK from the installation
directory of PrivateBin: `composer require aws/aws-sdk-php`
directory of PrivateBin:
```console
composer require --no-update aws/aws-sdk-php
composer update --no-dev --optimize-autoloader
```
You have to create an S3 bucket on the Ceph cluster before using the S3 backend.

View File

@ -37,7 +37,7 @@ Primary key fingerprint: 28CA 7C96 4938 EA5C 1481 D42A E11B 7950 E9E1 83DB
For a more step-by-step guide in detail [see this FAQ](https://github.com/PrivateBin/PrivateBin/wiki/FAQ#how-can-i-securely-clonedownload-your-project).
SLSA verification can be performed using the [SLSA verifier](https://github.com/slsa-framework/slsa-verifier#verification-of-slsa-provenance).
SLSA verification can be performed using the [SLSA verifier](https://github.com/slsa-framework/slsa-verifier?tab=readme-ov-file#verification-for-github-builders).
## Release process

View File

@ -26,7 +26,7 @@
"JavaScript is required for %s to work. Sorry for the inconvenience.": "جافاسكرِبت (JavaScript) مطلوب %s للعمل. نأسف للإزعاج.",
"%s requires a modern browser to work.": "%s يتطلب متصفحًا حديثًا للعمل.",
"New": "جديد",
"Send": "إرسال",
"Create": "أنشِئ",
"Clone": "استنساخ",
"Raw text": "نص خام",
"Expires": "تنتهي",
@ -215,6 +215,6 @@
"Trying to shorten a URL that isn't pointing at our instance.": "محاولة تقصير عنوان URL لا يشير إلى خادمنا.",
"Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".": "خطأ في الاتصال بـ YOURLS. ربما تكون هناك مشكلة في التضبيط، مثل \"apiurl\" أو \"التوقيع\" الخاطئ أو المفقود.",
"Error parsing YOURLS response.": "خطأ في تحليل استجابة YOURLS.",
"Burn after reading pastes can only be displayed once upon loading it. Do you want to open it now?": "Burn after reading pastes can only be displayed once upon loading it. Do you want to open it now?",
"Yes, load it": "Yes, load it"
"Burn after reading pastes can only be displayed once upon loading it. Do you want to open it now?": "لا يمكن عرض اللصق احرقه بعد قراءته إلا مرة واحدة عند تحميله. هل تريد فتحه الآن؟",
"Yes, load it": "نعم، حمله"
}

View File

@ -26,7 +26,7 @@
"JavaScript is required for %s to work. Sorry for the inconvenience.": "Услугата %s се нуждае от JavaScript, за да работи. Съжаляваме за неудобството.",
"%s requires a modern browser to work.": "%s се нуждае от съвременен браузър за да работи.",
"New": "Създаване",
"Send": "Изпрати",
"Create": "Създай",
"Clone": "Дублирай",
"Raw text": "Чист текст",
"Expires": "Изтича",
@ -199,10 +199,10 @@
"Could not decrypt data. Did you enter a wrong password? Retry with the button at the top.": "Could not decrypt data. Did you enter a wrong password? Retry with the button at the top.",
"Retry": "Нов опит",
"Showing raw text…": "Showing raw text…",
"Notice:": "Notice:",
"Notice:": "Известие:",
"This link will expire after %s.": "This link will expire after %s.",
"This link can only be accessed once, do not use back or refresh button in your browser.": "This link can only be accessed once, do not use back or refresh button in your browser.",
"Link:": "Link:",
"Link:": "Връзка:",
"Recipient may become aware of your timezone, convert time to UTC?": "Recipient may become aware of your timezone, convert time to UTC?",
"Use Current Timezone": "Use Current Timezone",
"Convert To UTC": "Convert To UTC",

View File

@ -26,7 +26,7 @@
"JavaScript is required for %s to work. Sorry for the inconvenience.": "Cal JavaScript perquè %s funcioni. Em sap greu les molèsties.",
"%s requires a modern browser to work.": "%s requereix un navegador modern per funcionar.",
"New": "Nou",
"Send": "Enviar",
"Create": "Crear",
"Clone": "Clona",
"Raw text": "Text sense processar",
"Expires": "Caducitat",

View File

@ -26,7 +26,7 @@
"JavaScript is required for %s to work. Sorry for the inconvenience.": "JavaScript hè richiestu per fà funziunà %s. Scusate per stu penseru.",
"%s requires a modern browser to work.": "%s richiede un navigatore mudernu per funziunà.",
"New": "Novu",
"Send": "Mandà",
"Create": "Creà",
"Clone": "Duppione",
"Raw text": "Testu grossu",
"Expires": "Scadenza",

View File

@ -26,7 +26,7 @@
"JavaScript is required for %s to work. Sorry for the inconvenience.": "Pro fungování %s je vyžadován JavaScript. Omlouváme se za nepříjemnosti.",
"%s requires a modern browser to work.": "%%s requires a modern browser to work.",
"New": "Nový",
"Send": "Odeslat",
"Create": "Vytvořit",
"Clone": "Klonovat",
"Raw text": "Pouze Text",
"Expires": "Expirace",

View File

@ -26,7 +26,7 @@
"JavaScript is required for %s to work. Sorry for the inconvenience.": "JavaScript ist eine Voraussetzung, um %s zu nutzen. Bitte entschuldige die Unannehmlichkeiten.",
"%s requires a modern browser to work.": "%s setzt einen modernen Browser voraus, um funktionieren zu können.",
"New": "Neu",
"Send": "Senden",
"Create": "Erstellen",
"Clone": "Klonen",
"Raw text": "Reiner Text",
"Expires": "Ablaufzeit",
@ -215,6 +215,6 @@
"Trying to shorten a URL that isn't pointing at our instance.": "Versuch eine URL zu verkürzen, die nicht auf unsere Instanz zeigt.",
"Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".": "Fehler beim Aufruf von YOURLS. Wahrscheinlich ein Konfigurationsproblem, wie eine falsche oder fehlende \"apiurl\" oder \"signature\".",
"Error parsing YOURLS response.": "Fehler beim Verarbeiten der YOURLS-Antwort.",
"Burn after reading pastes can only be displayed once upon loading it. Do you want to open it now?": "Texte des \"Einmal\"-Typs können nach dem Herunterladen nur einmal angezeigt werden. Möchtest Du ihn jetzt öffnen?",
"Burn after reading pastes can only be displayed once upon loading it. Do you want to open it now?": "Texte des \"Einmal\"-Typs können nach dem Öffnen nur einmal angezeigt werden. Möchtest Du ihn jetzt öffnen?",
"Yes, load it": "Ja, jetzt öffnen"
}

View File

@ -26,7 +26,7 @@
"JavaScript is required for %s to work. Sorry for the inconvenience.": "Η JavaScript είναι απαραίτητη για να λειτουργήσει το %s. Συγγνώμη για την ταλαιπωρία.",
"%s requires a modern browser to work.": "%s απαιτεί σύγχρονο φυλλομετρητή (browser) για να λειτουργήσει.",
"New": "Νέο",
"Send": "Αποστολή",
"Create": "Δημιουργία",
"Clone": "Κλωνοποίηση",
"Raw text": "Κείμενο",
"Expires": "Λήγει",

View File

@ -26,7 +26,7 @@
"JavaScript is required for %s to work. Sorry for the inconvenience.": "JavaScript is required for %s to work. Sorry for the inconvenience.",
"%s requires a modern browser to work.": "%s requires a modern browser to work.",
"New": "New",
"Send": "Send",
"Create": "Create",
"Clone": "Clone",
"Raw text": "Raw text",
"Expires": "Expires",

View File

@ -26,7 +26,7 @@
"JavaScript is required for %s to work. Sorry for the inconvenience.": "JavaScript es necesario para que %s funcione. Sentimos los inconvenientes ocasionados.",
"%s requires a modern browser to work.": "%s requiere un navegador moderno para funcionar.",
"New": "Nuevo",
"Send": "Enviar",
"Create": "Crear",
"Clone": "Clonar",
"Raw text": "Texto sin formato",
"Expires": "Caducar en",

View File

@ -26,7 +26,7 @@
"JavaScript is required for %s to work. Sorry for the inconvenience.": "JavaScript on vajalik %s'i töötamiseks. Vabandame ebamugavuste pärast.",
"%s requires a modern browser to work.": "%s vajab töötamiseks kaasaegset brauserit.",
"New": "Uus",
"Send": "Saada",
"Create": "Loo",
"Clone": "Klooni",
"Raw text": "Lähtetekst",
"Expires": "Aegub",

View File

@ -26,7 +26,7 @@
"JavaScript is required for %s to work. Sorry for the inconvenience.": "%s vaatii JavaScriptiä toimiakseen. Anteeksi haitasta.",
"%s requires a modern browser to work.": "%s vaatii modernin selaimen toimiakseen.",
"New": "Uusi",
"Send": "Lähetä",
"Create": "Luo",
"Clone": "Kloonaa",
"Raw text": "Raaka teksti",
"Expires": "Vanhenee",

View File

@ -26,7 +26,7 @@
"JavaScript is required for %s to work. Sorry for the inconvenience.": "JavaScript est requis pour faire fonctionner %s. Désolé pour cet inconvénient.",
"%s requires a modern browser to work.": "%s nécessite un navigateur moderne pour fonctionner.",
"New": "Nouveau",
"Send": "Envoyer",
"Create": "Créer",
"Clone": "Cloner",
"Raw text": "Texte brut",
"Expires": "Expire",
@ -215,6 +215,6 @@
"Trying to shorten a URL that isn't pointing at our instance.": "Essayer de raccourcir une URL qui ne pointe pas vers notre instance.",
"Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".": "Erreur lors de l'appel de YOURLS. Peut-être un problème de configuration, comme \"apiurl\" ou \"signature\" manquant.",
"Error parsing YOURLS response.": "Erreur d'analyse de la réponse YOURLS.",
"Burn after reading pastes can only be displayed once upon loading it. Do you want to open it now?": "Effacer après la lecture des paste ne peut être affiché qu'une seule fois lors du chargement. Voulez-vous l'ouvrir maintenant ?",
"Burn after reading pastes can only be displayed once upon loading it. Do you want to open it now?": "Les pastes de type \"Effacer après la lecture\" ne peuvent être affichés qu'une seule fois. Voulez-vous l'ouvrir maintenant ?",
"Yes, load it": "Oui, chargez-le"
}

View File

@ -26,7 +26,7 @@
"JavaScript is required for %s to work. Sorry for the inconvenience.": "צריך JavaScript כדי לאפשר ל־%s לפעול. סליחה על חוסר הנוחות.",
"%s requires a modern browser to work.": "%s דורש דפדפן מודרני כדי לפעול.",
"New": "חדש",
"Send": "שליחה",
"Create": "צור",
"Clone": "שכפול",
"Raw text": "טקסט גולמי",
"Expires": "Expires",

View File

@ -26,7 +26,7 @@
"JavaScript is required for %s to work. Sorry for the inconvenience.": "JavaScript is required for %s to work. Sorry for the inconvenience.",
"%s requires a modern browser to work.": "%s requires a modern browser to work.",
"New": "New",
"Send": "Send",
"Create": "Create",
"Clone": "Clone",
"Raw text": "Raw text",
"Expires": "Expires",

View File

@ -26,7 +26,7 @@
"JavaScript is required for %s to work. Sorry for the inconvenience.": "JavaScript szükséges a %s működéséhez. Elnézést a fennakadásért.",
"%s requires a modern browser to work.": "A %s működéséhez a jelenleginél újabb böngészőre van szükség.",
"New": "Új",
"Send": "Beküldöm!",
"Create": "Létrehozás",
"Clone": "Másol",
"Raw text": "A nyers szöveg",
"Expires": "Lejárati idő",

View File

@ -26,7 +26,7 @@
"JavaScript is required for %s to work. Sorry for the inconvenience.": "JavaScript diperlukan agar %s bekerja. Maaf untuk ketidaknyamanannya.",
"%s requires a modern browser to work.": "%s memerlukan sebuah browser modern untuk bekerja.",
"New": "Baru",
"Send": "Kirim",
"Create": "Buat baru",
"Clone": "Klon",
"Raw text": "Teks mentah",
"Expires": "Kadaluarsa",

View File

@ -26,7 +26,7 @@
"JavaScript is required for %s to work. Sorry for the inconvenience.": "%s funziona solo con JavaScript attivo. Ci dispiace per l'inconveniente.",
"%s requires a modern browser to work.": "%s richiede un browser moderno e aggiornato per funzionare.",
"New": "Nuovo",
"Send": "Invia",
"Create": "Crea",
"Clone": "Clona",
"Raw text": "Testo Raw",
"Expires": "Scade",

View File

@ -26,7 +26,7 @@
"JavaScript is required for %s to work. Sorry for the inconvenience.": "%s の動作にはJavaScriptが必要です。ご迷惑をおかけして申し訳ありません。",
"%s requires a modern browser to work.": "%s の動作には最近のブラウザが必要です。",
"New": "新規",
"Send": "送信",
"Create": "作成",
"Clone": "複製",
"Raw text": "未加工テキスト",
"Expires": "有効期限",

View File

@ -26,7 +26,7 @@
"JavaScript is required for %s to work. Sorry for the inconvenience.": "JavaScript is required for %s to work. Sorry for the inconvenience.",
"%s requires a modern browser to work.": "%s requires a modern browser to work.",
"New": "cnino",
"Send": "benji",
"Create": "benji",
"Clone": "fukpi",
"Raw text": "vlapoi nalselrucyzu'e",
"Expires": "vimcu",

View File

@ -26,7 +26,7 @@
"JavaScript is required for %s to work. Sorry for the inconvenience.": "JavaScript is required for %s to work. Sorry for the inconvenience.",
"%s requires a modern browser to work.": "%s requires a modern browser to work.",
"New": "New",
"Send": "Send",
"Create": "Create",
"Clone": "Clone",
"Raw text": "Raw text",
"Expires": "Expires",

View File

@ -26,7 +26,7 @@
"JavaScript is required for %s to work. Sorry for the inconvenience.": "JavaScript is required for %s to work. Sorry for the inconvenience.",
"%s requires a modern browser to work.": "%s requires a modern browser to work.",
"New": "New",
"Send": "Send",
"Create": "Create",
"Clone": "Clone",
"Raw text": "Raw text",
"Expires": "Expires",

View File

@ -26,7 +26,7 @@
"JavaScript is required for %s to work. Sorry for the inconvenience.": "%s darbui reikalinga JavaScript. Atsiprašome už nepatogumus.",
"%s requires a modern browser to work.": "%s savo darbui reikalauja šiuolaikinės naršyklės.",
"New": "Naujas",
"Send": "Siųsti",
"Create": "Kurti",
"Clone": "Dubliuoti",
"Raw text": "Neapdorotas tekstas",
"Expires": "Baigs galioti po",

View File

@ -26,7 +26,7 @@
"JavaScript is required for %s to work. Sorry for the inconvenience.": "JavaScript vereist om %s te laten werken. Sorry voor het ongemak.",
"%s requires a modern browser to work.": "%s vereist een moderne browser om te kunnen werken.",
"New": "Nieuw",
"Send": "Verzenden",
"Create": "Maak",
"Clone": "Klonen",
"Raw text": "Onbewerkte tekst",
"Expires": "Verloopt",
@ -180,7 +180,7 @@
"Options": "Opties",
"Shorten URL": "URL verkorten",
"Editor": "Editor",
"Preview": "Preview",
"Preview": "Voorbeeld",
"%s requires the PATH to end in a \"%s\". Please update the PATH in your index.php.": "%s vereist dat PATH eindigt in een '%s'. a.u.b. PATH updaten in je index.php.",
"Decrypt": "Decoderen",
"Enter password": "Voer het wachtwoord in",
@ -215,6 +215,6 @@
"Trying to shorten a URL that isn't pointing at our instance.": "Proberen om een URL te verkorten dat niet naar ons systeem wijst.",
"Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".": "Foutmelding ophalen YOURLS. Waarschijnlijk een configuratiefout, zoals een verkeerde of missende \"apiurl\" of \"signature\".",
"Error parsing YOURLS response.": "Foutmelding bij parsen van YOURLS respons.",
"Burn after reading pastes can only be displayed once upon loading it. Do you want to open it now?": "Burn after reading pastes can only be displayed once upon loading it. Do you want to open it now?",
"Yes, load it": "Yes, load it"
"Burn after reading pastes can only be displayed once upon loading it. Do you want to open it now?": "Brand na het lezen van de plagen kan slechts eenmaal worden weergegeven wanneer deze worden geladen. Wilt u het nu openen?",
"Yes, load it": "Ja, laad het"
}

View File

@ -26,7 +26,7 @@
"JavaScript is required for %s to work. Sorry for the inconvenience.": "Javascript kreves for at %s skal fungere. Beklager.",
"%s requires a modern browser to work.": "%s krever en moderne nettleser for å fungere.",
"New": "Ny",
"Send": "Send",
"Create": "Opprette",
"Clone": "Kopier",
"Raw text": "Ren tekst",
"Expires": "Utgår",
@ -211,10 +211,10 @@
"Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Besøk denne lenken for å se notatet. Hvis lenken deles med andre, vil de også kunne se notatet.",
"URL shortener may expose your decrypt key in URL.": "URL forkorter kan avsløre dekrypteringsnøkkelen.",
"Save paste": "Lagre utklipp",
"Your IP is not authorized to create pastes.": "Your IP is not authorized to create pastes.",
"Trying to shorten a URL that isn't pointing at our instance.": "Trying to shorten a URL that isn't pointing at our instance.",
"Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".": "Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".",
"Error parsing YOURLS response.": "Error parsing YOURLS response.",
"Burn after reading pastes can only be displayed once upon loading it. Do you want to open it now?": "Burn after reading pastes can only be displayed once upon loading it. Do you want to open it now?",
"Yes, load it": "Yes, load it"
"Your IP is not authorized to create pastes.": "Din IP er ikke autorisert til å opprette advarsler.",
"Trying to shorten a URL that isn't pointing at our instance.": "Prøver å forkorte en URL som ikke peker i vår instans.",
"Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".": "Feil ved å ringe YOURLS. Sannsynligvis et konfigurasjonsproblem, som feil eller mangler, \"apiurl\" eller \"signatur\".",
"Error parsing YOURLS response.": "Feil ved analyse av YOURLS svar.",
"Burn after reading pastes can only be displayed once upon loading it. Do you want to open it now?": "Brenne etter lesing av pasta kan kun vises når den lastes inn. Vil du åpne den nå?",
"Yes, load it": "Ja, last den"
}

View File

@ -26,7 +26,7 @@
"JavaScript is required for %s to work. Sorry for the inconvenience.": "JavaScript es requesit per far foncionar %s. O planhèm per linconvenient.",
"%s requires a modern browser to work.": "%s requerís un navigator modèrn per foncionar.",
"New": "Nòu",
"Send": "Mandar",
"Create": "Mandar",
"Clone": "Clonar",
"Raw text": "Tèxte brut",
"Expires": "Expira",

View File

@ -26,7 +26,7 @@
"JavaScript is required for %s to work. Sorry for the inconvenience.": "Do działania %sa jest wymagany JavaScript. Przepraszamy za tę niedogodność.",
"%s requires a modern browser to work.": "%s wymaga do działania nowoczesnej przeglądarki.",
"New": "Nowa",
"Send": "Wyślij",
"Create": "Stwórz",
"Clone": "Sklonuj",
"Raw text": "Czysty tekst",
"Expires": "Wygasa za",

View File

@ -26,7 +26,7 @@
"JavaScript is required for %s to work. Sorry for the inconvenience.": "JavaScript é necessário para que %s funcione. Pedimos desculpas pela inconveniência.",
"%s requires a modern browser to work.": "%s requer um navegador moderno para funcionar.",
"New": "Novo",
"Send": "Enviar",
"Create": "Criar",
"Clone": "Clonar",
"Raw text": "Texto sem formato",
"Expires": "Expirar em",

View File

@ -10,9 +10,9 @@
"Vă rugăm să așteptați %d secundă între fiecare postare",
"Vă rugăm să așteptați %d secunde între fiecare postare",
"Vă rugăm să așteptați %d de secunde între fiecare postare",
"Please wait %d seconds between each post. (3rd plural)",
"Please wait %d seconds between each post. (4th plural)",
"Please wait %d seconds between each post. (5th plural)"
"Vă rugăm să așteptați %d de secunde între fiecare postare",
"Vă rugăm să așteptați %d de secunde între fiecare postare",
"Vă rugăm să așteptați %d de secunde între fiecare postare"
],
"Paste is limited to %s of encrypted data.": "Paste-ul este limitat la %s de date criptate.",
"Invalid data.": "Date invalide.",
@ -26,7 +26,7 @@
"JavaScript is required for %s to work. Sorry for the inconvenience.": "JavaScript este necesar pentru ca %s să funcționeze. Ne cerem scuze pentru neplăceri.",
"%s requires a modern browser to work.": "%s necesită un browser modern pentru a funcționa.",
"New": "Nou",
"Send": "Trimiteți",
"Create": "Creează",
"Clone": "Clonați",
"Raw text": "Text brut",
"Expires": "Expiră",
@ -39,57 +39,57 @@
"%d secundă",
"%d secunde",
"%d de secunde",
"%d seconds (3rd plural)",
"%d seconds (4th plural)",
"%d seconds (5th plural)"
"%d de secunde",
"%d de secunde",
"%d de secunde"
],
"%d minutes": [
"%d minut",
"%d minute",
"%d de minute",
"%d minutes (3rd plural)",
"%d minutes (4th plural)",
"%d minutes (5th plural)"
"%d de secunde",
"%d de secunde",
"%d de secunde"
],
"%d hours": [
"%d oră",
"%d ore",
"%d de ore",
"%d hours (3rd plural)",
"%d hours (4th plural)",
"%d hours (5th plural)"
"%d de ore",
"%d de ore",
"%d de ore"
],
"%d days": [
"%d zi",
"%d zile",
"%d de zile",
"%d days (3rd plural)",
"%d days (4th plural)",
"%d days (5th plural)"
"%d de zile",
"%d de zile",
"%d de zile"
],
"%d weeks": [
"%d week (singular)",
"%d săptămână",
"%d săptămână",
"%d săptămâni",
"%d de săptămâni",
"%d weeks (4th plural)",
"%d weeks (5th plural)"
"%d de săptămâni",
"%d de săptămâni"
],
"%d months": [
"%d lună",
"%d luni",
"%d de luni",
"%d months (3rd plural)",
"%d months (4th plural)",
"%d months (5th plural)"
"%d de luni",
"%d de luni",
"%d de luni"
],
"%d years": [
"%d an",
"%d ani",
"%d de ani",
"%d years (3rd plural)",
"%d years (4th plural)",
"%d years (5th plural)"
"%d de ani",
"%d de ani",
"%d de ani"
],
"Never": "Niciodată",
"Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service.": "Notă: Acesta este un serviciu de test: Datele ar putea fi șterse oricând. Vor muri niște pisicuțe dacă abuzați acest serviciu.",
@ -97,41 +97,41 @@
"Acest document va expira în %d secundă.",
"Acest document va expira în %d secunde.",
"Acest document va expira în %d de secunde.",
"This document will expire in %d seconds. (3rd plural)",
"This document will expire in %d seconds. (4th plural)",
"This document will expire in %d seconds. (5th plural)"
"Acest document va expira în %d de secunde.",
"Acest document va expira în %d de secunde.",
"Acest document va expira în %d de secunde."
],
"This document will expire in %d minutes.": [
"This document will expire in %d minute. (singular)",
"This document will expire in %d minutes. (1st plural)",
"This document will expire in %d minutes. (2nd plural)",
"This document will expire in %d minutes. (3rd plural)",
"This document will expire in %d minutes. (4th plural)",
"This document will expire in %d minutes. (5th plural)"
"Acest document va expira în %d minut.",
"Acest document va expira în %d minute.",
"Acest document va expira în %d de minute.",
"Acest document va expira în %d de minute.",
"Acest document va expira în %d de minute.",
"Acest document va expira în %d de minute."
],
"This document will expire in %d hours.": [
"Acest document va expira în %d oră.",
"Acest document va expira în %d ore.",
"Acest document va expira în %d de ore.",
"This document will expire in %d hours. (3rd plural)",
"This document will expire in %d hours. (4th plural)",
"This document will expire in %d hours. (5th plural)"
"Acest document va expira în %d de ore.",
"Acest document va expira în %d de ore.",
"Acest document va expira în %d de ore."
],
"This document will expire in %d days.": [
"Acest document va expira în %d zi.",
"Acest document va expira în %d zile.",
"Acest document va expira în %d de zile.",
"This document will expire in %d days. (3rd plural)",
"This document will expire in %d days. (4th plural)",
"This document will expire in %d days. (5th plural)"
"Acest document va expira în %d de zile.",
"Acest document va expira în %d de zile.",
"Acest document va expira în %d de zile."
],
"This document will expire in %d months.": [
"Acest document va expira în %d lună.",
"Acest document va expira în %d luni.",
"Acest document va expira în %d de luni.",
"This document will expire in %d months. (3rd plural)",
"This document will expire in %d months. (4th plural)",
"This document will expire in %d months. (5th plural)"
"Acest document va expira în %d de luni.",
"Acest document va expira în %d de luni.",
"Acest document va expira în %d de luni."
],
"Please enter the password for this paste:": "Va rugăm să introduceți parola pentru acest paste:",
"Could not decrypt data (Wrong key?)": "Nu s-au putut decripta datele (Cheie gresită?)",
@ -215,6 +215,6 @@
"Trying to shorten a URL that isn't pointing at our instance.": "Încercarea de a scurta un URL care nu direcționează spre instanța noastră.",
"Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".": "Eroare la apelarea YOURLS. Probabil o problemă de configurare, cum ar fi \"apiurl\" sau \"signature\" greșite sau lipsă.",
"Error parsing YOURLS response.": "Eroare la analizarea răspunsului YOURLS.",
"Burn after reading pastes can only be displayed once upon loading it. Do you want to open it now?": "Burn after reading pastes can only be displayed once upon loading it. Do you want to open it now?",
"Yes, load it": "Yes, load it"
"Burn after reading pastes can only be displayed once upon loading it. Do you want to open it now?": "Paste-urile care se șterg după citire pot fi afișate numai o dată după încărcare. Doriți să o deschideți acum?",
"Yes, load it": "Da, deschide-o"
}

View File

@ -26,7 +26,7 @@
"JavaScript is required for %s to work. Sorry for the inconvenience.": "Для работы %s требуется включенный JavaScript. Приносим извинения за неудобства.",
"%s requires a modern browser to work.": "Для работы %s требуется более современный браузер.",
"New": "Новая запись",
"Send": "Отправить",
"Create": "Создать",
"Clone": "Дублировать",
"Raw text": "Исходный текст",
"Expires": "Удалить через",
@ -212,9 +212,9 @@
"URL shortener may expose your decrypt key in URL.": "Сервис сокращения ссылок может получить ваш ключ расшифровки из ссылки.",
"Save paste": "Сохранить запись",
"Your IP is not authorized to create pastes.": "Вашему IP адресу не разрешено создавать записи.",
"Trying to shorten a URL that isn't pointing at our instance.": "Trying to shorten a URL that isn't pointing at our instance.",
"Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".": "Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".",
"Error parsing YOURLS response.": "Error parsing YOURLS response.",
"Burn after reading pastes can only be displayed once upon loading it. Do you want to open it now?": "Burn after reading pastes can only be displayed once upon loading it. Do you want to open it now?",
"Yes, load it": "Yes, load it"
"Trying to shorten a URL that isn't pointing at our instance.": "Попытка сократить URL, который указывает не на наш сервер.",
"Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".": "Ошибка обращения к YOURLS. Возможно в конфигурации допущена ошибка, например неверный или отсутствующий параметр \"apiurl\" или \"signature\".",
"Error parsing YOURLS response.": "Ошибка разбора ответа от YOURLS.",
"Burn after reading pastes can only be displayed once upon loading it. Do you want to open it now?": "Записи, удаляемые после прочтения, могут быть отображены после загрузки только один раз. Вы хотите открыть её сейчас?",
"Yes, load it": "Да, загрузить"
}

View File

@ -26,7 +26,7 @@
"JavaScript is required for %s to work. Sorry for the inconvenience.": "Na fungovanie %s je potrebný JavaScript. Ospravedlňujeme sa za nepríjemnosti.",
"%s requires a modern browser to work.": "%s vyžaduje na fungovanie moderný prehliadač.",
"New": "Nový",
"Send": "Odoslať",
"Create": "Vytvoriť",
"Clone": "Klonovať",
"Raw text": "Surový text",
"Expires": "Expirácia",

View File

@ -26,7 +26,7 @@
"JavaScript is required for %s to work. Sorry for the inconvenience.": "Da %s deluje, moraš vklopiti JavaScript. Oprosti za povročene nevšečnosti.",
"%s requires a modern browser to work.": "%s za svoje delovanje potrebuje moderen brskalnik.",
"New": "Nov prilepek",
"Send": "Pošlji",
"Create": "Ustvari",
"Clone": "Kloniraj",
"Raw text": "Surov tekst",
"Expires": "Poteče",

View File

@ -26,7 +26,7 @@
"JavaScript is required for %s to work. Sorry for the inconvenience.": "JavaScript is required for %s to work. Sorry for the inconvenience.",
"%s requires a modern browser to work.": "%s requires a modern browser to work.",
"New": "New",
"Send": "Send",
"Create": "Skapa",
"Clone": "Clone",
"Raw text": "Raw text",
"Expires": "Expires",

View File

@ -26,7 +26,7 @@
"JavaScript is required for %s to work. Sorry for the inconvenience.": "จำเป็นต้องใช้ JavaScript เพื่อให้ %s สามารถทำงานได้ ขออภัยในความไม่สะดวก",
"%s requires a modern browser to work.": "%s ต้องใช้เบราว์เซอร์สมัยใหม่ถึงจะสามารถใช้งานได้",
"New": "ใหม่",
"Send": "ส่ง",
"Create": "สร้าง",
"Clone": "โคลน",
"Raw text": "ข้อความล้วน",
"Expires": "หมดอายุ",

View File

@ -26,7 +26,7 @@
"JavaScript is required for %s to work. Sorry for the inconvenience.": "JavaScript %s 'in çalışması için gereklidir. Rahatsızlıktan dolayı özür dileriz.",
"%s requires a modern browser to work.": "%s çalışmak için çağdaş bir tarayıcı gerektirir.",
"New": "Yeni",
"Send": "Gönder",
"Create": "Oluştur",
"Clone": "Kopyala",
"Raw text": "Açık yazı",
"Expires": "Süre Sonu",

View File

@ -26,7 +26,7 @@
"JavaScript is required for %s to work. Sorry for the inconvenience.": "Для роботи %s потрібен увімкнутий JavaScript. Вибачте.",
"%s requires a modern browser to work.": "Для роботи %s потрібен більш сучасний переглядач.",
"New": "Новий допис",
"Send": "Відправити",
"Create": "Створити",
"Clone": "Дублювати",
"Raw text": "Початковий текст",
"Expires": "Вилучити через",
@ -212,9 +212,9 @@
"URL shortener may expose your decrypt key in URL.": "Сервіс скорочення посилань може викрити ваш ключ дешифрування з URL.",
"Save paste": "Зберегти вставку",
"Your IP is not authorized to create pastes.": "Вашому IP не дозволено створювати вставки.",
"Trying to shorten a URL that isn't pointing at our instance.": "Trying to shorten a URL that isn't pointing at our instance.",
"Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".": "Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".",
"Error parsing YOURLS response.": "Error parsing YOURLS response.",
"Burn after reading pastes can only be displayed once upon loading it. Do you want to open it now?": "Burn after reading pastes can only be displayed once upon loading it. Do you want to open it now?",
"Yes, load it": "Yes, load it"
"Trying to shorten a URL that isn't pointing at our instance.": "Спроба скоротити URL, який не вказує на наш екземпляр.",
"Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".": "Помилка виклику YOURLS. Ймовірно проблема з конфігурацією, наприклад \"apiurl\" чи \"signature\".",
"Error parsing YOURLS response.": "Помилка розбору відповіді YOURLS.",
"Burn after reading pastes can only be displayed once upon loading it. Do you want to open it now?": "Спалити після вставки читання можна вивести лише один раз під час завантаження. Відкрити його зараз?",
"Yes, load it": "Так, завантажити"
}

View File

@ -26,7 +26,7 @@
"JavaScript is required for %s to work. Sorry for the inconvenience.": "%s 需要 JavaScript 来进行加解密。 给你带来的不便敬请谅解。",
"%s requires a modern browser to work.": "%s 需要在现代浏览器上工作。",
"New": "新建",
"Send": "送出",
"Create": "创建",
"Clone": "复制",
"Raw text": "纯文本",
"Expires": "有效期",
@ -215,6 +215,6 @@
"Trying to shorten a URL that isn't pointing at our instance.": "尝试缩短一个不指向我们实例的URL。",
"Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".": "调用 YOURLS 时出错。可能是配置问题例如“apiurl”或“signature”错误或缺失。",
"Error parsing YOURLS response.": "解析 YOURLS 响应时出错。",
"Burn after reading pastes can only be displayed once upon loading it. Do you want to open it now?": "Burn after reading pastes can only be displayed once upon loading it. Do you want to open it now?",
"Yes, load it": "Yes, load it"
"Burn after reading pastes can only be displayed once upon loading it. Do you want to open it now?": "读取粘贴后只能在加载时显示一次。您想现在打开吗?",
"Yes, load it": "是的,加载它"
}

View File

@ -7,7 +7,7 @@
* @link https://github.com/PrivateBin/PrivateBin
* @copyright 2012 Sébastien SAUVAGE (sebsauvage.net)
* @license https://www.opensource.org/licenses/zlib-license.php The zlib/libpng License
* @version 1.7.0
* @version 1.7.1
*/
// change this, if your php files and data is outside of your webservers document root

View File

@ -1,6 +1,6 @@
{
"name": "privatebin",
"version": "1.7.0",
"version": "1.7.1",
"description": "PrivateBin is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted in the browser using 256 bit AES in Galois Counter mode (GCM).",
"main": "privatebin.js",
"directories": {

View File

@ -6,7 +6,7 @@
* @see {@link https://github.com/PrivateBin/PrivateBin}
* @copyright 2012 Sébastien SAUVAGE ({@link http://sebsauvage.net})
* @license {@link https://www.opensource.org/licenses/zlib-license.php The zlib/libpng License}
* @version 1.7.0
* @version 1.7.1
* @name PrivateBin
* @namespace
*/
@ -3965,7 +3965,7 @@ jQuery.PrivateBin = (function($, RawDeflate) {
}
emailBody += I18n._('Link:');
emailBody += EOL;
emailBody += `${window.location.href}`;
emailBody += $('#pasteurl').attr('href'); // might have been shortened
return emailBody;
}

View File

@ -77,7 +77,7 @@ describe('TopNav', function () {
'<li id="attach" class="hidden">Attach a file</li><li>' +
'<a id="formatter" href="#" class="hidden">Format</a>' +
'</li><li><button id="sendbutton" type="button" ' +
'class="hidden">Send</button></li></ul></div></nav>'
'class="hidden">Create</button></li></ul></div></nav>'
);
$.PrivateBin.TopNav.init();
results.push(

View File

@ -26,9 +26,9 @@
let buff;
if (typeof fs === 'object') {
buff = fs.readFileSync('zlib-1.3.wasm');
buff = fs.readFileSync('zlib-1.3.1.wasm');
} else {
const resp = await fetch('js/zlib-1.3.wasm');
const resp = await fetch('js/zlib-1.3.1.wasm');
buff = await resp.arrayBuffer();
}
const module = await WebAssembly.compile(buff);

View File

@ -7,7 +7,7 @@
* @link https://github.com/PrivateBin/PrivateBin
* @copyright 2012 Sébastien SAUVAGE (sebsauvage.net)
* @license https://www.opensource.org/licenses/zlib-license.php The zlib/libpng License
* @version 1.7.0
* @version 1.7.1
*/
namespace PrivateBin;

View File

@ -7,7 +7,7 @@
* @link https://github.com/PrivateBin/PrivateBin
* @copyright 2012 Sébastien SAUVAGE (sebsauvage.net)
* @license https://www.opensource.org/licenses/zlib-license.php The zlib/libpng License
* @version 1.7.0
* @version 1.7.1
*/
namespace PrivateBin;
@ -28,7 +28,7 @@ class Controller
*
* @const string
*/
const VERSION = '1.7.0';
const VERSION = '1.7.1';
/**
* minimal required PHP version
@ -143,6 +143,8 @@ class Controller
break;
}
$this->_setCacheHeaders();
// output JSON or HTML
if ($this->_request->isJsonApiCall()) {
header('Content-type: ' . Request::MIME_JSON);
@ -178,6 +180,22 @@ class Controller
}
}
/**
* Turn off browser caching
*
* @access private
*/
private function _setCacheHeaders()
{
// set headers to disable caching
$time = gmdate('D, d M Y H:i:s \G\M\T');
header('Cache-Control: no-store, no-cache, no-transform, must-revalidate');
header('Pragma: no-cache');
header('Expires: ' . $time);
header('Last-Modified: ' . $time);
header('Vary: Accept');
}
/**
* Store new paste or comment
*
@ -343,13 +361,6 @@ class Controller
*/
private function _view()
{
// set headers to disable caching
$time = gmdate('D, d M Y H:i:s \G\M\T');
header('Cache-Control: no-store, no-cache, no-transform, must-revalidate');
header('Pragma: no-cache');
header('Expires: ' . $time);
header('Last-Modified: ' . $time);
header('Vary: Accept');
header('Content-Security-Policy: ' . $this->_conf->getKey('cspheader'));
header('Cross-Origin-Resource-Policy: same-origin');
header('Cross-Origin-Embedder-Policy: require-corp');

View File

@ -7,7 +7,7 @@
* @link https://github.com/PrivateBin/PrivateBin
* @copyright 2012 Sébastien SAUVAGE (sebsauvage.net)
* @license https://www.opensource.org/licenses/zlib-license.php The zlib/libpng License
* @version 1.7.0
* @version 1.7.1
*/
namespace PrivateBin\Data;

View File

@ -7,7 +7,7 @@
* @link https://github.com/PrivateBin/PrivateBin
* @copyright 2012 Sébastien SAUVAGE (sebsauvage.net)
* @license https://www.opensource.org/licenses/zlib-license.php The zlib/libpng License
* @version 1.7.0
* @version 1.7.1
*/
namespace PrivateBin\Data;
@ -55,7 +55,6 @@ class Database extends AbstractData
* @access public
* @param array $options
* @throws Exception
* @return
*/
public function __construct(array $options)
{

View File

@ -7,7 +7,7 @@
* @link https://github.com/PrivateBin/PrivateBin
* @copyright 2012 Sébastien SAUVAGE (sebsauvage.net)
* @license https://www.opensource.org/licenses/zlib-license.php The zlib/libpng License
* @version 1.7.0
* @version 1.7.1
*/
namespace PrivateBin\Data;
@ -66,7 +66,6 @@ class Filesystem extends AbstractData
*
* @access public
* @param array $options
* @return
*/
public function __construct(array $options)
{

View File

@ -47,7 +47,6 @@ class GoogleCloudStorage extends AbstractData
*
* @access public
* @param array $options
* @return
*/
public function __construct(array $options)
{

View File

@ -4,7 +4,7 @@
*
* an S3 compatible data backend for PrivateBin with CEPH/RadosGW in mind
* see https://docs.ceph.com/en/latest/radosgw/s3/php/
* based on lib/Data/GoogleCloudStorage.php from PrivateBin version 1.7.0
* based on lib/Data/GoogleCloudStorage.php from PrivateBin version 1.7.1
*
* @link https://github.com/PrivateBin/PrivateBin
* @copyright 2022 Felix J. Ogris (https://ogris.de/)
@ -78,7 +78,6 @@ class S3Storage extends AbstractData
*
* @access public
* @param array $options
* @return
*/
public function __construct(array $options)
{

View File

@ -7,7 +7,7 @@
* @link https://github.com/PrivateBin/PrivateBin
* @copyright 2012 Sébastien SAUVAGE (sebsauvage.net)
* @license https://www.opensource.org/licenses/zlib-license.php The zlib/libpng License
* @version 1.7.0
* @version 1.7.1
*/
namespace PrivateBin;

View File

@ -7,7 +7,7 @@
* @link https://github.com/PrivateBin/PrivateBin
* @copyright 2012 Sébastien SAUVAGE (sebsauvage.net)
* @license https://www.opensource.org/licenses/zlib-license.php The zlib/libpng License
* @version 1.7.0
* @version 1.7.1
*/
namespace PrivateBin;

View File

@ -7,7 +7,7 @@
* @link https://github.com/PrivateBin/PrivateBin
* @copyright 2012 Sébastien SAUVAGE (sebsauvage.net)
* @license https://www.opensource.org/licenses/zlib-license.php The zlib/libpng License
* @version 1.7.0
* @version 1.7.1
*/
namespace PrivateBin;
@ -81,11 +81,11 @@ class I18n
*
* @access public
* @static
* @param string $messageId
* @param string|array $messageId
* @param mixed $args one or multiple parameters injected into placeholders
* @return string
*/
public static function _($messageId)
public static function _($messageId, ...$args)
{
return forward_static_call_array('PrivateBin\I18n::translate', func_get_args());
}
@ -95,16 +95,16 @@ class I18n
*
* @access public
* @static
* @param string $messageId
* @param string|array $messageId
* @param mixed $args one or multiple parameters injected into placeholders
* @return string
*/
public static function translate($messageId)
public static function translate($messageId, ...$args)
{
if (empty($messageId)) {
return $messageId;
}
if (count(self::$_translations) === 0) {
if (empty(self::$_translations)) {
self::loadTranslations();
}
$messages = $messageId;
@ -114,7 +114,7 @@ class I18n
if (!array_key_exists($messageId, self::$_translations)) {
self::$_translations[$messageId] = $messages;
}
$args = func_get_args();
array_unshift($args, $messageId);
if (is_array(self::$_translations[$messageId])) {
$number = (int) $args[1];
$key = self::_getPluralForm($number);
@ -130,11 +130,9 @@ class I18n
}
// encode any non-integer arguments and the message ID, if it doesn't contain a link
$argsCount = count($args);
if ($argsCount > 1) {
for ($i = 0; $i < $argsCount; ++$i) {
if (($i > 0 && !is_int($args[$i])) || strpos($args[0], '<a') === false) {
$args[$i] = self::encode($args[$i]);
}
for ($i = 0; $i < $argsCount; ++$i) {
if ($i > 0 ? !is_int($args[$i]) : strpos($args[0], '<a') === false) {
$args[$i] = self::encode($args[$i]);
}
}
return call_user_func_array('sprintf', $args);

View File

@ -7,7 +7,7 @@
* @link https://github.com/PrivateBin/PrivateBin
* @copyright 2012 Sébastien SAUVAGE (sebsauvage.net)
* @license https://www.opensource.org/licenses/zlib-license.php The zlib/libpng License
* @version 1.7.0
* @version 1.7.1
*/
namespace PrivateBin;

View File

@ -7,7 +7,7 @@
* @link https://github.com/PrivateBin/PrivateBin
* @copyright 2012 Sébastien SAUVAGE (sebsauvage.net)
* @license https://www.opensource.org/licenses/zlib-license.php The zlib/libpng License
* @version 1.7.0
* @version 1.7.1
*/
namespace PrivateBin;

View File

@ -7,7 +7,7 @@
* @link https://github.com/PrivateBin/PrivateBin
* @copyright 2012 Sébastien SAUVAGE (sebsauvage.net)
* @license https://www.opensource.org/licenses/zlib-license.php The zlib/libpng License
* @version 1.7.0
* @version 1.7.1
*/
namespace PrivateBin\Model;

View File

@ -7,7 +7,7 @@
* @link https://github.com/PrivateBin/PrivateBin
* @copyright 2012 Sébastien SAUVAGE (sebsauvage.net)
* @license https://www.opensource.org/licenses/zlib-license.php The zlib/libpng License
* @version 1.7.0
* @version 1.7.1
*/
namespace PrivateBin\Model;

View File

@ -7,7 +7,7 @@
* @link https://github.com/PrivateBin/PrivateBin
* @copyright 2012 Sébastien SAUVAGE (sebsauvage.net)
* @license https://www.opensource.org/licenses/zlib-license.php The zlib/libpng License
* @version 1.7.0
* @version 1.7.1
*/
namespace PrivateBin\Model;

View File

@ -7,7 +7,7 @@
* @link https://github.com/PrivateBin/PrivateBin
* @copyright 2012 Sébastien SAUVAGE (sebsauvage.net)
* @license https://www.opensource.org/licenses/zlib-license.php The zlib/libpng License
* @version 1.7.0
* @version 1.7.1
*/
namespace PrivateBin\Persistence;

View File

@ -7,7 +7,7 @@
* @link https://github.com/PrivateBin/PrivateBin
* @copyright 2012 Sébastien SAUVAGE (sebsauvage.net)
* @license https://www.opensource.org/licenses/zlib-license.php The zlib/libpng License
* @version 1.7.0
* @version 1.7.1
*/
namespace PrivateBin\Persistence;

View File

@ -7,7 +7,7 @@
* @link https://github.com/PrivateBin/PrivateBin
* @copyright 2012 Sébastien SAUVAGE (sebsauvage.net)
* @license https://www.opensource.org/licenses/zlib-license.php The zlib/libpng License
* @version 1.7.0
* @version 1.7.1
*/
namespace PrivateBin\Persistence;

View File

@ -8,7 +8,7 @@
* @link https://github.com/PrivateBin/PrivateBin
* @copyright 2012 Sébastien SAUVAGE (sebsauvage.net)
* @license https://www.opensource.org/licenses/zlib-license.php The zlib/libpng License
* @version 1.7.0
* @version 1.7.1
*/
namespace PrivateBin\Persistence;

View File

@ -7,7 +7,7 @@
* @link https://github.com/PrivateBin/PrivateBin
* @copyright 2012 Sébastien SAUVAGE (sebsauvage.net)
* @license https://www.opensource.org/licenses/zlib-license.php The zlib/libpng License
* @version 1.7.0
* @version 1.7.1
*/
namespace PrivateBin;
@ -143,7 +143,7 @@ class Request
} elseif (array_key_exists('jsonld', $this->_params) && !empty($this->_params['jsonld'])) {
$this->_operation = 'jsonld';
} elseif (array_key_exists('link', $this->_params) && !empty($this->_params['link'])) {
if (strpos($this->getRequestUri(), '/shortenviayourls') !== false) {
if (strpos($this->getRequestUri(), '/shortenviayourls') !== false || array_key_exists('shortenviayourls', $this->_params)) {
$this->_operation = 'yourlsproxy';
}
}

View File

@ -7,7 +7,7 @@
* @link https://github.com/PrivateBin/PrivateBin
* @copyright 2012 Sébastien SAUVAGE (sebsauvage.net)
* @license https://www.opensource.org/licenses/zlib-license.php The zlib/libpng License
* @version 1.7.0
* @version 1.7.1
*/
namespace PrivateBin;

View File

@ -8,7 +8,7 @@
* @link https://sebsauvage.net/wiki/doku.php?id=php:vizhash_gd
* @copyright 2012 Sébastien SAUVAGE (sebsauvage.net)
* @license https://www.opensource.org/licenses/zlib-license.php The zlib/libpng License
* @version 0.0.5 beta PrivateBin 1.7.0
* @version 0.0.5 beta PrivateBin 1.7.1
*/
namespace PrivateBin;

View File

@ -7,7 +7,7 @@
* @link https://github.com/PrivateBin/PrivateBin
* @copyright 2012 Sébastien SAUVAGE (sebsauvage.net)
* @license https://www.opensource.org/licenses/zlib-license.php The zlib/libpng License
* @version 1.7.0
* @version 1.7.1
*/
namespace PrivateBin;

View File

@ -55,7 +55,7 @@ if ($ZEROBINCOMPATIBILITY) :
<?php
endif;
?>
<script type="text/javascript" data-cfasync="false" src="js/zlib-1.3.1.js" integrity="sha512-VL3lLnt8EexTr22ze4a4HfVghpgY48c/Lhf4CcQa8bgYaIRRPjV1nP7EA8RiciGoXXQ1IeiU7tjrclPeVEfxOQ==" crossorigin="anonymous"></script>
<script type="text/javascript" data-cfasync="false" src="js/zlib-1.3.1.js" integrity="sha512-Z90oppVx/mn0DG2k9airjFVQuliELlXLeT3SRiO6MLiUSbhGlAq+UFwmYbG4i9mwW87dkG8fgJPapGwnUq7Osg==" crossorigin="anonymous"></script>
<script type="text/javascript" data-cfasync="false" src="js/base-x-4.0.0.js" integrity="sha512-nNPg5IGCwwrveZ8cA/yMGr5HiRS5Ps2H+s0J/mKTPjCPWUgFGGw7M5nqdnPD3VsRwCVysUh3Y8OWjeSKGkEQJQ==" crossorigin="anonymous"></script>
<script type="text/javascript" data-cfasync="false" src="js/rawinflate-0.3.js" integrity="sha512-g8uelGgJW9A/Z1tB6Izxab++oj5kdD7B4qC7DHwZkB6DGMXKyzx7v5mvap2HXueI2IIn08YlRYM56jwWdm2ucQ==" crossorigin="anonymous"></script>
<script type="text/javascript" data-cfasync="false" src="js/bootstrap-3.4.1.js" integrity="sha512-oBTprMeNEKCnqfuqKd6sbvFzmFQtlXS3e0C/RGFV0hD6QzhHV+ODfaQbAlmY6/q0ubbwlAM/nCJjkrgA3waLzg==" crossorigin="anonymous"></script>
@ -73,7 +73,7 @@ endif;
?>
<script type="text/javascript" data-cfasync="false" src="js/purify-3.0.8.js" integrity="sha512-wWBDKh5wYGtJ1Df+PPZIn59jHVBnJ4/Yb2W/pVnzaXab8cmlZnHVx+FEBGu5JX39s3P2Qlt+aNQou0XnjW86hg==" crossorigin="anonymous"></script>
<script type="text/javascript" data-cfasync="false" src="js/legacy.js?<?php echo rawurlencode($VERSION); ?>" integrity="sha512-LYos+qXHIRqFf5ZPNphvtTB0cgzHUizu2wwcOwcwz/VIpRv9lpcBgPYz4uq6jx0INwCAj6Fbnl5HoKiLufS2jg==" crossorigin="anonymous"></script>
<script type="text/javascript" data-cfasync="false" src="js/privatebin.js?<?php echo rawurlencode($VERSION); ?>" integrity="sha512-w5YHEFVx8IcurkgsVsaRFwO+0u9HDNrwAE+BUS3mnFQLjJ6Ti3hzQdguL1exCG3rY85drvHcGSj/FJWmHFxudA==" crossorigin="anonymous"></script>
<script type="text/javascript" data-cfasync="false" src="js/privatebin.js?<?php echo rawurlencode($VERSION); ?>" integrity="sha512-B5PWlo7wh39YRHm8rkP5KUyJkoBgL1/TY7ldx6d041+L20/0QLuCN3V2FUK0BpvOUl1CRb7IHbnS80HFMoGFrg==" crossorigin="anonymous"></script>
<!-- icon -->
<link rel="apple-touch-icon" href="<?php echo I18n::encode($BASEPATH); ?>img/apple-touch-icon.png" sizes="180x180" />
<link rel="icon" type="image/png" href="img/favicon-32x32.png" sizes="32x32" />
@ -209,7 +209,7 @@ endif;
if ($isPage) :
?>
<button id="sendbutton" type="button" class="hidden btn btn-<?php echo $isDark ? 'warning' : 'primary'; ?> navbar-btn">
<span class="glyphicon glyphicon-upload" aria-hidden="true"></span> <?php echo I18n::_('Send'), PHP_EOL;
<span class="glyphicon glyphicon-upload" aria-hidden="true"></span> <?php echo I18n::_('Create'), PHP_EOL;
else :
?>
<button id="newbutton" type="button" class="hidden btn btn-<?php echo $isDark ? 'warning' : 'default'; ?> navbar-btn">
@ -561,7 +561,7 @@ if ($isPage) :
else :
?>
<button id="sendbutton" type="button" class="hidden btn btn-<?php echo $isDark ? 'warning' : 'primary'; ?>">
<span class="glyphicon glyphicon-upload" aria-hidden="true"></span> <?php echo I18n::_('Send'), PHP_EOL;
<span class="glyphicon glyphicon-upload" aria-hidden="true"></span> <?php echo I18n::_('Create'), PHP_EOL;
endif;
?>
</button>

View File

@ -34,7 +34,7 @@ if ($ZEROBINCOMPATIBILITY):
<?php
endif;
?>
<script type="text/javascript" data-cfasync="false" src="js/zlib-1.3.1.js" integrity="sha512-VL3lLnt8EexTr22ze4a4HfVghpgY48c/Lhf4CcQa8bgYaIRRPjV1nP7EA8RiciGoXXQ1IeiU7tjrclPeVEfxOQ==" crossorigin="anonymous"></script>
<script type="text/javascript" data-cfasync="false" src="js/zlib-1.3.1.js" integrity="sha512-Z90oppVx/mn0DG2k9airjFVQuliELlXLeT3SRiO6MLiUSbhGlAq+UFwmYbG4i9mwW87dkG8fgJPapGwnUq7Osg==" crossorigin="anonymous"></script>
<script type="text/javascript" data-cfasync="false" src="js/base-x-4.0.0.js" integrity="sha512-nNPg5IGCwwrveZ8cA/yMGr5HiRS5Ps2H+s0J/mKTPjCPWUgFGGw7M5nqdnPD3VsRwCVysUh3Y8OWjeSKGkEQJQ==" crossorigin="anonymous"></script>
<script type="text/javascript" data-cfasync="false" src="js/rawinflate-0.3.js" integrity="sha512-g8uelGgJW9A/Z1tB6Izxab++oj5kdD7B4qC7DHwZkB6DGMXKyzx7v5mvap2HXueI2IIn08YlRYM56jwWdm2ucQ==" crossorigin="anonymous"></script>
<?php
@ -51,7 +51,7 @@ endif;
?>
<script type="text/javascript" data-cfasync="false" src="js/purify-3.0.8.js" integrity="sha512-wWBDKh5wYGtJ1Df+PPZIn59jHVBnJ4/Yb2W/pVnzaXab8cmlZnHVx+FEBGu5JX39s3P2Qlt+aNQou0XnjW86hg==" crossorigin="anonymous"></script>
<script type="text/javascript" data-cfasync="false" src="js/legacy.js?<?php echo rawurlencode($VERSION); ?>" integrity="sha512-LYos+qXHIRqFf5ZPNphvtTB0cgzHUizu2wwcOwcwz/VIpRv9lpcBgPYz4uq6jx0INwCAj6Fbnl5HoKiLufS2jg==" crossorigin="anonymous"></script>
<script type="text/javascript" data-cfasync="false" src="js/privatebin.js?<?php echo rawurlencode($VERSION); ?>" integrity="sha512-w5YHEFVx8IcurkgsVsaRFwO+0u9HDNrwAE+BUS3mnFQLjJ6Ti3hzQdguL1exCG3rY85drvHcGSj/FJWmHFxudA==" crossorigin="anonymous"></script>
<script type="text/javascript" data-cfasync="false" src="js/privatebin.js?<?php echo rawurlencode($VERSION); ?>" integrity="sha512-B5PWlo7wh39YRHm8rkP5KUyJkoBgL1/TY7ldx6d041+L20/0QLuCN3V2FUK0BpvOUl1CRb7IHbnS80HFMoGFrg==" crossorigin="anonymous"></script>
<!-- icon -->
<link rel="apple-touch-icon" href="img/apple-touch-icon.png?<?php echo rawurlencode($VERSION); ?>" sizes="180x180" />
<link rel="icon" type="image/png" href="img/favicon-32x32.png?<?php echo rawurlencode($VERSION); ?>" sizes="32x32" />
@ -125,7 +125,7 @@ endif;
<div id="toolbar">
<button id="newbutton" class="reloadlink hidden"><img src="img/icon_new.png" width="11" height="15" alt="" /><?php echo I18n::_('New'); ?></button>
<button id="retrybutton" class="reloadlink hidden"><?php echo I18n::_('Retry'), PHP_EOL; ?></button>
<button id="sendbutton" class="hidden"><img src="img/icon_send.png" width="18" height="15" alt="" /><?php echo I18n::_('Send'); ?></button>
<button id="sendbutton" class="hidden"><img src="img/icon_send.png" width="18" height="15" alt="" /><?php echo I18n::_('Create'); ?></button>
<button id="clonebutton" class="hidden"><img src="img/icon_clone.png" width="15" height="17" alt="" /><?php echo I18n::_('Clone'); ?></button>
<button id="rawtextbutton" class="hidden"><img src="img/icon_raw.png" width="15" height="15" alt="" /><?php echo I18n::_('Raw text'); ?></button>
<button id="downloadtextbutton" class="hidden"><?php echo I18n::_('Save paste'), PHP_EOL; ?></button>

View File

@ -285,26 +285,39 @@ class JsonApiTest extends TestCase
/**
* @runInSeparateProcess
* @dataProvider baseUriProvider
*/
public function testShortenViaYourls()
public function testShortenViaYourls($baseUri)
{
$mock_yourls_service = $this->_path . DIRECTORY_SEPARATOR . 'yourls.json';
$options = parse_ini_file(CONF, true);
$options['main']['basepath'] = 'https://example.com/path'; // missing slash gets added by Configuration constructor
$options['main']['urlshortener'] = 'https://example.com/path/shortenviayourls?link=';
$options['main']['urlshortener'] = 'https://example.com' . $baseUri . 'link=';
$options['yourls']['apiurl'] = $mock_yourls_service;
Helper::createIniFile(CONF, $options);
// the real service answer is more complex, but we only look for the shorturl & statusCode
file_put_contents($mock_yourls_service, '{"shorturl":"https:\/\/example.com\/1","statusCode":200}');
$_SERVER['REQUEST_URI'] = '/path/shortenviayourls?link=https%3A%2F%2Fexample.com%2Fpath%2F%3Ffoo%23bar';
$_SERVER['REQUEST_URI'] = $baseUri . 'link=https%3A%2F%2Fexample.com%2Fpath%2F%3Ffoo%23bar';
$_GET['link'] = 'https://example.com/path/?foo#bar';
if (strpos($baseUri, '?shortenviayourls') !== false) {
$_GET['shortenviayourls'] = null;
}
ob_start();
new Controller;
$content = ob_get_contents();
ob_end_clean();
$this->assertStringContainsString('id="pasteurl" href="https://example.com/1"', $content, 'outputs shortened URL correctly');
$this->assertStringContainsString('id="pasteurl" href="https://example.com/1"', $content, "'{$baseUri}' outputs shortened URL correctly");
}
public function baseUriProvider()
{
return array(
array('/path/shortenviayourls?'),
array('/path/index.php/shortenviayourls?'),
array('/path?shortenviayourls&'),
);
}
/**