Hallo Leute!
Kennt sich jemand mit dem Protokoll DAV aus? Mein Problem: ich will ein kleines Programm schreiben, mit dem ich zwei Datenquellen synchron halte (aber nicht so einfach wie zB vdirsyncer, sondern mit etwas komplexeres) und eine Datenquelle erreiche ich via DAV.
Nun nach einige Experimente sehe ich wie ich erkennen kann, ob was neues auf dem DAV-Server gibt (neue Datei, bzw. Datei geändert). Was ich nicht sehen kann, zumindest jetzt, ist ob eine Datei gelöscht worden ist... Ich kann natürlich nicht einfach sagen "wenn lokal gibt und im DAV nicht, ist es in DAV gelöscht worden", denn die Datei kann auch gerade lokal angelegt werden...
Ich habe was gesucht, aber entweder bin ich zu blöd für die Suche (möglich!) oder ich habe nichts gefunden...
Kann jemand mir helfen? Also das Problem ist zu erkennen, dass die Datei X vom DAV-Server gelöscht wurde.
Danke Luca Bertoncello (lucabert@lucabert.de)
Hallo Luca!
Ich will ein kleines Programm schreiben, mit dem ich zwei Datenquellen synchron halte
Es gibt drei Fälle: Du beobachtest keine, eine oder beide Datenquellen.
Im Fall, dass du keine Datenquelle genau beobachten kannst: Überlege dir Regeln, wie Unterschiede behandelt werden sollen. Zählt immer die neuere Datei? Sind nur Änderungen aus einer Datenquelle relevant? Wenn eine Quelle eine Datei hat und die andere nicht, mit welchen Regeln soll kopiert werden?
Im Fall, dass du eine Datenquelle genau beobachten kannst: Leg ein Protokoll der Änderungen an und ändere in dieser Reihenfolge auf der anderen Seite.
Im Fall, dass du beide Datenquellen beobachten kannst: Leg auf beiden Seiten ein Protokoll der Änderungen an und führe beide aus. Bei Git ist es so, dass erst vom Master alle Änderungen ausgeführt werden (git pull) und anschließend die vom Client (git commit). Dafür ist Webdav natürlich das falsche Protokoll.
Was ich nicht sehen kann, zumindest jetzt, ist ob eine Datei gelöscht worden
ist.
Richtig. Entweder wechselst du die Logik zu Fall 1 oder Fall 2, oder du nimmst etwas anderes als Webdav.
Thomas
Zitat von Thomas Schmidt schmidt@netaction.de:
Hallo,
Im Fall, dass du keine Datenquelle genau beobachten kannst:
Ich kann aktuell nur sehen, ob die Datei X lokal und auf DAV existiert. Mehr kann ich leider nicht sehen...
Überlege dir Regeln, wie Unterschiede behandelt werden sollen. Zählt immer die neuere Datei? Sind nur Änderungen aus einer Datenquelle relevant? Wenn eine Quelle eine Datei hat und die andere nicht, mit welchen Regeln soll kopiert werden?
DAV sollte bevorzugt werden, das habe ich schon entschieden, allerdings wenn lokal eine Datei gelöscht wird, muss diese Löschung auch an DAV geschickt werden...
Was ich nicht sehen kann, zumindest jetzt, ist ob eine Datei gelöscht worden
ist.
Richtig. Entweder wechselst du die Logik zu Fall 1 oder Fall 2, oder du nimmst etwas anderes als Webdav.
Das Wechseln zu Fall 1 oder 2 ist mir aktuell nicht möglich... Welche andere Möglichkeiten habe ich?
Danke Luca Bertoncello (lucabert@lucabert.de)
Hallo!
DAV sollte bevorzugt werden, das habe ich schon entschieden, allerdings wenn lokal eine Datei gelöscht wird, muss diese Löschung auch an DAV geschickt werden...
Wenn du irgendwie Daten zwischenspeichern kannst, dann speicher das Datum des letzten Sync. Ich meine, du hast einen Dav-Server und einen lokalen Speicher, du kannst vielleicht irgendwo eine Datei ablegen.
Ist eine Datei auf dem Server älter als der letzte Sync und lokal nicht vorhanden, muss sie lokal gelöscht worden sein und wird auf dem Server gelöscht.
Danach erfolgt eine strenge Synchronisierung vom Dav nach lokal.
Wenn das nicht geht, wäre eine sehr ausführliche Erklärung der beabsichtigten Regeln gut. Vorhin klang es noch so, als sollte das Löschen auf dem Dav-Server erkannt werden, oder?
Nun nach einige Experimente sehe ich wie ich erkennen kann, ob was neues auf dem DAV-Server gibt (neue Datei, bzw. Datei geändert). Was ich nicht sehen kann, zumindest jetzt, ist ob eine Datei gelöscht worden ist...
Thomas
Zitat von Thomas Schmidt schmidt@netaction.de:
Hallo,
Wenn du irgendwie Daten zwischenspeichern kannst, dann speicher das Datum des letzten Sync. Ich meine, du hast einen Dav-Server und einen lokalen Speicher, du kannst vielleicht irgendwo eine Datei ablegen.
Ich habe gerade gesehen, dass die lokale Applikation doch was loggt. Ich muss nur etwas in die Datenbank schauen nach der ID der Datei.
Ich werde heute Abend etwas experimentieren...
Danke für den Tipp Luca Bertoncello (lucabert@lucabert.de)
Hallo Liste,
Ich hab mir auf einem Bananapi Pro mit SATA Platte Nextcloud installiert unter armbian - also einem Debian Derivat für raspberry & Co. So weit so gut - DynDNS Domäne ist auch angelegt - funktioniert auch - derzeit noch abgeschalten / nicht aktiviert (Sicherheit)
Nextcloud funktioniert jetzt also im Heimnetz - derzeit noch mit http Zugriff statt https.
Entsprechend (Tutorial) hab ich mir unter /etc/apache2/sites-enebled eine nextcloud.conf eingerichtet.
Nextcloud https://docs.nextcloud.com/server/13/admin_manual/configuration_server/harden_server.html schreibt nun, dass für den HTTPS Zugriff eine virtual Host´s Datei angelegt werden soll. Das hab ich kapiert. Was ich nicht kapiere, ist, kann ich das
<VirtualHost *:80> ServerName cloud.nextcloud.com Redirect permanent / https://cloud.nextcloud.com/ </VirtualHost>
und
<VirtualHost *:443> ServerName cloud.nextcloud.com <IfModule mod_headers.c> Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains" </IfModule> </VirtualHost>
(entsprechend abgeändert) direkt in meinen bestehende nextcloud.conf reinschreiben ? Die sieht bisher so aus:
Alias /nextcloud "/var/www/html/nextcloud/"
<Directory /var/www/html/nextcloud/> Options +FollowSymlinks AllowOverride All
<IfModule mod_dav.c> Dav off </IfModule>
SetEnv HOME /var/www/html/nextcloud SetEnv HTTP_HOME /var/www/html/nextcloud
</Directory>
oder braucht es dazu eine weitere *.conf, die dann enabled werden muss ?
Danke !
Probiers mal mit folgendem Setup:
Config-Datei für den VirtualHost: `/etc/apache2/sites-available/cloud.example.com.conf`
``` <VirtualHost *:80> ServerName cloud.example.com Redirect permanent / https://cloud.example.com/ </VirtualHost> <VirtualHost *:443> ServerName cloud.example.com RequestHeader unset X-Forwarded-Proto RequestHeader set X-Forwarded-Proto https env=HTTPS ErrorLog /var/log/apache2/cloud.example.com/error.log CustomLog /var/log/apache2/cloud.example.com/access.log combined SSLEngine on SSLCertificateFile /etc/letsencrypt/live/cloud.example.com/cert.pem SSLCertificateKeyFile /etc/letsencrypt/live/cloud.example.com/privkey.pem SSLCertificateChainFile /etc/letsencrypt/live/cloud.example.com/chain.pem Header always set Strict-Transport-Security "max-age=15768000" DocumentRoot /var/www/cloud.example.com </VirtualHost>
# https://mozilla.github.io/server-side-tls/ssl-config-generator/?server=apach...
# modern configuration, tweak to your needs SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1 SSLCipherSuite ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256 SSLHonorCipherOrder on SSLCompression off SSLSessionTickets off
# OCSP Stapling, only in httpd 2.3.3 and later SSLUseStapling on SSLStaplingResponderTimeout 5 SSLStaplingReturnResponderErrors off SSLStaplingCache shmcb:/var/run/ocsp(128000) ```
Da du vmtl eine andere Apache/openssl Version hast (sudo apachectl -v/sudo openssl version), kannste dir den unteren Teil unter dem Mozilla-Link selber generieren.
Damit hast du alles konfiguriert, was du brauchst. Der erste VirtualHost ist für die Weiterleitung, der zweite kümmert sich um das eigentliche Hosten der Anwendung. `sudo a2enmod ssl` nicht vergessen. Das SSL-Zertifikat bekommst du von Letsencrypt, wie das geht, findest du auf https://certbot.eff.org
Am Ende dann `sudo a2ensite cloud.example.com` und ab dafür…
GM
Am 2018-07-12 10:46, schrieb René:
Hallo Liste,
Ich hab mir auf einem Bananapi Pro mit SATA Platte Nextcloud installiert unter armbian - also einem Debian Derivat für raspberry & Co. So weit so gut - DynDNS Domäne ist auch angelegt - funktioniert auch
- derzeit noch abgeschalten / nicht aktiviert (Sicherheit)
Nextcloud funktioniert jetzt also im Heimnetz - derzeit noch mit http Zugriff statt https.
Entsprechend (Tutorial) hab ich mir unter /etc/apache2/sites-enebled eine nextcloud.conf eingerichtet.
Nextcloud [1] schreibt nun, dass für den HTTPS Zugriff eine virtual Host´s Datei angelegt werden soll. Das hab ich kapiert. Was ich nicht kapiere, ist, kann ich das
<VirtualHost *:80> ServerName cloud.nextcloud.com Redirect permanent / https://cloud.nextcloud.com/
</VirtualHost> und
<VirtualHost *:443> ServerName cloud.nextcloud.com <IfModule mod_headers.c> Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains" </IfModule>
</VirtualHost>
(entsprechend abgeändert) direkt in meinen bestehende nextcloud.conf reinschreiben ? Die sieht bisher so aus:
Alias /nextcloud "/var/www/html/nextcloud/"
<Directory /var/www/html/nextcloud/> Options +FollowSymlinks AllowOverride All
<IfModule mod_dav.c> Dav off </IfModule>
SetEnv HOME /var/www/html/nextcloud SetEnv HTTP_HOME /var/www/html/nextcloud
</Directory>
oder braucht es dazu eine weitere *.conf, die dann enabled werden muss ?
Danke !
Links:
[1] https://docs.nextcloud.com/server/13/admin_manual/configuration_server/harde...
lug-dd@mailman.schlittermann.de