## davify
Uploads files to a WebDAV server for retrieval via https.
## The problem davify solves
Sending document versions to collaborators is often quite cumbersome.
Davify (i) uploads files to your WebDAV server (multiple files and directories are put into a .txz archive prior to uploading), (ii) provides a publicly available download link, and (iii) copies this information
into the clipboard.
In addition it keeps track of a file's lifetime and provides scripts for automatically removing files once their lifetime has expired.
## Setup and configuration files:
### Installation
```bash
pipx install davify
```
### Client configuration:
Setup the WebDAV client with
```bash
davify --setup
```
Davify's configuration resides in `~/.davify` and the WebDAV server credentials are stored in your system's keystore. Please find below an example configuration file.
```
[default]
filename_pattern = {random_prefix}{lifetime_str}-{fname}{version_suffix}{ext}
file_url_pattern = {protocol}://example.net/{random_prefix}{lifetime_str}-{fname_quoted}{version_suffix}{ext}
notification_message = {url}\n(Note the file will be available for {lifetime}.)`
```
### Server configuration
Calling `clean-davify-directory` on the server removes expired files. Note that you need to provide the full path to the `clean-davify-directory` binary (use `which clean-davify-directory` to obtain the path).
Example crontab entry:
```cron
# clean davify directory
15 00 * * * www-data /root/.local/bin/clean-davify-directory /var/www/davify
```
## Command line parameters
```bash
usage: davify [-h] [--lifetime LIFETIME]
[--retrieval-url-pattern RETRIEVAL_URL_PATTERN]
[--webdav-file-pattern WEBDAV_FILE_PATTERN]
[--file-url-pattern FILE_URL_PATTERN]
[--archive-name ARCHIVE_NAME] [--setup]
[fname [fname ...]]
positional arguments:
fname File(s) to davify or directory to upload.
optional arguments:
-h, --help show this help message and exit
--lifetime LIFETIME Suggested file lifetime in hours (default: 1 week).
Zero suggests that the file is never deleted.
--retrieval-url-pattern RETRIEVAL_URL_PATTERN
Pattern to use for the retrieval URL.
--webdav-file-pattern WEBDAV_FILE_PATTERN
Pattern used to create the webdav file.
--file-url-pattern FILE_URL_PATTERN
Patterns used to retrieve the created file
--archive-name ARCHIVE_NAME, -n ARCHIVE_NAME
An optional file name for the created archive.
--setup Setup WebDAV connection.
```
## Example call:
```
albert@myhost:~$ davify transform.py
https://example.net/qOMvcO/transform-15dez-0201.py
(Note the file will be available for 1 week.)
```
Raw data
{
"_id": null,
"home_page": "https://github.com/AlbertWeichselbraun/davify",
"name": "davify",
"maintainer": null,
"docs_url": null,
"requires_python": "<4.0,>=3.8",
"maintainer_email": null,
"keywords": "webdav",
"author": "Albert Weichselbraun",
"author_email": "albert@weichselbraun.net",
"download_url": "https://files.pythonhosted.org/packages/ce/c0/be4b4b3ca235d41b601cb73f1f74d9094a030dd3dbf493377e4f2bf509cf/davify-1.2.0.tar.gz",
"platform": null,
"description": "## davify \nUploads files to a WebDAV server for retrieval via https.\n\n## The problem davify solves\nSending document versions to collaborators is often quite cumbersome. \nDavify (i) uploads files to your WebDAV server (multiple files and directories are put into a .txz archive prior to uploading), (ii) provides a publicly available download link, and (iii) copies this information\ninto the clipboard.\n\nIn addition it keeps track of a file's lifetime and provides scripts for automatically removing files once their lifetime has expired.\n\n## Setup and configuration files:\n\n### Installation\n\n```bash\npipx install davify\n```\n\n### Client configuration:\nSetup the WebDAV client with\n```bash\ndavify --setup\n```\nDavify's configuration resides in `~/.davify` and the WebDAV server credentials are stored in your system's keystore. Please find below an example configuration file.\n\n```\n[default]\nfilename_pattern = {random_prefix}{lifetime_str}-{fname}{version_suffix}{ext}\nfile_url_pattern = {protocol}://example.net/{random_prefix}{lifetime_str}-{fname_quoted}{version_suffix}{ext}\nnotification_message = {url}\\n(Note the file will be available for {lifetime}.)`\n```\n\n### Server configuration\nCalling `clean-davify-directory` on the server removes expired files. Note that you need to provide the full path to the `clean-davify-directory` binary (use `which clean-davify-directory` to obtain the path).\n\nExample crontab entry:\n```cron\n# clean davify directory\n15 00 * * * www-data /root/.local/bin/clean-davify-directory /var/www/davify\n```\n## Command line parameters\n```bash\nusage: davify [-h] [--lifetime LIFETIME]\n [--retrieval-url-pattern RETRIEVAL_URL_PATTERN]\n [--webdav-file-pattern WEBDAV_FILE_PATTERN]\n [--file-url-pattern FILE_URL_PATTERN] \n [--archive-name ARCHIVE_NAME] [--setup]\n [fname [fname ...]]\n\npositional arguments:\n fname File(s) to davify or directory to upload.\n\noptional arguments:\n -h, --help show this help message and exit\n --lifetime LIFETIME Suggested file lifetime in hours (default: 1 week).\n Zero suggests that the file is never deleted.\n --retrieval-url-pattern RETRIEVAL_URL_PATTERN\n Pattern to use for the retrieval URL.\n --webdav-file-pattern WEBDAV_FILE_PATTERN\n Pattern used to create the webdav file.\n --file-url-pattern FILE_URL_PATTERN\n Patterns used to retrieve the created file\n --archive-name ARCHIVE_NAME, -n ARCHIVE_NAME\n An optional file name for the created archive.\n --setup Setup WebDAV connection.\n```\n\n## Example call: \n\n```\nalbert@myhost:~$ davify transform.py\nhttps://example.net/qOMvcO/transform-15dez-0201.py\n(Note the file will be available for 1 week.)\n```\n\n",
"bugtrack_url": null,
"license": "GPL3",
"summary": "Davify uploads files to webdav servers and provides a download link for accessing them.",
"version": "1.2.0",
"project_urls": {
"Homepage": "https://github.com/AlbertWeichselbraun/davify"
},
"split_keywords": [
"webdav"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "effc8511431980764d42b23fd9043e27578bd408ac529d295b030276426a4def",
"md5": "149c7c3fcdd54349ce442a60c22cd7bd",
"sha256": "53e3c909da8054f816a6c214ce4dcb3b24cd849a216ee89ad6e8547d15a44d10"
},
"downloads": -1,
"filename": "davify-1.2.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "149c7c3fcdd54349ce442a60c22cd7bd",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "<4.0,>=3.8",
"size": 21828,
"upload_time": "2024-06-12T18:40:58",
"upload_time_iso_8601": "2024-06-12T18:40:58.926670Z",
"url": "https://files.pythonhosted.org/packages/ef/fc/8511431980764d42b23fd9043e27578bd408ac529d295b030276426a4def/davify-1.2.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "cec0be4b4b3ca235d41b601cb73f1f74d9094a030dd3dbf493377e4f2bf509cf",
"md5": "365bb82862f2a6ffbdf9ca2fc6518f69",
"sha256": "3e1f74654458919bc776dc25adb027d6f02903b9b8d867bb6c09dc35aa927336"
},
"downloads": -1,
"filename": "davify-1.2.0.tar.gz",
"has_sig": false,
"md5_digest": "365bb82862f2a6ffbdf9ca2fc6518f69",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<4.0,>=3.8",
"size": 20426,
"upload_time": "2024-06-12T18:41:00",
"upload_time_iso_8601": "2024-06-12T18:41:00.258939Z",
"url": "https://files.pythonhosted.org/packages/ce/c0/be4b4b3ca235d41b601cb73f1f74d9094a030dd3dbf493377e4f2bf509cf/davify-1.2.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-06-12 18:41:00",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "AlbertWeichselbraun",
"github_project": "davify",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"lcname": "davify"
}