Compare commits
No commits in common. 'master' and 'linkregex' have entirely different histories.
@ -0,0 +1,64 @@
|
||||
---
|
||||
version: "2"
|
||||
checks:
|
||||
file-lines:
|
||||
config:
|
||||
threshold: 2000
|
||||
method-complexity:
|
||||
config:
|
||||
threshold: 550
|
||||
method-count:
|
||||
config:
|
||||
threshold: 50
|
||||
method-lines:
|
||||
config:
|
||||
threshold: 250
|
||||
plugins:
|
||||
csslint:
|
||||
enabled: true
|
||||
duplication:
|
||||
enabled: true
|
||||
config:
|
||||
languages:
|
||||
- javascript
|
||||
- php
|
||||
eslint:
|
||||
enabled: true
|
||||
fixme:
|
||||
enabled: true
|
||||
nodesecurity:
|
||||
enabled: true
|
||||
phpmd:
|
||||
enabled: true
|
||||
checks:
|
||||
Controversial/CamelCaseClassName:
|
||||
enabled: false
|
||||
Controversial/CamelCaseMethodName:
|
||||
enabled: false
|
||||
Controversial/CamelCasePropertyName:
|
||||
enabled: false
|
||||
Controversial/CamelCaseVariableName:
|
||||
enabled: false
|
||||
Controversial/Superglobals:
|
||||
enabled: false
|
||||
CleanCode/ElseExpression:
|
||||
enabled: false
|
||||
CleanCode/StaticAccess:
|
||||
enabled: false
|
||||
sonar-php:
|
||||
enabled: true
|
||||
config:
|
||||
tests_patterns:
|
||||
- tst/**
|
||||
exclude_patterns:
|
||||
- "cfg/"
|
||||
- "css/"
|
||||
- "!css/privatebin.css"
|
||||
- "!css/noscript.css"
|
||||
- "!css/bootstrap/privatebin.css"
|
||||
- "js/"
|
||||
- "!js/privatebin.js"
|
||||
- "!js/common.js"
|
||||
- "!js/test/"
|
||||
- "vendor/"
|
||||
|
@ -0,0 +1,2 @@
|
||||
--exclude-exts=.min.css
|
||||
--ignore=adjoining-classes,box-model,ids,order-alphabetical,unqualified-attributes
|
@ -1,8 +1,18 @@
|
||||
# Docs
|
||||
# Documentation, might leak version number
|
||||
CHANGELOG.md
|
||||
LICENSE.md
|
||||
CREDITS.md
|
||||
INSTALL.md
|
||||
README.md
|
||||
doc/
|
||||
|
||||
# Git
|
||||
.git/
|
||||
|
||||
# OSX
|
||||
.DS_Store
|
||||
# Dotfiles, pointless
|
||||
.codeclimate.yml
|
||||
.csslintrc
|
||||
.editorconfig
|
||||
.eslint*
|
||||
.git*
|
||||
.php_cs
|
||||
.styleci.yml
|
||||
.travis.yml
|
||||
.github
|
||||
|
@ -1,47 +0,0 @@
|
||||
---
|
||||
kind: pipeline
|
||||
name: default
|
||||
|
||||
platform:
|
||||
os: linux
|
||||
arch: amd64
|
||||
|
||||
steps:
|
||||
- name: publish
|
||||
pull: default
|
||||
image: plugins/docker:18.09
|
||||
settings:
|
||||
registry: https://registry.nixaid.com
|
||||
repo: "registry.nixaid.com/${DRONE_REPO_NAMESPACE}/${DRONE_REPO_NAME}"
|
||||
tags:
|
||||
- latest
|
||||
username:
|
||||
from_secret: docker_username
|
||||
password:
|
||||
from_secret: docker_password
|
||||
# storage_path: /drone/docker
|
||||
# storage_driver: aufs
|
||||
# ipv6: false
|
||||
# debug: true
|
||||
when:
|
||||
branch:
|
||||
- master
|
||||
event:
|
||||
- push
|
||||
- tag
|
||||
|
||||
- name: notify
|
||||
pull: default
|
||||
image: drillster/drone-email:latest
|
||||
settings:
|
||||
from: "Drone CI <noreply@nixaid.com>"
|
||||
host: mx.nixaid.com
|
||||
port: 587
|
||||
subject: "NIXAID Drone Pipeline {{#success build.status}}SUCCESS{{else}}FAILURE{{/success}} Notification"
|
||||
when:
|
||||
event:
|
||||
- push
|
||||
- tag
|
||||
status:
|
||||
- success
|
||||
- failure
|
@ -0,0 +1,40 @@
|
||||
# editorconfig.org
|
||||
|
||||
root = true
|
||||
|
||||
[*]
|
||||
# Unix style files
|
||||
end_of_line = lf
|
||||
charset = utf-8
|
||||
trim_trailing_whitespace = true
|
||||
insert_final_newline = true
|
||||
|
||||
[*.css]
|
||||
indent_style = tab
|
||||
|
||||
[*.js]
|
||||
indent_style = space
|
||||
indent_size = 4
|
||||
|
||||
[*.json]
|
||||
indent_style = space
|
||||
indent_size = 4
|
||||
|
||||
[*.jsonld]
|
||||
indent_style = tab
|
||||
|
||||
[*.php]
|
||||
indent_style = space
|
||||
indent_size = 4
|
||||
|
||||
[*.{htm,html}]
|
||||
indent_style = tab
|
||||
|
||||
[*.{md,markdown}]
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
trim_trailing_whitespace = false
|
||||
|
||||
[*.yml]
|
||||
indent_style = space
|
||||
indent_size = 2
|
@ -0,0 +1,2 @@
|
||||
js/*.js
|
||||
!js/privatebin.js
|
@ -0,0 +1,234 @@
|
||||
ecmaFeatures:
|
||||
modules: true
|
||||
jsx: true
|
||||
|
||||
env:
|
||||
amd: true
|
||||
browser: true
|
||||
es6: true
|
||||
jquery: true
|
||||
node: true
|
||||
|
||||
globals:
|
||||
sjcl: false
|
||||
DOMPurify: false
|
||||
after: true
|
||||
before: true
|
||||
cleanup: true
|
||||
describe: false
|
||||
it: false
|
||||
jsc: false
|
||||
jsdom: true
|
||||
kjua: true
|
||||
|
||||
# http://eslint.org/docs/rules/
|
||||
rules:
|
||||
# Possible Errors
|
||||
comma-dangle:
|
||||
- error
|
||||
- never
|
||||
no-cond-assign: 2
|
||||
no-console: 0
|
||||
no-constant-condition: 2
|
||||
no-control-regex: 2
|
||||
no-debugger: 2
|
||||
no-dupe-args: 2
|
||||
no-dupe-keys: 2
|
||||
no-duplicate-case: 2
|
||||
no-empty: 2
|
||||
no-empty-character-class: 2
|
||||
no-ex-assign: 2
|
||||
no-extra-boolean-cast: 2
|
||||
no-extra-parens: 0
|
||||
no-extra-semi: 2
|
||||
no-func-assign: 2
|
||||
no-inner-declarations:
|
||||
- error
|
||||
- functions
|
||||
no-invalid-regexp: 2
|
||||
no-irregular-whitespace: 2
|
||||
no-negated-in-lhs: 2
|
||||
no-obj-calls: 2
|
||||
no-regex-spaces: 2
|
||||
no-sparse-arrays: 2
|
||||
no-unexpected-multiline: 2
|
||||
no-unreachable: 2
|
||||
use-isnan: 2
|
||||
valid-jsdoc: 0
|
||||
valid-typeof: 2
|
||||
|
||||
# Best Practices
|
||||
accessor-pairs: 2
|
||||
block-scoped-var: 0
|
||||
complexity:
|
||||
- error
|
||||
- 20
|
||||
consistent-return: 0
|
||||
curly: 0
|
||||
default-case: 0
|
||||
dot-location: 0
|
||||
dot-notation: 0
|
||||
eqeqeq: 2
|
||||
guard-for-in: 2
|
||||
no-alert: 0
|
||||
no-caller: 2
|
||||
no-case-declarations: 2
|
||||
no-div-regex: 2
|
||||
no-else-return: 0
|
||||
no-empty-pattern: 2
|
||||
no-eq-null: 2
|
||||
no-eval: 2
|
||||
no-extend-native: 2
|
||||
no-extra-bind: 2
|
||||
no-fallthrough: 2
|
||||
no-floating-decimal: 0
|
||||
no-implicit-coercion: 0
|
||||
no-implied-eval: 2
|
||||
no-invalid-this: 0
|
||||
no-iterator: 2
|
||||
no-labels: 0
|
||||
no-lone-blocks: 2
|
||||
no-loop-func: 2
|
||||
no-magic-number: 0
|
||||
no-multi-spaces: 0
|
||||
no-multi-str: 0
|
||||
no-native-reassign: 2
|
||||
no-new-func: 2
|
||||
no-new-wrappers: 2
|
||||
no-new: 2
|
||||
no-octal-escape: 2
|
||||
no-octal: 2
|
||||
no-proto: 2
|
||||
no-redeclare: 0
|
||||
no-return-assign: 2
|
||||
no-script-url: 2
|
||||
no-self-compare: 2
|
||||
no-sequences: 0
|
||||
no-throw-literal: 0
|
||||
no-unused-expressions: 2
|
||||
no-useless-call: 2
|
||||
no-useless-concat: 2
|
||||
no-void: 2
|
||||
no-warning-comments: 0
|
||||
no-with: 2
|
||||
radix: 2
|
||||
vars-on-top: 0
|
||||
wrap-iife: 0
|
||||
yoda: 0
|
||||
|
||||
# Strict
|
||||
strict: 0
|
||||
|
||||
# Variables
|
||||
init-declarations: 0
|
||||
no-catch-shadow: 2
|
||||
no-delete-var: 2
|
||||
no-label-var: 2
|
||||
no-shadow-restricted-names: 2
|
||||
no-shadow: 0
|
||||
no-undef-init: 2
|
||||
no-undef: 0
|
||||
no-undefined: 0
|
||||
no-unused-vars: 0
|
||||
no-use-before-define: 0
|
||||
|
||||
# Node.js and CommonJS
|
||||
callback-return: 2
|
||||
global-require: 2
|
||||
handle-callback-err: 2
|
||||
no-mixed-requires: 0
|
||||
no-new-require: 0
|
||||
no-path-concat: 2
|
||||
no-process-exit: 2
|
||||
no-restricted-modules: 0
|
||||
no-sync: 0
|
||||
|
||||
# Stylistic Issues
|
||||
array-bracket-spacing: 0
|
||||
block-spacing: 0
|
||||
brace-style: 0
|
||||
camelcase: 0
|
||||
comma-spacing: 0
|
||||
comma-style: 0
|
||||
computed-property-spacing: 0
|
||||
consistent-this: 0
|
||||
eol-last: 0
|
||||
func-names: 0
|
||||
func-style: 0
|
||||
id-length: 0
|
||||
id-match: 0
|
||||
indent: 0
|
||||
jsx-quotes: 0
|
||||
key-spacing: 0
|
||||
linebreak-style: 0
|
||||
lines-around-comment: 0
|
||||
max-depth: 0
|
||||
max-len: 0
|
||||
max-nested-callbacks: 0
|
||||
max-params: 0
|
||||
max-statements:
|
||||
- error
|
||||
- 60
|
||||
new-cap: 0
|
||||
new-parens: 0
|
||||
newline-after-var: 0
|
||||
no-array-constructor: 0
|
||||
no-bitwise: 0
|
||||
no-continue: 0
|
||||
no-inline-comments: 0
|
||||
no-lonely-if: 0
|
||||
no-mixed-spaces-and-tabs: 0
|
||||
no-multiple-empty-lines: 0
|
||||
no-negated-condition: 0
|
||||
no-nested-ternary: 0
|
||||
no-new-object: 0
|
||||
no-plusplus: 0
|
||||
no-restricted-syntax: 0
|
||||
no-spaced-func: 0
|
||||
no-ternary: 0
|
||||
no-trailing-spaces: 0
|
||||
no-underscore-dangle: 0
|
||||
no-unneeded-ternary: 0
|
||||
object-curly-spacing: 0
|
||||
one-var: 0
|
||||
operator-assignment: 0
|
||||
operator-linebreak: 0
|
||||
padded-blocks: 0
|
||||
quote-props: 0
|
||||
quotes:
|
||||
- error
|
||||
- single
|
||||
require-jsdoc: 0
|
||||
semi-spacing: 0
|
||||
semi: 0
|
||||
sort-vars: 0
|
||||
space-after-keywords: 0
|
||||
space-before-blocks: 0
|
||||
space-before-function-paren: 0
|
||||
space-before-keywords: 0
|
||||
space-in-parens: 0
|
||||
space-infix-ops: 0
|
||||
space-return-throw-case: 0
|
||||
space-unary-ops: 0
|
||||
spaced-comment: 0
|
||||
wrap-regex: 0
|
||||
|
||||
# ECMAScript 6
|
||||
arrow-body-style: 0
|
||||
arrow-parens: 0
|
||||
arrow-spacing: 0
|
||||
constructor-super: 0
|
||||
generator-star-spacing: 0
|
||||
no-arrow-condition: 0
|
||||
no-class-assign: 0
|
||||
no-const-assign: 0
|
||||
no-dupe-class-members: 0
|
||||
no-this-before-super: 0
|
||||
no-var: 0
|
||||
object-shorthand: 0
|
||||
prefer-arrow-callback: 0
|
||||
prefer-const: 0
|
||||
prefer-reflect: 0
|
||||
prefer-spread: 0
|
||||
prefer-template: 0
|
||||
require-yield: 0
|
@ -0,0 +1,20 @@
|
||||
doc/ export-ignore
|
||||
tst/ export-ignore
|
||||
js/.istanbul.yml export-ignore
|
||||
js/test/ export-ignore
|
||||
.codeclimate.yml export-ignore
|
||||
.csslintrc export-ignore
|
||||
.dockerignore export-ignore
|
||||
.editorconfig export-ignore
|
||||
.eslintignore export-ignore
|
||||
.eslintrc export-ignore
|
||||
.gitattributes export-ignore
|
||||
.github export-ignore
|
||||
.gitignore export-ignore
|
||||
.php_cs export-ignore
|
||||
.styleci.yml export-ignore
|
||||
.travis.yml export-ignore
|
||||
Dockerfile export-ignore
|
||||
docker-compose.yml export-ignore
|
||||
docker/ export-ignore
|
||||
composer.json export-ignore
|
@ -0,0 +1,8 @@
|
||||
# Contributing
|
||||
|
||||
At first, awesome you take the time to make PrivateBin better! :tada: :+1:
|
||||
|
||||
Have a look at our [contributing guide](https://github.com/PrivateBin/PrivateBin/wiki/Development) if you want to hack on the code.
|
||||
If you want to translate PrivateBin into your language have a look at the [translation guide](https://github.com/PrivateBin/PrivateBin/wiki/Translation).
|
||||
|
||||
Except this also opening [issues](https://github.com/PrivateBin/PrivateBin/issues) helps much. Just describe your problem detailed enough and fill out our template.
|
@ -0,0 +1,38 @@
|
||||
<!-- Please have a look at our FAQ before submitting an issue: https://github.com/PrivateBin/PrivateBin/wiki/FAQ -->
|
||||
<!-- This is a template for a bug report. If you would like to suggest a feature, feel free to delete the part below. -->
|
||||
|
||||
## Steps to reproduce
|
||||
<!-- Tell us how to reproduce the problem. -->
|
||||
1.
|
||||
2.
|
||||
|
||||
### What happens
|
||||
|
||||
|
||||
### What should happen
|
||||
|
||||
|
||||
## Additional information
|
||||
<!--
|
||||
Here you can add screenshots. If the issue is e.g. a client-side issue (= an issue, which happens in your browser) press F12 and copy and paste the console output or add a screenshot.
|
||||
If you have access to the server log files, also copy them here.
|
||||
-->
|
||||
|
||||
## Basic information
|
||||
|
||||
<!-- If you use a public server enter the address of it here. -->
|
||||
**Server address**:
|
||||
|
||||
<!-- The Operation System of your server -->
|
||||
**Server OS:**
|
||||
|
||||
<!-- The webserver running on your server, preferrably including the version -->
|
||||
**Webserver:**
|
||||
|
||||
<!-- The version of your browser (when it is a client-side issue) -->
|
||||
**Browser:**
|
||||
|
||||
<!-- The version of PrivateBin, if you use an unstable version paste the commit hash or the GitHub link to the commit here (you can get it by running `git rev-parse HEAD`) -->
|
||||
**PrivateBin version:**
|
||||
|
||||
I can reproduce this issue on <https://privatebin.net>: Yes / No
|
@ -0,0 +1,17 @@
|
||||
<!-- This is a template for your Pull Request. This are just some suggestions for you. You do not have to use all of them. -->
|
||||
|
||||
<!-- If your PR fixes an issue, mention it here. You can also just copy the URL - GitHub will convert it for you.
|
||||
If this PR fixes several issues, please prepend each issue url/number with the word "fix"/"fixes" or "close"/"closes" as this automatically closes the issues you mentioned when the PR is merged.
|
||||
-->
|
||||
This PR fixes
|
||||
|
||||
## Changes
|
||||
<!-- List all the changes you have done -->
|
||||
*
|
||||
*
|
||||
|
||||
## ToDo
|
||||
<!-- Add things, you still want to do. It is recommend to put "[DNM]", "[DONOTMERGE]", "[WIP]" or "[WORKINPROGRESS]" **into the title** of your PR if you still want to work on this PR, but just do not want to have it merged yet. -->
|
||||
* [ ]
|
||||
* [ ]
|
||||
* [ ]
|
@ -0,0 +1,42 @@
|
||||
# Ignore server files for safety
|
||||
.htaccess
|
||||
.htpasswd
|
||||
cfg/*
|
||||
!cfg/conf.sample.php
|
||||
!cfg/.htaccess
|
||||
|
||||
# Ignore data/
|
||||
data/
|
||||
|
||||
# Ignore PhpDoc
|
||||
doc/*
|
||||
!doc/*.md
|
||||
|
||||
# Ignore developers composer status so it isn't accidentally checked in,
|
||||
# see https://github.com/PrivateBin/PrivateBin/issues/84
|
||||
composer.lock
|
||||
|
||||
# Ignore vendor dir of Composer except PHP files
|
||||
vendor/*.*
|
||||
vendor/*/*.*
|
||||
vendor/*/*/*.*
|
||||
vendor/*/*/*/*.*
|
||||
vendor/*/*/*/*/*.*
|
||||
vendor/*/*/*/*/*/*.*
|
||||
vendor/**/LICENSE
|
||||
vendor/**/test
|
||||
vendor/**/tst
|
||||
vendor/**/tests
|
||||
vendor/**/build_phar.php
|
||||
!vendor/**/*.php
|
||||
|
||||
# Ignore local node modules, unit testing logs, api docs and IDE project files
|
||||
js/node_modules/
|
||||
js/test.log
|
||||
tst/log/
|
||||
tst/ConfigurationCombinationsTest.php
|
||||
.settings
|
||||
.buildpath
|
||||
.project
|
||||
.externalToolBuilders
|
||||
.c9
|
@ -0,0 +1,3 @@
|
||||
RewriteEngine on
|
||||
RewriteCond %{HTTP_USER_AGENT} ^.*(bot|spider|crawl|https?://|WhatsApp|SkypeUriPreview|facebookexternalhit) [NC]
|
||||
RewriteRule .* - [R=403,L]
|
@ -0,0 +1,46 @@
|
||||
{
|
||||
"bitwise": true,
|
||||
"curly": true,
|
||||
"eqeqeq": true,
|
||||
"esversion": 5,
|
||||
"forin": true,
|
||||
"freeze": true,
|
||||
"futurehostile": true,
|
||||
"latedef": "nofunc",
|
||||
"maxcomplexity": 25,
|
||||
"maxdepth": 3,
|
||||
"maxparams": 4,
|
||||
"maxstatements": 100,
|
||||
"noarg": true,
|
||||
"nonbsp": true,
|
||||
"nonew": true,
|
||||
"quotmark": "single",
|
||||
"singleGroups": true,
|
||||
"strict": true,
|
||||
"undef": true,
|
||||
"unused": true,
|
||||
"jquery": true,
|
||||
"browser": true,
|
||||
"predef": {
|
||||
"after": true,
|
||||
"before": true,
|
||||
"cleanup": true,
|
||||
"console": true,
|
||||
"describe": false,
|
||||
"document": true,
|
||||
"fs": false,
|
||||
"global": true,
|
||||
"exports": true,
|
||||
"it": false,
|
||||
"jsc": false,
|
||||
"jsdom": true,
|
||||
"require": false,
|
||||
"setTimeout": false,
|
||||
"window": true
|
||||
},
|
||||
"globals": {
|
||||
"sjcl": true,
|
||||
"DOMPurify": true,
|
||||
"kjua": true
|
||||
}
|
||||
}
|
@ -0,0 +1,23 @@
|
||||
<?php
|
||||
/**
|
||||
* Configuration file for PHP Coding Standards Fixer (php-cs-fixer).
|
||||
*
|
||||
* On GitHub: https://github.com/FriendsOfPhp/php-cs-fixer
|
||||
* More information: http://cs.sensiolabs.org/
|
||||
*/
|
||||
|
||||
$finder = Symfony\CS\Finder\DefaultFinder::create()
|
||||
->in('lib')
|
||||
;
|
||||
|
||||
return Symfony\CS\Config\Config::create()
|
||||
->level(Symfony\CS\FixerInterface::PSR2_LEVEL)
|
||||
->fixers(['concat_with_spaces', 'long_array_syntax', 'standardize_not_equal',
|
||||
'operators_spaces', 'duplicate_semicolon',
|
||||
'remove_leading_slash_use', 'align_equals',
|
||||
'single_array_no_trailing_comma', 'phpdoc_indent', 'phpdoc_order',
|
||||
'phpdoc_scalar', 'phpdoc_to_comment', 'phpdoc_trim',
|
||||
'phpdoc_types', 'print_to_echo', 'self_accessor', 'single_quote',
|
||||
'spaces_cast', 'ternary_spaces'])
|
||||
->finder($finder)
|
||||
;
|
@ -0,0 +1,30 @@
|
||||
preset: recommended
|
||||
|
||||
risky: false
|
||||
|
||||
enabled:
|
||||
- align_equals
|
||||
- concat_with_spaces
|
||||
- long_array_syntax
|
||||
- no_empty_comment
|
||||
- pre_increment
|
||||
|
||||
disabled:
|
||||
- blank_line_after_opening_tag
|
||||
- blank_line_before_return
|
||||
- blank_line_before_throw
|
||||
- blank_line_before_try
|
||||
- concat_without_spaces
|
||||
- declare_equal_normalize
|
||||
- heredoc_to_nowdoc
|
||||
- method_argument_space
|
||||
- new_with_braces
|
||||
- phpdoc_align
|
||||
- phpdoc_no_access
|
||||
- phpdoc_separation
|
||||
- phpdoc_single_line_var_spacing
|
||||
- phpdoc_summary
|
||||
- post_increment
|
||||
- short_array_syntax
|
||||
- single_line_after_imports
|
||||
- unalign_equals
|
@ -0,0 +1,35 @@
|
||||
language: php
|
||||
sudo: false
|
||||
php:
|
||||
- '5.4'
|
||||
- '5.5'
|
||||
- '5.6'
|
||||
- '7.0'
|
||||
- '7.1'
|
||||
- '7.2'
|
||||
|
||||
# as this is a php project, node.js v4 (for JS unit testing) isn't installed
|
||||
install:
|
||||
- if [ ! -d "$HOME/.nvm" ]; then mkdir -p $HOME/.nvm && curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.8/install.sh | NVM_METHOD=script bash; fi
|
||||
- source ~/.nvm/nvm.sh && nvm install 4
|
||||
|
||||
before_script:
|
||||
- composer install -n
|
||||
- npm install -g mocha
|
||||
- cd js && npm install jsverify jsdom@9 jsdom-global@2 mime-types
|
||||
|
||||
script:
|
||||
- mocha
|
||||
- cd ../tst && ../vendor/bin/phpunit
|
||||
|
||||
after_script:
|
||||
- ../vendor/bin/test-reporter --coverage-report log/coverage-clover.xml
|
||||
- cd .. && vendor/bin/codacycoverage clover tst/log/coverage-clover.xml
|
||||
|
||||
cache:
|
||||
directories:
|
||||
- $HOME/.composer/cache/files
|
||||
- $HOME/.composer/cache/vcs
|
||||
- $HOME/.nvm
|
||||
- $HOME/.npm
|
||||
- js/node_modules
|
@ -0,0 +1,165 @@
|
||||
# PrivateBin version history
|
||||
|
||||
* **1.2 (not yet released)**
|
||||
* ADDED: Translations for Spanish, Occitan, Norwegian, Portuguese, Dutch and Hungarian
|
||||
* ADDED: Option in configuration to change the default "PrivateBin" title of the site
|
||||
* ADDED: Added display of video, audio & PDF, drag & drop, preview of attachments (#182)
|
||||
* ADDED: QR code generation (#169)
|
||||
* ADDED: Introduced DOMpurify library to sanitize generated HTML before display (#183)
|
||||
* CHANGED: Force JSON request for getting paste data & password retry (#216)
|
||||
* CHANGED: Minimum required PHP version is 5.4 (#186)
|
||||
* CHANGED: Shipped .htaccess files were updated for Apache 2.4 (#192)
|
||||
* CHANGED: Cleanup of bootstrap template variants and moved icons to `img` directory
|
||||
* CHANGED: Removed option to hide clone button on expiring pastes, since this requires reading the paste for rendering the template, which leaks information on the pastes state
|
||||
* CHANGED: Upgrading libraries to: SJCL 1.0.7, jQuery 3.3.1, Base64 2.4.5, Showdown 1.8.6 & DOMpurify 1.0.5
|
||||
* CHANGED: Refactored JavaScript code, making it modular with private and public functions, making it much easier to maintain (#178)
|
||||
* FIXED: To counteract regressions introduced by the refactoring, we finally introduced property based unit testing for the JavaScript code, this caught several regressions, but also some very old bugs not found so far (#32)
|
||||
* **1.1.1 (2017-10-06)**
|
||||
* CHANGED: Switched to `.php` file extension for configuration file, to avoid leaking configuration data in unprotected installation.
|
||||
* **1.1 (2016-12-26)**
|
||||
* ADDED: Translations for Italian and Russian
|
||||
* ADDED: Loading message displayed until decryption succeeded for slower (in terms of CPU or network) systems
|
||||
* ADDED: Dockerfile for docker container creation
|
||||
* CHANGED: Using modal dialog to request password input instead of native JS input window (#69)
|
||||
* CHANGED: Suppressed referrer HTTP header sending when following links in a paste or comment (#96) and added additional HTTP headers for XSS mitigation (#91)
|
||||
* CHANGED: Updated random_compat and jQuery libraries
|
||||
* FIXED: XSS using JavaScript stored as markdown formatted paste, after clicking on Raw paste button (#137)
|
||||
* FIXED: Automatic purging deleting non-expiring pastes, when using database store (#149)
|
||||
* **1.0 (2016-08-25)**
|
||||
* ADDED: Translations for Slowene and Chinese
|
||||
* ADDED: re-introduced (optional) URL shortener support, which was removed back in version 0.16 for privacy concerns
|
||||
* ADDED: Preview tab, helpful for writing markdown code or check the source code rendering
|
||||
* ADDED: Automatic purging of expired pastes, done on paste creation
|
||||
* ADDED: Option to disable icons in discussions (will only affect newly created pastes)
|
||||
* ADDED: Composer support
|
||||
* CHANGED: Renamed the ZeroBin fork to PrivateBin
|
||||
* CHANGED: Removed unmaintained RainTPL template engine, replacing the templates with straight forward PHP files
|
||||
* CHANGED: New logo and favicons
|
||||
* CHANGED: Upgrading SJCL library to 1.0.4
|
||||
* CHANGED: Switched to GCM instead of CCM mode for AES encryption for newly created pastes
|
||||
* CHANGED: Use backported random bytes function from PHP7 for older PHP versions instead of mcrypt
|
||||
* CHANGED: Switched to a SHA256 HMAC of the IP in traffic limiter instead of storing it in plain text on the server
|
||||
* CHANGED: Introduced content security policy header to reduce cross site scripting (XSS) risks
|
||||
* CHANGED: Added SHA512 subresource integrity hashes for all javascript includes to reduce the risk of manipulated scripts and easier detection of such
|
||||
* CHANGED: Refactored PHP code to conform to PSR-4 and PSR-2 standards
|
||||
* CHANGED: Switched to Identicons as the default for comments with nicknames
|
||||
* CHANGED: Vizhash is now optional and based on (128 byte) SHA512 HMAC instead of (144 byte) combination of MD5, SHA1 and a reversal of that string
|
||||
* FIXED: Content-type negociation for HTML in certain uncommon browser configurations
|
||||
* FIXED: JavaScript error displayed before page is loaded or during attachment load
|
||||
* FIXED: Don't strip space characters at beginning or end of optional password
|
||||
* FIXED: Various UI glitches in mobile version or on smaller desktops with language menu, button spacing and long URLs
|
||||
* FIXED: Back button now works as expected after switching to raw text view of a paste
|
||||
* FIXED: Reactivated second error message above send comment button to ensure its visibility when the main error message is outside the viewport
|
||||
* FIXED: Raw text now displays original markdown instead of rendered HTML
|
||||
* FIXED: Removed unused code detected with the help of various code review tools
|
||||
* FIXED: Table format for PostgreSQL, making it possible to use PostgreSQL as backend in addition to MySQL, SQLite and flat files
|
||||
* **0.22 (2015-11-09)**:
|
||||
* ADDED: Tab character input support
|
||||
* ADDED: Dark bootstrap theme
|
||||
* ADDED: Option to hide clone button on expiring pastes
|
||||
* ADDED: Option to set a different default language then English and/or enforce it as the only language
|
||||
* ADDED: Database now contains version to allow automatic update of structure, only if necessary; removing database structure check on each request
|
||||
* ADDED: Favicons
|
||||
* FIXING: Regressions in database layer, prohibiting pastes from being stored
|
||||
* FIXING: Fixing "missing" comments when they were posted during the same second to the same paste
|
||||
* FIXING: JS failing when password input disabled
|
||||
* CHANGED: Switching positions of "New" and "Send" button, highlighting the latter to improve workflow
|
||||
* CHANGED: Renamed config file to make updates easier
|
||||
* CHANGED: Switching to JSON-based REST-API
|
||||
* CHANGED: Database structure to store attachments, allowing larger attachments to be stored (depending on maximum BLOB size of database backend)
|
||||
* CHANGED: Refactored data model, traffic limiting & request handling
|
||||
* **0.21.1 (2015-09-21)**:
|
||||
* FIXING: lost meta data when using DB model instead of flat files
|
||||
* FIXING: mobile navbar getting triggered on load
|
||||
* CHANGED: database table "paste" gets automatically extended with a "meta" column
|
||||
* CHANGED: navbar of "bootstrap" template now spans full width of view port on large screens
|
||||
* **0.21 (2015-09-19)**:
|
||||
* ADDED: Translations for German, French and Polish, language selection menu (optional)
|
||||
* ADDED: File upload and image display support (optional)
|
||||
* ADDED: Markdown format support
|
||||
* ADDED: "bootstrap-compact" template that hides some of the options in a drop down menu to ensure the nav bar fitting on one line on smaller screen sizes
|
||||
* FIXING: Various usability issues with different screen sizes / device types in the "bootstrap" template
|
||||
* CHANGED: Instead of having different options to enable and preselect certain formats there is now a generic `[formatter_options]` section where formats can be added to the displayed format drop down menu. A `defaultformatter` can be set, it defaults to "plaintext". The `syntaxhighlighting` configuration got deprecated.
|
||||
* `zerobin.js` got a major refactoring:
|
||||
* moved from global namespace into anonymous function
|
||||
* events are no longer set via "onclick" attributes in the templates, but bound by from JS side
|
||||
* for simpler maintenance the functions were grouped into objects: zerobin (display logic, event handling), filter (compression,
|
||||
encryption), i18n (translation, counterpart of i18n.php) and helper (stateless utilities)
|
||||
* Wiki pages were added to address common topics:
|
||||
* [Upgrading from ZeroBin 0.19 Alpha](https://github.com/PrivateBin/PrivateBin/wiki/Upgrading-from-ZeroBin-0.19-Alpha)
|
||||
* [Directory of public PrivateBin servers](https://github.com/PrivateBin/PrivateBin/wiki/PrivateBin-Directory)
|
||||
* [Translation](https://github.com/PrivateBin/PrivateBin/wiki/Translation)
|
||||
* [Templates](https://github.com/PrivateBin/PrivateBin/wiki/Templates)
|
||||
* **0.20 (2015-09-03)**:
|
||||
* ADDED: Password protected pastes (optional)
|
||||
* ADDED: configuration options for highlighting, password, discussions, expiration times, rate limiting
|
||||
* ADDED: JSON-only retrieval of paste incl. discussion, used to be able to refresh paste when posting a comment
|
||||
* ADDED: bootstrap CSS based template
|
||||
* CHANGED: "Burn after reading" pastes are now deleted only after the paste was successfully decrypted via callback. This prevents accidental deletion by chatbots following URLs and the like. Usage of a password is suggested to ensure only the desired recipient is able to encrypt it.
|
||||
* CHANGED: the "opendiscussion" option now only controls if the discussion checkbox is preselected. Use "discussion = false" to disable the discussion feature completely (which also removes the checkbox from the template).
|
||||
* FIXING: Behaviour of several conflicting configuration options. As a general measure unit tests for 9 of the options and all their possible configurations were added via a unit test generator.
|
||||
* updated JS libraries: jquery to 1.11.3, sjcl to 1.0.2, base64.js to 2.1.9, deflate to 0.5, inflate to 0.3 and prettify to latest
|
||||
* generally improved documentation, both inline phpdoc / JSdoc source code documentation, as well as Wiki pages on installation, configuration, development and JSON-API
|
||||
* **Alpha 0.19 (2013-07-05)**:
|
||||
* Corrected XSS security flaw which affected IE<10. Other browsers were not affected.
|
||||
* Corrected spacing display in IE<10.
|
||||
* **Alpha 0.18 (2013-02-24)**:
|
||||
* ADDED: The resulting URL is automatically selected after pressing "Send". You just have to press CTRL+C.
|
||||
* ADDED: Automatic syntax highlighting for 53 languages using highlight.js
|
||||
* ADDED: "5 minutes" and "1 week" expirations.
|
||||
* ADDED: "Raw text" button.
|
||||
* jQuery upgraded to 1.9.1
|
||||
* sjcl upgraded to GitHub master 2013-02-23
|
||||
* base64.js upgraded to 1.7
|
||||
* FIXED: Dates in discussion are now proper local dates.
|
||||
* ADDED: Robot meta tags in HTML to prevent search engines indexing.
|
||||
* ADDED: Better json checking (including entropy).
|
||||
* ADDED: Added version to js/css assets URLs in order to prevent some abusive caches to serve an obsolete version of these files when ZeroBin is upgraded.
|
||||
* "Burn after reading" option has been moved out of Expiration combo to a separate checkbox. Reason is: You can prevent a read-once paste to be available ad vitam eternam on the net.
|
||||
* **Alpha 0.17 (2013-02-23)**:
|
||||
* ADDED: Deletion URL.
|
||||
* small refactoring.
|
||||
* improved regex checks.
|
||||
* larger server alt on installation.
|
||||
* **Alpha 0.16**:
|
||||
* FIXED minor php warnings.
|
||||
* FIXED: zerobin.js reformated and properly commented.
|
||||
* FIXED: Directory structure re-organized.
|
||||
* CHANGED: URL shortening button was removed. (It was bad for privacy.)
|
||||
* **Alpha 0.15 (2012-04-20):**
|
||||
* FIXED: 2 minor corrections to avoid notices in php log.
|
||||
* FIXED: Sources converted to UTF-8.
|
||||
* **Alpha 0.14 (2012-04-20):**
|
||||
* ADDED: GD presence is checked.
|
||||
* CHANGED: Traffic limiter data files moved to data/ (→easier rights management)
|
||||
* ADDED: "Burn after reading" implemented. Opening the URL will display the paste and immediately destroy it on server.
|
||||
* **Alpha 0.13 (2012-04-18):**
|
||||
* FIXED: ''imageantialias()'' call removed because it's not really usefull and can be a problem on most hosts (if GD is not compiled in php).
|
||||
* FIXED: $error not properly initialized in index.php
|
||||
* **Alpha 0.12 (2012-04-18):**
|
||||
* **DISCUSSIONS !** Now you can enable discussions on your pastes. Of course, posted comments and nickname are also encrypted and the server cannot see them.
|
||||
* This feature implies a change in storage format. You will have to delete all previous pastes in your ZeroBin.
|
||||
* Added [[php:vizhash_gd|Vizhash]] as avatars, so you can match posters IP addresses without revealing them. (Same image = same IP). Of course the IP address cannot be deduced from the Vizhash.
|
||||
* Remaining time before expiration is now displayed.
|
||||
* Explicit tags were added to CSS and jQuery selectors (eg. div#aaa instead of #aaa) to speed up browser.
|
||||
* Better cleaning of the URL (to make sure the key is not broken by some stupid redirection service)
|
||||
* **Alpha 0.11 (2012-04-12):**
|
||||
* Automatically ignore parameters (such as &utm_source=...) added //after// the anchor by some stupid Web 2.0 services.
|
||||
* First public release.
|
||||
* **Alpha 0.10 (2012-04-12):**
|
||||
* IE9 does not seem to correctly support ''pre-wrap'' either. Special handling mode activated for all version of IE<10. (Note: **ALL other browsers** correctly support this feature.)
|
||||
* **Alpha 0.9 (2012-04-11):**
|
||||
* Oh bummer... IE 8 is as shitty as IE6/7: Its does not seem to support ''white-space:pre-wrap'' correctly. I had to activate the special handling mode. I still have to test IE 9.
|
||||
* **Alpha 0.8 (2012-04-11):**
|
||||
* Source code not published yet.
|
||||
* Interface completely redesigned. Icons added.
|
||||
* Now properly supports IE6/7 (ugly display, but it works. "Clone" button is disabled though.)
|
||||
* Added one level of depth for storage directories (This is better for higher load servers).
|
||||
* php version is now checked (min: 5.2.6)
|
||||
* Better checks on posted json data on server.
|
||||
* Added "1 year" expiration.
|
||||
* URLs are now converted to clickable links. This include http, https, ftp and magnet links.
|
||||
* Clickable links include ''rel="nofollow"'' to discourage SEO.
|
||||
* On my public service (http://sebsauvage.net/paste/)
|
||||
* All data will be deleted (you were warned - this is a test service)
|
||||
* Default paste expiration is now 1 month to prevent clogging-up my host.
|
@ -0,0 +1,41 @@
|
||||
# Credits
|
||||
|
||||
## Active contributors
|
||||
|
||||
Simon Rupf - current developer and maintainer
|
||||
rugk - security review, doc improvment, JS refactoring & various other stuff
|
||||
|
||||
## Past contributions
|
||||
|
||||
Sébastien Sauvage - original idea and main developer
|
||||
|
||||
* Alexey Gladkov - syntax highlighting
|
||||
* Greg Knaddison - robots.txt
|
||||
* MrKooky - HTML5 markup, CSS cleanup
|
||||
* Simon Rupf - MVC refactoring, configuration, i18n and unit tests
|
||||
* Hexalyse - Password protection
|
||||
* Viktor Stanchev - File upload support
|
||||
* azlux - Tab character input support
|
||||
* Adam Fisher - old Favicons
|
||||
* rugk - new logo/icons
|
||||
* Sobak - PSR-4 and PSR-2 refactoring
|
||||
* Nathaniel Olsen - jQuery upgrade
|
||||
* Alexander Demenshin - modal password dialog
|
||||
* PunKeel - Dockerfile
|
||||
* thororm - Display of video, audio & PDF, drag & drop, preview of attachments
|
||||
|
||||
## Translations
|
||||
* Hexalyse - French
|
||||
* Kuba Niewiarowski - Polish
|
||||
* Gabbalo - German
|
||||
* Draky50110 - French
|
||||
* Filip Muki Dobranić - Slovene
|
||||
* Jiawei Zhou - Chinese
|
||||
* Stefano Marty - Italian
|
||||
* R4SAS - Russian
|
||||
* Alfredo Fabián Altamirano Tena - Spanish
|
||||
* Quent-in - Occitan
|
||||
* idarlund - Norwegian
|
||||
* Tulio Leao - Portuguese
|
||||
* Michael van Schaik - Dutch
|
||||
* Péter Tabajdi - Hungarian
|
@ -1,49 +1,26 @@
|
||||
FROM alpine:3.14
|
||||
FROM php:apache
|
||||
|
||||
LABEL maintainer="andrey.arapov@nixaid.com"
|
||||
RUN apt-get update && apt-get install -y \
|
||||
libfreetype6-dev \
|
||||
libjpeg62-turbo-dev \
|
||||
libpng-dev \
|
||||
wget \
|
||||
zip \
|
||||
unzip && \
|
||||
# We install and enable php-gd
|
||||
docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ &&\
|
||||
docker-php-ext-install -j$(nproc) gd && \
|
||||
# We enable Apache's mod_rewrite
|
||||
a2enmod rewrite
|
||||
|
||||
ENV RELEASE 1.3.5
|
||||
ENV PBURL https://github.com/PrivateBin/PrivateBin/
|
||||
|
||||
RUN \
|
||||
# Install dependencies
|
||||
apk add --no-cache gnupg php7-fpm php7-json php7-gd \
|
||||
php7-opcache php7-pdo_mysql php7-pdo_pgsql tzdata \
|
||||
&& apk upgrade --no-cache \
|
||||
# Install PrivateBin
|
||||
&& export GNUPGHOME="$(mktemp -d)" \
|
||||
&& gpg2 --list-public-keys || /bin/true \
|
||||
&& wget -qO - https://privatebin.info/key/release.asc | gpg2 --import - \
|
||||
&& cd /tmp \
|
||||
&& wget -qO ${RELEASE}.tar.gz.asc ${PBURL}releases/download/${RELEASE}/PrivateBin-${RELEASE}.tar.gz.asc \
|
||||
&& wget -q ${PBURL}archive/${RELEASE}.tar.gz \
|
||||
&& gpg2 --verify ${RELEASE}.tar.gz.asc \
|
||||
&& mkdir /var/www \
|
||||
&& cd /var/www \
|
||||
&& tar -xzf /tmp/${RELEASE}.tar.gz --strip 1 \
|
||||
&& rm *.md cfg/conf.sample.php \
|
||||
&& mv cfg lib tpl vendor /srv \
|
||||
&& mkdir /srv/data \
|
||||
&& sed -i "s#define('PATH', '');#define('PATH', '/srv/');#" index.php \
|
||||
&& rm -rf "${GNUPGHOME}" /tmp/* \
|
||||
&& apk del gnupg
|
||||
# Copy app content
|
||||
COPY . /var/www/html
|
||||
|
||||
# nginx group id must match to the nginx group id of the container running nginx (e.g. "nginx:mainline-alpine")
|
||||
ENV NGINXGID 101
|
||||
RUN addgroup -S -g $NGINXGID nginx
|
||||
# Copy start script
|
||||
RUN mv /var/www/html/docker/entrypoint.sh / && \
|
||||
rm -r /var/www/html/docker
|
||||
|
||||
# Create the application user under which PHP-FPM will run
|
||||
ENV USER user
|
||||
ENV UID 1000
|
||||
ENV HOME /home/$USER
|
||||
ENV DATA /var/www
|
||||
RUN adduser -D -u $UID -h $HOME -s /bin/true $USER && \
|
||||
mkdir -p $DATA && \
|
||||
chown -Rh $USER:$NGINXGID $DATA /srv
|
||||
VOLUME /var/www/html/data
|
||||
|
||||
# Copy the php-fpm & nginx configs
|
||||
COPY etc/ /etc/
|
||||
|
||||
WORKDIR $DATA
|
||||
USER $USER
|
||||
CMD php-fpm7 -F
|
||||
CMD /entrypoint.sh
|
||||
|
@ -1,63 +1,118 @@
|
||||
# PrivateBin in docker
|
||||
|
||||
## docker-compose.yml example
|
||||
|
||||
This will automatically populate the data under the /srv/data/privatebin/html and /srv/data/privatebin/nginx directories.
|
||||
|
||||
Make sure to create these directories first.
|
||||
|
||||
```
|
||||
version: '3.3'
|
||||
|
||||
services:
|
||||
privatebin-fpm:
|
||||
image: yourrepo/privatebin:1.3.4
|
||||
restart: always
|
||||
networks:
|
||||
- backend
|
||||
volumes:
|
||||
- privatebin_html:/var/www
|
||||
- privatebin_nginx:/etc/nginx/conf.d
|
||||
|
||||
privatebin-nginx:
|
||||
image: nginx:mainline-alpine
|
||||
restart: always
|
||||
networks:
|
||||
- backend
|
||||
volumes:
|
||||
- privatebin_html:/var/www
|
||||
- privatebin_nginx:/etc/nginx/conf.d
|
||||
- /srv/data/privatebin/data:/srv/data
|
||||
depends_on:
|
||||
- privatebin-fpm
|
||||
# add whatever lables/directives you need to expose your nginx container
|
||||
|
||||
volumes:
|
||||
privatebin_html:
|
||||
driver: local
|
||||
driver_opts:
|
||||
type: none
|
||||
device: /srv/data/privatebin/html
|
||||
o: bind
|
||||
|
||||
privatebin_nginx:
|
||||
driver: local
|
||||
driver_opts:
|
||||
type: none
|
||||
device: /srv/data/privatebin/nginx
|
||||
o: bind
|
||||
```
|
||||
|
||||
## updating the image
|
||||
|
||||
Update and reset the containers
|
||||
|
||||
```
|
||||
docker-compose stop privatebin-fpm privatebin-nginx
|
||||
docker-compose rm -f privatebin-fpm privatebin-nginx
|
||||
docker volume rm srv_privatebin_html srv_privatebin_nginx
|
||||
rm -rf /srv/data/privatebin/{html,nginx}
|
||||
mkdir -p /srv/data/privatebin/{html,nginx}
|
||||
docker pull yourrepo/privatebin:1.3.4
|
||||
docker-compose up -d
|
||||
```
|
||||
# [<img alt="PrivateBin" src="https://cdn.rawgit.com/PrivateBin/assets/master/images/minified/logo.svg" width="500" />](https://privatebin.info/)
|
||||
[![Build Status](https://travis-ci.org/PrivateBin/PrivateBin.svg?branch=master)](https://travis-ci.org/PrivateBin/PrivateBin) [![Build Status](https://scrutinizer-ci.com/g/PrivateBin/PrivateBin/badges/build.png?b=master)](https://scrutinizer-ci.com/g/PrivateBin/PrivateBin/build-status/master)
|
||||
[![Codacy Badge](https://api.codacy.com/project/badge/Grade/094500f62abf4c9aa0c8a8a4520e4789)](https://www.codacy.com/app/PrivateBin/PrivateBin)
|
||||
[![Code Climate](https://codeclimate.com/github/PrivateBin/PrivateBin/badges/gpa.svg)](https://codeclimate.com/github/PrivateBin/PrivateBin)
|
||||
[![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/PrivateBin/PrivateBin/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/PrivateBin/PrivateBin/?branch=master)
|
||||
[![SensioLabsInsight](https://insight.sensiolabs.com/projects/57c9e74e-c6f9-4de6-a876-df66ec2ea1ff/mini.png)](https://insight.sensiolabs.com/projects/57c9e74e-c6f9-4de6-a876-df66ec2ea1ff)
|
||||
[![Codacy Badge](https://api.codacy.com/project/badge/Coverage/094500f62abf4c9aa0c8a8a4520e4789)](https://www.codacy.com/app/PrivateBin/PrivateBin)
|
||||
[![Test Coverage](https://codeclimate.com/github/PrivateBin/PrivateBin/badges/coverage.svg)](https://codeclimate.com/github/PrivateBin/PrivateBin/coverage) [![Code Coverage](https://scrutinizer-ci.com/g/PrivateBin/PrivateBin/badges/coverage.png?b=master)](https://scrutinizer-ci.com/g/PrivateBin/PrivateBin/?branch=master)
|
||||
|
||||
*Current version: 1.2*
|
||||
|
||||
**PrivateBin** is a minimalist, open source online [pastebin](https://en.wikipedia.org/wiki/Pastebin)
|
||||
where the server has zero knowledge of pasted data.
|
||||
|
||||
Data is encrypted and decrypted in the browser using 256bit AES in [Galois Counter mode](https://en.wikipedia.org/wiki/Galois/Counter_Mode).
|
||||
|
||||
This is a fork of ZeroBin, originally developed by
|
||||
[Sébastien Sauvage](https://github.com/sebsauvage/ZeroBin). ZeroBin was refactored
|
||||
to allow easier and cleaner extensions. PrivateBin has many more features than the
|
||||
original ZeroBin. It is, however, still fully compatible to the original ZeroBin 0.19
|
||||
data storage scheme. Therefore, such installations can be upgraded to PrivateBin
|
||||
without losing any data.
|
||||
|
||||
## What PrivateBin provides
|
||||
|
||||
+ As a server administrator you don't have to worry if your users post content
|
||||
that is considered illegal in your country. You have no knowledge of any
|
||||
of the pastes content. If requested or enforced, you can delete any paste from
|
||||
your system.
|
||||
|
||||
+ Pastebin-like system to store text documents, code samples, etc.
|
||||
|
||||
+ Encryption of data sent to server.
|
||||
|
||||
+ Possibility to set a password which is required to read the paste. It further
|
||||
protects a paste and prevents people stumbling upon your paste's link
|
||||
from being able to read it without the password.
|
||||
|
||||
## What it doesn't provide
|
||||
|
||||
- As a user you have to trust the server administrator not to inject any malicious
|
||||
javascript code.
|
||||
For basic security, the PrivateBin installation *has to provide HTTPS*!
|
||||
Otherwise you would also have to trust your internet provider, and any country
|
||||
the traffic passes through.
|
||||
Additionally the instance should be secured by
|
||||
[HSTS](https://en.wikipedia.org/wiki/HTTP_Strict_Transport_Security) and
|
||||
ideally by [HPKP](https://en.wikipedia.org/wiki/HTTP_Public_Key_Pinning) using a
|
||||
certificate. It can use traditional certificate authorities and/or use
|
||||
[DNSSEC](https://en.wikipedia.org/wiki/Domain_Name_System_Security_Extensions)
|
||||
protected
|
||||
[DANE](https://en.wikipedia.org/wiki/DNS-based_Authentication_of_Named_Entities)
|
||||
record.
|
||||
|
||||
- The "key" used to encrypt the paste is part of the URL. If you publicly post
|
||||
the URL of a paste that is not password-protected, anyone can read it.
|
||||
Use a password if you want your paste to be private. In this case, make sure to
|
||||
use a strong password and only share it privately and end-to-end-encrypted.
|
||||
|
||||
- A server admin might be forced to hand over access logs to the authorities.
|
||||
PrivateBin encrypts your text and the discussion contents, but who accessed a
|
||||
paste (first) might still be disclosed via access logs.
|
||||
|
||||
- In case of a server breach your data is secure as it is only stored encrypted
|
||||
on the server. However, the server could be misused or the server admin could
|
||||
be legally forced into sending malicious JavaScript to all web users, which
|
||||
grabs the decryption key and sends it to the server when a user accesses a
|
||||
PrivateBin.
|
||||
Therefore, do not access any PrivateBin instance if you think it has been
|
||||
compromised. As long as no user accesses this instance with a previously
|
||||
generated URL, the content can't be decrypted.
|
||||
|
||||
## Options
|
||||
|
||||
Some features are optional and can be enabled or disabled in the [configuration
|
||||
file](https://github.com/PrivateBin/PrivateBin/wiki/Configuration):
|
||||
|
||||
* Password protection
|
||||
|
||||
* Discussions, anonymous or with nicknames and IP based identicons or vizhashes
|
||||
|
||||
* Expiration times, including a "forever" and "burn after reading" option
|
||||
|
||||
* Markdown format support for HTML formatted pastes, including preview function
|
||||
|
||||
* Syntax highlighting for source code using prettify.js, including 4 prettify
|
||||
themes
|
||||
|
||||
* File upload support, images get displayed (disabled by default, possibility
|
||||
to adjust size limit)
|
||||
|
||||
* Templates: By default there are bootstrap CSS, darkstrap and "classic ZeroBin"
|
||||
to choose from and it is easy to adapt these to your own websites layout or
|
||||
create your own.
|
||||
|
||||
* Translation system and automatic browser language detection (if enabled in
|
||||
browser)
|
||||
|
||||
* Language selection (disabled by default, as it uses a session cookie)
|
||||
|
||||
* QR code generation of URL, to easily transfer pastes over to a mobile device
|
||||
|
||||
## Further resources
|
||||
|
||||
* [Installation guide](https://github.com/PrivateBin/PrivateBin/blob/master/INSTALL.md)
|
||||
|
||||
* [Upgrading from ZeroBin 0.19 Alpha](https://github.com/PrivateBin/PrivateBin/wiki/Upgrading-from-ZeroBin-0.19-Alpha)
|
||||
|
||||
* [Configuration guide](https://github.com/PrivateBin/PrivateBin/wiki/Configuration)
|
||||
|
||||
* [Templates](https://github.com/PrivateBin/PrivateBin/wiki/Templates)
|
||||
|
||||
* [Translation guide](https://github.com/PrivateBin/PrivateBin/wiki/Translation)
|
||||
|
||||
* [Developer guide](https://github.com/PrivateBin/PrivateBin/wiki/Development)
|
||||
|
||||
Run into any issues? Have ideas for further developments? Please
|
||||
[report](https://github.com/PrivateBin/PrivateBin/issues) them!
|
||||
|
@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<browserconfig>
|
||||
<msapplication>
|
||||
<tile>
|
||||
<square150x150logo src="img/mstile-150x150.png"/>
|
||||
<square310x310logo src="img/mstile-310x310.png"/>
|
||||
<wide310x150logo src="img/mstile-310x150.png"/>
|
||||
<TileColor>#ffc40d</TileColor>
|
||||
</tile>
|
||||
</msapplication>
|
||||
</browserconfig>
|
@ -0,0 +1 @@
|
||||
Require all denied
|
@ -0,0 +1,154 @@
|
||||
;<?php http_response_code(403); /*
|
||||
; config file for PrivateBin
|
||||
;
|
||||
; An explanation of each setting can be find online at https://github.com/PrivateBin/PrivateBin/wiki/Configuration.
|
||||
|
||||
[main]
|
||||
; (optional) set a project name to be displayed on the website
|
||||
; name = "PrivateBin"
|
||||
|
||||
; enable or disable the discussion feature, defaults to true
|
||||
discussion = true
|
||||
|
||||
; preselect the discussion feature, defaults to false
|
||||
opendiscussion = false
|
||||
|
||||
; enable or disable the password feature, defaults to true
|
||||
password = true
|
||||
|
||||
; enable or disable the file upload feature, defaults to false
|
||||
fileupload = false
|
||||
|
||||
; preselect the burn-after-reading feature, defaults to false
|
||||
burnafterreadingselected = false
|
||||
|
||||
; which display mode to preselect by default, defaults to "plaintext"
|
||||
; make sure the value exists in [formatter_options]
|
||||
defaultformatter = "plaintext"
|
||||
|
||||
; (optional) set a syntax highlighting theme, as found in css/prettify/
|
||||
; syntaxhighlightingtheme = "sons-of-obsidian"
|
||||
|
||||
; size limit per paste or comment in bytes, defaults to 2 Mebibytes
|
||||
sizelimit = 2097152
|
||||
|
||||
; template to include, default is "bootstrap" (tpl/bootstrap.php)
|
||||
template = "bootstrap"
|
||||
|
||||
; (optional) notice to display
|
||||
; notice = "Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service."
|
||||
|
||||
; by default PrivateBin will guess the visitors language based on the browsers
|
||||
; settings. Optionally you can enable the language selection menu, which uses
|
||||
; a session cookie to store the choice until the browser is closed.
|
||||
languageselection = false
|
||||
|
||||
; set the language your installs defaults to, defaults to English
|
||||
; if this is set and language selection is disabled, this will be the only language
|
||||
; languagedefault = "en"
|
||||
|
||||
; (optional) URL shortener address to offer after a new paste is created
|
||||
; it is suggested to only use this with self-hosted shorteners as this will leak
|
||||
; the pastes encryption key
|
||||
; urlshortener = "https://shortener.example.com/api?link="
|
||||
|
||||
; (optional) Let users create a QR code for sharing the paste URL with one click.
|
||||
; It works both when a new paste is created and when you view a paste.
|
||||
; qrcode = true
|
||||
|
||||
; (optional) IP based icons are a weak mechanism to detect if a comment was from
|
||||
; a different user when the same username was used in a comment. It might be
|
||||
; used to get the IP of a non anonymous comment poster if the server salt is
|
||||
; leaked and a SHA256 HMAC rainbow table is generated for all (relevant) IPs.
|
||||
; Can be set to one these values: none / vizhash / identicon (default).
|
||||
; icon = none
|
||||
|
||||
; Content Security Policy headers allow a website to restrict what sources are
|
||||
; allowed to be accessed in its context. You need to change this if you added
|
||||
; custom scripts from third-party domains to your templates, e.g. tracking
|
||||
; scripts or run your site behind certain DDoS-protection services.
|
||||
; Check the documentation at https://content-security-policy.com/
|
||||
; Note: If you use a bootstrap theme, you can remove the allow-popups from the sandbox restrictions.
|
||||
; By default this disallows to load images from third-party servers, e.g. when 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.
|
||||
; cspheader = "default-src 'none'; manifest-src 'self'; connect-src *; script-src 'self'; style-src 'self'; font-src 'self'; img-src 'self' data:; media-src data:; object-src data:; Referrer-Policy: 'no-referrer'; sandbox allow-same-origin allow-scripts allow-forms allow-popups"
|
||||
|
||||
; 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
|
||||
; sha256 in HMAC for the deletion token
|
||||
zerobincompatibility = false
|
||||
|
||||
[expire]
|
||||
; expire value that is selected per default
|
||||
; make sure the value exists in [expire_options]
|
||||
default = "1week"
|
||||
|
||||
[expire_options]
|
||||
; Set each one of these to the number of seconds in the expiration period,
|
||||
; or 0 if it should never expire
|
||||
5min = 300
|
||||
10min = 600
|
||||
1hour = 3600
|
||||
1day = 86400
|
||||
1week = 604800
|
||||
; Well this is not *exactly* one month, it's 30 days:
|
||||
1month = 2592000
|
||||
1year = 31536000
|
||||
never = 0
|
||||
|
||||
[formatter_options]
|
||||
; Set available formatters, their order and their labels
|
||||
plaintext = "Plain Text"
|
||||
syntaxhighlighting = "Source Code"
|
||||
markdown = "Markdown"
|
||||
|
||||
[traffic]
|
||||
; time limit between calls from the same IP address in seconds
|
||||
; Set this to 0 to disable rate limiting.
|
||||
limit = 10
|
||||
|
||||
; (optional) if your website runs behind a reverse proxy or load balancer,
|
||||
; set the HTTP header containing the visitors IP address, i.e. X_FORWARDED_FOR
|
||||
; header = "X_FORWARDED_FOR"
|
||||
|
||||
; directory to store the traffic limits in
|
||||
dir = PATH "data"
|
||||
|
||||
[purge]
|
||||
; minimum time limit between two purgings of expired pastes, it is only
|
||||
; triggered when pastes are created
|
||||
; Set this to 0 to run a purge every time a paste is created.
|
||||
limit = 300
|
||||
|
||||
; maximum amount of expired pastes to delete in one purge
|
||||
; Set this to 0 to disable purging. Set it higher, if you are running a large
|
||||
; site
|
||||
batchsize = 10
|
||||
|
||||
; directory to store the purge limit in
|
||||
dir = PATH "data"
|
||||
|
||||
[model]
|
||||
; name of data model class to load and directory for storage
|
||||
; the default model "Filesystem" stores everything in the filesystem
|
||||
class = Filesystem
|
||||
[model_options]
|
||||
dir = PATH "data"
|
||||
|
||||
;[model]
|
||||
; example of DB configuration for MySQL
|
||||
;class = Database
|
||||
;[model_options]
|
||||
;dsn = "mysql:host=localhost;dbname=privatebin;charset=UTF8"
|
||||
;tbl = "privatebin_" ; table prefix
|
||||
;usr = "privatebin"
|
||||
;pwd = "Z3r0P4ss"
|
||||
;opt[12] = true ; PDO::ATTR_PERSISTENT
|
||||
|
||||
;[model]
|
||||
; example of DB configuration for SQLite
|
||||
;class = Database
|
||||
;[model_options]
|
||||
;dsn = "sqlite:" PATH "data/db.sq3"
|
||||
;usr = null
|
||||
;pwd = null
|
||||
;opt[12] = true ; PDO::ATTR_PERSISTENT
|
@ -0,0 +1,32 @@
|
||||
{
|
||||
"name": "privatebin/privatebin",
|
||||
"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).",
|
||||
"type": "project",
|
||||
"keywords": ["private", "secure", "end-to-end-encrypted", "e2e", "paste", "pastebin", "zero", "zero-knowledge", "encryption", "encrypted", "AES"],
|
||||
"homepage": "https://github.com/PrivateBin",
|
||||
"license":"zlib-acknowledgement",
|
||||
"support": {
|
||||
"issues": "https://github.com/PrivateBin/PrivateBin/issues",
|
||||
"wiki": "https://github.com/PrivateBin/PrivateBin/wiki",
|
||||
"source": "https://github.com/PrivateBin/PrivateBin",
|
||||
"docs": "https://zerobin.dssr.ch/documentation/"
|
||||
},
|
||||
"require": {
|
||||
"php": "^5.4.0 || ^7.0",
|
||||
"paragonie/random_compat": "2.0.4",
|
||||
"yzalis/identicon": "1.1.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"codacy/coverage": "dev-master",
|
||||
"codeclimate/php-test-reporter": "dev-master",
|
||||
"phpunit/phpunit": "^4.6 || ^5.0"
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"PrivateBin\\": "lib/"
|
||||
}
|
||||
},
|
||||
"config": {
|
||||
"autoloader-suffix": "DontChange"
|
||||
}
|
||||
}
|
After Width: | Height: | Size: 106 KiB |
@ -0,0 +1,146 @@
|
||||
/**
|
||||
* PrivateBin
|
||||
*
|
||||
* a zero-knowledge paste bin
|
||||
*
|
||||
* @link https://github.com/PrivateBin/PrivateBin
|
||||
* @copyright 2012 Sébastien SAUVAGE (sebsauvage.net)
|
||||
* @license https://www.opensource.org/licenses/zlib-license.php The zlib/libpng License
|
||||
* @version 1.2
|
||||
*/
|
||||
|
||||
body {
|
||||
padding: 0 0 30px;
|
||||
}
|
||||
|
||||
body.navbar-spacing {
|
||||
padding-top: 70px;
|
||||
}
|
||||
|
||||
body.loading {
|
||||
cursor: wait;
|
||||
}
|
||||
|
||||
.buttondisabled {
|
||||
opacity: 0.3;
|
||||
}
|
||||
|
||||
.navbar-nav {
|
||||
margin: 0 8px;
|
||||
}
|
||||
|
||||
.nav.navbar-nav > li {
|
||||
margin-left: 8px;
|
||||
}
|
||||
|
||||
.navbar-brand {
|
||||
padding: 6px 4px 0 8px;
|
||||
}
|
||||
|
||||
.navbar-form {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.dropdown-menu > li > label, .dropdown-menu > li > div {
|
||||
clear: both;
|
||||
display: block;
|
||||
font-weight: normal;
|
||||
line-height: 1.42857;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.dropdown-menu > li > label {
|
||||
color: #333;
|
||||
padding: 3px 20px 3px 40px;
|
||||
}
|
||||
|
||||
.dropdown-menu > li > div {
|
||||
color: #777;
|
||||
padding: 3px 20px;
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
.pull-right .dropdown-menu {
|
||||
margin-left: -5em;
|
||||
}
|
||||
|
||||
#language {
|
||||
margin-right: 8px;
|
||||
}
|
||||
|
||||
#attachmentPreview img {
|
||||
max-width: 100%;
|
||||
height: auto;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
#attachmentPreview .pdfPreview {
|
||||
width: 100%;
|
||||
height: 100vh;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.dragAndDropFile{
|
||||
color:#777;
|
||||
font-size:1em;
|
||||
display:inline;
|
||||
}
|
||||
|
||||
|
||||
#deletelink {
|
||||
float: right;
|
||||
margin-left: 5px;
|
||||
}
|
||||
|
||||
#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 {
|
||||
font-family: monospace;
|
||||
}
|
||||
|
||||
#nickname {
|
||||
margin: 5px 0;
|
||||
}
|
||||
|
||||
#comments, #comments button {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.comment {
|
||||
border-left: 1px solid #ccc;
|
||||
padding: 5px 0 5px 10px;
|
||||
white-space: pre-wrap;
|
||||
transition: background-color 0.75s ease-out;
|
||||
}
|
||||
|
||||
.comment.highlight {
|
||||
background-color: #ffdd86;
|
||||
transition: background-color 0.2s ease-in;
|
||||
}
|
||||
|
||||
footer h4 {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
li.L0, li.L1, li.L2, li.L3, li.L5, li.L6, li.L7, li.L8 {
|
||||
list-style-type: decimal !important;
|
||||
}
|
@ -0,0 +1,15 @@
|
||||
/**
|
||||
* PrivateBin
|
||||
*
|
||||
* CSS file only loaded when no JavaScript available.
|
||||
*
|
||||
* @link https://github.com/PrivateBin/PrivateBin
|
||||
* @copyright 2012 Sébastien SAUVAGE (sebsauvage.net)
|
||||
* @license https://www.opensource.org/licenses/zlib-license.php The zlib/libpng License
|
||||
* @version 1.2
|
||||
*/
|
||||
|
||||
/* When there is no script at all other */
|
||||
.noscript-hide {
|
||||
display: none;
|
||||
}
|
@ -0,0 +1 @@
|
||||
pre.prettyprint{display:block;background-color:#333}pre .nocode{background-color:none;color:#000}pre .str{color:#ffa0a0}pre .kwd{color:#f0e68c;font-weight:bold}pre .com{color:#87ceeb}pre .typ{color:#98fb98}pre .lit{color:#cd5c5c}pre .pun{color:#fff}pre .pln{color:#fff}pre .tag{color:#f0e68c;font-weight:bold}pre .atn{color:#bdb76b;font-weight:bold}pre .atv{color:#ffa0a0}pre .dec{color:#98fb98}ol.linenums{margin-top:0;margin-bottom:0;color:#aeaeae}li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{list-style-type:none}@media print{pre.prettyprint{background-color:none}pre .str,code .str{color:#060}pre .kwd,code .kwd{color:#006;font-weight:bold}pre .com,code .com{color:#600;font-style:italic}pre .typ,code .typ{color:#404;font-weight:bold}pre .lit,code .lit{color:#044}pre .pun,code .pun{color:#440}pre .pln,code .pln{color:#000}pre .tag,code .tag{color:#006;font-weight:bold}pre .atn,code .atn{color:#404}pre .atv,code .atv{color:#060}}
|
@ -0,0 +1 @@
|
||||
pre .str,code .str{color:#fec243}pre .kwd,code .kwd{color:#8470ff}pre .com,code .com{color:#32cd32;font-style:italic}pre .typ,code .typ{color:#6ecbcc}pre .lit,code .lit{color:#d06}pre .pun,code .pun{color:#8b8970}pre .pln,code .pln{color:#f0f0f0}pre .tag,code .tag{color:#9c9cff}pre .htm,code .htm{color:#dda0dd}pre .xsl,code .xsl{color:#d0a0d0}pre .atn,code .atn{color:#46eeee;font-weight:normal}pre .atv,code .atv{color:#eeb4b4}pre .dec,code .dec{color:#3387cc}a{text-decoration:none}pre.prettyprint,code.prettyprint{font-family:'Droid Sans Mono','CPMono_v07 Bold','Droid Sans';font-weight:bold;font-size:9pt;background-color:#0f0f0f;-moz-border-radius:8px;-webkit-border-radius:8px;-o-border-radius:8px;-ms-border-radius:8px;-khtml-border-radius:8px;border-radius:8px}pre.prettyprint{width:95%;margin:1em auto;padding:1em;white-space:pre-wrap}pre.prettyprint a,code.prettyprint a{text-decoration:none}ol.linenums{margin-top:0;margin-bottom:0;color:#8b8970}li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{list-style-type:none}@media print{pre.prettyprint,code.prettyprint{background-color:#fff}pre .str,code .str{color:#088}pre .kwd,code .kwd{color:#006;font-weight:bold}pre .com,code .com{color:#0c3;font-style:italic}pre .typ,code .typ{color:#404;font-weight:bold}pre .lit,code .lit{color:#044}pre .pun,code .pun{color:#440}pre .pln,code .pln{color:#000}pre .tag,code .tag{color:#b66ff7;font-weight:bold}pre .htm,code .htm{color:#606;font-weight:bold}pre .xsl,code .xsl{color:#606;font-weight:bold}pre .atn,code .atn{color:#c71585;font-weight:normal}pre .atv,code .atv{color:#088;font-weight:normal}}
|
@ -0,0 +1 @@
|
||||
.pln{color:#000}@media screen{.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.pun,.opn,.clo{color:#660}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec,.var{color:#606}.fun{color:red}}@media print,projection{.str{color:#060}.kwd{color:#006;font-weight:bold}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:bold}.lit{color:#044}.pun,.opn,.clo{color:#440}.tag{color:#006;font-weight:bold}.atn{color:#404}.atv{color:#060}}pre.prettyprint{padding:2px;border:1px solid #888}ol.linenums{margin-top:0;margin-bottom:0}li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{list-style-type:none}li.L1,li.L3,li.L5,li.L7,li.L9{background:#eee}
|
@ -0,0 +1 @@
|
||||
.str{color:#ec7600}.kwd{color:#93c763}.com{color:#66747b}.typ{color:#678cb1}.lit{color:#facd22}.pun{color:#f1f2f3}.pln{color:#f1f2f3}.tag{color:#8ac763}.atn{color:#e0e2e4}.atv{color:#ec7600}.dec{color:purple}pre.prettyprint{border:0 solid #888}ol.linenums{margin-top:0;margin-bottom:0}.prettyprint{background:#000}li.L0,li.L1,li.L2,li.L3,li.L4,li.L5,li.L6,li.L7,li.L8,li.L9{color:#555;list-style-type:decimal}li.L1,li.L3,li.L5,li.L7,li.L9{background:#111}@media print{.str{color:#060}.kwd{color:#006;font-weight:bold}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:bold}.lit{color:#044}.pun{color:#440}.pln{color:#000}.tag{color:#006;font-weight:bold}.atn{color:#404}.atv{color:#060}}
|
@ -0,0 +1 @@
|
||||
pre .str,code .str{color:#65b042}pre .kwd,code .kwd{color:#e28964}pre .com,code .com{color:#aeaeae;font-style:italic}pre .typ,code .typ{color:#89bdff}pre .lit,code .lit{color:#3387cc}pre .pun,code .pun{color:#fff}pre .pln,code .pln{color:#fff}pre .tag,code .tag{color:#89bdff}pre .atn,code .atn{color:#bdb76b}pre .atv,code .atv{color:#65b042}pre .dec,code .dec{color:#3387cc}pre.prettyprint,code.prettyprint{background-color:#000;-moz-border-radius:8px;-webkit-border-radius:8px;-o-border-radius:8px;-ms-border-radius:8px;-khtml-border-radius:8px;border-radius:8px}pre.prettyprint{width:95%;margin:1em auto;padding:1em;white-space:pre-wrap}ol.linenums{margin-top:0;margin-bottom:0;color:#aeaeae}li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{list-style-type:none}@media print{pre .str,code .str{color:#060}pre .kwd,code .kwd{color:#006;font-weight:bold}pre .com,code .com{color:#600;font-style:italic}pre .typ,code .typ{color:#404;font-weight:bold}pre .lit,code .lit{color:#044}pre .pun,code .pun{color:#440}pre .pln,code .pln{color:#000}pre .tag,code .tag{color:#006;font-weight:bold}pre .atn,code .atn{color:#404}pre .atv,code .atv{color:#060}}
|
@ -0,0 +1,457 @@
|
||||
/**
|
||||
* PrivateBin
|
||||
*
|
||||
* Main CSS file.
|
||||
*
|
||||
* @link https://github.com/PrivateBin/PrivateBin
|
||||
* @copyright 2012 Sébastien SAUVAGE (sebsauvage.net)
|
||||
* @license https://www.opensource.org/licenses/zlib-license.php The zlib/libpng License
|
||||
* @version 1.2
|
||||
*/
|
||||
|
||||
/* CSS Reset from YUI 3.4.1 (build 4118) - Copyright 2011 Yahoo! Inc. All rights reserved.
|
||||
Licensed under the BSD License. - http://yuilibrary.com/license/ */
|
||||
html{color:#000;background:#fff}body,div,dl,dt,dd,ul,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,textarea,p,blockquote,th,td{margin:0;padding:0}table{border-collapse:collapse;border-spacing:0}fieldset,img{border:0}address,caption,cite,code,dfn,em,strong,th,var{font-style:normal;font-weight:normal}ol,ul{list-style:none}caption,th{text-align:left}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:normal}q:before,q:after{content:''}abbr,acronym{border:0;font-variant:normal}sup{vertical-align:text-top}sub{vertical-align:text-bottom}input,textarea,select{font-family:inherit;font-size:inherit;font-weight:inherit}input,textarea,select{font-size:100%;}legend{color:#000}
|
||||
|
||||
html {
|
||||
background-color: #455463;
|
||||
color: #fff;
|
||||
min-height: 100%;
|
||||
background-image: linear-gradient(bottom, #0f1823 0, #455463 100%);
|
||||
background-image: -o-linear-gradient(bottom, #0f1823 0, #455463 100%);
|
||||
background-image: -moz-linear-gradient(bottom, #0f1823 0, #455463 100%);
|
||||
background-image: -webkit-linear-gradient(bottom, #0f1823 0, #455463 100%);
|
||||
background-image: -ms-linear-gradient(bottom, #0f1823 0, #455463 100%);
|
||||
background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #0f1823), color-stop(1, #455463));
|
||||
}
|
||||
|
||||
body {
|
||||
font-family: Helvetica, Arial, sans-serif;
|
||||
font-size: 0.9em;
|
||||
margin-bottom: 15px;
|
||||
padding-left: 60px;
|
||||
padding-right: 60px;
|
||||
}
|
||||
|
||||
a { color: #0f388f; cursor:pointer; }
|
||||
|
||||
h1.title {
|
||||
font-size: 3.5em;
|
||||
font-weight: bold;
|
||||
color: #000;
|
||||
position: relative;
|
||||
display: inline;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
h1.title:before {
|
||||
content: attr(title);
|
||||
position: absolute;
|
||||
color: rgba(255,255,255,0.15);
|
||||
top: 1px;
|
||||
left: 1px;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
h2.title {
|
||||
color: #000;
|
||||
font-size: 1em;
|
||||
display: inline;
|
||||
font-style: italic;
|
||||
font-weight: bold;
|
||||
position: relative;
|
||||
bottom: 8px;
|
||||
}
|
||||
|
||||
h3.title {
|
||||
color: #94a3b4;
|
||||
font-size: 0.7em;
|
||||
display: inline;
|
||||
margin-top: 10px;
|
||||
position: relative;
|
||||
bottom: 8px;
|
||||
}
|
||||
|
||||
#aboutbox {
|
||||
color: #94a3b4;
|
||||
padding: 4px 8px 4px 16px;
|
||||
position: relative;
|
||||
top: 10px;
|
||||
border-left: 2px solid #94a3b4;
|
||||
float: right;
|
||||
width: 60%;
|
||||
}
|
||||
|
||||
#aboutbox a { color: #94a3b4; }
|
||||
|
||||
#message, #cleartext, #prettymessage, #attachment, .replymessage {
|
||||
clear: both;
|
||||
color: #000;
|
||||
background-color: #fff;
|
||||
font-size: 9pt;
|
||||
border: 1px solid #28343F;
|
||||
box-sizing: border-box;
|
||||
-webkit-box-sizing: border-box;
|
||||
-moz-box-sizing: border-box;
|
||||
-ms-box-sizing: border-box;
|
||||
-o-box-sizing: border-box;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
#message, .replymessage {
|
||||
padding: 5px;
|
||||
white-space: pre-wrap;
|
||||
font-family: Consolas, "Lucida Console", "DejaVu Sans Mono", Monaco, monospace;
|
||||
}
|
||||
|
||||
#attachmentPreview img {
|
||||
max-width: 100%;
|
||||
height: auto;
|
||||
}
|
||||
|
||||
#attachmentPreview .pdfPreview {
|
||||
width: 100%;
|
||||
height: 100vh;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.dragAndDropFile{
|
||||
color:#777;
|
||||
font-size:1em;
|
||||
display:inline;
|
||||
}
|
||||
|
||||
#status {
|
||||
clear: both;
|
||||
padding: 5px 10px;
|
||||
}
|
||||
|
||||
#pasteresult {
|
||||
background-color: #1F2833;
|
||||
color: #fff;
|
||||
padding: 4px 12px;
|
||||
clear: both;
|
||||
-moz-box-shadow: inset 0 2px 2px #000;
|
||||
-webkit-box-shadow: inset 0 2px 2px #000;
|
||||
box-shadow: inset 0 2px 2px #000;
|
||||
}
|
||||
|
||||
#pasteresult a { color: #fff; }
|
||||
|
||||
#pasteresult button { margin-left: 11px; }
|
||||
|
||||
#deletelink { float: right; }
|
||||
|
||||
#toolbar, #status { margin-bottom: 5px; }
|
||||
|
||||
#copyhint { color: #666; font-size: 0.85em }
|
||||
|
||||
button, .button {
|
||||
color: #fff;
|
||||
background-color: #323b47;
|
||||
background-repeat: no-repeat;
|
||||
background-position: center left;
|
||||
padding: 4px 8px;
|
||||
font-size: 1em;
|
||||
margin-right: 5px;
|
||||
display: inline-block;
|
||||
background-image: linear-gradient(bottom, #323b47 0, #51606e 100%);
|
||||
background-image: -o-linear-gradient(bottom, #323b47 0, #51606e 100%);
|
||||
background-image: -moz-linear-gradient(bottom, #323b47 0, #51606e 100%);
|
||||
background-image: -webkit-linear-gradient(bottom, #323b47 0, #51606e 100%);
|
||||
background-image: -ms-linear-gradient(bottom, #323b47 0, #51606e 100%);
|
||||
background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #323b47), color-stop(1, #51606e));
|
||||
border: 1px solid #28343F;
|
||||
-moz-box-shadow: inset 0 1px 2px #647384;
|
||||
-webkit-box-shadow: inset 0 1px 2px #647384;
|
||||
box-shadow: inset 0 1px 2px #647384;
|
||||
-webkit-border-radius: 3px;
|
||||
-moz-border-radius: 3px;
|
||||
border-radius: 3px;
|
||||
-moz-background-clip: padding;
|
||||
-webkit-background-clip: padding-box;
|
||||
background-clip: padding-box;
|
||||
}
|
||||
|
||||
button:hover {
|
||||
background-image: linear-gradient(bottom, #424b57 0%, #61707e 100%);
|
||||
background-image: -o-linear-gradient(bottom, #424b57 0%, #61707e 100%);
|
||||
background-image: -moz-linear-gradient(bottom, #424b57 0%, #61707e 100%);
|
||||
background-image: -webkit-linear-gradient(bottom, #424b57 0%, #61707e 100%);
|
||||
background-image: -ms-linear-gradient(bottom, #424b57 0%, #61707e 100%);
|
||||
background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #424b57), color-stop(1, #61707e));
|
||||
}
|
||||
|
||||
button:active {
|
||||
background-image: linear-gradient(bottom, #51606e 0, #323b47 100%);
|
||||
background-image: -o-linear-gradient(bottom, #51606e 0, #323b47 100%);
|
||||
background-image: -moz-linear-gradient(bottom, #51606e 0, #323b47 100%);
|
||||
background-image: -webkit-linear-gradient(bottom, #51606e 0, #323b47 100%);
|
||||
background-image: -ms-linear-gradient(bottom, #51606e 0, #323b47 100%);
|
||||
background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #51606e), color-stop(1, #323b47));
|
||||
position:relative;
|
||||
top:1px;
|
||||
}
|
||||
|
||||
button:disabled, .buttondisabled {
|
||||
background: #ccc;
|
||||
color: #888;
|
||||
top: 0;
|
||||
}
|
||||
|
||||
button img {
|
||||
margin-right: 8px;
|
||||
position: relative;
|
||||
top: 2px;
|
||||
}
|
||||
|
||||
.button {
|
||||
background-color: #414d5a;
|
||||
padding: 6px 8px;
|
||||
margin: 0 5px 0 0;
|
||||
position: relative;
|
||||
bottom: 1px; /* WTF ? Why is this shifted by 1 pixel ? */
|
||||
}
|
||||
|
||||
.button select {
|
||||
color: #eee;
|
||||
background: transparent;
|
||||
border: none;
|
||||
}
|
||||
|
||||
|
||||
.button select option {
|
||||
color:#eee;
|
||||
background: #414d5a;
|
||||
}
|
||||
|
||||
#rawtextbutton img {
|
||||
padding: 1px 0 1px 0;
|
||||
}
|
||||
|
||||
#remainingtime, #password {
|
||||
color: #94a3b4;
|
||||
display: inline;
|
||||
font-size: 0.85em;
|
||||
}
|
||||
|
||||
#newbutton {
|
||||
float: right;
|
||||
margin-right: 0;
|
||||
margin-bottom: 5px;
|
||||
display: inline;
|
||||
}
|
||||
|
||||
input {
|
||||
color: #777;
|
||||
font-size: 1em;
|
||||
padding: 6px;
|
||||
border: 1px solid #28343f;
|
||||
}
|
||||
|
||||
.blink {
|
||||
text-decoration: blink;
|
||||
font-size: 0.8em;
|
||||
color: #a4b3c4;
|
||||
}
|
||||
|
||||
.foryoureyesonly {
|
||||
color: #ff0 !important;
|
||||
font-size: 1em !important;
|
||||
font-weight: bold !important;
|
||||
}
|
||||
|
||||
#attachmentPreview, .nonworking {
|
||||
background-color: #fff;
|
||||
color: #000;
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
font-weight: bold;
|
||||
font-size: 10pt;
|
||||
-webkit-border-radius: 4px;
|
||||
-moz-border-radius: 4px;
|
||||
border-radius: 4px;
|
||||
padding: 5px 0;
|
||||
}
|
||||
|
||||
.hidden { display: none !important; }
|
||||
|
||||
#ienotice {
|
||||
background-color: #7e98af;
|
||||
color: #000;
|
||||
font-size: 0.85em;
|
||||
padding: 3px 5px;
|
||||
text-align: center;
|
||||
-webkit-border-radius: 4px;
|
||||
-moz-border-radius: 4px;
|
||||
border-radius: 4px;
|
||||
display: none;
|
||||
}
|
||||
|
||||
#ienotice a { color: #000; }
|
||||
|
||||
#oldienotice { display: none; }
|
||||
|
||||
.errorMessage {
|
||||
background-color: #f77 !important;
|
||||
color:#ff0;
|
||||
}
|
||||
|
||||
.small {
|
||||
font-size: 80%;
|
||||
}
|
||||
|
||||
/* --- discussion related CSS ------- */
|
||||
|
||||
#discussion { /* Discussion container */
|
||||
margin-top: 20px;
|
||||
width: 100%;
|
||||
margin-left: -30px;
|
||||
min-width: 200px;
|
||||
}
|
||||
|
||||
h4.title {
|
||||
font-size: 1.2em;
|
||||
color: #94a3b4;
|
||||
font-style: italic;
|
||||
font-weight: bold;
|
||||
position: relative;
|
||||
margin-left: 30px;
|
||||
}
|
||||
|
||||
.comment /* One single reply */
|
||||
{
|
||||
background-color: #ceced6;
|
||||
color: #000;
|
||||
white-space: pre-wrap;
|
||||
font-family: Consolas,"Lucida Console","DejaVu Sans Mono",Monaco,monospace;
|
||||
font-size: 9pt;
|
||||
border-left: 1px solid #859AAE;
|
||||
border-top: 1px solid #859AAE;
|
||||
padding: 5px 0px 5px 5px;
|
||||
margin-left: 30px;
|
||||
-moz-box-shadow: -3px -3px 5px rgba(0,0,0,0.15);
|
||||
-webkit-box-shadow: -3px -3px 5px rgba(0,0,0,0.15);
|
||||
box-shadow: -3px -3px 5px rgba(0,0,0,0.15);
|
||||
min-width: 200px;
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
.reply { margin: 5px 0 0 30px; }
|
||||
|
||||
#replystatus {
|
||||
display: inline;
|
||||
padding: 1px 7px;
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
}
|
||||
|
||||
.comment button {
|
||||
color: #446;
|
||||
background-color: #aab;
|
||||
background-repeat: no-repeat;
|
||||
background-position: center left;
|
||||
padding: 0 2px;
|
||||
font-size: 0.73em;
|
||||
margin: 3px 5px 3px 0;
|
||||
display: inline;
|
||||
background-image: linear-gradient(bottom, #aab 0, #ccc 100%);
|
||||
background-image: -o-linear-gradient(bottom, #aab 0, #ccc 100%);
|
||||
background-image: -moz-linear-gradient(bottom, #aab 0, #ccc 100%);
|
||||
background-image: -webkit-linear-gradient(bottom, #aab 0, #ccc 100%);
|
||||
background-image: -ms-linear-gradient(bottom, #aab 0, #ccc 100%);
|
||||
background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #aab), color-stop(1, #ccc));
|
||||
border: 1px solid #ccd;
|
||||
-moz-box-shadow: inset 0 1px 2px #ddd;
|
||||
-webkit-box-shadow: inset 0 1px 2px #fff;
|
||||
box-shadow: inset 0 1px 2px #eee;
|
||||
-webkit-border-radius: 3px;
|
||||
-moz-border-radius: 3px;
|
||||
border-radius: 3px;
|
||||
-moz-background-clip: padding;
|
||||
-webkit-background-clip: padding-box;
|
||||
background-clip: padding-box;
|
||||
}
|
||||
|
||||
.comment button:hover {
|
||||
background-image: linear-gradient(bottom, #ccd 0, #fff 100%);
|
||||
background-image: -o-linear-gradient(bottom, #ccd 0, #fff 100%);
|
||||
background-image: -moz-linear-gradient(bottom, #ccd 0, #fff 100%);
|
||||
background-image: -webkit-linear-gradient(bottom, #ccd 0, #fff 100%);
|
||||
background-image: -ms-linear-gradient(bottom, #ccd 0, #fff 100%);
|
||||
background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #ccd), color-stop(1, #fff));
|
||||
}
|
||||
|
||||
.comment button:active {
|
||||
background-image: linear-gradient(bottom, #fff 0, #889 100%);
|
||||
background-image: -o-linear-gradient(bottom, #fff 0, #889 100%);
|
||||
background-image: -moz-linear-gradient(bottom, #fff 0, #889 100%);
|
||||
background-image: -webkit-linear-gradient(bottom, #fff 0, #889 100%);
|
||||
background-image: -ms-linear-gradient(bottom, #fff 0, #889 100%);
|
||||
background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #fff), color-stop(1, #889));
|
||||
position:relative;
|
||||
top:1px;
|
||||
}
|
||||
|
||||
.comment input { padding: 2px; }
|
||||
|
||||
#replymessage { margin-top: 5px; }
|
||||
|
||||
.commentmeta {
|
||||
color: #fff;
|
||||
background-color: #8ea0b2;
|
||||
margin-bottom: 3px;
|
||||
padding: 0 0 0 3px;
|
||||
}
|
||||
|
||||
.commentdate { color: #bfcede; }
|
||||
|
||||
img.vizhash {
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
position: relative;
|
||||
top: 2px;
|
||||
left: -3px;
|
||||
}
|
||||
|
||||
#prettyprint {
|
||||
color: #000000;
|
||||
font-size: 1.2em;
|
||||
}
|
||||
|
||||
#prettyprint.prettyprinted {
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
#cleartext {
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
#cleartext * {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
#cleartext ol {
|
||||
list-style: auto;
|
||||
margin-left: 15px;
|
||||
}
|
||||
|
||||
#cleartext ul {
|
||||
list-style: disc;
|
||||
margin-left: 15px;
|
||||
}
|
||||
|
||||
#cleartext h1, #cleartext h2, #cleartext h3, #cleartext h4, #cleartext h5, #cleartext h6 {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
#cleartext h1 {
|
||||
font-size: 2em;
|
||||
}
|
||||
|
||||
#cleartext h2 {
|
||||
font-size: 1.5em;
|
||||
}
|
||||
|
||||
#cleartext h3 {
|
||||
font-size: 1.2em;
|
||||
}
|
@ -0,0 +1,60 @@
|
||||
Generating PHP documentation
|
||||
============================
|
||||
|
||||
In order to generate the documentation, you will need to install the following
|
||||
packages and its dependencies:
|
||||
* phpdoc
|
||||
* graphviz
|
||||
|
||||
Details about
|
||||
[installing phpDocumentor](https://phpdoc.org/docs/latest/getting-started/installing.html)
|
||||
can be found in that projects documentation.
|
||||
|
||||
Example for Debian and Ubuntu:
|
||||
```console
|
||||
$ sudo apt install php-pear graphviz
|
||||
$ sudo pear channel-discover pear.phpdoc.org
|
||||
$ sudo pear install phpdoc/phpDocumentor
|
||||
```
|
||||
|
||||
To generate the documentation, change into the main directory and run phpdoc:
|
||||
```console
|
||||
$ cd PrivateBin
|
||||
$ phpdoc -t doc/phpdoc -d lib/
|
||||
```
|
||||
|
||||
**Note:** When used with PHP 7, the prerelease of phpDocumentator 2.9 needs to be
|
||||
manually installed by downloading it from
|
||||
[GitHub](https://github.com/phpDocumentor/phpDocumentor2/releases/download/v2.9.0/phpDocumentor.phar)
|
||||
and then manually moving it to e.g. `/usr/local/bin` and making it executable.
|
||||
|
||||
Generating JS documentation
|
||||
============================
|
||||
|
||||
In order to generate the documentation, you will need to install the following
|
||||
packages and its dependencies:
|
||||
* npm
|
||||
|
||||
Then you can use the node package manager to install the latest stable release
|
||||
of jsdoc globally:
|
||||
|
||||
```console
|
||||
$ npm install -g jsdoc
|
||||
```
|
||||
|
||||
Example for Debian and Ubuntu, including steps to allow current user to install
|
||||
node modules globally:
|
||||
```console
|
||||
$ sudo apt install npm
|
||||
$ sudo mkdir /usr/local/lib/node_modules
|
||||
$ sudo chown -R $(whoami) $(npm config get prefix)/{lib/node_modules,bin,share}
|
||||
$ npm install -g jsdoc
|
||||
$ ln -s /usr/bin/nodejs /usr/local/bin/node
|
||||
```
|
||||
|
||||
To generate the documentation, change into the main directory and run phpdoc:
|
||||
```console
|
||||
$ cd PrivateBin
|
||||
$ jsdoc -d doc/jsdoc js/privatebin.js
|
||||
```
|
||||
|
@ -0,0 +1,15 @@
|
||||
version: '3'
|
||||
|
||||
services:
|
||||
privatebin:
|
||||
build: .
|
||||
ports:
|
||||
- "3000:80"
|
||||
volumes:
|
||||
- data:/var/www/html/data
|
||||
# Optionally mount a custom config file
|
||||
#- /srv/docker/privatebin/conf.php:/var/www/html/cfg/conf.php
|
||||
|
||||
volumes:
|
||||
data:
|
||||
|
@ -0,0 +1,4 @@
|
||||
#! /bin/sh
|
||||
|
||||
chown -R www-data /var/www/html/data
|
||||
apache2-foreground
|
@ -1,24 +0,0 @@
|
||||
server {
|
||||
listen 80 default_server;
|
||||
|
||||
root /var/www;
|
||||
index index.php index.html index.htm;
|
||||
|
||||
location / {
|
||||
try_files $uri $uri/ /index.php$is_args$args;
|
||||
}
|
||||
|
||||
# since I am running in Docker
|
||||
resolver 127.0.0.11 ipv6=off;
|
||||
set $privatebin privatebin-fpm:9000;
|
||||
|
||||
location ~ \.php$ {
|
||||
fastcgi_pass $privatebin;
|
||||
fastcgi_index index.php;
|
||||
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
|
||||
include fastcgi_params;
|
||||
|
||||
# Prevent exposing nginx + version to $_SERVER
|
||||
fastcgi_param SERVER_SOFTWARE "";
|
||||
}
|
||||
}
|
@ -1,64 +0,0 @@
|
||||
; session.use_strict_mode specifies whether the module will use strict session id mode. If this
|
||||
; mode is enabled, the module does not accept uninitialized session ID. If uninitialized session ID
|
||||
; is sent from browser, new session ID is sent to browser. Applications are protected from session
|
||||
; fixation via session adoption with strict mode. Defaults to 0 (disabled).
|
||||
session.use_strict_mode=On
|
||||
|
||||
; Enable assert() evaluation.
|
||||
assert.active=Off
|
||||
|
||||
; This determines whether errors should be printed to the screen as part of the output or if they
|
||||
; should be hidden from the user. Value "stderr" sends the errors to stderr instead of stdout.
|
||||
display_errors=Off
|
||||
|
||||
; Tells whether script error messages should be logged to the server's error log or error_log.
|
||||
; You're strongly advised to use error logging in place of error displaying on production web sites.
|
||||
log_errors=On
|
||||
|
||||
|
||||
|
||||
; increase size limits
|
||||
upload_max_filesize=15M
|
||||
post_max_size=15M
|
||||
|
||||
|
||||
|
||||
; best practices
|
||||
|
||||
; Disable deprecated short open tags ("<?")
|
||||
short_open_tag=Off
|
||||
|
||||
; Do not expose php version header
|
||||
expose_php=Off
|
||||
|
||||
; -1 can be used (like E_ALL) to report all errors - including those coming in new php versions
|
||||
error_reporting=-1
|
||||
|
||||
|
||||
|
||||
; performance
|
||||
|
||||
; we want fast cli scripts too
|
||||
opcache.enable_cli=On
|
||||
|
||||
; fast shutdown because we skip free() calls
|
||||
opcache.fast_shutdown=On
|
||||
|
||||
; The amount of memory used to store interned strings, in megabytes
|
||||
opcache.interned_strings_buffer=8
|
||||
|
||||
; The maximum number of keys (and therefore scripts) in the OPcache hash table
|
||||
opcache.max_accelerated_files=20000
|
||||
|
||||
; The size of the shared memory storage used by OPcache, in megabytes
|
||||
opcache.memory_consumption=128
|
||||
|
||||
; If enabled, OPcache will check for updated scripts every opcache.revalidate_freq seconds. When
|
||||
; this directive is disabled, you must reset OPcache manually via opcache_reset(),
|
||||
; opcache_invalidate() or by restarting the Web server for changes to the filesystem to take effect.
|
||||
opcache.validate_timestamps=Off
|
||||
|
||||
; Determines the size of the realpath cache to be used by PHP. This value
|
||||
; should be increased on systems where PHP opens many files, to reflect the
|
||||
; quantity of the file operations performed.
|
||||
realpath_cache_size=4096K
|
@ -1,18 +0,0 @@
|
||||
[global]
|
||||
daemonize = no
|
||||
error_log = /dev/stderr
|
||||
|
||||
[www]
|
||||
user = user
|
||||
group = user
|
||||
listen = 0.0.0.0:9000
|
||||
pm = dynamic
|
||||
pm.max_children = 5
|
||||
pm.start_servers = 2
|
||||
pm.min_spare_servers = 1
|
||||
pm.max_spare_servers = 3
|
||||
clear_env = On
|
||||
;access.log = /dev/null
|
||||
;php_admin_value[upload_max_filesize] = 15M
|
||||
;php_admin_value[post_max_size] = 15M
|
||||
;php_admin_value[output_buffering] = 0
|
@ -0,0 +1,157 @@
|
||||
{
|
||||
"PrivateBin": "PrivateBin",
|
||||
"%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted <i>in the browser</i> using 256 bits AES. More information on the <a href=\"https://privatebin.info/\">project page</a>.":
|
||||
"%s ist ein minimalistischer, quelloffener \"Pastebin\"-artiger Dienst, bei dem der Server keinerlei Kenntnis der Inhalte hat. Die Daten werden <i>im Browser</i> mit 256 Bit AES ver- und entschlüsselt. Weitere Informationen sind auf der <a href=\"https://privatebin.info/\">Projektseite</a> zu finden.",
|
||||
"Because ignorance is bliss":
|
||||
"Unwissenheit ist ein Segen",
|
||||
"en": "de",
|
||||
"Paste does not exist, has expired or has been deleted.":
|
||||
"Diesen Text gibt es nicht, er ist abgelaufen oder wurde gelöscht.",
|
||||
"%s requires php %s or above to work. Sorry.":
|
||||
"%s benötigt PHP %s oder höher, um zu funktionieren. Sorry.",
|
||||
"%s requires configuration section [%s] to be present in configuration file.":
|
||||
"%s benötigt den Konfigurationsabschnitt [%s] in der Konfigurationsdatei um zu funktionieren.",
|
||||
"Please wait %d seconds between each post.":
|
||||
"Bitte warte %d Sekunden zwischen dem Absenden.",
|
||||
"Paste is limited to %s of encrypted data.":
|
||||
"Texte sind auf %s verschlüsselte Datenmenge beschränkt.",
|
||||
"Invalid data.":
|
||||
"Ungültige Daten.",
|
||||
"You are unlucky. Try again.":
|
||||
"Du hast Pech. Versuchs nochmal.",
|
||||
"Error saving comment. Sorry.":
|
||||
"Fehler beim Speichern des Kommentars. Sorry.",
|
||||
"Error saving paste. Sorry.":
|
||||
"Fehler beim Speichern des Textes. Sorry.",
|
||||
"Invalid paste ID.":
|
||||
"Ungültige Text-ID.",
|
||||
"Paste is not of burn-after-reading type.":
|
||||
"Text ist kein \"Einmal\"-Typ.",
|
||||
"Wrong deletion token. Paste was not deleted.":
|
||||
"Falscher Lösch-Code. Text wurde nicht gelöscht.",
|
||||
"Paste was properly deleted.":
|
||||
"Text wurde erfolgreich gelöscht.",
|
||||
"JavaScript is required for %s to work.<br />Sorry for the inconvenience.":
|
||||
"JavaScript ist eine Voraussetzung, um %s zu nutzen.<br />Bitte entschuldige die Unannehmlichkeiten.",
|
||||
"%s requires a modern browser to work.":
|
||||
"%s setzt einen modernen Browser voraus, um funktionieren zu können.",
|
||||
"Still using Internet Explorer? Do yourself a favor, switch to a modern browser:":
|
||||
"Du benutzt immer noch den Internet Explorer? Tu Dir einen Gefallen und wechsle zu einem moderneren Browser:",
|
||||
"New":
|
||||
"Neu",
|
||||
"Send":
|
||||
"Senden",
|
||||
"Clone":
|
||||
"Klonen",
|
||||
"Raw text":
|
||||
"Reiner Text",
|
||||
"Expires":
|
||||
"Ablaufzeit",
|
||||
"Burn after reading":
|
||||
"Einmal-Text",
|
||||
"Open discussion":
|
||||
"Diskussion eröffnen",
|
||||
"Password (recommended)":
|
||||
"Passwort (empfohlen)",
|
||||
"Discussion":
|
||||
"Diskussion",
|
||||
"Toggle navigation":
|
||||
"Navigation umschalten",
|
||||
"%d seconds": ["%d Sekunde", "%d Sekunden"],
|
||||
"%d minutes": ["%d Minute", "%d Minuten"],
|
||||
"%d hours": ["%d Stunde", "%d Stunden"],
|
||||
"%d days": ["%d Tag", "%d Tage"],
|
||||
"%d weeks": ["%d Woche", "%d Wochen"],
|
||||
"%d months": ["%d Monat", "%d Monate"],
|
||||
"%d years": ["%d Jahr", "%d Jahre"],
|
||||
"Never":
|
||||
"Nie",
|
||||
"Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service.":
|
||||
"Hinweis: Dies ist ein Versuchsdienst. Daten können jederzeit gelöscht werden. Kätzchen werden sterben wenn du diesen Dienst missbrauchst.",
|
||||
"This document will expire in %d seconds.":
|
||||
["Dieses Dokument läuft in einer Sekunde ab.", "Dieses Dokument läuft in %d Sekunden ab."],
|
||||
"This document will expire in %d minutes.":
|
||||
["Dieses Dokument läuft in einer Minute ab.", "Dieses Dokument läuft in %d Minuten ab."],
|
||||
"This document will expire in %d hours.":
|
||||
["Dieses Dokument läuft in einer Stunde ab.", "Dieses Dokument läuft in %d Stunden ab."],
|
||||
"This document will expire in %d days.":
|
||||
["Dieses Dokument läuft in einem Tag ab.", "Dieses Dokument läuft in %d Tagen ab."],
|
||||
"This document will expire in %d months.":
|
||||
["Dieses Dokument läuft in einem Monat ab.", "Dieses Dokument läuft in %d Monaten ab."],
|
||||
"Please enter the password for this paste:":
|
||||
"Bitte gib das Passwort für diesen Text ein:",
|
||||
"Could not decrypt data (Wrong key?)":
|
||||
"Konnte Daten nicht entschlüsseln (Falscher Schlüssel?)",
|
||||
"Could not delete the paste, it was not stored in burn after reading mode.":
|
||||
"Konnte das Paste nicht löschen, es wurde nicht im Einmal-Modus gespeichert.",
|
||||
"FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.":
|
||||
"DIESER TEXT IST NUR FÜR DICH GEDACHT. Schließe das Fenster nicht, diese Nachricht kann nur einmal geöffnet werden.",
|
||||
"Could not decrypt comment; Wrong key?":
|
||||
"Konnte Kommentar nicht entschlüsseln; Falscher Schlüssel?",
|
||||
"Reply":
|
||||
"Antworten",
|
||||
"Anonymous":
|
||||
"Anonym",
|
||||
"Avatar generated from IP address":
|
||||
"Avatar (generiert aus der IP-Adresse)",
|
||||
"Add comment":
|
||||
"Kommentar hinzufügen",
|
||||
"Optional nickname…":
|
||||
"Optionales Pseudonym…",
|
||||
"Post comment":
|
||||
"Kommentar absenden",
|
||||
"Sending comment…":
|
||||
"Sende Kommentar…",
|
||||
"Comment posted.":
|
||||
"Kommentar gesendet.",
|
||||
"Could not refresh display: %s":
|
||||
"Konnte Ansicht nicht aktualisieren: %s",
|
||||
"unknown status":
|
||||
"Unbekannter Grund",
|
||||
"server error or not responding":
|
||||
"Fehler auf dem Server oder keine Antwort vom Server",
|
||||
"Could not post comment: %s":
|
||||
"Konnte Kommentar nicht senden: %s",
|
||||
"Please move your mouse for more entropy…":
|
||||
"Bitte bewege Deine Maus um die Entropie zu erhöhen…",
|
||||
"Sending paste…":
|
||||
"Sende Paste…",
|
||||
"Your paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit [Ctrl]+[c] to copy)</span>":
|
||||
"Dein Paste ist unter <a id=\"pasteurl\" href=\"%s\">%s</a> zu finden <span id=\"copyhint\">(Drücke [Strg]+[c] um den Link zu kopieren)</span>",
|
||||
"Delete data":
|
||||
"Lösche Daten",
|
||||
"Could not create paste: %s":
|
||||
"Konnte Paste nicht erstellen: %s",
|
||||
"Cannot decrypt paste: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)":
|
||||
"Konnte Paste nicht entschlüsseln: Der Schlüssel fehlt in der Adresse (Hast du eine Umleitung oder einen URL-Verkürzer benutzt, der Teile der Adresse entfernt?)",
|
||||
"Format": "Format",
|
||||
"Plain Text": "Nur Text",
|
||||
"Source Code": "Quellcode",
|
||||
"Markdown": "Markdown",
|
||||
"Download attachment": "Anhang herunterladen",
|
||||
"Cloned: '%s'": "Geklont: '%s'",
|
||||
"The cloned file '%s' was attached to this paste.": "Die geklonte Datei '%s' wurde angehängt.",
|
||||
"Attach a file": "Datei anhängen",
|
||||
"alternatively drag & drop a file or paste an image from the clipboard": "Alternativ Drag & Drop einer Datei oder einfügen eines Bildes aus der Zwischenablage",
|
||||
"File too large, to display a preview. Please download the attachment.": "Datei zu groß, um als Vorschau angezeigt zu werden. Bitte Anhang herunterladen.",
|
||||
"Remove attachment": "Anhang entfernen",
|
||||
"Your browser does not support uploading encrypted files. Please use a newer browser.":
|
||||
"Dein Browser unterstützt das hochladen von verschlüsselten Dateien nicht. Bitte verwende einen neueren Browser.",
|
||||
"Invalid attachment.": "Ungültiger Datei-Anhang.",
|
||||
"Options": "Optionen",
|
||||
"Shorten URL": "URL verkürzen",
|
||||
"Editor": "Bearbeiten",
|
||||
"Preview": "Vorschau",
|
||||
"%s requires the PATH to end in a \"%s\". Please update the PATH in your index.php.":
|
||||
"Der PATH muss bei %s mit einem \"%s\" enden. Bitte passe Deinen PATH in Deiner index.php an.",
|
||||
"Decrypt":
|
||||
"Entschlüsseln",
|
||||
"Enter password":
|
||||
"Passwort eingeben",
|
||||
"Loading…": "Lädt…",
|
||||
"Decrypting paste…": "Entschlüssle Paste…",
|
||||
"Preparing new paste…": "Bereite neues Paste vor…",
|
||||
"In case this message never disappears please have a look at <a href=\"https://github.com/PrivateBin/PrivateBin/wiki/FAQ#why-does-not-the-loading-message-go-away\">this FAQ for information to troubleshoot</a>.":
|
||||
"Wenn diese Nachricht nicht mehr verschwindet, schau bitte in <a href=\"https://github.com/PrivateBin/PrivateBin/wiki/FAQ#why-does-not-the-loading-message-go-away\">die FAQ</a> (englisch), um zu sehen, wie der Fehler behoben werden kann.",
|
||||
"+++ no paste text +++": "+++ kein Paste-Text +++"
|
||||
}
|
@ -0,0 +1,157 @@
|
||||
{
|
||||
"PrivateBin": "PrivateBin",
|
||||
"%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted <i>in the browser</i> using 256 bits AES. More information on the <a href=\"https://privatebin.info/\">project page</a>.":
|
||||
"%s es un servicio de tipo \"Pastebin\" minimalista de código abierto, donde el servidor no tiene ningún conocimiento de los datos guardados. Los datos son cifrados/descifrados <i>en el navegador</i> usando 256 bits AES. Más información en la <a href=\"https://privatebin.info/\">página del proyecto</a>.",
|
||||
"Because ignorance is bliss":
|
||||
"Porque la ignorancia es dicha",
|
||||
"en": "es",
|
||||
"Paste does not exist, has expired or has been deleted.":
|
||||
"El texto no existe, ha caducado o ha sido eliminado.",
|
||||
"%s requires php %s or above to work. Sorry.":
|
||||
"%s requiere php %s o superior para funcionar. Lo siento.",
|
||||
"%s requires configuration section [%s] to be present in configuration file.":
|
||||
"%s requiere que la sección de configuración [%s] esté presente en el archivo de configuración.",
|
||||
"Please wait %d seconds between each post.":
|
||||
"Por favor espere %d segundos entre cada publicación.",
|
||||
"Paste is limited to %s of encrypted data.":
|
||||
"El texto está limitado a %s de datos cifrados.",
|
||||
"Invalid data.":
|
||||
"Datos inválidos.",
|
||||
"You are unlucky. Try again.":
|
||||
"Tienes mala suerte. Inténtalo de nuevo",
|
||||
"Error saving comment. Sorry.":
|
||||
"Error al guardar el comentario. Lo siento.",
|
||||
"Error saving paste. Sorry.":
|
||||
"Error al guardar el texto. Lo siento",
|
||||
"Invalid paste ID.":
|
||||
"ID del texto inválido.",
|
||||
"Paste is not of burn-after-reading type.":
|
||||
"El texto no es del tipo \"destruir despues de leer\".",
|
||||
"Wrong deletion token. Paste was not deleted.":
|
||||
"Token de eliminación erróneo. El texto no fue eliminado.",
|
||||
"Paste was properly deleted.":
|
||||
"El texto se ha eliminado correctamente.",
|
||||
"JavaScript is required for %s to work.<br />Sorry for the inconvenience.":
|
||||
"JavaScript es necesario para que %s funcione.<br />Sentimos los inconvenientes ocasionados.",
|
||||
"%s requires a modern browser to work.":
|
||||
"%s requiere un navegador moderno para funcionar.",
|
||||
"Still using Internet Explorer? Do yourself a favor, switch to a modern browser:":
|
||||
"¿Sigues usando Internet Explorer? Hazte un favor, cambia a un navegador moderno:",
|
||||
"New":
|
||||
"Nuevo",
|
||||
"Send":
|
||||
"Enviar",
|
||||
"Clone":
|
||||
"Clonar",
|
||||
"Raw text":
|
||||
"Texto sin formato",
|
||||
"Expires":
|
||||
"Caducar en",
|
||||
"Burn after reading":
|
||||
"Destruir después de leer",
|
||||
"Open discussion":
|
||||
"Discusión abierta",
|
||||
"Password (recommended)":
|
||||
"Contraseña (recomendado)",
|
||||
"Discussion":
|
||||
"Discusión",
|
||||
"Toggle navigation":
|
||||
"Cambiar navegación",
|
||||
"%d seconds": ["%d segundo", "%d segundos"],
|
||||
"%d minutes": ["%d minuto", "%d minutos"],
|
||||
"%d hours": ["%d hora", "%d horas"],
|
||||
"%d days": ["%d día", "%d días"],
|
||||
"%d weeks": ["%d semana", "%d semanas"],
|
||||
"%d months": ["%d mes", "%d meses"],
|
||||
"%d years": ["%d año", "%d años"],
|
||||
"Never":
|
||||
"Nunca",
|
||||
"Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service.":
|
||||
"Nota: Este es un servicio de prueba. Los datos pueden ser eliminados en cualquier momento. Gatitos morirán si se abusa de este servicio.",
|
||||
"This document will expire in %d seconds.":
|
||||
["Este documento caducará en un segundo.", "Este documento caducará en %d segundos."],
|
||||
"This document will expire in %d minutes.":
|
||||
["Este documento caducará en un minuto.", "Este documento caducará en %d minutos."],
|
||||
"This document will expire in %d hours.":
|
||||
["Este documento caducará en una hora.", "Este documento caducará en %d horas."],
|
||||
"This document will expire in %d days.":
|
||||
["Este documento caducará en un día.", "Este documento caducará en %d días."],
|
||||
"This document will expire in %d months.":
|
||||
["Este documento caducará en un mes.", "Este documento caducará en %d meses."],
|
||||
"Please enter the password for this paste:":
|
||||
"Por favor ingrese la contraseña para este documento:",
|
||||
"Could not decrypt data (Wrong key?)":
|
||||
"No fue posible descifrar los datos (¿Clave errónea?)",
|
||||
"Could not delete the paste, it was not stored in burn after reading mode.":
|
||||
"No fue posible eliminar el documento, no fue guardado en modo \"destruir despues de leer\".",
|
||||
"FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.":
|
||||
"SÓLO PARA TUS OJOS. No cierre esta ventana, este mensaje no se puede volver a mostrar.",
|
||||
"Could not decrypt comment; Wrong key?":
|
||||
"No se pudo descifrar el comentario; ¿Llave incorrecta?",
|
||||
"Reply":
|
||||
"Responder",
|
||||
"Anonymous":
|
||||
"Anónimo",
|
||||
"Avatar generated from IP address":
|
||||
"Avatar generado a partir de la dirección IP",
|
||||
"Add comment":
|
||||
"Añadir comentario",
|
||||
"Optional nickname…":
|
||||
"Seudónimo opcional…",
|
||||
"Post comment":
|
||||
"Publicar comentario",
|
||||
"Sending comment…":
|
||||
"Enviando comentario…",
|
||||
"Comment posted.":
|
||||
"Comentario publicado.",
|
||||
"Could not refresh display: %s":
|
||||
"No se pudo actualizar la vista: %s",
|
||||
"unknown status":
|
||||
"Estado desconocido",
|
||||
"server error or not responding":
|
||||
"Error del servidor o el servidor no responde",
|
||||
"Could not post comment: %s":
|
||||
"No fue posible publicar comentario: %s",
|
||||
"Please move your mouse for more entropy…":
|
||||
"Por favor, mueva el ratón para mayor entropía…",
|
||||
"Sending paste…":
|
||||
"Enviando texto…",
|
||||
"Your paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit [Ctrl]+[c] to copy)</span>":
|
||||
"Su texto está en <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Presione [Ctrl]+[c] para copiar)</span>",
|
||||
"Delete data":
|
||||
"Eliminar datos",
|
||||
"Could not create paste: %s":
|
||||
"No fue posible crear el archivo: %s",
|
||||
"Cannot decrypt paste: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)":
|
||||
"No es posible descifrar el documento: Falta la clave de descifrado en la URL (¿Utilizó un redirector o un acortador de URL que quite parte de la URL?)",
|
||||
"Format": "Formato",
|
||||
"Plain Text": "Texto sin formato",
|
||||
"Source Code": "Código fuente",
|
||||
"Markdown": "Markdown",
|
||||
"Download attachment": "Descargar adjunto",
|
||||
"Cloned: '%s'": "Clonado: '%s'.",
|
||||
"The cloned file '%s' was attached to this paste.": "El archivo clonado '%s' ha sido adjuntado a este texto.",
|
||||
"Attach a file": "Adjuntar archivo",
|
||||
"alternatively drag & drop a file or paste an image from the clipboard": "alternatively drag & drop a file or paste an image from the clipboard",
|
||||
"File too large, to display a preview. Please download the attachment.": "File too large, to display a preview. Please download the attachment.",
|
||||
"Remove attachment": "Remover adjunto",
|
||||
"Your browser does not support uploading encrypted files. Please use a newer browser.":
|
||||
"Tu navegador no admite la carga de archivos cifrados. Utilice un navegador más reciente.",
|
||||
"Invalid attachment.": "Adjunto inválido.",
|
||||
"Options": "Opciones",
|
||||
"Shorten URL": "Acortar URL",
|
||||
"Editor": "Editor",
|
||||
"Preview": "Previsualización",
|
||||
"%s requires the PATH to end in a \"%s\". Please update the PATH in your index.php.":
|
||||
"%s requiere que el PATH termine en \"%s\". Por favor, actualice el PATH en su index.php.",
|
||||
"Decrypt":
|
||||
"Descifrar",
|
||||
"Enter password":
|
||||
"Ingrese contraseña",
|
||||
"Loading…": "Cargando…",
|
||||
"Decrypting paste…": "Descifrando texto…",
|
||||
"Preparing new paste…": "Preparando texto nuevo…",
|
||||
"In case this message never disappears please have a look at <a href=\"https://github.com/PrivateBin/PrivateBin/wiki/FAQ#why-does-not-the-loading-message-go-away\">this FAQ for information to troubleshoot</a>.":
|
||||
"En caso de que este mensaje nunca desaparezca por favor revise <a href=\"https://github.com/PrivateBin/PrivateBin/wiki/FAQ#why-does-not-the-loading-message-go-away\">este FAQ para obtener información para solucionar problemas</a>.",
|
||||
"+++ no paste text +++": "+++ sin texto +++"
|
||||
}
|
@ -0,0 +1,166 @@
|
||||
{
|
||||
"PrivateBin": "PrivateBin",
|
||||
"%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted <i>in the browser</i> using 256 bits AES. More information on the <a href=\"https://privatebin.info/\">project page</a>.":
|
||||
"%s est un 'pastebin' (ou gestionnaire d'extraits de texte et de code source) minimaliste et open source, dans lequel le serveur n'a aucune connaissance des données envoyées. Les données sont chiffrées/déchiffrées <i>dans le navigateur</i> par un chiffrement AES 256 bits. Plus d'informations sur <a href=\"https://privatebin.info/\">la page du projet</a>.",
|
||||
"Because ignorance is bliss":
|
||||
"Parce que l'ignorance c'est le bonheur",
|
||||
"en": "fr",
|
||||
"Paste does not exist, has expired or has been deleted.":
|
||||
"Le paste n'existe pas, a expiré, ou a été supprimé.",
|
||||
"%s requires php %s or above to work. Sorry.":
|
||||
"Désolé, %s nécessite php %s ou supérieur pour fonctionner.",
|
||||
"%s requires configuration section [%s] to be present in configuration file.":
|
||||
"%s a besoin de la section de configuration [%s] dans le fichier de configuration pour fonctionner.",
|
||||
"Please wait %d seconds between each post.":
|
||||
"Merci d'attendre %d secondes entre chaque publication.",
|
||||
"Paste is limited to %s of encrypted data.":
|
||||
"Le paste est limité à %s de données chiffrées.",
|
||||
"Invalid data.":
|
||||
"Données invalides.",
|
||||
"You are unlucky. Try again.":
|
||||
"Pas de chance. Essayez encore.",
|
||||
"Error saving comment. Sorry.":
|
||||
"Erreur lors de la sauvegarde du commentaire.",
|
||||
"Error saving paste. Sorry.":
|
||||
"Erreur lors de la sauvegarde du paste. Désolé.",
|
||||
"Invalid paste ID.":
|
||||
"ID du paste invalide.",
|
||||
"Paste is not of burn-after-reading type.":
|
||||
"Le paste n'est pas de type \"Effacer après lecture\".",
|
||||
"Wrong deletion token. Paste was not deleted.":
|
||||
"Jeton de suppression incorrect. Le paste n'a pas été supprimé.",
|
||||
"Paste was properly deleted.":
|
||||
"Le paste a été correctement supprimé.",
|
||||
"JavaScript is required for %s to work.<br />Sorry for the inconvenience.":
|
||||
"JavaScript est requis pour faire fonctionner %s. <br />Désolé pour cet inconvénient.",
|
||||
"%s requires a modern browser to work.":
|
||||
"%s nécessite un navigateur moderne pour fonctionner.",
|
||||
"Still using Internet Explorer? Do yourself a favor, switch to a modern browser:":
|
||||
"Encore sur Internet Explorer ? Faites-vous une faveur, passez à un navigateur moderne :",
|
||||
"New":
|
||||
"Nouveau",
|
||||
"Send":
|
||||
"Envoyer",
|
||||
"Clone":
|
||||
"Cloner",
|
||||
"Raw text":
|
||||
"Texte brut",
|
||||
"Expires":
|
||||
"Expire",
|
||||
"Burn after reading":
|
||||
"Effacer après lecture",
|
||||
"Open discussion":
|
||||
"Autoriser la discussion",
|
||||
"Password (recommended)":
|
||||
"Mot de passe (recommandé)",
|
||||
"Discussion":
|
||||
"Discussion",
|
||||
"Toggle navigation":
|
||||
"Basculer la navigation",
|
||||
"%d seconds": ["%d seconde", "%d secondes"],
|
||||
"%d minutes": ["%d minute", "%d minutes"],
|
||||
"%d hours": ["%d heure", "%d heures"],
|
||||
"%d days": ["%d jour", "%d jours"],
|
||||
"%d weeks": ["%d semaine", "%d semaines"],
|
||||
"%d months": ["%d mois", "%d mois"],
|
||||
"%d years": ["%d an", "%d ans"],
|
||||
"Never":
|
||||
"Jamais",
|
||||
"Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service.":
|
||||
"Note : Ceci est un service de test : les données peuvent être supprimées à tout moment. Des chatons mourront si vous utilisez ce service de manière abusive.",
|
||||
"This document will expire in %d seconds.":
|
||||
["Ce document expirera dans %d seconde.", "Ce document expirera dans %d secondes."],
|
||||
"This document will expire in %d minutes.":
|
||||
["Ce document expirera dans %d minute.", "Ce document expirera dans %d minutes."],
|
||||
"This document will expire in %d hours.":
|
||||
["Ce document expirera dans %d heure.", "Ce document expirera dans %d heures."],
|
||||
"This document will expire in %d days.":
|
||||
["Ce document expirera dans %d jour.", "Ce document expirera dans %d jours."],
|
||||
"This document will expire in %d months.":
|
||||
["Ce document expirera dans %d mois.", "Ce document expirera dans %d mois."],
|
||||
"Please enter the password for this paste:":
|
||||
"Entrez le mot de passe pour ce paste:",
|
||||
"Could not decrypt data (Wrong key?)":
|
||||
"Impossible de déchiffrer les données (mauvaise clé ?)",
|
||||
"Could not delete the paste, it was not stored in burn after reading mode.":
|
||||
"Impossible de supprimer le paste, car il n'a pas été stocké en mode \"Effacer après lecture\".",
|
||||
"FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.":
|
||||
"POUR VOS YEUX UNIQUEMENT. Ne fermez pas cette fenêtre, ce paste ne pourra plus être affiché.",
|
||||
"Could not decrypt comment; Wrong key?":
|
||||
"Impossible de déchiffrer le commentaire ; mauvaise clé ?",
|
||||
"Reply":
|
||||
"Répondre",
|
||||
"Anonymous":
|
||||
"Anonyme",
|
||||
"Avatar generated from IP address":
|
||||
"Avatar généré à partir de l'adresse IP",
|
||||
"Add comment":
|
||||
"Ajouter un commentaire",
|
||||
"Optional nickname…":
|
||||
"Pseudonyme optionnel…",
|
||||
"Post comment":
|
||||
"Poster le commentaire",
|
||||
"Sending comment…":
|
||||
"Envoi du commentaire…",
|
||||
"Comment posted.":
|
||||
"Commentaire posté.",
|
||||
"Could not refresh display: %s":
|
||||
"Impossible de rafraichir l'affichage : %s",
|
||||
"unknown status":
|
||||
"Statut inconnu",
|
||||
"server error or not responding":
|
||||
"Le serveur ne répond pas ou a rencontré une erreur",
|
||||
"Could not post comment: %s":
|
||||
"Impossible de poster le commentaire : %s",
|
||||
"Please move your mouse for more entropy…":
|
||||
"Merci de bouger votre souris pour plus d'entropie…",
|
||||
"Sending paste…":
|
||||
"Envoi du paste…",
|
||||
"Your paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit [Ctrl]+[c] to copy)</span>":
|
||||
"Votre paste est disponible à l'adresse <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Appuyez sur [Ctrl]+[c] pour copier)</span>",
|
||||
"Delete data":
|
||||
"Supprimer les données du paste",
|
||||
"Could not create paste: %s":
|
||||
"Impossible de créer le paste : %s",
|
||||
"Cannot decrypt paste: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)":
|
||||
"Impossible de déchiffrer le paste : Clé de déchiffrement manquante dans l'URL (Avez-vous utilisé un redirecteur ou un site de réduction d'URL qui supprime une partie de l'URL ?)",
|
||||
"B": "o",
|
||||
"KiB": "Kio",
|
||||
"MiB": "Mio",
|
||||
"GiB": "Gio",
|
||||
"TiB": "Tio",
|
||||
"PiB": "Pio",
|
||||
"EiB": "Eio",
|
||||
"ZiB": "Zio",
|
||||
"YiB": "Yio",
|
||||
"Format": "Format",
|
||||
"Plain Text": "Texte brut",
|
||||
"Source Code": "Code source",
|
||||
"Markdown": "Markdown",
|
||||
"Download attachment": "Télécharger la pièce jointe",
|
||||
"Cloned: '%s'": "Cloner '%s'",
|
||||
"The cloned file '%s' was attached to this paste.": "Le fichier cloné '%s' a été attaché à ce paste.",
|
||||
"Attach a file": "Attacher un fichier ",
|
||||
"alternatively drag & drop a file or paste an image from the clipboard": "alternatively drag & drop a file or paste an image from the clipboard",
|
||||
"File too large, to display a preview. Please download the attachment.": "File too large, to display a preview. Please download the attachment.",
|
||||
"Remove attachment": "Enlever l'attachement",
|
||||
"Your browser does not support uploading encrypted files. Please use a newer browser.":
|
||||
"Votre navigateur ne supporte pas l'envoi de fichiers chiffrés. Merci d'utiliser un navigateur plus récent.",
|
||||
"Invalid attachment.": "Attachement invalide.",
|
||||
"Options": "Options",
|
||||
"Shorten URL": "Raccourcir URL",
|
||||
"Editor": "Éditer",
|
||||
"Preview": "Prévisualiser",
|
||||
"%s requires the PATH to end in a \"%s\". Please update the PATH in your index.php.":
|
||||
"%s requiert que le PATH se termine dans un \"%s\". Veuillez mettre à jour le PATH dans votre index.php.",
|
||||
"Decrypt":
|
||||
"Déchiffrer",
|
||||
"Enter password":
|
||||
"Entrez le mot de passe",
|
||||
"Loading…": "Chargement…",
|
||||
"Decrypting paste…": "Déchiffrement du paste…",
|
||||
"Preparing new paste…": "Préparation du paste…",
|
||||
"In case this message never disappears please have a look at <a href=\"https://github.com/PrivateBin/PrivateBin/wiki/FAQ#why-does-not-the-loading-message-go-away\">this FAQ for information to troubleshoot</a>.":
|
||||
"Si ce message ne disparaîssait pas, jetez un oeil à <a href=\"https://github.com/PrivateBin/PrivateBin/wiki/FAQ#why-does-not-the-loading-message-go-away\">cette FAQ pour des idées de résolution</a> (en Anglais).",
|
||||
"+++ no paste text +++": "+++ pas de paste-text +++"
|
||||
}
|
@ -0,0 +1,157 @@
|
||||
{
|
||||
"PrivateBin": "PrivateBin",
|
||||
"%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted <i>in the browser</i> using 256 bits AES. More information on the <a href=\"https://privatebin.info/\">project page</a>.":
|
||||
"A %s egy minimalista, nyílt forráskódú adattároló szoftver, ahol a szerver semmilyen információt nem tárol a feltett adatról. Azt ugyanis a <i>böngésződ</i> segítségével titkosítja és oldja fel 256 bit hosszú titkosítási kulcsú AES-t használva. További információt a <a href=\"https://privatebin.info/\">projekt oldalán</a> találsz.",
|
||||
"Because ignorance is bliss":
|
||||
"A titok egyfajta hatalom.",
|
||||
"en": "hu",
|
||||
"Paste does not exist, has expired or has been deleted.":
|
||||
"A bejegyzés nem létezik, lejárt vagy törölve lett.",
|
||||
"%s requires php %s or above to work. Sorry.":
|
||||
"Bocs, de a %s működéséhez %s vagy ezt meghaladó verziójú php-s környezet szükséges.",
|
||||
"%s requires configuration section [%s] to be present in configuration file.":
|
||||
"A %s megfelelő működéséhez a konfigurációs fájlban a [%s] résznek léteznie kell.",
|
||||
"Please wait %d seconds between each post.":
|
||||
"Kérlek várj %d másodpercet két beküldés között.",
|
||||
"Paste is limited to %s of encrypted data.":
|
||||
"A bejegyzés maximális hossza: %s",
|
||||
"Invalid data.":
|
||||
"Érvénytelen adat.",
|
||||
"You are unlucky. Try again.":
|
||||
"Peched volt, próbáld újra.",
|
||||
"Error saving comment. Sorry.":
|
||||
"Nem sikerült menteni a hozzászólást. Bocs.",
|
||||
"Error saving paste. Sorry.":
|
||||
"Nem sikerült menteni a bejegyzést. Bocs.",
|
||||
"Invalid paste ID.":
|
||||
"Érvénytelen bejegyzés azonosító.",
|
||||
"Paste is not of burn-after-reading type.":
|
||||
"A bejegyzés nem semmisül meg azonnal olvasás után.",
|
||||
"Wrong deletion token. Paste was not deleted.":
|
||||
"Hibás törlési azonosító. A bejegyzés nem lett törölve.",
|
||||
"Paste was properly deleted.":
|
||||
"A bejegyzés sikeresen törölve.",
|
||||
"JavaScript is required for %s to work.<br />Sorry for the inconvenience.":
|
||||
"JavaScript szükséges a %s működéséhez. Elnézést a fennakadásért.",
|
||||
"%s requires a modern browser to work.":
|
||||
"A %s működéséhez a jelenleginél újabb böngészőre van szükség.",
|
||||
"Still using Internet Explorer? Do yourself a favor, switch to a modern browser:":
|
||||
"Még mindig Internet Explorert használsz? Ideje váltani:",
|
||||
"New":
|
||||
"Új",
|
||||
"Send":
|
||||
"Beküldöm!",
|
||||
"Clone":
|
||||
"Másol",
|
||||
"Raw text":
|
||||
"A nyers szöveg",
|
||||
"Expires":
|
||||
"Lejárati idő",
|
||||
"Burn after reading":
|
||||
"Törlés az első olvasás után",
|
||||
"Open discussion":
|
||||
"Hozzászólások engedélyezése",
|
||||
"Password (recommended)":
|
||||
"Jelszó (ajánlott)",
|
||||
"Discussion":
|
||||
"Hozzászólások",
|
||||
"Toggle navigation":
|
||||
"Navigáció",
|
||||
"%d seconds": ["%d másodperc", "%d másodperc"],
|
||||
"%d minutes": ["%d perc", "%d perc"],
|
||||
"%d hours": ["%d óra", "%d óra"],
|
||||
"%d days": ["%d nap", "%d nap"],
|
||||
"%d weeks": ["%d hét", "%d hét"],
|
||||
"%d months": ["%d hónap", "%d hónap"],
|
||||
"%d years": ["%d év", "%d év"],
|
||||
"Never":
|
||||
"Soha",
|
||||
"Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service.":
|
||||
"Megjegyzés: ez egy teszt szolgáltatás, az adatok bármikor törlődhetnek. Ha visszaélsz vele, kiscicák bánhatják! :)",
|
||||
"This document will expire in %d seconds.":
|
||||
["Ez a bejegyzés %d másodperc után megsemmisül.", "Ez a bejegyzés %d másodperc múlva megsemmisül."],
|
||||
"This document will expire in %d minutes.":
|
||||
["Ez a bejegyzés %d perc után megsemmisül.", "Ez a bejegyzés %d perc múlva megsemmisül."],
|
||||
"This document will expire in %d hours.":
|
||||
["Ez a bejegyzés %d óra után megsemmisül.", "Ez a bejegyzés %d óra múlva megsemmisül."],
|
||||
"This document will expire in %d days.":
|
||||
["Ez a bejegyzés %d nap után megsemmisül.", "Ez a bejegyzés %d nap múlva megsemmisül."],
|
||||
"This document will expire in %d months.":
|
||||
["Ez a bejegyzés %d hónap múlva megsemmisül.", "Ez a bejegyzés %d hónap múlva megsemmisül."],
|
||||
"Please enter the password for this paste:":
|
||||
"Add meg a szükséges jelszót a bejegyzés megtekintéséhez:",
|
||||
"Could not decrypt data (Wrong key?)":
|
||||
"Nem tudtuk dekódolni az adatot. Talán rossz kulcsot adtál meg?",
|
||||
"Could not delete the paste, it was not stored in burn after reading mode.":
|
||||
"Nem tudtuk törölni a bejegyzést, mivel az olvasás után egyből megsemmisült. Így nem is volt tárolva.",
|
||||
"FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.":
|
||||
"EZT A BEJEGYZÉST CSAK TE LÁTHATOD!!! Ne csukd be ezt az ablakot, mivel nem tudod újra megnézni. Az ugyanis az első olvasás után rögtön megsemmisül.",
|
||||
"Could not decrypt comment; Wrong key?":
|
||||
"Nem tudtuk dekódolni a hozzászólást. Talán rossz kulcsot adtál meg?",
|
||||
"Reply":
|
||||
"Válasz",
|
||||
"Anonymous":
|
||||
"Anonymous",
|
||||
"Avatar generated from IP address":
|
||||
"Avatar (az IP cím alapján generáljuk)",
|
||||
"Add comment":
|
||||
"Hozzászólok",
|
||||
"Optional nickname…":
|
||||
"Becenév (már ha meg akarod adni)",
|
||||
"Post comment":
|
||||
"Beküld",
|
||||
"Sending comment…":
|
||||
"Beküldés alatt...",
|
||||
"Comment posted.":
|
||||
"A hozzászólás beküldve.",
|
||||
"Could not refresh display: %s":
|
||||
"Nem tudtuk frissíteni: %s",
|
||||
"unknown status":
|
||||
"Ismeretlen státusz.",
|
||||
"server error or not responding":
|
||||
"A szerveren hiba lépett fel vagy nem válaszol.",
|
||||
"Could not post comment: %s":
|
||||
"Nem tudtuk beküldeni a hozzászólást: %s",
|
||||
"Please move your mouse for more entropy…":
|
||||
"Nincs elég véletlenszerűség a rendszerben. Mozgasd az egered, hogy növeld az entrópiát.",
|
||||
"Sending paste…":
|
||||
"Bejegyzés elküldése...",
|
||||
"Your paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit [Ctrl]+[c] to copy)</span>":
|
||||
"A bejegyzésed a <a id=\"pasteurl\" href=\"%s\">%s</a> címen elérhető. <span id=\"copyhint\"> [Ctrl]+[c]-vel tudod vágólapra másolni.</span>",
|
||||
"Delete data":
|
||||
"Adat törlése",
|
||||
"Could not create paste: %s":
|
||||
"Nem tudtuk létrehozni a bejegyzést: %s",
|
||||
"Cannot decrypt paste: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)":
|
||||
"Nem tudjuk dekódolni a bejegyzést: a dekódoláshoz szükséges kulcs hiányzik a címből. Talán URL rövidítőt használtál ami kivágta azt belőle?",
|
||||
"Format": "Formátum",
|
||||
"Plain Text": "Egyszerű szöveg",
|
||||
"Source Code": "Forráskód",
|
||||
"Markdown": "Markdown",
|
||||
"Download attachment": "Csatolmány letöltése",
|
||||
"Cloned: '%s'": "'%s' másolva",
|
||||
"The cloned file '%s' was attached to this paste.": "A másolt '%s' csatolmányt hozzáadtuk ehhez a bejegyzéshez.",
|
||||
"Attach a file": "Fájl csatolása",
|
||||
"alternatively drag & drop a file or paste an image from the clipboard": "vagy húzz ide egy fájlt, netán illessz be egy képet a vágólapról.",
|
||||
"File too large, to display a preview. Please download the attachment.": "A fájl túl nagy ahhoz, hogy előnézete legyen. Töltsd le, hogy megtekinthesd.",
|
||||
"Remove attachment": "Csatolmány eltávolítása",
|
||||
"Your browser does not support uploading encrypted files. Please use a newer browser.":
|
||||
"A böngésződ nem támogatja titkosított fájlok feltöltését. Használj újabbat.",
|
||||
"Invalid attachment.": "Érvénytelen csatolmány.",
|
||||
"Options": "Opciók",
|
||||
"Shorten URL": "URL rövidítés",
|
||||
"Editor": "Szerkesztő felület",
|
||||
"Preview": "Előnézet",
|
||||
"%s requires the PATH to end in a \"%s\". Please update the PATH in your index.php.":
|
||||
"%s számára szükséges, hogy a PATH itt végződjön: \"%s\". Kérlek frissítsd a PATH értékét az index.php fájlban.",
|
||||
"Decrypt":
|
||||
"Dekódolás",
|
||||
"Enter password":
|
||||
"Jelszó",
|
||||
"Loading…": "Folyamatban...",
|
||||
"Decrypting paste…": "Bejegyzés dekódolása...",
|
||||
"Preparing new paste…": "Új bejegyzés előkészítése...",
|
||||
"In case this message never disappears please have a look at <a href=\"https://github.com/PrivateBin/PrivateBin/wiki/FAQ#why-does-not-the-loading-message-go-away\">this FAQ for information to troubleshoot</a>.":
|
||||
"Abban az esetben, ha ez az üzenet mindig látható lenne, látogass el a <a href=\"https://github.com/PrivateBin/PrivateBin/wiki/FAQ#why-does-not-the-loading-message-go-away\">Gyakran Ismételt Kérdések szekcióba a megoldásához</a>.",
|
||||
"+++ no paste text +++": "+++ nincs beillesztett szöveg +++"
|
||||
}
|
@ -0,0 +1,157 @@
|
||||
{
|
||||
"PrivateBin": "PrivateBin",
|
||||
"%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted <i>in the browser</i> using 256 bits AES. More information on the <a href=\"https://privatebin.info/\">project page</a>.":
|
||||
"%s è un sistema di tipo \"Pastebin\" online, open source, minimalista. Il server non possiede alcuna conoscenza (\"Zero Knowledge\") del contenuto dei dati inviati. I dati sono cifrati/decifrati <i>nel Browser</i> con algoritmo AES a 256 Bit. Per ulteriori informazioni, vedi <a href=\"https://privatebin.info/\">Sito del progetto</a>.",
|
||||
"Because ignorance is bliss":
|
||||
"Perché l'ignoranza è una benedizione (Because ignorance is bliss)",
|
||||
"en": "it",
|
||||
"Paste does not exist, has expired or has been deleted.":
|
||||
"Questo messaggio non esiste, è scaduto o è stato cancellato.",
|
||||
"%s requires php %s or above to work. Sorry.":
|
||||
"%s richiede php %s o superiore per funzionare. Ci spiace.",
|
||||
"%s requires configuration section [%s] to be present in configuration file.":
|
||||
"%s richiede la presenza della sezione [%s] nei file di configurazione.",
|
||||
"Please wait %d seconds between each post.":
|
||||
"Attendi per favore %d secondi prima di ciascun invio.",
|
||||
"Paste is limited to %s of encrypted data.":
|
||||
"La dimensione del messaggio è limitata a %s di dati cifrati.",
|
||||
"Invalid data.":
|
||||
"Dati non validi.",
|
||||
"You are unlucky. Try again.":
|
||||
"Ritenta, sarai più fortunato.",
|
||||
"Error saving comment. Sorry.":
|
||||
"Errore durante il salvataggio del commento.",
|
||||
"Error saving paste. Sorry.":
|
||||
"Errore durante il salvataggio del messaggio.",
|
||||
"Invalid paste ID.":
|
||||
"ID-Messaggio non valido.",
|
||||
"Paste is not of burn-after-reading type.":
|
||||
"Il messaggio non è di tipo Distruggi-dopo-lettura.",
|
||||
"Wrong deletion token. Paste was not deleted.":
|
||||
"Codice cancellazione errato. Il messaggio NON è stato cancellato.",
|
||||
"Paste was properly deleted.":
|
||||
"Il messaggio è stato correttamente cancellato.",
|
||||
"JavaScript is required for %s to work.<br />Sorry for the inconvenience.":
|
||||
"%s funziona solo con JavaScript attivo.<br />Ci dispiace per l'inconveniente.",
|
||||
"%s requires a modern browser to work.":
|
||||
"%s richiede un browser moderno e aggiornato per funzionare.",
|
||||
"Still using Internet Explorer? Do yourself a favor, switch to a modern browser:":
|
||||
"Usi ancora Internet Explorer? Ti consigliamo di passare ad un browser più sicuro:",
|
||||
"New":
|
||||
"Nuovo",
|
||||
"Send":
|
||||
"Invia",
|
||||
"Clone":
|
||||
"Clona",
|
||||
"Raw text":
|
||||
"Testo Raw",
|
||||
"Expires":
|
||||
"Scade",
|
||||
"Burn after reading":
|
||||
"Distruggi dopo lettura",
|
||||
"Open discussion":
|
||||
"Apri discussione",
|
||||
"Password (recommended)":
|
||||
"Password (raccomandato)",
|
||||
"Discussion":
|
||||
"Discussione",
|
||||
"Toggle navigation":
|
||||
"Scambia Navigazione",
|
||||
"%d seconds": ["%d secondo", "%d secondi"],
|
||||
"%d minutes": ["%d minuto", "%d minuti"],
|
||||
"%d hours": ["%d ora", "%d ore"],
|
||||
"%d days": ["%d giorno", "%d giorni"],
|
||||
"%d weeks": ["%d settimana", "%d settimane"],
|
||||
"%d months": ["%d mese", "%d mesi"],
|
||||
"%d years": ["%d anno", "%d anni"],
|
||||
"Never":
|
||||
"Mai",
|
||||
"Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service.":
|
||||
"Nota: questo è un servizio di prova, i messaggi salvati possono essere cancellati in qualsiasi momento. Moriranno dei gattini se abuserai di questo servizio.",
|
||||
"This document will expire in %d seconds.":
|
||||
["Questo documento scadrà tra un secondo.", "Questo documento scadrà in %d secondi."],
|
||||
"This document will expire in %d minutes.":
|
||||
["Questo documento scadrà tra un minuto.", "Questo documento scadrà in %d minuti."],
|
||||
"This document will expire in %d hours.":
|
||||
["Questo documento scadrà tra un'ora.", "Questo documento scadrà in %d ore."],
|
||||
"This document will expire in %d days.":
|
||||
["Questo documento scadrà tra un giorno.", "Questo documento scadrà in %d giorni."],
|
||||
"This document will expire in %d months.":
|
||||
["Questo documento scadrà tra un mese.", "Questo documento scadrà in %d mesi."],
|
||||
"Please enter the password for this paste:":
|
||||
"Inserisci la password per questo messaggio:",
|
||||
"Could not decrypt data (Wrong key?)":
|
||||
"Non riesco a decifrari i dati (Chiave errata?)",
|
||||
"Could not delete the paste, it was not stored in burn after reading mode.":
|
||||
"Non riesco a cancellare il messaggio, non è stato salvato in modalità Distruggi-dopo-lettora.",
|
||||
"FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.":
|
||||
"FOR YOUR EYES ONLY. Non chiudere questa finestra, il messaggio non può essere visualizzato una seconda volta.",
|
||||
"Could not decrypt comment; Wrong key?":
|
||||
"Non riesco a decifrare il commento (Chiave errata?)",
|
||||
"Reply":
|
||||
"Rispondi",
|
||||
"Anonymous":
|
||||
"Anonimo",
|
||||
"Avatar generated from IP address":
|
||||
"Avatar generato dall'indirizzo IP)",
|
||||
"Add comment":
|
||||
"Aggiungi un commento",
|
||||
"Optional nickname…":
|
||||
"Nickname opzionale…",
|
||||
"Post comment":
|
||||
"Invia commento",
|
||||
"Sending comment…":
|
||||
"Commento in fase di invio…",
|
||||
"Comment posted.":
|
||||
"Commento inviato.",
|
||||
"Could not refresh display: %s":
|
||||
"Non riesco ad aggiornare il display: %s",
|
||||
"unknown status":
|
||||
"stato sconosciuto",
|
||||
"server error or not responding":
|
||||
"errore o mancata risposta dal server",
|
||||
"Could not post comment: %s":
|
||||
"Impossibile inviare il commento: %s",
|
||||
"Please move your mouse for more entropy…":
|
||||
"Muovi il mouse in modo casuale, per generare maggior entropia…",
|
||||
"Sending paste…":
|
||||
"Messaggio in fase di invio…",
|
||||
"Your paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit [Ctrl]+[c] to copy)</span>":
|
||||
"Il tuo messaggio è qui: <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Premi [Ctrl]+[c] (Windows) o [Cmd]+[c] (Mac) per copiare il link)</span>",
|
||||
"Delete data":
|
||||
"Cancella i dati",
|
||||
"Could not create paste: %s":
|
||||
"Non riesco a creare il messaggio: %s",
|
||||
"Cannot decrypt paste: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)":
|
||||
"Non riesco a decifrare il messaggio: manca la chiave di decifrazione nell'URL (La chiave è parte integrante dell'URL. Per caso hai usato un Redirector o un altro servizio che ha rimosso una parte dell'URL?)",
|
||||
"Format": "Formato",
|
||||
"Plain Text": "Solo Testo",
|
||||
"Source Code": "Codice Sorgente",
|
||||
"Markdown": "Markdown",
|
||||
"Download attachment": "Scarica Allegato",
|
||||
"Cloned: '%s'": "Clonato: '%s'",
|
||||
"The cloned file '%s' was attached to this paste.": "Il file clonato '%s' era allegato a questo messaggio.",
|
||||
"Attach a file": "Allega un file",
|
||||
"alternatively drag & drop a file or paste an image from the clipboard": "alternatively drag & drop a file or paste an image from the clipboard",
|
||||
"File too large, to display a preview. Please download the attachment.": "File too large, to display a preview. Please download the attachment.",
|
||||
"Remove attachment": "Rimuovi allegato",
|
||||
"Your browser does not support uploading encrypted files. Please use a newer browser.":
|
||||
"Il tuo browser non supporta l'invio di file cifrati. Utilizza un browser più recente.",
|
||||
"Invalid attachment.": "Allegato non valido.",
|
||||
"Options": "Opzioni",
|
||||
"Shorten URL": "Accorcia URL",
|
||||
"Editor": "Editor",
|
||||
"Preview": "Preview",
|
||||
"%s requires the PATH to end in a \"%s\". Please update the PATH in your index.php.":
|
||||
"%s necessita che PATH termini con \"%s\". Aggiorna la variabile PATH nel tuo index.php.",
|
||||
"Decrypt":
|
||||
"Decifra",
|
||||
"Enter password":
|
||||
"Inserisci la password",
|
||||
"Loading…": "Carico…",
|
||||
"Decrypting paste…": "Decifro il messaggio…",
|
||||
"Preparing new paste…": "Preparo il nuovo messaggio…",
|
||||
"In case this message never disappears please have a look at <a href=\"https://github.com/PrivateBin/PrivateBin/wiki/FAQ#why-does-not-the-loading-message-go-away\">this FAQ for information to troubleshoot</a>.":
|
||||
"Nel caso questo messaggio non scompaia, controlla questa <a href=\"https://github.com/PrivateBin/PrivateBin/wiki/FAQ#why-does-not-the-loading-message-go-away\">FAQ</a> per trovare informazioni su come risolvere il problema (in Inglese).",
|
||||
"+++ no paste text +++": "+++ nessun testo nel messaggio +++"
|
||||
}
|
@ -0,0 +1,157 @@
|
||||
{
|
||||
"PrivateBin": "PrivateBin",
|
||||
"%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted <i>in the browser</i> using 256 bits AES. More information on the <a href=\"https://privatebin.info/\">project page</a>.":
|
||||
"%s is een minimalistische, open source online pastebin waarbij de server geen kennis heeft van de geplakte gegevens. Gegevens worden gecodeerd/gedecodeerd <i> in de browser </i> met behulp van 256 bits AES. Meer informatie is te vinden op de <a href=\"https://privatebin.info/\">projectpagina</a>.",
|
||||
"Because ignorance is bliss":
|
||||
"Onwetendheid is een zegen",
|
||||
"en": "nl",
|
||||
"Paste does not exist, has expired or has been deleted.":
|
||||
"Geplakte tekst bestaat niet, is verlopen of verwijderd.",
|
||||
"%s requires php %s or above to work. Sorry.":
|
||||
"%s vereist PHP %s of hoger om te kunnen werken. Sorry",
|
||||
"%s requires configuration section [%s] to be present in configuration file.":
|
||||
"%s vereist dat de configuratiesectie [%s] aanwezig is in het configuratiebestand",
|
||||
"Please wait %d seconds between each post.":
|
||||
"Alstublieft %d seconden wachten tussen elk bericht",
|
||||
"Paste is limited to %s of encrypted data.":
|
||||
"Geplakte tekst is beperkt tot %s aan versleutelde gegevens",
|
||||
"Invalid data.":
|
||||
"Ongeldige gegevens",
|
||||
"You are unlucky. Try again.":
|
||||
"Helaas. Probeer het nog eens",
|
||||
"Error saving comment. Sorry.":
|
||||
"Fout bij het opslaan van het commentaar. Sorry",
|
||||
"Error saving paste. Sorry.":
|
||||
"Fout bij het opslaan van de geplakte tekst. Sorry.",
|
||||
"Invalid paste ID.":
|
||||
"Ongeldige ID.",
|
||||
"Paste is not of burn-after-reading type.":
|
||||
"Geplakte tekst is geen 'vernietig na lezen' type",
|
||||
"Wrong deletion token. Paste was not deleted.":
|
||||
"Foutieve verwijdercode. Geplakte tekst is niet verwijderd.",
|
||||
"Paste was properly deleted.":
|
||||
"Geplakte tekst is correct verwijderd.",
|
||||
"JavaScript is required for %s to work.<br />Sorry for the inconvenience.":
|
||||
"JavaScript vereist om %s te laten werken.<br />Sorry voor het ongemak.",
|
||||
"%s requires a modern browser to work.":
|
||||
"%s vereist een moderne browser om te kunnen werken ",
|
||||
"Still using Internet Explorer? Do yourself a favor, switch to a modern browser:":
|
||||
"Gebruik je nog steeds Internet explorer? Doe jezelf een plezier en maak gebruik van een moderne browser:",
|
||||
"New":
|
||||
"Nieuw",
|
||||
"Send":
|
||||
"Verzenden",
|
||||
"Clone":
|
||||
"Clonen",
|
||||
"Raw text":
|
||||
"Onbewerkte tekst",
|
||||
"Expires":
|
||||
"Verloopt",
|
||||
"Burn after reading":
|
||||
"Vernietig na lezen",
|
||||
"Open discussion":
|
||||
"Open discussie",
|
||||
"Password (recommended)":
|
||||
"Wachtwoord (aanbevolen)",
|
||||
"Discussion":
|
||||
"Discussie",
|
||||
"Toggle navigation":
|
||||
"Navigatie openen/sluiten",
|
||||
"%d seconds": ["%d second", "%d seconden"],
|
||||
"%d minutes": ["%d minuut", "%d minuten"],
|
||||
"%d hours": ["%d uur"],
|
||||
"%d days": ["%d dag", "%d dagen"],
|
||||
"%d weeks": ["%d week", "%d weken"],
|
||||
"%d months": ["%d maand", "%d maanden"],
|
||||
"%d years": ["%d jaar"],
|
||||
"Never":
|
||||
"Nooit",
|
||||
"Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service.":
|
||||
"Opmerking: Dit is een testservice: Gegevens kunnen op elk gegeven moment verwijderd worden.",
|
||||
"This document will expire in %d seconds.":
|
||||
["Dit document verloopt over %d second.", "Dit document verloopt over %d seconden."],
|
||||
"This document will expire in %d minutes.":
|
||||
["Dit document verloopt over %d minuut.", "Dit document verloopt over %d minuten"],
|
||||
"This document will expire in %d hours.":
|
||||
["Dit document verloopt over %d uur."],
|
||||
"This document will expire in %d days.":
|
||||
["Dit document verloopt over %d dag.", "Dit document verloopt over %d dagen."],
|
||||
"This document will expire in %d months.":
|
||||
["Dit document verloopt over %d maand.", "Dit document verloopt over %d maanden."],
|
||||
"Please enter the password for this paste:":
|
||||
"Voer het wachtwoord in voor deze geplakte tekst:",
|
||||
"Could not decrypt data (Wrong key?)":
|
||||
"Kon de gegevens niet decoderen (verkeerde sleutel?)",
|
||||
"Could not delete the paste, it was not stored in burn after reading mode.":
|
||||
"Verwijderen van de geplakte tekst niet mogelijk, deze werd niet opgeslagen in 'vernietig na lezen' modus.",
|
||||
"FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.":
|
||||
"FOR YOUR EYES ONLY. Sluit dit venster niet, dit bericht kan niet opnieuw worden weergegeven.",
|
||||
"Could not decrypt comment; Wrong key?":
|
||||
"Kon het commentaar niet decoderen; Verkeerde sleutel?",
|
||||
"Reply":
|
||||
"Beantwoorden",
|
||||
"Anonymous":
|
||||
"Anoniem",
|
||||
"Avatar generated from IP address":
|
||||
"Anonieme avatar (van het IP adres)",
|
||||
"Add comment":
|
||||
"Commentaar toevoegen",
|
||||
"Optional nickname…":
|
||||
"Optionele bijnaam…",
|
||||
"Post comment":
|
||||
"Plaats een commentaar",
|
||||
"Sending comment…":
|
||||
"Commentaar verzenden…",
|
||||
"Comment posted.":
|
||||
"Commentaar geplaatst.",
|
||||
"Could not refresh display: %s":
|
||||
"Kon de weergave niet vernieuwen: %s",
|
||||
"unknown status":
|
||||
"Onbekende status",
|
||||
"server error or not responding":
|
||||
"Serverfout of server reageert niet",
|
||||
"Could not post comment: %s":
|
||||
"Kon het commentaar niet plaatsen: %s",
|
||||
"Please move your mouse for more entropy…":
|
||||
"Aub uw muis bewegen voor meer entropie…",
|
||||
"Sending paste…":
|
||||
"Geplakte tekst verzenden…",
|
||||
"Your paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit [Ctrl]+[c] to copy)</span>":
|
||||
"Uw geplakte tekst is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Druk [Ctrl]+[c] om te kopiëren)</span>",
|
||||
"Delete data":
|
||||
"Gegevens wissen",
|
||||
"Could not create paste: %s":
|
||||
"Kon de geplakte tekst niet aanmaken: %s",
|
||||
"Cannot decrypt paste: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)":
|
||||
"Kon de geplakte tekst niet decoderen: Decoderingssleutel ontbreekt in URL (Hebt u een redirector of een URL-verkorter gebruikt die een deel van de URL verwijdert?)",
|
||||
"Format": "Formaat",
|
||||
"Plain Text": "Platte tekst",
|
||||
"Source Code": "Broncode",
|
||||
"Markdown": "Markdown",
|
||||
"Download attachment": "Bijlage downloaden",
|
||||
"Cloned: '%s'": "Gekloond: '%s'",
|
||||
"The cloned file '%s' was attached to this paste.": "Het gekloonde bestand '%s' is bijgevoegd aan de geplakte tekst.",
|
||||
"Attach a file": "Een bestand toevoegen",
|
||||
"alternatively drag & drop a file or paste an image from the clipboard": "U kunt ook een bestand slepen en neerzetten of een afbeelding plakken van het klembord",
|
||||
"File too large, to display a preview. Please download the attachment.": "Het bestand is te groot om voorbeeld weer te geven. Aub de bijlage downloaden",
|
||||
"Remove attachment": "Bijlage verwijderen",
|
||||
"Your browser does not support uploading encrypted files. Please use a newer browser.":
|
||||
"Uw browser biedt geen ondersteuning voor het uploaden van gecodeerde bestanden. Gebruik alstublieft een nieuwere browser",
|
||||
"Invalid attachment.": "Ongeldige bijlage",
|
||||
"Options": "Opties",
|
||||
"Shorten URL": "URL verkorten",
|
||||
"Editor": "Editor",
|
||||
"Preview": "Preview",
|
||||
"%s requires the PATH to end in a \"%s\". Please update the PATH in your index.php.":
|
||||
"%s vereist dat het PATH eindigt in een '%s'. Aub het PATH updaten in uw index.php.",
|
||||
"Decrypt":
|
||||
"Decoderen",
|
||||
"Enter password":
|
||||
"Voer het wachtwoord in",
|
||||
"Loading…": "Laden…",
|
||||
"Decrypting paste…": "Geplakte tekst decoderen…",
|
||||
"Preparing new paste…": "Nieuwe geplakte tekst voorbereiden…",
|
||||
"In case this message never disappears please have a look at <a href=\"https://github.com/PrivateBin/PrivateBin/wiki/FAQ#why-does-not-the-loading-message-go-away\">this FAQ for information to troubleshoot</a>.":
|
||||
"In het geval dat dit bericht nooit verdwijnt, kijkt u dan eens naar <a href=\"https://github.com/PrivateBin/PrivateBin/wiki/FAQ#why-does-not-the-loading-message-go-away\"> veelgestelde vragen voor informatie over het oplossen van problemen </a>.",
|
||||
"+++ no paste text +++": "+++ geen geplakte tekst +++"
|
||||
}
|
@ -0,0 +1,157 @@
|
||||
{
|
||||
"PrivateBin": "PrivateBin",
|
||||
"%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted <i>in the browser</i> using 256 bits AES. More information on the <a href=\"https://privatebin.info/\">project page</a>.":
|
||||
"%s er en minimalistisk, åpen kildekode, elektronisk tilgjengelig pastebin hvor serveren ikke har kunnskap om dataene som limes inn. Dataene krypteres/dekrypteres <i>i nettleseren</i> ved hjelp av 256 bits AES. Mer informasjon om prosjektet på <a href=\"https://privatebin.info/\">prosjektsiden</a>.",
|
||||
"Because ignorance is bliss":
|
||||
"Fordi uvitenhet er lykke",
|
||||
"en": "no",
|
||||
"Paste does not exist, has expired or has been deleted.":
|
||||
"Innlegget eksisterer ikke, er utløpt eller har blitt slettet.",
|
||||
"%s requires php %s or above to work. Sorry.":
|
||||
"Beklager, %s krever php %s eller nyere for å kjøre.",
|
||||
"%s requires configuration section [%s] to be present in configuration file.":
|
||||
"%s krever konfigurasjonsdel [%s] å være til stede i konfigurasjonsfilen .",
|
||||
"Please wait %d seconds between each post.":
|
||||
"Vennligst vent %d sekunder mellom hvert innlegg.",
|
||||
"Paste is limited to %s of encrypted data.":
|
||||
"Innlegg er begrenset til %s av kryptert data.",
|
||||
"Invalid data.":
|
||||
"Ugyldige data.",
|
||||
"You are unlucky. Try again.":
|
||||
"Du er uheldig. Prøv igjen.",
|
||||
"Error saving comment. Sorry.":
|
||||
"Beklager, det oppstod en feil ved lagring kommentar.",
|
||||
"Error saving paste. Sorry.":
|
||||
"Beklager, det oppstod en feil ved lagring innlegg.",
|
||||
"Invalid paste ID.":
|
||||
"Feil innlegg ID.",
|
||||
"Paste is not of burn-after-reading type.":
|
||||
"Innlegg er ikke av typen slett etter lesing.",
|
||||
"Wrong deletion token. Paste was not deleted.":
|
||||
"Feil slettingsnøkkel. Innlegg ble ikke fjernet.",
|
||||
"Paste was properly deleted.":
|
||||
"Innlegget er slettet.",
|
||||
"JavaScript is required for %s to work.<br />Sorry for the inconvenience.":
|
||||
"Javascript kreves for at %s skal fungere<br />Beklager.",
|
||||
"%s requires a modern browser to work.":
|
||||
"%s krever en moderne nettleser for å fungere.",
|
||||
"Still using Internet Explorer? Do yourself a favor, switch to a modern browser:":
|
||||
"Fortsatt bruker av Internet Explorer? Gjør deg selv en tjeneste og bytt til en moderne nettleser:",
|
||||
"New":
|
||||
"Ny",
|
||||
"Send":
|
||||
"Send",
|
||||
"Clone":
|
||||
"Kopier",
|
||||
"Raw text":
|
||||
"Ren tekst",
|
||||
"Expires":
|
||||
"Utgår",
|
||||
"Burn after reading":
|
||||
"Slett etter lesing",
|
||||
"Open discussion":
|
||||
"Åpen diskusjon",
|
||||
"Password (recommended)":
|
||||
"Passord (anbefalt)",
|
||||
"Discussion":
|
||||
"Diskusjon",
|
||||
"Toggle navigation":
|
||||
"Veksle navigasjon",
|
||||
"%d seconds": ["%d sekund", "%d sekunder"],
|
||||
"%d minutes": ["%d minutt", "%d minutter"],
|
||||
"%d hours": ["%d time", "%d timer"],
|
||||
"%d days": ["%d dag", "%d dager"],
|
||||
"%d weeks": ["%d uke", "%d uker"],
|
||||
"%d months": ["%d måned", "%d måneder"],
|
||||
"%d years": ["%d år", "%d år"],
|
||||
"Never":
|
||||
"Aldri",
|
||||
"Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service.":
|
||||
"Merk: Dette er en test tjeneste: Data kan slettes når som helst. Kattunger vil dø hvis du misbruker denne tjenesten.",
|
||||
"This document will expire in %d seconds.":
|
||||
["Dette dokumentet vil utløpe om %d sekund.", "Dette dokumentet vil utløpe om %d sekunder."],
|
||||
"This document will expire in %d minutes.":
|
||||
["Dette dokumentet vil utløpe om %d minutt.", "Dette dokumentet vil utløpe om %d minutter."],
|
||||
"This document will expire in %d hours.":
|
||||
["Dette dokumentet vil utløpe om %d time.", "Dette dokumentet vil utløpe om %d timer."],
|
||||
"This document will expire in %d days.":
|
||||
["Dette dokumentet vil utløpe om %d dag.", "Dette dokumentet vil utløpe om %d dager."],
|
||||
"This document will expire in %d months.":
|
||||
["Dette dokumentet vil utløpe om %d måned.", "Dette dokumentet vil utløpe om %d måneder."],
|
||||
"Please enter the password for this paste:":
|
||||
"Vennligst skriv inn passordet for dette innlegget:",
|
||||
"Could not decrypt data (Wrong key?)":
|
||||
"Kunne ikke dekryptere data (Feil nøkkel?)",
|
||||
"Could not delete the paste, it was not stored in burn after reading mode.":
|
||||
"Kan ikke slette innlegget, det ble ikke lagret som 'slett etter les' type.",
|
||||
"FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.":
|
||||
"KUN FOR DINE ØYNE. Ikke lukk dette vinduet, denne meldingen kan ikke bli vist igjen.",
|
||||
"Could not decrypt comment; Wrong key?":
|
||||
"Kan ikke dekryptere kommentar; Feil nøkkel?",
|
||||
"Reply":
|
||||
"Svar",
|
||||
"Anonymous":
|
||||
"Anonym",
|
||||
"Avatar generated from IP address":
|
||||
"Anonym avatar generert med data fra IP adressen)",
|
||||
"Add comment":
|
||||
"Legg til kommentar",
|
||||
"Optional nickname…":
|
||||
"Valgfritt kallenavn…",
|
||||
"Post comment":
|
||||
"Send kommentar",
|
||||
"Sending comment…":
|
||||
"Sender Kommentar…",
|
||||
"Comment posted.":
|
||||
"Kommentar sendt.",
|
||||
"Could not refresh display: %s":
|
||||
"Kunne ikke oppdatere bildet: %s",
|
||||
"unknown status":
|
||||
"ukjent status",
|
||||
"server error or not responding":
|
||||
"tjener feilet eller svarer ikke",
|
||||
"Could not post comment: %s":
|
||||
"Kunne ikke sende kommentar: %s",
|
||||
"Please move your mouse for more entropy…":
|
||||
"Flytt musen for mer entropi…",
|
||||
"Sending paste…":
|
||||
"Sender innlegg…",
|
||||
"Your paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit [Ctrl]+[c] to copy)</span>":
|
||||
"Ditt innlegg er <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Trykk [Ctrl]+[c] for å kopiere)</span>",
|
||||
"Delete data":
|
||||
"Slett data",
|
||||
"Could not create paste: %s":
|
||||
"Kunne ikke opprette innlegg: %s",
|
||||
"Cannot decrypt paste: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)":
|
||||
"Kan ikke dekryptere innlegg: Dekrypteringsnøkkelen mangler i adressen (Har du bruket en redirector eller en URL forkorter som fjerner en del av addressen?)",
|
||||
"Format": "Format",
|
||||
"Plain Text": "Ren Tekst",
|
||||
"Source Code": "Kildekode",
|
||||
"Markdown": "Oppmerket",
|
||||
"Download attachment": "Last ned vedlegg",
|
||||
"Cloned: '%s'": "Kopiert: '%s'",
|
||||
"The cloned file '%s' was attached to this paste.": "The cloned file '%s' was attached to this paste.",
|
||||
"Attach a file": "Legg til fil",
|
||||
"alternatively drag & drop a file or paste an image from the clipboard": "alternatively drag & drop a file or paste an image from the clipboard",
|
||||
"File too large, to display a preview. Please download the attachment.": "File too large, to display a preview. Please download the attachment.",
|
||||
"Remove attachment": "Slett vedlegg",
|
||||
"Your browser does not support uploading encrypted files. Please use a newer browser.":
|
||||
"Nettleseren din støtter ikke å laste opp krypterte filer. Vennligst bruk en nyere nettleser.",
|
||||
"Invalid attachment.": "Ugyldig vedlegg.",
|
||||
"Options": "Alternativer",
|
||||
"Shorten URL": "Adresse forkorter",
|
||||
"Editor": "Rediger",
|
||||
"Preview": "Forhåndsvis",
|
||||
"%s requires the PATH to end in a \"%s\". Please update the PATH in your index.php.":
|
||||
"%s krever at PATH ender på \"%s\". Vennligst oppdater PATH i index.php.",
|
||||
"Decrypt":
|
||||
"Dekrypter",
|
||||
"Enter password":
|
||||
"Skriv inn passord",
|
||||
"Loading…": "Laster…",
|
||||
"Decrypting paste…": "Dekrypterer innlegg…",
|
||||
"Preparing new paste…": "Klargjør nytt innlegg…",
|
||||
"In case this message never disappears please have a look at <a href=\"https://github.com/PrivateBin/PrivateBin/wiki/FAQ#why-does-not-the-loading-message-go-away\">this FAQ for information to troubleshoot</a>.":
|
||||
"Hvis denne meldingen ikke forsvinner kan du ta en titt på siden med <a href=\"https://github.com/PrivateBin/PrivateBin/wiki/FAQ#why-does-not-the-loading-message-go-away\">ofte stilte spørsmål</a> for informasjon om feilsøking.",
|
||||
"+++ no paste text +++": "+++ ingen innleggstekst +++"
|
||||
}
|
@ -0,0 +1,157 @@
|
||||
{
|
||||
"PrivateBin": "PrivateBin",
|
||||
"%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted <i>in the browser</i> using 256 bits AES. More information on the <a href=\"https://privatebin.info/\">project page</a>.":
|
||||
"%s jest minimalistycznym, otwartoźródłowym serwisem typu pastebin, w którym serwer nie ma jakichkolwiek informacji o tym, co jest wklejane. Dane są szyfrowane i deszyfrowane <i>w przeglądarce</i> z użyciem 256-bitowego klucza AES. Więcej informacji na <a href=\"https://privatebin.info/\">stronie projektu</a>.",
|
||||
"Because ignorance is bliss":
|
||||
"Ponieważ ignorancja jest cnotą",
|
||||
"en": "pl",
|
||||
"Paste does not exist, has expired or has been deleted.":
|
||||
"Wklejka nie istnieje, wygasła albo została usunięta.",
|
||||
"%s requires php %s or above to work. Sorry.":
|
||||
"%s wymaga PHP w wersji %s lub nowszej, sorry.",
|
||||
"%s requires configuration section [%s] to be present in configuration file.":
|
||||
"%s wymaga obecności sekcji [%s] w pliku konfiguracyjnym.",
|
||||
"Please wait %d seconds between each post.":
|
||||
"Poczekaj %d sekund pomiędzy każdą wklejką.",
|
||||
"Paste is limited to %s of encrypted data.":
|
||||
"Wklejka jest limitowana do %s zaszyfrowanych danych.",
|
||||
"Invalid data.":
|
||||
"Nieprawidłowe dane.",
|
||||
"You are unlucky. Try again.":
|
||||
"Miałeś pecha. Spróbuj ponownie.",
|
||||
"Error saving comment. Sorry.":
|
||||
"Błąd przy zapisywaniu komentarza, sorry.",
|
||||
"Error saving paste. Sorry.":
|
||||
"Błąd przy zapisywaniu wklejki, sorry.",
|
||||
"Invalid paste ID.":
|
||||
"Nieprawidłowe ID wklejki.",
|
||||
"Paste is not of burn-after-reading type.":
|
||||
"Ta wklejka nie ulega autodestrukcji po przeczytaniu.",
|
||||
"Wrong deletion token. Paste was not deleted.":
|
||||
"Nieprawidłowy token usuwania. Wklejka nie została usunięta.",
|
||||
"Paste was properly deleted.":
|
||||
"Wklejka usunięta poprawnie.",
|
||||
"JavaScript is required for %s to work.<br />Sorry for the inconvenience.":
|
||||
"Do działania %sa jest wymagany JavaScript. Przepraszamy za tę niedogodność.",
|
||||
"%s requires a modern browser to work.":
|
||||
"%s wymaga do działania nowoczesnej przeglądarki.",
|
||||
"Still using Internet Explorer? Do yourself a favor, switch to a modern browser:":
|
||||
"Cały czas używasz Internet Explorera? Zrób sobie przysługę, przesiądź się na nowoczesną przeglądarkę:",
|
||||
"New":
|
||||
"Nowa",
|
||||
"Send":
|
||||
"Wyślij",
|
||||
"Clone":
|
||||
"Sklonuj",
|
||||
"Raw text":
|
||||
"Czysty tekst",
|
||||
"Expires":
|
||||
"Wygasa za",
|
||||
"Burn after reading":
|
||||
"Zniszcz po przeczytaniu",
|
||||
"Open discussion":
|
||||
"Otwarta dyskusja",
|
||||
"Password (recommended)":
|
||||
"Hasło (zalecane)",
|
||||
"Discussion":
|
||||
"Dyskusja",
|
||||
"Toggle navigation":
|
||||
"Przełącz nawigację",
|
||||
"%d seconds": ["%d second", "%d second", "%d second"],
|
||||
"%d minutes": ["%d minut", "%d minut", "%d minut"],
|
||||
"%d hours": ["%d godzina", "%d godzina", "%d godzinę"],
|
||||
"%d days": ["%d dzień", "%d dzień", "%d dzień"],
|
||||
"%d weeks": ["%d tydzień", "%d tydzień", "%d tydzień"],
|
||||
"%d months": ["%d miesiąc", "%d miesiąc", "%d miesiąc"],
|
||||
"%d years": ["%d rok", "%d rok", "%d rok"],
|
||||
"Never":
|
||||
"nigdy",
|
||||
"Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service.":
|
||||
"Notka: To jest usługa testowa. Dane mogą zostać usunięte w dowolnym momencie. Kociątka umrą, jeśli nadużyjesz tej usługi.",
|
||||
"This document will expire in %d seconds.":
|
||||
["Ten dokument wygaśnie za %d sekundę.", "Ten dokument wygaśnie za %d sekund."],
|
||||
"This document will expire in %d minutes.":
|
||||
["Ten dokument wygaśnie za %d minutę.", "Ten dokument wygaśnie za %d minut."],
|
||||
"This document will expire in %d hours.":
|
||||
["Ten dokument wygaśnie za godzinę.", "Ten dokument wygaśnie za %d godzin."],
|
||||
"This document will expire in %d days.":
|
||||
["Ten dokument wygaśnie za %d dzień.", "Ten dokument wygaśnie za %d dni."],
|
||||
"This document will expire in %d months.":
|
||||
["Ten dokument wygaśnie za miesiąc.", "Ten dokument wygaśnie za %d miesięcy."],
|
||||
"Please enter the password for this paste:":
|
||||
"Wpisz hasło dla tej wklejki:",
|
||||
"Could not decrypt data (Wrong key?)":
|
||||
"Nie udało się odszyfrować danych (zły klucz?)",
|
||||
"Could not delete the paste, it was not stored in burn after reading mode.":
|
||||
"Nie udało się usunąć wklejki, nie została zapisana w trybie zniszczenia po przeczytaniu.",
|
||||
"FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.":
|
||||
"TYLKO DO TWOJEGO WGLĄDU. Nie zamykaj tego okna, ta wiadomość nie będzie mogła być wyświetlona ponownie.",
|
||||
"Could not decrypt comment; Wrong key?":
|
||||
"Nie udało się odszyfrować komentarza; zły klucz?",
|
||||
"Reply":
|
||||
"Odpowiedz",
|
||||
"Anonymous":
|
||||
"Anonim",
|
||||
"Avatar generated from IP address":
|
||||
"Anonimowy avatar (Vizhash z adresu IP)",
|
||||
"Add comment":
|
||||
"Dodaj komentarz",
|
||||
"Optional nickname…":
|
||||
"Opcjonalny nick…",
|
||||
"Post comment":
|
||||
"Wyślij komentarz",
|
||||
"Sending comment…":
|
||||
"Wysyłanie komentarza…",
|
||||
"Comment posted.":
|
||||
"Wysłano komentarz.",
|
||||
"Could not refresh display: %s":
|
||||
"Nie można odświeżyć widoku: %s",
|
||||
"unknown status":
|
||||
"nieznany status",
|
||||
"server error or not responding":
|
||||
"bląd serwera lub brak odpowiedzi",
|
||||
"Could not post comment: %s":
|
||||
"Nie udało się wysłać komentarza: %s",
|
||||
"Please move your mouse for more entropy…":
|
||||
"Proszę poruszać myszą aby uzyskać większą entropię…",
|
||||
"Sending paste…":
|
||||
"Wysyłanie wklejki…",
|
||||
"Your paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit [Ctrl]+[c] to copy)</span>":
|
||||
"Twoja wklejka to <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(wciśnij [Ctrl]+[c] aby skopiować)</span>",
|
||||
"Delete data":
|
||||
"Skasuj dane",
|
||||
"Could not create paste: %s":
|
||||
"Nie udało się utworzyć wklejki: %s",
|
||||
"Cannot decrypt paste: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)":
|
||||
"Nie udało się odszyfrować wklejki - brak klucza deszyfrującego w adresie (użyłeś skracacza linków, który ucina część adresu?)",
|
||||
"Format": "Format",
|
||||
"Plain Text": "Czysty tekst",
|
||||
"Source Code": "Kod źródłowy",
|
||||
"Markdown": "Markdown",
|
||||
"Download attachment": "Pobierz załącznik",
|
||||
"Cloned: '%s'": "Sklonowano: '%s'",
|
||||
"The cloned file '%s' was attached to this paste.": "The cloned file '%s' was attached to this paste.",
|
||||
"Attach a file": "Załącz plik",
|
||||
"alternatively drag & drop a file or paste an image from the clipboard": "alternatively drag & drop a file or paste an image from the clipboard",
|
||||
"File too large, to display a preview. Please download the attachment.": "File too large, to display a preview. Please download the attachment.",
|
||||
"Remove attachment": "Usuń załącznik",
|
||||
"Your browser does not support uploading encrypted files. Please use a newer browser.":
|
||||
"Twoja przeglądarka nie wspiera wysyłania zaszyfrowanych plików. Użyj nowszej przeglądarki.",
|
||||
"Invalid attachment.": "Nieprawidłowy załącznik.",
|
||||
"Options": "Opcje",
|
||||
"Shorten URL": "Skróć adres URL",
|
||||
"Editor": "Edytować",
|
||||
"Preview": "Zapowiedź",
|
||||
"%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.",
|
||||
"Decrypt":
|
||||
"Decrypt",
|
||||
"Enter password":
|
||||
"Wpisz hasło",
|
||||
"Loading…": "Loading…",
|
||||
"Decrypting paste…": "Decrypting paste…",
|
||||
"Preparing new paste…": "Preparing new paste…",
|
||||
"In case this message never disappears please have a look at <a href=\"https://github.com/PrivateBin/PrivateBin/wiki/FAQ#why-does-not-the-loading-message-go-away\">this FAQ for information to troubleshoot</a>.":
|
||||
"In case this message never disappears please have a look at <a href=\"https://github.com/PrivateBin/PrivateBin/wiki/FAQ#why-does-not-the-loading-message-go-away\">this FAQ for information to troubleshoot</a> (in English).",
|
||||
"+++ no paste text +++": "+++ no paste text +++"
|
||||
}
|
@ -0,0 +1,157 @@
|
||||
{
|
||||
"PrivateBin": "PrivateBin",
|
||||
"%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted <i>in the browser</i> using 256 bits AES. More information on the <a href=\"https://privatebin.info/\">project page</a>.":
|
||||
"%s é um serviço minimalista e de código aberto do tipo \"pastebin\", em que o servidor tem zero conhecimento dos dados copiados. Os dados são cifrados e decifrados <i>no navegador</i> usando 256 bits AES. Mais informações na <a href=\"https://privatebin.info/\">página do projeto</a>.",
|
||||
"Because ignorance is bliss":
|
||||
"Porque a ignorância é uma benção",
|
||||
"en": "pt",
|
||||
"Paste does not exist, has expired or has been deleted.":
|
||||
"A cópia não existe, expirou ou já foi excluída.",
|
||||
"%s requires php %s or above to work. Sorry.":
|
||||
"%s requer php %s ou superior para funcionar. Desculpa.",
|
||||
"%s requires configuration section [%s] to be present in configuration file.":
|
||||
"%s requer que a seção de configuração [% s] esteja no arquivo de configuração.",
|
||||
"Please wait %d seconds between each post.":
|
||||
"Por favor espere %d segundos entre cada publicação.",
|
||||
"Paste is limited to %s of encrypted data.":
|
||||
"A cópia está limitada a %s de dados cifrados.",
|
||||
"Invalid data.":
|
||||
"Dados inválidos.",
|
||||
"You are unlucky. Try again.":
|
||||
"Você é azarado. Tente novamente",
|
||||
"Error saving comment. Sorry.":
|
||||
"Erro ao salvar comentário. Desculpa.",
|
||||
"Error saving paste. Sorry.":
|
||||
"Erro ao salvar cópia. Desculpa.",
|
||||
"Invalid paste ID.":
|
||||
"ID de cópia inválido.",
|
||||
"Paste is not of burn-after-reading type.":
|
||||
"Cópia não é do tipo \"queime após ler\".",
|
||||
"Wrong deletion token. Paste was not deleted.":
|
||||
"Token de remoção inválido. A cópia não foi excluída.",
|
||||
"Paste was properly deleted.":
|
||||
"A cópia foi devidamente excluída.",
|
||||
"JavaScript is required for %s to work.<br />Sorry for the inconvenience.":
|
||||
"JavaScript é necessário para que %s funcione.<br />Pedimos desculpas pela inconveniência.",
|
||||
"%s requires a modern browser to work.":
|
||||
"%s requer um navegador moderno para funcionar.",
|
||||
"Still using Internet Explorer? Do yourself a favor, switch to a modern browser:":
|
||||
"Ainda usando Internet Explorer? Faça-se um favor, mude para um navegador moderno:",
|
||||
"New":
|
||||
"Novo",
|
||||
"Send":
|
||||
"Enviar",
|
||||
"Clone":
|
||||
"Clonar",
|
||||
"Raw text":
|
||||
"Texto sem formato",
|
||||
"Expires":
|
||||
"Expirar em",
|
||||
"Burn after reading":
|
||||
"Queime após ler",
|
||||
"Open discussion":
|
||||
"Discussão aberta",
|
||||
"Password (recommended)":
|
||||
"Senha (recomendada)",
|
||||
"Discussion":
|
||||
"Discussão",
|
||||
"Toggle navigation":
|
||||
"Mudar navegação",
|
||||
"%d seconds": ["%d segundo", "%d segundos"],
|
||||
"%d minutes": ["%d minuto", "%d minutos"],
|
||||
"%d hours": ["%d hora", "%d horas"],
|
||||
"%d days": ["%d dia", "%d dias"],
|
||||
"%d weeks": ["%d semana", "%d semanas"],
|
||||
"%d months": ["%d mês", "%d meses"],
|
||||
"%d years": ["%d ano", "%d anos"],
|
||||
"Never":
|
||||
"Nunca",
|
||||
"Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service.":
|
||||
"Nota: Este é um serviço de teste. Dados podem ser perdidos a qualquer momento. Gatinhos morrerão se você abusar desse serviço.",
|
||||
"This document will expire in %d seconds.":
|
||||
["Este documento irá expirar em um segundo.", "Este documento irá expirar em %d segundos."],
|
||||
"This document will expire in %d minutes.":
|
||||
["Este documento irá expirar em um minuto.", "Este documento irá expirar em %d minutos."],
|
||||
"This document will expire in %d hours.":
|
||||
["Este documento irá expirar em uma hora.", "Este documento irá expirar em %d horas."],
|
||||
"This document will expire in %d days.":
|
||||
["Este documento irá expirar em um dia.", "Este documento irá expirar em %d dias."],
|
||||
"This document will expire in %d months.":
|
||||
["Este documento irá expirar em um mês.", "Este documento irá expirar em %d meses."],
|
||||
"Please enter the password for this paste:":
|
||||
"Por favor, digite a senha para essa cópia:",
|
||||
"Could not decrypt data (Wrong key?)":
|
||||
"Não foi possível decifrar os dados (Chave errada?)",
|
||||
"Could not delete the paste, it was not stored in burn after reading mode.":
|
||||
"Não foi possível excluir a cópia, ela não foi salva no modo de \"queime após ler\".",
|
||||
"FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.":
|
||||
"APENAS PARA SEUS OLHOS. Não feche essa janela, essa mensagem não pode ser exibida novamente.",
|
||||
"Could not decrypt comment; Wrong key?":
|
||||
"Não foi possível decifrar o comentário; Chave errada?",
|
||||
"Reply":
|
||||
"Responder",
|
||||
"Anonymous":
|
||||
"Anônimo",
|
||||
"Avatar generated from IP address":
|
||||
"Avatar gerado à partir do endereço IP",
|
||||
"Add comment":
|
||||
"Adicionar comentário",
|
||||
"Optional nickname…":
|
||||
"Apelido opcional…",
|
||||
"Post comment":
|
||||
"Publicar comentário",
|
||||
"Sending comment…":
|
||||
"Enviando comentário…",
|
||||
"Comment posted.":
|
||||
"Comentário publicado.",
|
||||
"Could not refresh display: %s":
|
||||
"Não foi possível atualizar a tela: %s",
|
||||
"unknown status":
|
||||
"Estado desconhecido",
|
||||
"server error or not responding":
|
||||
"Servidor em erro ou não responsivo",
|
||||
"Could not post comment: %s":
|
||||
"Não foi possível publicar o comentário: %s",
|
||||
"Please move your mouse for more entropy…":
|
||||
"Por favor, mova o mouse para maior entropia…",
|
||||
"Sending paste…":
|
||||
"Enviando cópia…",
|
||||
"Your paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit [Ctrl]+[c] to copy)</span>":
|
||||
"Sua cópia é <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Pressione [Ctrl]+[c] para copiar)</span>",
|
||||
"Delete data":
|
||||
"Excluir dados",
|
||||
"Could not create paste: %s":
|
||||
"Não foi possível criar cópia: %s",
|
||||
"Cannot decrypt paste: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)":
|
||||
"Não foi possível decifrar a cópia: chave de decriptografia ausente na URL (Você utilizou um redirecionador ou encurtador de URL que removeu parte dela?)",
|
||||
"Format": "Formato",
|
||||
"Plain Text": "Texto sem formato",
|
||||
"Source Code": "Código fonte",
|
||||
"Markdown": "Markdown",
|
||||
"Download attachment": "Baixar anexo",
|
||||
"Cloned: '%s'": "Clonado: '%s'",
|
||||
"The cloned file '%s' was attached to this paste.": "O arquivo clonado '%s' foi anexado a essa cópia.",
|
||||
"Attach a file": "Anexar um arquivo",
|
||||
"alternatively drag & drop a file or paste an image from the clipboard": "alternatively drag & drop a file or paste an image from the clipboard",
|
||||
"File too large, to display a preview. Please download the attachment.": "File too large, to display a preview. Please download the attachment.",
|
||||
"Remove attachment": "Remover anexo",
|
||||
"Your browser does not support uploading encrypted files. Please use a newer browser.":
|
||||
"Seu navegador não permite subir arquivos cifrados. Por favor, utilize um navegador mais recente.",
|
||||
"Invalid attachment.": "Anexo inválido.",
|
||||
"Options": "Opções",
|
||||
"Shorten URL": "Encurtar URL",
|
||||
"Editor": "Editor",
|
||||
"Preview": "Visualizar",
|
||||
"%s requires the PATH to end in a \"%s\". Please update the PATH in your index.php.":
|
||||
"%s requer que o PATH termine em \"%s\". Por favor, atualize o PATH em seu index.php.",
|
||||
"Decrypt":
|
||||
"Decifrar",
|
||||
"Enter password":
|
||||
"Digite a senha",
|
||||
"Loading…": "Carregando…",
|
||||
"Decrypting paste…": "Decifrando cópia…",
|
||||
"Preparing new paste…": "Preparando nova cópia…",
|
||||
"In case this message never disappears please have a look at <a href=\"https://github.com/PrivateBin/PrivateBin/wiki/FAQ#why-does-not-the-loading-message-go-away\">this FAQ for information to troubleshoot</a>.":
|
||||
"Caso essa mensagem nunca desapareça, por favor veja <a href=\"https://github.com/PrivateBin/PrivateBin/wiki/FAQ#why-does-not-the-loading-message-go-away\">este FAQ para saber como resolver os problemas</a>.",
|
||||
"+++ no paste text +++": "+++ sem texto de cópia +++"
|
||||
}
|
@ -0,0 +1,166 @@
|
||||
{
|
||||
"PrivateBin": "PrivateBin",
|
||||
"%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted <i>in the browser</i> using 256 bits AES. More information on the <a href=\"https://privatebin.info/\">project page</a>.":
|
||||
"%s je minimalističen, odprtokodni spletni 'pastebin', kjer server ne ve ničesar o prilepljenih podatkih. Podatki so zakodirani/odkodirani <i>v brskalniku</i> z uporabo 256 bitnega AES. Več informacij na < href=\"https://privatebin.info/\">spletni strani projekta.</a>.",
|
||||
"Because ignorance is bliss":
|
||||
"Ker kar ne veš ne boli.",
|
||||
"en": "sl",
|
||||
"Paste does not exist, has expired or has been deleted.":
|
||||
"Prilepek ne obstaja, mu je potekla življenjska doba, ali pa je izbrisan.",
|
||||
"%s requires php %s or above to work. Sorry.":
|
||||
"Oprosti, %s za delovanje potrebuje vsaj php %s.",
|
||||
"%s requires configuration section [%s] to be present in configuration file.":
|
||||
"%s potrebuje sekcijo konfiguracij [%s] v konfiguracijski datoteki.",
|
||||
"Please wait %d seconds between each post.":
|
||||
"Prosim počakaj vsaj %d sekund pred vsako naslednjo objavo.",
|
||||
"Paste is limited to %s of encrypted data.":
|
||||
"Velikost prilepka je omejena na %s zakodiranih podatkov.",
|
||||
"Invalid data.":
|
||||
"Neveljavni podatki.",
|
||||
"You are unlucky. Try again.":
|
||||
"Nimaš sreče, poskusi ponovno.",
|
||||
"Error saving comment. Sorry.":
|
||||
"Nekaj je šlo narobe pri shranjevanju komentarja. Oprosti.",
|
||||
"Error saving paste. Sorry.":
|
||||
"Nekaj je šlo narobe pri shranjevanju prilepka. Oprosti.",
|
||||
"Invalid paste ID.":
|
||||
"Napačen ID prilepka.",
|
||||
"Paste is not of burn-after-reading type.":
|
||||
"Prilepek ni tipa zažgi-po-branju.",
|
||||
"Wrong deletion token. Paste was not deleted.":
|
||||
"Napačen token za izbris. Prilepek ni bil izbrisan..",
|
||||
"Paste was properly deleted.":
|
||||
"Prilepek je uspešno izbrisan.",
|
||||
"JavaScript is required for %s to work.<br />Sorry for the inconvenience.":
|
||||
"Da %s deluje, moraš vklopiti JavaScript.<br />Oprosti za povročene nevšečnosti.",
|
||||
"%s requires a modern browser to work.":
|
||||
"%s za svoje delovanje potrebuje moderen brskalnik.",
|
||||
"Still using Internet Explorer? Do yourself a favor, switch to a modern browser:":
|
||||
"Še vedno uporabljaš Internet Explorer? Naredi si uslugo, preklopi na moderen brskalnik:",
|
||||
"New":
|
||||
"Nov prilepek",
|
||||
"Send":
|
||||
"Pošlji",
|
||||
"Clone":
|
||||
"Kloniraj",
|
||||
"Raw text":
|
||||
"Surov tekst",
|
||||
"Expires":
|
||||
"Poteče",
|
||||
"Burn after reading":
|
||||
"Zažgi (pobriši) po branju",
|
||||
"Open discussion":
|
||||
"Dovoli razpravo",
|
||||
"Password (recommended)":
|
||||
"Geslo (priporočeno)",
|
||||
"Discussion":
|
||||
"Razprava",
|
||||
"Toggle navigation":
|
||||
"Preklopi navigacijo",
|
||||
"%d seconds": ["%d sekunda", "%d sekundi", "%d sekunde", "%d sekund"],
|
||||
"%d minutes": ["%d minuta", "%d minuti", "%d minute", "%d minut"],
|
||||
"%d hours": ["%d ura", "%d uri", "%d ure", "%d ur"],
|
||||
"%d days": ["%d dan", "%d dneva", "%d dnevi", "%d dni"],
|
||||
"%d weeks": ["%d teden", "%d tedna", "%d tedni", "%d tednov"],
|
||||
"%d months": ["%d mesec", "%d meseca", "%d meseci", "%d mesecev"],
|
||||
"%d years": ["%d leto", "%d leti", "%d leta", "%d let"],
|
||||
"Never":
|
||||
"Nikoli",
|
||||
"Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service.":
|
||||
"Ne pozabi: To je testna storitev: Podatki so lahko kadarkoli pobrisani. Mucki bodo umrli, če boš zlorabljala to storitev.",
|
||||
"This document will expire in %d seconds.":
|
||||
["Ta dokument bo potekel čez %d sekundo.", "Ta dokument bo potekel čez %d sekundi.", "Ta dokument bo potekel čez %d sekunde.", "Ta dokument bo potekel čez %d sekund."],
|
||||
"This document will expire in %d minutes.":
|
||||
["Ta dokument bo potekel čez %d minuto.", "Ta dokument bo potekel čez %d minuti.", "Ta dokument bo potekel čez %d minute.", "Ta dokument bo potekel čez %d minut."],
|
||||
"This document will expire in %d hours.":
|
||||
["Ta dokument bo potekel čez %d uro.", "Ta dokument bo potekel čez %d uri.", "Ta dokument bo potekel čez %d ure.", "Ta dokument bo potekel čez %d ur."],
|
||||
"This document will expire in %d days.":
|
||||
["Ta dokument bo potekel čez %d dan.", "Ta dokument bo potekel čez %d dni.", "Ta dokument bo potekel čez %d dni.", "Ta dokument bo potekel čez %d dni."],
|
||||
"This document will expire in %d months.":
|
||||
["Ta dokument bo potekel čez %d mesec.", "Ta dokument bo potekel čez %d meseca.", "Ta dokument bo potekel čez %d mesece.", "Ta dokument bo potekel čez %d mesecev."],
|
||||
"Please enter the password for this paste:":
|
||||
"Prosim vnesi geslo tega prilepka:",
|
||||
"Could not decrypt data (Wrong key?)":
|
||||
"Nemogoče odkodirati podakte (Imaš napačen ključ?)",
|
||||
"Could not delete the paste, it was not stored in burn after reading mode.":
|
||||
"Prilepek je nemogoče izbrisati, ni bil shranjen v načinu \"zažgi po branju\".",
|
||||
"FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.":
|
||||
"SAMO ZA TVOJE OČI. Ne zapri tega okna (zavihka), to sporočilo ne bo prikazano nikoli več.",
|
||||
"Could not decrypt comment; Wrong key?":
|
||||
"Ne morem odkodirati komentarja: Imaš napačen ključ?",
|
||||
"Reply":
|
||||
"Odgovori",
|
||||
"Anonymous":
|
||||
"Aninomno",
|
||||
"Avatar generated from IP address":
|
||||
"Anonimen avatar (Vizhash IP naslova)",
|
||||
"Add comment":
|
||||
"Dodaj komentar",
|
||||
"Optional nickname…":
|
||||
"Uporabniško ime (lahko izpustiš)",
|
||||
"Post comment":
|
||||
"Objavi komentar",
|
||||
"Sending comment…":
|
||||
"Pošiljam komentar …",
|
||||
"Comment posted.":
|
||||
"Komentar poslan.",
|
||||
"Could not refresh display: %s":
|
||||
"Ne morem osvežiti zaslona : %s",
|
||||
"unknown status":
|
||||
"neznan status",
|
||||
"server error or not responding":
|
||||
"napaka na strežniku, ali pa se strežnik ne odziva",
|
||||
"Could not post comment: %s":
|
||||
"Komentarja ni bilo mogoče objaviti : %s",
|
||||
"Please move your mouse for more entropy…":
|
||||
"Prosim premakni svojo miško za več entropije…",
|
||||
"Sending paste…":
|
||||
"Pošiljam prilepek…",
|
||||
"Your paste is <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Hit [Ctrl]+[c] to copy)</span>":
|
||||
"Tvoj prilepek je dostopen na naslovu: <a id=\"pasteurl\" href=\"%s\">%s</a> <span id=\"copyhint\">(Pritisni [Ctrl]+[c] ali [Cmd] + [c] in skopiraj)</span>",
|
||||
"Delete data":
|
||||
"Izbriši podatke",
|
||||
"Could not create paste: %s":
|
||||
"Ne morem ustvariti prilepka: %s",
|
||||
"Cannot decrypt paste: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)":
|
||||
"Ne morem odkodirati prilepka: V URL-ju manjka ključ (A si uporabil krajšalnik URL-jev, ki odstrani del URL-ja?)",
|
||||
"B": "o",
|
||||
"KiB": "KB",
|
||||
"MiB": "MB",
|
||||
"GiB": "GB",
|
||||
"TiB": "TB",
|
||||
"PiB": "PB",
|
||||
"EiB": "EB",
|
||||
"ZiB": "ZB",
|
||||
"YiB": "YB",
|
||||
"Format": "Format",
|
||||
"Plain Text": "Surov tekst",
|
||||
"Source Code": "Odprta koda",
|
||||
"Markdown": "Markdown",
|
||||
"Download attachment": "Pretoči priponko",
|
||||
"Cloned: '%s'": "'%s' klonirana",
|
||||
"The cloned file '%s' was attached to this paste.": "The cloned file '%s' was attached to this paste.",
|
||||
"Attach a file": "Pripni datoteko",
|
||||
"alternatively drag & drop a file or paste an image from the clipboard": "alternatively drag & drop a file or paste an image from the clipboard",
|
||||
"File too large, to display a preview. Please download the attachment.": "File too large, to display a preview. Please download the attachment.",
|
||||
"Remove attachment": "Odstrani priponko",
|
||||
"Your browser does not support uploading encrypted files. Please use a newer browser.":
|
||||
"Tvoj brskalnik ne omogoča nalaganje zakodiranih datotek. Prosim uporabi novejši brskalnik.",
|
||||
"Invalid attachment.": "Neveljavna priponka.",
|
||||
"Options": "Možnosti",
|
||||
"Shorten URL": "Skrajšajte URL",
|
||||
"Editor": "Uredi",
|
||||
"Preview": "Predogled",
|
||||
"%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.",
|
||||
"Decrypt":
|
||||
"Decrypt",
|
||||
"Enter password":
|
||||
"Prosim vnesi geslo",
|
||||
"Loading…": "Loading…",
|
||||
"Decrypting paste…": "Decrypting paste…",
|
||||
"Preparing new paste…": "Preparing new paste…",
|
||||
"In case this message never disappears please have a look at <a href=\"https://github.com/PrivateBin/PrivateBin/wiki/FAQ#why-does-not-the-loading-message-go-away\">this FAQ for information to troubleshoot</a>.":
|
||||
"In case this message never disappears please have a look at <a href=\"https://github.com/PrivateBin/PrivateBin/wiki/FAQ#why-does-not-the-loading-message-go-away\">this FAQ for information to troubleshoot</a> (in English).",
|
||||
"+++ no paste text +++": "+++ no paste text +++"
|
||||
}
|
After Width: | Height: | Size: 5.4 KiB |
After Width: | Height: | Size: 22 KiB |
After Width: | Height: | Size: 3.9 KiB |
After Width: | Height: | Size: 671 B |
After Width: | Height: | Size: 469 B |
After Width: | Height: | Size: 749 B |
After Width: | Height: | Size: 15 KiB |
After Width: | Height: | Size: 943 B |
After Width: | Height: | Size: 266 B |
After Width: | Height: | Size: 157 B |
After Width: | Height: | Size: 299 B |
After Width: | Height: | Size: 183 B |
After Width: | Height: | Size: 209 B |
After Width: | Height: | Size: 196 B |
After Width: | Height: | Size: 2.6 KiB |
After Width: | Height: | Size: 3.6 KiB |
After Width: | Height: | Size: 3.2 KiB |
After Width: | Height: | Size: 3.5 KiB |
After Width: | Height: | Size: 9.0 KiB |
After Width: | Height: | Size: 2.4 KiB |
After Width: | Height: | Size: 3.9 KiB |
@ -0,0 +1,18 @@
|
||||
<?php
|
||||
/**
|
||||
* PrivateBin
|
||||
*
|
||||
* a zero-knowledge paste bin
|
||||
*
|
||||
* @link https://github.com/PrivateBin/PrivateBin
|
||||
* @copyright 2012 Sébastien SAUVAGE (sebsauvage.net)
|
||||
* @license https://www.opensource.org/licenses/zlib-license.php The zlib/libpng License
|
||||
* @version 1.1
|
||||
*/
|
||||
|
||||
// change this, if your php files and data is outside of your webservers document root
|
||||
define('PATH', '');
|
||||
|
||||
define('PUBLIC_PATH', __DIR__);
|
||||
require PATH . 'vendor' . DIRECTORY_SEPARATOR . 'autoload.php';
|
||||
new PrivateBin\PrivateBin;
|
@ -0,0 +1,7 @@
|
||||
---
|
||||
instrumentation:
|
||||
excludes:
|
||||
- jquery-3.1.1.js
|
||||
baseline-file: ../tst/log/js-coverage-baseline.json
|
||||
reporting:
|
||||
dir: ../tst/log/js-coverage-report
|
@ -0,0 +1,237 @@
|
||||
/*
|
||||
* $Id: base64.js,v 1.7 2012/08/23 10:30:18 dankogai Exp dankogai $
|
||||
*
|
||||
* Licensed under the MIT license.
|
||||
* https://www.opensource.org/licenses/mit-license.php
|
||||
*
|
||||
* References:
|
||||
* https://en.wikipedia.org/wiki/Base64
|
||||
*/
|
||||
|
||||
(function(global){
|
||||
|
||||
var b64chars
|
||||
= 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
|
||||
|
||||
var b64charcodes = function(){
|
||||
var a = [];
|
||||
var codeA = 'A'.charCodeAt(0);
|
||||
var codea = 'a'.charCodeAt(0);
|
||||
var code0 = '0'.charCodeAt(0);
|
||||
for (var i = 0; i < 26; i ++) a.push(codeA + i);
|
||||
for (var i = 0; i < 26; i ++) a.push(codea + i);
|
||||
for (var i = 0; i < 10; i ++) a.push(code0 + i);
|
||||
a.push('+'.charCodeAt(0));
|
||||
a.push('/'.charCodeAt(0));
|
||||
return a;
|
||||
}();
|
||||
|
||||
var b64tab = function(bin){
|
||||
var t = {};
|
||||
for (var i = 0, l = bin.length; i < l; i++) t[bin.charAt(i)] = i;
|
||||
return t;
|
||||
}(b64chars);
|
||||
|
||||
var stringToArray = function(s){
|
||||
var a = [];
|
||||
for (var i = 0, l = s.length; i < l; i ++) a[i] = s.charCodeAt(i);
|
||||
return a;
|
||||
};
|
||||
|
||||
var convertUTF8ArrayToBase64 = function(bin){
|
||||
var padlen = 0;
|
||||
while (bin.length % 3){
|
||||
bin.push(0);
|
||||
padlen++;
|
||||
};
|
||||
var b64 = [];
|
||||
for (var i = 0, l = bin.length; i < l; i += 3){
|
||||
var c0 = bin[i], c1 = bin[i+1], c2 = bin[i+2];
|
||||
if (c0 >= 256 || c1 >= 256 || c2 >= 256)
|
||||
throw 'unsupported character found';
|
||||
var n = (c0 << 16) | (c1 << 8) | c2;
|
||||
b64.push(
|
||||
b64charcodes[ n >>> 18],
|
||||
b64charcodes[(n >>> 12) & 63],
|
||||
b64charcodes[(n >>> 6) & 63],
|
||||
b64charcodes[ n & 63]
|
||||
);
|
||||
}
|
||||
while (padlen--) b64[b64.length - padlen - 1] = '='.charCodeAt(0);
|
||||
return chunkStringFromCharCodeApply(b64);
|
||||
};
|
||||
|
||||
var convertBase64ToUTF8Array = function(b64){
|
||||
b64 = b64.replace(/[^A-Za-z0-9+\/]+/g, '');
|
||||
var bin = [];
|
||||
var padlen = b64.length % 4;
|
||||
for (var i = 0, l = b64.length; i < l; i += 4){
|
||||
var n = ((b64tab[b64.charAt(i )] || 0) << 18)
|
||||
| ((b64tab[b64.charAt(i+1)] || 0) << 12)
|
||||
| ((b64tab[b64.charAt(i+2)] || 0) << 6)
|
||||
| ((b64tab[b64.charAt(i+3)] || 0));
|
||||
bin.push(
|
||||
( n >> 16 ),
|
||||
( (n >> 8) & 0xff ),
|
||||
( n & 0xff )
|
||||
);
|
||||
}
|
||||
bin.length -= [0,0,2,1][padlen];
|
||||
return bin;
|
||||
};
|
||||
|
||||
var convertUTF16ArrayToUTF8Array = function(uni){
|
||||
var bin = [];
|
||||
for (var i = 0, l = uni.length; i < l; i++){
|
||||
var n = uni[i];
|
||||
if (n < 0x80)
|
||||
bin.push(n);
|
||||
else if (n < 0x800)
|
||||
bin.push(
|
||||
0xc0 | (n >>> 6),
|
||||
0x80 | (n & 0x3f));
|
||||
else
|
||||
bin.push(
|
||||
0xe0 | ((n >>> 12) & 0x0f),
|
||||
0x80 | ((n >>> 6) & 0x3f),
|
||||
0x80 | (n & 0x3f));
|
||||
}
|
||||
return bin;
|
||||
};
|
||||
|
||||
var convertUTF8ArrayToUTF16Array = function(bin){
|
||||
var uni = [];
|
||||
for (var i = 0, l = bin.length; i < l; i++){
|
||||
var c0 = bin[i];
|
||||
if (c0 < 0x80){
|
||||
uni.push(c0);
|
||||
}else{
|
||||
var c1 = bin[++i];
|
||||
if (c0 < 0xe0){
|
||||
uni.push(((c0 & 0x1f) << 6) | (c1 & 0x3f));
|
||||
}else{
|
||||
var c2 = bin[++i];
|
||||
uni.push(
|
||||
((c0 & 0x0f) << 12) | ((c1 & 0x3f) << 6) | (c2 & 0x3f)
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
return uni;
|
||||
};
|
||||
|
||||
var convertUTF8StringToBase64 = function(bin){
|
||||
return convertUTF8ArrayToBase64(stringToArray(bin));
|
||||
};
|
||||
|
||||
var convertBase64ToUTF8String = function(b64){
|
||||
return chunkStringFromCharCodeApply(convertBase64ToUTF8Array(b64));
|
||||
};
|
||||
|
||||
var convertUTF8StringToUTF16Array = function(bin){
|
||||
return convertUTF8ArrayToUTF16Array(stringToArray(bin));
|
||||
};
|
||||
|
||||
var convertUTF8ArrayToUTF16String = function(bin){
|
||||
return chunkStringFromCharCodeApply(convertUTF8ArrayToUTF16Array(bin));
|
||||
};
|
||||
|
||||
var convertUTF8StringToUTF16String = function(bin){
|
||||
return chunkStringFromCharCodeApply(
|
||||
convertUTF8ArrayToUTF16Array(stringToArray(bin))
|
||||
);
|
||||
};
|
||||
|
||||
var convertUTF16StringToUTF8Array = function(uni){
|
||||
return convertUTF16ArrayToUTF8Array(stringToArray(uni));
|
||||
};
|
||||
|
||||
var convertUTF16ArrayToUTF8String = function(uni){
|
||||
return chunkStringFromCharCodeApply(convertUTF16ArrayToUTF8Array(uni));
|
||||
};
|
||||
|
||||
var convertUTF16StringToUTF8String = function(uni){
|
||||
return chunkStringFromCharCodeApply(
|
||||
convertUTF16ArrayToUTF8Array(stringToArray(uni))
|
||||
);
|
||||
};
|
||||
|
||||
/*
|
||||
* String.fromCharCode.apply will only handle arrays as big as 65536,
|
||||
* after that it'll return a truncated string with no warning.
|
||||
*/
|
||||
var chunkStringFromCharCodeApply = function(arr){
|
||||
var strs = [], i;
|
||||
for (i = 0; i < arr.length; i += 65536){
|
||||
strs.push(String.fromCharCode.apply(String, arr.slice(i, i+65536)));
|
||||
}
|
||||
return strs.join('');
|
||||
};
|
||||
|
||||
if (global.btoa){
|
||||
var btoa = global.btoa;
|
||||
var convertUTF16StringToBase64 = function (uni){
|
||||
return btoa(convertUTF16StringToUTF8String(uni));
|
||||
};
|
||||
}
|
||||
else {
|
||||
var btoa = convertUTF8StringToBase64;
|
||||
var convertUTF16StringToBase64 = function (uni){
|
||||
return convertUTF8ArrayToBase64(convertUTF16StringToUTF8Array(uni));
|
||||
};
|
||||
}
|
||||
|
||||
if (global.atob){
|
||||
var atob = global.atob;
|
||||
var convertBase64ToUTF16String = function (b64){
|
||||
return convertUTF8StringToUTF16String(atob(b64));
|
||||
};
|
||||
}
|
||||
else {
|
||||
var atob = convertBase64ToUTF8String;
|
||||
var convertBase64ToUTF16String = function (b64){
|
||||
return convertUTF8ArrayToUTF16String(convertBase64ToUTF8Array(b64));
|
||||
};
|
||||
}
|
||||
|
||||
global.Base64 = {
|
||||
convertUTF8ArrayToBase64:convertUTF8ArrayToBase64,
|
||||
convertByteArrayToBase64:convertUTF8ArrayToBase64,
|
||||
convertBase64ToUTF8Array:convertBase64ToUTF8Array,
|
||||
convertBase64ToByteArray:convertBase64ToUTF8Array,
|
||||
convertUTF16ArrayToUTF8Array:convertUTF16ArrayToUTF8Array,
|
||||
convertUTF16ArrayToByteArray:convertUTF16ArrayToUTF8Array,
|
||||
convertUTF8ArrayToUTF16Array:convertUTF8ArrayToUTF16Array,
|
||||
convertByteArrayToUTF16Array:convertUTF8ArrayToUTF16Array,
|
||||
convertUTF8StringToBase64:convertUTF8StringToBase64,
|
||||
convertBase64ToUTF8String:convertBase64ToUTF8String,
|
||||
convertUTF8StringToUTF16Array:convertUTF8StringToUTF16Array,
|
||||
convertUTF8ArrayToUTF16String:convertUTF8ArrayToUTF16String,
|
||||
convertByteArrayToUTF16String:convertUTF8ArrayToUTF16String,
|
||||
convertUTF8StringToUTF16String:convertUTF8StringToUTF16String,
|
||||
convertUTF16StringToUTF8Array:convertUTF16StringToUTF8Array,
|
||||
convertUTF16StringToByteArray:convertUTF16StringToUTF8Array,
|
||||
convertUTF16ArrayToUTF8String:convertUTF16ArrayToUTF8String,
|
||||
convertUTF16StringToUTF8String:convertUTF16StringToUTF8String,
|
||||
convertUTF16StringToBase64:convertUTF16StringToBase64,
|
||||
convertBase64ToUTF16String:convertBase64ToUTF16String,
|
||||
fromBase64:convertBase64ToUTF8String,
|
||||
toBase64:convertUTF8StringToBase64,
|
||||
atob:atob,
|
||||
btoa:btoa,
|
||||
utob:convertUTF16StringToUTF8String,
|
||||
btou:convertUTF8StringToUTF16String,
|
||||
encode:convertUTF16StringToBase64,
|
||||
encodeURI:function(u){
|
||||
return convertUTF16StringToBase64(u).replace(/[+\/]/g, function(m0){
|
||||
return m0 == '+' ? '-' : '_';
|
||||
}).replace(/=+$/, '');
|
||||
},
|
||||
decode:function(a){
|
||||
return convertBase64ToUTF16String(a.replace(/[-_]/g, function(m0){
|
||||
return m0 == '-' ? '+' : '/';
|
||||
}));
|
||||
}
|
||||
};
|
||||
|
||||
})(this);
|
@ -0,0 +1,16 @@
|
||||
{
|
||||
"@context": {
|
||||
"so": "https://schema.org/",
|
||||
"status": "so:Integer",
|
||||
"id": "so:name",
|
||||
"parentid": "so:name",
|
||||
"url: {
|
||||
"@id": "so:url",
|
||||
"@type": "@id"
|
||||
},
|
||||
"data": "so:Text",
|
||||
"meta": {
|
||||
"@id": "?jsonld=commentmeta"
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,8 @@
|
||||
{
|
||||
"@context": {
|
||||
"so": "https://schema.org/",
|
||||
"postdate": "so:Integer",
|
||||
"nickname": "so:Text",
|
||||
"vizhash": "so:Text"
|
||||
}
|
||||
}
|
@ -0,0 +1,154 @@
|
||||
'use strict';
|
||||
|
||||
// testing prerequisites
|
||||
global.assert = require('assert');
|
||||
global.jsc = require('jsverify');
|
||||
global.jsdom = require('jsdom-global');
|
||||
global.cleanup = global.jsdom();
|
||||
global.fs = require('fs');
|
||||
|
||||
// application libraries to test
|
||||
global.$ = global.jQuery = require('./jquery-3.3.1');
|
||||
global.sjcl = require('./sjcl-1.0.7');
|
||||
global.Base64 = require('./base64-2.4.5').Base64;
|
||||
global.RawDeflate = require('./rawdeflate-0.5').RawDeflate;
|
||||
global.RawDeflate.inflate = require('./rawinflate-0.3').RawDeflate.inflate;
|
||||
require('./prettify');
|
||||
global.prettyPrint = window.PR.prettyPrint;
|
||||
global.prettyPrintOne = window.PR.prettyPrintOne;
|
||||
global.showdown = require('./showdown-1.8.6');
|
||||
global.DOMPurify = require('./purify-1.0.5');
|
||||
require('./bootstrap-3.3.7');
|
||||
require('./privatebin');
|
||||
|
||||
// internal variables
|
||||
var a2zString = ['a','b','c','d','e','f','g','h','i','j','k','l','m',
|
||||
'n','o','p','q','r','s','t','u','v','w','x','y','z'],
|
||||
alnumString = a2zString.concat(['0','1','2','3','4','5','6','7','8','9']),
|
||||
queryString = alnumString.concat(['+','%','&','.','*','-','_']),
|
||||
base64String = alnumString.concat(['+','/','=']).concat(
|
||||
a2zString.map(function(c) {
|
||||
return c.toUpperCase();
|
||||
})
|
||||
),
|
||||
schemas = ['ftp','gopher','http','https','ws','wss'],
|
||||
supportedLanguages = ['de', 'es', 'fr', 'it', 'no', 'pl', 'pt', 'oc', 'ru', 'sl', 'zh'],
|
||||
mimeTypes = ['image/png', 'application/octet-stream'],
|
||||
formats = ['plaintext', 'markdown', 'syntaxhighlighting'],
|
||||
/**
|
||||
* character to HTML entity lookup table
|
||||
*
|
||||
* @see {@link https://github.com/janl/mustache.js/blob/master/mustache.js#L60}
|
||||
*/
|
||||
entityMap = {
|
||||
'&': '&',
|
||||
'<': '<',
|
||||
'>': '>',
|
||||
'"': '"',
|
||||
"'": ''',
|
||||
'/': '/',
|
||||
'`': '`',
|
||||
'=': '='
|
||||
},
|
||||
logFile = fs.createWriteStream('test.log'),
|
||||
mimeFile = fs.createReadStream('/etc/mime.types'),
|
||||
mimeLine = '';
|
||||
|
||||
// redirect console messages to log file
|
||||
console.info = console.warn = console.error = function () {
|
||||
logFile.write(Array.prototype.slice.call(arguments).join('') + '\n');
|
||||
};
|
||||
|
||||
// populate mime types from environment
|
||||
mimeFile.on('data', function(data) {
|
||||
mimeLine += data;
|
||||
var index = mimeLine.indexOf('\n');
|
||||
while (index > -1) {
|
||||
var line = mimeLine.substring(0, index);
|
||||
mimeLine = mimeLine.substring(index + 1);
|
||||
parseMime(line);
|
||||
index = mimeLine.indexOf('\n');
|
||||
}
|
||||
});
|
||||
|
||||
mimeFile.on('end', function() {
|
||||
if (mimeLine.length > 0) {
|
||||
parseMime(mimeLine);
|
||||
}
|
||||
});
|
||||
|
||||
function parseMime(line) {
|
||||
// ignore comments
|
||||
var index = line.indexOf('#');
|
||||
if (index > -1) {
|
||||
line = line.substring(0, index);
|
||||
}
|
||||
|
||||
// ignore bits after tabs
|
||||
index = line.indexOf('\t');
|
||||
if (index > -1) {
|
||||
line = line.substring(0, index);
|
||||
}
|
||||
if (line.length > 0) {
|
||||
mimeTypes.push(line);
|
||||
}
|
||||
}
|
||||
|
||||
// common testing helper functions
|
||||
|
||||
/**
|
||||
* convert all applicable characters to HTML entities
|
||||
*
|
||||
* @see {@link https://www.owasp.org/index.php/XSS_(Cross_Site_Scripting)_Prevention_Cheat_Sheet#RULE_.231_-_HTML_Escape_Before_Inserting_Untrusted_Data_into_HTML_Element_Content}
|
||||
* @name htmlEntities
|
||||
* @function
|
||||
* @param {string} str
|
||||
* @return {string} escaped HTML
|
||||
*/
|
||||
exports.htmlEntities = function(str) {
|
||||
return String(str).replace(
|
||||
/[&<>"'`=\/]/g, function(s) {
|
||||
return entityMap[s];
|
||||
});
|
||||
};
|
||||
|
||||
// provides random lowercase characters from a to z
|
||||
exports.jscA2zString = function() {
|
||||
return jsc.elements(a2zString);
|
||||
};
|
||||
|
||||
// provides random lowercase alpha numeric characters (a to z and 0 to 9)
|
||||
exports.jscAlnumString = function() {
|
||||
return jsc.elements(alnumString);
|
||||
};
|
||||
|
||||
// provides random characters allowed in GET queries
|
||||
exports.jscQueryString = function() {
|
||||
return jsc.elements(queryString);
|
||||
};
|
||||
|
||||
// provides random characters allowed in base64 encoded strings
|
||||
exports.jscBase64String = function() {
|
||||
return jsc.elements(base64String);
|
||||
};
|
||||
|
||||
// provides a random URL schema supported by the whatwg-url library
|
||||
exports.jscSchemas = function() {
|
||||
return jsc.elements(schemas);
|
||||
};
|
||||
|
||||
// provides a random supported language string
|
||||
exports.jscSupportedLanguages = function() {
|
||||
return jsc.elements(supportedLanguages);
|
||||
};
|
||||
|
||||
// provides a random mime type
|
||||
exports.jscMimeTypes = function() {
|
||||
return jsc.elements(mimeTypes);
|
||||
};
|
||||
|
||||
// provides a random PrivateBin paste formatter
|
||||
exports.jscFormats = function() {
|
||||
return jsc.elements(formats);
|
||||
};
|
||||
|
@ -0,0 +1,24 @@
|
||||
{
|
||||
"@context": {
|
||||
"so": "https://schema.org/",
|
||||
"status": {"@id": "so:Integer"},
|
||||
"id": {"@id": "so:name"},
|
||||
"deletetoken": {"@id": "so:Text"},
|
||||
"url": {
|
||||
"@type": "@id",
|
||||
"@id": "so:url"
|
||||
},
|
||||
"data": {"@id": "so:Text"},
|
||||
"attachment": {"@id": "so:Text"},
|
||||
"attachmentname": {"@id": "so:Text"},
|
||||
"meta": {
|
||||
"@id": "?jsonld=pastemeta"
|
||||
},
|
||||
"comments": {
|
||||
"@id": "?jsonld=comment",
|
||||
"@container": "@list"
|
||||
},
|
||||
"comment_count": {"@id": "so:Integer"},
|
||||
"comment_offset": {"@id": "so:Integer"}
|
||||
}
|
||||
}
|
@ -0,0 +1,11 @@
|
||||
{
|
||||
"@context": {
|
||||
"so": "https://schema.org/",
|
||||
"formatter": {"@id": "so:Text"},
|
||||
"postdate": {"@id": "so:Integer"},
|
||||
"opendiscussion": {"@id": "so:True"},
|
||||
"burnafterreading": {"@id": "so:True"},
|
||||
"expire_date": {"@id": "so:Integer"},
|
||||
"remaining_time": {"@id": "so:Integer"}
|
||||
}
|
||||
}
|
@ -0,0 +1,30 @@
|
||||
!function(){var q=null;window.PR_SHOULD_USE_CONTINUATION=!0;
|
||||
(function(){function R(a){function d(e){var b=e.charCodeAt(0);if(b!==92)return b;var a=e.charAt(1);return(b=r[a])?b:"0"<=a&&a<="7"?parseInt(e.substring(1),8):a==="u"||a==="x"?parseInt(e.substring(2),16):e.charCodeAt(1)}function g(e){if(e<32)return(e<16?"\\x0":"\\x")+e.toString(16);e=String.fromCharCode(e);return e==="\\"||e==="-"||e==="]"||e==="^"?"\\"+e:e}function b(e){var b=e.substring(1,e.length-1).match(/\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\[0-3][0-7]{0,2}|\\[0-7]{1,2}|\\[\S\s]|[^\\]/g),e=[],a=
|
||||
b[0]==="^",c=["["];a&&c.push("^");for(var a=a?1:0,f=b.length;a<f;++a){var h=b[a];if(/\\[bdsw]/i.test(h))c.push(h);else{var h=d(h),l;a+2<f&&"-"===b[a+1]?(l=d(b[a+2]),a+=2):l=h;e.push([h,l]);l<65||h>122||(l<65||h>90||e.push([Math.max(65,h)|32,Math.min(l,90)|32]),l<97||h>122||e.push([Math.max(97,h)&-33,Math.min(l,122)&-33]))}}e.sort(function(e,a){return e[0]-a[0]||a[1]-e[1]});b=[];f=[];for(a=0;a<e.length;++a)h=e[a],h[0]<=f[1]+1?f[1]=Math.max(f[1],h[1]):b.push(f=h);for(a=0;a<b.length;++a)h=b[a],c.push(g(h[0])),
|
||||
h[1]>h[0]&&(h[1]+1>h[0]&&c.push("-"),c.push(g(h[1])));c.push("]");return c.join("")}function s(e){for(var a=e.source.match(/\[(?:[^\\\]]|\\[\S\s])*]|\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\\d+|\\[^\dux]|\(\?[!:=]|[()^]|[^()[\\^]+/g),c=a.length,d=[],f=0,h=0;f<c;++f){var l=a[f];l==="("?++h:"\\"===l.charAt(0)&&(l=+l.substring(1))&&(l<=h?d[l]=-1:a[f]=g(l))}for(f=1;f<d.length;++f)-1===d[f]&&(d[f]=++x);for(h=f=0;f<c;++f)l=a[f],l==="("?(++h,d[h]||(a[f]="(?:")):"\\"===l.charAt(0)&&(l=+l.substring(1))&&l<=h&&
|
||||
(a[f]="\\"+d[l]);for(f=0;f<c;++f)"^"===a[f]&&"^"!==a[f+1]&&(a[f]="");if(e.ignoreCase&&m)for(f=0;f<c;++f)l=a[f],e=l.charAt(0),l.length>=2&&e==="["?a[f]=b(l):e!=="\\"&&(a[f]=l.replace(/[A-Za-z]/g,function(a){a=a.charCodeAt(0);return"["+String.fromCharCode(a&-33,a|32)+"]"}));return a.join("")}for(var x=0,m=!1,j=!1,k=0,c=a.length;k<c;++k){var i=a[k];if(i.ignoreCase)j=!0;else if(/[a-z]/i.test(i.source.replace(/\\u[\da-f]{4}|\\x[\da-f]{2}|\\[^UXux]/gi,""))){m=!0;j=!1;break}}for(var r={b:8,t:9,n:10,v:11,
|
||||
f:12,r:13},n=[],k=0,c=a.length;k<c;++k){i=a[k];if(i.global||i.multiline)throw Error(""+i);n.push("(?:"+s(i)+")")}return RegExp(n.join("|"),j?"gi":"g")}function S(a,d){function g(a){var c=a.nodeType;if(c==1){if(!b.test(a.className)){for(c=a.firstChild;c;c=c.nextSibling)g(c);c=a.nodeName.toLowerCase();if("br"===c||"li"===c)s[j]="\n",m[j<<1]=x++,m[j++<<1|1]=a}}else if(c==3||c==4)c=a.nodeValue,c.length&&(c=d?c.replace(/\r\n?/g,"\n"):c.replace(/[\t\n\r ]+/g," "),s[j]=c,m[j<<1]=x,x+=c.length,m[j++<<1|1]=
|
||||
a)}var b=/(?:^|\s)nocode(?:\s|$)/,s=[],x=0,m=[],j=0;g(a);return{a:s.join("").replace(/\n$/,""),d:m}}function H(a,d,g,b){d&&(a={a:d,e:a},g(a),b.push.apply(b,a.g))}function T(a){for(var d=void 0,g=a.firstChild;g;g=g.nextSibling)var b=g.nodeType,d=b===1?d?a:g:b===3?U.test(g.nodeValue)?a:d:d;return d===a?void 0:d}function D(a,d){function g(a){for(var j=a.e,k=[j,"pln"],c=0,i=a.a.match(s)||[],r={},n=0,e=i.length;n<e;++n){var z=i[n],w=r[z],t=void 0,f;if(typeof w==="string")f=!1;else{var h=b[z.charAt(0)];
|
||||
if(h)t=z.match(h[1]),w=h[0];else{for(f=0;f<x;++f)if(h=d[f],t=z.match(h[1])){w=h[0];break}t||(w="pln")}if((f=w.length>=5&&"lang-"===w.substring(0,5))&&!(t&&typeof t[1]==="string"))f=!1,w="src";f||(r[z]=w)}h=c;c+=z.length;if(f){f=t[1];var l=z.indexOf(f),B=l+f.length;t[2]&&(B=z.length-t[2].length,l=B-f.length);w=w.substring(5);H(j+h,z.substring(0,l),g,k);H(j+h+l,f,I(w,f),k);H(j+h+B,z.substring(B),g,k)}else k.push(j+h,w)}a.g=k}var b={},s;(function(){for(var g=a.concat(d),j=[],k={},c=0,i=g.length;c<i;++c){var r=
|
||||
g[c],n=r[3];if(n)for(var e=n.length;--e>=0;)b[n.charAt(e)]=r;r=r[1];n=""+r;k.hasOwnProperty(n)||(j.push(r),k[n]=q)}j.push(/[\S\s]/);s=R(j)})();var x=d.length;return g}function v(a){var d=[],g=[];a.tripleQuotedStrings?d.push(["str",/^(?:'''(?:[^'\\]|\\[\S\s]|''?(?=[^']))*(?:'''|$)|"""(?:[^"\\]|\\[\S\s]|""?(?=[^"]))*(?:"""|$)|'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$))/,q,"'\""]):a.multiLineStrings?d.push(["str",/^(?:'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$)|`(?:[^\\`]|\\[\S\s])*(?:`|$))/,
|
||||
q,"'\"`"]):d.push(["str",/^(?:'(?:[^\n\r'\\]|\\.)*(?:'|$)|"(?:[^\n\r"\\]|\\.)*(?:"|$))/,q,"\"'"]);a.verbatimStrings&&g.push(["str",/^@"(?:[^"]|"")*(?:"|$)/,q]);var b=a.hashComments;b&&(a.cStyleComments?(b>1?d.push(["com",/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,q,"#"]):d.push(["com",/^#(?:(?:define|e(?:l|nd)if|else|error|ifn?def|include|line|pragma|undef|warning)\b|[^\n\r]*)/,q,"#"]),g.push(["str",/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h(?:h|pp|\+\+)?|[a-z]\w*)>/,q])):d.push(["com",
|
||||
/^#[^\n\r]*/,q,"#"]));a.cStyleComments&&(g.push(["com",/^\/\/[^\n\r]*/,q]),g.push(["com",/^\/\*[\S\s]*?(?:\*\/|$)/,q]));if(b=a.regexLiterals){var s=(b=b>1?"":"\n\r")?".":"[\\S\\s]";g.push(["lang-regex",RegExp("^(?:^^\\.?|[+-]|[!=]=?=?|\\#|%=?|&&?=?|\\(|\\*=?|[+\\-]=|->|\\/=?|::?|<<?=?|>>?>?=?|,|;|\\?|@|\\[|~|{|\\^\\^?=?|\\|\\|?=?|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\\s*("+("/(?=[^/*"+b+"])(?:[^/\\x5B\\x5C"+b+"]|\\x5C"+s+"|\\x5B(?:[^\\x5C\\x5D"+b+"]|\\x5C"+
|
||||
s+")*(?:\\x5D|$))+/")+")")])}(b=a.types)&&g.push(["typ",b]);b=(""+a.keywords).replace(/^ | $/g,"");b.length&&g.push(["kwd",RegExp("^(?:"+b.replace(/[\s,]+/g,"|")+")\\b"),q]);d.push(["pln",/^\s+/,q," \r\n\t\u00a0"]);b="^.[^\\s\\w.$@'\"`/\\\\]*";a.regexLiterals&&(b+="(?!s*/)");g.push(["lit",/^@[$_a-z][\w$@]*/i,q],["typ",/^(?:[@_]?[A-Z]+[a-z][\w$@]*|\w+_t\b)/,q],["pln",/^[$_a-z][\w$@]*/i,q],["lit",/^(?:0x[\da-f]+|(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d\+)(?:e[+-]?\d+)?)[a-z]*/i,q,"0123456789"],["pln",/^\\[\S\s]?/,
|
||||
q],["pun",RegExp(b),q]);return D(d,g)}function J(a,d,g){function b(a){var c=a.nodeType;if(c==1&&!x.test(a.className))if("br"===a.nodeName)s(a),a.parentNode&&a.parentNode.removeChild(a);else for(a=a.firstChild;a;a=a.nextSibling)b(a);else if((c==3||c==4)&&g){var d=a.nodeValue,i=d.match(m);if(i)c=d.substring(0,i.index),a.nodeValue=c,(d=d.substring(i.index+i[0].length))&&a.parentNode.insertBefore(j.createTextNode(d),a.nextSibling),s(a),c||a.parentNode.removeChild(a)}}function s(a){function b(a,c){var d=
|
||||
c?a.cloneNode(!1):a,e=a.parentNode;if(e){var e=b(e,1),g=a.nextSibling;e.appendChild(d);for(var i=g;i;i=g)g=i.nextSibling,e.appendChild(i)}return d}for(;!a.nextSibling;)if(a=a.parentNode,!a)return;for(var a=b(a.nextSibling,0),d;(d=a.parentNode)&&d.nodeType===1;)a=d;c.push(a)}for(var x=/(?:^|\s)nocode(?:\s|$)/,m=/\r\n?|\n/,j=a.ownerDocument,k=j.createElement("li");a.firstChild;)k.appendChild(a.firstChild);for(var c=[k],i=0;i<c.length;++i)b(c[i]);d===(d|0)&&c[0].setAttribute("value",d);var r=j.createElement("ol");
|
||||
r.className="linenums";for(var d=Math.max(0,d-1|0)||0,i=0,n=c.length;i<n;++i)k=c[i],k.className="L"+(i+d)%10,k.firstChild||k.appendChild(j.createTextNode("\u00a0")),r.appendChild(k);a.appendChild(r)}function p(a,d){for(var g=d.length;--g>=0;){var b=d[g];F.hasOwnProperty(b)?E.console&&console.warn("cannot override language handler %s",b):F[b]=a}}function I(a,d){if(!a||!F.hasOwnProperty(a))a=/^\s*</.test(d)?"default-markup":"default-code";return F[a]}function K(a){var d=a.h;try{var g=S(a.c,a.i),b=g.a;
|
||||
a.a=b;a.d=g.d;a.e=0;I(d,b)(a);var s=/\bMSIE\s(\d+)/.exec(navigator.userAgent),s=s&&+s[1]<=8,d=/\n/g,x=a.a,m=x.length,g=0,j=a.d,k=j.length,b=0,c=a.g,i=c.length,r=0;c[i]=m;var n,e;for(e=n=0;e<i;)c[e]!==c[e+2]?(c[n++]=c[e++],c[n++]=c[e++]):e+=2;i=n;for(e=n=0;e<i;){for(var p=c[e],w=c[e+1],t=e+2;t+2<=i&&c[t+1]===w;)t+=2;c[n++]=p;c[n++]=w;e=t}c.length=n;var f=a.c,h;if(f)h=f.style.display,f.style.display="none";try{for(;b<k;){var l=j[b+2]||m,B=c[r+2]||m,t=Math.min(l,B),A=j[b+1],G;if(A.nodeType!==1&&(G=x.substring(g,
|
||||
t))){s&&(G=G.replace(d,"\r"));A.nodeValue=G;var L=A.ownerDocument,o=L.createElement("span");o.className=c[r+1];var v=A.parentNode;v.replaceChild(o,A);o.appendChild(A);g<l&&(j[b+1]=A=L.createTextNode(x.substring(t,l)),v.insertBefore(A,o.nextSibling))}g=t;g>=l&&(b+=2);g>=B&&(r+=2)}}finally{if(f)f.style.display=h}}catch(u){E.console&&console.log(u&&u.stack||u)}}var E=window,y=["break,continue,do,else,for,if,return,while"],C=[[y,"auto,case,char,const,default,double,enum,extern,float,goto,inline,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"],
|
||||
"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"],M=[C,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,delegate,dynamic_cast,explicit,export,friend,generic,late_check,mutable,namespace,nullptr,property,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"],V=[C,"abstract,assert,boolean,byte,extends,final,finally,implements,import,instanceof,interface,null,native,package,strictfp,super,synchronized,throws,transient"],
|
||||
N=[C,"abstract,as,base,bool,by,byte,checked,decimal,delegate,descending,dynamic,event,finally,fixed,foreach,from,group,implicit,in,interface,internal,into,is,let,lock,null,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var,virtual,where"],C=[C,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"],O=[y,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"],
|
||||
P=[y,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"],W=[y,"as,assert,const,copy,drop,enum,extern,fail,false,fn,impl,let,log,loop,match,mod,move,mut,priv,pub,pure,ref,self,static,struct,true,trait,type,unsafe,use"],y=[y,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"],Q=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)\b/,
|
||||
U=/\S/,X=v({keywords:[M,N,C,"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END",O,P,y],hashComments:!0,cStyleComments:!0,multiLineStrings:!0,regexLiterals:!0}),F={};p(X,["default-code"]);p(D([],[["pln",/^[^<?]+/],["dec",/^<!\w[^>]*(?:>|$)/],["com",/^<\!--[\S\s]*?(?:--\>|$)/],["lang-",/^<\?([\S\s]+?)(?:\?>|$)/],["lang-",/^<%([\S\s]+?)(?:%>|$)/],["pun",/^(?:<[%?]|[%?]>)/],["lang-",
|
||||
/^<xmp\b[^>]*>([\S\s]+?)<\/xmp\b[^>]*>/i],["lang-js",/^<script\b[^>]*>([\S\s]*?)(<\/script\b[^>]*>)/i],["lang-css",/^<style\b[^>]*>([\S\s]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]),["default-markup","htm","html","mxml","xhtml","xml","xsl"]);p(D([["pln",/^\s+/,q," \t\r\n"],["atv",/^(?:"[^"]*"?|'[^']*'?)/,q,"\"'"]],[["tag",/^^<\/?[a-z](?:[\w-.:]*\w)?|\/?>$/i],["atn",/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^\s"'>]*(?:[^\s"'/>]|\/(?=\s)))/],["pun",/^[/<->]+/],
|
||||
["lang-js",/^on\w+\s*=\s*"([^"]+)"/i],["lang-js",/^on\w+\s*=\s*'([^']+)'/i],["lang-js",/^on\w+\s*=\s*([^\s"'>]+)/i],["lang-css",/^style\s*=\s*"([^"]+)"/i],["lang-css",/^style\s*=\s*'([^']+)'/i],["lang-css",/^style\s*=\s*([^\s"'>]+)/i]]),["in.tag"]);p(D([],[["atv",/^[\S\s]+/]]),["uq.val"]);p(v({keywords:M,hashComments:!0,cStyleComments:!0,types:Q}),["c","cc","cpp","cxx","cyc","m"]);p(v({keywords:"null,true,false"}),["json"]);p(v({keywords:N,hashComments:!0,cStyleComments:!0,verbatimStrings:!0,types:Q}),
|
||||
["cs"]);p(v({keywords:V,cStyleComments:!0}),["java"]);p(v({keywords:y,hashComments:!0,multiLineStrings:!0}),["bash","bsh","csh","sh"]);p(v({keywords:O,hashComments:!0,multiLineStrings:!0,tripleQuotedStrings:!0}),["cv","py","python"]);p(v({keywords:"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END",hashComments:!0,multiLineStrings:!0,regexLiterals:2}),["perl","pl","pm"]);p(v({keywords:P,
|
||||
hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["rb","ruby"]);p(v({keywords:C,cStyleComments:!0,regexLiterals:!0}),["javascript","js"]);p(v({keywords:"all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,throw,true,try,unless,until,when,while,yes",hashComments:3,cStyleComments:!0,multilineStrings:!0,tripleQuotedStrings:!0,regexLiterals:!0}),["coffee"]);p(v({keywords:W,cStyleComments:!0,multilineStrings:!0}),["rc","rs","rust"]);
|
||||
p(D([],[["str",/^[\S\s]+/]]),["regex"]);var Y=E.PR={createSimpleLexer:D,registerLangHandler:p,sourceDecorator:v,PR_ATTRIB_NAME:"atn",PR_ATTRIB_VALUE:"atv",PR_COMMENT:"com",PR_DECLARATION:"dec",PR_KEYWORD:"kwd",PR_LITERAL:"lit",PR_NOCODE:"nocode",PR_PLAIN:"pln",PR_PUNCTUATION:"pun",PR_SOURCE:"src",PR_STRING:"str",PR_TAG:"tag",PR_TYPE:"typ",prettyPrintOne:E.prettyPrintOne=function(a,d,g){var b=document.createElement("div");b.innerHTML="<pre>"+a+"</pre>";b=b.firstChild;g&&J(b,g,!0);K({h:d,j:g,c:b,i:1});
|
||||
return b.innerHTML},prettyPrint:E.prettyPrint=function(a,d){function g(){for(var b=E.PR_SHOULD_USE_CONTINUATION?c.now()+250:Infinity;i<p.length&&c.now()<b;i++){for(var d=p[i],j=h,k=d;k=k.previousSibling;){var m=k.nodeType,o=(m===7||m===8)&&k.nodeValue;if(o?!/^\??prettify\b/.test(o):m!==3||/\S/.test(k.nodeValue))break;if(o){j={};o.replace(/\b(\w+)=([\w%+\-.:]+)/g,function(a,b,c){j[b]=c});break}}k=d.className;if((j!==h||e.test(k))&&!v.test(k)){m=!1;for(o=d.parentNode;o;o=o.parentNode)if(f.test(o.tagName)&&
|
||||
o.className&&e.test(o.className)){m=!0;break}if(!m){d.className+=" prettyprinted";m=j.lang;if(!m){var m=k.match(n),y;if(!m&&(y=T(d))&&t.test(y.tagName))m=y.className.match(n);m&&(m=m[1])}if(w.test(d.tagName))o=1;else var o=d.currentStyle,u=s.defaultView,o=(o=o?o.whiteSpace:u&&u.getComputedStyle?u.getComputedStyle(d,q).getPropertyValue("white-space"):0)&&"pre"===o.substring(0,3);u=j.linenums;if(!(u=u==="true"||+u))u=(u=k.match(/\blinenums\b(?::(\d+))?/))?u[1]&&u[1].length?+u[1]:!0:!1;u&&J(d,u,o);r=
|
||||
{h:m,c:d,j:u,i:o};K(r)}}}i<p.length?setTimeout(g,250):"function"===typeof a&&a()}for(var b=d||document.body,s=b.ownerDocument||document,b=[b.getElementsByTagName("pre"),b.getElementsByTagName("code"),b.getElementsByTagName("xmp")],p=[],m=0;m<b.length;++m)for(var j=0,k=b[m].length;j<k;++j)p.push(b[m][j]);var b=q,c=Date;c.now||(c={now:function(){return+new Date}});var i=0,r,n=/\blang(?:uage)?-([\w.]+)(?!\S)/,e=/\bprettyprint\b/,v=/\bprettyprinted\b/,w=/pre|xmp/i,t=/^code$/i,f=/^(?:pre|code|xmp)$/i,
|
||||
h={};g()}};typeof define==="function"&&define.amd&&define("google-code-prettify",[],function(){return Y})})();}()
|