**REPLIVERSION** is a package designed for desktop Linux that enables versioning for folders of one's choosing.
As files are altered in a designated folder (and any subfolders...), the
versions are retained in a (hidden) ".archive" folder. It supports menu hooks in
the KDE Dolphin file manager, but can also be used via command line ([**RTFM**](https://repliversion.org/cli.html)...)

 website:
 
https://repliversion.org

(online manual)

 git:
 
https://git.repliversion.org

(this repo)

 download:
 
https://deb.repliversion.org

(".deb" package; latest version: 1.1)

This initial version is only for Debian (tested with the "bookworm" release...),
and python>=3.11.
It compiles _some_ of the code to binaries using cython, for reasons of performance;
if a compilation at the time of install fails, it will step back to using a python script.
The python implementation of the service code will offer better
traceback support during this package's testing.
Initial desktop support is focused on KDE/plasma.

## Installation
```
sudo dpkg -i repliversion-1.1.deb
```
#### OR
```
su # (become root, enter credentials...)
```
followed by
```
dpkg -i repliversion-1.1.deb
exit # (go back to being user...)
```
Files this package depends on  are kept in the directory
"**/usr/local/repliversion**".
The "**install.py**" and "**uninstall.py**" scripts in
"**/usr/local/repliversion**"
are for a manual standalone install and uninstall;
this could come in handy if you accidentally mess up your install
when playing around with the package,
or if you downloaded the source files (in the git folder "**repliversion**")
to "**/usr/local/repliversion**" and want to manually install this package.

Global settings are kept in the administrative folder
"**/etc/repliversion**", in the files "**version.xml**" and "**dirs.txt**".

This package sets up a linux systemd service called "**repliversion**",
and a group account also called "**repliversion**".
The group account is used to indicate users
who are permitted to edit the global "**version.xml**" file
(mentioned above...)
The service will log to "**/var/log/repliversion.log**".
If operating correctly, you should not need to
worry about this file using up much disk space;
but adding an entry to it for "logrotate" might be a good idea!

> https://www.thegeekstuff.com/2010/07/logrotate-examples

(just one of many articles you can find on logrotate...)

FULL DISCLOSURE: Given the many privileges implicitly needed to manage
the file permissions of multiple users, along with immutability,
the service canNOT be confined to a service account
(well, technically it ***could***; but it would need the similar privileges
that root has; so the dedicated __service__ for now uses the
root account...)

I would certainly welcome a sponsor providing a bounty at hacker1
to really go over this for any attack vectors!

> https://www.hackerone.com

That is  mentioned on this package's documentation site (https://repliversion.org).
