[fix] tabulations on m_dom.php

This commit is contained in:
alban 2014-03-27 19:03:59 +01:00
parent 1ad994af8d
commit 6fc53c040d
1 changed files with 2070 additions and 2003 deletions

View File

@ -1,4 +1,5 @@
<?php <?php
/* /*
---------------------------------------------------------------------- ----------------------------------------------------------------------
AlternC - Web Hosting System AlternC - Web Hosting System
@ -26,10 +27,10 @@
define('SLAVE_FLAG', "/var/run/alternc/refresh_slave"); define('SLAVE_FLAG', "/var/run/alternc/refresh_slave");
/** /**
* Classe de gestion des domaines de l'hébergé. * Classe de gestion des domaines de l'h<EFBFBD>berg<EFBFBD>.
* *
* Cette classe permet de gérer les domaines / sous-domaines, redirections * Cette classe permet de g<EFBFBD>rer les domaines / sous-domaines, redirections
* dns et mx des domaines d'un membre hébergé.<br /> * dns et mx des domaines d'un membre h<EFBFBD>berg<EFBFBD>.<br />
*/ */
class m_dom { class m_dom {
@ -38,18 +39,18 @@ class m_dom {
*/ */
var $domains; var $domains;
/** $dns : Liste des dns trouvés par la fonction whois /** $dns : Liste des dns trouv<EFBFBD>s par la fonction whois
* @access private * @access private
*/ */
var $dns; var $dns;
/** Flag : a-t-on trouvé un sous-domaine Webmail pour ce domaine ? /** Flag : a-t-on trouv<EFBFBD> un sous-domaine Webmail pour ce domaine ?
* @access private * @access private
*/ */
var $webmail; var $webmail;
/** /**
* Système de verrouillage du cron * Syst<EFBFBD>me de verrouillage du cron
* Ce fichier permet de verrouiller le cron en attendant la validation * Ce fichier permet de verrouiller le cron en attendant la validation
* du domaine par update_domains.sh * du domaine par update_domains.sh
* @access private * @access private
@ -57,13 +58,12 @@ class m_dom {
var $fic_lock_cron = "/var/run/alternc/cron.lock"; var $fic_lock_cron = "/var/run/alternc/cron.lock";
/** /**
* Le cron a-t-il été bloqué ? * Le cron a-t-il <EFBFBD>t<EFBFBD> bloqu<EFBFBD> ?
* Il faut appeler les fonctions privées lock et unlock entre les * Il faut appeler les fonctions priv<EFBFBD>es lock et unlock entre les
* appels aux domaines. * appels aux domaines.
* @access private * @access private
*/ */
var $islocked = false; var $islocked = false;
var $type_local = "VHOST"; var $type_local = "VHOST";
var $type_url = "URL"; var $type_url = "URL";
var $type_ip = "IP"; var $type_ip = "IP";
@ -73,15 +73,14 @@ class m_dom {
var $type_txt = "TXT"; var $type_txt = "TXT";
var $type_defmx = "DEFMX"; var $type_defmx = "DEFMX";
var $type_defmx2 = "DEFMX2"; var $type_defmx2 = "DEFMX2";
var $action_insert = "0"; var $action_insert = "0";
var $action_update = "1"; var $action_update = "1";
var $action_delete = "2"; var $action_delete = "2";
var $tld_no_check_at_all = "1"; var $tld_no_check_at_all = "1";
var $cache_domains_type_lst = false; var $cache_domains_type_lst = false;
/* ----------------------------------------------------------------- */ /* ----------------------------------------------------------------- */
/** /**
* Constructeur * Constructeur
*/ */
@ -106,7 +105,8 @@ class m_dom {
$err->log("dom", "get_sub_domain_by_name"); $err->log("dom", "get_sub_domain_by_name");
$fqdn = mysql_real_escape_string($fqdn); $fqdn = mysql_real_escape_string($fqdn);
$db->query("select sd.* from sub_domaines sd where if(length(sd.sub)>0,concat_ws('.',sd.sub,sd.domaine),sd.domaine) = '$fqdn';"); $db->query("select sd.* from sub_domaines sd where if(length(sd.sub)>0,concat_ws('.',sd.sub,sd.domaine),sd.domaine) = '$fqdn';");
if (! $db->next_record()) return false; if (!$db->next_record())
return false;
return array('sub_id' => intval($db->f('id')), 'member_id' => intval($db->f('compte'))); return array('sub_id' => intval($db->f('id')), 'member_id' => intval($db->f('compte')));
} }
@ -140,14 +140,13 @@ class m_dom {
return $obj; return $obj;
} }
/* ----------------------------------------------------------------- */ /* ----------------------------------------------------------------- */
/** /**
* Retourne un tableau contenant les types de domaines * Retourne un tableau contenant les types de domaines
* *
* @return array retourne un tableau indexé contenant la liste types de domaines * @return array retourne un tableau index<EFBFBD> contenant la liste types de domaines
* authorisé. Retourne FALSE si une erreur s'est produite. * authoris<EFBFBD>. Retourne FALSE si une erreur s'est produite.
*/ */
function domains_type_lst() { function domains_type_lst() {
global $db, $err; global $db, $err;
@ -170,7 +169,9 @@ class m_dom {
while ($db->next_record()) { while ($db->next_record()) {
if ($db->f('Field') == 'enable') { if ($db->f('Field') == 'enable') {
$tab = explode(",", substr($db->f('Type'), 5, -1)); $tab = explode(",", substr($db->f('Type'), 5, -1));
foreach($tab as $t) { $r[]=substr($t,1,-1); } foreach ($tab as $t) {
$r[] = substr($t, 1, -1);
}
} }
} }
return $r; return $r;
@ -185,13 +186,16 @@ class m_dom {
while ($db->next_record()) { while ($db->next_record()) {
if ($db->f('Field') == 'target') { if ($db->f('Field') == 'target') {
$tab = explode(",", substr($db->f('Type'), 5, -1)); $tab = explode(",", substr($db->f('Type'), 5, -1));
foreach($tab as $t) { $r[]=substr($t,1,-1); } foreach ($tab as $t) {
$r[] = substr($t, 1, -1);
}
} }
} }
return $r; return $r;
} else { } else {
$db->query("select target from domaines_type where name='$type';"); $db->query("select target from domaines_type where name='$type';");
if (! $db->next_record()) return false; if (!$db->next_record())
return false;
return $db->f('target'); return $db->f('target');
} }
} }
@ -208,7 +212,8 @@ class m_dom {
$val = array(); $val = array();
foreach (explode("\n", $zone) as $z) { foreach (explode("\n", $zone) as $z) {
$z = trim($z); $z = trim($z);
if (empty($z)) continue; if (empty($z))
continue;
$val[] = $this->import_manual_dns_entry($z, $domain, $detect_redirect, $save); $val[] = $this->import_manual_dns_entry($z, $domain, $detect_redirect, $save);
} }
return $val; return $val;
@ -218,7 +223,8 @@ class m_dom {
global $cuid, $err; global $cuid, $err;
$err->log("dom", "import_manual_dns_entry"); $err->log("dom", "import_manual_dns_entry");
$zone = trim($zone); $zone = trim($zone);
if (empty($zone)) return false; if (empty($zone))
return false;
$domain = trim($domain); $domain = trim($domain);
if (empty($domain)) { if (empty($domain)) {
@ -400,7 +406,8 @@ class m_dom {
$val = $entry['entry_new']; $val = $entry['entry_new'];
if (empty($val['type'])) return false; if (empty($val['type']))
return false;
switch ($val['type']) { switch ($val['type']) {
case "set_ttl": case "set_ttl":
@ -417,7 +424,8 @@ class m_dom {
} }
// If the subdomain is @, we want an empty subdomain // If the subdomain is @, we want an empty subdomain
if ($val['sub'] == '@') $val['sub'] = ''; if ($val['sub'] == '@')
$val['sub'] = '';
$this->lock(); $this->lock();
$entry['did_it'] = $this->set_sub_domain($val['domain'], $val['sub'], $val['type'], $val['value']); $entry['did_it'] = $this->set_sub_domain($val['domain'], $val['sub'], $val['type'], $val['value']);
@ -526,9 +534,17 @@ class m_dom {
$err->raise("dom", _("The name MUST contain only letter and digits")); $err->raise("dom", _("The name MUST contain only letter and digits"));
return false; return false;
} }
$name=mysql_real_escape_string($name); $description=mysql_real_escape_string($description); $target=mysql_real_escape_string($target); $name = mysql_real_escape_string($name);
$entry=mysql_real_escape_string($entry); $compatibility=mysql_real_escape_string($compatibility); $enable=mysql_real_escape_string($enable); $description = mysql_real_escape_string($description);
$only_dns=intval($only_dns); $need_dns=intval($need_dns); $advanced=intval($advanced); $create_tmpdir=intval($create_tmpdir); $create_targetdir=intval($create_targetdir); $target = mysql_real_escape_string($target);
$entry = mysql_real_escape_string($entry);
$compatibility = mysql_real_escape_string($compatibility);
$enable = mysql_real_escape_string($enable);
$only_dns = intval($only_dns);
$need_dns = intval($need_dns);
$advanced = intval($advanced);
$create_tmpdir = intval($create_tmpdir);
$create_targetdir = intval($create_targetdir);
$db->query("UPDATE domaines_type SET description='$description', target='$target', entry='$entry', compatibility='$compatibility', enable='$enable', need_dns=$need_dns, only_dns=$only_dns, advanced='$advanced',create_tmpdir=$create_tmpdir,create_targetdir=$create_targetdir where name='$name';"); $db->query("UPDATE domaines_type SET description='$description', target='$target', entry='$entry', compatibility='$compatibility', enable='$enable', need_dns=$need_dns, only_dns=$only_dns, advanced='$advanced',create_tmpdir=$create_tmpdir,create_targetdir=$create_targetdir where name='$name';");
return true; return true;
} }
@ -538,7 +554,8 @@ class m_dom {
$err->log("dom", "sub_domain_change_status"); $err->log("dom", "sub_domain_change_status");
$sub_id = intval($sub_id); $sub_id = intval($sub_id);
$status = strtoupper($status); $status = strtoupper($status);
if (! in_array($status,array('ENABLE', 'DISABLE'))) return false; if (!in_array($status, array('ENABLE', 'DISABLE')))
return false;
$jh = $this->get_sub_domain_all($sub_id); $jh = $this->get_sub_domain_all($sub_id);
if ($status == 'ENABLE') { // check compatibility with existing sub_domains if ($status == 'ENABLE') { // check compatibility with existing sub_domains
@ -555,18 +572,21 @@ class m_dom {
} }
/* ----------------------------------------------------------------- */ /* ----------------------------------------------------------------- */
/** /**
* Retourne un tableau contenant les domaines d'un membre. * Retourne un tableau contenant les domaines d'un membre.
* Par défaut le membre connecté * Par d<EFBFBD>faut le membre connect<EFBFBD>
* *
* @return array retourne un tableau indexé contenant la liste des * @return array retourne un tableau index<EFBFBD> contenant la liste des
* domaines hébergés sur le compte courant. Retourne FALSE si une * domaines h<EFBFBD>berg<EFBFBD>s sur le compte courant. Retourne FALSE si une
* erreur s'est produite. * erreur s'est produite.
*/ */
function enum_domains($uid = -1) { function enum_domains($uid = -1) {
global $db, $err, $cuid; global $db, $err, $cuid;
$err->log("dom", "enum_domains"); $err->log("dom", "enum_domains");
if ($uid == -1) { $uid = $cuid; } if ($uid == -1) {
$uid = $cuid;
}
$db->query("SELECT * FROM domaines WHERE compte='{$uid}' ORDER BY domaine ASC;"); $db->query("SELECT * FROM domaines WHERE compte='{$uid}' ORDER BY domaine ASC;");
$this->domains = array(); $this->domains = array();
if ($db->num_rows() > 0) { if ($db->num_rows() > 0) {
@ -590,15 +610,16 @@ class m_dom {
} }
/* ----------------------------------------------------------------- */ /* ----------------------------------------------------------------- */
/** /**
* Efface un domaine du membre courant, et tous ses sous-domaines * Efface un domaine du membre courant, et tous ses sous-domaines
* *
* Cette fonction efface un domaine et tous ses sous-domaines, ainsi que * Cette fonction efface un domaine et tous ses sous-domaines, ainsi que
* les autres services attachés à celui-ci. Elle appelle donc les autres * les autres services attach<EFBFBD>s <EFBFBD> celui-ci. Elle appelle donc les autres
* classe. Chaque classe peut déclarer une fonction del_dom qui sera * classe. Chaque classe peut d<EFBFBD>clarer une fonction del_dom qui sera
* appellée lors de la destruction d'un domaine. * appell<EFBFBD>e lors de la destruction d'un domaine.
* *
* @param string $dom nom de domaine à effacer * @param string $dom nom de domaine <EFBFBD> effacer
* @return boolean Retourne FALSE si une erreur s'est produite, TRUE sinon. * @return boolean Retourne FALSE si une erreur s'est produite, TRUE sinon.
*/ */
function del_domain($dom) { function del_domain($dom) {
@ -632,24 +653,25 @@ class m_dom {
} }
/* ----------------------------------------------------------------- */ /* ----------------------------------------------------------------- */
/** /**
* Installe un domaine sur le compte courant. * Installe un domaine sur le compte courant.
* *
* <p>Si le domaine existe déjà ou est interdit, ou est celui du serveur, * <p>Si le domaine existe d<EFBFBD>j<EFBFBD> ou est interdit, ou est celui du serveur,
* l'installation est refusée. Si l'hébergement DNS est demandé, la fonction * l'installation est refus<75>e. Si l'h<EFBFBD>bergement DNS est demand<EFBFBD>, la fonction
* checkhostallow vérifiera que le domaine peut être installé conformément * checkhostallow v<EFBFBD>rifiera que le domaine peut <EFBFBD>tre install<EFBFBD> conform<EFBFBD>ment
* aux demandes des super-admin. * aux demandes des super-admin.
* Si le dns n'est pas demandé, le domaine peut être installé s'il est en * Si le dns n'est pas demand<EFBFBD>, le domaine peut <20>tre install<6C> s'il est en
* seconde main d'un tld (exemple : test.eu.org ou test.com, mais pas * seconde main d'un tld (exemple : test.eu.org ou test.com, mais pas
* toto.test.org ou test.test.asso.fr)</p> * toto.test.org ou test.test.asso.fr)</p>
* <p>Chaque classe peut définir une fonction add_dom($dom) qui sera * <p>Chaque classe peut d<EFBFBD>finir une fonction add_dom($dom) qui sera
* appellée lors de l'installation d'un nouveau domaine.</p> * appell<EFBFBD>e lors de l'installation d'un nouveau domaine.</p>
* *
* @param string $dom nom fqdn du domaine à installer * @param string $dom nom fqdn du domaine <EFBFBD> installer
* @param boolean $dns 1 ou 0 pour héberger le DNS du domaine ou pas. * @param boolean $dns 1 ou 0 pour h<EFBFBD>berger le DNS du domaine ou pas.
* @param boolean $noerase 1 ou 0 pour rendre le domaine inamovible ou non * @param boolean $noerase 1 ou 0 pour rendre le domaine inamovible ou non
* @param boolean $force 1 ou 0, si 1, n'effectue pas les tests de DNS. * @param boolean $force 1 ou 0, si 1, n'effectue pas les tests de DNS.
* force ne devrait être utilisé que par le super-admin. * force ne devrait <EFBFBD>tre utilis<EFBFBD> que par le super-admin.
$ @return boolean Retourne FALSE si une erreur s'est produite, TRUE sinon. $ @return boolean Retourne FALSE si une erreur s'est produite, TRUE sinon.
*/ */
function add_domain($domain, $dns, $noerase = false, $force = false, $isslave = false, $slavedom = "") { function add_domain($domain, $dns, $noerase = false, $force = false, $isslave = false, $slavedom = "") {
@ -668,7 +690,7 @@ class m_dom {
$err->raise("dom", _("The domain name is syntaxically incorrect")); $err->raise("dom", _("The domain name is syntaxically incorrect"));
return false; return false;
} }
// Interdit les domaines clés (table forbidden_domains) sauf en cas FORCE // Interdit les domaines cl<63>s (table forbidden_domains) sauf en cas FORCE
$db->query("SELECT domain FROM forbidden_domains WHERE domain='$domain'"); $db->query("SELECT domain FROM forbidden_domains WHERE domain='$domain'");
if ($db->num_rows() && !$force) { if ($db->num_rows() && !$force) {
$err->raise("dom", _("The requested domain is forbidden in this server, please contact the administrator")); $err->raise("dom", _("The requested domain is forbidden in this server, please contact the administrator"));
@ -704,10 +726,14 @@ class m_dom {
return false; return false;
} }
if ($dns) $dns="1"; else $dns="0"; if ($dns)
$dns = "1";
else
$dns = "0";
// mode 5 : force DNS to NO. // mode 5 : force DNS to NO.
if ($tld[$v]==5) $dns=0; if ($tld[$v] == 5)
$dns = 0;
// It must be a real domain (no subdomain) // It must be a real domain (no subdomain)
if (!$dns) { if (!$dns) {
$v = checkhostallow_nodns($domain); $v = checkhostallow_nodns($domain);
@ -722,8 +748,14 @@ class m_dom {
$err->raise("dom", _("Your domain quota is over, you cannot create more domain names")); $err->raise("dom", _("Your domain quota is over, you cannot create more domain names"));
return false; return false;
} }
if ($noerase) $noerase="1"; else $noerase="0"; if ($noerase)
if ($dns) $gesmx="1"; else $gesmx="0"; // do not host mx by default if not hosting the DNS $noerase = "1";
else
$noerase = "0";
if ($dns)
$gesmx = "1";
else
$gesmx = "0"; // do not host mx by default if not hosting the DNS
$db->query("INSERT INTO domaines (compte,domaine,gesdns,gesmx,noerase,dns_action) VALUES ('$cuid','$domain','$dns','$gesmx','$noerase','UPDATE');"); $db->query("INSERT INTO domaines (compte,domaine,gesdns,gesmx,noerase,dns_action) VALUES ('$cuid','$domain','$dns','$gesmx','$noerase','UPDATE');");
if (!($id = $db->lastid())) { if (!($id = $db->lastid())) {
$err->raise("dom", _("An unexpected error occured when creating the domain")); $err->raise("dom", _("An unexpected error occured when creating the domain"));
@ -752,7 +784,8 @@ class m_dom {
} }
// New Hooks: // New Hooks:
$hooks->invoke("hook_dom_add_domain", array($id)); $hooks->invoke("hook_dom_add_domain", array($id));
if ($gesmx) $hooks->invoke("hook_dom_add_mx_domain",array($id)); if ($gesmx)
$hooks->invoke("hook_dom_add_mx_domain", array($id));
if ($isslave) { if ($isslave) {
$hooks->invoke("hook_dom_add_slave_domain", array($id, $slavedom)); $hooks->invoke("hook_dom_add_slave_domain", array($id, $slavedom));
} }
@ -792,7 +825,6 @@ class m_dom {
return $axfr; return $axfr;
} }
function lst_default_subdomains() { function lst_default_subdomains() {
global $db, $err; global $db, $err;
$err->log("dom", "lst_default_subdomains"); $err->log("dom", "lst_default_subdomains");
@ -812,16 +844,17 @@ class m_dom {
return $c; return $c;
} }
function update_default_subdomains($arr) { function update_default_subdomains($arr) {
global $err; global $err;
$err->log("dom", "update_default_subdomains"); $err->log("dom", "update_default_subdomains");
$ok = true; $ok = true;
foreach ($arr as $a) { foreach ($arr as $a) {
if (! isset($a['id'])) $a['id']=null; if (!isset($a['id']))
$a['id'] = null;
if (!empty($a['sub']) || !empty($a['domain_type_parameter'])) { if (!empty($a['sub']) || !empty($a['domain_type_parameter'])) {
if (! isset($a['enabled'])) $a['enabled']=0; if (!isset($a['enabled']))
$a['enabled'] = 0;
if (!$this->update_one_default($a['domain_type'], $a['sub'], $a['domain_type_parameter'], $a['concerned'], $a['enabled'], $a['id'])) { if (!$this->update_one_default($a['domain_type'], $a['sub'], $a['domain_type_parameter'], $a['concerned'], $a['enabled'], $a['id'])) {
$ok = false; $ok = false;
} }
@ -840,8 +873,6 @@ class m_dom {
$db->query("UPDATE default_subdomains set sub='" . addslashes($sub) . "', domain_type='" . addslashes($domain_type) . "',domain_type_parameter='" . addslashes($domain_type_parameter) . "',concerned='" . addslashes($concerned) . "',enabled='" . addslashes($enabled) . "' where id=" . addslashes($id) . ";"); $db->query("UPDATE default_subdomains set sub='" . addslashes($sub) . "', domain_type='" . addslashes($domain_type) . "',domain_type_parameter='" . addslashes($domain_type_parameter) . "',concerned='" . addslashes($concerned) . "',enabled='" . addslashes($enabled) . "' where id=" . addslashes($id) . ";");
return true; return true;
//update //update
} }
function del_default_type($id) { function del_default_type($id) {
@ -854,23 +885,22 @@ class m_dom {
} }
return true; return true;
} }
/* ----------------------------------------------------------------- */ /* ----------------------------------------------------------------- */
/** /**
* Retourne les entrées DNS du domaine $domain issues du WHOIS. * Retourne les entr<EFBFBD>es DNS du domaine $domain issues du WHOIS.
* *
* Cette fonction effectue un appel WHOIS($domain) sur Internet, * Cette fonction effectue un appel WHOIS($domain) sur Internet,
* et extrait du whois les serveurs DNS du domaine demandé. En fonction * et extrait du whois les serveurs DNS du domaine demand<EFBFBD>. En fonction
* du TLD, on sait (ou pas) faire le whois correspondant. * du TLD, on sait (ou pas) faire le whois correspondant.
* Actuellement, les tld suivants sont supportés : * Actuellement, les tld suivants sont support<EFBFBD>s :
* .com .net .org .be .info .ca .cx .fr .biz .name * .com .net .org .be .info .ca .cx .fr .biz .name
* *
* @param string $domain Domaine fqdn dont on souhaite les serveurs DNS * @param string $domain Domaine fqdn dont on souhaite les serveurs DNS
* @return array Retourne un tableau indexé avec les NOMS fqdn des dns * @return array Retourne un tableau index<EFBFBD> avec les NOMS fqdn des dns
* du domaine demandé. Retourne FALSE si une erreur s'est produite. * du domaine demand<EFBFBD>. Retourne FALSE si une erreur s'est produite.
* *
*/ */
function whois($domain) { function whois($domain) {
@ -890,7 +920,9 @@ class m_dom {
$state = 0; $state = 0;
while (!feof($fp)) { while (!feof($fp)) {
$ligne = fgets($fp, 128); $ligne = fgets($fp, 128);
if (preg_match('#^whois:#', $ligne)) { $serveur=preg_replace('/whois:\ */','',$ligne,1); } if (preg_match('#^whois:#', $ligne)) {
$serveur = preg_replace('/whois:\ */', '', $ligne, 1);
}
} }
} }
$serveur = str_replace(array(" ", "\n"), "", $serveur); $serveur = str_replace(array(" ", "\n"), "", $serveur);
@ -1011,13 +1043,16 @@ class m_dom {
$err->raise("dom", _("The domain cannot be found in the Whois database")); $err->raise("dom", _("The domain cannot be found in the Whois database"));
return false; return false;
} }
} // whois }
// whois
/* ----------------------------------------------------------------- */ /* ----------------------------------------------------------------- */
/** /**
* rifie la presence d'un champs mx valide sur un serveur DNS * v<EFBFBD>rifie la presence d'un champs mx valide sur un serveur DNS
* $domaine est le domaine dont on veux véririfer les MX * $domaine est le domaine dont on veux v<EFBFBD>ririfer les MX
* $ref_domaine est le domaine avec lequel on veux comparer les MX * $ref_domaine est le domaine avec lequel on veux comparer les MX
* si $ref_domaine == false, on prend les MX par default * si $ref_domaine == false, on prend les MX par default
* *
@ -1036,9 +1071,9 @@ class m_dom {
return 3; return 3;
} }
//récupére les champs mx //r<>cup<75>re les champs mx
if (!getmxrr($domaine, $mxhosts)) { if (!getmxrr($domaine, $mxhosts)) {
//aucun hôte mx spécifié //aucun h<>te mx sp<73>cifi<66>
return 1; return 1;
} }
@ -1055,10 +1090,13 @@ class m_dom {
} }
return 0; return 0;
} //checkmx }
//checkmx
/* ----------------------------------------------------------------- */ /* ----------------------------------------------------------------- */
/** /**
* retourne TOUTES les infos d'un domaine * retourne TOUTES les infos d'un domaine
* *
@ -1130,16 +1168,19 @@ class m_dom {
} }
$db->free(); $db->free();
return $r; return $r;
} // get_domain_all }
// get_domain_all
/* ----------------------------------------------------------------- */ /* ----------------------------------------------------------------- */
/** /**
* Retourne TOUTES les infos d'un sous domaine du compte courant. * Retourne TOUTES les infos d'un sous domaine du compte courant.
* *
* @param integer sub_domain_id id du subdomain * @param integer sub_domain_id id du subdomain
* @return arrray Retourne un tableau associatif contenant les * @return arrray Retourne un tableau associatif contenant les
* informations du sous-domaine demandé.<pre> * informations du sous-domaine demand<EFBFBD>.<pre>
* $r["name"]= nom du sous-domaine (NON-complet) * $r["name"]= nom du sous-domaine (NON-complet)
* $r["dest"]= Destination (url, ip, local ...) * $r["dest"]= Destination (url, ip, local ...)
* </pre> * </pre>
@ -1172,7 +1213,9 @@ class m_dom {
$r["web_action"] = $db->Record["web_action"]; $r["web_action"] = $db->Record["web_action"];
$db->free(); $db->free();
return $r; return $r;
} // get_sub_domain_all }
// get_sub_domain_all
function check_type_value($type, $value) { function check_type_value($type, $value) {
global $db, $err, $cuid; global $db, $err, $cuid;
@ -1180,7 +1223,9 @@ class m_dom {
// check the type we can have in domaines_type.target // check the type we can have in domaines_type.target
switch ($this->domains_type_target_values($type)) { switch ($this->domains_type_target_values($type)) {
case 'NONE': case 'NONE':
if (empty($value) or is_null($value)) {return true;} if (empty($value) or is_null($value)) {
return true;
}
break; break;
case 'URL': case 'URL':
if ($value == strval($value)) { if ($value == strval($value)) {
@ -1240,10 +1285,13 @@ class m_dom {
break; break;
} }
return false; return false;
} //check_type_value }
//check_type_value
/* ----------------------------------------------------------------- */ /* ----------------------------------------------------------------- */
/** /**
* Check the compatibility of the POSTed parameters with the chosen * Check the compatibility of the POSTed parameters with the chosen
* domain type * domain type
@ -1258,7 +1306,8 @@ class m_dom {
// Get the compatibility list for this domain type // Get the compatibility list for this domain type
$db->query("select upper(compatibility) as compatibility from domaines_type where upper(name)=upper('$type');"); $db->query("select upper(compatibility) as compatibility from domaines_type where upper(name)=upper('$type');");
if (!$db->next_record()) return false; if (!$db->next_record())
return false;
$compatibility_lst = explode(",", $db->f('compatibility')); $compatibility_lst = explode(",", $db->f('compatibility'));
// Get the list of type of subdomains already here who have the same name // Get the list of type of subdomains already here who have the same name
@ -1266,7 +1315,8 @@ class m_dom {
#$db->query("select * from sub_domaines where sub='$sub' and domaine='$dom';"); #$db->query("select * from sub_domaines where sub='$sub' and domaine='$dom';");
while ($db->next_record()) { while ($db->next_record()) {
// And if there is a domain with a incompatible type, return false // And if there is a domain with a incompatible type, return false
if (! in_array(strtoupper($db->f('type')),$compatibility_lst)) return false; if (!in_array(strtoupper($db->f('type')), $compatibility_lst))
return false;
} }
// All is right, go ! Create ur domain ! // All is right, go ! Create ur domain !
@ -1274,18 +1324,19 @@ class m_dom {
} }
/* ----------------------------------------------------------------- */ /* ----------------------------------------------------------------- */
/** /**
* Modifier les information du sous-domaine demandé. * Modifier les information du sous-domaine demand<EFBFBD>.
* *
* <b>Note</b> : si le sous-domaine $sub.$dom n'existe pas, il est créé.<br /> * <b>Note</b> : si le sous-domaine $sub.$dom n'existe pas, il est cr<EFBFBD><EFBFBD>.<br />
* <b>Note : TODO</b> : vérification de concordance de $dest<br /> * <b>Note : TODO</b> : v<EFBFBD>rification de concordance de $dest<br />
* *
* @param string $dom Domaine dont on souhaite modifier/ajouter un sous domaine * @param string $dom Domaine dont on souhaite modifier/ajouter un sous domaine
* @param string $subk Sous domaine à modifier / créer * @param string $subk Sous domaine <EFBFBD> modifier / cr<EFBFBD>er
* @param integer $type Type de sous-domaine (local, ip, url ...) * @param integer $type Type de sous-domaine (local, ip, url ...)
* @param string $action Action : vaut "add" ou "edit" selon que l'on * @param string $action Action : vaut "add" ou "edit" selon que l'on
* Crée (add) ou Modifie (edit) le sous-domaine * Cr<EFBFBD>e (add) ou Modifie (edit) le sous-domaine
* @param string $dest Destination du sous-domaine, dépend de la valeur * @param string $dest Destination du sous-domaine, d<EFBFBD>pend de la valeur
* de $type (url, ip, dossier...) * de $type (url, ip, dossier...)
* @return boolean Retourne FALSE si une erreur s'est produite, TRUE sinon. * @return boolean Retourne FALSE si une erreur s'est produite, TRUE sinon.
*/ */
@ -1311,12 +1362,12 @@ class m_dom {
} }
if (!$this->check_type_value($type, $dest)) { if (!$this->check_type_value($type, $dest)) {
//plutot verifier si la chaine d'erreur est vide avant de raise sinon sa veut dire que l(erruer est deja remonté //plutot verifier si la chaine d'erreur est vide avant de raise sinon sa veut dire que l(erruer est deja remont<EFBFBD>
#$err->raise("dom",_("Invalid domain type selected, please check")); #$err->raise("dom",_("Invalid domain type selected, please check"));
return false; return false;
} }
// On a épuré $dir des problèmes eventuels ... On est en DESSOUS du dossier de l'utilisateur. // On a <20>pur<75> $dir des probl<62>mes eventuels ... On est en DESSOUS du dossier de l'utilisateur.
if ($t = checkfqdn($dom)) { if ($t = checkfqdn($dom)) {
$err->raise("dom", _("The domain name is syntaxically incorrect")); $err->raise("dom", _("The domain name is syntaxically incorrect"));
return false; return false;
@ -1366,12 +1417,15 @@ class m_dom {
$db->query("update domaines set dns_action='UPDATE' where domaine='$dom';"); $db->query("update domaines set dns_action='UPDATE' where domaine='$dom';");
return true; return true;
} // set_sub_domain }
// set_sub_domain
/* ----------------------------------------------------------------- */ /* ----------------------------------------------------------------- */
/** /**
* Supprime le sous-domaine demandé * Supprime le sous-domaine demand<EFBFBD>
* *
* @param string $dom Domaine dont on souhaite supprimer un sous-domaine * @param string $dom Domaine dont on souhaite supprimer un sous-domaine
* @param string $sub Sous-domaine que l'on souhaite supprimer * @param string $sub Sous-domaine que l'on souhaite supprimer
@ -1394,8 +1448,9 @@ class m_dom {
$db->query("update domaines set dns_action='UPDATE' where domaine='" . $r['domain'] . "';"); $db->query("update domaines set dns_action='UPDATE' where domaine='" . $r['domain'] . "';");
} }
return true; return true;
} // del_sub_domain }
// del_sub_domain
function set_ttl($dom_id, $ttl) { function set_ttl($dom_id, $ttl) {
global $err; global $err;
@ -1410,12 +1465,13 @@ class m_dom {
} }
/* ----------------------------------------------------------------- */ /* ----------------------------------------------------------------- */
/** /**
* Modifie les information du domaine précisé. * Modifie les information du domaine pr<EFBFBD>cis<EFBFBD>.
* *
* @param string $dom Domaine du compte courant que l'on souhaite modifier * @param string $dom Domaine du compte courant que l'on souhaite modifier
* @param integer $dns Vaut 1 ou 0 pour héberger ou pas le DNS du domaine * @param integer $dns Vaut 1 ou 0 pour h<EFBFBD>berger ou pas le DNS du domaine
* @param integer $gesmx Héberge-t-on le emails du domaines sur ce serveur ? * @param integer $gesmx H<EFBFBD>berge-t-on le emails du domaines sur ce serveur ?
* @param boolean $force Faut-il passer les checks DNS ou MX ? (admin only) * @param boolean $force Faut-il passer les checks DNS ou MX ? (admin only)
* @return boolean appelle $mail->add_dom ou $ma->del_dom si besoin, en * @return boolean appelle $mail->add_dom ou $ma->del_dom si besoin, en
* fonction du champs MX. Retourne FALSE si une erreur s'est produite, * fonction du champs MX. Retourne FALSE si une erreur s'est produite,
@ -1448,7 +1504,9 @@ class m_dom {
} }
# Can't have ttl == 0. There is also a check in function_dns # Can't have ttl == 0. There is also a check in function_dns
if ( $ttl == 0 ) { $ttl = 86400; } if ($ttl == 0) {
$ttl = 86400;
}
$t = checkfqdn($dom); $t = checkfqdn($dom);
if ($t) { if ($t) {
@ -1460,14 +1518,15 @@ class m_dom {
$err->raise("dom", _("The domain name %s does not exist"), $dom); $err->raise("dom", _("The domain name %s does not exist"), $dom);
return false; return false;
} }
if ($dns!="1") $dns="0"; if ($dns != "1")
// On vérifie que des modifications ont bien eu lieu :) $dns = "0";
// On v<>rifie que des modifications ont bien eu lieu :)
if ($r["dns"] == $dns && $r["mail"] == $gesmx && $r["zonettl"] == $ttl) { if ($r["dns"] == $dns && $r["mail"] == $gesmx && $r["zonettl"] == $ttl) {
$err->raise("dom", _("No change has been requested...")); $err->raise("dom", _("No change has been requested..."));
return true; return true;
} }
//si gestion mx uniquement, vérification du dns externe //si gestion mx uniquement, v<>rification du dns externe
if ($dns == "0" && $gesmx == "1" && !$force) { if ($dns == "0" && $gesmx == "1" && !$force) {
$vmx = $this->checkmx($dom); $vmx = $this->checkmx($dom);
if ($vmx == 1) { if ($vmx == 1) {
@ -1475,7 +1534,7 @@ class m_dom {
} }
if ($vmx == 2) { if ($vmx == 2) {
// Serveur non spécifié parmi les champx mx // Serveur non sp<73>cifi<66> parmi les champx mx
$err->raise("dom", _("There is no MX record pointing to this server, and you are asking us to host the mail here. Make sure to update your MX entries or no mail will be received")); $err->raise("dom", _("There is no MX record pointing to this server, and you are asking us to host the mail here. Make sure to update your MX entries or no mail will be received"));
} }
} }
@ -1484,7 +1543,7 @@ class m_dom {
$hooks->invoke("hook_dom_add_mx_domain", array($r["id"])); $hooks->invoke("hook_dom_add_mx_domain", array($r["id"]));
} }
if (!$gesmx && $r["mail"]) { // on a dissocié le MX : on détruit donc l'entree dans LDAP if (!$gesmx && $r["mail"]) { // on a dissoci<EFBFBD> le MX : on d<>truit donc l'entree dans LDAP
$hooks->invoke("hook_dom_del_mx_domain", array($r["id"])); $hooks->invoke("hook_dom_del_mx_domain", array($r["id"]));
} }
@ -1492,7 +1551,9 @@ class m_dom {
$dom->set_dns_action($dom, 'UPDATE'); $dom->set_dns_action($dom, 'UPDATE');
return true; return true;
} // edit_domain }
// edit_domain
/* * ************************* */ /* * ************************* */
@ -1501,6 +1562,7 @@ class m_dom {
/* ----------------------------------------------------------------- */ /* ----------------------------------------------------------------- */
/** Return the list of ip addresses and classes that are allowed access to domain list /** Return the list of ip addresses and classes that are allowed access to domain list
* through AXFR Transfers from the bind server. * through AXFR Transfers from the bind server.
*/ */
@ -1517,8 +1579,8 @@ class m_dom {
return $res; return $res;
} }
/* ----------------------------------------------------------------- */ /* ----------------------------------------------------------------- */
/** Add an ip address (or a ip class) to the list of allowed slave ip access list. /** Add an ip address (or a ip class) to the list of allowed slave ip access list.
*/ */
function add_slave_ip($ip, $class = "32") { function add_slave_ip($ip, $class = "32") {
@ -1528,7 +1590,8 @@ class m_dom {
return false; return false;
} }
$class = intval($class); $class = intval($class);
if ($class<8 || $class>32) $class=32; if ($class < 8 || $class > 32)
$class = 32;
$db->query("SELECT * FROM slaveip WHERE ip='$ip' AND class='$class';"); $db->query("SELECT * FROM slaveip WHERE ip='$ip' AND class='$class';");
if ($db->next_record()) { if ($db->next_record()) {
$err->raise("err", _("The requested domain is forbidden in this server, please contact the administrator")); $err->raise("err", _("The requested domain is forbidden in this server, please contact the administrator"));
@ -1541,8 +1604,8 @@ class m_dom {
return true; return true;
} }
/* ----------------------------------------------------------------- */ /* ----------------------------------------------------------------- */
/** Remove an ip address (or a ip class) from the list of allowed slave ip access list. /** Remove an ip address (or a ip class) from the list of allowed slave ip access list.
*/ */
function del_slave_ip($ip) { function del_slave_ip($ip) {
@ -1558,8 +1621,8 @@ class m_dom {
return true; return true;
} }
/* ----------------------------------------------------------------- */ /* ----------------------------------------------------------------- */
/** Check for a slave account /** Check for a slave account
*/ */
function check_slave_account($login, $pass) { function check_slave_account($login, $pass) {
@ -1571,8 +1634,8 @@ class m_dom {
return false; return false;
} }
/* ----------------------------------------------------------------- */ /* ----------------------------------------------------------------- */
/** Out (echo) the complete hosted domain list : /** Out (echo) the complete hosted domain list :
*/ */
function echo_domain_list($integrity = false) { function echo_domain_list($integrity = false) {
@ -1590,8 +1653,8 @@ class m_dom {
return true; return true;
} }
/* ----------------------------------------------------------------- */ /* ----------------------------------------------------------------- */
/** Returns the complete hosted domain list : /** Returns the complete hosted domain list :
*/ */
function get_domain_list($uid = -1) { function get_domain_list($uid = -1) {
@ -1627,8 +1690,8 @@ class m_dom {
return $res; return $res;
} }
/* ----------------------------------------------------------------- */ /* ----------------------------------------------------------------- */
/** Returns the name of a domain for the current user, from it's domain_id /** Returns the name of a domain for the current user, from it's domain_id
* @param $dom_id integer the domain_id to search for * @param $dom_id integer the domain_id to search for
* @return string the domain name, or false with an error raised. * @return string the domain name, or false with an error raised.
@ -1651,8 +1714,8 @@ class m_dom {
} }
} }
/* ----------------------------------------------------------------- */ /* ----------------------------------------------------------------- */
/** Returns the id of a domain for the current user, from it's domain name /** Returns the id of a domain for the current user, from it's domain name
* @param $domain string the domain name to search for * @param $domain string the domain name to search for
* @return integer the domain id, or false with an error raised. * @return integer the domain id, or false with an error raised.
@ -1675,8 +1738,8 @@ class m_dom {
} }
} }
/* ----------------------------------------------------------------- */ /* ----------------------------------------------------------------- */
/** Count all domains, for all users /** Count all domains, for all users
*/ */
function count_domains_all() { function count_domains_all() {
@ -1689,8 +1752,8 @@ class m_dom {
} }
} }
/* ----------------------------------------------------------------- */ /* ----------------------------------------------------------------- */
/** Return the list of allowed slave accounts /** Return the list of allowed slave accounts
*/ */
function enum_slave_account() { function enum_slave_account() {
@ -1700,12 +1763,13 @@ class m_dom {
while ($db->next_record()) { while ($db->next_record()) {
$res[] = $db->Record; $res[] = $db->Record;
} }
if (!count($res)) return false; if (!count($res))
return false;
return $res; return $res;
} }
/* ----------------------------------------------------------------- */ /* ----------------------------------------------------------------- */
/** Add a slave account that will be allowed to access the domain list /** Add a slave account that will be allowed to access the domain list
*/ */
function add_slave_account($login, $pass) { function add_slave_account($login, $pass) {
@ -1719,8 +1783,8 @@ class m_dom {
return true; return true;
} }
/* ----------------------------------------------------------------- */ /* ----------------------------------------------------------------- */
/** Remove a slave account /** Remove a slave account
*/ */
function del_slave_account($login) { function del_slave_account($login) {
@ -1729,13 +1793,13 @@ class m_dom {
return true; return true;
} }
/* * ********** */ /* * ********** */
/* Private */ /* Private */
/* * ********** */ /* * ********** */
/* ----------------------------------------------------------------- */ /* ----------------------------------------------------------------- */
/** Try to lock a domain /** Try to lock a domain
* @access private * @access private
*/ */
@ -1752,8 +1816,8 @@ class m_dom {
return true; return true;
} }
/* ----------------------------------------------------------------- */ /* ----------------------------------------------------------------- */
/** Unlock the cron for domain management /** Unlock the cron for domain management
* return true * return true
* @access private * @access private
@ -1768,8 +1832,8 @@ class m_dom {
return true; return true;
} }
/* ----------------------------------------------------------------- */ /* ----------------------------------------------------------------- */
/** Declare that a domain's emails are hosted in this server : /** Declare that a domain's emails are hosted in this server :
* This adds 2 MX entries in this domain (if required) * This adds 2 MX entries in this domain (if required)
*/ */
@ -1784,8 +1848,8 @@ class m_dom {
return true; return true;
} }
/* ----------------------------------------------------------------- */ /* ----------------------------------------------------------------- */
/** /**
* Delete an account (all his domains) * Delete an account (all his domains)
*/ */
@ -1799,8 +1863,8 @@ class m_dom {
return true; return true;
} }
/* ----------------------------------------------------------------- */ /* ----------------------------------------------------------------- */
/** Returns the used quota for the $name service for the current user. /** Returns the used quota for the $name service for the current user.
* @param $name string name of the quota * @param $name string name of the quota
* @return integer the number of service used or false if an error occured * @return integer the number of service used or false if an error occured
@ -1817,8 +1881,8 @@ class m_dom {
return $q; return $q;
} }
/* --------------------------------------------------------------------- */ /* --------------------------------------------------------------------- */
/** Returns the global domain(s) configuration(s) of a particular user /** Returns the global domain(s) configuration(s) of a particular user
* No parameters needed * No parameters needed
* */ * */
@ -1859,14 +1923,12 @@ class m_dom {
$str.=" <type>" . $sub["type"] . " </type>\n"; $str.=" <type>" . $sub["type"] . " </type>\n";
$str.=" </subdomain>\n"; $str.=" </subdomain>\n";
} }
} }
$str.=" </domaines>\n"; $str.=" </domaines>\n";
} }
return $str; return $str;
} }
/** /**
* Return an array with all the needed parameters to generate conf * Return an array with all the needed parameters to generate conf
* of a vhost. * of a vhost.
@ -1927,7 +1989,8 @@ function generation_domains_type() {
global $dom; global $dom;
$d = array(); $d = array();
foreach ($dom->domains_type_lst() as $k => $v) { foreach ($dom->domains_type_lst() as $k => $v) {
if ( $v['only_dns'] == true ) continue; if ($v['only_dns'] == true)
continue;
if (!$j = file_get_contents(ALTERNC_APACHE2_GEN_TMPL_DIR . '/' . strtolower($k) . '.conf')) { if (!$j = file_get_contents(ALTERNC_APACHE2_GEN_TMPL_DIR . '/' . strtolower($k) . '.conf')) {
die("Error: missing file for $k"); die("Error: missing file for $k");
} }
@ -1939,7 +2002,8 @@ function generation_domains_type() {
// Launch old fashionned hooks as there was in AlternC 1.0 // Launch old fashionned hooks as there was in AlternC 1.0
function generate_conf_oldhook($action, $lst_sub, $sub_obj = null) { function generate_conf_oldhook($action, $lst_sub, $sub_obj = null) {
if (is_null($sub_obj)) $sub_obj=$this->generation_parameters(null, false); if (is_null($sub_obj))
$sub_obj = $this->generation_parameters(null, false);
if (!isset($lst_sub[strtoupper($action)]) || empty($lst_sub[strtoupper($action)])) { if (!isset($lst_sub[strtoupper($action)]) || empty($lst_sub[strtoupper($action)])) {
return false; return false;
@ -2053,6 +2117,7 @@ function generate_apacheconf($p = null) {
} }
/* ----------------------------------------------------------------- */ /* ----------------------------------------------------------------- */
/** hook function called by AlternC-upnp to know which open /** hook function called by AlternC-upnp to know which open
* tcp or udp ports this class requires or suggests * tcp or udp ports this class requires or suggests
* @return array a key => value list of port protocol name mandatory values * @return array a key => value list of port protocol name mandatory values
@ -2119,4 +2184,6 @@ function generate_apacheconf($p = null) {
_("AlternC panel access"); _("AlternC panel access");
} }
} /* Class m_domains */ }
/* Class m_domains */