Compare commits

...

2 Commits

Author SHA1 Message Date
9a4a8155e2 caldav 2025-09-29 14:44:16 +02:00
96b3f76ea2 Add caldav 2025-09-29 14:27:40 +02:00
4 changed files with 62 additions and 0 deletions

1
.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
portable_python

1
caldav/htpasswd Normal file
View File

@@ -0,0 +1 @@
username:password

26
caldav/readme.md Normal file
View File

@@ -0,0 +1,26 @@
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
# now in portable_python install packages that are needed
./portable_python/bin/pip3 install bcrypt
./portable_python/bin/pip3 install radicale
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

34
caldav/server.py Normal file
View File

@@ -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()