Skip to content

Conversation

llemeurfr
Copy link
Contributor

The main evolution consists in offering an alternative way to store encrypted publications: the lcpencrypt utility can now store an encrypted publication to its final storage location (file system or S3 bucket), and does not rely on the License Server to do so. In such a case, the lcpencrypt utility notifies the lcpserver of the encryption of a new publication with its storage URL as a parameter.

An implementer can therefore control storage folders or S3 buckets as he needs, e.g. use one folder/bucket per month, one folder/bucket per type of publication, even one folder/bucket per publication if this is his choice.

The evolution is totally backward compatible, i.e. implementers are able to keep their current architecture and configuration file. They are also able to move to the new architecture without the requirement to change the structure or content of their active database. Implementers willing to move to the new architecture will just have to modify their config file, restart their lcpserver and use lcpencrypt with new parameters.

The second evolution is to restore the capability for the lcpencrypt utility to fetch the input file from a remote http server.

This evolution has been requested by several implementers, notably the Internet Archive.

With the current encryption workflow, lcpencrypt is creating a temporary encrypted file in the file system; the file path is notified to the License Server, which copies the content of the file either to the final file system storage or S3 bucket. All encrypted files are stored in the same folder or bucket, which may be quite large. This solution has three issues: there must be a shared folder between lcpencrypt and lcpserver, there is a file copy (if the storage is a file system) that has no real interest, and the storage is hugely monolithic.

The license server does not need to manage file storage: its purpose is serving licenses, and for that it must only know the URL of the encrypted publication.

Therefore, the evolution consists in adding storage control to lcpencrypt, and the possibility to notify the lcpserver of the encryption of a new publication with its storage URL as a parameter.

An implementer can therefore control storage folders or S3 buckets as he needs, e.g. use one folder/bucket per month, one folder/bucket per type of publication, even one folder/bucket per publication if this is his choice.

The evolution is totally backward compatible, i.e. implementers are able to keep their current architecture and configuration file. They are also able to move to the new architecture without the requirement to change the structure or content of their active database. Implementers willing to move to the new architecture will just have to modify their config file, restart their lcpserver and use lcpencrypt with new parameters.

Note: this is also the opportunity to clean redundant encryption code (duplicated between lcpencrypt and the test frontend server).
@llemeurfr llemeurfr merged commit bff371c into master Feb 2, 2022
@llemeurfr llemeurfr deleted the develop branch February 7, 2022 18:56
panaC added a commit that referenced this pull request Aug 8, 2022
Version 1.6.0 (#272) [master] to [cd]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant