Last active
June 2, 2023 10:13
-
-
Save apollo13/f4fc8f33a2700dffb9e11c1b056c53ba to your computer and use it in GitHub Desktop.
OwnCloud/NextCloud emulator
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
[tool.poetry] | |
name = "owncloudemulator" | |
version = "0.1.0" | |
description = "" | |
authors = ["Florian Apolloner <florian@apolloner.eu>"] | |
[tool.poetry.dependencies] | |
python = "^3.7" | |
starlette = "^0.13.0" | |
uvicorn = "^0.10.8" | |
[tool.poetry.dev-dependencies] | |
[build-system] | |
requires = ["poetry>=0.12"] | |
build-backend = "poetry.masonry.api" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# This simple server emulates a owncloud server for gnome-online-accounts. | |
# It just redirects the DAV discovery to fastmail :D | |
from starlette.applications import Starlette | |
from starlette.routing import Route, Mount | |
from starlette.requests import Request | |
from starlette.responses import Response, RedirectResponse | |
async def homepage(request: Request): | |
return Response() | |
async def dav(request: Request): | |
mapping = { | |
"caldav": "https://caldav.fastmail.com/dav/calendars", | |
"carddav": "https://carddav.fastmail.com/dav/addressbooks", | |
} | |
return RedirectResponse(mapping[request.path_params["type"]]) | |
app = Starlette( | |
debug=False, | |
routes=[ | |
Route("/.well-known/{type}", dav, methods=["PROPFIND"]), | |
Mount( | |
"/remote.php", | |
routes=[ | |
Route("/webdav/", homepage), | |
Route("/{type}/", dav, methods=["PROPFIND"]), | |
], | |
), | |
], | |
) |
Please let me know if any of this is a (licensing) issue for you, and I will do my best to rectify it.
Nope, go for it. And thanks for putting that together!
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
@phs I have created a tool of my own based on this script. Basically I just added a config_file argument, to accept a config file that is used to set the CalDAV and CardDAV URLs. I have credited you for the script: https://gitlab.com/julianfairfax/gnome-dav-proxy#related-projects-and-alternatives, and my tool is licensed as MIT, as yours is: https://gitlab.com/julianfairfax/gnome-dav-proxy#license. Please let me know if any of this is a (licensing) issue for you, and I will do my best to rectify it.