doc:appunti:calendar_contacts_private
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| doc:appunti:calendar_contacts_private [2018/11/12 17:18] – [Impostazione del colore predefinito di un calendario] niccolo | doc:appunti:calendar_contacts_private [2024/11/07 11:03] (current) – [Creazione di un calendario di gruppo] niccolo | ||
|---|---|---|---|
| Line 3: | Line 3: | ||
| Su uno smartphone Android è possibile avere la rubrica dei contatti e dei calendari con gli eventi senza passare per i servizi Google? Sembra di sì, anche se è tutt' | Su uno smartphone Android è possibile avere la rubrica dei contatti e dei calendari con gli eventi senza passare per i servizi Google? Sembra di sì, anche se è tutt' | ||
| + | In pratica è necessario installare un server che fornisca il servizio tramite i protocolli DAV, nel nostro caso abbiamo utilizzato **DAViCal** su Debian. Sul terminale Android si deve installare un client opportuno, la nostra scelta è caduta su **DAVdroid**. Infine è necessario adottare diversi accorgimenti per poter **esportare** i calendari e i contatti esistenti e verificare che la **sincronizzazione** col server remoto avvenga correttamente. | ||
| ===== Installazione del server DAViCal ===== | ===== Installazione del server DAViCal ===== | ||
| - | ===== Creazione di un address book e di un calendar ===== | + | In Debian 9 Stretch esiste il pacchetto **DAViCal** versione 1.1.5, per convenienza esiste anche il **[[https:// |
| - | ===== Installazione | + | È necessario un **database di supporto**, nel nostro caso abbiamo utilizzato **PostgreSQL**. La procedura di installazione è abbastanza //sui generis//, in quanto richiede che venga predisposto l' |
| - | Esistono diverse app per Android per la **sincronizzazione** di **contatti** ed **eventi** calendario verso server **DAV**. Purtroppo si tratta spesso di app che offrono | + | In **Apache 2.4** abbiamo definito un **VirtualHost** solo su HTTPS. Chi fa accesso usando HTTP viene rediretto per evitare |
| - | {{ .: | + | < |
| + | < | ||
| + | DirectoryIndex index.php | ||
| + | AllowOverride None | ||
| + | Require all granted | ||
| + | </ | ||
| + | |||
| + | < | ||
| + | ServerName dav.server.org | ||
| + | DocumentRoot / | ||
| + | # Redirect everything to https, except / | ||
| + | RedirectMatch permanent ^/ | ||
| + | </ | ||
| + | |||
| + | < | ||
| + | SSLEngine on | ||
| + | ServerName dav.server.org | ||
| + | SSLCertificateFile | ||
| + | SSLCertificateKeyFile / | ||
| + | DocumentRoot / | ||
| + | ServerAdmin webmaster@server.org | ||
| + | ErrorLog ${APACHE_LOG_DIR}/ | ||
| + | CustomLog ${APACHE_LOG_DIR}/ | ||
| + | Alias /dav / | ||
| + | RewriteEngine On | ||
| + | # PT is important if you are using an alias, it implies L | ||
| + | # Redirect / | ||
| + | RewriteRule ^/ | ||
| + | # Optionally: redirect / | ||
| + | RewriteRule ^/ | ||
| + | RewriteRule ^/ | ||
| + | RewriteRule ^/ | ||
| + | RewriteRule ^/ | ||
| + | # Redirect / requests to web login page | ||
| + | RedirectMatch permanent ^/$ https:// | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | L'URL base del server sarà **%%https:// | ||
| + | |||
| + | L' | ||
| + | ===== Creazione di un utente con address book e calendar ===== | ||
| + | |||
| + | L' | ||
| + | |||
| + | ^ Username | ||
| + | ^ Password | ||
| + | ^ Fullname | ||
| + | ^ Email Address | ||
| + | ^ Principal Type | Selezionare **Person** per la creazione di un utente. | ||
| + | |||
| + | Al termine dell' | ||
| + | |||
| + | ^ Address book | %%https:// | ||
| + | ^ Calendar | ||
| + | |||
| + | In generale non sarà necessario ricordare il percorso completo dei due oggetti, con l' | ||
| + | ===== Installazione di DAVx5 ===== | ||
| + | |||
| + | Esistono diverse app per Android per la **sincronizzazione** di **contatti** ed **eventi** calendario verso server **DAV**. Purtroppo si tratta spesso di app che offrono solo una delle due funzionalità e spesso le versioni free hanno limitazioni o problemi (ad esempio continui alert se la connessione con il server fallisce). Pare invece che l'app **[[https:// | ||
| + | |||
| + | {{ .: | ||
| Una volta scaricata e installata l'app, si deve **creare un nuovo account** sullo smartphone. Nel nostro caso si procede con l' | Una volta scaricata e installata l'app, si deve **creare un nuovo account** sullo smartphone. Nel nostro caso si procede con l' | ||
| Line 18: | Line 80: | ||
| ^ Password | ^ Password | ||
| - | Lasciare attiva l' | + | Lasciare attiva l' |
| - | + | ||
| - | DAVdroid si collega al server e tramite l' | + | |
| - | Attivare | + | DAVx5 si collega al server e tramite l' |
| - | Questo è ciò che accade | + | Questo è ciò che compare |
| * Strumenti => **Utenti e account** | * Strumenti => **Utenti e account** | ||
| - | * Compare un nuovo account di tipo **DAVdroid**, identificato con l' | + | * Compare un nuovo account di tipo **DAVx5**, identificato con l' |
| - | * Compare un nuovo account di tipo **Rubrica | + | * Compare |
| + | Maggiori dettagli nella pagina **[[https:// | ||
| ==== Problema di sincronizzazione ==== | ==== Problema di sincronizzazione ==== | ||
| Il sistema Android usa **tecniche aggressive per il risparmi di batteria**, questo affligge soprattutto le app non di sistema tipo DAVdroid. In pratica accade che **viene inibita la sincronizzazione** con il server: quando l'app è in background non viene mai svegliata. | Il sistema Android usa **tecniche aggressive per il risparmi di batteria**, questo affligge soprattutto le app non di sistema tipo DAVdroid. In pratica accade che **viene inibita la sincronizzazione** con il server: quando l'app è in background non viene mai svegliata. | ||
| - | Avviando l' | + | Avviando l' |
| * Battery ... ? | * Battery ... ? | ||
| Line 43: | Line 104: | ||
| Nel nostro caso Android 8.1.0 Oreo su Xiaomi Mi A1, è stato necessario ... FIXME | Nel nostro caso Android 8.1.0 Oreo su Xiaomi Mi A1, è stato necessario ... FIXME | ||
| + | |||
| ===== Creazione di un calendario aggiuntivo ===== | ===== Creazione di un calendario aggiuntivo ===== | ||
| + | {{ .: | ||
| In genere la via più comoda per aggiungere un calendario è utilizzare il client CalDAV preferito. Anche DAVdroid ha questa funzione | In genere la via più comoda per aggiungere un calendario è utilizzare il client CalDAV preferito. Anche DAVdroid ha questa funzione | ||
| Line 71: | Line 134: | ||
| Per l' | Per l' | ||
| + | |||
| + | Nei file .ics esportati è opportuno modificare il tag **X-WR-CALNAME**, | ||
| + | |||
| + | È possibile caricare ogni singolo file .ics in un calendario DAViCal dall' | ||
| + | |||
| + | Per altri dettagli vedere la pagina [[https:// | ||
| + | |||
| ===== Impostazione del colore predefinito di un calendario ===== | ===== Impostazione del colore predefinito di un calendario ===== | ||
| Dall' | Dall' | ||
| - | Anzitutto verificate nella **app DAVdroid**, aprendo l' | + | Anzitutto verificate nella **app DAVdroid**, aprendo l' |
| Dopo essersi **collegati al database** come amministratore, | Dopo essersi **collegati al database** come amministratore, | ||
| Line 108: | Line 178: | ||
| Sullo smartphone è necessaria una sincronizzazione per vedere l' | Sullo smartphone è necessaria una sincronizzazione per vedere l' | ||
| - | * Dalla app **DAVdroid** => Tap su account => CalDAV => [[wp> | + | * Dalla app **DAVx5** => Tap su account => CalDAV => [[wp> |
| * **Chiudere** l'app **Calendario**. | * **Chiudere** l'app **Calendario**. | ||
| - | * Da **Impostazioni** => //Utenti e account// => //DAVdroid// => // | + | * Da **Impostazioni** => //Utenti e account// => //DAVx5// => // |
| + | |||
| + | |||
| + | ===== Disattivazione App Calendario Google ===== | ||
| + | |||
| + | A margine di questa esperienza vorrei segnalare un comportamento **poco evidente e rischioso** della **app Calendario di Google**. Su uno smartphone con CyanogenMod v.12.1 (basato on Android 5.1 Lollipop) era stata installata la app **[[https:// | ||
| + | |||
| + | La app Etar e le altre app di tipo calendario continuavano a mostrare gli eventi di calendario come associati all' | ||
| + | |||
| + | * Gli eventi aggiunti dalla app Android **non comparivano nel calendario web** [[https:// | ||
| + | * Dal menu // | ||
| + | |||
| + | Per effettuare la corretta esportazione dei calendari è stato necessario riattivare la App Google e forzare la sincronizzazione. | ||
| + | |||
| + | ===== Creazione di un calendario di gruppo ===== | ||
| + | |||
| + | Scenario: si vuole creare un calendario e condividerlo con due o più utenti. | ||
| + | |||
| + | === Creazione di un Principal di tipo Group === | ||
| + | |||
| + | Il // | ||
| + | |||
| + | * User Functions => Create Principal | ||
| + | * Username: caldavtest@domain.tld | ||
| + | * Password: %%******%% | ||
| + | * Fullname: Gruppo per calendario condiviso | ||
| + | * Email Address: caldavtest@domain.tld | ||
| + | * Principal Type: Group | ||
| + | |||
| + | === Aggiunta degli User al Group === | ||
| + | |||
| + | FIXME Serve davvero? Oppure è sufficiente creare il Ticket (vedi avanti)? | ||
| + | |||
| + | * User Functions => List Groups => (click su ID) | ||
| + | * Group Members => (select the user) => Add | ||
| + | * Group Members => (select the user) => Add | ||
| + | |||
| + | === Creazione di un Calendar Collection nel Group === | ||
| + | |||
| + | * User Functions => List Groups => (click su ID) | ||
| + | * Principal Collections => Create Collection | ||
| + | * DAV Path: / | ||
| + | * Displayname: | ||
| + | * Is a Calendar: [x] | ||
| + | * Default Privileges: [x] | ||
| + | * alendar Timezone: Europe/ | ||
| + | * Collection Grants: | ||
| + | * (select the group): ALL (FIXME Serve davvero? O basta il ticket?) | ||
| + | * < | ||
| + | * < | ||
| + | |||
| + | L'URL completo del calendario è **%%https:// | ||
| + | |||
| + | === Creazione di un Access Ticket per la Collection === | ||
| + | |||
| + | * User Functions => List Groups => (click su ID) | ||
| + | * Access Tickets | ||
| + | * Ticket ID: Nfe5wq0Y | ||
| + | * Target: / | ||
| + | * Expires: 2029-12-29 | ||
| + | * Privileges: ALL | ||
| + | |||
| + | === Binding della Calendar Collection allo User === | ||
| + | |||
| + | Con questa operazione, il calendario condiviso (che ha URL **%%/ | ||
| + | |||
| + | * User Functions => List Users => (click su ID) | ||
| + | * Bindings to other collections | ||
| + | * ID Bounds As: / | ||
| + | * Display Name: Calendario condiviso | ||
| + | * To Collection: / | ||
| + | * Ticket ID: Nfe5wq0Y | ||
| + | |||
| + | L'URL completo del calendario diventa quindi **%%https:// | ||
| + | |||
| + | === Utilizzo dei ticket === | ||
| + | |||
| + | **%%https:// | ||
| + | |||
| + | ===== Aggiornamento del database di backend ===== | ||
| + | |||
| + | Dopo l' | ||
| + | |||
| + | < | ||
| + | Database schema needs upgrading. Current: 1.3.2, Desired: 1.3.3 | ||
| + | </ | ||
| + | |||
| + | Si è deciso di agire da riga di comando. Anzitutto si crea un file **/ | ||
| + | |||
| + | < | ||
| + | admin_db_user: | ||
| + | admin_db_pass: | ||
| + | admin_db_host: | ||
| + | </ | ||
| + | |||
| + | Quindi si esegue lo script **/ | ||
doc/appunti/calendar_contacts_private.1542039492.txt.gz · Last modified: by niccolo
