query("SELECT tld,mode FROM tld;"); while ($db->next_record()) { list($key,$val)=$db->Record; if (substr($domain,-1-strlen($key))==".".$key) { if ($sizefound2) // OK, in the case 3 4 5 return $found; $n1=false; $n2=false; for ($i=0;$iquery("SELECT tld,mode FROM tld;"); while ($db->next_record()) { list($key,$val)=$db->Record; if (substr($domain,-1-strlen($key))==".".$key) { if ($sizefound2) { return 1; } return 0; } /* Check that $url is a correct url (http:// or https:// or ftp://) */ function checkurl($url) { // TODO : add a path/file check if (substr($url,0,7)!="http://" && substr($url,0,8)!="https://" && substr($url,0,6)!="ftp://") return false; if (substr($url,0,7)=="http://" ) $fq=substr($url,7); if (substr($url,0,8)=="https://") $fq=substr($url,8); if (substr($url,0,6)=="ftp://" ) $fq=substr($url,6); $f=explode("/",$fq); if (!is_array($f)) $f=array($f); $t=checkfqdn($f[0]); if ($t) return false; return true; } /* Check that $ip is a correct 4 Dotted ip */ function checkip($ip) { // return true or false whether the ip is correctly formatted if (!ereg("[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*",$ip)) return false; $l=explode(".",$ip); if ($l[0]>255 || $l[1]>255 || $l[2]>255 || $l[3]>255) return false; return true; } /* Check a login mail */ function checkloginmail($mail) { if (!preg_match("/^[a-zA-Z0-9_\.:\+\-]+$/",$mail)) { return false; } else { return true; } } /* " */ /* Check an email address, use checkloginmail and checkfqdn */ function checkmail($mail) { // Retourne 0 si tout va bien, sinon retourne un code erreur... // 1 s'il n'y a rien devant l'@ // 2 3 ou 4 si le domaine est incorrect. // 5 s'il y a caractères interdits dans la partie gauche du @ // 6 si le mail contient aucun ou plus d'un @ $t=explode("@",$mail); if (count($t)!=2) { return 6; } $c=checkfqdn($t[1]); if ($c) return $c; // Verification de la partie gauche : if (!checkloginmail($t[0])) { if ($t[0]=="") { return 1; } else { return 5; } } return 0; } /* Check that a domain name is fqdn compliant */ function checkfqdn($fqdn) { // (RFC 1035 http://www.ietf.org/rfc/rfc1035.txt) // Retourne 0 si tout va bien, sinon, retourne un code erreur... // 1. Nom de domaine complet trop long. // 2. L'un des membres est trop long. // 3. Caract?re interdit dans l'un des membres. if (strlen($fqdn)>255) return 1; $members=explode(".", $fqdn); if (count($members)>1) { reset($members); while (list ($key, $val) = each ($members)) { if (strlen($val)>63) return 2; if (!eregi("^[a-z0-9][a-z0-9-]*[a-z0-9]$",$val)) { /*"*/ return 3; } } } else { return 4; } return 0; } function checkuserpath($path) { /* return 0 if the path is not in the user's space return 1 if this is a directory return 2 if this is a regular file */ global $mem; $user=$mem->user["login"]; $usar=substr($user,0,1); if (substr($path,0,1)=="/") $path="/".$path; if (is_dir("/var/alternc/html/$usar/$user$path")) { return 1; } if (is_file("/var/alternc/html/$usar/$user$path")) { return 2; } return 0; } function cbox($test) { if ($test) echo (" checked=\"checked\""); } function ecif($test,$tr,$fa="") { if ($test) echo $tr; else echo $fa; } function __($str) { echo _($str); } function ife($test,$tr,$fa="") { if ($test) return $tr; else return $fa; } function format_size($size) { // Retourne une taille formattée en Octets, Kilo-octets, Méga-octets ou Giga-Octets, avec 2 décimales. if ("-" == $size) { return $size; } $size=(float)$size; if ($size<1024) { $r=$size; if ($size!=1) { $r.=" "._("Bytes"); } else { $r.=" "._("Byte"); } } else { $size=$size/1024; if ($size<1024) { $r=round($size,2)." "._("Kb"); } else { $size=$size/1024; if ($size<1024) { $r=round($size,2)." "._("Mb"); } else { $size=$size/1024; if ($size<1024) { $r=round($size,2)." "._("Gb"); } else { $r=round($size/1024,2)." "._("Tb"); } } } } return $r; } function getlinkhelp($hid) { return "(?)"; } function linkhelp($hid) { echo getlinkhelp($hid); } function format_date($format,$date) { $d=substr($date,8,2); $m=substr($date,5,2); $y=substr($date,0,4); $h=substr($date,11,2); $i=substr($date,14,2); if ($h>12) { $hh=$h-12; $am="pm"; } else { $hh=$h; $am="am"; } return sprintf(_($format),$d,$m,$y,$h,$i,$hh,$am); } /* Strip slashes if needed : */ function ssla($str) { if (get_magic_quotes_gpc()) { return stripslashes($str); } else { return $str; } } /* ----------------------------------------------------------------- */ /** Hashe un mot de passe en clair en MD5 avec un salt aléatoire * @param string $pass Mot de passe à crypter (max 32 caractères) * @return string Retourne le mot de passe crypté * @access private */ function _md5cr($pass,$salt="") { if (!$salt) { $chars="./0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; for ($i=0;$i<12;$i++) { $salt.=substr($chars,(mt_rand(0,strlen($chars))),1); } $salt="$1$".$salt; } return crypt($pass,$salt); } /** split mysql database name between username and custom database name * @param string $dbname database name * @return array returns username as first element, custom name as second */ function split_mysql_database_name($dbname) { $db_exploded_name = explode("_",$dbname); return array($db_exploded_name[0], implode("_", array_slice($db_exploded_name, 1))); } /* ----------------------------------------------------------------- */ /** Echappe les caractères pouvant perturber un flux XML standard : * @param string $string Chaine de caractère à encoder en valeur xml. * @return string Retourne la chaîne modifiée si besoin. * @access private */ function xml_entities($string) { return str_replace("<","<",str_replace(">",">",str_replace("&","&",$string))); } /* ----------------------------------------------------------------- */ /** Converti un nombre de mois en une chaine plus lisible * @param number $months Nombre de mois * @return string Chaîne représentant le nombre de mois * @access private */ function pretty_months($months) { if( $months % 12 == 0 && $months > 11) { $years = $months / 12; return "$years " . ($years > 1 ? _("years") : _("year")); } else { return "$months " . ($months > 1 ? _("months") : _("month")); } } /* ----------------------------------------------------------------- */ /** Fabrique un drop-down pour les durées de comptes * @name string $name Nom pour le composasnt * @selected number Option selectionée du composant * @return string Code html pour le drop-down * @access private */ function duration_list($name, $selected=0) { $res = "