From 96b3f76ea272a75ccf0179a401e57d13ce3a91f3 Mon Sep 17 00:00:00 2001 From: Nikola Petrov Date: Mon, 29 Sep 2025 14:27:40 +0200 Subject: [PATCH] Add caldav --- caldav/htpasswd | 1 + caldav/readme.md | 23 +++++++++++++++++++++++ caldav/server.py | 34 ++++++++++++++++++++++++++++++++++ 3 files changed, 58 insertions(+) create mode 100644 caldav/htpasswd create mode 100644 caldav/readme.md create mode 100644 caldav/server.py diff --git a/caldav/htpasswd b/caldav/htpasswd new file mode 100644 index 0000000..c18e3a8 --- /dev/null +++ b/caldav/htpasswd @@ -0,0 +1 @@ +username:password \ No newline at end of file diff --git a/caldav/readme.md b/caldav/readme.md new file mode 100644 index 0000000..e280f32 --- /dev/null +++ b/caldav/readme.md @@ -0,0 +1,23 @@ + + +how to make python portable + +https://chat.mistral.ai/chat/ab946d87-22e6-47d4-a99c-e8522c077347 + +``` +wget https://www.python.org/ftp/python/3.13.7/Python-3.13.7.tgz +tar -xzf Python-3.13.7.tgz +rm Python-3.13.7.tgz +cd Python-3.13.7 +./configure --enable-optimizations --with-ensurepip=install --prefix=$(pwd)/portable_python +make -j$(nproc) +make install +cd .. +mv Python-3.13.7/portable_python portable_python +rm -rf Python-3.13.7 +cd .. +tar -czvf caldav.tar.gz caldav/ +``` + + +tar -xzf caldav.tar.gz \ No newline at end of file diff --git a/caldav/server.py b/caldav/server.py new file mode 100644 index 0000000..7e947e5 --- /dev/null +++ b/caldav/server.py @@ -0,0 +1,34 @@ +from radicale import Application, config +from wsgiref.simple_server import make_server +import os + +def run_server(): + # Load default configuration + configuration = config.load() + + # Customize settings + configuration.update({ + "server": { + "hosts": "0.0.0.0:5232", # Listen on all interfaces + }, + + "storage": { + "filesystem_folder": "./calendars", # Store calendars here + }, + "auth": { + "type": "htpasswd", + "htpasswd_filename": "./htpasswd", # Path to htpasswd file + "htpasswd_encryption": "autodetect", # or "sha1", "md5" (bcrypt is most secure) + }, + + }) + + # Create and run the app + app = Application(configuration=configuration) + server = make_server("0.0.0.0", 5232, app) + print("✅ Secure CalDAV server running on http://0.0.0.0:5232") + print("🔐 Authentication required. Default user: admin / password") + server.serve_forever() + +if __name__ == "__main__": + run_server()