Skip to content

Releases: PrivateBin/PrivateBin

Release v1.7.3 - Fixing expiration selection

13 May 17:30
1.7.3
22419cd
Compare
Choose a tag to compare
  • CHANGED: Various tweaks of the bootstrap5 template, suggested by the community
  • CHANGED: Upgrading libraries to: DOMpurify 3.1.3
  • FIXED: Selected expiration not being applied, when using bootstrap template (#1309)

Release v1.7.2 - Adding new template and configuration options

05 May 19:12
1.7.2
da8b6a2
Compare
Choose a tag to compare

Important: Please don't update to this release, it contains a critical bug! See #1309 for details.


  • ADDED: Allow use of shortenviayourls in query parameters (#1267)
  • ADDED: Input sanitation to some not yet filtered query and server parameters
  • ADDED: Optional Bootstrap CSS 5.3.3 based template, use configuration template = "bootstrap5" to switch to it (#728)
  • CHANGED: "Send" button now labeled "Create" (#946)
  • CHANGED: Drop some PHP < 5.6 fallbacks, minimum version is PHP 7.3 as of release 1.6.0
  • CHANGED: Set lang cookie with lax SameSite property
  • CHANGED: Upgrading libraries to: DOMpurify 3.1.2 (#1299) & jQuery 3.7.1
  • CHANGED: create attribute is no longer returned in API for pastes & can be disabled for comments using discussiondatedisplay as well (#1290)
  • FIXED: Add cache control headers also to API calls (#1263)
  • FIXED: Shortened paste URL does not appear in email (#606)

Note regarding the new template "bootstrap5", that if you want the button icons (SVG) to display, you have to relax the CSP rule slightly and change default-src from 'none' to 'self'. You configure it as follows:

template = "bootstrap5"
cspheader = "default-src 'self'; base-uri 'self'; form-action 'none'; manifest-src 'self'; connect-src * blob:; script-src 'self' 'unsafe-eval'; style-src 'self'; font-src 'self'; frame-ancestors 'none'; img-src 'self' data: blob:; media-src blob:; object-src blob:; sandbox allow-same-origin allow-scripts allow-forms allow-popups allow-modals allow-downloads"

The new theme comes in only one flavour, but does include a dark-mode switch and attempts detecting the currently set browser preference.

We don't yet enable this new template by default. Please report any issues you find with it or submit pull requests with your improvements. Should no major issues get detected, we intend to make it the new default later this year and eventually deprecate and remove the old bootstrap 3 templates, as well as the page (classic ZereBin) one. It would be appreciated if additional templates would get submitted and shared with the community, so we get some more variety to choose from.

Release v1.7.1 - Fixes zlib 1.3.1 wasm file reference

11 Feb 14:33
1.7.1
aad975a
Compare
Choose a tag to compare
  • FIXED: zlib 1.3.1 wasm file reference

Release v1.7.0 - Ask for confirmation, before loading burn after reading pastes

11 Feb 13:22
1.7.0
a3ee624
Compare
Choose a tag to compare
  • ADDED: Translations for Romanian
  • ADDED: Detect and report on damaged pastes (#1218)
  • CHANGED: Ask for confirmation, before loading burn after reading pastes (#1237)
  • CHANGED: Focus on password input in modal dialog
  • CHANGED: Upgrading libraries to: DOMpurify 3.0.8 & zlib 1.3.1
  • FIXED: Support more types of valid URLs for shorteners, incl. IDN ones (#1224)
  • FIXED: Email timezone buttons overlapping in some languages (#1039)
  • FIXED: Changing language mangles URL (#1191)
  • FIXED: Needless reload when visiting default URL

Release v1.6.2 - Fixing language selection & SRI mismatch

15 Dec 06:22
1.6.2
d0420fb
Compare
Choose a tag to compare
  • FIXED: English not selectable when languageselection enabled (#1208)
  • FIXED: SRI mismatch due to cached file having changed (#1207)

Release v1.6.1 - Adding right-to-left writing support for Arabic & Hebrew

04 Dec 20:14
1.6.1
3bd570b
Compare
Choose a tag to compare
  • ADDED: Right-To-Left (RTL) support for Arabic & Hebrew (#1174)
  • CHANGED: Upgrading libraries to: DOMpurify 3.0.6

Release v1.6.0 - Adding new translations and dropping support for PHP < 7.3

11 Sep 17:59
1.6.0
bbc5b62
Compare
Choose a tag to compare

This release adds translations for Japanese & Arabic and increases the minimal required PHP version to 7.3.

In addition to the two new translations for the Japanese & Arabic languages, the Email-button is now a configurable option, but still enabled by default.

The minimum supported PHP version is now 7.3, due to having upgraded the PHP unit test framework which no longer supports older PHP releases. This simplifies our development (we no longer need to maintain a parallel branch that ensured PHP 8 compatibility) and let us drop a library that provided a more cryptographically secure random function to PHP 5.

Update procedure

As usual, you can download the archive for a manual upgrade and can find more details in the installation instructions.

We also offer a container images using the nginx web server with php-fpm and one using the nginx unit application server, that include the recommended secure setup with the non-essential files and data outside of the web servers document root.

Changes since version 1.5.2

  • ADDED: Translations for Japanese & Arabic
  • ADDED: Configuration option to disable Email button (#1164)
  • CHANGED: Minimum required PHP version is 7.3, due to upgrading PHPunit (#707)
  • CHANGED: Removed PHP 5 polyfill for random_bytes()

Release v1.5.2 - S3 storage improvements & library updates

09 Jul 07:30
1.5.2
01afe7d
Compare
Choose a tag to compare

This release contains an improvement for the S3 storage & updates several libraries.

This patch release allows the AWS SDK to use default credential provider chain when using the S3 storage backend, exposes the used JSON-LD types in the API, addresses PHP 8.2 deprecation warnings and includes several updated libraries, including some security fixes.

When using the S3 storage backend, you now have the option of passing the S3 credential configuration in other ways than just the PrivateBin configuration file. If the credentials are not set in configuration, the AWS SDK will use the default credentials provider chain, which will look for credentials in a few places automatically, including environment variables or instance roles. For details on these, see the SDK's documentation on the default credentials provider chain

The updated DOMpurify & jQuery libraries contain some security fixes. While we are not aware that these could be used with PrivateBin, for example to bypass DOMpurify filtering of the user provided paste contents to inject malicious code displayed to visitors, upgrading these prevents these from becoming an issue.

Finally, the administration script introduced in the last release, made use of a form of string interpolation that got deprecated in PHP 8.2, causing it to emit warning messages, when running it on that PHP version. It was the only area that needed any changes for PHP 8.2 and our container images have already been using PHP 8.2 for a few months without any issues.

Benefits of switching to the new release

We recommend to upgrade all instances, due to the security fixes in the included DOMpurify & jQuery libraries.

Update procedure

As usual, you can download the archive for a manual upgrade and can find more details in the installation instructions.

We also offer a container images using the nginx web server with php-fpm and one using the nginx unit application server, that include the recommended secure setup with the non-essential files and data outside of the web servers document root.

Changes since version 1.5.1

  • ADDED: Allow AWS SDK to use default credential provider chain for S3Storage (#1070)
  • CHANGED: Upgrading libraries to: DOMpurify 3.0.4 & jQuery 3.7.0
  • FIXED: Addressed PHP 8.2 deprecation warnings (#1092)
  • FIXED: Expose types JSON-LD incl. configured expiration dates (#1045)

Help wanted & greatly appreciated

Apart from the large tasks that require deeper insight and time, there are also smaller issues were help is wanted, topics open to debate and of course many languages that still remain to be translated. We are also still looking for additional long term maintainers among our frequent issue helpers.

What can we offer you in return for your help?

  • We can offer you our mentorship, if this is your first time participating as a maintainer of an open source software project. We can guide you through submitting your first pull requests and work with you to ensure your change fulfills the communities quality standards, gets merged and makes it into a release.
  • Your work gets publicly credited. This can help you build up a resume, showing off your growing skill set, in programming as well as your soft skills.
  • PrivateBin is a smaller project. If you'd like to learn how to participate and contribute in an open source git project, this should be less overwhelming then larger projects.
  • We do have a decent unit test code coverage, so it is an environment forgiving of mistakes. You may still introduce logical flaws or issues in new features, not yet covered in the tests, but you can rely on the tests preventing any regressions in other areas.
  • You don't have to be proficient in multiple programming languages, there are a lot of things to improve within either the JavaScript or PHP areas that don't need you to understand the other side, beyond their shared API.
  • It can be an opportunity to learn about continuos integration tools to automate tasks like tests, security scans, etc.

If you are interested in helping with any of these points, we have prepared a development guide including design goals, code structure and tools to get you started. For any questions, you can chat with the maintainers in the discussion area or reach us via email.

Plans for future releases

The next minor release will focus on user interface improvements.

Release v1.5.1 - Filesystem purge lookup change & administration script

24 Dec 05:40
1.5.1
e84a869
Compare
Choose a tag to compare

This release reverts a filesystem purge lookup change and adds a script for administrative tasks.

This patch release partially reverts a change to the filesystem backend's purge lookup, adds a script for administrative tasks, catches JSON errors when malformed pastes get uploaded and includes updated libraries for GCS and S3 backends.

Release 1.5.0 contained a simplification to the filesystem backend's purge logic, which could lead to very resource intensive purge cycles on instances with a large storage footprint. This release retains the glob pattern, but re-adds the limited and randomized lookup. The limit gives up searching after 10 times the purge batch size and the randomization prevents re-opening the same, non-expired pastes over and over. Without these mechanisms, eventually all expired pastes got purged, and every further purge reads all pastes from disk, without finding anything, which wastes time and resources.

PrivateBin now adds another script to help perform administrative tasks. The new script, called administration, helps with deleting pastes, removing empty directories, when using the filesystem backend, purging all expired pastes at once and gathering statistics on an instance.

Deleting pastes is relatively easy to do manually with the filesystem and database backends, but more difficult on GCS or S3 storage. The new tool works the same, regardless of backend, letting server administrators delete pastes by ID.

When using the filesystem backend, the purge does not remove empty directories, as they can be reused by new pastes with IDs starting on the same first 2 bytes. These empty directories can now be removed, if desired.

The administration script also can issue a full purge cycle. Instances could disable the automatic purge on paste/comment creation in their configuration and instead use a cron job to run full purges on a schedule. Or it could be issued before a backup, to avoid archiving expired data.

Finally, the script can be used to gather and display statistical information. This includes the total number of pastes the instance hosts, as well as how many of these are expired, of the burn-after-reading type, include discussions and what formatting they use (plain text, source code or markdown).

The release includes smaller improvements to catch a JSON parsing exception when malformed pastes get uploaded to the API and updates the suggested library versions for GCS and S3 storage backends. We had gotten reports of the S3 library in 1.5.0 having emitted deprecation warnings on PHP 8.1.

Benefits of switching to the new release

We recommend to upgrade 1.5.0 instances using the (default) filesystem storage backend as well as instances using S3 storage and PHP > 8.

Update procedure

As usual, you can download the archive for a manual upgrade and can find more details in the installation instructions.

We also offer a Docker container that includes the recommended secure setup with the non-essential files and data outside of the web servers document root.

Changes since version 1.5.0

  • ADDED: script for administrative tasks: deleting pastes (#274), removing empty directories (#277), purging expired pastes (#276) & statistics (#319)
  • FIXED: Revert Filesystem purge to limited and randomized lookup (#1030)
  • FIXED: Catch JSON decode errors when invalid data gets sent to the API (#1030)
  • FIXED: Support sorting v1 format in mixed version comments in Filesystem backend (#1030)

Help wanted & greatly appreciated

Apart from the large tasks that require deeper insight and time, there are also smaller issues were help is wanted, topics open to debate and of course many languages that still remain to be translated. We are also still looking for additional long term maintainers among our frequent issue helpers.

If you are interested in helping with any of these points, we have prepared a development guide including design goals, code structure and tools that should get you started. For any questions, you can also chat with the maintainers in the discussion area.

Plans for future releases

The next regular release will focus on user interface improvements.

Release v1.5.0 - S3 Storage backend, storage migration script & adding new translations

11 Dec 05:13
1.5.0
b5602dd
Compare
Choose a tag to compare

This release adds an S3 storage backend, a storage migration script, and new translations.

This minor release adds support for Simple Storage Service (S3), a storage migration script, adds four new languages to the translations and includes updated libraries.

The new S3 storage backend can be used with Ceph, Amazon Web Services or other S3 providers. A migration script was also provided, which can migrate existing instances from one storage backend to another, including in between the same storage backend types, but with different configurations (i.e. from one directory to another or one database to another).

The release includes several smaller improvements to the MariaDB and MySQL support. It reverts to CREATE INDEX without IF NOT EXISTS clauses (introduced in 1.4.0) which are not supported in MySQL. It also avoids requiring the SUPER privilege for the sql_mode added in 1.4.0. Indexes now also make use of the table prefix, to support multiple instances sharing a single database.

Jdenticons were added as a fourth option for comment icons, in addition to identicons and vizhash (and using none). The new icon type adds a different style and they don't require the PHP GD module to be generated. They are larger in size than identicons, a bit smaller than vizhash and slower to generate than either.

If using the YOURLS URL shortener with a signature and would like to keep it hidden, as of this release a server side integration via a proxy can be used, storing the signature only in configuration.

Benefits of switching to the new release

We recommend to upgrade 1.4.x instances using MariaDB backend and any instance that would like to make use of any of the new features or translations.

Update procedure

As usual, you can download the archive for a manual upgrade and can find more details in the installation instructions.

We also offer a Docker container that includes the recommended secure setup with the non-essential files and data outside of the web servers document root.

Changes since version 1.4.0

  • ADDED: script for data storage backend migrations (#1012)
  • ADDED: Translations for Turkish, Slovak, Greek and Thai
  • ADDED: S3 Storage backend (#994)
  • ADDED: Jdenticons as an option for comment icons (#793)
  • CHANGED: Avoid SUPER privilege for setting the sql_mode for MariaDB/MySQL (#919)
  • CHANGED: Upgrading libraries to: DOMpurify 2.4.6, jQuery 3.6.1, Showdown 2.1.0 & zlib 1.2.13
  • FIXED: Revert to CREATE INDEX without IF NOT EXISTS clauses, to support MySQL (#943)
  • FIXED: Apply table prefix to indexes as well, to support multiple instances sharing a single database (#943)
  • FIXED: YOURLS integration via new proxy, storing signature in configuration (#725)

Help wanted & greatly appreciated

Apart from the large tasks that require deeper insight and time, there are also smaller issues were help is wanted, topics open to debate and of course many languages that still remain to be translated. We are also still looking for additional long term maintainers among our frequent issue helpers.

If you are interested in helping with any of these points, we have prepared a development guide including design goals, code structure and tools that should get you started. For any questions, you can also chat with the maintainers in the discussion area.

Plans for future releases

The next regular release will focus on user interface improvements.