diff --git a/README.md b/README.md index b405a6b..28ded8e 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,6 @@ Evolix trademark and logo are not freely reusable and are protected by copyright Vendor files in htdocs/vendor have their own license : -* [Evolibs](http://evolix.com/) : GPLv2+ * [Bootstrap](https://getbootstrap.com/) : MIT * [Jquery](https://jquery.org/) : MIT * [DataTables](https://www.datatables.net/) : MIT diff --git a/htdocs/admin.php b/htdocs/admin.php index 7ef3ab3..94bcf41 100644 --- a/htdocs/admin.php +++ b/htdocs/admin.php @@ -6,8 +6,6 @@ require_once("lib/config.php"); // Force authentication on this page require_once("lib/auth.php"); -require_once("lib/common.php"); - if (empty($_GET['domain'])) { header("location: superadmin.php\n\n"); exit(1); diff --git a/htdocs/alias.php b/htdocs/alias.php index 466590d..e71d23c 100644 --- a/htdocs/alias.php +++ b/htdocs/alias.php @@ -6,8 +6,6 @@ require_once("lib/config.php"); // Force authentication on this page require_once("lib/auth.php"); -require_once('lib/common.php'); - include('inc/haut.php'); include('inc/debut.php'); diff --git a/htdocs/compte.php b/htdocs/compte.php index 387f8b5..7d8c5fe 100644 --- a/htdocs/compte.php +++ b/htdocs/compte.php @@ -6,8 +6,6 @@ require_once("lib/config.php"); // Force authentication on this page require_once("lib/auth.php"); -require_once('lib/common.php'); - include('inc/haut.php'); include('inc/debut.php'); diff --git a/htdocs/domaine.php b/htdocs/domaine.php index 48587d2..27ceaf1 100644 --- a/htdocs/domaine.php +++ b/htdocs/domaine.php @@ -6,8 +6,6 @@ require_once("lib/config.php"); // Force authentication on this page require_once("lib/auth.php"); -require_once("lib/common.php"); - include("inc/haut.php"); include("inc/debut.php"); diff --git a/htdocs/lib/class.ldapdomain.php b/htdocs/lib/class.ldapdomain.php index 47902d2..83cce8c 100644 --- a/htdocs/lib/class.ldapdomain.php +++ b/htdocs/lib/class.ldapdomain.php @@ -71,7 +71,7 @@ class LdapDomain extends LdapServer { public function addAccount($uid,$name,$password,$active=false,$admin=false,$accountactive=false,$courieractive=false,$webmailactive=false,$authsmtpactive=false,$amavisBypassSpamChecks=false) { global $conf; - if (badname($uid)) { + if (!preg_match('/^([a-z0-9][a-z0-9\-\.\_]{0,28}[a-z0-9])$/', $uid)) { throw new Exception("Erreur, $name est un nom invalide."); } $mail = $uid.'@'.$this->getName(); diff --git a/htdocs/lib/common.php b/htdocs/lib/common.php deleted file mode 100644 index 3eb0224..0000000 --- a/htdocs/lib/common.php +++ /dev/null @@ -1,65 +0,0 @@ -" . $msg . "

\n"; -} - -// teste si l'utilisateur est superadmin -function superadmin($login) { - - global $conf; - - foreach ($conf['admin']['logins'] as $admin) { - if ( Html::clean($login) == $admin ) { - return TRUE; - } - } - return FALSE; -} - - -// execution du script shell associe -function evoexec($cmd) { - //exec(SUBIN . " " . SUUSER . " -c " . SUDOBIN . " '$cmd'"); - return exec(SUDOBIN . " " . SUDOSCRIPT . " -p " . SUDOPASS . " $cmd"); -} - - -// retourne le quota d'un utilisateur ou d'un groupe -function getquota($who,$what) { - -global $conf; - - if ( $what == 'user') { - $quota = evoexec("-qu $who"); - } elseif ( $what == 'group') { - if ( $conf['domaines']['driver'] == 'file' ) { - $quota = evoexec("-s"); - } elseif ( $conf['domaines']['driver'] == 'ldap' ) { - $quota = evoexec("-qg $who"); - } - } - - list ($now,$limit) = explode("/",$quota); - $now = $now / 1024; - $limit = $limit / 1024; - $quota = "" . Math::arrondi($now). "M/" .Math::arrondi($limit). "M"; - - return $quota; -} - -// commande shell a lancer pour creer un utilisateur -function unix_add($user,$group=NULL) { - - if ( $group == NULL) { - $group = getgid(); - } - evoexec("-a -u $user -g $group"); -} - -// commande shell a lancer pour creer un domaine -function domain_add($group) { - evoexec("-a -v -g $group"); -} - -// commande shell a lancer pour supprimer un utilisateur -function unix_del($user) { - - evoexec("-d -u $user"); -} - -// renvoie le gidNumber associe a un domaine -function getgid($domain=NULL) { - - global $conf; - - if ( $conf['domaines']['driver'] == 'file' ) { - return $conf['domaines']['file']['gid']; - } elseif ( $conf['domaines']['driver'] == 'ldap' ) { - - $ldapconn = Ldap::lda_connect(LDAP_ADMIN_DN,LDAP_ADMIN_PASS); - $filter="(&(cn=" .$domain. ")(gidnumber=*))"; - $sr=ldap_search($ldapconn, LDAP_BASE, $filter); - $info = ldap_get_entries($ldapconn, $sr); - ldap_unbind($ldapconn); - - if ($info['count']) { - return (int) $info[0]["gidnumber"][0]; - } else { - return -1; - } - - } else { - return -1; - } -} - -// renvoie le 1er uidNumber disponible -function getfreeuid() { - - global $conf; - - $ldapconn = Ldap::lda_connect(LDAP_ADMIN_DN,LDAP_ADMIN_PASS); - $filter="(uidNumber=*)"; - $sr=ldap_search($ldapconn, LDAP_BASE, $filter); - $info = ldap_get_entries($ldapconn, $sr); - ldap_unbind($ldapconn); - - $uids = array(); - - foreach ($info as $entry) { - array_push($uids,$entry['uidnumber'][0]); - } - - sort($uids); - $uid = max(array_pop($uids)+1,$conf['unix']['minuid']); - - return (int) $uid; -} - -// renvoie le 1er uidNumber disponible -function getfreegid() { - - global $conf; - - $ldapconn = Ldap::lda_connect(LDAP_ADMIN_DN,LDAP_ADMIN_PASS); - $filter="(gidNumber=*)"; - $sr=ldap_search($ldapconn, LDAP_BASE, $filter); - $info = ldap_get_entries($ldapconn, $sr); - ldap_unbind($ldapconn); - - $gids = array(); - - foreach ($info as $entry) { - array_push($gids,$entry['gidnumber'][0]); - } - - sort($gids); - $gid = max(array_pop($gids)+1,$conf['unix']['mingid']); - - return (int) $gid; -} - - -// get number of account or aliases for a domain -function getnumber($domain,$type) { - - global $conf; - - $ldapconn = Ldap::lda_connect(LDAP_ADMIN_DN,LDAP_ADMIN_PASS); - if ( $type == 'compte' ) { - $filter="(&(objectClass=posixAccount)(!(uid=*$)))"; - - } elseif ( $type == 'mail' ) { - $filter="(objectClass=mailAccount)"; - - } elseif ( $type == 'alias' ) { - $filter="(objectClass=mailAlias)"; - - // compatibilite anciens schemas - if ($conf['evoadmin']['version'] == 1) { - $filter="(&(objectClass=mailAlias)(onlyAlias=TRUE))"; - } - - } elseif ( $type == 'smb' ) { - $filter="(objectClass=sambaSamAccount)"; - } - - if (! $conf['domaines']['onlyone']) { - - // compatibilite anciens schemas - if ($conf['evoadmin']['version'] <= 2) { - $rdn= "domain=" .$domain. "," .LDAP_BASE; - } else { - $rdn= "cn=" .$domain. "," .LDAP_BASE; - } - - } else { - //$rdn= "ou=people," .LDAP_BASE; - $rdn= LDAP_BASE; - } - - $sr=ldap_search($ldapconn, $rdn, $filter); - $info = ldap_get_entries($ldapconn, $sr); - ldap_unbind($ldapconn); - - return $info['count']; -} - -function getsambagroups($type) { - - global $conf; - - // Si la liste des groupes est defini dans la config on l'utilise - - if($type == "unix" && isset($conf['samba']['unixgroups'])) { - return $conf['samba']['unixgroups']; - } - - if($type == "smb" && isset($conf['samba']['smbgroups'])) { - return $conf['samba']['smbgroups']; - } - - // sinon on interroge LDAP - - $ldapconn = Ldap::lda_connect(LDAP_ADMIN_DN,LDAP_ADMIN_PASS); - $filter = "(objectClass=sambaGroupMapping)"; - $rdn = LDAP_BASE; - $sr=ldap_search($ldapconn, $rdn, $filter); - $info = ldap_get_entries($ldapconn, $sr); - ldap_unbind($ldapconn); - - $ret = array(); - for($i=0; $i<$info['count']; $i++) { - - $entry = $info[$i]; - $cn = $entry['cn'][0]; - - if($type == "unix") { - $ret[$cn] = $entry['gidnumber'][0]; - } elseif($type == "smb") { - $tmp = explode('-', $entry['sambasid'][0]); - $ret[$cn] = "-".array_pop($tmp); - } - } - - return $ret; -} - -/** - * Verifie qu'un login est incorrect - * entre 2 et 30 caracteres - * en lettres minuscule, chiffres, '-', '.' ou '_' - * pour le premier et dernier caracteres : seuls lettres et minuscules - * et chiffres sont possibles - */ -function badname($login) -{ - return (!preg_match('/^([a-z0-9][a-z0-9\-\.\_]{0,28}[a-z0-9])$/',$login)); -} - -/** - * Ajouter la composante @domaine - */ -function adddomain(&$item,$key) -{ - if (preg_match('/@/',$item)) { - print "

Ne pas inclure de @ dans les mails acceptes !

"; - exit(1); - } - - if (!empty($item)) { - $item = "$item". "@".$_SESSION['domain']; - } -} - -// renvoie la date d'expiration d'un compte -function get_expiration_date($name) { - $ldapconn = Ldap::lda_connect(LDAP_ADMIN_DN,LDAP_ADMIN_PASS); - $filter="(&(uid=" .$name. "))"; - $sr=ldap_search($ldapconn, LDAP_BASE, $filter); - $info = ldap_get_entries($ldapconn, $sr); - ldap_unbind($ldapconn); - $val = $info[0]["sambakickofftime"][0]; - if($val > 0) { - return date('d/m/Y', $val); - } else { - return ''; - } -} - -// change la date d'expiration d'un compte -function set_expiration_date($name, $date) { - $ldapconn = Ldap::lda_connect(LDAP_ADMIN_DN,LDAP_ADMIN_PASS); - list($day, $month, $year) = explode('/', $date); - $timestamp = mktime(0, 0, 0, $month, $day, $year); - $val = array('sambakickofftime' => $timestamp); - if(!ldap_modify($ldapconn, "uid=$name,ou=people,".LDAP_BASE, $val)) { - die('Echec de la modification de la date d\'expiration'); - } - ldap_unbind($ldapconn); -} - -function account_is_locked($name) { - $ldapconn = Ldap::lda_connect(LDAP_ADMIN_DN,LDAP_ADMIN_PASS); - $filter="(&(uid=" .$name. "))"; - $sr=ldap_search($ldapconn, LDAP_BASE, $filter); - $info = ldap_get_entries($ldapconn, $sr); - ldap_unbind($ldapconn); - $val = $info[0]["sambaacctflags"][0]; - if(strpos($val, 'L')) { - return true; - } else { - return false; - } -} - -function account_lock($name, $lock_state) { - $ldapconn = Ldap::lda_connect(LDAP_ADMIN_DN,LDAP_ADMIN_PASS); - $filter="(&(uid=" .$name. "))"; - $sr=ldap_search($ldapconn, LDAP_BASE, $filter); - $info = ldap_get_entries($ldapconn, $sr); - $val = $info[0]["sambaacctflags"][0]; - if($lock_state == true) { - if(!strpos($val, 'L')) { - // ajouter le L - $newval = substr_replace($val, 'L', 2, 0); - } - } else { - if(strpos($val, 'L')) { - // virer le L - $newval = str_replace('L', '', $val); - } - } - if($newval) { - //print "$val -> $newval"; - $info = array('sambaacctflags' => $newval); - if(!ldap_modify($ldapconn, "uid=$name,ou=people,".LDAP_BASE, $info)) { - die('Echec de la modification du verrouillage'); - } - } - ldap_unbind($ldapconn); -} diff --git a/htdocs/vendor/evolibs/Auth.php b/htdocs/vendor/evolibs/Auth.php deleted file mode 100644 index b95ff02..0000000 --- a/htdocs/vendor/evolibs/Auth.php +++ /dev/null @@ -1,56 +0,0 @@ - 42) || - (strlen($pass) < 5) || - (!preg_match('/^([[:graph:]]*)$/',$pass)) ); - - } - - /** - * verifie qu'un FQDN semble correct - */ - - function badfqdn($domain) - { - return (!preg_match('/^([[:alnum:]\.\-]{2,70}.[[:alpha:]]{2,5})$/',$domain)); - } - -} - - -?> diff --git a/htdocs/vendor/evolibs/EvoLog.php b/htdocs/vendor/evolibs/EvoLog.php deleted file mode 100644 index d82d62a..0000000 --- a/htdocs/vendor/evolibs/EvoLog.php +++ /dev/null @@ -1,56 +0,0 @@ -log($message, $priority); - } - - function debug() - { - if (DEBUG > 2) - { - echo "

SESSION DEBUG :
"; - print_r($_SESSION); - echo "
"; - echo 'session_name() : ' . session_name() . "
\n" ; - echo 'session_id() : ' . session_id() . "
\n" ; - echo 'session_cache_expire() : ' . session_cache_expire() . "
\n" ; - echo 'session_cache_limiter() : ' . session_cache_limiter() . "
\n" ; - echo 'session_get_cookie_params() : '; - print_r(array_values(session_get_cookie_params())); - echo "
\n"; - echo 'session_module_name() : ' . session_module_name() . "
\n" ; - echo 'session_save_path() : ' . session_save_path() . "
\n" ; - - echo "

POST DEBUG :
"; - print_r($_POST); - echo "

GET DEBUG :
"; - print_r($_GET); - echo "

"; - - } - - } - -} - -?> diff --git a/htdocs/vendor/evolibs/Html.php b/htdocs/vendor/evolibs/Html.php deleted file mode 100644 index 956090a..0000000 --- a/htdocs/vendor/evolibs/Html.php +++ /dev/null @@ -1,101 +0,0 @@ -\\1',$texte); - return addslashes($texte); - } - - /** - * Nettoie une requete SQL - * Ajoute des antislashes devant : guillements simples, doubles, antislashes - * caractere NULL - * Cette fonction n'agit que si la directive magic_quotes_gpc est sur Off - */ - - function sqlclean($texte) - { - return (get_magic_quotes_gpc()) ? $texte : addslashes($texte); - } - - - function purgeaccents($texte) - { - - // liste des caracteres accentuees - $couple["é"] = "e"; $couple["è"] = "e"; $couple["ê"] = "e"; $couple["ë"] = "e"; - $couple["È"] = "e"; $couple["É"] = "e"; $couple["Ê"] = "e"; $couple["Ë"] = "e"; - $couple["à"] = "a"; $couple["ä"] = "a"; $couple["â"] = "a"; $couple["å"] = "a"; - $couple["á"] = "a"; $couple["ã"] = "a"; $couple["æ"] = "a"; - $couple["À"] = "a"; $couple["Á"] = "a"; $couple["Â"] = "a"; $couple["Ã"] = "a"; - $couple["Ä"] = "a"; $couple["Å"] = "a"; $couple["Æ"] = "a"; - $couple["ù"] = "u"; $couple["ü"] = "u"; $couple["û"] = "u"; $couple["ú"] = "u"; - $couple["ô"] = "o"; $couple["ö"] = "o"; $couple["ò"] = "o"; $couple["ó"] = "o"; $couple["õ"] = "o"; - $couple["î"] = "i"; $couple["ï"] = "i"; $couple["ì"] = "i"; $couple["í"] = "i"; - $couple["ç"] = "c"; $couple["Ç"] = "c"; - $couple["ÿ"] = "y"; $couple["ý"] = "y"; $couple["ñ"] = "n"; - - while(list($car,$val) = each($couple)) - { - $texte = preg_replace("/".$car."/",$val,$texte); - } - - return $texte; - - } - - /** - * renvoie un entier - */ - - function toint($var) - { - return number_format($var, 0, '', ''); - } -} -?> diff --git a/htdocs/vendor/evolibs/Ldap.php b/htdocs/vendor/evolibs/Ldap.php deleted file mode 100644 index 0f23cd2..0000000 --- a/htdocs/vendor/evolibs/Ldap.php +++ /dev/null @@ -1,189 +0,0 @@ - http://gcolpart.evolix.net/debian/php-crypt-chap/ - // inspire de lib/Driver/smbldap.php (Horde Password) - function sambalm($pass) { - $hash = new Crypt_CHAP_MSv2(); - $hash->password = $pass; - return strtoupper(bin2hex($hash->lmPasswordHash())); - } - - // necessite Crypt/CHAP -> http://gcolpart.evolix.net/debian/php-crypt-chap/ - // inspire de lib/Driver/smbldap.php (Horde Password) - function sambant($pass) { - $hash = new Crypt_CHAP_MSv2(); - $hash->password = $pass; - return strtoupper(bin2hex($hash->ntPasswordHash())); - } - -} - -?> diff --git a/htdocs/vendor/evolibs/Math.php b/htdocs/vendor/evolibs/Math.php deleted file mode 100644 index 18e4f53..0000000 --- a/htdocs/vendor/evolibs/Math.php +++ /dev/null @@ -1,38 +0,0 @@ -