Indice

Come installare openDCN

OpenDCN è un'applicazione web sviluppata con il framework CakePHP (http://cakephp.org/) che è parte integrante dell'applicazione stessa ed è, quindi, distribuito con essa. Può essere installato sia su server Windows che Linux/Unix-like.

Requisiti di sistema

L'ambiente di esecuzione richiede:

o versioni successive.
In MySQL 5.6 o versioni successive, è necessario impostare SQLMode = “” nel file di configurazione di MySQL (my.cnf)

L'ambiente client richiede:

Segue un esempio di file di configurazione del Virtual Host per Apache 2.2 che mostra, di conseguenza, i requisiti per l'esecuzione di un sito openDCN

<VirtualHost *:80>
  ServerName __SITENAME__
  DocumentRoot "/www/sites/__BASE__/home/app/webroot"

  <Directory "/www/sites/__BASE__">
    Options FollowSymLinks MultiViews
    AllowOverride All
    Order allow,deny
    Allow from all
  </Directory>

  DirectoryIndex index.php index.html index.htm
</VirtualHost>

Segue un esempio di file di configurazione del Virtual Host per Apache 2.4 che mostra, di conseguenza, i requisiti per l'esecuzione di un sito openDCN

<VirtualHost *:80>
  ServerName __SITENAME__
  DocumentRoot "/www/sites/__BASE__/home/app/webroot"

  <Directory "/www/sites/__BASE__">
    Options FollowSymLinks MultiViews
    AllowOverride All
    Require all granted
  </Directory>

  DirectoryIndex index.php index.html index.htm
</VirtualHost>

dove __BASE__ è un identificatore per l'installazione di openDCN e __SITENAME__ è il valore della direttiva ServerName utilizzato per indirizzare il sito web.
ATTENZIONE: Non è possibile installare openDCN in una sottodirectory della root del virtual host, perché al momento non supporta base_url

Apache richiede i seguenti moduli (questo elenco fa riferimento ai moduli utilizzati in un ambiente Debian GNU/Linux):

PHP 5 richiede i seguenti moduli

Configurazione

1. Creare la directory principale di openDCN (denominata con l'identificativo usato al posto di __BASE__ nella configurazione del virtual host di cui sopra), quindi scompattare in essa il file zip o tgz.

Se si sta installando openDCN in un ambiente in cui non è possibile modificare la configurazione del virtual host o non si ha il controllo completo sul database, come ad esempio, un servizio di hosting commerciale, allora occorre:

  1. modificare la struttura della directory, effettuando le seguenti operazioni:
    1. rinominare la cartella 'fairvote' in 'fairvote_src' e il file 'index.php' a 'index_old.php'
    2. spostare tutti i contenuti della directory home/app/webroot nella directory di root
    3. copiare il file install/paths_cfg.php nella directory root e modificarlo secondo i percorsi effettivi della vostra installazione (ad esempio quelli forniti dal service provider).
  2. verificare che l'utente Mysql abbia anche i seguenti privilegi sul database utilizzato:
 
  CREATE TEMPORARY TABLES 
  CREATE VIEW 
  SHOW VIEW 
  CREATE ROUTINE
  TRIGGER
  

Se non si hanno sufficienti privilegi sul database non è possibile attivare la “fusione degli utenti”

In ambiente Linux impostare i permessi rwx nel modo seguente

chmod -R 2777 home/app/tmp
chmod -R 2777 home/app/webroot/files
chmod -R 2777 home/app/webroot/dokuwiki/data

2. Creare il database Mysql e inizializzarlo con i file sql contenuti nella directory install/
In ambiente Linux si possono utilizzare i seguenti comandi per effettuare questa procedura velocemente

cat createdb.sql | sed "s#__BASE__#$BASE#g" | sed "s#__PASSWORD__#$PASSWORD#g" | mysql
cat createtablesdb.sql | mysql dcn_$BASE
cat createfusionusersdb.sql | mysql dcn_$BASE  # Se non si hanno sufficienti privilegi sul database non importare questo file sql
cat initializedb.sql | sed "s#__BASE__#$BASE#g" | mysql dcn_$BASE

In ambiente Windows sostituire tutte le occorrenze di __BASE__ con il nome della propria installazione openDCN prima di applicare i comandi SQL

3. Copiare il file home/app/config/app_config.php.example e rinominarlo app_config.php (nella stessa directory) Modificarlo in base alle proprie impostazioni. Il file contiene commenti che spiegano il significato delle possibili variabili da impostare. In particolare, è necessario impostare la variabile 'localdomain' con il nome scelto per la propria installazione openDCN

Configure::write('localdomain', '__BASE__');

Sostituire __BASE__ con il nome della propria installazione come al punto precedente Se non si hanno sufficienti privilegi sul database impostare a true la seguente variabile

Configure::write('disable_fusion_user', true);

4. Copiare il file home/app/webroot/doku_conf/local.php.example e rinominarlo local.php (nella stessa directory). Impostare la stringa 'http://SITENAME/' nella variabile

$conf['plugin']['authopendcn']['host'] 

dove SITENAME è l'indirizzo del sito web che si sta configurando Impostare una stringa segreta nella variabile

$conf['plugin']['authopendcn']['key'] 

La stessa stringa andrà impostata nella variabile 'dokuwiki_secret_key' (al posto di 'changeme') presente nel file app_config.php

Configure::write('dokuwiki_secret_key', 'changeme');

Primo login

Una volta che il sistema è stato installato ed è stato modificato il file app_config.php si può procedere al primo login.
Caricare la pagina http://__SITENAME__/ e accedere utilizzando l'account dell'Amministratore
Username: admin
Password: admin


Consultazione certificata (FairVote)

FairVote è il nome del modulo client/server per la gestione delle consultazioni certificate. Può essere utilizzato anche come applicazione indipendente.
Il lato server è costituito da tre agenti ciascuno dei quali deve svolgere un ruolo tra Registrar, Forwarder o Collector.

Il Registrar:

Il Forwarder:

Il Collector:

Una consultazione è completamente definita da un “Manifesto”, che è un documento XML che contiene tutti i parametri della consultazione. Questo documento è firmato digitalmente dall'Amministratore della consultazione.
Se Fairvote è utilizzato come modulo, openDCN redige automaticamente il Manifesto e svolge il ruolo di server di autenticazione.

Installazione di FairVote

In home/app/webroot/fairvote è possibile trovare i seguenti file:

Si noti che la directory fairvote/ è presente al solo scopo di distribuire i sorgenti e di fornire documentazione e può essere assente in un ambiente di produzione.

1. Creare un manifesto (in fairvote/doc/ è possibile trovare un esempio). Il modulo di consultazione certificata di openDCN lo fa in automatico con il comando “pubblica consultazione” nella pagina di configurazione dello strumento.
Il Manifesto deve essere pubblicato su Web in una posizione che possa essere letta dall'Applet. OpenDCN di default lo pubblica nella directory home/app/webroot/fairvote/admin/files/
I file control.php e getfile.php possono essere utilizzati per gestire l'upload e il download dei manifesti da un repository protetto da account per le modifiche.
Le variabili fairvote_repository nell'app_config.php consentono di impostare username e password per l'amministratore (fairvote_editor), l'URL del repository e il download dell'Applet.

Fairvote assume che la Java Virtual Machine venga eseguita in ambiente con codifica UTF-8 predefinita. Se così non fosse, eseguire “java” come “java -Dfile.encoding=utf-8”

2. Creare il database Mysql e inizializzarlo con il file createtables.sql contenuto nella directory fairvote/utils/contrib/

Signer.jar

Utilizzare Signer per firmare il manifesto con la firma memorizzata in un keystore.
OpenDCN chiama il Signer con il comando “pubblica consultazione” nelle pagine di modifica dello strumento di consultazione certificata.
Per eseguirlo da linea di comando:

	java -jar Signer.jar unsignedManifest.xml keystoreFile pwKeystore aliasPrivateKey pwPrivateKey aliasPublicCert > signedManifest.xml

Pilot.jar

Utilizzare Pilot per avviare gli agenti per la gestione della consultazione. Deve essere presente su tutti i server coinvolti nella consultazione, con il proprio file di configurazione. Per esempio, si può avere un Pilot.jar su una macchina server singola che esegue Registrar, Forwarder e Collector o tre macchine server che eseguono un Pilot.jar ognuno con un ruolo diverso (Registrar, Forwarder o Collector).
Necessita di un file di configurazione (un esempio è nella directory fairvote/doc/) e avvia n server ognuno con il ruolo definito nel manifesto quando viene chiamato da Console.jar

	java -jar Pilot.jar config.xml

Console.jar

Console.jar invia comandi agli agenti (avviato da Pilot.jar)
openDCN lo usa attraverso i link della pagina /polls/edit/id (dove id è l'identificativo della consultazione).

Console.jar può essere utilizzato da linea di comando. Ad esempio per avviare una consultazione:

	java -jar Console.jar installVotazione signedManifest.xml editorCredential.xml 

“installVotazione” è uno dei comandi accettati: legge il file signedManifest.xml e lo usa per inviare il comando di installazione della consultazione agli agenti, mentre editorCredential.xml contiene le credenziali dell'editor del manifesto.
Dopodiché gli utenti possono avviare l'Applet.jar e partecipare alla consultazione.

Console.jar accetta i seguenti comandi:

installVotazione installa una consultazione
flushVotazione invia i risultati all'agente Collector
dumpResultVotazione produce un documento XML contenente i risultati della consultazione
removeVotazione elimina una consultazione (con tutte le relative risposte)

Usare l'opzione -h (o NomeComando -h) per visualizzare un elenco di tutti i comandi accettati.
openDCN chiama Console.jar attraverso i link della pagina /polls/edit/id (dove id è l'identificativo della consultazione)

Applet.jar

Applet.jar è l'applet da includere nella pagina web che mostra la consultazione Accetta i seguenti parametri:

URL (obbligatorio), è l'url del manifesto firmato
CMD (obbligatorio), vale una delle due opzioni: <vota, vedi>
AUTH_TOKEN(opzionale), è un token usa e getta necessario per partecipare alla consultazione (presume che l'utente sia già registrato)
SAML (opzionale) è una SAMLResponse, codificata in base64, che può essere utilizzata come autenticazione

openDCN mostra Applet.jar caricando la pagina /polls/view/id (dove id è l'identificativo di consultazione)