User Tools

Site Tools


doc:appunti:linux:sa:davical

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
doc:appunti:linux:sa:davical [2018/11/11 08:35] – [Probalema Privacy List Users] niccolodoc:appunti:linux:sa:davical [2023/04/09 09:37] (current) – [Sicurezza accesso PostgreSQL] niccolo
Line 1: Line 1:
-====== Calendario DAViCal ======+====== Server DAViCal per calendari e contatti ======
  
 Nella gestione di calendari condivisi sembra che l'anello debole della catena sia la disponibilità di client sufficientemente evoluti. In questa installazione utilizzeremo il client **Icedove** con il plugin **Lightning**. Nella gestione di calendari condivisi sembra che l'anello debole della catena sia la disponibilità di client sufficientemente evoluti. In questa installazione utilizzeremo il client **Icedove** con il plugin **Lightning**.
Line 34: Line 34:
 </code> </code>
  
-Nelle impostazioni di Apache (**''/etc/apache2/sites-available/default''**) si aggiunge:+Si consiglia di configurare Apache per gestire un VirtualHost dedicato alle funzioni DAV, creando ad esempio il file **/etc/apache2/sites-available/dav.site.org**
  
 <file> <file>
-    # DAViCal settings+<Directory /usr/share/davical/htdocs> 
-    Alias /images/ /usr/share/davical/htdocs/images+    DirectoryIndex index.php 
-    <Directory /usr/share/davical/htdocs/> +    AllowOverride None 
-        AllowOverride None +    Require all granted 
-        Order allow,deny +</Directory> 
-        Allow from all + 
-    </Directory> +<VirtualHost *:443> 
-    php_value include_path /usr/share/awl/inc +    SSLEngine on 
-    php_value magic_quotes_gpc 0 +    ServerName dav.site.org 
-    php_value register_globals 0 +    SSLCertificateFile    /etc/letsencrypt/live/dav.site.org/fullchain.pem 
-    #php_value error_reporting "E_ALL & ~E_NOTICE" +    SSLCertificateKeyFile /etc/letsencrypt/live/dav.site.org/privkey.pem 
-    php_value default_charset "utf-8"+    DocumentRoot /var/www/html/default 
 +    ServerAdmin postmaster@site.org 
 +    ErrorLog ${APACHE_LOG_DIR}/dav.site.org/error.log 
 +    CustomLog ${APACHE_LOG_DIR}/dav.site.org/access.log combined 
 +    Alias /dav /usr/share/davical/htdocs 
 +    RewriteEngine On 
 +    # PT is important if you are using an aliasit implies L 
 +    # Redirect /.well-known URLs 
 +    RewriteRule ^/\.well-known/(.*)$ /dav/caldav.php/.well-known/$1 [NC,PT] 
 +    # Optionally: redirect /principals/usersas well 
 +    RewriteRule ^/principals/users/(.*)$ /dav/caldav.php/$1 [NC,PT] 
 +    RewriteRule ^/principals/resources/(.*)$ /dav/caldav.php/$1 [NC,PT] 
 +    RewriteRule ^/calendars/__uids__/(.*)$ /dav/caldav.php/$1 [NC,PT] 
 +    RewriteRule ^/addressbooks/__uids__/(.*)$ /dav/caldav.php/$1 [NC,PT] 
 +    # Redirect / requests to web login page 
 +    RedirectMatch permanent ^/$ https://dav.site.org/dav/ 
 +</VirtualHost>
 </file> </file>
  
Line 54: Line 70:
  
 <code php> <code php>
-  $c->admin_email = 'davical@rigacci.org'; +  $c->admin_email = 'postmaster@site.org'; 
-  $c->system_name = "Server DAViCal Rigacci.Org"; +  $c->system_name = "DAViCal Server for Rigacci.Org"; 
-  $c->pg_connect[] = 'dbname=davical port=5432 user=davical_app';+  $c->pg_connect[] = "dbname=davical user=davical_app password=PwdSecret";
 </code> </code>
  
Line 66: Line 82:
 local   davical    davical_app   md5 local   davical    davical_app   md5
 local   davical    davical_dba   md5 local   davical    davical_dba   md5
 +</file>
 +
 +La connessione ti tipo **local** significa tramite //Unix domain socket//, che è utilizzata come impostazione predefinita dal codice PHP di Davical. In alternativa si può approfittare della configurazione predefinita di PostgreSQL che consente l'accesso tramite TCP/IP su indirizzo //localhost// verificando che esista questa riga:
 +
 +<file>
 +host    all    all    127.0.0.1/32    md5
 </file> </file>
  
Line 75: Line 97:
 </code> </code>
  
-In ''/etc/davical/config.php'' si indica la passowrd di accesso +In ''/etc/davical/config.php'' si indica la **passowrd** di accesso. Se viene fornito anche il parametro **host** la connessione avviene tramite socket TCP/IP, altrimenti viene usato uno Unix domain socket:
  
 <code php> <code php>
-$c->pg_connect[] = 'dbname=davical port=5432 user=davical_app password=PwdSecret';+$c->pg_connect[] = 'dbname=davical user=davical_app host=127.0.0.1 password=PwdSecret';
 </code> </code>
  
-si protegge opportunamente il file:+visto che il file contiene una password sensibile, lo si protegge opportunamente:
  
 <code> <code>
Line 94: Line 116:
 Dall'interfaccia web di amministratore è possibile creare gli utenti (//principal//) con la loro login e password. Automaticamente viene creato un **addressbook** e un **calendar** per ogni nuovo utente. Dall'interfaccia web di amministratore è possibile creare gli utenti (//principal//) con la loro login e password. Automaticamente viene creato un **addressbook** e un **calendar** per ogni nuovo utente.
  
-Anche l'utente può fare login nell'interfaccia web, dalla quale è possibile accedere a **User Functions** => **List Users**. Quindi la **lista di tutti i principal è pubblica** per gli utenti registrati. Non una bella idea se l'installazione deve essere condivisa ad esempio tra aziende diverse.+L'utente registrato può fare login nell'interfaccia web, da questa è possibile accedere a **User Functions** => **List Users**. Quindi la **lista di tutti i principal è pubblica** per gli utenti registrati. Non una bella idea se l'installazione deve essere condivisa ad esempio tra aziende diverse
 + 
 +Il problema riguarda anche la pagina **View My Details** (pagina generale del //principal//), sezione **Principal Grants**: viene mostrato l'elenco di tutti gli utenti per permettere la condivisione. Lo stesso discorso si applica anche alla pagina di amministrazione delle **Collection**, nella sezione **Collection Grants**.
  
 Forse c'è un sistema per mitigare il problema, vedere il post **[[https://linuxich.wordpress.com/on-davicals-website-hide-other-users-resources-for-normal-users/|On davical´s website hide other users resources for normal users]]**. Forse c'è un sistema per mitigare il problema, vedere il post **[[https://linuxich.wordpress.com/on-davicals-website-hide-other-users-resources-for-normal-users/|On davical´s website hide other users resources for normal users]]**.
  
-Il problema riguarda anche la pagina di amministrazione delle **Collection**, nella sezione **Collection Grants** viene mostrato l'elenco di tutti gli utenti per permettere la condivisione. Lo stesso anche per la pagina **View My Details** (pagina del generale del //principal//), sezione **Principal Grants**. 
 ==== Struttura del database ==== ==== Struttura del database ====
  
Line 123: Line 146:
  
 <code> <code>
-davical=# SELECT user_no, dav_name, is_calendar, collection_id FROM collection WHERE user_no = 1001;+SELECT user_no, dav_name, is_calendar, collection_id FROM collection WHERE user_no = 1001;
  user_no |            dav_name             | is_calendar | collection_id   user_no |            dav_name             | is_calendar | collection_id 
 ---------+---------------------------------+-------------+--------------- ---------+---------------------------------+-------------+---------------
Line 130: Line 153:
 </code> </code>
  
-Per ogni oggetto creato nel calendario (**VEVENT**) o nell'addressbook (**VCARD**) viene creato un record nella tabella **caldav_data**:+Per ogni oggetto creato nella collection calendario (**VEVENT**) o addressbook (**VCARD**) viene creato un record nella tabella **caldav_data**:
  
 <code> <code>
-SELECT user_no, caldav_type, dav_id, collection_id FROM caldav_data WHERE user_no = 1001; +SELECT dav_id, caldav_type, collection_id FROM caldav_data 
- user_no | caldav_type | dav_id | collection_id  +    WHERE user_no = 1001 AND collection_id = 1002 ORDER BY dav_id
----------+-------------+--------+--------------- + dav_id | caldav_type | collection_id  
-    1001 | VEVENT      |   1006 |          1002 +--------+-------------+--------------- 
-    1001 VCARD       |   1009 |          1003+   2322 | VEVENT      |          1002 
 +   2323 | VEVENT      |          1002 
 +   2324 VEVENT               1002 
 +   2325 | VEVENT      |          1002 
 +   2326 | VEVENT      |          1002 
 +   2327 | VEVENT      |          1002
 </code> </code>
  
 Il campo **caldav_data** contiene il dato vero e proprio nel formato opportuno, ad esempio **VCARD** che a sua volta contiene gli eventuali tag **TEL**, **EMAIL**. **PHOTO**, ecc. Il campo **caldav_data** contiene il dato vero e proprio nel formato opportuno, ad esempio **VCARD** che a sua volta contiene gli eventuali tag **TEL**, **EMAIL**. **PHOTO**, ecc.
  
-I dettagli della VCARD sono anche nelle tabelle **addressbook_address_adr**, **addressbook_address_email**, **addressbook_address_tel** e **addressbook_resource**. FIXME Come mai ci sono **record duplicati**? Sono duplicati anche nel dato VCARD.+I dettagli della VCARD sono anche nelle tabelle **addressbook_address_adr**, **addressbook_address_email**, **addressbook_address_tel** e **addressbook_resource**.
  
 <code> <code>
Line 159: Line 187:
  user_no | caldav_type |       tel          user_no | caldav_type |       tel        
 ---------+-------------+------------------ ---------+-------------+------------------
-    1001 | VCARD       | +39 367 788 2732 
-    1001 | VCARD       | +39 367 788 2732 
-    1001 | VCARD       | +39 367 788 2732 
     1001 | VCARD       | +39 367 788 2732     1001 | VCARD       | +39 367 788 2732
 </code> </code>
doc/appunti/linux/sa/davical.1541921708.txt.gz · Last modified: 2018/11/11 08:35 by niccolo