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
Last revisionBoth sides next revision
doc:appunti:linux:sa:davical [2018/11/11 07:56] – [Struttura del database] niccolodoc:appunti:linux:sa:davical [2023/04/09 09:36] – [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>
  
Line 92: Line 114:
 ==== Probalema Privacy List Users ==== ==== Probalema Privacy List Users ====
  
-Dall'interfaccia web di amministratore è possibile creare creati 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
 + 
 +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.
  
-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 registratiNon una bella idea se l'installazione deve essere condivisa.+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 condivisioneLo 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]]**.
Line 122: 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 129: 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 158: 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.txt · Last modified: 2023/04/09 09:37 by niccolo