Consulteu també:
https://sourceforge.net/projects/webfaltes http://www.iesebre.com/webfaltes_wiki/index.php/P%C3%A0gina_principal
Consulteu Webfaltes. Procediment canvi de període acadèmic
Configuració després instal·lació
31 de març:
$ grep -n "jquery" -r . ./informe_resum_credit_di_df_1.php:207: //http://www.anieto2k.com/2008/05/27/combos-dependientes-accesibles-php-jquery/ ./smarty/templates/selecalumn.tpl:21:<link href="http://185.13.76.222/webfaltes/asset/jqueryui/css/cupertino/jquery-ui-1.10.0.custom.css" rel="stylesheet"> ./smarty/templates/selecalumn.tpl:22:<script src="http://185.13.76.222/webfaltes/asset/jqueryui/js/jquery-1.9.0.js"></script> ./smarty/templates/selecalumn.tpl:23:<script src="http://185.13.76.222/webfaltes/asset/jqueryui/js/jquery-ui-1.10.0.custom.js"></script> ./informe_per_alumne.php:127: <script type="text/javascript" charset="utf-8" src="http://185.13.76.222/webfaltes/asset/DataTables/media/js/jquery.js"></script> ./informe_per_alumne.php:128: <script type="text/javascript" charset="utf-8" src="http://185.13.76.222/webfaltes/asset/DataTables/media/js/jquery.dataTables.js"></script>
Abans del 31 de març
IES EBRE
INS MONTSIA
IES DELTEBRE
Estil
Control de formularis per Javascript abans de post i formularis en general
Informes:
Errors
Usabilitat
Funcionalitats noves importants:
Funcionalitats no tant importants però que s'han de fer
Arreglar les molletes de pa:
Institut del Bla Bla Bla > Inici > Apartat 1 > Subapartat
On Inici, Apartat 1 han de ser links per a navegar i l'últim és l'apartat actiu que ha de sortir només en negreta.
Treure apartat/pestanya tancar. Col·locar un enllaç de logout al costat del nom del usuari logat a la part superior dreta.
El logo ha d'estar parametritzat igual que la URL del centre. El logo al fer clic ha de portar a la web del centre
Fitxer de configuració i parametritzacións:
Pàgina de Login:
TEACHER_ROL -> "Professor" STUDENT_ROL -> "Estudiant"
On TEACHER_ROL, STUDENT_ROL han de ser constants que donen un valor numèric. Documentar i mirar de posar el mateix valor a cada centre. El Text "Professor", etc pot ser diferent.
Rodrigo i Eros:
Amado i Ester
grep -n "webfaltes_con.php" -r /usr/share/webfaltes | more Un sol include! include_once("config.inc.php"); Tots han de tenir l'include de seguretat!: include_once(_DIR_CONNEXIO."seguretat.inc.php");
Neteja webfaltes
Miquel Angel:
#Obtenir l'aplicació
http://acacha.org/mediawiki/index.php/Apache_Directory_Studio#Exemples
Pau:
Els requeriments i/o aplicacions que necessita l'aplicació Webfaltes per funcionar són:
|
|
|
|
|
---|---|---|---|---|
|
Ubuntu Server | Ubuntu Desktop | Ubuntu Server | |
|
|
|
LAMP | |
|
|
|
Openldap | |
|
|
|
MySQL | |
|
|
|
Configuració webfaltes | |
|
|
|
Gosa | |
|
|
|
ADS | |
|
|
|
PhpMyadmin | |
|
|
|
Eclipse | |
|
|
|
Subversion | |
|
|
|
Subclipse | |
|
|
|
Subclipse | |
|
|
|
--- | PHP i Ldap |
|
|
|
adodb | |
|
|
|
| |
|
|
|
|
TODO PhpMailer per enviar correus-- A mig implementar (--acacha 11:28, 1 juny 2011 (UTC)) SMS? Quelcom relacionat amb OVH. A mitges!
En la primera columna s'agrupen els requeriments bàsics necessaris per a que l'aplicació webfaltes pugui funcionar i en l'altra columna s'agrupen els requeriments extra per a que els desenvolupadors treballin amb l'aplicació.
NOTA: Si observem la taula anterior s'hauria de sobreentendre que els desenvolupadors també necessiten els requeriments bàsics per poder fer funcionar l'aplicació.
Webfaltes és una aplicació web que utilitza una arquitectura de 3 capes. Una qüestió força rellevant és que la capa de base de dades té dos tipus de bases de dades:
Esquema de l'arquitectura per a desenvolupadors :
Esquema de l'arquitectura de 3 capes:
Navegador --> Aplicació de faltes --> Servidor Web --> Model (PHP) --> Bases de dades (Ldap y MySQL) Navegadors --> Gosa --> Igual que a dalt.
Consulteu:
http://informatica.iesebre.com/mediawiki/index.php/Usuari:Pgomez/sintesi_2011_webfaltes
TODO:
Totes dues instal·lacions tenen part comunes que no cal escriure dos cops però si diferenciar les coses que són diferents
TODO
2 opcions:
http://localhost/install.php
Formularis un assistents tipus Gosa (es pot aprofitar el de Gosa):
Dades:
Llicència: Comprovar que es té tot el correcte: Ldap, llibreries de suport Ldap y MySQL per a PHP, Esquemes Ldap, smarty? Usuari de root de MySQL i paraula de pas --> Crear la base de dades (o des de Debian es pot fer amb dbconfig-common) Usuari i paraula de l'aplicació per accedir a la base de dades Ldap: Similar al de Gosa<-- Documentació del que cal fer? Script? Usuari i paraula de l'aplicació per accedir a la base de dades MySQL: Es dona el de root i es fan totes les accions? <-- Millor per paquet dbconfig? #Creació de l'usuari LDAP<-- Aprofitant el codi de Gosa es pot fer un exemple que detecti si hi ha usuari Ldap i si no el crea! Cal explicar però que faltarà ACL per que pugui llegir tots els camps? Dades generals de configuració --> Fitxer config.inc.php
Fitxers:
http://www.iesebre.com/subversion/projectes/webfaltes/trunk/usr/share/webfaltes/connexio/
Dades generals:
http://www.iesebre.com/subversion/projectes/webfaltes/trunk/usr/share/webfaltes/config.inc.php
Accions:
Que fa segur el paquet Debian?:
Els passos a seguir són:
Suposem que utilitzeu una versió d'escriptori d'Ubuntu.
Els passos a seguir són:
NOTA: Actualització: l'aplicació funciona correctament amb Ubuntu Server 12.04
NOTA: Molt possiblement l'aplicació webfaltes funcionarà correctament en altres sistemes operatius Linux, com per exemple Debian. Cal però indicar que els desenvolupadors del programa han fet totes les proves amb la versió de servidor d'Ubuntu i concretament amb la versió 10.10.
Per començar a utilitzar aquesta aplicació, el primer que necessitarem instal·lar és un servidor. Podem trobar com fer la instal·lació del Ubuntu Server 10.10 a:
Manual d'instal·lació Ubuntu Server 10.10.
Recursos:
$ sudo apt-get install sun-java6-jdk $ mkdir eclipse $ mkdir workspace $ mv ../Downloads/eclipse-php-galileo-SR1-linux-gtk.tar.gz . $ tar fvxz eclipse-php-galileo-SR1-linux-gtk.tar.gz
$ ./eclipse
$ mv eclipse eclipse_php $ /usr/bin/php5 $ ls index.html mediawiki $ sudo ln -s /home/iesebre/workspace/php/holamon/ . [sudo] password for iesebre: $ ls holamon index.html mediawiki $ cd eclipses $ cd eclipse_php $ ls about_files configuration eclipse_php icon.xpm p2 about.html dropins epl-v10.html libcairo-swt.so plugins artifacts.xml eclipse.ini features notice.html readme $ wget http://192.168.7.100/~sergi/site-1.0.6.zip --2009-11-27 19:28:00-- http://192.168.7.100/~sergi/site-1.0.6.zip S'està connectant a 192.168.7.100:80... conectat. HTTP: Petició enviada, esperant resposta... 200 OK Longitud: 7039588 (6,7M) [application/zip] S'està desant a: «site-1.0.6.zip»
100%[======================================>] 7.039.588 42,2M/s en 0,2s
2009-11-27 19:28:00 (42,2 MB/s) - s'ha desat «site-1.0.6.zip» [7039588/7039588]
$ ls about_files dropins features p2 about.html eclipse.ini icon.xpm plugins artifacts.xml eclipse_php libcairo-swt.so readme configuration epl-v10.html notice.html site-1.0.6.zip $ unzip site-1.0.6.zip Archive: site-1.0.6.zip inflating: features/org.tigris.subversion.subclipse_1.0.6.jar inflating: plugins/org.tigris.subversion.javahl.win32_1.0.6.jar inflating: plugins/org.tigris.subversion.subclipse.core_1.0.6.jar inflating: plugins/org.tigris.subversion.subclipse.ui_1.0.5.jar inflating: plugins/org.tigris.subversion.subclipse_1.0.5.jar inflating: site.xml
Quan et descarregues alguna cosa d'eclipse hi ha tres opcions:
NOTA: En la instal·lació del Ubuntu Server detallada en l'apartat anterior s'ens dona l'opció d'instal·lar el servidor LAMP. És evident, que si ho instal·lem així podem saltar-nos l'apartat que ve a continuació.
Segurament ja teniu instal·lat tasksel però per si de cas:
$ sudo apt-get install tasksel
El següent que necessitarem instal·lar és el LAMP per poder tenir muntat un servidor Web:
$ sudo tasksel
I seleccionarem LAMP (per seleccionar haurem de fer servir l'espai).
També podeu fer l'instal·lació directament amb:
$ sudo tasksel install lamp-server
Al instal·lar-ho ens demanarà que posem una contrasenya, aquesta contrasenya haurà de ser fàcil de recordar i al mateix temps prou segura ja que la necessitarem. Si l'hem oblidat haurem de tornar a configurar el LAMP amb:
$ sudo dpkg-reconfigure mysql-server-X.Y
Per exemple, en el cas de tenir la versió 5.5 (podeu tabular dos cops per tal de que l'ajuda us permeti saber quina versió teniu instal·lada):
$ sudo dpkg-reconfigure mysql-server-5.5
també sempre pode utilitzar l'usuari i paraula de pas de Debian per a mantenir el paquet mysql, el podeu consultar a:
$ sudo cat /etc/mysql/debian.cnf
$ sudo apt-get install imagemagick php5-ldap libphp-adodb smarty smarty-gettext php-gettext libphp-phpmailer php-fpdf
NOTA: També podeu utilitzar la versió 3 d'smarty: $sudo apt-get install smarty3 smarty3-gettext. Smarty3 només està disponible als repositoris de Gosa o a partir de la versió 11.04 d'Ubuntu.
TODO
Exemple per línia d'ordres
L'entorn d'explotació s'executarà un sistema operatiu de servidor tipus Ubuntu Server (consulteu Instal·lació d'Ubuntu Server) i en aquest entorn no podem utilitzar eines gràfiques com Eclipse. Per a obtenir el codi font a partir de subversions només us cal executar:
$ sudo apt-get install subversion $ cd $ sudo svn co http://www.iesebre.com/subversion/projectes/webfaltes/trunk webfaltes $ cd webfaltes $ sudo make install
NOTA: No us cal utilitzar cap usuari especific de subversion per a obtenir el codi. Al no indicar cap usuari esteu utilitzant l'usuari anònim amb accés de només lectura
Exemple amb Eclipse i el plugin Subclipse
Exemple pas a pas per a desenvolupament <-- Utilitzant Eclipse + Subclipse (no cal posar el pas a pas d'instal·lar aquestes eines, només l'enllaç a la secció que pertoca)
Aquí tenim com fer l'instal·lació a l'Eclipse i seguidament l'instal·lació del subclipse
El que si cal posar és l'exemple de fer un checkout de:
Una vegada tenim incorporat el subclipse a l'aplicació de l'eclipse, obrirem l'eclipse i canviarem la vista a SVN Repository Exploring
Anem a la pestanya del programa anomenada Window, a continuació cliquem a Open Perspective i anem a Other
Ens surtirà una finestra on hem de buscar la vista SVN Repository Exploring i li donem Ok
Veurem que el programa ha canviat la vista a SVN Repository i de moment no hi ha res.
Ara anem a crear un repositori. Per fer-ho haurem de clicar botó de la dreta, New i Repository Location
Ens surtirà un assitent on li haurem d'indicar quina URL vol que li posem al repositori, en aquest cas és:
http://www.iesebre.com/subversion/projectes/webfaltes/trunk/
una volta li posem Finish ha de surtir així:
Una vegada tenim el repositori hem de baixar-nos una còpia en local, aquesta acció s'anomena checkout.
Per fer-la hem de fer botó de la dreta a la URL i checkout.
Surt un assistent i et pregunta on vols guardar aquesta còpia. Li indiquem que la còpia la volem guardar al lloc de treball(workspace) i li donem a Finish.
I farà tota la còpia d'internet al teu ordinador.
Arribats a aquest punt haurem de configurar l'Apache. El primer que farem és crear un lloc web (site) per a l'aplicació :
$ sudo joe /etc/apache2/sites-available/webfaltes
NOTA: L'aplicació webfaltes intenta seguir les indicacions de l'estàndard FHS i per aquesta raó la carpeta escollida per als fitxers estàtics és /usr/share/webfaltes
Afegiu:
Alias /webfaltes /usr/share/webfaltes <IfModule mod_php5.c> <Location /webfaltes> php_admin_flag register_globals off </Location> </IfModule>
Consulteu també Configuració alternativa. Exemple www.iesebre.com
Alias vol dir que quan algú escrigui la URL
http://localhost/webfaltes
es mostraran els fitxers de la carpeta:
/usr/share/webfaltes
NOTA: Per defecte els fitxers a mostrar són els index, en el nostre cas index.php
Que féssim un site disponible no vol dir que ja estigui activat, així que haurem d'executar:
$ sudo a2ensite webfaltes
Per activar el site i:
$ sudo /etc/init.d/apache2 reload
Per aplicar els canvis al servidor web.
L'ordre a2ensite activa un site disponible, en canvi l'ordre a2dissite desactiva el site:
$ sudo a2dissite webfaltes
També cal per que funcionin correctament els scripts javascript, el fitxer /etc/apache2/conf.d/javascript-common.conf o similar:
javascript#Javascript_i_Apache._Fitxer_.2Fetc.2Fapache2.2Fconf.d.2Fjavascript-common.conf
Per instal·lar i configurar la base de dades Ldap haurem de seguir els passos de:
Ldap#Instal.C2.B7laci.C3.B3
Per a versions anteriors els passos sçon un pel més complicats:
Instal·lació del servidor Ldap a Ubuntu 9.10 - 10.10
Afegir els esquemes del gosa per poder importar les dades de la Demo de informàtica.
Descarregar el següent fitxer:
http://acacha.org/~sergi/gosa/gosa-2.7-ldifs.tar.gz
$ sudo -s # cd /etc/ldap/slapd.d/cn=config/cn=schema # rm -rf * # wget http://acacha.org/~sergi/gosa/gosa-2.7-ldifs.tar.gz # tar xvzf gosa-2.7-ldifs.tar.gz
Tots els esquemes hauràn de ser de l'usuari openldap
# chown openldap:openldap -R *
I reiniciarem el servei LDAP.
# exit $ sudo /etc/init.d/slapd restart
Fins a l'apartat on es crea el fitxer acl.ldif. Aleshores posem el següent fitxer acl.ldif per aprofitar i crear l'usuari que utilitzarà l'aplicació per a connectar-se al servidor
dn: olcDatabase={1}hdb,cn=config add: olcAccess olcAccess: {0}to attrs=userPassword,shadowLastChange by self write by anonymous auth by dn="cn=admin,dc=iesebre,dc=com" write by dn="cn=webfaltes,dc=iesebre,dc=com" read by * none olcAccess: {1}to dn.subtree="" by * read olcAccess: {2}to * by dn="cn=admin,dc=iesebre,dc=com" write by * read
Per carregar les dades executem la comanda següent:
$ sudo ldapmodify -x -D cn=admin,cn=config -W -f acl.ldif
L'usuari que hem indicat a les ACL que té permisos per llegir tots els camps és:
cn=webfaltes,dc=iesebre,dc=com
IMPORTANT: Cal que modifiqueu les dades de l'exemple (www.iesebre.com) a el vostre cas
I continuarem amb els passos que indica fins reiniciar el servidor Ldap. Ja tenim preparada el servidor Ldap i la base de dades buida
Opció 1
Aprofitar el moment en que es configuren les ACL durant la instal·lació del Servidor Ldap. Vegeu l'apartat anterior
Opció 2
TODO: Utilitzar la línia d'ordre per modificar unes ACL ja existents...
Opció 3
Configuració de les ACL per Apache Directory Studio
Es necessari crear un usuari d'accés que permeti a l'aplicació accedir a la base de dades Ldap en mode només lectura.
NOTA: Es podria utilitzar el admindn per a connectar-se al servidor Ldap però representaria un problema de seguretat. A més l'aplicació no necessita accés d'escriptura a l'arbre Ldap, només de lectura
Per tal de crear aquest usuari podeu utilitzar el següent fitxer "usuari.ldif".
NOTA: L'exemple està pensat per al domini iesebre.com! És important que canvieu les dades pel que us correspongui!
$ joe usuari.ldif version: 1 dn: cn=webfaltes,dc=iesebre,dc=com objectClass: inetOrgPerson cn: webfaltes sn: webfaltes uid: webfaltes userPassword: {MD5}sac43R48I+13VCvWpQribA==
Per generar la contrasenya segueix els passos:
$ slappasswd -h {MD5} New password: Re-enter new password: {MD5}sac43R48I+13VCvWpQribA==
Modifica l'script anterior amb la paraula de pas generada i després executa el ldapadd.
# ldapadd -x -D "cn=admin,dc=iesebre,dc=com" -W -f usuari.ldif Enter LDAP Password: adding new entry "cn=webfaltes,dc=iesebre,dc=com"
On:
-f : Indica el fitxer ldif -D : Indica el dn -W : Per a que demane la paraula de pas
O també es pot afegir utilitzant alguna eina gràfica de gestió del servidor Ldap com per exemple ADS (per exemple es pot fer a mà o amb un import del fitxer ldif que us proporcionem).
El servidor MySQL se suposa que ja està instal·lat des de el moment que s'ha instal·lat un sistema LAMP.
Per poder utilitzar la base de dades que utilitza el projecte, l'haurem de crear a la base de dades, que ho farem de la següent manera:
Primer accedirem dins al mysql amb (la contrasenya ens l'ha demanat a la instal·lació):
$ mysql -u root -p
NOTA: La -p s'haurà de posar per a que ens demani la contrasenya de MySQL al entrar, si no la posem ens podria donar un error.
Una vegada hem entrat dins del MySQL haurem de crear la base de dades buida copiant aquesta comanda SQL:
mysql> CREATE DATABASE webfaltes; mysql> exit;
A continuació li passarem l'esquema de la base de dades.
$ mysql -u root -p webfaltes < /usr/share/doc/webfaltes/examples/database/webfaltes-schema.sql
NOTA: La ultima versió ens la podem baixar aquí.
I li afegim les dades amb la següent comanda:
$ mysql -u root -p webfaltes < /usr/share/doc/webfaltes/examples/database/webfaltes.sql
NOTA: La ultima versió ens la podem baixar aquí.
I ara ens farem l'usuari entrant al MySQL i posant el següent:
$ mysql -u root -p CREATE USER 'webfaltes'@'localhost' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON webfaltes.* TO 'webfaltes'@'localhost' WITH GRANT OPTION; FLUSH PRIVILEGES; exit
IMPORTANT: La paraula usuari i password s'hauran de canviar per l'usuari i la contrasenya de MySQL que vulgueu posar.
Els paràmetres de configuració que creem en aquest apartat són els que més endavant introduirem en aquest fitxer.
La base de dades de demostració només conté dades fictícies de la família d'informàtica (professors,alumnes,grups) i les dades del usuari administrador de l'institut i del usuari webfaltes. Totes les paraules de pas són la mateixa : gosa. Menys la de l'usuari webfaltes. Aquesta base de dades està emmagatzemada en un fitxer .ldif que es troba a l'enllaç següent :
http://www.iesebre.com/subversion/projectes/webfaltes/trunk/usr/share/doc/webfaltes/ldap/ldap_demo_inf_1.ldif
Suposant que a l'Apache Directory Studio ja tinguéssim creada la connexió i que la base de dades ldap estigui buida ja podrem passar a instal·lar-ho. Per a fer això haurem d'anar a la línia d'ordres del terminal i executar el següent :
Primer aturarem el servidor LDAP amb :
$ sudo /etc/init.d/slapd stop
Per a comprovar que està aturat podem executar :
$ ps aux | grep slapd
Llavors ja podrem passar a restaurar o importar la base de dades amb per exemple :
$ sudo slapadd -c -l ldap_demo_inf_1.ldif
I per últim tornarem a arrancar el servidor LDAP :
$ sudo /etc/init.d/slapd start
A l'Apache Directory Studio hauria d'aparèixer el següent :
La base de dades sql de demostració només de la família d'informàtica la podem trobar a :
http://www.iesebre.com/subversion/projectes/webfaltes/trunk/usr/share/doc/webfaltes/sql/demo_bdsql_infor_dep/webfaltesDEMO_DEP_INFO.sql
Per a poder fer servir la base de dades podem importar l'arxiu .sql de dalt al phpmyadmin. Prèviament haurem d'haver creat la base de dades : webfaltes. Llavors ens col·locarem dintre aquesta base de dades, clicarem a l'opció importar i per últim escollirem l'arxiu corresponent, en aquest cas la BD del departament d'informàtica.
Consulteu el fitxer:
/usr/share/doc/webfaltes/examples/database/installdatabase.sh
#/bin/bash stty -echo read -p "MySQL root Password: " passwd; echo stty echo echo "Creating webfaltes database and user to connect..." mysql -u root --password="$passwd" < init.sql echo "Creating webfaltes schema..." mysql -u root --password="$passwd" webfaltes < webfaltes-schema.sql echo "Populating webfaltes..." mysql -u root --password="$passwd" webfaltes < webfaltes.sql
On init.sql:
CREATE DATABASE webfaltes; CREATE USER 'webfaltes'@'localhost' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON webfaltes.* TO 'webfaltes'@'localhost' WITH GRANT OPTION; FLUSH PRIVILEGES; exit
Aquest arxiu de l'aplicació webfaltes el podem trobar a :
usr/share/doc/webfaltes/examples/database/init.sql
Cal modificar el fitxer:
$ sudo joe /etc/webfaltes/webfaltes_mysql_con.php
I dins de aquest arxiu hi ha això, on haurem de canviar les dades:
<?php $MM_ConTut_HOSTNAME = "Aquí anirà el nom de la màquina o la Ip del servidor"; $MM_ConTut_DBTYPE = "El tipus de la base de dades"; // Triarem MySQL $MM_ConTut_DATABASE = "Nom de la base de dades"; // Suposadament es diu webfaltes $MM_ConTut_USERNAME = "posa_aqui_el_teu_usuari"; // Usuari per accedir a la BD $MM_ConTut_PASSWORD = "posa_aqui_el_teu_password"; // Contrasenya per accés a la BD $QUB_Caching = false; $ConTut = &ADONewConnection($MM_ConTut_DBTYPE); // Petits ajustos per connectar-nos a Acces o ODBC /IBASE / i altres. if($MM_ConTut_DBTYPE == "access" || $MM_ConTut_DBTYPE == "odbc"){ $ConTut->Connect($MM_ConTut_DATABASE, $MM_ConTut_USERNAME, $MM_ConTut_PASSWORD); } else if($MM_ConTut_DBTYPE == "ibase") { $ConTut->Connect($MM_ConTut_HOSTNAME.":".$MM_ConTut_DATABASE, $MM_ConTut_USERNAME,$MM_ConTut_PASSWORD); } else { $ConTut->Connect($MM_ConTut_HOSTNAME,$MM_ConTut_USERNAME, $MM_ConTut_PASSWORD,$MM_ConTut_DATABASE); } ?>
Per exemple:
<?php $MM_ConTut_HOSTNAME = "localhost"; // Nom de la màquina o IP servidor $MM_ConTut_DBTYPE = "mysql"; // Tipus de base de dades $MM_ConTut_DATABASE = "webfaltes"; // Nom de la base de dades $MM_ConTut_USERNAME = "root"; // Usuari per accedir a la BD $MM_ConTut_PASSWORD = "1234"; // Contrasenya per accés a la BD $QUB_Caching = false; $ConTut = &ADONewConnection($MM_ConTut_DBTYPE); // Petits ajustos per connectar-nos a Acces o ODBC /IBASE / i altres. if($MM_ConTut_DBTYPE == "access" || $MM_ConTut_DBTYPE == "odbc"){ $ConTut->Connect($MM_ConTut_DATABASE, $MM_ConTut_USERNAME, $MM_ConTut_PASSWORD); } else if($MM_ConTut_DBTYPE == "ibase") { $ConTut->Connect($MM_ConTut_HOSTNAME.":".$MM_ConTut_DATABASE, $MM_ConTut_USERNAME,$MM_ConTut_PASSWORD); } else { $ConTut->Connect($MM_ConTut_HOSTNAME,$MM_ConTut_USERNAME, $MM_ConTut_PASSWORD,$MM_ConTut_DATABASE); }
Cal modificar el fitxer:
$ sudo joe /etc/webfaltes/webfaltes_ldap_con.php
I dins d'aquest arxiu hi ha això, on haurem de canviar les dades:
<?php define("_LDAP_SERVER", "Aquí anirà el nom de la màquina o la Ip del servidor"); define("_LDAP_PORT", NULL); define("_LDAP_USER", "Usuari del ldap(El cn)"); define("_LDAP_PASSWORD", "Contrasenya del ldap"); define("_LDAP_GROUP", "physicaldeliveryofficename"); define("_LDAP_USER_ID", "employeenumber"); define("_LDAP_STUDENT_BASE_DN", "ou=Alumnes,ou=All,dc=iesebre,dc=com"); define("_LDAP_TEACHER_BASE_DN", "ou=Profes,ou=All,dc=iesebre,dc=com"); ?>
Per exemple:
<?php define("_LDAP_SERVER", "localhost"); define("_LDAP_PORT", NULL); define("_LDAP_USER", "cn=webfaltes,ou=people,ou=acls,dc=iesebre,dc=com"); define("_LDAP_PASSWORD", "1234"); define("_LDAP_GROUP", "physicaldeliveryofficename"); define("_LDAP_USER_ID", "employeenumber"); define("_LDAP_STUDENT_BASE_DN", "ou=Alumnes,ou=All,dc=iesebre,dc=com"); define("_LDAP_TEACHER_BASE_DN", "ou=Profes,ou=All,dc=iesebre,dc=com"); ?>
IMPORTANT: Aquesta configuració ha tingut canvis recentment --acacha 06:11, 2 juny 2011 (UTC). El make install ja fa aquest canvis!?
Per tal que funcioni ens hem d'assegurar que existeixin els següents directoris d'Smarty:
$ sudo mkdir /var/spool/webfaltes
A continuació hem de donar les permisos correctes a les carpetes. Bàsicament el que es fa és fer que algunes de les carpetes sigui propietat de l'usuari que executa el servidor web (suposem que és tracta de l'usuari www-data - usuari típic en distribucions Linux de la família Debian amb servidors Apache -):
$ sudo chown www-data:www-data /var/spool/webfaltes $ sudo chmod 775 /var/spool/webfaltes
NOTA: Podeu veure l'antiga configuració (abans de --acacha 06:10, 2 juny 2011 (UTC)) a Antiga configuració Smarty per a webfaltes
A continuació si anem a la url: http://localhost/webfaltes ens surt el següent error:
Warning: require_once(/usr/share/gosa/include/utils/class_msgPool.inc): failed to open stream: No such file or directory in /usr/share/webfaltes/setup/functions.inc on line 159 Fatal error: require_once(): Failed opening required '/usr/share/gosa/include/utils/class_msgPool.inc' (include_path='.:/usr/share/webfaltes/include:/usr/share/webfaltes/include/utils/excel:/usr/share/php') in /usr/share/webfaltes/setup/functions.inc on line 159
Per solucionar el problema crearem el següent fitxer buit:
$ sudo touch /etc/webfaltes/webfaltes.conf
TODO
Eclipse PHP (32 Bit) Eclipse PHP (64 Bit)
Eclipse#Eclipse_for_PHP_Developers
Eclipse#Instal.C2.B7laci.C3.B3_del_plugin_subclipse
Suposem que hem seguit les passes per tal d'obtenir el codi font de l'aplicació webfaltes a partir del subversion i que ho hem fet utilitzant Eclipse i el plugin d'Eclipse Subclipse (suposem que hem baixat el trunk de l'aplicació) . Suposem a més que l'entorn de treball (workspace) el tenim a la nostre HOME, per exemple:
/home/sergi/workspace/webfaltes
Aleshores per instal·lar l'aplicació a la carpeta que pertoca segons l'estàndard FHS i per tal de poder provar-la només ens cal executar:
$ cd /home/sergi/workspace/webfaltes $ sudo make install
Això ens instal·larà l'aplicació a /usr/share/webfaltes i també configurarà l'Apache si encara no ho havíem fet.
Per últim tindrem de crear el fitxer /etc/webfaltes/webfaltes.conf buit:
sudo touch /etc/webfaltes/webfaltes.conf
Per a la instal·lació de l'Apache Directory Studio s'han de seguir els passos següents:
Apache Directory Studio
Per a la instal·lació de PHPMyAdmin s'han de seguir els passos següents:
TODO
Tenim la opció de provar la aplicació webfaltes sense necessitat d'instal·lar-la al nostre sistema operatiu. Per fer-ho tindrem que seguir els següents passos:
En cas que no tinguem instal·lat al nostre equip l'aplicació Virtual Box, tindrem que fer-ho.
Per instal·lar Virtual Box seguirem el passos definits aquí
Per poder treballar amb la aplicació demowebfaltes el primer que hem de fer és descarregar el paquet demowebfaltes. El podem descarregar des del següent enllaç.
http://www.iesebre.com/subversion/2asix/rrodriguez/demowebfaltes_0.1-1_i386.deb
Per finalitzar la insatal·lació sols hem de executar la comanda dpkg seguit el paràmetre -i i el nom del paquet que acabem de descarregar.
$ dpkj -i demowebfaltes_0.1-1_i386.deb
Podem descarregar la màquina virtual amb l'aplicació webfaltes instal·lada i configurada de forma adient per provar-la sense necessitat de fer l`instal·lació de la aplicació complerta.
La podem descarregar del següent enllaç.
http://www.iesebre.com/subversion/2asix/rrodriguez/demowebfaltes.vdi.tar.gz
Un cop descarregat tindrem que desempaquetar-la amb la comada.
$ tar xzvf demowebfaltes.vdi.tar.gz
Després de desempaquetar-ho, copiarem el fitxer demowebfaltes.vdi, al directori on l'aplicació Virtual Box emmagatzema les imatges de disc dur per defecte. Normalment és el directori /home/nom_usuari/.VirtualBox/HardDisks.
$ cp demowebfaltes.vdi .VirtualBox/HardDisks/
Tot seguit executarem la comanda que ens crearà la imatge de disc de la màquina webfaltes
$ sudo bash demowebfaltes
IMPORTANT: Per a que la màquina de demostració funcione forma correcta és imprescindible aquests dos últims passos.
Un cop ha finalitzat el procés (no abans), ja podem obrir Virtual Box i fer els passos que s'indiquen tot seguit:
Si hem seguit aquest passos ja esta tot preparat per poder iniciar la màquina de demostració.
NOTA: Para entrar el usuario es webfaltes y el pass webfaltes.
Un cop iniciada la màquina, és possible que tinguem que modificar la configuració de la xarxa. La adreça IP es una adreça estatica la 192.168.203.250 i per podes accedir a la aplicació amb el navegador, aquesta ha de ser una adreça dintre de la nostra xarxa de àrea local. Per configurar-ho haurem de modificar el fitxer /etc/network/interfaces
auto lo iface lo inet loopback auto eth0 iface eth0 inet static address 192.168.203.250 netmask 255.255.255.0 network 192.168.203.0 gateway 192.168.203.1
On podem modificar els següents valors:
Per últim, en cas de fer algun canvi, haurem de reiniciar la configuració de xarxa amb la comanda.
$ sudo /etc/init.d/networking restart
Arribat a aquest punt ja podem obrir el navegador de qualsevol equip de la nostra xarxa i accedir a l'aplicació de demo posant al navegador la areça IP del servidor, que hem pogut configurar anteriorment, seguit del nom de l'aplicació. Per exemple:
http://192.168.203.250/webfaltes
Documentació per a l'usuari de la màquina de demostració de l'aplicació webfaltes --Roberto Rodríguez Luna 18:00, 8 juny 2011 (UTC)
En cert moment del desenvolupament de l'aplicació és va decidir no implementar cap gestió d'usuaris pròpia i utilitzar sistemes externs. Per facilitar al màxim la escal·labilitat i la integració amb altres sistemes es va decidir utilitzar Ldap com a "base de dades" en la que emmagatzemar els usuaris i altre informació de l'aplicació com els grups de classe.
Per gestionar els usuaris i la resta d'informació de l'aplicació de webfaltes que es troba al servidor Ldap recomanem Gosa
IMPORTANT: No es obligatori utilitzar Gosa, cadascú pot utilitzar altres eines de gestió de l'arbre Ldap, com ADS, phpldapadmin o similars. Això si, cal tenir en compte les característiques que han de tenir el Ldap per poder-se integrar amb l'aplicació de faltes
Actualment (--acacha 14:48, 3 maig 2011 (UTC)) tenim el següent tipus d'usuaris:
En futures versions es vol incorporar també:
Exemple amb gosa:
/All/Profes
On
Aquí podem guardar tots els professors sense ordenar però millor si els organitzem per departaments:
Per exemple suposem que volem crear el departament d'informàtica, aleshores el DN és:
/All/Profes/Informàtica DN: ou=Informàtica,ou=Profes,ou=All,dc=iesebre,dc=com
Creeu aquest departament (OU) i tots els departament pare que us faltin. Un cop el tingueu, creeu un usuari per a cada professor del departament
TODO: Error! No és una organització és un departament!
IMPORTANT: Un camp especial és el employeeNumber (Número empleado) que conté el codi de professor. Si no creem aquest camp, donarà errors a l'hora d'accedir l'usuari al sistema, ja que demanarà aquest camp
Un cop creat l'usuari haurem de dir a l'aplicació webfaltes on es guarden els professors. En aquest cas el baseDN dels professors és ou=Profes,ou=All,dc=iesebre,dc=com i es guarda a la constant "_LDAP_TEACHER_BASE_DN" del fitxer webfaltes_ldap_con.php.
Exemple amb gosa:
Ens dirigim a Directory Structure i ens fiquem sobre Actions i allí Create/Department
/All/Alumnes
On
Aquí es poden organitzar els alumnes de diferents formes, un exemple és el de l'Institut de l'Ebre:
Captures de pantalla de les organitzacions dels alumnes per famílies, en aquest cas per la família d'Informàtica:
Captures de pantalla de les organitzacions dels alumnes per cicles, en aquest cas pel cicle d'informàtica ASI:
Captures de pantalla de les organitzacions dels alumnes per cursos, en aquest cas el segon curs:
Captures de pantalla de les organitzacions dels alumnes per grups, en aquest cas el grup A:
Per exemple per a informàtica:
DN: ou=Grup A,ou=Curs 2,ou=Informàtica ASI,ou=Informàtica,ou=Alumnes,ou=All,dc=iesebre,dc=com
$ man gosa.conf | grep people
Camps importants:
Hi ha una serie de camps que s'han fet servir per guardar unes dades tot i que no tenen cap relació amb el nom. Aquests són:
physicalDeliveryOfficeName: On guardem el grup al qual pertanyen els alumnes. businessCategory: On guardem el codi de l'aula. employeeNumber: On guardem l'identificador tant dels alumnes com dels professors.
Si en algun moment donat ens interesses canviar aquests camps especials a part de canviar-ho dels usuaris s'hauria de canviar d'aquest fitxer.
Explicar com es poden canviar per ADS... i per Gosa?
Donar d'alta un usuari/alumne, manual pas a pas...
TODO:
A on es configura quin és el baseDN per a buscar els alumnes per a webfaltes? i els camps especials?
Un cop creat l'usuari haurem de dir a l'aplicació webfaltes on es guarden els alumnes. En aquest cas el baseDN dels alumnes és ou=Alumnes,ou=All,dc=iesebre,dc=com i es guarda a la constant "_LDAP_STUDENT_BASE_DN" del fitxer webfaltes_ldap_con.php.
A la base de dades de Webfaltes tenim les següents taules:
Podem consultar el diccionari de dades aquí.
Hi ha taules amb dades fixes, això significa que no solen canviar (només en canvis de períodes acadèmics o circumstàncies excepcionals), i aquestes taules són:
Com podeu veure la aula central i per tant la més important és la taula classe.
NOTA: Les taules alumne i professor no existeixen a la base de dades ja que els usuaris es guarden en ldap.
Tenim les següents fonts de dades:
/etc/webfaltes/
Dintre d'aquesta carpeta trobem els següents fitxers que corresponen a la configuració de l'aplicació :
webfaltes_ldap_con.php webfaltes_mysql_con.php
Aquests 2 fitxers estan relacionats amb les connexions mysql i ldap per a l'aplicació.
/usr/share/webfaltes
Dintre d'aquesta carpeta trobem els següents fitxers :
Llistat_correu_centre_alumnes.php Llistat_correu_centre_personal_alumnes.php Llistat_correu_personal_alumnes.php StudentManagment.php administrar.php class_list_report.php class_list_report_no_photo.php class_lists_report.php class_sheet_report.php compileLocales.sh config.inc.php connexio/ css/ email_history_1.php email_history_2.php estadistiques.php example_database/ faltes.php funcions.php funcions_ldap.php identifica.php identifica_alumne.php identifica_pare.php images/ imatges/ includes/ index.php informe_centre_d_h_1.php informe_centre_d_h_2.php informe_centre_di_df_1.php informe_centre_di_df_2.php informe_centre_ranking_di_df_1.php informe_centre_ranking_di_df_2.php informe_resum_credit_di_df_1.php informe_resum_credit_di_df_2.php informe_resum_grup_di_df_1.php informe_resum_grup_di_df_2.php informe_resum_grup_faltes_mes_1.php informe_resum_grup_faltes_mes_2.php insereix_est.php insereix_inc.php insereix_inc.php.backup insert_new_password.php insert_recovery_password.php insert_recovery_username.php javascript/ jquery.js libs/ locales/ logout.php lost_password.php lost_password_ok.php mailing_list_report.php mostra_res_missatge.php mostra_res_missatge_contrasenya.php navega.php novetats.html parameters_sms_email.php passwordrecovery.php photo/ php_config.php phpinfo.php profile.php profile_father.php profile_student.php recupera_alumne_BD.php recupera_professor_BD.php recuperar_alumnes.php recuperar_profes.php reports/ seguretat.inc.php selec_estadistiques.php selec_informe.php selecalum.php selecalum_tutoria.php selecgroup.php selecgrup_tutoria.php select_option_avis_pares.php send_mail.php setup/ setup.php setup.sh smarty/ smarty_messages.c sms_history.php sms_history_1.php themes/ tutoria.php updateLocales.sh view_jpeg_photo.php
Aquest grup de fitxers correspon als arxius necessaris per fer funcionar l'aplicació webfaltes.
/usr/share/doc/
Dintre d'aquesta carpeta hi trobem la documentació de l'aplicació :
changelog webfaltes/ webfaltes_ldap_con.php
A més dintre el subdirectori webfaltes hi podem trobar bases de dades sql i ldap d'exemple, arxius innecessaris, exemples i altres fitxers extres :
/usr/share/doc/webfaltes/
basura/ contributors/ examples/ ldap/ sql/
L'esquema de la base de dades la podeu trobar a:
/usr/share/doc/webfaltes/examples/database/webfaltes-schema.sql
I algunes dades estàtiques fixes:
/usr/share/doc/webfaltes/examples/database/webfaltes.sql
/var/cache/webfaltes/
class.cache
/var/spool/webfaltes/
README
Consulteu Webfaltes#Entorn_de_desenvolupament
TODO: Carpeta smarty
TODO: repassar tots els fitxers de reports:
Llencol_estudiants_grup.php Llistat_grup_tutor.php informe_centre_di_df_pdf.php informe_resum_credit_di_df_pdf.php Llistat_alumnes_grup.php carta_informe_resum_grup_di_df_pdf.php informe_centre_professors_pdf.php informe_resum_grup_di_df_pdf.php Llistat_alumnes_grup_sense_foto.php informe_centre_d_h_pdf.php informe_centre_ranking_di_df_pdf.php informe_resum_grup_faltes_mes_pdf.php
Dependències:
TODO:
TODO Al titol:
TODO:
TODO:
TODO:
TODO:
Mostra una llista desplegable amb totes les classes del centre i un cop escollida la classe mostra les llistes de classe amb foto o sense foto
TODO:
TODO:
La identificació es fa per usuari i paraula de pas. L'usauri es troba a un arbre ldap i la paraula de pas està emmagatzemada en MD5
TODO:
Fet per Pau Gomez Fitxer:
Taules:
????
Fitxer:
Fitxers:
Si voleu modificar codi de l'aplicació de faltes cal tenir en comtpe que utilitza el tag Id i que per tant l'haureu d'activar. Consulteu:
Subversion#Establint_el_tag_Id
Els fitxers que s'han d'ignorar seran:
També s'hauran d'ignorar dues carpetes que crearem nosaltres:
IMPORTANT: Si esteu desenvolupant i utilitzeu el Makefile un altre opció es només canviar el noms dels fitxer a la carpeta /usr/share/webfaltes i no pas al vostre espai de treball (workspace) Consulteu Webfaltes#Configuraci.C3.B3_de_l.27aplicaci.C3.B3_webfaltes
Per línia d'ordres
Per a un directori:
$ svn propset svn:ignore '*' directori/ .
Per exemple:
$ svn propset svn:ignore '*' smarty/templates_c/ .
Per a un fitxer:
$ svn propset svn:ignore fitxer .
Per exemple:
$ svn propset svn:ignore connexio/webfaltes_con .
Per pujar els canvis al subversion haurem de fer un commit:
$ svn ci
Amb Eclipse i el plugin Subclipse:
Amb l'eclipse és molt més sencill, haurem de seleccionar el fitxer que volem ignorar. Una vegada seleccionat, botó dret Team > Add to svn:ignore.
Una vegada fet tot això el fitxer o la carpeta triada serà ignorada per al subversion.
La idea és separar el codi font (model i el controlador) de les fulles d'estil (les vistes). L'únic que fa un controlador és controlar el flux. També serveix per separar els llenguatges, no volem tots els diferents llenguatges barrejats en un fitxer. L'Smarty serveix per separar el codi php de la presentació.
Definició: és un motor per a crear plantilles, és a dir, que permet crear plantilles i presentacions per a aplicacions PHP.
El framework és una serie d'eines que t'ajuda a fer coses, el smarty és un framework que t'ajuda a fer plantilles. Per preparar un projecte nou amb Smarty:
Crearem un nou projecte php que s'anomenarà HolaMon
Crearem una carpeta smarty que a dins hi haurà 4 carpetes:
A aquestes carpetes se'ls haurà de donar permisos especials per tal que funcionin:
$ chown www-data:www-data smarty/templates_c $ chown www-data:www-data smarty/cache $ chmod 775 smarty/templates_c $ chmod 775 smarty/cache
Donem permisos amb l'usuari del apache(www-data).
Un exemple sencill:
<?php // put full path to Smarty.class.php require('/usr/local/lib/php/Smarty/Smarty.class.php'); $smarty = new Smarty(); $smarty->template_dir = '/home/ester/workspace/Holamon_Smarty/templates'; $smarty->compile_dir = '/home/ester/workspace/Holamon_Smarty/templates_c'; $smarty->cache_dir = '/home/ester/workspace/Holamon_Smarty/cache'; $smarty->config_dir = '/home/ester/workspace/Holamon_Smarty/configs'; $smarty->assign('name', 'Ester Almela Sánchez'); $smarty->display('index.tpl'); ?>
Però també hem de crear un altre fitxer anomenat index.tpl dins la carpeta templates (es tracta de la plantilla):
<html> <head> <title>Smarty</title> </head> <body> Hello, {$name}! </body> </html>
La localització és el procés d'adaptar una aplicació (o tot un sistema operatiu) a una regió específica i a un idioma específic. Com que és una paraula molt llarga s'utilitza l'abreviació l10n on 10 són el número de lletres que hi ha entre l l i la n a la paraula localització. A la localització també de l'anomena regionalització.
Per a fer funcionar la localització haurem de tenir una carpeta anomenada locales dins al nostre projecte que contindrà tantes carpetes com idiomes tindrem traduïts, per exemple, per utilitzar el català tindrem la carpeta ca_ES, dins d'aquesta anirà una altra anomenada LC_MESSAGES i dins d'aquesta dos fitxers, messages.po i messages.mo. L'arxiu messages.po conté les traduccions de la següent manera:
#: smarty_messages.c:8 smarty_messages.c:776 smarty_messages.c:1001 #: smarty_messages.c:1613 msgid "Are you sure you want to delete the selected registrys" msgstr "Estas segur que vols esborrar els registres seleccionats"
Les consultes SQL es fan al arxiu includes/db/sql_querys_inc.php i s'executen als arxius on es referencien que són php.
Un exemple d'execució seria així:
$utils = new utils(); $RSRC = array(); $VALS = array(); $VALS['codi_professor'] = $codi_professor; $utils->get_global_resources($RSRC, "db/sql_querys_inc.php", $VALS); $utils->p_dbg($RSRC, "Prova log"); $result_5 = $ConTut->Execute($RSRC['COMPROVA_COORDINADOR']) or die($ConTut->ErrorMsg());
VALS serà l'array per la qual li passarem els valors a la SQL, i la comanda s'executarà a la línia del $result_5 on si hi ha un error ens mostrarà un missatge.
$RSRC['COMPROVA_COORDINADOR'] = <<<EOF SELECT es_coordinador FROM rol_professor WHERE codi_professor = '{$VALS['codi_professor']}';
Aquesta seria la consulta que aniria al sql_querys_inc.php, $RSRC['COMPROVA_COORDINADOR'] aquest és el nom de la consulta, el qual necessitarem al php per referenciar-lo.
NOTA: Tal i com està ara (--acacha 05:06, 3 juny 2011 (UTC)) necessita d'smarty3!!
Classes (carpeta setup).
Una classe pare: class_setupStep.inc
-rw-rw-r-- 1 sergi sergi 2783 2011-06-03 06:11 class_setupStep.inc
Aquesta classe és realment una plugin de gosa (hereta de la classe plugin!).
Una classe filla per cada pas (Step):
$ ls -l -rw-rw-r-- 1 sergi sergi 13538 2011-06-03 06:11 class_setupStep_Checks.inc -rw-rw-r-- 1 sergi sergi 9669 2011-06-03 06:11 class_setupStep_Feedback.inc -rw-rw-r-- 1 sergi sergi 4536 2011-06-03 06:11 class_setupStep_Finish.inc -rw-rw-r-- 1 sergi sergi 2383 2011-06-03 06:11 class_setupStep_Language.inc -rw-rw-r-- 1 sergi sergi 6875 2011-06-03 06:11 class_setupStep_Ldap.inc -rw-rw-r-- 1 sergi sergi 2446 2011-06-03 06:11 class_setupStep_License.inc -rw-rw-r-- 1 sergi sergi 32914 2011-06-03 06:11 class_setupStep_Migrate.inc -rw-rw-r-- 1 sergi sergi 3766 2011-06-03 06:11 class_setupStep_Schema.inc -rw-rw-r-- 1 sergi sergi 2162 2011-06-03 06:11 class_setupStep_Welcome.inc
-rw-rw-r-- 1 sergi sergi 9442 2011-06-03 06:50 class_setup.inc
TODO: Un step de mysql?
TODO: Fitxer de configuració en XML? utilitzar el parser de Gosa.
Afegir dos camps
Students RDN: Valor per defecte: ou=Alumnes,ou=All Teachers RDN: Valor per defecte: ou=Profes,ou=All
Per crear les línies:
define("_LDAP_STUDENT_BASE_DN", "ou=Alumnes,ou=All,dc=iesebre,dc=com"); define("_LDAP_TEACHER_BASE_DN", "ou=Profes,ou=All,dc=iesebre,dc=com");
On dc=iesebre,dc=com és el basedn que ja el tenim. Al fitxer plantilla posem:
define("_LDAP_STUDENT_BASE_DN", "{$cv.ldapteachersrdn},{$cv.base}"); define("_LDAP_TEACHER_BASE_DN", "{$cv.ldapstudentsrdn},{$cv.base}");
NOTA: A la plantilla s'afegeix la opció TLS (define("_LDAP_TLS", "0");) tot i que no està implementada/suportada--> opció de futur
TODO: Cal manipular {$cv.connection} per obtenir els camps: {$cv.ldapserver} {$cv.port}
Checking for a root object --> Ok Checking _LDAP_STUDENT_BASE_DN --> TODO Checking _LDAP_TEACHER_BASE_DN --> TODO Checking permission for LDAP database ??????????????????Checking for super administratorChecking for user to connect to Ldap
Camps:
{$cv.ldapuserrdn} {$cv.ldapuserpassword}
Per a fer el fitxer:
define("_LDAP_USER", "{$cv.ldapuserrdn},{$cv.base}"); define("_LDAP_PASSWORD", "{$cv.ldapuserpassword}");
Que cal fer?
La nostra pròpia plantilla/plantilles d'smarty:
/usr/share/doc/webfaltes/webfaltes_ldap_con.php /usr/share/doc/webfaltes/webfaltes_mysql_con.php /usr/share/doc/webfaltes/webfaltes.conf
Ldap. Exemple:
define("_LDAP_SERVER", "localhost"); define("_LDAP_PORT", 389); define("_LDAP_USER", "cn=webfaltes,dc=iesebre,dc=com"); define("_LDAP_PASSWORD", "webfaltes"); define("_LDAP_GROUP", "physicaldeliveryofficename"); define("_LDAP_USER_ID", "employeenumber"); define("_LDAP_STUDENT_BASE_DN", "ou=Alumnes,ou=All,dc=iesebre,dc=com"); define("_LDAP_TEACHER_BASE_DN", "ou=Profes,ou=All,dc=iesebre,dc=com");
_LDAP_SERVER -> {$cv.connection}=ldap://localhost:389 (cal treure el protocol i el port) _LDAP_PORT -> {$cv.connection}=ldap://localhost:389 (cal treure el protocol i el nom de màquina) _LDAP_USER -> cn=webfaltes,{$cv.base} _LDAP_PASSWORD -> ???? Generar un aleatòriament! _LDAP_GROUP -> "physicaldeliveryofficename" _LDAP_USER_ID -> "employeenumber _LDAP_STUDENT_BASE_DN -> ou=Alumnes,{$cv.base} _LDAP_TEACHER_BASE_DN -> ou=Profes,{$cv.base}
{$cv.location} -> no ens cal! {$cv.connection} -> ldap://localhost:389 {$cv.base} -> dc=iesebre,dc=com {$cv.admin} -> Tampoc el necessita webfaltes! Al menys no cal guardar en cal fitxer, només cal per fer temporalment operacions al servidor Ldap {$cv.password} -> no es necessita
Variables:
<location name="{$cv.location}" config="ou=gosa,ou=configs,ou=systems,{$cv.base}"> <referral URI="{$cv.connection}/{$cv.base}" adminDn="{$cv.admin}" adminPassword="{$cv.password}" /> </location> </main>
</conf>
Exemple de vector cv:
Array ( [instanceUUID] => f6ed507f-d29e-4c46-b55e-39103e3718b7 [accepted] => 1 [connection] => ldap://localhost:389 [location] => default [admin] => cn=admin,dc=iesebre,dc=com [password] => PASSWORD [base] => dc=iesebre,dc=com [admin_given] => cn=admin,dc=iesebre,dc=com [append_base_to_admin_dn] => [tls] => 0 [rfc2307bis] => 0 )
Es pot imprimir a smarty amb:
{$cv|@print_r}
La clau és la funció:
function get_conf_data() { $smarty = get_smarty(); $smarty->assign("cv",xmlentities($this->parent->captured_values)); $smarty->assign("config_checksum", md5(file_get_contents(CONFIG_TEMPLATE_DIR.$this->gosa_conf_contrib))); $str = $smarty->fetch(CONFIG_TEMPLATE_DIR.$this->gosa_conf_contrib); return($str); }
Aquesta funció s'encarrega de crear/obtenir el fitxer de configuració a partir d'una plantilla. La plantilla és troba a:
CONFIG_TEMPLATE_DIR.$this->gosa_conf_contrib
és a dir
/usr/share/doc/gosa/gosa.conf
Ja que
$ grep -n "CONFIG_TEMPLATE_DIR" -r . ... ./usr/share/webfaltes/setup/.svn/text-base/functions.inc.svn-base:47:define ("CONFIG_TEMPLATE_DIR", "/usr/share/doc/gosa");
... class Step_Finish extends setup_step { var $gosa_conf_contrib = "/gosa.conf"; ...
Aquest fitxer és una plantilla d'smarty:
$ cat /usr/share/doc/gosa/gosa.conf {literal}<?xml version="1.0"?>{/literal} <conf configVersion="{$config_checksum}" instancePassword="" instanceUUID="{$cv.instanceUUID}"> <!-- GOsa menu definition ************************************************** This tag defines the side and icon menu inside the interface. Defining an entry here is no guarantie to get it shown, though. Only entries with matching ACL's get shown. There are two types of entries inside of the menu: section and plugin Defining a section: Open a <section> tag including a "name" attribute. This will show up in the menu as a new section later on. Own entries are not handled via I18N by default. Close the </section> tag after your plugin definitions. Defining a plugin: Open a <plugin> tag including a "class" attribute. The "class" should be present inside your GOsa setup - the entry will be ignored if it is not. Plugins should have an "acl" entry, that allows GOsa to decide wether a user is allowed to see a plugin or not. The "acl" string matches with an ACL definition done inside of GOsa -> ACLs. You can override an icon by specifying the "icon" attribute. For more information about possible configuration parameters, please take a look at the gosa.conf(5) manual page. --> <menu> <!-- Section to enable administrative services --> <section name="Administration"> <plugin acl="department" class="departmentManagement" /> <!-- This long ACL list is required to exclude the users menu entry when only 'viewFaxEntries' permissions are set --> <plugin acl="users/netatalk,users/environment,users/posixAccount,users/kolabAccount,users/phpscheduleitAccount,users/oxchangeAccount,users/proxyAccount,users/connectivity,users/pureftpdAccount,users/phpgwAccount,users/opengwAccount,users/pptpAccount,users/intranetAccount,users/webdavAccount,users/nagiosAccount,users/sambaAccount,users/groupware,users/mailAccount,users/user,users/scalixAccount,users/password,users/gofaxAccount,users/phoneAccount,users/Groupware" class="userManagement" /> <plugin acl="groups" class="groupManagement" /> <plugin acl="roles" class="roleManagement"/> <plugin acl="acl" class="aclManagement" /> <plugin acl="ogroups" class="ogroupManagement" /> <plugin acl="sudo" class="sudoManagement" /> <plugin acl="application" class="applicationManagement" /> <plugin acl="mimetypes" class="mimetypeManagement" /> <plugin acl="devices" class="deviceManagement" /> <plugin acl="terminal/termgeneric,workstation/workgeneric,server/servgeneric,phone/phoneGeneric,printer/printgeneric,component/componentGeneric,winworkstation/wingeneric,opsi/opsiGeneric" class="systemManagement" /> <!-- Use 'lockDn' for dn 'lockName' for name 'lockType' for branch/freeze --> <plugin acl="fai/faiScript,fai/faiHook,fai/faiTemplate,fai/faiVariable,fai/faiPartitionTable,fai/faiPackage,fai/faiProfile,fai/faiManagement,opsi/opsiProperties" class="faiManagement" /> <plugin acl="opsi" class="opsiLicenses"/> <plugin acl="gofaxlist" class="blocklist" /> <plugin acl="gofonmacro" class="goFonMacro" /> <plugin acl="gofonconference" class="phoneConferenceManagment" /> </section> <!-- Section to enable addon plugins --> <section name="Addons"> <plugin acl="all/all" class="propertyEditor" /> <plugin acl="server/rSyslogServer" class="rsyslog" /> <!-- <plugin acl="mailqueue" class="mailqueue" />--> <plugin acl="users/viewFaxEntries:self,users/viewFaxEntries" class="faxreport" /> <plugin acl="users/viewFonEntries:self,users/viewFonEntries" class="fonreport" /> <plugin acl="gotomasses" class="gotomasses" /> <plugin acl="ldapmanager" class="ldif" /> </section> </menu> <!-- These entries will be rendered on the short-cut menu --> <shortCutMenu> <plugin acl="none" class="welcome" /> </shortCutMenu> <!-- These entries will be rendered on the path navigator --> <pathMenu> <plugin acl="users/netatalk:self,users/environment:self,users/posixAccount:self,users/kolabAccount:self,users/phpscheduleitAccount:self,users/oxchangeAccount:self,users/proxyAccount:self,users/connectivity:self,users/pureftpdAccount:self,users/phpgwAccount:self,users/opengwAccount:self,users/pptpAccount:self,users/intranetAccount:self, users/webdavAccount:self,users/nagiosAccount:self,users/sambaAccount:self,users/mailAccount:self,users/groupware, users/user:self,users/scalixAccount:self,users/gofaxAccount:self,users/phoneAccount:self,users/Groupware:self" class="MyAccount" /> <plugin acl="users/password:self" class="password" /> </pathMenu> <!-- Tab definitions ******************************************************* Tab definitions define the sub plugins which get included for certain tabbed dialogs. If you change something here, never (!) remove the primary (the first) "tab" tag which is defined. Most tabbed dialogs need a primary plugin. "*tab" should be looked for by a defined plugin. This one will take every "tab" defined "class" and will show it inside of a tabbed dialog with the header defined in "name". --> <!-- ACL dialog --> <acltab> <tab class="acl" name="ACL" /> </acltab> <aclroletab> <tab class="aclrole" name="ACL Role" /> </aclroletab> <!-- User dialog --> <usertabs> <tab class="user" name="Generic" /> <tab class="posixAccount" name="POSIX" /> <tab class="sambaAccount" name="Samba" /> <tab class="netatalk" name="Netatalk" /> <tab class="mailAccount" name="Mail" /> <!-- <tab class="Groupware" name="Groupware" />--> <tab class="scalixAccount" name="Scalix" /> <tab class="environment" name="Desktop" /> <tab class="connectivity" name="Connectivity" /> <tab class="gofaxAccount" name="Fax" /> <tab class="phoneAccount" name="Phone" /> <tab class="nagiosAccount" name="Nagios" /> </usertabs> <!-- User dialog --> <MyAccountTabs> <tab class="user" name="Generic" /> <tab class="posixAccount" name="POSIX" /> <tab class="sambaAccount" name="Samba" /> <tab class="netatalk" name="Netatalk" /> <tab class="mailAccount" name="Mail" /> <!-- <tab class="Groupware" name="Groupware" />--> <tab class="scalixAccount" name="Scalix" /> <tab class="environment" name="Desktop" /> <tab class="connectivity" name="Connectivity" /> <tab class="gofaxAccount" name="Fax" /> <tab class="phoneAccount" name="Phone" /> <tab class="nagiosAccount" name="Nagios" /> </MyAccountTabs> <opsiLicenseTabs> <tab class="licensePoolGeneric" name="Generic"/> <tab class="licenseUsage" name="Usage"/> </opsiLicenseTabs> <!-- Group dialog --> <grouptabs> <tab class="group" name="Generic" /> <tab class="DynamicLdapGroup" name="Dynamic object" /> <tab class="environment" name="Desktop" /> <tab class="appgroup" name="Startmenu" /> <tab class="mailgroup" name="Mail" /> <!-- <tab class="GroupwareSharedFolder" name="Groupware" />--> </grouptabs> <!-- Sudo dialog --> <sudotabs> <tab class="sudo" name="Generic" /> <tab class="sudoOption" name="Options" /> </sudotabs> <!-- GOfax plugins --> <faxblocktabs> <tab class="blocklistGeneric" name="Generic" /> </faxblocktabs> <!-- GOfon plugins --> <conferencetabs> <tab class="conference" name="Generic" /> </conferencetabs> <macrotabs> <tab class="macro" name="Generic" /> <tab class="macroParameter" name="Parameter" /> </macrotabs> <phonetabs> <tab class="phoneGeneric" name="Generic" /> </phonetabs> <!-- GOto plugins --> <appstabs> <tab class="application" name="Generic" /> <tab class="applicationParameters" name="Parameter" /> </appstabs> <mimetabs> <tab class="mimetype" name="Generic" /> </mimetabs> <devicetabs> <tab class="deviceGeneric" name="Generic" /> </devicetabs> <arpnewdevicetabs> <tab class="ArpNewDevice" name="Generic" /> </arpnewdevicetabs> <termtabs> <tab class="termgeneric" name="Generic" /> <tab class="termstartup" name="Recipe" /> <tab class="termservice" name="Devices" /> <tab class="terminfo" name="Information" /> </termtabs> <servtabs> <tab class="servgeneric" name="Generic" /> <tab class="workstartup" name="Recipe" /> <tab class="ServerService" name="Services" /> <tab class="faiSummaryTab" name="Deployment summary" /> <tab class="gotoLogView" name="Installation logs" /> <tab class="terminfo" name="Information" /> </servtabs> <worktabs> <tab class="workgeneric" name="Generic" /> <tab class="workstartup" name="Recipe" /> <tab class="workservice" name="Devices" /> <tab class="printgeneric" name="Printer" /> <tab class="terminfo" name="Information" /> <tab class="faiSummaryTab" name="Deployment summary" /> <tab class="gotoLogView" name="Installation logs" /> </worktabs> <printtabs> <tab class="printgeneric" name="Generic" /> </printtabs> <componenttabs> <tab class="componentGeneric" name="Generic" /> </componenttabs> <wintabs> <tab class="wingeneric" name="Generic" /> </wintabs> <serverservice> <tab class="goMailServer" /> <tab class="servkolab" /> <tab class="goNtpServer" /> <tab class="servrepository" /> <tab class="goImapServer" /> <tab class="goKrbServer" /> <tab class="goFaxServer" /> <tab class="goFonServer" /> <tab class="goCupsServer" /> <tab class="goKioskService" /> <tab class="goTerminalServer" /> <tab class="goLdapServer" /> <tab class="goShareServer" /> <tab class="gospamserver" /> <tab class="govirusserver" /> <tab class="servdhcp" /> <tab class="servdns" /> <tab class="rSyslogServer" /> </serverservice> <!-- Department plugin --> <deptabs> <tab class="department" name="Generic" /> <tab class="DynamicLdapGroup" name="Dynamic object" /> </deptabs> <organization_tabs> <tab class="organization" name="Generic" /> <tab class="DynamicLdapGroup" name="Dynamic object" /> </organization_tabs> <locality_tabs> <tab class="locality" name="Generic" /> <tab class="DynamicLdapGroup" name="Dynamic object" /> </locality_tabs> <country_tabs> <tab class="country" name="Generic" /> <tab class="DynamicLdapGroup" name="Dynamic object" /> </country_tabs> <dcobject_tabs> <tab class="dcObject" name="Generic" /> <tab class="DynamicLdapGroup" name="Dynamic object" /> </dcobject_tabs> <domain_tabs> <tab class="domain" name="Generic" /> <tab class="DynamicLdapGroup" name="Dynamic object" /> </domain_tabs> <!-- Role tabs --> <roletabs> <tab class="roleGeneric" name="Generic"/> <tab class="DynamicLdapGroup" name="Dynamic object" /> </roletabs> <ogrouptabs> <tab class="ogroup" name="Generic" /> <tab class="DynamicLdapGroup" name="Dynamic object" /> </ogrouptabs> <!-- Connectivity plugins --> <connectivity> <tab class='kolabAccount' /> <tab class="proxyAccount" /> <tab class="pureftpdAccount" /> <tab class="webdavAccount" /> <tab class="phpgwAccount" /> <tab class="intranetAccount" /> <tab class="pptpAccount" /> <tab class="phpscheduleitAccount" /> <tab class="oxchangeAccount" /> <tab class="opengwAccount" /> </connectivity> <ldiftab> <tab class="ldifexport" name="Export" /> <tab class="xlsexport" name="Excel Export" /> </ldiftab> <faipartitiontabs> <tab class="faiPartitionTable" name="Partitions" /> </faipartitiontabs> <faiscripttabs> <tab class="faiScript" name="Scripts" /> </faiscripttabs> <faihooktabs> <tab class="faiHook" name="Hooks" /> </faihooktabs> <faivariabletabs> <tab class="faiVariable" name="Variables" /> </faivariabletabs> <faitemplatetabs> <tab class="faiTemplate" name="Templates" /> </faitemplatetabs> <faiprofiletabs> <tab class="faiProfile" name="Profiles" /> <tab class="faiSummaryTab" name="Summary" /> </faiprofiletabs> <faipackagetabs> <tab class="faiPackage" name="Packages" /> </faipackagetabs> <opsitabs> <tab class="opsiGeneric" name="Generic" /> <tab class="opsiSoftware" name="Hardware" /> <tab class="opsiHardware" name="Software" /> <tab class="licenseUsageByHost" name="License usage"/> </opsitabs> <opsiprodconfig> <tab class="opsiProperties" name="Properties" /> <tab class="licenseByProduct" name="License usage"/> </opsiprodconfig> <!-- rSyslog plugin --> <rsyslogtabs> <tab class="rsyslog" name="System logs" /> </rsyslogtabs> <!-- Main section ********************************************************** The main section defines global settings, which might be overridden by each location definition inside. For more information about the configuration parameters, take a look at the gosa.conf(5) manual page. --> <!-- If you broke your setup using the propertyEditor, then set 'ignoreLdapProperties' to true. --> <main default="{$cv.location}" warnSSL="true" forceSSL="false" forceGlobals="true" ignoreLdapProperties="false" {if $cv.rfc2307bis} rfc2307bis="true" {else} rfc2307bis="false" {/if} > <!-- Location definition --> <location name="{$cv.location}" config="ou=gosa,ou=configs,ou=systems,{$cv.base}"> <referral URI="{$cv.connection}/{$cv.base}" adminDn="{$cv.admin}" adminPassword="{$cv.password}" /> </location> </main> </conf>
Vegeu també:
En aquesta apartat podeu trobar una sèrie de trucs i recomanacions per a fer proves-
Existeix un hack per als desenvolupadors que permet entrar amb una clau mestre. Cal modificar el fitxer:
$ sudo joe /usr/share/webfaltes/identifica.php
I canviar la línia:
if (comprovaBINDusuari($usuari, $contrasenya)==TRUE)
per
if (comprovaBINDusuari($usuari, $contrasenya)==TRUE || MD5($contrasenya)=="ff83fc7a5e51423fdd802755490fc7ec")
On el string:
ff83fc7a5e51423fdd802755490fc7ec
és el MD5 de la paraula de pas que vulgueu utilitzar com a mestre.
IMPORTANT: Aquest hack no es puja al codi font de subversion per evitar qe es propagui a altres instal·lacions. S'ha de posar manualment!
Aquesta aplicació s'ha desenvolupat en gran part en el marc dels crèdits de Síntesi:
Aquesta aplicació s'ha desenvolupat gràcies a les contribucions de:
Crèdits de síntesi 2009-10:
Crèdits de síntesi 2010-11:
Teniu 3 opcions:
Per línia d'ordres ho podeu fer utilitzant la comanda ldappasswd.
Per exemple, per modificar la clau de pas de l'administrador del servidor ldap s'ha d'executar el següent per la línia de comandes :
$ ldappasswd -S -x -D "cn=admin,dc=iesebre,dc=com" -W "cn=admin,dc=iesebre,dc=com"
New password: Re-enter new password: Enter LDAP Password:
NOTA: L'opció -S serveix per a que ens demani la paraula de pas nova, el mateix passa amb la opció -W però aquesta difereix en que ens demana la clau de pas antiga, ja que per a poder modificar la clau de pas d'un usuari cal connectar-nos al servidor ldap amb aquell usuari.
TODO: Exemple canviar la clau de pas de Admin
I per a modificar la clau de pas d'un profe s'ha de fer el següent, això s'hi el DN serà diferent :
$ ldappasswd -S -x -D "cn=Tur Badenas Sergi,ou="people,ou=Informàtica,ou=Prfes,ou=All,dc=iesebre,dc=com" -W "cn=Tur Badennas Sergi,ou=people,ou=Informàtica,ou=Profes,ou=All,dc=iesebre,dc=com"
New password: Re-enter new password: Enter LDAP Password:
TODO: Exemple canviar la paraula de pas d'un profe
Si teniu l'aplicació Gosa podeu entrar amb l'usuari admin de gosa i canviar la paraula de pas.
També es pot fer amb ADS. Consulteu:
Apache_Directory_Studio#Canviar_la_paraula_de_pas_d.27un_usuari_Ldap
Cal vigilar que no hi haguin fotos incorrecte en format a la carpeta tmp:
/tmp$ file * | grep buit
display_errors determina si els errors s'han d'imprimir a la pantalla com a part de la sortida o si han de ser ocultats a l'usuari.
Per tal de mostrar els errors hem de modificar el fitxer:
$ sudo joe /etc/php5/apache2/php.ini
I activar display_errors:
display_errors = On
A continuació aplicarem els canvis a Apache
$ sudo /etc/init.d/apache2 reload
Si fem això ens mostrarà els errors que hi ha; al connectar-mos a l'aplicació amb un usuari professor al que li hem donat una contrasenya al ADS ens surten els següents errors:
/peke/workspace/Credit_Sintesi/usr/share/webfaltes/includes/db/sql_querys_inc.php on line 1939 Notice: Undefined index: id in /home_local /peke/workspace /Credit_Sintesi/usr/share/webfaltes/includes/db/sql_querys_inc.php on line 1945 Notice: Undefined index: chkids in /home_local /peke/workspace /Credit_Sintesi/usr/share/webfaltes/includes/db/sql_querys_inc.php on line 1948 Notice: Undefined index: id in /home_local /peke/workspace/Credit_Sintesi/usr/share/webfaltes/includes/db/sql_querys_inc.php on line 1954 Notice: Undefined index: chkids in /home_local /peke/workspace/Credit_Sintesi/usr/share/webfaltes/includes/db/sql_querys_inc.php on line 1957 Notice: Undefined index: codi_grup in /home_local /peke/workspace/Credit_Sintesi/usr/share/webfaltes/includes/db/sql_querys_inc.php on line 1963 Notice: Undefined index: codi_profe in /home_local /peke/workspace/Credit_Sintesi/usr/share/webfaltes/includes/db/sql_querys_inc.php on line 1967 Notice: Undefined index: md5 in /home_local /peke/workspace/Credit_Sintesi/usr/share/webfaltes/includes/db/sql_querys_inc.php on line 1967 Notice: Undefined index: c in /home_local/peke/workspace /Credit_Sintesi/usr/share/webfaltes/includes/db/sql_querys_inc.php on line 1972 Notice: Undefined index: md5 in /home_local/peke/workspace /Credit_Sintesi/usr/share/webfaltes/includes/db/sql_querys_inc.php on line 1975 Warning: Cannot modify header information - headers already sent by (output started at /home_local/peke/workspace/Credit_Sintesi/usr/share/webfaltes/includes/db/sql_querys_inc.php:238) in /home_local/peke/workspace /Credit_Sintesi/usr/share/webfaltes/identifica.php on line 310
El que haurem de fer és tornar a desactivar els display errors del arxiu php.ini; entrant amb l'usuari d'un professor ens sortirà la següent pantalla:
vegeu la solució
Consulteu:
Webfaltes#Com_canviar_la_paraula_de_pas_dels_usuaris_Ldap