mirror of
https://github.com/PrivateBin/PrivateBin.git
synced 2025-04-16 22:03:04 -04:00
Merge remote-tracking branch 'upstream/master' into copy_to_clipboard_btn
# Conflicts: # i18n/ar.json # i18n/bg.json # i18n/ca.json # i18n/co.json # i18n/cs.json # i18n/de.json # i18n/el.json # i18n/en.json # i18n/es.json # i18n/et.json # i18n/fi.json # i18n/fr.json # i18n/he.json # i18n/hi.json # i18n/hu.json # i18n/id.json # i18n/it.json # i18n/ja.json # i18n/jbo.json # i18n/ko.json # i18n/ku.json # i18n/la.json # i18n/lt.json # i18n/nl.json # i18n/no.json # i18n/oc.json # i18n/pl.json # i18n/pt.json # i18n/ro.json # i18n/ru.json # i18n/sk.json # i18n/sl.json # i18n/sv.json # i18n/th.json # i18n/tr.json # i18n/uk.json # i18n/zh.json # lib/Configuration.php
This commit is contained in:
commit
a6a7df9a72
@ -1,5 +1,9 @@
|
||||
#!/bin/sh
|
||||
|
||||
export PATH="$PATH:$HOME/.composer/vendor/bin"
|
||||
ln -s ./conf.sample.php cfg/conf.php
|
||||
composer install --no-dev --optimize-autoloader
|
||||
|
||||
sudo chmod a+x "$(pwd)" && sudo rm -rf /var/www/html && sudo ln -s "$(pwd)" /var/www/html
|
||||
|
||||
npm install --global nyc
|
||||
|
2
.github/workflows/test-results.yml
vendored
2
.github/workflows/test-results.yml
vendored
@ -24,7 +24,7 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Download and Extract Artifacts
|
||||
uses: dawidd6/action-download-artifact@bf251b5aa9c2f7eeb574a96ee720e24f801b7c11
|
||||
uses: dawidd6/action-download-artifact@80620a5d27ce0ae443b965134db88467fc607b43
|
||||
with:
|
||||
run_id: ${{ github.event.workflow_run.id }}
|
||||
path: artifacts
|
||||
|
11
CHANGELOG.md
11
CHANGELOG.md
@ -1,10 +1,17 @@
|
||||
# PrivateBin version history
|
||||
|
||||
## 1.7.5 (not yet released)
|
||||
## 1.7.6 (not yet released)
|
||||
* CHANGED: Switched to WASM streaming and replace unsafe-eval with wasm-unsafe-eval CSP declaration (#1464), requires webserver to have `application/wasm` MIME type configured.
|
||||
* CHANGED: Upgrading libraries to: cloud-storage 1.44.0, aws-sdk-php 3.331.0
|
||||
|
||||
## 1.7.5 (2024-11-16)
|
||||
* ADDED: Allow non persistent SQL connections, if configured (#1394)
|
||||
* ADDED: Show a button (that redirects to the `basepath` URL) inside the alert after a paste is deleted
|
||||
* CHANGED: Tweaked page footer of the `bootstrap5` template (#1392)
|
||||
* CHANGED: Simpler PostgreSQL table lookup query (#1361)
|
||||
* CHANGED: SRI hashes are now configurable, no longer hardcoded in templates (#1365)
|
||||
* CHANGED: Upgrading libraries to: DOMpurify 3.1.6
|
||||
* CHANGED: Upgrading libraries to: DOMpurify 3.1.7, ip-lib 1.18.1, cloud-storage 1.43.0, aws-sdk-php 3.325.0
|
||||
* FIXED: Numeric array keys being cast to integer causing failures under strict type checking (#1435)
|
||||
|
||||
## 1.7.4 (2024-07-09)
|
||||
* CHANGED: Saving markdown pastes uses `.md` extension instead of `.txt` (#1293)
|
||||
|
6
Makefile
6
Makefile
@ -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.4
|
||||
VERSION ?= 1.7.5
|
||||
CURRENT_VERSION = 1.7.5
|
||||
VERSION ?= 1.7.6
|
||||
VERSION_FILES = README.md SECURITY.md doc/Installation.md js/package*.json lib/Controller.php Makefile
|
||||
REGEX_CURRENT_VERSION := $(shell echo $(CURRENT_VERSION) | sed "s/\./\\\./g")
|
||||
REGEX_VERSION := $(shell echo $(VERSION) | sed "s/\./\\\./g")
|
||||
@ -33,7 +33,7 @@ increment: ## Increment and commit new version number, set target version using
|
||||
do \
|
||||
sed -i "s/$(REGEX_CURRENT_VERSION)/$(REGEX_VERSION)/g" $$F; \
|
||||
done
|
||||
git add $(VERSION_FILES)
|
||||
git add $(VERSION_FILES) CHANGELOG.md
|
||||
git commit -m "incrementing version"
|
||||
|
||||
sign: ## Sign a release.
|
||||
|
@ -1,6 +1,6 @@
|
||||
# [](https://privatebin.info/)
|
||||
|
||||
*Current version: 1.7.4*
|
||||
*Current version: 1.7.5*
|
||||
|
||||
**PrivateBin** is a minimalist, open source online
|
||||
[pastebin](https://en.wikipedia.org/wiki/Pastebin)
|
||||
|
@ -4,8 +4,8 @@
|
||||
|
||||
| Version | Supported |
|
||||
| ------- | ------------------ |
|
||||
| 1.7.4 | :heavy_check_mark: |
|
||||
| < 1.7.4 | :x: |
|
||||
| 1.7.5 | :heavy_check_mark: |
|
||||
| < 1.7.5 | :x: |
|
||||
|
||||
## Reporting a Vulnerability
|
||||
|
||||
|
@ -200,9 +200,9 @@ Options:
|
||||
-h, --help displays this help message
|
||||
-n dry run, do not copy data
|
||||
-v be verbose
|
||||
<srcconfdir> use storage backend configration from conf.php found in
|
||||
<srcconfdir> use storage backend configuration from conf.php found in
|
||||
this directory as source
|
||||
<dstconfdir> optionally, use storage backend configration from conf.php
|
||||
<dstconfdir> optionally, use storage backend configuration from conf.php
|
||||
found in this directory as destination; defaults to:
|
||||
" . PATH . "cfg" . DIRECTORY_SEPARATOR . "conf.php
|
||||
");
|
||||
|
@ -101,11 +101,9 @@ languageselection = false
|
||||
; they are embedded in pastes. If you wish to allow that, you can adjust the
|
||||
; policy here. See https://github.com/PrivateBin/PrivateBin/wiki/FAQ#why-does-not-it-load-embedded-images
|
||||
; for details.
|
||||
; - The 'unsafe-eval' is used in two cases; to check if the browser supports
|
||||
; async functions and display an error if not and for Chrome to enable
|
||||
; webassembly support (used for zlib compression). You can remove it if Chrome
|
||||
; doesn't need to be supported and old browsers don't need to be warned.
|
||||
; cspheader = "default-src 'none'; base-uri 'self'; form-action 'none'; manifest-src 'self'; connect-src * blob:; script-src 'self' 'unsafe-eval'; style-src 'self'; font-src 'self'; frame-ancestors 'none'; img-src 'self' data: blob:; media-src blob:; object-src blob:; sandbox allow-same-origin allow-scripts allow-forms allow-popups allow-modals allow-downloads"
|
||||
; - The 'wasm-unsafe-eval' is used to enable webassembly support (used for zlib
|
||||
; compression). You can remove it if compression doesn't need to be supported.
|
||||
; cspheader = "default-src 'none'; base-uri 'self'; form-action 'none'; manifest-src 'self'; connect-src * blob:; script-src 'self' 'wasm-unsafe-eval'; style-src 'self'; font-src 'self'; frame-ancestors 'none'; img-src 'self' data: blob:; media-src blob:; object-src blob:; sandbox allow-same-origin allow-scripts allow-forms allow-popups allow-modals allow-downloads"
|
||||
|
||||
; stay compatible with PrivateBin Alpha 0.19, less secure
|
||||
; if enabled will use base64.js version 1.7 instead of 2.1.9 and sha1 instead of
|
||||
@ -259,7 +257,7 @@ dir = PATH "data"
|
||||
;version = "latest"
|
||||
;bucket = "my-bucket"
|
||||
|
||||
[yourls]
|
||||
;[yourls]
|
||||
; When using YOURLS as a "urlshortener" config item:
|
||||
; - By default, "urlshortener" will point to the YOURLS API URL, with or without
|
||||
; credentials, and will be visible in public on the PrivateBin web page.
|
||||
@ -280,4 +278,4 @@ dir = PATH "data"
|
||||
; Subresource integrity (SRI) hashes used in template files. Uncomment and set
|
||||
; these for all js files used. See:
|
||||
; https://github.com/PrivateBin/PrivateBin/wiki/FAQ#user-content-how-to-make-privatebin-work-when-i-have-changed-some-javascript-files
|
||||
;privatebin.js = sha512-[…]
|
||||
;js/privatebin.js = "sha512-[…]"
|
||||
|
@ -24,7 +24,7 @@ jobs:
|
||||
steps:
|
||||
# Checkout the repository to the GitHub Actions runner
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v2
|
||||
uses: actions/checkout@v4
|
||||
|
||||
# Execute Codacy Analysis CLI and generate a SARIF output with the security issues identified during the analysis
|
||||
- name: Run Codacy Analysis CLI
|
||||
|
@ -26,12 +26,12 @@
|
||||
"require" : {
|
||||
"php": "^7.3 || ^8.0",
|
||||
"jdenticon/jdenticon": "1.0.2",
|
||||
"mlocati/ip-lib": "1.18.0",
|
||||
"mlocati/ip-lib": "1.18.1",
|
||||
"yzalis/identicon": "2.0.0"
|
||||
},
|
||||
"suggest" : {
|
||||
"google/cloud-storage" : "1.41.0",
|
||||
"aws/aws-sdk-php" : "3.302.0"
|
||||
"google/cloud-storage" : "1.44.0",
|
||||
"aws/aws-sdk-php" : "3.331.0"
|
||||
},
|
||||
"require-dev" : {
|
||||
"phpunit/phpunit" : "^9"
|
||||
|
125
composer.lock
generated
125
composer.lock
generated
@ -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": "b76c0c25f93dc79c4525cb3c86e5af99",
|
||||
"content-hash": "bb78267a7d61d23706111a91bc90d515",
|
||||
"packages": [
|
||||
{
|
||||
"name": "jdenticon/jdenticon",
|
||||
@ -57,16 +57,16 @@
|
||||
},
|
||||
{
|
||||
"name": "mlocati/ip-lib",
|
||||
"version": "1.18.0",
|
||||
"version": "1.18.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/mlocati/ip-lib.git",
|
||||
"reference": "c77bd0b1f3e3956c7e9661e75cb1f54ed67d95d2"
|
||||
"reference": "08bb43b4949069c543ebdf099a6b2c322d0172ab"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/mlocati/ip-lib/zipball/c77bd0b1f3e3956c7e9661e75cb1f54ed67d95d2",
|
||||
"reference": "c77bd0b1f3e3956c7e9661e75cb1f54ed67d95d2",
|
||||
"url": "https://api.github.com/repos/mlocati/ip-lib/zipball/08bb43b4949069c543ebdf099a6b2c322d0172ab",
|
||||
"reference": "08bb43b4949069c543ebdf099a6b2c322d0172ab",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@ -112,7 +112,7 @@
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/mlocati/ip-lib/issues",
|
||||
"source": "https://github.com/mlocati/ip-lib/tree/1.18.0"
|
||||
"source": "https://github.com/mlocati/ip-lib/tree/1.18.1"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@ -124,7 +124,7 @@
|
||||
"type": "other"
|
||||
}
|
||||
],
|
||||
"time": "2022-01-13T18:05:33+00:00"
|
||||
"time": "2024-10-29T15:44:19+00:00"
|
||||
},
|
||||
{
|
||||
"name": "yzalis/identicon",
|
||||
@ -257,16 +257,16 @@
|
||||
},
|
||||
{
|
||||
"name": "myclabs/deep-copy",
|
||||
"version": "1.11.1",
|
||||
"version": "1.12.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/myclabs/DeepCopy.git",
|
||||
"reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c"
|
||||
"reference": "123267b2c49fbf30d78a7b2d333f6be754b94845"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/7284c22080590fb39f2ffa3e9057f10a4ddd0e0c",
|
||||
"reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c",
|
||||
"url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/123267b2c49fbf30d78a7b2d333f6be754b94845",
|
||||
"reference": "123267b2c49fbf30d78a7b2d333f6be754b94845",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@ -274,11 +274,12 @@
|
||||
},
|
||||
"conflict": {
|
||||
"doctrine/collections": "<1.6.8",
|
||||
"doctrine/common": "<2.13.3 || >=3,<3.2.2"
|
||||
"doctrine/common": "<2.13.3 || >=3 <3.2.2"
|
||||
},
|
||||
"require-dev": {
|
||||
"doctrine/collections": "^1.6.8",
|
||||
"doctrine/common": "^2.13.3 || ^3.2.2",
|
||||
"phpspec/prophecy": "^1.10",
|
||||
"phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13"
|
||||
},
|
||||
"type": "library",
|
||||
@ -304,7 +305,7 @@
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/myclabs/DeepCopy/issues",
|
||||
"source": "https://github.com/myclabs/DeepCopy/tree/1.11.1"
|
||||
"source": "https://github.com/myclabs/DeepCopy/tree/1.12.1"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@ -312,20 +313,20 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2023-03-08T13:26:56+00:00"
|
||||
"time": "2024-11-08T17:47:46+00:00"
|
||||
},
|
||||
{
|
||||
"name": "nikic/php-parser",
|
||||
"version": "v4.19.1",
|
||||
"version": "v4.19.4",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/nikic/PHP-Parser.git",
|
||||
"reference": "4e1b88d21c69391150ace211e9eaf05810858d0b"
|
||||
"reference": "715f4d25e225bc47b293a8b997fe6ce99bf987d2"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/4e1b88d21c69391150ace211e9eaf05810858d0b",
|
||||
"reference": "4e1b88d21c69391150ace211e9eaf05810858d0b",
|
||||
"url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/715f4d25e225bc47b293a8b997fe6ce99bf987d2",
|
||||
"reference": "715f4d25e225bc47b293a8b997fe6ce99bf987d2",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@ -334,7 +335,7 @@
|
||||
},
|
||||
"require-dev": {
|
||||
"ircmaxell/php-yacc": "^0.0.7",
|
||||
"phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0"
|
||||
"phpunit/phpunit": "^7.0 || ^8.0 || ^9.0"
|
||||
},
|
||||
"bin": [
|
||||
"bin/php-parse"
|
||||
@ -366,9 +367,9 @@
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/nikic/PHP-Parser/issues",
|
||||
"source": "https://github.com/nikic/PHP-Parser/tree/v4.19.1"
|
||||
"source": "https://github.com/nikic/PHP-Parser/tree/v4.19.4"
|
||||
},
|
||||
"time": "2024-03-17T08:10:35+00:00"
|
||||
"time": "2024-09-29T15:01:53+00:00"
|
||||
},
|
||||
{
|
||||
"name": "phar-io/manifest",
|
||||
@ -490,35 +491,35 @@
|
||||
},
|
||||
{
|
||||
"name": "phpunit/php-code-coverage",
|
||||
"version": "9.2.31",
|
||||
"version": "9.2.32",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/sebastianbergmann/php-code-coverage.git",
|
||||
"reference": "48c34b5d8d983006bd2adc2d0de92963b9155965"
|
||||
"reference": "85402a822d1ecf1db1096959413d35e1c37cf1a5"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/48c34b5d8d983006bd2adc2d0de92963b9155965",
|
||||
"reference": "48c34b5d8d983006bd2adc2d0de92963b9155965",
|
||||
"url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/85402a822d1ecf1db1096959413d35e1c37cf1a5",
|
||||
"reference": "85402a822d1ecf1db1096959413d35e1c37cf1a5",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"ext-dom": "*",
|
||||
"ext-libxml": "*",
|
||||
"ext-xmlwriter": "*",
|
||||
"nikic/php-parser": "^4.18 || ^5.0",
|
||||
"nikic/php-parser": "^4.19.1 || ^5.1.0",
|
||||
"php": ">=7.3",
|
||||
"phpunit/php-file-iterator": "^3.0.3",
|
||||
"phpunit/php-text-template": "^2.0.2",
|
||||
"sebastian/code-unit-reverse-lookup": "^2.0.2",
|
||||
"sebastian/complexity": "^2.0",
|
||||
"sebastian/environment": "^5.1.2",
|
||||
"sebastian/lines-of-code": "^1.0.3",
|
||||
"sebastian/version": "^3.0.1",
|
||||
"theseer/tokenizer": "^1.2.0"
|
||||
"phpunit/php-file-iterator": "^3.0.6",
|
||||
"phpunit/php-text-template": "^2.0.4",
|
||||
"sebastian/code-unit-reverse-lookup": "^2.0.3",
|
||||
"sebastian/complexity": "^2.0.3",
|
||||
"sebastian/environment": "^5.1.5",
|
||||
"sebastian/lines-of-code": "^1.0.4",
|
||||
"sebastian/version": "^3.0.2",
|
||||
"theseer/tokenizer": "^1.2.3"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpunit/phpunit": "^9.3"
|
||||
"phpunit/phpunit": "^9.6"
|
||||
},
|
||||
"suggest": {
|
||||
"ext-pcov": "PHP extension that provides line coverage",
|
||||
@ -527,7 +528,7 @@
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "9.2-dev"
|
||||
"dev-main": "9.2.x-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
@ -556,7 +557,7 @@
|
||||
"support": {
|
||||
"issues": "https://github.com/sebastianbergmann/php-code-coverage/issues",
|
||||
"security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy",
|
||||
"source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.31"
|
||||
"source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.32"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@ -564,7 +565,7 @@
|
||||
"type": "github"
|
||||
}
|
||||
],
|
||||
"time": "2024-03-02T06:37:42+00:00"
|
||||
"time": "2024-08-22T04:23:01+00:00"
|
||||
},
|
||||
{
|
||||
"name": "phpunit/php-file-iterator",
|
||||
@ -809,45 +810,45 @@
|
||||
},
|
||||
{
|
||||
"name": "phpunit/phpunit",
|
||||
"version": "9.6.19",
|
||||
"version": "9.6.21",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/sebastianbergmann/phpunit.git",
|
||||
"reference": "a1a54a473501ef4cdeaae4e06891674114d79db8"
|
||||
"reference": "de6abf3b6f8dd955fac3caad3af7a9504e8c2ffa"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/a1a54a473501ef4cdeaae4e06891674114d79db8",
|
||||
"reference": "a1a54a473501ef4cdeaae4e06891674114d79db8",
|
||||
"url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/de6abf3b6f8dd955fac3caad3af7a9504e8c2ffa",
|
||||
"reference": "de6abf3b6f8dd955fac3caad3af7a9504e8c2ffa",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"doctrine/instantiator": "^1.3.1 || ^2",
|
||||
"doctrine/instantiator": "^1.5.0 || ^2",
|
||||
"ext-dom": "*",
|
||||
"ext-json": "*",
|
||||
"ext-libxml": "*",
|
||||
"ext-mbstring": "*",
|
||||
"ext-xml": "*",
|
||||
"ext-xmlwriter": "*",
|
||||
"myclabs/deep-copy": "^1.10.1",
|
||||
"phar-io/manifest": "^2.0.3",
|
||||
"phar-io/version": "^3.0.2",
|
||||
"myclabs/deep-copy": "^1.12.0",
|
||||
"phar-io/manifest": "^2.0.4",
|
||||
"phar-io/version": "^3.2.1",
|
||||
"php": ">=7.3",
|
||||
"phpunit/php-code-coverage": "^9.2.28",
|
||||
"phpunit/php-file-iterator": "^3.0.5",
|
||||
"phpunit/php-code-coverage": "^9.2.32",
|
||||
"phpunit/php-file-iterator": "^3.0.6",
|
||||
"phpunit/php-invoker": "^3.1.1",
|
||||
"phpunit/php-text-template": "^2.0.3",
|
||||
"phpunit/php-timer": "^5.0.2",
|
||||
"sebastian/cli-parser": "^1.0.1",
|
||||
"sebastian/code-unit": "^1.0.6",
|
||||
"phpunit/php-text-template": "^2.0.4",
|
||||
"phpunit/php-timer": "^5.0.3",
|
||||
"sebastian/cli-parser": "^1.0.2",
|
||||
"sebastian/code-unit": "^1.0.8",
|
||||
"sebastian/comparator": "^4.0.8",
|
||||
"sebastian/diff": "^4.0.3",
|
||||
"sebastian/environment": "^5.1.3",
|
||||
"sebastian/exporter": "^4.0.5",
|
||||
"sebastian/global-state": "^5.0.1",
|
||||
"sebastian/object-enumerator": "^4.0.3",
|
||||
"sebastian/resource-operations": "^3.0.3",
|
||||
"sebastian/type": "^3.2",
|
||||
"sebastian/diff": "^4.0.6",
|
||||
"sebastian/environment": "^5.1.5",
|
||||
"sebastian/exporter": "^4.0.6",
|
||||
"sebastian/global-state": "^5.0.7",
|
||||
"sebastian/object-enumerator": "^4.0.4",
|
||||
"sebastian/resource-operations": "^3.0.4",
|
||||
"sebastian/type": "^3.2.1",
|
||||
"sebastian/version": "^3.0.2"
|
||||
},
|
||||
"suggest": {
|
||||
@ -892,7 +893,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.19"
|
||||
"source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.21"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@ -908,7 +909,7 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2024-04-05T04:35:58+00:00"
|
||||
"time": "2024-09-19T10:50:18+00:00"
|
||||
},
|
||||
{
|
||||
"name": "sebastian/cli-parser",
|
||||
@ -1936,5 +1937,5 @@
|
||||
"platform-overrides": {
|
||||
"php": "7.3"
|
||||
},
|
||||
"plugin-api-version": "2.6.0"
|
||||
"plugin-api-version": "2.3.0"
|
||||
}
|
||||
|
@ -69,45 +69,8 @@ body.loading {
|
||||
margin-right: 8px;
|
||||
}
|
||||
|
||||
#qrcodemodalClose {
|
||||
float: right;
|
||||
}
|
||||
|
||||
#qrcode-display {
|
||||
width: 200px;
|
||||
height: 200px;
|
||||
margin: auto;
|
||||
}
|
||||
|
||||
#pastelink {
|
||||
display: inline;
|
||||
}
|
||||
|
||||
#pastelink > a {
|
||||
word-wrap: break-word;
|
||||
}
|
||||
|
||||
#preview {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
#message, .replymessage {
|
||||
font-family: monospace;
|
||||
resize: vertical;
|
||||
}
|
||||
|
||||
#nickname {
|
||||
margin: 5px 0;
|
||||
}
|
||||
|
||||
#comments, #comments button {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.comment {
|
||||
border-left: 1px solid #ccc;
|
||||
padding: 5px 0 5px 10px;
|
||||
transition: background-color 0.75s ease-out;
|
||||
}
|
||||
|
||||
footer h4 {
|
||||
|
@ -14,51 +14,6 @@
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
#qrcodemodalClose {
|
||||
float: right;
|
||||
}
|
||||
|
||||
#qrcode-display {
|
||||
width: 200px;
|
||||
height: 200px;
|
||||
margin: auto;
|
||||
}
|
||||
|
||||
#pastelink {
|
||||
display: inline;
|
||||
}
|
||||
|
||||
#pastelink > a {
|
||||
word-wrap: break-word;
|
||||
}
|
||||
|
||||
#preview {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
#message {
|
||||
height: 70vh;
|
||||
}
|
||||
|
||||
#message, .replymessage {
|
||||
font-family: monospace;
|
||||
resize: vertical;
|
||||
}
|
||||
|
||||
#nickname {
|
||||
margin: 5px 0;
|
||||
}
|
||||
|
||||
#comments, #comments button {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.comment {
|
||||
border-left: 1px solid #ccc;
|
||||
padding: 5px 0 5px 10px;
|
||||
transition: background-color 0.75s ease-out;
|
||||
}
|
||||
|
||||
.dropdown-menu {
|
||||
--bs-dropdown-min-width: 23rem;
|
||||
}
|
||||
|
@ -38,27 +38,65 @@
|
||||
outline-offset: -50px;
|
||||
}
|
||||
|
||||
.dragAndDropFile {
|
||||
color: #777;
|
||||
font-size: 1em;
|
||||
display: inline;
|
||||
white-space: normal;
|
||||
}
|
||||
|
||||
#filewrap {
|
||||
transition: background-color 0.75s ease-out;
|
||||
}
|
||||
|
||||
.highlight {
|
||||
background-color: #fd8;
|
||||
transition: background-color 0.2s ease-in;
|
||||
}
|
||||
|
||||
#deletelink {
|
||||
float: right;
|
||||
margin-left: 5px;
|
||||
}
|
||||
|
||||
#qrcodemodalClose {
|
||||
float: right;
|
||||
}
|
||||
|
||||
#qrcode-display {
|
||||
width: 200px;
|
||||
height: 200px;
|
||||
margin: auto;
|
||||
}
|
||||
|
||||
#pastelink {
|
||||
display: inline;
|
||||
}
|
||||
|
||||
#pastelink > a, #plaintext > a {
|
||||
word-wrap: break-word;
|
||||
}
|
||||
|
||||
#message {
|
||||
height: 70dvh;
|
||||
}
|
||||
|
||||
@media ((max-width: 450px) and (max-height: 950px)) {
|
||||
#message {
|
||||
height: 55dvh;
|
||||
}
|
||||
}
|
||||
|
||||
#message, .replymessage {
|
||||
font-family: monospace;
|
||||
resize: vertical;
|
||||
}
|
||||
|
||||
.comment {
|
||||
border-left: 1px solid #ccc;
|
||||
transition: background-color 0.75s ease-out;
|
||||
}
|
||||
|
||||
.commentdata {
|
||||
white-space: pre-wrap;
|
||||
}
|
||||
|
||||
.dragAndDropFile {
|
||||
color: #777;
|
||||
font-size: 1em;
|
||||
display: inline;
|
||||
white-space: normal;
|
||||
}
|
||||
|
||||
.highlight {
|
||||
background-color: #fd8;
|
||||
transition: background-color 0.2s ease-in;
|
||||
}
|
||||
|
@ -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.4');
|
||||
INSERT INTO prefix_config VALUES('VERSION', '1.7.5');
|
||||
```
|
||||
|
||||
In **PostgreSQL**, the `data`, `attachment`, `nickname` and `vizhash` columns
|
||||
|
@ -43,6 +43,14 @@ Example for Debian and Ubuntu:
|
||||
$ sudo apt install phpunit php-gd php-sqlite3 php-xdebug
|
||||
```
|
||||
|
||||
Because the unit tests depend on this, you also need to install the optional. Otherwise they won't run:
|
||||
```console
|
||||
composer require google/cloud-storage
|
||||
```
|
||||
|
||||
If you do this and want to develop further, please go into `.gitignore` and adjust it to ignore the whole
|
||||
vendor directory. Otherwise your `git status` will be filled with lot's of unrelated PHP files.
|
||||
|
||||
To run the tests, change into the `tst` directory and run phpunit:
|
||||
|
||||
```console
|
||||
|
@ -220,6 +220,7 @@
|
||||
"Dark Mode": "الوضع الداكن",
|
||||
"Error compressing paste, due to missing WebAssembly support.": "Error compressing paste, due to missing WebAssembly support.",
|
||||
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.",
|
||||
"Start over": "Start over",
|
||||
"Paste copied to clipboard": "Paste copied to clipboard",
|
||||
"To copy paste press on the copy button or use the clipboard shortcut Ctrl+c/Cmd+c": "To copy paste press on the copy button or use the clipboard shortcut Ctrl+c/Cmd+c"
|
||||
}
|
||||
|
@ -220,6 +220,7 @@
|
||||
"Dark Mode": "Dark Mode",
|
||||
"Error compressing paste, due to missing WebAssembly support.": "Error compressing paste, due to missing WebAssembly support.",
|
||||
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.",
|
||||
"Start over": "Start over",
|
||||
"Paste copied to clipboard": "Paste copied to clipboard",
|
||||
"To copy paste press on the copy button or use the clipboard shortcut Ctrl+c/Cmd+c": "To copy paste press on the copy button or use the clipboard shortcut Ctrl+c/Cmd+c"
|
||||
}
|
||||
|
@ -220,6 +220,7 @@
|
||||
"Dark Mode": "Dark Mode",
|
||||
"Error compressing paste, due to missing WebAssembly support.": "Error de compressió de la nota, no hi ha suport de WebAssembly.",
|
||||
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.",
|
||||
"Start over": "Start over",
|
||||
"Paste copied to clipboard": "Paste copied to clipboard",
|
||||
"To copy paste press on the copy button or use the clipboard shortcut Ctrl+c/Cmd+c": "To copy paste press on the copy button or use the clipboard shortcut Ctrl+c/Cmd+c"
|
||||
}
|
||||
|
@ -168,15 +168,15 @@
|
||||
"Plain Text": "Testu in chjaru",
|
||||
"Source Code": "Codice di fonte",
|
||||
"Markdown": "Markdown",
|
||||
"Download attachment": "Scaricà a pezza aghjunta",
|
||||
"Download attachment": "Scaricà a pezza ghjunta",
|
||||
"Cloned: '%s'": "Duppiatu : « %s »",
|
||||
"The cloned file '%s' was attached to this paste.": "U schedariu duppiatu « %s » hè statu aghjuntu à st’appiccicu.",
|
||||
"Attach a file": "Aghjunghje un schedariu",
|
||||
"alternatively drag & drop a file or paste an image from the clipboard": "in alternanza, sguillà è depone un schedariu o incullà una fiura da u preme’papei",
|
||||
"File too large, to display a preview. Please download the attachment.": "Schedariu troppu maiò per affissà una fighjulata. Scaricate a pezza aghjunta.",
|
||||
"Remove attachment": "Caccià a pezza aghjunta",
|
||||
"File too large, to display a preview. Please download the attachment.": "Schedariu troppu maiò per affissà una fighjulata. Scaricate a pezza ghjunta.",
|
||||
"Remove attachment": "Caccià a pezza ghjunta",
|
||||
"Your browser does not support uploading encrypted files. Please use a newer browser.": "U vostru navigatore ùn accetta micca l’inviu di i schedarii cifrati. Impiegate un navigatore più recente.",
|
||||
"Invalid attachment.": "A pezza aghjunta hè inaccettevule.",
|
||||
"Invalid attachment.": "A pezza ghjunta hè inaccettevule.",
|
||||
"Options": "Ozzioni",
|
||||
"Shorten URL": "Ammuzzà l’indirizzu",
|
||||
"Editor": "Editore",
|
||||
@ -220,6 +220,7 @@
|
||||
"Dark Mode": "Modu scuru",
|
||||
"Error compressing paste, due to missing WebAssembly support.": "Sbagliu durante a cumpressione di l’appiccicu, perchè WebAssembly ùn hè micca accettatu.",
|
||||
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "Sbagliu durante a scumpressione di l’appiccicu, perchè u vostru navigatore ùn accetteghja micca WebAssembly. Ci vole à impiegà un altru navigatore per affissà st’appiccicu.",
|
||||
"Start over": "Principià torna",
|
||||
"Paste copied to clipboard": "Paste copied to clipboard",
|
||||
"To copy paste press on the copy button or use the clipboard shortcut Ctrl+c/Cmd+c": "To copy paste press on the copy button or use the clipboard shortcut Ctrl+c/Cmd+c"
|
||||
}
|
||||
|
241
i18n/cs.json
241
i18n/cs.json
@ -1,34 +1,34 @@
|
||||
{
|
||||
"PrivateBin": "PrivateBin",
|
||||
"%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s je minimalistický open source 'pastebin' server, který neanalyzuje vložená data. Data jsou šifrována %sv prohlížeči%s pomocí 256 bitů AES.",
|
||||
"More information on the <a href=\"https://privatebin.info/\">project page</a>.": "Více informací na <a href=\"https://privatebin.info/\">stránce projetu</a>.",
|
||||
"%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s je minimalistický open source 'pastebin' server, který nemá přístup ke vloženým datům. Data jsou šifrována %sv prohlížeči%s pomocí 256bitového AES.",
|
||||
"More information on the <a href=\"https://privatebin.info/\">project page</a>.": "Více informací na <a href=\"https://privatebin.info/\">stránce projektu</a>.",
|
||||
"Because ignorance is bliss": "Protože nevědomost je sladká",
|
||||
"Paste does not exist, has expired or has been deleted.": "Vložený text neexistuje, expiroval nebo byl odstraněn.",
|
||||
"%s requires php %s or above to work. Sorry.": "%s vyžaduje php %s nebo vyšší. Lituji.",
|
||||
"%s requires configuration section [%s] to be present in configuration file.": "%s vyžaduje, aby byla v konfiguračním souboru přítomna sekce [%s].",
|
||||
"%s requires configuration section [%s] to be present in configuration file.": "%s vyžaduje, aby byla v konfiguračním souboru přítomna sekce [%s].",
|
||||
"Please wait %d seconds between each post.": [
|
||||
"Počet sekund do dalšího příspěvku: %d.",
|
||||
"Počet sekund do dalšího příspěvku: %d.",
|
||||
"Počet sekund do dalšího příspěvku: %d.",
|
||||
"Počet sekund do dalšího příspěvku: %d.",
|
||||
"Počet sekund do dalšího příspěvku: %d.",
|
||||
"Počet sekund do dalšího příspěvku: %d."
|
||||
"Vyčkejte prosím %d sekundu mezi následujícími příspěvky.",
|
||||
"Vyčkejte prosím %d sekundy mezi následujícími příspěvky.",
|
||||
"Vyčkejte prosím %d sekund mezi následujícími příspěvky.",
|
||||
"Vyčkejte prosím %d sekund mezi následujícími příspěvky.",
|
||||
"Vyčkejte prosím %d sekund mezi následujícími příspěvky.",
|
||||
"Vyčkejte prosím %d sekund mezi následujícími příspěvky."
|
||||
],
|
||||
"Paste is limited to %s of encrypted data.": "Příspěvek je limitován na %s šífrovaných dat",
|
||||
"Invalid data.": "Chybná data.",
|
||||
"You are unlucky. Try again.": "Lituji, zkuste to znovu.",
|
||||
"Error saving comment. Sorry.": "Chyba při ukládání komentáře.",
|
||||
"Error saving paste. Sorry.": "Chyba při ukládání příspěvku.",
|
||||
"Invalid paste ID.": "Chybně vložené ID.",
|
||||
"Paste is not of burn-after-reading type.": "Příspěvek není nastaven na smazaní po přečtení.",
|
||||
"Error saving comment. Sorry.": "Chyba při ukládání komentáře. Promiňte.",
|
||||
"Error saving paste. Sorry.": "Chyba při ukládání příspěvku. Promiňte.",
|
||||
"Invalid paste ID.": "Chybné ID příspěvku.",
|
||||
"Paste is not of burn-after-reading type.": "Příspěvek není nastaven na smazání po přečtení.",
|
||||
"Wrong deletion token. Paste was not deleted.": "Chybný token pro odstranění. Příspěvek nebyl smazán.",
|
||||
"Paste was properly deleted.": "Příspěvek byl řádně smazán.",
|
||||
"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.",
|
||||
"%s requires a modern browser to work.": "Pro fungování %s je vyžadován moderní prohlížeč.",
|
||||
"New": "Nový",
|
||||
"Create": "Vytvořit",
|
||||
"Clone": "Klonovat",
|
||||
"Raw text": "Pouze Text",
|
||||
"Raw text": "Čistý text",
|
||||
"Expires": "Expirace",
|
||||
"Burn after reading": "Po přečtení smazat",
|
||||
"Open discussion": "Povolit komentáře",
|
||||
@ -36,113 +36,113 @@
|
||||
"Discussion": "Komentáře",
|
||||
"Toggle navigation": "Přepnout navigaci",
|
||||
"%d seconds": [
|
||||
"%d sekuda",
|
||||
"%d sekundy",
|
||||
"%d sekund",
|
||||
"%d sekund",
|
||||
"%d sekund",
|
||||
"%d sekund"
|
||||
"%d sekunda",
|
||||
"%d sekundy",
|
||||
"%d sekund",
|
||||
"%d sekund",
|
||||
"%d sekund",
|
||||
"%d sekund"
|
||||
],
|
||||
"%d minutes": [
|
||||
"%d minuta",
|
||||
"%d minuty",
|
||||
"%d minut",
|
||||
"%d minut",
|
||||
"%d minut",
|
||||
"%d minut"
|
||||
"%d minuta",
|
||||
"%d minuty",
|
||||
"%d minut",
|
||||
"%d minut",
|
||||
"%d minut",
|
||||
"%d minut"
|
||||
],
|
||||
"%d hours": [
|
||||
"%d hodina",
|
||||
"%d hodiny",
|
||||
"%d hodin",
|
||||
"%d hodin",
|
||||
"%d hodin",
|
||||
"%d hodin"
|
||||
"%d hodina",
|
||||
"%d hodiny",
|
||||
"%d hodin",
|
||||
"%d hodin",
|
||||
"%d hodin",
|
||||
"%d hodin"
|
||||
],
|
||||
"%d days": [
|
||||
"%d den",
|
||||
"%d dny",
|
||||
"%d dní",
|
||||
"%d dní",
|
||||
"%d dní",
|
||||
"%d dní"
|
||||
"%d den",
|
||||
"%d dny",
|
||||
"%d dní",
|
||||
"%d dní",
|
||||
"%d dní",
|
||||
"%d dní"
|
||||
],
|
||||
"%d weeks": [
|
||||
"%d týden",
|
||||
"%d týdeny",
|
||||
"%d týdnů",
|
||||
"%d týdnů",
|
||||
"%d týdnů",
|
||||
"%d týdnů"
|
||||
"%d týden",
|
||||
"%d týdny",
|
||||
"%d týdnů",
|
||||
"%d týdnů",
|
||||
"%d týdnů",
|
||||
"%d týdnů"
|
||||
],
|
||||
"%d months": [
|
||||
"%d měsíc",
|
||||
"%d měsíce",
|
||||
"%d měsíců",
|
||||
"%d měsíců",
|
||||
"%d měsíců",
|
||||
"%d měsíců"
|
||||
"%d měsíc",
|
||||
"%d měsíce",
|
||||
"%d měsíců",
|
||||
"%d měsíců",
|
||||
"%d měsíců",
|
||||
"%d měsíců"
|
||||
],
|
||||
"%d years": [
|
||||
"%d rok",
|
||||
"%d roky",
|
||||
"%d roků",
|
||||
"%d roků",
|
||||
"%d roků",
|
||||
"%d roků"
|
||||
"%d rok",
|
||||
"%d roky",
|
||||
"%d let",
|
||||
"%d let",
|
||||
"%d let",
|
||||
"%d let"
|
||||
],
|
||||
"Never": "Nikdy",
|
||||
"Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service.": "Poznámka: Tato služba slouží k vyzkoušení: Data mohou být kdykoliv smazána. Při zneužití této služby zemřou koťátka.",
|
||||
"Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service.": "Poznámka: Toto je testovací služba: Data mohou být kdykoliv smazána. Při zneužití této služby zemřou koťátka.",
|
||||
"This document will expire in %d seconds.": [
|
||||
"Tento dokument expiruje za %d sekundu.",
|
||||
"Tento dokument expiruje za %d sekundy.",
|
||||
"Tento dokument expiruje za %d sekund.",
|
||||
"Tento dokument expiruje za %d sekund.",
|
||||
"Tento dokument expiruje za %d sekund.",
|
||||
"Tento dokument expiruje za %d sekund."
|
||||
"Tento dokument expiruje za %d sekundu.",
|
||||
"Tento dokument expiruje za %d sekundy.",
|
||||
"Tento dokument expiruje za %d sekund.",
|
||||
"Tento dokument expiruje za %d sekund.",
|
||||
"Tento dokument expiruje za %d sekund.",
|
||||
"Tento dokument expiruje za %d sekund."
|
||||
],
|
||||
"This document will expire in %d minutes.": [
|
||||
"Tento dokument expiruje za %d minutu.",
|
||||
"Tento dokument expiruje za %d minuty.",
|
||||
"Tento dokument expiruje za %d minut.",
|
||||
"Tento dokument expiruje za %d minut.",
|
||||
"Tento dokument expiruje za %d minut.",
|
||||
"Tento dokument expiruje za %d minut."
|
||||
"Tento dokument expiruje za %d minutu.",
|
||||
"Tento dokument expiruje za %d minuty.",
|
||||
"Tento dokument expiruje za %d minut.",
|
||||
"Tento dokument expiruje za %d minut.",
|
||||
"Tento dokument expiruje za %d minut.",
|
||||
"Tento dokument expiruje za %d minut."
|
||||
],
|
||||
"This document will expire in %d hours.": [
|
||||
"Tento dokument expiruje za %d hodinu.",
|
||||
"Tento dokument expiruje za %d hodiny.",
|
||||
"Tento dokument expiruje za %d hodin.",
|
||||
"Tento dokument expiruje za %d hodin.",
|
||||
"Tento dokument expiruje za %d hodin.",
|
||||
"Tento dokument expiruje za %d hodin."
|
||||
"Tento dokument expiruje za %d hodinu.",
|
||||
"Tento dokument expiruje za %d hodiny.",
|
||||
"Tento dokument expiruje za %d hodin.",
|
||||
"Tento dokument expiruje za %d hodin.",
|
||||
"Tento dokument expiruje za %d hodin.",
|
||||
"Tento dokument expiruje za %d hodin."
|
||||
],
|
||||
"This document will expire in %d days.": [
|
||||
"Tento dokument expiruje za %d den.",
|
||||
"Tento dokument expiruje za %d dny.",
|
||||
"Tento dokument expiruje za %d dny.",
|
||||
"Tento dokument expiruje za %d dny.",
|
||||
"Tento dokument expiruje za %d dny.",
|
||||
"Tento dokument expiruje za %d dny."
|
||||
"Tento dokument expiruje za %d den.",
|
||||
"Tento dokument expiruje za %d dny.",
|
||||
"Tento dokument expiruje za %d dní.",
|
||||
"Tento dokument expiruje za %d dní.",
|
||||
"Tento dokument expiruje za %d dní.",
|
||||
"Tento dokument expiruje za %d dní."
|
||||
],
|
||||
"This document will expire in %d months.": [
|
||||
"Tento dokument expiruje za %d měsíc.",
|
||||
"Tento dokument expiruje za %d měsíce.",
|
||||
"Tento dokument expiruje za %d měsíců.",
|
||||
"Tento dokument expiruje za %d měsíců.",
|
||||
"Tento dokument expiruje za %d měsíců.",
|
||||
"Tento dokument expiruje za %d měsíců."
|
||||
"Tento dokument expiruje za %d měsíc.",
|
||||
"Tento dokument expiruje za %d měsíce.",
|
||||
"Tento dokument expiruje za %d měsíců.",
|
||||
"Tento dokument expiruje za %d měsíců.",
|
||||
"Tento dokument expiruje za %d měsíců.",
|
||||
"Tento dokument expiruje za %d měsíců."
|
||||
],
|
||||
"Please enter the password for this paste:": "Zadejte prosím heslo:",
|
||||
"Please enter the password for this paste:": "Zadejte prosím heslo k tomuto příspěvku:",
|
||||
"Could not decrypt data (Wrong key?)": "Nepodařilo se dešifrovat data (Špatný klíč?)",
|
||||
"Could not delete the paste, it was not stored in burn after reading mode.": "Nepodařilo se odstranit příspěvek, nebyl uložen v režimu smazání po přečtení.",
|
||||
"Could not delete the paste, it was not stored in burn after reading mode.": "Nepodařilo se odstranit příspěvek, nebyl uložen v režimu smazání po přečtení.",
|
||||
"FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.": "POUZE PRO VAŠE OČI. Nezavírejte toto okno, tuto zprávu nelze znovu zobrazit.",
|
||||
"Could not decrypt comment; Wrong key?": "Nepodařilo se dešifrovat komentář; Špatný klíč?",
|
||||
"Reply": "Odpovědět",
|
||||
"Anonymous": "Anonym",
|
||||
"Avatar generated from IP address": "Avatar vygenerován z IP adresy",
|
||||
"Avatar generated from IP address": "Avatar vygenerován podle IP adresy",
|
||||
"Add comment": "Přidat komentář",
|
||||
"Optional nickname…": "Volitelný nickname…",
|
||||
"Optional nickname…": "Nepovinná přezdívka…",
|
||||
"Post comment": "Odeslat komentář",
|
||||
"Sending comment…": "Odesílání komentáře…",
|
||||
"Comment posted.": "Komentář odeslán.",
|
||||
@ -151,10 +151,10 @@
|
||||
"server error or not responding": "Chyba na serveru nebo server neodpovídá",
|
||||
"Could not post comment: %s": "Nelze odeslat komentář: %s",
|
||||
"Sending paste…": "Odesílání příspěvku…",
|
||||
"Your paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit [Ctrl]+[c] to copy)</span>": "Váš link je <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Stiskněte [Ctrl]+[c] pro zkopírování)</span>",
|
||||
"Your paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit [Ctrl]+[c] to copy)</span>": "Váš příspěvek je <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Stiskněte [Ctrl]+[c] pro zkopírování)</span>",
|
||||
"Delete data": "Odstranit data",
|
||||
"Could not create paste: %s": "Nelze vytvořit příspěvek: %s",
|
||||
"Cannot decrypt paste: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)": "Nepodařilo se dešifrovat příspěvek: V adrese chybí dešifrovací klíč (Možnou příčinou může být URL shortener?)",
|
||||
"Could not create paste: %s": "Nepodařilo se vytvořit příspěvek: %s",
|
||||
"Cannot decrypt paste: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)": "Nepodařilo se dešifrovat příspěvek: V adrese chybí dešifrovací klíč (Nepoužili jste přesměrovač nebo zkracovač URL, který maže části URL?)",
|
||||
"B": "B",
|
||||
"KiB": "KiB",
|
||||
"MiB": "MiB",
|
||||
@ -165,61 +165,62 @@
|
||||
"ZiB": "ZiB",
|
||||
"YiB": "YiB",
|
||||
"Format": "Formát",
|
||||
"Plain Text": "Prostý Text",
|
||||
"Plain Text": "Prostý text",
|
||||
"Source Code": "Zdrojový kód",
|
||||
"Markdown": "Markdown",
|
||||
"Download attachment": "Stáhnout přílohu",
|
||||
"Cloned: '%s'": "Klonováno: '%s'",
|
||||
"The cloned file '%s' was attached to this paste.": "Naklonovaný soubor '%s' byl připojen k tomuto příspěvku.",
|
||||
"Cloned: '%s'": "Naklonováno: '%s'",
|
||||
"The cloned file '%s' was attached to this paste.": "Naklonovaný soubor „%s“ byl připojen k tomuto příspěvku.",
|
||||
"Attach a file": "Připojit soubor",
|
||||
"alternatively drag & drop a file or paste an image from the clipboard": "alternativně přetáhněte soubor nebo vložte obrázek ze schránky",
|
||||
"alternatively drag & drop a file or paste an image from the clipboard": "případně přetáhněte soubor nebo vložte obrázek ze schránky",
|
||||
"File too large, to display a preview. Please download the attachment.": "Soubor je příliš velký pro zobrazení náhledu. Stáhněte si přílohu.",
|
||||
"Remove attachment": "Odstranit přílohu",
|
||||
"Your browser does not support uploading encrypted files. Please use a newer browser.": "Váš prohlížeč nepodporuje nahrávání šifrovaných souborů. Použijte modernější verzi prohlížeče.",
|
||||
"Invalid attachment.": "Chybná příloha.",
|
||||
"Options": "Volby",
|
||||
"Options": "Možnosti",
|
||||
"Shorten URL": "Zkrátit URL",
|
||||
"Editor": "Editor",
|
||||
"Preview": "Náhled",
|
||||
"%s requires the PATH to end in a \"%s\". Please update the PATH in your index.php.": "%s vyžaduje, aby PATH skončil s \"%s\". Aktualizujte PATH ve vašem souboru index.php.",
|
||||
"%s requires the PATH to end in a \"%s\". Please update the PATH in your index.php.": "%s vyžaduje, aby PATH končilo na „%s“. Aktualizujte PATH ve vašem souboru index.php.",
|
||||
"Decrypt": "Dešifrovat",
|
||||
"Enter password": "Zadejte heslo",
|
||||
"Loading…": "Načítání…",
|
||||
"Decrypting paste…": "Dešifruji příspěvek…",
|
||||
"Preparing new paste…": "Připravuji nový příspěvek…",
|
||||
"In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.": "V případě, že tato zpráva nezmizí, se podívejte na <a href=\"%s\">tyto často kladené otázky pro řešení</a>.",
|
||||
"+++ no paste text +++": "+++ žádný vložený text +++",
|
||||
"In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.": "Pokud tato zpráva nezmizí, podívejte se na <a href=\"%s\">tyto často kladené otázky pro řešení problémů</a>.",
|
||||
"+++ no paste text +++": "+++ žádný text příspěvku +++",
|
||||
"Could not get paste data: %s": "Nepodařilo se získat data příspěvku: %s",
|
||||
"QR code": "QR kód",
|
||||
"This website is using an insecure HTTP connection! Please use it only for testing.": "Tato stránka používá nezabezpečený připojení HTTP! Použijte ji prosím jen pro testování.",
|
||||
"For more information <a href=\"%s\">see this FAQ entry</a>.": "Více informací naleznete <a href=\"%s\">v této položce FAQ</a>.",
|
||||
"This website is using an insecure HTTP connection! Please use it only for testing.": "Tato stránka používá nezabezpečené HTTP připojení! Použijte ji prosím jen pro testování.",
|
||||
"For more information <a href=\"%s\">see this FAQ entry</a>.": "Více informací naleznete <a href=\"%s\">v této položce FAQ</a>.",
|
||||
"Your browser may require an HTTPS connection to support the WebCrypto API. Try <a href=\"%s\">switching to HTTPS</a>.": "Váš prohlížeč může vyžadovat připojení HTTPS pro podporu WebCrypto API. Zkuste <a href=\"%s\">přepnout na HTTPS</a>.",
|
||||
"Your browser doesn't support WebAssembly, used for zlib compression. You can create uncompressed documents, but can't read compressed ones.": "Váš prohlížeč nepodporuje WebAssembly, který se používá pro zlib kompresi. Můžete vytvořit nekomprimované dokumenty, ale nebudete moct číst ty komprimované.",
|
||||
"Your browser doesn't support WebAssembly, used for zlib compression. You can create uncompressed documents, but can't read compressed ones.": "Váš prohlížeč nepodporuje WebAssembly, které se používá pro zlib kompresi. Můžete vytvořit nekomprimované dokumenty, ale nebudete moct číst ty komprimované.",
|
||||
"waiting on user to provide a password": "čekám na zadání hesla",
|
||||
"Could not decrypt data. Did you enter a wrong password? Retry with the button at the top.": "Nepodařilo se dešifrovat data. Zadali jste špatné heslo? Zkuste to znovu pomocí tlačítka nahoře.",
|
||||
"Retry": "Opakovat",
|
||||
"Showing raw text…": "Zobrazuji surový text…",
|
||||
"Showing raw text…": "Zobrazuji čistý text…",
|
||||
"Notice:": "Upozornění:",
|
||||
"This link will expire after %s.": "Tento odkaz vyprší za %s.",
|
||||
"This link can only be accessed once, do not use back or refresh button in your browser.": "Tento odkaz je přístupný pouze jednou, nepoužívejte tlačítko zpět ani neobnovujte tuto stránku ve vašem prohlížeči.",
|
||||
"This link can only be accessed once, do not use back or refresh button in your browser.": "Tento odkaz je přístupný pouze jednou, nepoužívejte tlačítko zpět ani neobnovujte tuto stránku v prohlížeči.",
|
||||
"Link:": "Odkaz:",
|
||||
"Recipient may become aware of your timezone, convert time to UTC?": "Příjemce se může dozvědět o vašem časovém pásmu, převést čas na UTC?",
|
||||
"Recipient may become aware of your timezone, convert time to UTC?": "Příjemce může zjistit vaše časové pásmo, převést čas na UTC?",
|
||||
"Use Current Timezone": "Použít aktuální časové pásmo",
|
||||
"Convert To UTC": "Převést na UTC",
|
||||
"Close": "Zavřít",
|
||||
"Encrypted note on %s": "Šifrovaná poznámka ve službě %s",
|
||||
"Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Navštivte tento odkaz pro zobrazení poznámky. Přeposláním URL umožníte také jiným lidem přístup.",
|
||||
"URL shortener may expose your decrypt key in URL.": "Zkracovač URL může odhalit váš dešifrovací klíč v URL.",
|
||||
"Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Pro zobrazení poznámky navštivte tento odkaz. Přeposláním URL umožníte přístup také jiným lidem.",
|
||||
"URL shortener may expose your decrypt key in URL.": "Zkracovač URL může prozradit váš dešifrovací klíč v URL.",
|
||||
"Save paste": "Uložit příspěvek",
|
||||
"Your IP is not authorized to create pastes.": "Vaše IP adresa nemá oprávnění k vytvoření vložení.",
|
||||
"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.",
|
||||
"This secret message can only be displayed once. Would you like to see it now?": "This secret message can only be displayed once. Would you like to see it now?",
|
||||
"Yes, see it": "Yes, see it",
|
||||
"Dark Mode": "Dark Mode",
|
||||
"Error compressing paste, due to missing WebAssembly support.": "Error compressing paste, due to missing WebAssembly support.",
|
||||
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.",
|
||||
"Your IP is not authorized to create pastes.": "Vaše IP adresa nemá oprávnění k vytváření příspěvků.",
|
||||
"Trying to shorten a URL that isn't pointing at our instance.": "Pokus o zkrácení URL, které neodkazuje na naši instanci.",
|
||||
"Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".": "Chyba volání YOURLS. Pravděpodobně chyba konfigurace, např. nesprávné či chybějící „apiurl“ nebo „signature“.",
|
||||
"Error parsing YOURLS response.": "Chyba čtení odpovědi YOURLS.",
|
||||
"This secret message can only be displayed once. Would you like to see it now?": "Tuto tajnou zprávu lze zobrazit pouze jednou. Chcete si ji prohlédnout teď?",
|
||||
"Yes, see it": "Ano, zobrazit",
|
||||
"Dark Mode": "Tmavý režim",
|
||||
"Error compressing paste, due to missing WebAssembly support.": "Chyba při komprimování příspěvku kvůli chybějící podpoře WebAssembly.",
|
||||
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "Chyba při dekomprimování příspěvku, váš prohlížeč nepodporuje WebAssembly. Pro zobrazení tohoto příspěvku prosím použijte jiný prohlížeč.",
|
||||
"Start over": "Start over",
|
||||
"Paste copied to clipboard": "Paste copied to clipboard",
|
||||
"To copy paste press on the copy button or use the clipboard shortcut Ctrl+c/Cmd+c": "To copy paste press on the copy button or use the clipboard shortcut Ctrl+c/Cmd+c"
|
||||
}
|
||||
|
@ -220,6 +220,7 @@
|
||||
"Dark Mode": "Nachtmodus",
|
||||
"Error compressing paste, due to missing WebAssembly support.": "Fehler beim Komprimieren des Textes, da WebAssembly-Unterstützung fehlt.",
|
||||
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "Fehler beim Dekomprimieren des Textes. Dein Browser unterstützt WebAssembly nicht. Bitte verwende einen anderen Browser, um diesen Text anzuzeigen.",
|
||||
"Start over": "Neuen Text erstellen",
|
||||
"Paste copied to clipboard": "Paste copied to clipboard",
|
||||
"To copy paste press on the copy button or use the clipboard shortcut Ctrl+c/Cmd+c": "To copy paste press on the copy button or use the clipboard shortcut Ctrl+c/Cmd+c"
|
||||
}
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"PrivateBin": "PrivateBin",
|
||||
"%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s είναι ένα λιτό, ανοικτού λογισμικού διαδικτυακής υπηρεσίας επικόλλησης όπου ο διακομιστής έχει πλήρη άγνια του περιεχομένου που επικολλήθηκαν. Τα Δεδομένα κρυπτογραφούνται και αποκρυπτογραφούνται %sστον φιλομετρητή (browser)%s χρησιμοποιόντας 256 bits AES.",
|
||||
"%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "Το %s αποτελεί ένα εργαλείο επικόλλησης δεδομένων στο διαδίκτυο, που βασίζεται σε λογισμικό ανοιχτού κώδικα. Ο διακομιστής έχει πλήρη άγνοια αυτών των δεδομένων, τα οποία από/κρυπτογραφούνται %sστο πρόγραμμα περιήγησης%s, χρησιμοποιώντας τη μέθοδο 256-bits AES.",
|
||||
"More information on the <a href=\"https://privatebin.info/\">project page</a>.": "Περισσότερες πληροφορίες στον <a href=\"https://privatebin.info/\">ιστότοπο του εργαλείου</a>.",
|
||||
"Because ignorance is bliss": "Επειδή η άγνοια είναι ευτυχία",
|
||||
"Paste does not exist, has expired or has been deleted.": "Η επικόλληση δεν υπάρχει, έληξε ή διαγράφηκε",
|
||||
@ -212,7 +212,7 @@
|
||||
"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.": "Προσπαθώντας να συντομεύσει μια διεύθυνση URL που δεν δείχνει στην περίπτωσή μας.",
|
||||
"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.",
|
||||
"This secret message can only be displayed once. Would you like to see it now?": "Αυτό το μυστικό μήνυμα μπορεί να εμφανιστεί μόνο μία φορά. Θα θέλατε να το δείτε τώρα;",
|
||||
@ -220,6 +220,7 @@
|
||||
"Dark Mode": "Σκοτεινό Θέμα",
|
||||
"Error compressing paste, due to missing WebAssembly support.": "Σφάλμα συμπίεσης επικόλλησης, λόγω έλλειψης υποστήριξης WebAssembly.",
|
||||
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "Σφάλμα αποσυμπίεσης της επικόλλησης, ο περιηγητής σας δεν υποστηρίζει WebAssembly. Παρακαλούμε χρησιμοποιήστε έναν άλλο περιηγητή για να δείτε αυτή την επικόλληση.",
|
||||
"Start over": "Start over",
|
||||
"Paste copied to clipboard": "Paste copied to clipboard",
|
||||
"To copy paste press on the copy button or use the clipboard shortcut Ctrl+c/Cmd+c": "To copy paste press on the copy button or use the clipboard shortcut Ctrl+c/Cmd+c"
|
||||
}
|
||||
|
@ -220,6 +220,7 @@
|
||||
"Dark Mode": "Dark Mode",
|
||||
"Error compressing paste, due to missing WebAssembly support.": "Error compressing paste, due to missing WebAssembly support.",
|
||||
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.",
|
||||
"Start over": "Start over",
|
||||
"Paste copied to clipboard": "Paste copied to clipboard",
|
||||
"To copy paste press on the copy button or use the clipboard shortcut Ctrl+c/Cmd+c": "To copy paste press on the copy button or use the clipboard shortcut Ctrl+c/Cmd+c"
|
||||
}
|
||||
|
@ -220,6 +220,7 @@
|
||||
"Dark Mode": "Modo nocturno",
|
||||
"Error compressing paste, due to missing WebAssembly support.": "Error compressing paste, due to missing WebAssembly support.",
|
||||
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.",
|
||||
"Start over": "Start over",
|
||||
"Paste copied to clipboard": "Paste copied to clipboard",
|
||||
"To copy paste press on the copy button or use the clipboard shortcut Ctrl+c/Cmd+c": "To copy paste press on the copy button or use the clipboard shortcut Ctrl+c/Cmd+c"
|
||||
}
|
||||
|
@ -220,6 +220,7 @@
|
||||
"Dark Mode": "Tume režiim",
|
||||
"Error compressing paste, due to missing WebAssembly support.": "Error compressing paste, due to missing WebAssembly support.",
|
||||
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.",
|
||||
"Start over": "Start over",
|
||||
"Paste copied to clipboard": "Paste copied to clipboard",
|
||||
"To copy paste press on the copy button or use the clipboard shortcut Ctrl+c/Cmd+c": "To copy paste press on the copy button or use the clipboard shortcut Ctrl+c/Cmd+c"
|
||||
}
|
||||
|
@ -220,6 +220,7 @@
|
||||
"Dark Mode": "Tumma tila",
|
||||
"Error compressing paste, due to missing WebAssembly support.": "Error compressing paste, due to missing WebAssembly support.",
|
||||
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.",
|
||||
"Start over": "Start over",
|
||||
"Paste copied to clipboard": "Paste copied to clipboard",
|
||||
"To copy paste press on the copy button or use the clipboard shortcut Ctrl+c/Cmd+c": "To copy paste press on the copy button or use the clipboard shortcut Ctrl+c/Cmd+c"
|
||||
}
|
||||
|
@ -220,6 +220,7 @@
|
||||
"Dark Mode": "Mode Sombre",
|
||||
"Error compressing paste, due to missing WebAssembly support.": "Erreur lors de la compression du paste, en raison du support de WebAssembly manquant.",
|
||||
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "Erreur lors de la décompression du paste, votre navigateur ne supporte pas WebAssembly. Veuillez utiliser un autre navigateur pour voir ce paste.",
|
||||
"Start over": "Recommencer",
|
||||
"Paste copied to clipboard": "Paste copied to clipboard",
|
||||
"To copy paste press on the copy button or use the clipboard shortcut Ctrl+c/Cmd+c": "To copy paste press on the copy button or use the clipboard shortcut Ctrl+c/Cmd+c"
|
||||
}
|
||||
|
@ -220,6 +220,7 @@
|
||||
"Dark Mode": "Dark Mode",
|
||||
"Error compressing paste, due to missing WebAssembly support.": "Error compressing paste, due to missing WebAssembly support.",
|
||||
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.",
|
||||
"Start over": "Start over",
|
||||
"Paste copied to clipboard": "Paste copied to clipboard",
|
||||
"To copy paste press on the copy button or use the clipboard shortcut Ctrl+c/Cmd+c": "To copy paste press on the copy button or use the clipboard shortcut Ctrl+c/Cmd+c"
|
||||
}
|
||||
|
@ -220,6 +220,7 @@
|
||||
"Dark Mode": "Dark Mode",
|
||||
"Error compressing paste, due to missing WebAssembly support.": "Error compressing paste, due to missing WebAssembly support.",
|
||||
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.",
|
||||
"Start over": "Start over",
|
||||
"Paste copied to clipboard": "Paste copied to clipboard",
|
||||
"To copy paste press on the copy button or use the clipboard shortcut Ctrl+c/Cmd+c": "To copy paste press on the copy button or use the clipboard shortcut Ctrl+c/Cmd+c"
|
||||
}
|
||||
|
@ -220,6 +220,7 @@
|
||||
"Dark Mode": "Sötét mód",
|
||||
"Error compressing paste, due to missing WebAssembly support.": "Error compressing paste, due to missing WebAssembly support.",
|
||||
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.",
|
||||
"Start over": "Start over",
|
||||
"Paste copied to clipboard": "Paste copied to clipboard",
|
||||
"To copy paste press on the copy button or use the clipboard shortcut Ctrl+c/Cmd+c": "To copy paste press on the copy button or use the clipboard shortcut Ctrl+c/Cmd+c"
|
||||
}
|
||||
|
@ -220,6 +220,7 @@
|
||||
"Dark Mode": "Mode Gelap",
|
||||
"Error compressing paste, due to missing WebAssembly support.": "Error compressing paste, due to missing WebAssembly support.",
|
||||
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.",
|
||||
"Start over": "Start over",
|
||||
"Paste copied to clipboard": "Paste copied to clipboard",
|
||||
"To copy paste press on the copy button or use the clipboard shortcut Ctrl+c/Cmd+c": "To copy paste press on the copy button or use the clipboard shortcut Ctrl+c/Cmd+c"
|
||||
}
|
||||
|
@ -220,6 +220,7 @@
|
||||
"Dark Mode": "Tema Scuro",
|
||||
"Error compressing paste, due to missing WebAssembly support.": "Errore nella compressione dell messaggio, a causa del supporto WebAssembly mancante.",
|
||||
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "Errore nella decompressione dell messaggio, il tuo browser non supporta WebAssembly. Utilizza un altro browser per visualizzare questo messaggio.",
|
||||
"Start over": "Ricominciare",
|
||||
"Paste copied to clipboard": "Paste copied to clipboard",
|
||||
"To copy paste press on the copy button or use the clipboard shortcut Ctrl+c/Cmd+c": "To copy paste press on the copy button or use the clipboard shortcut Ctrl+c/Cmd+c"
|
||||
}
|
||||
|
@ -220,6 +220,7 @@
|
||||
"Dark Mode": "ダークモード",
|
||||
"Error compressing paste, due to missing WebAssembly support.": "Error compressing paste, due to missing WebAssembly support.",
|
||||
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.",
|
||||
"Start over": "Start over",
|
||||
"Paste copied to clipboard": "Paste copied to clipboard",
|
||||
"To copy paste press on the copy button or use the clipboard shortcut Ctrl+c/Cmd+c": "To copy paste press on the copy button or use the clipboard shortcut Ctrl+c/Cmd+c"
|
||||
}
|
||||
|
@ -220,6 +220,7 @@
|
||||
"Dark Mode": "Dark Mode",
|
||||
"Error compressing paste, due to missing WebAssembly support.": "Error compressing paste, due to missing WebAssembly support.",
|
||||
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.",
|
||||
"Start over": "Start over",
|
||||
"Paste copied to clipboard": "Paste copied to clipboard",
|
||||
"To copy paste press on the copy button or use the clipboard shortcut Ctrl+c/Cmd+c": "To copy paste press on the copy button or use the clipboard shortcut Ctrl+c/Cmd+c"
|
||||
}
|
||||
|
@ -220,6 +220,7 @@
|
||||
"Dark Mode": "Dark Mode",
|
||||
"Error compressing paste, due to missing WebAssembly support.": "Error compressing paste, due to missing WebAssembly support.",
|
||||
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.",
|
||||
"Start over": "Start over",
|
||||
"Paste copied to clipboard": "Paste copied to clipboard",
|
||||
"To copy paste press on the copy button or use the clipboard shortcut Ctrl+c/Cmd+c": "To copy paste press on the copy button or use the clipboard shortcut Ctrl+c/Cmd+c"
|
||||
}
|
||||
|
@ -220,6 +220,7 @@
|
||||
"Dark Mode": "جۆری ڕەش",
|
||||
"Error compressing paste, due to missing WebAssembly support.": "Error compressing paste, due to missing WebAssembly support.",
|
||||
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.",
|
||||
"Start over": "Start over",
|
||||
"Paste copied to clipboard": "Paste copied to clipboard",
|
||||
"To copy paste press on the copy button or use the clipboard shortcut Ctrl+c/Cmd+c": "To copy paste press on the copy button or use the clipboard shortcut Ctrl+c/Cmd+c"
|
||||
}
|
||||
|
@ -220,6 +220,7 @@
|
||||
"Dark Mode": "Dark Mode",
|
||||
"Error compressing paste, due to missing WebAssembly support.": "Error compressing paste, due to missing WebAssembly support.",
|
||||
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.",
|
||||
"Start over": "Start over",
|
||||
"Paste copied to clipboard": "Paste copied to clipboard",
|
||||
"To copy paste press on the copy button or use the clipboard shortcut Ctrl+c/Cmd+c": "To copy paste press on the copy button or use the clipboard shortcut Ctrl+c/Cmd+c"
|
||||
}
|
||||
|
@ -220,6 +220,7 @@
|
||||
"Dark Mode": "Tamsi veiksena",
|
||||
"Error compressing paste, due to missing WebAssembly support.": "Klaida glaudinant įdėjimą, nes trūksta WebAssembly palaikymo.",
|
||||
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "Klaida išglaudinant įdėjimą, jūsų naršyklė nepalaiko WebAssembly. Norėdami peržiūrėti šį įdėjimą, naudokite kitą naršyklę.",
|
||||
"Start over": "Start over",
|
||||
"Paste copied to clipboard": "Paste copied to clipboard",
|
||||
"To copy paste press on the copy button or use the clipboard shortcut Ctrl+c/Cmd+c": "To copy paste press on the copy button or use the clipboard shortcut Ctrl+c/Cmd+c"
|
||||
}
|
||||
|
@ -220,6 +220,7 @@
|
||||
"Dark Mode": "Donkere modus",
|
||||
"Error compressing paste, due to missing WebAssembly support.": "Fout bij het comprimeren van notitie door ontbrekende ondersteuning voor WebAssembly.",
|
||||
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "Fout bij het decomprimeren van de notitie, uw browser ondersteunt WebAssembly niet. Gebruik een andere browser om deze notitie te bekijken.",
|
||||
"Start over": "Start over",
|
||||
"Paste copied to clipboard": "Paste copied to clipboard",
|
||||
"To copy paste press on the copy button or use the clipboard shortcut Ctrl+c/Cmd+c": "To copy paste press on the copy button or use the clipboard shortcut Ctrl+c/Cmd+c"
|
||||
}
|
||||
|
@ -211,15 +211,16 @@
|
||||
"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.": "Din IP er ikke autorisert til å opprette advarsler.",
|
||||
"Your IP is not authorized to create pastes.": "Din IP er ikke autorisert til å opprette dokumenter.",
|
||||
"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 calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".": "Feil ved å besøke YOURLS. Sannsynligvis et konfigurasjonsproblem, eksempelvis feil eller mangler, med \"apiurl\" eller \"signatur\".",
|
||||
"Error parsing YOURLS response.": "Feil ved analyse av YOURLS svar.",
|
||||
"This secret message can only be displayed once. Would you like to see it now?": "Denne hemmelige meldingen kan bare vises én gang. Vil du se den nå?",
|
||||
"Yes, see it": "Ja, se det",
|
||||
"Dark Mode": "Mørk modus",
|
||||
"Error compressing paste, due to missing WebAssembly support.": "Error compressing paste, due to missing WebAssembly support.",
|
||||
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.",
|
||||
"Start over": "Start over",
|
||||
"Paste copied to clipboard": "Paste copied to clipboard",
|
||||
"To copy paste press on the copy button or use the clipboard shortcut Ctrl+c/Cmd+c": "To copy paste press on the copy button or use the clipboard shortcut Ctrl+c/Cmd+c"
|
||||
}
|
||||
|
11
i18n/oc.json
11
i18n/oc.json
@ -215,11 +215,12 @@
|
||||
"Trying to shorten a URL that isn't pointing at our instance.": "Ensag d’abracar una URL que mena pas a nòstra instància.",
|
||||
"Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".": "Error en cridant YOURLS. Es probablament un problèma de configuracion, quicòm coma « apirul » o « signature » marrit o absent.",
|
||||
"Error parsing YOURLS response.": "Error d'analisi de la responsa YOURLS.",
|
||||
"This secret message can only be displayed once. Would you like to see it now?": "This secret message can only be displayed once. Would you like to see it now?",
|
||||
"Yes, see it": "Yes, see it",
|
||||
"Dark Mode": "Dark Mode",
|
||||
"Error compressing paste, due to missing WebAssembly support.": "Error compressing paste, due to missing WebAssembly support.",
|
||||
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.",
|
||||
"This secret message can only be displayed once. Would you like to see it now?": "Aqueste messatge secrèt se pòt pas qu'afichar un còp. Lo volètz veire ara ?",
|
||||
"Yes, see it": "Òc, afichatz-lo",
|
||||
"Dark Mode": "Mòde escur",
|
||||
"Error compressing paste, due to missing WebAssembly support.": "Error al moment de la compression de l'empegatge, a causa de la manca de presa en carga de WebAssembly.",
|
||||
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "Error al moment de descompresar l'empegatge, vòstre navegador pren pas en carga WebAssembly. Mercés d'utilizar un autre navigador per visualizar aquesta pega.",
|
||||
"Start over": "Start over",
|
||||
"Paste copied to clipboard": "Paste copied to clipboard",
|
||||
"To copy paste press on the copy button or use the clipboard shortcut Ctrl+c/Cmd+c": "To copy paste press on the copy button or use the clipboard shortcut Ctrl+c/Cmd+c"
|
||||
}
|
||||
|
61
i18n/pl.json
61
i18n/pl.json
@ -167,7 +167,7 @@
|
||||
"Format": "Format",
|
||||
"Plain Text": "Czysty tekst",
|
||||
"Source Code": "Kod źródłowy",
|
||||
"Markdown": "Markdown",
|
||||
"Markdown": "Znakowanie",
|
||||
"Download attachment": "Pobierz załącznik",
|
||||
"Cloned: '%s'": "Sklonowano: '%s'",
|
||||
"The cloned file '%s' was attached to this paste.": "Sklonowany plik '%s' był dołączony do tej wklejki.",
|
||||
@ -181,7 +181,7 @@
|
||||
"Shorten URL": "Skróć adres URL",
|
||||
"Editor": "Edytować",
|
||||
"Preview": "Podgląd",
|
||||
"%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.",
|
||||
"%s requires the PATH to end in a \"%s\". Please update the PATH in your index.php.": "%s wymaga zmiennej PATH zakończonej w \"%s\". Zaktualizuj zmienną PATH w index.php.",
|
||||
"Decrypt": "Odszyfruj",
|
||||
"Enter password": "Wpisz hasło",
|
||||
"Loading…": "Wczytywanie…",
|
||||
@ -191,35 +191,36 @@
|
||||
"+++ no paste text +++": "+++ brak wklejonego tekstu +++",
|
||||
"Could not get paste data: %s": "Nie można było pobrać danych wklejki: %s",
|
||||
"QR code": "Kod QR",
|
||||
"This website is using an insecure HTTP connection! Please use it only for testing.": "This website is using an insecure HTTP connection! Please use it only for testing.",
|
||||
"For more information <a href=\"%s\">see this FAQ entry</a>.": "For more information <a href=\"%s\">see this FAQ entry</a>.",
|
||||
"Your browser may require an HTTPS connection to support the WebCrypto API. Try <a href=\"%s\">switching to HTTPS</a>.": "Your browser may require an HTTPS connection to support the WebCrypto API. Try <a href=\"%s\">switching to HTTPS</a>.",
|
||||
"Your browser doesn't support WebAssembly, used for zlib compression. You can create uncompressed documents, but can't read compressed ones.": "Your browser doesn't support WebAssembly, used for zlib compression. You can create uncompressed documents, but can't read compressed ones.",
|
||||
"waiting on user to provide a password": "waiting on user to provide a password",
|
||||
"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": "Retry",
|
||||
"Showing raw text…": "Showing raw text…",
|
||||
"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:",
|
||||
"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",
|
||||
"Close": "Close",
|
||||
"Encrypted note on %s": "Encrypted note on %s",
|
||||
"Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.",
|
||||
"URL shortener may expose your decrypt key in URL.": "URL shortener may expose your decrypt key in URL.",
|
||||
"Save paste": "Save paste",
|
||||
"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.",
|
||||
"This secret message can only be displayed once. Would you like to see it now?": "This secret message can only be displayed once. Would you like to see it now?",
|
||||
"Yes, see it": "Yes, see it",
|
||||
"This website is using an insecure HTTP connection! Please use it only for testing.": "Ta witryna używa niezabezpieczonego połączenia HTTP! Używaj jej wyłącznie do testowania.",
|
||||
"For more information <a href=\"%s\">see this FAQ entry</a>.": "Aby uzyskać więcej informacji, <a href=\"%s\">sprawdź to często zadawane pytanie</a>.",
|
||||
"Your browser may require an HTTPS connection to support the WebCrypto API. Try <a href=\"%s\">switching to HTTPS</a>.": "Twoja przeglądarka może wymagać połączenia HTTPS do obsługi API WebCrypto. Wypróbuj <a href=\"%s\">przełączenie na HTTPS</a>.",
|
||||
"Your browser doesn't support WebAssembly, used for zlib compression. You can create uncompressed documents, but can't read compressed ones.": "Twoja przeglądarka nie obsługuje WebAssembly używanego do kompresji zlib. Możesz utworzyć nieskompresowane dokumenty, ale nie możesz odczytać skompresowanych.",
|
||||
"waiting on user to provide a password": "oczekiwanie na podanie hasła przez użytkownika",
|
||||
"Could not decrypt data. Did you enter a wrong password? Retry with the button at the top.": "Błąd odszyfrowywania danych. Czy wprowadzono niepoprawne hasło? Spróbuj ponownie, używając przycisku na górze.",
|
||||
"Retry": "Ponów",
|
||||
"Showing raw text…": "Pokazywanie nieprzetworzonego tekstu…",
|
||||
"Notice:": "Uwaga:",
|
||||
"This link will expire after %s.": "Ten odnośnik wygaśnie po %s.",
|
||||
"This link can only be accessed once, do not use back or refresh button in your browser.": "Tego odnośnika można użyć tylko jeden raz. Nie cofaj ani nie odświeżaj strony w przeglądarce.",
|
||||
"Link:": "Odnośnik:",
|
||||
"Recipient may become aware of your timezone, convert time to UTC?": "Odbiorca może uzyskać informację o twojej strefie czasowej. Zamienić czas na UTC?",
|
||||
"Use Current Timezone": "Użyj bieżącej strefy czasowej",
|
||||
"Convert To UTC": "Zamień na UTC",
|
||||
"Close": "Zamknij",
|
||||
"Encrypted note on %s": "Zaszyfrowana notatka na %s",
|
||||
"Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Naciśnij tej odnośnik, aby zobaczyć notatkę. Każda osoba z dostępem do tego adresu URL również może zobaczyć tę notatkę.",
|
||||
"URL shortener may expose your decrypt key in URL.": "Skrócenie adresu URL może ujawnić Twój klucz odszyfrowujący w adresie URL.",
|
||||
"Save paste": "Zapisz wklejenie",
|
||||
"Your IP is not authorized to create pastes.": "Twój adres IP nie jest upoważniony do tworzenia wklejeń.",
|
||||
"Trying to shorten a URL that isn't pointing at our instance.": "Próba skrócenia adresu URL wskazującego na inną instancję.",
|
||||
"Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".": "Błąd wywoływania YOURLS. Możliwy błąd konfiguracji, taki jak błędne lub brakujące \"apiurl\" lub \"signature\".",
|
||||
"Error parsing YOURLS response.": "Błąd przetwarzania odpowiedzi YOURLS.",
|
||||
"This secret message can only be displayed once. Would you like to see it now?": "Tę tajną wiadomość możesz zobaczyć tylko jeden raz. Czy chcesz to zrobić teraz?",
|
||||
"Yes, see it": "Tak, pokaż",
|
||||
"Dark Mode": "Ciemny motyw",
|
||||
"Error compressing paste, due to missing WebAssembly support.": "Error compressing paste, due to missing WebAssembly support.",
|
||||
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.",
|
||||
"Error compressing paste, due to missing WebAssembly support.": "Błąd kompresowania wklejenia przez brak obsługi WebAssembly.",
|
||||
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "Błąd dekompresowania wklejenia przez brak obsługi WebAssembly przez przeglądarkę. Użyj innej przeglądarki, aby zobaczyć to wklejenie.",
|
||||
"Start over": "Start over",
|
||||
"Paste copied to clipboard": "Paste copied to clipboard",
|
||||
"To copy paste press on the copy button or use the clipboard shortcut Ctrl+c/Cmd+c": "To copy paste press on the copy button or use the clipboard shortcut Ctrl+c/Cmd+c"
|
||||
}
|
||||
|
@ -220,6 +220,7 @@
|
||||
"Dark Mode": "Modo Noturno",
|
||||
"Error compressing paste, due to missing WebAssembly support.": "Error compressing paste, due to missing WebAssembly support.",
|
||||
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.",
|
||||
"Start over": "Start over",
|
||||
"Paste copied to clipboard": "Paste copied to clipboard",
|
||||
"To copy paste press on the copy button or use the clipboard shortcut Ctrl+c/Cmd+c": "To copy paste press on the copy button or use the clipboard shortcut Ctrl+c/Cmd+c"
|
||||
}
|
||||
|
@ -220,6 +220,7 @@
|
||||
"Dark Mode": "Mod întunecat",
|
||||
"Error compressing paste, due to missing WebAssembly support.": "Eroare la compresia paste-ului din cauza incompatibilității cu WebAssembly.",
|
||||
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "Eroare la deschiderea paste-ului, browserul dvs. nu acceptă WebAssembly. Vă rugăm să utilizați un alt browser pentru a vedea acest paste.",
|
||||
"Start over": "Start over",
|
||||
"Paste copied to clipboard": "Paste copied to clipboard",
|
||||
"To copy paste press on the copy button or use the clipboard shortcut Ctrl+c/Cmd+c": "To copy paste press on the copy button or use the clipboard shortcut Ctrl+c/Cmd+c"
|
||||
}
|
||||
|
@ -220,6 +220,7 @@
|
||||
"Dark Mode": "Тёмная",
|
||||
"Error compressing paste, due to missing WebAssembly support.": "Error compressing paste, due to missing WebAssembly support.",
|
||||
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.",
|
||||
"Start over": "Start over",
|
||||
"Paste copied to clipboard": "Запись скопирована в буфер обмена",
|
||||
"To copy paste press on the copy button or use the clipboard shortcut Ctrl+c/Cmd+c": "Чтобы скопировать запись нажмите на кнопку скопирования или используйте комбинацию клавиш Ctrl+c/Cmd+c"
|
||||
}
|
||||
|
@ -220,6 +220,7 @@
|
||||
"Dark Mode": "Tmavý Režim",
|
||||
"Error compressing paste, due to missing WebAssembly support.": "Error compressing paste, due to missing WebAssembly support.",
|
||||
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.",
|
||||
"Start over": "Start over",
|
||||
"Paste copied to clipboard": "Paste copied to clipboard",
|
||||
"To copy paste press on the copy button or use the clipboard shortcut Ctrl+c/Cmd+c": "To copy paste press on the copy button or use the clipboard shortcut Ctrl+c/Cmd+c"
|
||||
}
|
||||
|
@ -220,6 +220,7 @@
|
||||
"Dark Mode": "Temni način",
|
||||
"Error compressing paste, due to missing WebAssembly support.": "Error compressing paste, due to missing WebAssembly support.",
|
||||
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.",
|
||||
"Start over": "Start over",
|
||||
"Paste copied to clipboard": "Paste copied to clipboard",
|
||||
"To copy paste press on the copy button or use the clipboard shortcut Ctrl+c/Cmd+c": "To copy paste press on the copy button or use the clipboard shortcut Ctrl+c/Cmd+c"
|
||||
}
|
||||
|
@ -220,6 +220,7 @@
|
||||
"Dark Mode": "Mörkt Läge",
|
||||
"Error compressing paste, due to missing WebAssembly support.": "Error compressing paste, due to missing WebAssembly support.",
|
||||
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.",
|
||||
"Start over": "Start over",
|
||||
"Paste copied to clipboard": "Paste copied to clipboard",
|
||||
"To copy paste press on the copy button or use the clipboard shortcut Ctrl+c/Cmd+c": "To copy paste press on the copy button or use the clipboard shortcut Ctrl+c/Cmd+c"
|
||||
}
|
||||
|
11
i18n/th.json
11
i18n/th.json
@ -215,11 +215,12 @@
|
||||
"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\".": "เกิดข้อผิดพลาดในการเรียก YOURLS อาจเป็นปัญหามาจากการกำหนดค่า เช่น \"apiurl\" หรือ \"signature\" ไม่ถูกต้องหรือขาดหายไป",
|
||||
"Error parsing YOURLS response.": "เกิดข้อผิดพลาดในการแยกวิเคราะห์การตอบสนองของ YOURLS",
|
||||
"This secret message can only be displayed once. Would you like to see it now?": "This secret message can only be displayed once. Would you like to see it now?",
|
||||
"Yes, see it": "Yes, see it",
|
||||
"Dark Mode": "โหมดมืด",
|
||||
"Error compressing paste, due to missing WebAssembly support.": "Error compressing paste, due to missing WebAssembly support.",
|
||||
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.",
|
||||
"This secret message can only be displayed once. Would you like to see it now?": "ข้อความลับนี้จะแสดงได้เพียงครั้งเดียวเท่านั้น คุณต้องการดูข้อความนี้ตอนนี้เลยใช่หรือไม่",
|
||||
"Yes, see it": "ใช่ ดูเลย",
|
||||
"Dark Mode": "โหมดสีเข้ม",
|
||||
"Error compressing paste, due to missing WebAssembly support.": "ไม่สามารถบีบอัดข้อมูลที่คุณต้องการฝากโค้ดได้ เนื่องจากอุปกรณ์ของคุณขาดการรองรับ WebAssembly",
|
||||
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "ไม่สามารถอ่านข้อมูลที่คุณได้ฝากโค้ดไว้ เบราว์เซอร์ของคุณไม่รองรับ WebAssembly กรุณาลองเปลี่ยนใช้เบราว์เซอร์ตัวอื่นเพื่อดูการฝากโค้ดนี้อีกครั้ง",
|
||||
"Start over": "เริ่มใหม่",
|
||||
"Paste copied to clipboard": "Paste copied to clipboard",
|
||||
"To copy paste press on the copy button or use the clipboard shortcut Ctrl+c/Cmd+c": "To copy paste press on the copy button or use the clipboard shortcut Ctrl+c/Cmd+c"
|
||||
}
|
||||
|
53
i18n/tr.json
53
i18n/tr.json
@ -69,7 +69,7 @@
|
||||
],
|
||||
"%d weeks": [
|
||||
"%d hafta",
|
||||
"%d haftalar",
|
||||
"%d hafta",
|
||||
"%d hafta",
|
||||
"%d hafta",
|
||||
"%d hafta",
|
||||
@ -92,7 +92,7 @@
|
||||
"%d yıl"
|
||||
],
|
||||
"Never": "Asla",
|
||||
"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.",
|
||||
"Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service.": "Not: Bu bir test hizmetidir: Veriler herhangi bir zamanda silinebilir. Bu hizmeti kötüye kullanırsanız, kedicikler ölebilir.",
|
||||
"This document will expire in %d seconds.": [
|
||||
"Bu belge %d saniyede silinecektir.",
|
||||
"Bu belge %d saniyede silinecektir.",
|
||||
@ -172,54 +172,55 @@
|
||||
"Cloned: '%s'": "Klonlandı: '%s'",
|
||||
"The cloned file '%s' was attached to this paste.": "Klonlanmış dosya '%s' bu yazıya eklendi.",
|
||||
"Attach a file": "Dosya ekle",
|
||||
"alternatively drag & drop a file or paste an image from the clipboard": "alternatif olarak dosyasyı yapıştırabilir veya sürükleyip bırakabilirsin",
|
||||
"alternatively drag & drop a file or paste an image from the clipboard": "alternatif olarak dosyayı yapıştırabilir veya sürükleyip bırakabilirsiniz",
|
||||
"File too large, to display a preview. Please download the attachment.": "Dosya önizleme için çok büyük. Lütfen eki indirin.",
|
||||
"Remove attachment": "Eki sil",
|
||||
"Your browser does not support uploading encrypted files. Please use a newer browser.": "Tarayıcınız şifreli dosyaları desteklemiyor.",
|
||||
"Your browser does not support uploading encrypted files. Please use a newer browser.": "Tarayıcınız şifreli dosyaları yüklemeyi desteklemiyor. Lütfen daha yeni bir tarayıcı kullanın.",
|
||||
"Invalid attachment.": "Geçersiz ek.",
|
||||
"Options": "Seçenekler",
|
||||
"Shorten URL": "URL kısaltma",
|
||||
"Editor": "Düzenleyici",
|
||||
"Preview": "Ön izleme",
|
||||
"%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.",
|
||||
"%s requires the PATH to end in a \"%s\". Please update the PATH in your index.php.": "%s, PATH'in \"%s\" ile bitmesini gerektirir. Lütfen index.php dosyanızdaki PATH'i güncelleyin.",
|
||||
"Decrypt": "Şifreyi çöz",
|
||||
"Enter password": "Şifreyi girin",
|
||||
"Loading…": "Yükleniyor…",
|
||||
"Decrypting paste…": "Yazı şifresi çözülüyor…",
|
||||
"Preparing new paste…": "Yeni yazı hazırlanıyor…",
|
||||
"In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.": "In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.",
|
||||
"In case this message never disappears please have a look at <a href=\"%s\">this FAQ for information to troubleshoot</a>.": "Bu mesaj hiç kaybolmazsa, sorun giderme bilgileri için <a href=\"%s\">bu SSS'ye göz atın</a>.",
|
||||
"+++ no paste text +++": "+++ yazı içeriği yok +++",
|
||||
"Could not get paste data: %s": "Yazı verisi alınamıyor: %s",
|
||||
"QR code": "QR kodu",
|
||||
"This website is using an insecure HTTP connection! Please use it only for testing.": "This website is using an insecure HTTP connection! Please use it only for testing.",
|
||||
"For more information <a href=\"%s\">see this FAQ entry</a>.": "For more information <a href=\"%s\">see this FAQ entry</a>.",
|
||||
"Your browser may require an HTTPS connection to support the WebCrypto API. Try <a href=\"%s\">switching to HTTPS</a>.": "Your browser may require an HTTPS connection to support the WebCrypto API. Try <a href=\"%s\">switching to HTTPS</a>.",
|
||||
"Your browser doesn't support WebAssembly, used for zlib compression. You can create uncompressed documents, but can't read compressed ones.": "Your browser doesn't support WebAssembly, used for zlib compression. You can create uncompressed documents, but can't read compressed ones.",
|
||||
"waiting on user to provide a password": "waiting on user to provide a password",
|
||||
"Could not decrypt data. Did you enter a wrong password? Retry with the button at the top.": "Dosya şifresi çözülemedi, doğru şifreyi kullandığınıza emin misiniz? Üstteki buton ile tekrar deneyin.",
|
||||
"This website is using an insecure HTTP connection! Please use it only for testing.": "Bu web sitesi güvensiz bir HTTP bağlantısı kullanıyor! Lütfen bunu yalnızca test için kullanın.",
|
||||
"For more information <a href=\"%s\">see this FAQ entry</a>.": "Daha fazla bilgi için <a href=\"%s\">bu SSS girişine bakın</a>.",
|
||||
"Your browser may require an HTTPS connection to support the WebCrypto API. Try <a href=\"%s\">switching to HTTPS</a>.": "Tarayıcınızın WebCrypto API'sini desteklemesi için HTTPS bağlantısına ihtiyacı olabilir. <a href=\"%s\">HTTPS'ye geçmeyi deneyin</a>.",
|
||||
"Your browser doesn't support WebAssembly, used for zlib compression. You can create uncompressed documents, but can't read compressed ones.": "Tarayıcınız zlib sıkıştırma için kullanılan WebAssembly'i desteklemiyor. Sıkıştırılmamış belgeler oluşturabilirsiniz, ancak sıkıştırılmış olanları okuyamazsınız.",
|
||||
"waiting on user to provide a password": "kullanıcının şifre girmesi bekleniyor",
|
||||
"Could not decrypt data. Did you enter a wrong password? Retry with the button at the top.": "Şifre çözülemedi, yanlış şifre mi girdiniz? Üstteki butonla tekrar deneyin.",
|
||||
"Retry": "Yeniden Dene",
|
||||
"Showing raw text…": "Açık yazı gösteriliyor…",
|
||||
"Notice:": "Bildirim:",
|
||||
"This link will expire after %s.": "Bu bağlantı şu kadar zaman sonra etkisiz kalacaktır: %s.",
|
||||
"This link can only be accessed once, do not use back or refresh button in your browser.": "Bu bağlantı sadece bir kere erişilebilir, lütfen sayfayı yenilemeyiniz.",
|
||||
"This link will expire after %s.": "Bu bağlantı %s sonra geçersiz hale gelecektir.",
|
||||
"This link can only be accessed once, do not use back or refresh button in your browser.": "Bu bağlantıya yalnızca bir kez erişilebilir, tarayıcınızda geri veya yenile butonunu kullanmayın.",
|
||||
"Link:": "Bağlantı:",
|
||||
"Recipient may become aware of your timezone, convert time to UTC?": "Alıcı zaman dilmini öğrenebilir, zaman dilimini UTC'ye çevirmek ister misin?",
|
||||
"Use Current Timezone": "Şuanki zaman dilimini kullan",
|
||||
"Convert To UTC": "UTC zaman dilimine çevir",
|
||||
"Recipient may become aware of your timezone, convert time to UTC?": "Alıcı zaman diliminizi öğrenebilir, zamanı UTC'ye çevirmek ister misiniz?",
|
||||
"Use Current Timezone": "Mevcut Zaman Dilimini Kullan",
|
||||
"Convert To UTC": "UTC'ye Dönüştür",
|
||||
"Close": "Kapat",
|
||||
"Encrypted note on %s": "%s üzerinde şifrelenmiş not",
|
||||
"Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Notu görmek için bu bağlantıyı ziyaret et. Bağlantıya sahip olan birisi notu görebilir.",
|
||||
"URL shortener may expose your decrypt key in URL.": "URL kısaltıcı şifreleme anahtarınızı URL içerisinde gösterebilir.",
|
||||
"Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Notu görmek için bu bağlantıyı ziyaret edin. URL'yi birine vermek, onların da nota erişmesini sağlar.",
|
||||
"URL shortener may expose your decrypt key in URL.": "URL kısaltıcı, şifre çözme anahtarınızı URL içinde gösterebilir.",
|
||||
"Save paste": "Yazıyı kaydet",
|
||||
"Your IP is not authorized to create pastes.": "IP adresinizin yazı oluşturmaya yetkisi yoktur.",
|
||||
"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.",
|
||||
"This secret message can only be displayed once. Would you like to see it now?": "This secret message can only be displayed once. Would you like to see it now?",
|
||||
"Yes, see it": "Evet, görüyorum",
|
||||
"Trying to shorten a URL that isn't pointing at our instance.": "URL'yi kısaltmaya çalışırken, bizim sunucumuza işaret etmeyen bir URL kullanıyorsunuz.",
|
||||
"Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".": "YOURLS çağrısı başarısız oldu. Muhtemelen \"apiurl\" veya \"signature\" gibi yanlış veya eksik yapılandırma hatası.",
|
||||
"Error parsing YOURLS response.": "YOURLS yanıtı ayrıştırılamadı.",
|
||||
"This secret message can only be displayed once. Would you like to see it now?": "Bu gizli mesaj yalnızca bir kez görüntülenebilir. Şimdi görmek ister misiniz?",
|
||||
"Yes, see it": "Evet, gör",
|
||||
"Dark Mode": "Koyu Mod",
|
||||
"Error compressing paste, due to missing WebAssembly support.": "Error compressing paste, due to missing WebAssembly support.",
|
||||
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.",
|
||||
"Error compressing paste, due to missing WebAssembly support.": "WebAssembly desteği eksik olduğundan yazı sıkıştırılamadı.",
|
||||
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "Yazı açılırken hata oluştu, tarayıcınız WebAssembly'i desteklemiyor. Lütfen bu yazıyı görüntülemek için başka bir tarayıcı kullanın.",
|
||||
"Start over": "Baştan başla",
|
||||
"Paste copied to clipboard": "Paste copied to clipboard",
|
||||
"To copy paste press on the copy button or use the clipboard shortcut Ctrl+c/Cmd+c": "To copy paste press on the copy button or use the clipboard shortcut Ctrl+c/Cmd+c"
|
||||
}
|
||||
|
19
i18n/uk.json
19
i18n/uk.json
@ -1,6 +1,6 @@
|
||||
{
|
||||
"PrivateBin": "PrivateBin",
|
||||
"%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s це мінімалістичний Open Source проєкт для створення нотаток, де сервер не знає нічого про дані, що зберігаються. Дані шифруються/розшифровуються %sу переглядачі%s з використанням 256-бітного шифрувания AES.",
|
||||
"%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s це мінімалістичний Open Source проєкт для створення нотаток, де сервер не знає нічого про дані, що зберігаються. Дані шифруються/розшифровуються %sу браузері%s з використанням 256-бітного шифрування AES.",
|
||||
"More information on the <a href=\"https://privatebin.info/\">project page</a>.": "Подробиці можна дізнатися на <a href=\"https://privatebin.info/\">сайті проєкту</a>.",
|
||||
"Because ignorance is bliss": "Бо незнання - благо",
|
||||
"Paste does not exist, has expired or has been deleted.": "Допис не існує, протермінований чи був видалений.",
|
||||
@ -16,15 +16,15 @@
|
||||
],
|
||||
"Paste is limited to %s of encrypted data.": "Розмір допису обмежений %s зашифрованих даних.",
|
||||
"Invalid data.": "Неправильні дані.",
|
||||
"You are unlucky. Try again.": "Вам не пощастило. Спробуйте ще раз.",
|
||||
"You are unlucky. Try again.": "Якась халепа! Спробуйте ще раз.",
|
||||
"Error saving comment. Sorry.": "Помилка при збереженні коментаря. Вибачте.",
|
||||
"Error saving paste. Sorry.": "Помилка при збереженні допису. Вибачте.",
|
||||
"Invalid paste ID.": "Неправильний ID допису.",
|
||||
"Paste is not of burn-after-reading type.": "Тип допису не \"Знищити після прочитання\".",
|
||||
"Wrong deletion token. Paste was not deleted.": "Неправильний ключ вилучення допису. Допис не вилучено.",
|
||||
"Wrong deletion token. Paste was not deleted.": "Неправильний жетон вилучення допису. Допис не вилучено.",
|
||||
"Paste was properly deleted.": "Допис був вилучений повністю.",
|
||||
"JavaScript is required for %s to work. Sorry for the inconvenience.": "Для роботи %s потрібен увімкнутий JavaScript. Вибачте.",
|
||||
"%s requires a modern browser to work.": "Для роботи %s потрібен більш сучасний переглядач.",
|
||||
"%s requires a modern browser to work.": "Для роботи %s потрібен більш сучасний браузер.",
|
||||
"New": "Новий допис",
|
||||
"Create": "Створити",
|
||||
"Clone": "Дублювати",
|
||||
@ -36,8 +36,8 @@
|
||||
"Discussion": "Обговорення",
|
||||
"Toggle navigation": "Перемкнути навігацію",
|
||||
"%d seconds": [
|
||||
"%d секунду",
|
||||
"%d секунди",
|
||||
"%d секунд",
|
||||
"%d секунд",
|
||||
"%d секунд",
|
||||
"%d секунд",
|
||||
"%d секунд",
|
||||
@ -134,7 +134,7 @@
|
||||
"Документ буде вилучений через %d місяців."
|
||||
],
|
||||
"Please enter the password for this paste:": "Будь ласка, введіть пароль від допису:",
|
||||
"Could not decrypt data (Wrong key?)": "Неможливо розшифрувати дані (Неправильний ключ?)",
|
||||
"Could not decrypt data (Wrong key?)": "Неможливо розшифрувати дані (можливо, невірний ключ?)",
|
||||
"Could not delete the paste, it was not stored in burn after reading mode.": "Неможливо вилучити допис, він не був збережений в режимі знищити після прочитання.",
|
||||
"FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.": "ЛИШЕ ДЛЯ ВАШИХ ОЧЕЙ. Не закривайте це вікно, це повідомлення не може бути показано знову.",
|
||||
"Could not decrypt comment; Wrong key?": "Неможливо розшифрувати коментар; Неправильний ключ?",
|
||||
@ -166,7 +166,7 @@
|
||||
"YiB": "Йбайт",
|
||||
"Format": "Формат",
|
||||
"Plain Text": "Звичайний текст",
|
||||
"Source Code": "Джерельний код",
|
||||
"Source Code": "Вихідний код",
|
||||
"Markdown": "Мова розмітки",
|
||||
"Download attachment": "Звантажити прикріплений файл",
|
||||
"Cloned: '%s'": "Дубльовано: '%s'",
|
||||
@ -219,7 +219,8 @@
|
||||
"Yes, see it": "Так, побачити",
|
||||
"Dark Mode": "Темний режим",
|
||||
"Error compressing paste, due to missing WebAssembly support.": "Помилка при стисканні допису, через відсутність підтримки WebAssembly сервера.",
|
||||
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "Помилка при розпакуванні допису, бо ваш браузер не підтримує WebAssembly. Будь ласка, відкрийте інший браузер для перегляду цього допису.",
|
||||
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "Помилка при розпакуванні допису, бо ваш браузер не підтримує WebAssembly. Будь ласка, відкрийте в іншому браузері для перегляду цього допису.",
|
||||
"Start over": "Почати знову",
|
||||
"Paste copied to clipboard": "Paste copied to clipboard",
|
||||
"To copy paste press on the copy button or use the clipboard shortcut Ctrl+c/Cmd+c": "To copy paste press on the copy button or use the clipboard shortcut Ctrl+c/Cmd+c"
|
||||
}
|
||||
|
@ -218,8 +218,9 @@
|
||||
"This secret message can only be displayed once. Would you like to see it now?": "读取粘贴后只能在加载时显示一次。您想现在打开吗?",
|
||||
"Yes, see it": "是的,加载它",
|
||||
"Dark Mode": "暗黑模式",
|
||||
"Error compressing paste, due to missing WebAssembly support.": "Error compressing paste, due to missing WebAssembly support.",
|
||||
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.",
|
||||
"Error compressing paste, due to missing WebAssembly support.": "由于缺少 WebAssembly 支持,在压缩粘贴时出错。",
|
||||
"Error decompressing paste, your browser does not support WebAssembly. Please use another browser to view this paste.": "解压粘贴时出错,您的浏览器不支持 WebAssembly。请使用其他浏览器查看此粘贴。",
|
||||
"Start over": "重新开始",
|
||||
"Paste copied to clipboard": "Paste copied to clipboard",
|
||||
"To copy paste press on the copy button or use the clipboard shortcut Ctrl+c/Cmd+c": "To copy paste press on the copy button or use the clipboard shortcut Ctrl+c/Cmd+c"
|
||||
}
|
||||
|
@ -17,7 +17,7 @@ require('./prettify');
|
||||
global.prettyPrint = window.PR.prettyPrint;
|
||||
global.prettyPrintOne = window.PR.prettyPrintOne;
|
||||
global.showdown = require('./showdown-2.1.0');
|
||||
global.DOMPurify = require('./purify-3.1.6');
|
||||
global.DOMPurify = require('./purify-3.1.7');
|
||||
global.baseX = require('./base-x-4.0.0').baseX;
|
||||
global.Legacy = require('./legacy').Legacy;
|
||||
require('./bootstrap-3.4.1');
|
||||
|
19
js/legacy.js
19
js/legacy.js
@ -6,7 +6,6 @@
|
||||
* @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.3.1
|
||||
* @name Legacy
|
||||
* @namespace
|
||||
*/
|
||||
@ -175,18 +174,6 @@
|
||||
)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
// async & ES6 support
|
||||
try {
|
||||
eval('async () => {}');
|
||||
} catch (e) {
|
||||
if (e instanceof SyntaxError) {
|
||||
return true;
|
||||
} else {
|
||||
throw e; // throws CSP error
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -238,7 +225,7 @@
|
||||
{
|
||||
return init;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* returns the current status of the check
|
||||
*
|
||||
@ -250,7 +237,7 @@
|
||||
{
|
||||
return status;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* init on application start, returns an all-clear signal
|
||||
*
|
||||
@ -308,4 +295,4 @@
|
||||
this.Legacy = {
|
||||
Check: Check
|
||||
};
|
||||
}).call(this);
|
||||
}).call(this);
|
||||
|
8
js/package-lock.json
generated
8
js/package-lock.json
generated
@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "privatebin",
|
||||
"version": "1.7.4",
|
||||
"version": "1.7.5",
|
||||
"lockfileVersion": 2,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "privatebin",
|
||||
"version": "1.7.4",
|
||||
"version": "1.7.5",
|
||||
"license": "zlib-acknowledgement",
|
||||
"devDependencies": {
|
||||
"@peculiar/webcrypto": "^1.1.1",
|
||||
@ -49,7 +49,7 @@
|
||||
"@peculiar/json-schema": "^1.1.12",
|
||||
"pvtsutils": "^1.3.2",
|
||||
"tslib": "^2.4.0",
|
||||
"webcrypto-core": "^1.7.4"
|
||||
"webcrypto-core": "^1.7.5"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=10.12.0"
|
||||
@ -1012,7 +1012,7 @@
|
||||
"@peculiar/json-schema": "^1.1.12",
|
||||
"pvtsutils": "^1.3.2",
|
||||
"tslib": "^2.4.0",
|
||||
"webcrypto-core": "^1.7.4"
|
||||
"webcrypto-core": "^1.7.5"
|
||||
}
|
||||
},
|
||||
"abab": {
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "privatebin",
|
||||
"version": "1.7.4",
|
||||
"version": "1.7.5",
|
||||
"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": {
|
||||
|
@ -3988,7 +3988,7 @@ jQuery.PrivateBin = (function($, RawDeflate) {
|
||||
}
|
||||
emailBody += I18n._('Link:');
|
||||
emailBody += EOL;
|
||||
emailBody += $('#pasteurl').attr('href'); // might have been shortened
|
||||
emailBody += $('#pasteurl').attr('href') || window.location.href; // href is tried first as it might have been shortened
|
||||
return emailBody;
|
||||
}
|
||||
|
||||
@ -5763,8 +5763,11 @@ jQuery.PrivateBin = (function($, RawDeflate) {
|
||||
me.initZ();
|
||||
|
||||
// if delete token is passed (i.e. paste has been deleted by this
|
||||
// access), there is nothing more to do
|
||||
// access), add an event listener for the 'new' paste button in the alert
|
||||
if (Model.hasDeleteToken()) {
|
||||
$("#new-from-alert").on("click", function () {
|
||||
UiHelper.reloadHome();
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
|
File diff suppressed because one or more lines are too long
2
js/purify-3.1.7.js
Normal file
2
js/purify-3.1.7.js
Normal file
File diff suppressed because one or more lines are too long
@ -1,6 +1,6 @@
|
||||
'use strict';
|
||||
|
||||
(function() {
|
||||
(function () {
|
||||
let ret;
|
||||
|
||||
async function initialize() {
|
||||
@ -23,16 +23,7 @@
|
||||
_abort: errno => { console.error(`Error: ${errno}`) },
|
||||
_grow: () => { },
|
||||
};
|
||||
|
||||
let buff;
|
||||
if (typeof fs === 'object') {
|
||||
buff = fs.readFileSync('zlib-1.3.1.wasm');
|
||||
} else {
|
||||
const resp = await fetch('js/zlib-1.3.1.wasm');
|
||||
buff = await resp.arrayBuffer();
|
||||
}
|
||||
const module = await WebAssembly.compile(buff);
|
||||
const ins = await WebAssembly.instantiate(module, { env });
|
||||
const ins = (await WebAssembly.instantiateStreaming(fetch('js/zlib-1.3.1.wasm'), { env })).instance;
|
||||
|
||||
const srcPtr = ins.exports._malloc(CHUNK_SIZE);
|
||||
const dstPtr = ins.exports._malloc(CHUNK_SIZE);
|
||||
@ -116,28 +107,28 @@
|
||||
}
|
||||
|
||||
ret = {
|
||||
inflate(rawDeflateBuffer) {
|
||||
const rawInf = new RawInf();
|
||||
for (let offset = 0; offset < rawDeflateBuffer.length; offset += CHUNK_SIZE) {
|
||||
const end = Math.min(offset + CHUNK_SIZE, rawDeflateBuffer.length);
|
||||
const chunk = rawDeflateBuffer.subarray(offset, end);
|
||||
rawInf.inflate(chunk);
|
||||
}
|
||||
const ret = rawInf.getBuffer();
|
||||
rawInf.destroy();
|
||||
return ret;
|
||||
},
|
||||
deflate(rawInflateBuffer) {
|
||||
const rawDef = new RawDef();
|
||||
for (let offset = 0; offset < rawInflateBuffer.length; offset += CHUNK_SIZE) {
|
||||
const end = Math.min(offset + CHUNK_SIZE, rawInflateBuffer.length);
|
||||
const chunk = rawInflateBuffer.subarray(offset, end);
|
||||
rawDef.deflate(chunk, rawInflateBuffer.length <= offset + CHUNK_SIZE);
|
||||
}
|
||||
const ret = rawDef.getBuffer();
|
||||
rawDef.destroy();
|
||||
return ret;
|
||||
},
|
||||
inflate(rawDeflateBuffer) {
|
||||
const rawInf = new RawInf();
|
||||
for (let offset = 0; offset < rawDeflateBuffer.length; offset += CHUNK_SIZE) {
|
||||
const end = Math.min(offset + CHUNK_SIZE, rawDeflateBuffer.length);
|
||||
const chunk = rawDeflateBuffer.subarray(offset, end);
|
||||
rawInf.inflate(chunk);
|
||||
}
|
||||
const ret = rawInf.getBuffer();
|
||||
rawInf.destroy();
|
||||
return ret;
|
||||
},
|
||||
deflate(rawInflateBuffer) {
|
||||
const rawDef = new RawDef();
|
||||
for (let offset = 0; offset < rawInflateBuffer.length; offset += CHUNK_SIZE) {
|
||||
const end = Math.min(offset + CHUNK_SIZE, rawInflateBuffer.length);
|
||||
const chunk = rawInflateBuffer.subarray(offset, end);
|
||||
rawDef.deflate(chunk, rawInflateBuffer.length <= offset + CHUNK_SIZE);
|
||||
}
|
||||
const ret = rawDef.getBuffer();
|
||||
rawDef.destroy();
|
||||
return ret;
|
||||
},
|
||||
}
|
||||
|
||||
return ret;
|
||||
|
@ -54,7 +54,7 @@ class Configuration
|
||||
'qrcode' => true,
|
||||
'email' => true,
|
||||
'icon' => 'identicon',
|
||||
'cspheader' => 'default-src \'none\'; base-uri \'self\'; form-action \'none\'; manifest-src \'self\'; connect-src * blob:; script-src \'self\' \'unsafe-eval\'; style-src \'self\'; font-src \'self\'; frame-ancestors \'none\'; img-src \'self\' data: blob:; media-src blob:; object-src blob:; sandbox allow-same-origin allow-scripts allow-forms allow-popups allow-modals allow-downloads',
|
||||
'cspheader' => 'default-src \'none\'; base-uri \'self\'; form-action \'none\'; manifest-src \'self\'; connect-src * blob:; script-src \'self\' \'wasm-unsafe-eval\'; style-src \'self\'; font-src \'self\'; frame-ancestors \'none\'; img-src \'self\' data: blob:; media-src blob:; object-src blob:; sandbox allow-same-origin allow-scripts allow-forms allow-popups allow-modals allow-downloads',
|
||||
'zerobincompatibility' => false,
|
||||
'httpwarning' => true,
|
||||
'compression' => 'zlib',
|
||||
@ -106,13 +106,13 @@ class Configuration
|
||||
'js/dark-mode-switch.js' => 'sha512-CCbdHdeWDbDO7aqFFmhgnvFESzaILHbUYmbhNjTpcjyO/XYdouQ9Pw8W9rpV8oJT1TsK5FbwSHU1oazmnb7BWA==',
|
||||
'js/jquery-3.7.1.js' => 'sha512-v2CJ7UaYy4JwqLDIrZUI/4hqeoQieOmAZNXBeQyjo21dadnwR+8ZaIJVT8EE2iyI61OV8e6M8PP2/4hpQINQ/g==',
|
||||
'js/kjua-0.9.0.js' => 'sha512-CVn7af+vTMBd9RjoS4QM5fpLFEOtBCoB0zPtaqIDC7sF4F8qgUSRFQQpIyEDGsr6yrjbuOLzdf20tkHHmpaqwQ==',
|
||||
'js/legacy.js' => 'sha512-LYos+qXHIRqFf5ZPNphvtTB0cgzHUizu2wwcOwcwz/VIpRv9lpcBgPYz4uq6jx0INwCAj6Fbnl5HoKiLufS2jg==',
|
||||
'js/legacy.js' => 'sha512-UxW/TOZKon83n6dk/09GsYKIyeO5LeBHokxyIq+r7KFS5KMBeIB/EM7NrkVYIezwZBaovnyNtY2d9tKFicRlXg==',
|
||||
'js/prettify.js' => 'sha512-puO0Ogy++IoA2Pb9IjSxV1n4+kQkKXYAEUtVzfZpQepyDPyXk8hokiYDS7ybMogYlyyEIwMLpZqVhCkARQWLMg==',
|
||||
'js/privatebin.js' => 'sha512-9caF+XTVriuyh86qLZ26dHbL6PfyOnSAB6zC2IhP6V/lifBxi28aJK0tm/t+F0GSdFXprzY0k8Ld3fbkbR0YJg==',
|
||||
'js/purify-3.1.6.js' => 'sha512-SDwfsqHZFhbcBo/6AN7Te4KoUkWHHw7TzyZCuRkkpl0o8oV4owT/lprznWWe9+qFtigb6MrF81K4CQRLN6be+A==',
|
||||
'js/privatebin.js' => 'sha512-l9FxMcY99yenozSdmWgraPIfGd0TMdAMs3TBRZCKHrBECJqiYS385wfLdN8D3ffpa0HZHvgjRyk2Txs0r+v6FQ==',
|
||||
'js/purify-3.1.7.js' => 'sha512-LegvqULiMtOfboJZw9MpETN/b+xnLRXZI90gG7oIFHW+yAeHmKvRtEUbiMFx2WvUqQoL9XB3gwU+hWXUT0X+8A==',
|
||||
'js/rawinflate-0.3.js' => 'sha512-g8uelGgJW9A/Z1tB6Izxab++oj5kdD7B4qC7DHwZkB6DGMXKyzx7v5mvap2HXueI2IIn08YlRYM56jwWdm2ucQ==',
|
||||
'js/showdown-2.1.0.js' => 'sha512-WYXZgkTR0u/Y9SVIA4nTTOih0kXMEd8RRV6MLFdL6YU8ymhR528NLlYQt1nlJQbYz4EW+ZsS0fx1awhiQJme1Q==',
|
||||
'js/zlib-1.3.1.js' => 'sha512-Z90oppVx/mn0DG2k9airjFVQuliELlXLeT3SRiO6MLiUSbhGlAq+UFwmYbG4i9mwW87dkG8fgJPapGwnUq7Osg==',
|
||||
'js/zlib-1.3.1.js' => 'sha512-5bU9IIP4PgBrOKLZvGWJD4kgfQrkTz8Z3Iqeu058mbQzW3mCumOU6M3UVbVZU9rrVoVwaW4cZK8U8h5xjF88eQ==',
|
||||
),
|
||||
);
|
||||
|
||||
|
@ -27,7 +27,7 @@ class Controller
|
||||
*
|
||||
* @const string
|
||||
*/
|
||||
const VERSION = '1.7.4';
|
||||
const VERSION = '1.7.5';
|
||||
|
||||
/**
|
||||
* minimal required PHP version
|
||||
@ -67,6 +67,14 @@ class Controller
|
||||
*/
|
||||
private $_status = '';
|
||||
|
||||
/**
|
||||
* status message
|
||||
*
|
||||
* @access private
|
||||
* @var bool
|
||||
*/
|
||||
private $_is_deleted = false;
|
||||
|
||||
/**
|
||||
* JSON message
|
||||
*
|
||||
@ -308,7 +316,8 @@ class Controller
|
||||
if (hash_equals($paste->getDeleteToken(), $deletetoken)) {
|
||||
// Paste exists and deletion token is valid: Delete the paste.
|
||||
$paste->delete();
|
||||
$this->_status = 'Paste was properly deleted.';
|
||||
$this->_status = 'Paste was properly deleted.';
|
||||
$this->_is_deleted = true;
|
||||
} else {
|
||||
$this->_error = 'Wrong deletion token. Paste was not deleted.';
|
||||
}
|
||||
@ -412,6 +421,7 @@ class Controller
|
||||
}
|
||||
$page->assign('BASEPATH', I18n::_($this->_conf->getKey('basepath')));
|
||||
$page->assign('STATUS', I18n::_($this->_status));
|
||||
$page->assign('ISDELETED', I18n::_(json_encode($this->_is_deleted)));
|
||||
$page->assign('VERSION', self::VERSION);
|
||||
$page->assign('DISCUSSION', $this->_conf->getKey('discussion'));
|
||||
$page->assign('OPENDISCUSSION', $this->_conf->getKey('opendiscussion'));
|
||||
|
@ -506,8 +506,8 @@ class Database extends AbstractData
|
||||
private function _exec($sql, array $params)
|
||||
{
|
||||
$statement = $this->_db->prepare($sql);
|
||||
foreach ($params as $key => &$parameter) {
|
||||
$position = $key + 1;
|
||||
$position = 1;
|
||||
foreach ($params as &$parameter) {
|
||||
if (is_int($parameter)) {
|
||||
$statement->bindParam($position, $parameter, PDO::PARAM_INT);
|
||||
} elseif (is_string($parameter) && strlen($parameter) >= 4000) {
|
||||
@ -515,6 +515,7 @@ class Database extends AbstractData
|
||||
} else {
|
||||
$statement->bindParam($position, $parameter);
|
||||
}
|
||||
++$position;
|
||||
}
|
||||
$result = $statement->execute();
|
||||
$statement->closeCursor();
|
||||
|
@ -83,6 +83,7 @@ class Request
|
||||
{
|
||||
foreach ($_GET as $key => $value) {
|
||||
// only return if value is empty and key is 16 hex chars
|
||||
$key = (string) $key;
|
||||
if (($value === '') && strlen($key) === 16 && ctype_xdigit($key)) {
|
||||
return $key;
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
<?php
|
||||
<?php declare(strict_types=1);
|
||||
use PrivateBin\I18n;
|
||||
$isCpct = substr($template, 9, 8) === '-compact';
|
||||
$isDark = substr($template, 9, 5) === '-dark';
|
||||
@ -42,7 +42,7 @@ if ($SYNTAXHIGHLIGHTING) :
|
||||
endif;
|
||||
?>
|
||||
<noscript><link type="text/css" rel="stylesheet" href="css/noscript.css" /></noscript>
|
||||
<?php $this->_scriptTag('js/jquery-3.7.1.js', 'async'); ?>
|
||||
<?php $this->_scriptTag('js/jquery-3.7.1.js', 'defer'); ?>
|
||||
<?php
|
||||
if ($QRCODE) :
|
||||
?>
|
||||
@ -56,8 +56,8 @@ if ($ZEROBINCOMPATIBILITY) :
|
||||
endif;
|
||||
?>
|
||||
<?php $this->_scriptTag('js/zlib-1.3.1.js', 'async'); ?>
|
||||
<?php $this->_scriptTag('js/base-x-4.0.0.js', 'async'); ?>
|
||||
<?php $this->_scriptTag('js/rawinflate-0.3.js', 'async'); ?>
|
||||
<?php $this->_scriptTag('js/base-x-4.0.0.js', 'defer'); ?>
|
||||
<?php $this->_scriptTag('js/rawinflate-0.3.js', 'defer'); ?>
|
||||
<?php $this->_scriptTag('js/bootstrap-3.4.1.js', 'defer'); ?>
|
||||
<?php
|
||||
if ($SYNTAXHIGHLIGHTING) :
|
||||
@ -71,7 +71,7 @@ if ($MARKDOWN) :
|
||||
<?php
|
||||
endif;
|
||||
?>
|
||||
<?php $this->_scriptTag('js/purify-3.1.6.js', 'async'); ?>
|
||||
<?php $this->_scriptTag('js/purify-3.1.7.js', 'async'); ?>
|
||||
<?php $this->_scriptTag('js/legacy.js', 'async'); ?>
|
||||
<?php $this->_scriptTag('js/privatebin.js', 'defer'); ?>
|
||||
<!-- icon -->
|
||||
@ -490,9 +490,16 @@ if ($FILEUPLOAD) :
|
||||
<?php
|
||||
endif;
|
||||
?>
|
||||
<div id="status" role="alert" class="alert alert-info<?php echo empty($STATUS) ? ' hidden' : '' ?>">
|
||||
<div id="status" role="alert" class="clearfix alert alert-<?php echo (bool)$ISDELETED ? 'success' : 'info'; echo empty($STATUS) ? ' hidden' : '' ?>">
|
||||
<span class="glyphicon glyphicon-info-sign" aria-hidden="true"></span>
|
||||
<?php echo I18n::encode($STATUS), PHP_EOL; ?>
|
||||
<?php
|
||||
if ((bool)$ISDELETED):
|
||||
?>
|
||||
<button type="button" class="btn btn-default pull-right" id="new-from-alert">
|
||||
<span class="glyphicon glyphicon-repeat"></span> <?php echo I18n::_('Start over'), PHP_EOL; ?>
|
||||
</button>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
<div id="errormessage" role="alert" class="<?php echo empty($ERROR) ? 'hidden' : '' ?> alert alert-danger">
|
||||
<span class="glyphicon glyphicon-alert" aria-hidden="true"></span>
|
||||
|
@ -1,7 +1,7 @@
|
||||
<?php
|
||||
<?php declare(strict_types=1);
|
||||
use PrivateBin\I18n;
|
||||
?><!DOCTYPE html>
|
||||
<html lang="<?php echo I18n::getLanguage(); ?>"<?php echo I18n::isRtl() ? ' dir="rtl"' : ''; ?>>
|
||||
<html lang="<?php echo I18n::getLanguage(); ?>"<?php echo I18n::isRtl() ? ' dir="rtl"' : ''; ?> class="h-100">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta http-equiv="Content-Security-Policy" content="<?php echo I18n::encode($CSPHEADER); ?>">
|
||||
@ -34,15 +34,15 @@ if ($QRCODE) :
|
||||
endif;
|
||||
if ($ZEROBINCOMPATIBILITY) :
|
||||
?>
|
||||
<?php $this->_scriptTag('js/base64-1.7.js', 'async'); ?>
|
||||
<?php $this->_scriptTag('js/base64-1.7.js', 'defer'); ?>
|
||||
<?php
|
||||
endif;
|
||||
?>
|
||||
<?php $this->_scriptTag('js/zlib-1.3.1.js', 'async'); ?>
|
||||
<?php $this->_scriptTag('js/base-x-4.0.0.js', 'async'); ?>
|
||||
<?php $this->_scriptTag('js/rawinflate-0.3.js', 'async'); ?>
|
||||
<?php $this->_scriptTag('js/zlib-1.3.1.js', 'defer'); ?>
|
||||
<?php $this->_scriptTag('js/base-x-4.0.0.js', 'defer'); ?>
|
||||
<?php $this->_scriptTag('js/rawinflate-0.3.js', 'defer'); ?>
|
||||
<?php $this->_scriptTag('js/bootstrap-5.3.3.js', 'async'); ?>
|
||||
<?php $this->_scriptTag('js/dark-mode-switch.js', 'async'); ?>
|
||||
<?php $this->_scriptTag('js/dark-mode-switch.js', 'defer'); ?>
|
||||
<?php
|
||||
if ($SYNTAXHIGHLIGHTING) :
|
||||
?>
|
||||
@ -55,7 +55,7 @@ if ($MARKDOWN) :
|
||||
<?php
|
||||
endif;
|
||||
?>
|
||||
<?php $this->_scriptTag('js/purify-3.1.6.js', 'async'); ?>
|
||||
<?php $this->_scriptTag('js/purify-3.1.7.js', 'defer'); ?>
|
||||
<?php $this->_scriptTag('js/legacy.js', 'async'); ?>
|
||||
<?php $this->_scriptTag('js/privatebin.js', 'defer'); ?>
|
||||
<!-- icon -->
|
||||
@ -80,7 +80,7 @@ endif;
|
||||
<meta property="og:image:width" content="180" />
|
||||
<meta property="og:image:height" content="180" />
|
||||
</head>
|
||||
<body role="document" data-compression="<?php echo rawurlencode($COMPRESSION); ?>">
|
||||
<body role="document" data-compression="<?php echo rawurlencode($COMPRESSION); ?>" class="d-flex flex-column h-100">
|
||||
<div id="passwordmodal" tabindex="-1" class="modal fade" role="dialog" aria-hidden="true">
|
||||
<div class="modal-dialog" role="document">
|
||||
<div class="modal-content">
|
||||
@ -353,9 +353,18 @@ if ($FILEUPLOAD) :
|
||||
<?php
|
||||
endif;
|
||||
?>
|
||||
<div id="status" role="alert" class="alert alert-info<?php echo empty($STATUS) ? ' hidden' : '' ?>">
|
||||
<svg width="16" height="16" fill="currentColor" aria-hidden="true"><use href="img/bootstrap-icons.svg#info-circle" /></svg>
|
||||
<?php echo I18n::encode($STATUS), PHP_EOL; ?>
|
||||
<div id="status" role="alert" class="d-flex justify-content-between align-items-center alert alert-<?php echo (bool)$ISDELETED ? 'success' : 'info'; echo empty($STATUS) ? ' hidden' : '' ?>">
|
||||
<div>
|
||||
<svg width="16" height="16" fill="currentColor" aria-hidden="true"><use href="img/bootstrap-icons.svg#info-circle" /></svg>
|
||||
<?php echo I18n::encode($STATUS), PHP_EOL; ?>
|
||||
</div>
|
||||
<?php
|
||||
if ((bool)$ISDELETED):
|
||||
?>
|
||||
<button type="button" class="btn btn-secondary" id="new-from-alert">
|
||||
<svg width="16" height="16" fill="currentColor" aria-hidden="true"><use href="img/bootstrap-icons.svg#repeat" /></svg> <?php echo I18n::_('Start over'), PHP_EOL; ?>
|
||||
</button>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
<div id="errormessage" role="alert" class="<?php echo empty($ERROR) ? 'hidden' : '' ?> alert alert-danger">
|
||||
<svg width="16" height="16" fill="currentColor" aria-hidden="true"><use href="img/bootstrap-icons.svg#exclamation-triangle" /></svg>
|
||||
@ -451,28 +460,28 @@ endif;
|
||||
<span class="small"><?php echo I18n::_('In case this message never disappears please have a look at <a href="%s">this FAQ for information to troubleshoot</a>.', 'https://github.com/PrivateBin/PrivateBin/wiki/FAQ#why-does-the-loading-message-not-go-away'); ?></span>
|
||||
</div>
|
||||
</section>
|
||||
<footer class="container-fluid">
|
||||
<div class="row">
|
||||
<h5 class="col-md-5 col-xs-8"><?php echo I18n::_($NAME); ?> <small>- <?php echo I18n::_('Because ignorance is bliss'); ?></small></h5>
|
||||
<p class="col-md-1 col-xs-4 text-center"><?php echo $VERSION; ?></p>
|
||||
<p id="aboutbox" class="col-md-6 col-xs-12">
|
||||
<?php echo sprintf(
|
||||
I18n::_('%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.',
|
||||
I18n::_($NAME),
|
||||
'%s', '%s'
|
||||
),
|
||||
'<i>', '</i>'), ' ', $INFO, PHP_EOL;
|
||||
?>
|
||||
</p>
|
||||
</div>
|
||||
</footer>
|
||||
</main>
|
||||
<footer class="container-fluid mt-auto">
|
||||
<div class="row">
|
||||
<h5 class="col-md-5 col-xs-8"><?php echo I18n::_($NAME); ?> <small>- <?php echo I18n::_('Because ignorance is bliss'); ?></small></h5>
|
||||
<p class="col-md-1 col-xs-4 text-center"><?php echo $VERSION; ?></p>
|
||||
<p id="aboutbox" class="col-md-6 col-xs-12">
|
||||
<?php echo sprintf(
|
||||
I18n::_('%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.',
|
||||
I18n::_($NAME),
|
||||
'%s', '%s'
|
||||
),
|
||||
'<i>', '</i>'), ' ', $INFO, PHP_EOL;
|
||||
?>
|
||||
</p>
|
||||
</div>
|
||||
</footer>
|
||||
<?php
|
||||
if ($DISCUSSION) :
|
||||
?>
|
||||
<div id="serverdata" class="hidden" aria-hidden="true">
|
||||
<div id="templates">
|
||||
<article id="commenttemplate" class="comment">
|
||||
<article id="commenttemplate" class="comment px-2 pb-3">
|
||||
<div class="commentmeta">
|
||||
<span class="nickname">name</span>
|
||||
<span class="commentdate">0000-00-00</span>
|
||||
@ -480,11 +489,11 @@ if ($DISCUSSION) :
|
||||
<div class="commentdata">c</div>
|
||||
<button class="btn btn-secondary btn-sm"><?php echo I18n::_('Reply'); ?></button>
|
||||
</article>
|
||||
<p id="commenttailtemplate" class="comment">
|
||||
<p id="commenttailtemplate" class="comment px-2 pb-3">
|
||||
<button class="btn btn-secondary btn-sm"><?php echo I18n::_('Add comment'); ?></button>
|
||||
</p>
|
||||
<div id="replytemplate" class="reply hidden">
|
||||
<input type="text" id="nickname" class="form-control" title="<?php echo I18n::_('Optional nickname…'); ?>" placeholder="<?php echo I18n::_('Optional nickname…'); ?>" />
|
||||
<input type="text" id="nickname" class="form-control my-2" title="<?php echo I18n::_('Optional nickname…'); ?>" placeholder="<?php echo I18n::_('Optional nickname…'); ?>" />
|
||||
<textarea id="replymessage" class="replymessage form-control" cols="80" rows="7"></textarea><br />
|
||||
<div id="replystatus" role="alert" class="statusmessage hidden alert">
|
||||
<svg width="16" height="16" fill="currentColor" aria-hidden="true"><use href="img/bootstrap-icons.svg#info-circle" /></svg>
|
||||
|
@ -1,4 +1,4 @@
|
||||
<?php
|
||||
<?php declare(strict_types=1);
|
||||
use PrivateBin\I18n;
|
||||
?><!DOCTYPE html>
|
||||
<html lang="<?php echo I18n::getLanguage(); ?>"<?php echo I18n::isRtl() ? ' dir="rtl"' : ''; ?>>
|
||||
@ -49,7 +49,7 @@ if ($MARKDOWN):
|
||||
<?php
|
||||
endif;
|
||||
?>
|
||||
<?php $this->_scriptTag('js/purify-3.1.6.js', 'async'); ?>
|
||||
<?php $this->_scriptTag('js/purify-3.1.7.js', 'async'); ?>
|
||||
<?php $this->_scriptTag('js/legacy.js', 'async'); ?>
|
||||
<?php $this->_scriptTag('js/privatebin.js', 'defer'); ?>
|
||||
<!-- icon -->
|
||||
|
@ -1,4 +1,4 @@
|
||||
<?php
|
||||
<?php declare(strict_types=1);
|
||||
use PrivateBin\I18n;
|
||||
?><!DOCTYPE html>
|
||||
<html lang="<?php echo I18n::getLanguage(); ?>"<?php echo I18n::isRtl() ? ' dir="rtl"' : ''; ?>>
|
||||
|
@ -116,7 +116,7 @@ class Helper
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public static function getPasteId()
|
||||
public static function getPasteId(): string
|
||||
{
|
||||
return self::$pasteid;
|
||||
}
|
||||
@ -128,7 +128,7 @@ class Helper
|
||||
* @param array $meta
|
||||
* @return array
|
||||
*/
|
||||
public static function getPaste($version = 2, array $meta = array())
|
||||
public static function getPaste($version = 2, array $meta = array()): array
|
||||
{
|
||||
$example = self::getPasteWithAttachment($version, $meta);
|
||||
// v1 has the attachment stored in a separate property
|
||||
@ -145,7 +145,7 @@ class Helper
|
||||
* @param array $meta
|
||||
* @return array
|
||||
*/
|
||||
public static function getPasteWithAttachment($version = 2, array $meta = array())
|
||||
public static function getPasteWithAttachment($version = 2, array $meta = array()): array
|
||||
{
|
||||
$example = $version === 1 ? self::$pasteV1 : self::$pasteV2;
|
||||
$example['meta']['salt'] = ServerSalt::generate();
|
||||
@ -160,7 +160,7 @@ class Helper
|
||||
* @param array $meta
|
||||
* @return array
|
||||
*/
|
||||
public static function getPastePost($version = 2, array $meta = array())
|
||||
public static function getPastePost($version = 2, array $meta = array()): array
|
||||
{
|
||||
$example = self::getPaste($version, $meta);
|
||||
if ($version == 2) {
|
||||
@ -176,9 +176,9 @@ class Helper
|
||||
*
|
||||
* @param int $version
|
||||
* @param array $meta
|
||||
* @return array
|
||||
* @return string
|
||||
*/
|
||||
public static function getPasteJson($version = 2, array $meta = array())
|
||||
public static function getPasteJson($version = 2, array $meta = array()): string
|
||||
{
|
||||
return json_encode(self::getPastePost($version, $meta));
|
||||
}
|
||||
@ -188,7 +188,7 @@ class Helper
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public static function getCommentId()
|
||||
public static function getCommentId(): string
|
||||
{
|
||||
return self::$commentid;
|
||||
}
|
||||
@ -200,7 +200,7 @@ class Helper
|
||||
* @param array $meta
|
||||
* @return array
|
||||
*/
|
||||
public static function getComment($version = 2, array $meta = array())
|
||||
public static function getComment($version = 2, array $meta = array()): array
|
||||
{
|
||||
$example = $version === 1 ? self::$commentV1 : self::$pasteV2;
|
||||
if ($version === 2) {
|
||||
@ -220,7 +220,7 @@ class Helper
|
||||
* @param int $version
|
||||
* @return array
|
||||
*/
|
||||
public static function getCommentPost()
|
||||
public static function getCommentPost(): array
|
||||
{
|
||||
$example = self::getComment();
|
||||
unset($example['meta']);
|
||||
@ -231,20 +231,32 @@ class Helper
|
||||
* get example comment, as received via POST by user
|
||||
*
|
||||
* @param int $version
|
||||
* @return array
|
||||
* @return string
|
||||
*/
|
||||
public static function getCommentJson()
|
||||
public static function getCommentJson(): string
|
||||
{
|
||||
return json_encode(self::getCommentPost());
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns 16 random hexadecimal characters.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public static function getRandomId(): string
|
||||
{
|
||||
// 8 binary bytes are 16 characters long in hex
|
||||
return bin2hex(random_bytes(8));
|
||||
}
|
||||
|
||||
/**
|
||||
* delete directory and all its contents recursively
|
||||
*
|
||||
* @param string $path
|
||||
* @throws Exception
|
||||
* @return void
|
||||
*/
|
||||
public static function rmDir($path)
|
||||
public static function rmDir($path): void
|
||||
{
|
||||
if (is_dir($path)) {
|
||||
$path .= DIRECTORY_SEPARATOR;
|
||||
@ -272,7 +284,7 @@ class Helper
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public static function confBackup()
|
||||
public static function confBackup(): void
|
||||
{
|
||||
if (!is_file(CONF . '.bak') && is_file(CONF)) {
|
||||
rename(CONF, CONF . '.bak');
|
||||
@ -287,7 +299,7 @@ class Helper
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public static function confRestore()
|
||||
public static function confRestore(): void
|
||||
{
|
||||
if (is_file(CONF . '.bak')) {
|
||||
rename(CONF . '.bak', CONF);
|
||||
@ -303,7 +315,7 @@ class Helper
|
||||
* @param string $pathToFile
|
||||
* @param array $values
|
||||
*/
|
||||
public static function createIniFile($pathToFile, array $values)
|
||||
public static function createIniFile($pathToFile, array $values): void
|
||||
{
|
||||
if (count($values)) {
|
||||
@unlink($pathToFile);
|
||||
@ -346,7 +358,7 @@ class Helper
|
||||
* @param bool $return
|
||||
* @return void|string
|
||||
*/
|
||||
public static function varExportMin($var, $return = false)
|
||||
public static function varExportMin($var, $return = false): string
|
||||
{
|
||||
if (is_array($var)) {
|
||||
$toImplode = array();
|
||||
@ -369,7 +381,7 @@ class Helper
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public static function updateSubresourceIntegrity()
|
||||
public static function updateSubresourceIntegrity(): void
|
||||
{
|
||||
foreach (new GlobIterator(PATH . 'js' . DIRECTORY_SEPARATOR . '*.js') as $file) {
|
||||
if ($file->getBasename() == 'common.js') {
|
||||
|
@ -141,9 +141,7 @@ class FilesystemTest extends TestCase
|
||||
$commentid = Helper::getCommentId();
|
||||
$ids = array();
|
||||
for ($i = 0, $max = 10; $i < $max; ++$i) {
|
||||
// PHPs mt_rand only supports 32 bit or up 0x7fffffff on 64 bit systems to be precise :-/
|
||||
$dataid = str_pad(dechex(mt_rand(0, mt_getrandmax())), 8, '0', STR_PAD_LEFT) .
|
||||
str_pad(dechex(mt_rand(0, mt_getrandmax())), 8, '0', STR_PAD_LEFT);
|
||||
$dataid = Helper::getRandomId();
|
||||
$storagedir = $this->_path . DIRECTORY_SEPARATOR . substr($dataid, 0, 2) .
|
||||
DIRECTORY_SEPARATOR . substr($dataid, 2, 2) . DIRECTORY_SEPARATOR;
|
||||
$ids[$dataid] = $storagedir;
|
||||
@ -162,6 +160,7 @@ class FilesystemTest extends TestCase
|
||||
// check that all 10 pastes were converted after the purge
|
||||
$this->_model->purge(10);
|
||||
foreach ($ids as $dataid => $storagedir) {
|
||||
$dataid = (string) $dataid; // undue potential key cast, see https://www.php.net/manual/en/language.types.array.php
|
||||
$this->assertFileExists($storagedir . $dataid . '.php', "paste $dataid exists in new format");
|
||||
$this->assertFileDoesNotExist($storagedir . $dataid, "old format paste $dataid got removed");
|
||||
$this->assertTrue($this->_model->exists($dataid), "paste $dataid exists");
|
||||
|
@ -154,10 +154,10 @@ class I18nTest extends TestCase
|
||||
$_SERVER['HTTP_ACCEPT_LANGUAGE'] = 'cs;q=0.8,en-GB;q=0.6,en-US;q=0.4,en;q=0.2';
|
||||
I18n::loadTranslations();
|
||||
$this->assertEquals('cs', I18n::getLanguage(), 'browser language cs');
|
||||
$this->assertEquals('1 hodina', I18n::_('%d hours', 1), '1 hour in Czech');
|
||||
$this->assertEquals('2 hodiny', I18n::_('%d hours', 2), '2 hours in Czech');
|
||||
$this->assertEquals('5 minut', I18n::_('%d minutes', 5), '5 minutes in Czech');
|
||||
$this->assertEquals('14 minut', I18n::_('%d minutes', 14), '14 minutes in Czech');
|
||||
$this->assertEquals('1 hodina', I18n::_('%d hours', 1), '1 hour in Czech');
|
||||
$this->assertEquals('2 hodiny', I18n::_('%d hours', 2), '2 hours in Czech');
|
||||
$this->assertEquals('5 minut', I18n::_('%d minutes', 5), '5 minutes in Czech');
|
||||
$this->assertEquals('14 minut', I18n::_('%d minutes', 14), '14 minutes in Czech');
|
||||
}
|
||||
|
||||
public function testBrowserLanguageAnyDetection()
|
||||
|
@ -12,18 +12,6 @@ class RequestTest extends TestCase
|
||||
$_POST = array();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns 16 random hexadecimal characters.
|
||||
*
|
||||
* @access public
|
||||
* @return string
|
||||
*/
|
||||
public function getRandomId()
|
||||
{
|
||||
// 8 binary bytes are 16 characters long in hex
|
||||
return bin2hex(random_bytes(8));
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns random query safe characters.
|
||||
*
|
||||
@ -54,7 +42,25 @@ class RequestTest extends TestCase
|
||||
public function testRead()
|
||||
{
|
||||
$this->reset();
|
||||
$id = $this->getRandomId();
|
||||
$id = Helper::getRandomId();
|
||||
$_SERVER['REQUEST_METHOD'] = 'GET';
|
||||
$_SERVER['QUERY_STRING'] = $id;
|
||||
$_GET[$id] = '';
|
||||
$request = new Request;
|
||||
$this->assertFalse($request->isJsonApiCall(), 'is HTML call');
|
||||
$this->assertEquals($id, $request->getParam('pasteid'));
|
||||
$this->assertEquals('read', $request->getOperation());
|
||||
}
|
||||
|
||||
/**
|
||||
* paste IDs are 8 bytes hex encoded strings, if unlucky, this turns into
|
||||
* a numeric string that PHP will cast to an int, for example in array keys
|
||||
* @see https://www.php.net/manual/en/language.types.array.php
|
||||
*/
|
||||
public function testReadNumeric()
|
||||
{
|
||||
$this->reset();
|
||||
$id = '1234567812345678';
|
||||
$_SERVER['REQUEST_METHOD'] = 'GET';
|
||||
$_SERVER['QUERY_STRING'] = $id;
|
||||
$_GET[$id] = '';
|
||||
@ -67,7 +73,7 @@ class RequestTest extends TestCase
|
||||
public function testDelete()
|
||||
{
|
||||
$this->reset();
|
||||
$id = $this->getRandomId();
|
||||
$id = Helper::getRandomId();
|
||||
$_SERVER['REQUEST_METHOD'] = 'GET';
|
||||
$_GET['pasteid'] = $id;
|
||||
$_GET['deletetoken'] = 'bar';
|
||||
@ -110,7 +116,7 @@ class RequestTest extends TestCase
|
||||
public function testApiRead()
|
||||
{
|
||||
$this->reset();
|
||||
$id = $this->getRandomId();
|
||||
$id = Helper::getRandomId();
|
||||
$_SERVER['REQUEST_METHOD'] = 'GET';
|
||||
$_SERVER['HTTP_ACCEPT'] = 'application/json, text/javascript, */*; q=0.01';
|
||||
$_SERVER['QUERY_STRING'] = $id;
|
||||
@ -124,7 +130,7 @@ class RequestTest extends TestCase
|
||||
public function testApiDelete()
|
||||
{
|
||||
$this->reset();
|
||||
$id = $this->getRandomId();
|
||||
$id = Helper::getRandomId();
|
||||
$_SERVER['REQUEST_METHOD'] = 'POST';
|
||||
$_SERVER['HTTP_X_REQUESTED_WITH'] = 'JSONHttpRequest';
|
||||
$_SERVER['QUERY_STRING'] = $id;
|
||||
@ -155,7 +161,7 @@ class RequestTest extends TestCase
|
||||
public function testReadWithNegotiation()
|
||||
{
|
||||
$this->reset();
|
||||
$id = $this->getRandomId();
|
||||
$id = Helper::getRandomId();
|
||||
$_SERVER['REQUEST_METHOD'] = 'GET';
|
||||
$_SERVER['HTTP_ACCEPT'] = 'text/html,text/html; charset=UTF-8,application/xhtml+xml, application/xml;q=0.9,*/*;q=0.8, text/csv,application/json';
|
||||
$_SERVER['QUERY_STRING'] = $id;
|
||||
@ -169,7 +175,7 @@ class RequestTest extends TestCase
|
||||
public function testReadWithXhtmlNegotiation()
|
||||
{
|
||||
$this->reset();
|
||||
$id = $this->getRandomId();
|
||||
$id = Helper::getRandomId();
|
||||
$_SERVER['REQUEST_METHOD'] = 'GET';
|
||||
$_SERVER['HTTP_ACCEPT'] = 'application/xhtml+xml,text/html,text/html; charset=UTF-8, application/xml;q=0.9,*/*;q=0.8, text/csv,application/json';
|
||||
$_SERVER['QUERY_STRING'] = $id;
|
||||
@ -183,7 +189,7 @@ class RequestTest extends TestCase
|
||||
public function testApiReadWithNegotiation()
|
||||
{
|
||||
$this->reset();
|
||||
$id = $this->getRandomId();
|
||||
$id = Helper::getRandomId();
|
||||
$_SERVER['REQUEST_METHOD'] = 'GET';
|
||||
$_SERVER['HTTP_ACCEPT'] = 'text/plain,text/csv, application/xml;q=0.9, application/json, text/html,text/html; charset=UTF-8,application/xhtml+xml, */*;q=0.8';
|
||||
$_SERVER['QUERY_STRING'] = $id;
|
||||
@ -197,7 +203,7 @@ class RequestTest extends TestCase
|
||||
public function testReadWithFailedNegotiation()
|
||||
{
|
||||
$this->reset();
|
||||
$id = $this->getRandomId();
|
||||
$id = Helper::getRandomId();
|
||||
$_SERVER['REQUEST_METHOD'] = 'GET';
|
||||
$_SERVER['HTTP_ACCEPT'] = 'text/plain,text/csv, application/xml;q=0.9, */*;q=0.8';
|
||||
$_SERVER['QUERY_STRING'] = $id;
|
||||
@ -211,7 +217,7 @@ class RequestTest extends TestCase
|
||||
public function testPasteIdExtraction()
|
||||
{
|
||||
$this->reset();
|
||||
$id = $this->getRandomId();
|
||||
$id = Helper::getRandomId();
|
||||
$queryParams = array($id);
|
||||
$queryParamCount = random_int(1, 5);
|
||||
for ($i = 0; $i < $queryParamCount; ++$i) {
|
||||
|
@ -10,6 +10,8 @@ class ViewTest extends TestCase
|
||||
|
||||
private static $status = '!*#@?$+';
|
||||
|
||||
private static $is_deleted = false;
|
||||
|
||||
private static $formatters = array(
|
||||
'plaintext' => 'Plain Text',
|
||||
'syntaxhighlighting' => 'Source Code',
|
||||
@ -38,6 +40,7 @@ class ViewTest extends TestCase
|
||||
$page->assign('BASEPATH', '');
|
||||
$page->assign('ERROR', self::$error);
|
||||
$page->assign('STATUS', self::$status);
|
||||
$page->assign('ISDELETED', self::$is_deleted);
|
||||
$page->assign('VERSION', self::$version);
|
||||
$page->assign('DISCUSSION', true);
|
||||
$page->assign('OPENDISCUSSION', true);
|
||||
|
10
vendor/composer/installed.php
vendored
10
vendor/composer/installed.php
vendored
@ -3,7 +3,7 @@
|
||||
'name' => 'privatebin/privatebin',
|
||||
'pretty_version' => 'dev-master',
|
||||
'version' => 'dev-master',
|
||||
'reference' => 'c1b3bffe8c5214f69f663b6fb59736a6f5fafa86',
|
||||
'reference' => '1c7d63954642b3852177793c0c17963303484051',
|
||||
'type' => 'project',
|
||||
'install_path' => __DIR__ . '/../../',
|
||||
'aliases' => array(),
|
||||
@ -20,9 +20,9 @@
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'mlocati/ip-lib' => array(
|
||||
'pretty_version' => '1.18.0',
|
||||
'version' => '1.18.0.0',
|
||||
'reference' => 'c77bd0b1f3e3956c7e9661e75cb1f54ed67d95d2',
|
||||
'pretty_version' => '1.18.1',
|
||||
'version' => '1.18.1.0',
|
||||
'reference' => '08bb43b4949069c543ebdf099a6b2c322d0172ab',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../mlocati/ip-lib',
|
||||
'aliases' => array(),
|
||||
@ -31,7 +31,7 @@
|
||||
'privatebin/privatebin' => array(
|
||||
'pretty_version' => 'dev-master',
|
||||
'version' => 'dev-master',
|
||||
'reference' => 'c1b3bffe8c5214f69f663b6fb59736a6f5fafa86',
|
||||
'reference' => '1c7d63954642b3852177793c0c17963303484051',
|
||||
'type' => 'project',
|
||||
'install_path' => __DIR__ . '/../../',
|
||||
'aliases' => array(),
|
||||
|
20
vendor/mlocati/ip-lib/src/Factory.php
vendored
20
vendor/mlocati/ip-lib/src/Factory.php
vendored
@ -84,17 +84,17 @@ class Factory
|
||||
* For upgrading:
|
||||
* - if $supportNonDecimalIPv4 is true, use the ParseStringFlag::IPV4_MAYBE_NON_DECIMAL flag
|
||||
*
|
||||
* @param string|mixed $address
|
||||
* @param string|mixed $range
|
||||
* @param bool $supportNonDecimalIPv4
|
||||
*
|
||||
* @return \IPLib\Address\AddressInterface|null
|
||||
* @return \IPLib\Range\RangeInterface|null
|
||||
*
|
||||
* @see \IPLib\Factory::parseRangeString()
|
||||
* @since 1.10.0 added the $supportNonDecimalIPv4 argument
|
||||
*/
|
||||
public static function rangeFromString($address, $supportNonDecimalIPv4 = false)
|
||||
public static function rangeFromString($range, $supportNonDecimalIPv4 = false)
|
||||
{
|
||||
return static::parseRangeString($address, $supportNonDecimalIPv4 ? ParseStringFlag::IPV4_MAYBE_NON_DECIMAL : 0);
|
||||
return static::parseRangeString($range, $supportNonDecimalIPv4 ? ParseStringFlag::IPV4_MAYBE_NON_DECIMAL : 0);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -215,20 +215,20 @@ class Factory
|
||||
}
|
||||
|
||||
/**
|
||||
* @param \IPLib\Address\AddressInterface $from
|
||||
* @param \IPLib\Address\AddressInterface $to
|
||||
* @param \IPLib\Address\AddressInterface|null $from
|
||||
* @param \IPLib\Address\AddressInterface|null $to
|
||||
*
|
||||
* @return \IPLib\Range\RangeInterface|null
|
||||
*
|
||||
* @since 1.2.0
|
||||
*/
|
||||
protected static function rangeFromBoundaryAddresses(AddressInterface $from = null, AddressInterface $to = null)
|
||||
protected static function rangeFromBoundaryAddresses($from = null, $to = null)
|
||||
{
|
||||
if ($from === null && $to === null) {
|
||||
if (!$from instanceof AddressInterface && !$to instanceof AddressInterface) {
|
||||
$result = null;
|
||||
} elseif ($to === null) {
|
||||
} elseif (!$to instanceof AddressInterface) {
|
||||
$result = Range\Single::fromAddress($from);
|
||||
} elseif ($from === null) {
|
||||
} elseif (!$from instanceof AddressInterface) {
|
||||
$result = Range\Single::fromAddress($to);
|
||||
} else {
|
||||
$result = null;
|
||||
|
Loading…
x
Reference in New Issue
Block a user