Sfoglia il codice sorgente

Creación del subdominio y su sitio web con los servidores y sus ips asignadas correctamente. Mejora de las comprobaciones para la creación del subdominio.

master
David Ramos 8 anni fa
parent
commit
757c0b8138
1 ha cambiato i file con 119 aggiunte e 53 eliminazioni
  1. +119
    -53
      new_service_webdns.php

+ 119
- 53
new_service_webdns.php Vedi File

@@ -193,6 +193,7 @@ class page_action extends tform_actions {
public $subdominio;
public $es_subdominio = false;
public $subdom_error = false;
public $dominio_error = false;
public $no_ip = false;

//Campos para PDF
@@ -553,25 +554,30 @@ class page_action extends tform_actions {
$patronP2 = '/(\.$)/';
$patronP3 = '/(\.\.+)/';
$patronP4 = '/(\.[[:alpha:]]*)$/';*/
//Se comprueba que no tenga 3 w "www" al principio del nombre del dominio o subdomino
$encontradoWWW = preg_match($patronWWW, $subdom, $coincidencias);
if($encontradoWWW){
$app->tform->errorMessage = $app->tform->wordbook['error_dominio_www'];
return;
}
//print "<pre>"; print_r($subdom); print "</pre>\n";
//print "<pre>"; print(substr_count($subdom,".")); print "</pre>\n";

//Si el dominio tiene mas de dos puntos, es incorrecto
if (substr_count($subdom,".") > 2) {

if(substr_count($subdom,".") > 2) {
//$app->tform->errorMessage = $app->tform->wordbook['error_dominio_mas_puntos'];
$this->es_subdominio = false;
$this->dominio_error = true;
//print "<pre>"; print_r($subdom . " hola " .$this->es_subdominio ); print "</pre>\n";
$app->tform->errorMessage = $app->tform->wordbook['error_dominio_mas_puntos'];
return;
//return;

} else if(substr_count($subdom,".") == 2){
}else if(substr_count($subdom,".") == 2){
$this->encontrado = preg_match($patronSubDominos, $subdom, $coincidencias);
//print "<pre>"; print_r($coincidencias); print "</pre>\n";
$this->subdominio = $coincidencias[1];
$this->subdominio = $coincidencias[0];
$this->dominio = $coincidencias[2];

//print "Subdomino: " . $this->subdomino . "</p>\n Dominio: " . $this->domino;
@@ -591,6 +597,12 @@ class page_action extends tform_actions {

global $app, $conf;
$fields = $app->tform->encode($this->dataRecord, $app->tform->getCurrentTab(), true);

//IMPORTANTE. CON ESTA LLAMADA REALIZO LOS PASOS SIGUIENTES A ELLA. COMPROBAR. NO VA.
/*$capturaGroupClientVista = $app->db->queryOneRecord(
"SELECT groupid, client_id FROM sys_group
WHERE client_id = ".$app->functions->intval($fields['client_group_id']));*/

//IMPORTANTE.
//Con la selección del cliente o admin en la vista.
//Tomamos el grupo del cliente o admin, se toma este valor y se captura el client_id y groupid de la tabla
@@ -628,29 +640,66 @@ class page_action extends tform_actions {
global $app, $conf;

$fields = $app->tform->encode($this->dataRecord, $app->tform->getCurrentTab(), true);
//print "<pre>"; print_r($campoSubDominio); print "</pre>\n";
//COMO LE PASO EL DOMINIO CORRECTO NO ES NECESARIO PONER EL % EN LA SQL AÑADO EL PUNTO.
//EL PROBLEMA ES QUE CON UN DOMINIO .COM TOMA POR VALIDO UN .CO POR EL %
//NO --> ('SELECT server_id, name FROM dns_rr WHERE name LIKE "'.$this->dominio.'%"');
$existeDominioParaSubDominio = $app->db->queryOneRecord(
'SELECT server_id, name FROM dns_rr WHERE name LIKE "'.$this->dominio.'."');
/*'SELECT domain_id, domain FROM web_domain
WHERE domain = "'.$campoSubDominio.'"');*/

// print "<pre>En crearSubDominio campo que se le pasa subdominio es: "; print_r($campoSubDominio); print "</pre>\n";
//Compruebo que el subdominio no existe consultando la tabla web_domain.
$existeSubDominio = $app->db->queryOneRecord('SELECT domain_id, domain FROM web_domain WHERE domain = "'.$campoSubDominio.'"');
$existeSubDominioWeb = $app->db->queryOneRecord(
'SELECT domain_id, domain FROM web_domain
WHERE domain = "'.$campoSubDominio.'"');

//Compruebo que el subdominio no existe consultando la tabla dns_rr
$existeSubDominioTipoA = $app->db->queryOneRecord(
'SELECT name, type FROM dns_rr
WHERE name = "'.$campoSubDominio.'" AND type = "A"');

if(!$existeDominioParaSubDominio['name']){
$this->subdom_error = true;
$app->tform->errorMessage = $app->tform->wordbook['error_no_existe_dominio_padre'];
// print "<pre>Error En crearSubDominio campo comprobacion dns_rr es: "; print_r($existeDominioParaSubDominio); print "</pre>\n";
$this->onError();
return;
}
// print "<pre>En crearSubDominio campo comprobacion dns_rr es: "; print_r($existeDominioParaSubDominio); print "</pre>\n";
//print '<pre>El Sub existe '. $existeSubDominio['domain'];
if($existeSubDominio){
$this->subdom_error = true;
$app->tform->errorMessage = $app->tform->wordbook['error_subdominio_existe'];
$this->onError();
return;
if($existeSubDominioWeb['domain']){
$this->subdom_error = true;
$app->tform->errorMessage = $app->tform->wordbook['error_no_existe_dominio_padre'];
$this->onError();
return $this->subdom_error;
}
//$this->controlUserGrupoId();
$servidores = $app->db->queryOneRecord("SELECT client_id, default_dnsserver, default_webserver, web_servers FROM client WHERE client_id = ". $this->cli_id);
$dns_servidor = $servidores['default_dnsserver'];
$web_servidor = $servidores['web_servers'];
print "<pre>Servidores: ". $web_servidor . " DNS " . $dns_servidor . " Cliente " . $this->cli_id;
//print "<pre>El dominio es: " . $this->dominio;

if($existeSubDominioTipoA['name']){
$this->subdom_error = true;
$app->tform->errorMessage = $app->tform->wordbook['error_no_existe_dominio_padre'];
$this->onError();
return $this->subdom_error;
}
$this->controlUserGrupoId();
/*$servidores = $app->db->queryOneRecord(
"SELECT client_id, default_dnsserver, default_webserver, web_servers
FROM client WHERE client_id = ". $this->cli_id);*/

//$dns_servidor = $servidores['default_dnsserver'];
//$web_servidor = $servidores['web_servers'];
//print "<pre>Servidores: ". $web_servidor . " DNS " . $dns_servidor . " Cliente " . $this->cli_id;
// print "<pre>El dominio es: " . $this->dominio;
//$camDominio = $app->db->queryOneRecord('SELECT domain_id, domain FROM domain WHERE domain = "'.$this->dominio.'"');
$camDominio = $app->db->queryOneRecord('SELECT origin FROM dns_soa WHERE origin LIKE "'.$this->dominio.'%"');
//$camDominio = $app->db->queryOneRecord('SELECT origin FROM dns_soa WHERE origin LIKE "'.$campoSubDominio.'%"');
$camDnsRR = $app->db->queryOneRecord('SELECT server_id, zone FROM dns_rr WHERE name LIKE "'.$this->dominio.'%"');
//Para los registros tipo A la ip tiene que ser tipo IPv4
$camServIP = $app->db->queryOneRecord("SELECT ip_address FROM server_ip WHERE server_id = ".$camDnsRR['server_id']." AND ip_type='IPv4'");
$camServIP = $app->db->queryOneRecord(
"SELECT ip_address FROM server_ip
WHERE server_id = ".$camDnsRR['server_id']." AND ip_type='IPv4'");
//print_r($camDominio);
//print_r($camDnsRR);
@@ -680,17 +729,16 @@ class page_action extends tform_actions {
'serial' => '1',
);

$this->controlUserGrupoId();
echo ('El client_id GLOBAL ' . $this->cli_id . " <br>");
//echo ('<br>El client_id GLOBAL ' . $this->cli_id . " <br>");
// client group id
/*$res = $app->db->queryOneRecord("SELECT groupid FROM sys_group WHERE client_id = ".$app->functions->intval($fields['client_group_id']));
$client_group_id = $app->functions->intval($this->dataRecord["client_group_id"]);//$res['groupid'];
echo ('El client group id seleccion ' . $client_group_id . " <br>");
echo ('El groupid de la tabla sys_group ' . $res['groupid'] . " ");*/
print "<pre>"; print_r($paramSubDominios); print "</pre>\n";
//print "<pre>"; print_r($paramSubDominios); print "</pre>\n";
//Inserto en bbdd usando la clase remoto que se la he pasado en parámetros de la función
//$resultado = $remoto->insert_query('../dns/form/dns_a.tform.php', $fields['client_id'], $paramSubDominios);
//$resultado = $remoto->insert_query('form/dns_a_webdns.tform.php', $this->cli_id, /*$fields['client_group_id'],*/ $paramSubDominios);
$resultado = $remoto->insert_query('form/dns_a_webdns.tform.php', $this->cli_id, /*$fields['client_group_id'],*/ $paramSubDominios);
echo '<br><div class="alert alert-success"><br>
Se ha dado de alta Web y Subdominio, <b>'.$this->subdominio.'</b>, ¡Correctamente!
<br><br></div></br>';
@@ -705,7 +753,7 @@ class page_action extends tform_actions {
$fields = $app->tform->encode($this->dataRecord, $app->tform->getCurrentTab(), true);

//Captura del servidor id
if($this->id > 0) {
/* if($this->id > 0) {
$server_id = $this->dataRecord["server_id"];
} else {
// Get the first server ID
@@ -713,7 +761,7 @@ class page_action extends tform_actions {
$server_id = $tmp['server_id'];
//$this->elServidor = $server_id;
}
*/
/*echo ('Lo seleccionado ' . $fields['client_group_id'] . " <br>");
echo ('Tabla sys_group --> client id ' . $this->cli_id . " <br>");
echo ('Tabla sys_group --> groupid ' . $this->cli_grupo_id . " <br>");
@@ -726,29 +774,43 @@ class page_action extends tform_actions {
//Comprobamos que el resultado para el cliente seleccionado no esta vacío,
//si lo esta tomamos los datos del cliente id 0
//if(!$dns_ip_servidor_ipv6){
$dns_ip_servidor = $app->db->queryOneRecord("SELECT ip_type, ip_address FROM server_ip WHERE client_id = 1 AND ip_type='IPv4'");
$dns_ip_servidor_ipv6 = $app->db->queryOneRecord("SELECT ip_type, ip_address FROM server_ip WHERE client_id = 1 AND ip_type='IPv6'");
// $dns_ip_servidor = $app->db->queryOneRecord("SELECT ip_type, ip_address FROM server_ip WHERE client_id = 1 AND ip_type='IPv4'");
// $dns_ip_servidor_ipv6 = $app->db->queryOneRecord("SELECT ip_type, ip_address FROM server_ip WHERE client_id = 1 AND ip_type='IPv6'");
/*echo '<br><br>Valor de la consulta '.$dns_ip_servidor_ipv6[ip_address].' ';
echo '<br><br>Valor de la consulta '.$dns_ip_servidor[ip_address].' ';*/
//}

$dns_servidor = $app->db->queryOneRecord("SELECT client_id, default_dnsserver, default_webserver FROM client WHERE client_id = ".$app->functions->intval($fields['client_group_id']));
/* $dns_servidor = $app->db->queryOneRecord("SELECT client_id, default_dnsserver, default_webserver FROM client WHERE client_id = ".$app->functions->intval($fields['client_group_id']));
$clienteID = $dns_servidor['client_id'];

$res = $app->db->queryOneRecord("SELECT groupid FROM sys_group WHERE client_id = ".$app->functions->intval($fields['client_group_id']));
$client_group_id = $res['groupid'];
*/
// $res = $app->db->queryOneRecord("SELECT groupid, client_id FROM sys_group WHERE client_id = ".$app->functions->intval($fields['client_group_id']));
// $client_group_id = $res['groupid'];
//$client_id = $res['client_id'];
//echo('Seleccion es '.$app->functions->intval($fields['client_group_id']) . ' campos groupid ' . $client_group_id. ' campos client_id ' .$client_id);

//echo ('El server es: ' . $dns_servidor['default_webserver']);
$this->tieneServidorIPs();
$this->controlUserGrupoId();

/* print "<pre>DNS SERVER ";print_r($this->dns_serv);print "</pre>\n";
print "<pre>WEB SERVER ";print_r($this->web_serv);print "</pre>\n";
print "<pre>IP4 DNS ";print_r($this->ip4_servidor_dns);print "</pre>\n";
print "<pre>IP6 DNS ";print_r($this->ip6_servidor_dns);print "</pre>\n";
print "<pre>IP4 WEB ";print_r($this->ip4_servidor_web);print "</pre>\n";
print "<pre>IP6 WEB ";print_r($this->ip6_servidor_web);print "</pre>\n";
print "<pre>IP6 WEB LA OTRA ";print_r($this->ip6_ultima['ip_address']);print "</pre>\n";
*/
// add site
$paramsite = array(
// "sys_userid" => $this->sys_usuario_id,
// "sys_groupid" => $this->cli_grupo_id,
//"sys_userid" => $this->sys_usuario_id,
//"sys_groupid" => $this->cli_grupo_id,
'type' => 'vhost',
'domain' => $fields['domain'], //$this->subdominio,
'server_id' => $server_id,//$dns_servidor['default_webserver'],
'server_id' => $this->web_serv, //$server_id,//$dns_servidor['default_webserver'],
'ip_address' => '*', //$dns_ip_servidor['ip_address'],
'ipv6_address' => $dns_ip_servidor_ipv6['ip_address'],
'ipv6_address' =>$this->ip6_servidor_web['ip_address'], //$dns_ip_servidor_ipv6['ip_address'],
'traffic_quota' => '-1',
'hd_quota' => '0',
'cgi' => 'y',
@@ -782,7 +844,7 @@ class page_action extends tform_actions {
'system_user' => '-',
'system_group' => '-',
'log_retention' => 30,
'client_group_id' => $client_group_id,
'client_group_id' => $this->cli_grupo_id, //$client_group_id,
);

//$app->uses('remoting_lib');
@@ -802,16 +864,15 @@ class page_action extends tform_actions {
//$app->tform->loadFormDef($tform_def_file2);
//El último parámetro es para lanzar un evento que llama a la función on_after_insert que prepara
//los campos document_root, system_user y system_group
$site_id = $remoto->insert_query('../sites/form/web_vhost_domain.tform.php', $fields['client_group_id'], $paramsite, 'sites:web_vhost_domain:on_after_insert');
//$site_id = $remoto->insert_query('../sites/form/web_vhost_domain.tform.php', $this->sys_usuario_id, $paramsite, 'sites:web_vhost_domain:on_after_insert');
//$site_id = $remoto->insert_query('../sites/form/web_vhost_domain.tform.php', $fields['client_group_id'], $paramsite, 'sites:web_vhost_domain:on_after_insert');
$site_id = $remoto->insert_query('../sites/form/web_vhost_domain.tform.php', $this->sys_usuario_id, $paramsite, 'sites:web_vhost_domain:on_after_insert');
//print '<pre>ID sitio web del subdominio --> ' . $site_id;
}

public $ip4_servidor_dns;
public $ip6_servidor_dns;
public $ip4_servidor;
public $ip6_servidor;
public $ip4_servidor_web;
public $ip6_servidor_web;
public $dns_serv;
public $web_serv;

@@ -1114,12 +1175,12 @@ class page_action extends tform_actions {
echo '<br><br>Valor de la consulta '.$dns_ip_servidor[ip_address].' ';*/
// }

print "<pre>DNS SERVER ";print_r($this->dns_serv);print "</pre>\n";
/*print "<pre>DNS SERVER ";print_r($this->dns_serv);print "</pre>\n";
print "<pre>WEB SERVER ";print_r($this->web_serv);print "</pre>\n";
print "<pre>IP4 DNS ";print_r($this->ip4_servidor_dns);print "</pre>\n";
print "<pre>IP6 DNS ";print_r($this->ip6_servidor_dns);print "</pre>\n";
print "<pre>IP4 WEB ";print_r($this->ip4_servidor_web);print "</pre>\n";
print "<pre>IP6 WEB ";print_r($this->ip6_servidor_web);print "</pre>\n";
print "<pre>IP6 WEB ";print_r($this->ip6_servidor_web);print "</pre>\n";*/

//Si el servidor es el que tiene asignado el cliente o el de admin por defecto, le damos esta ip4
if($this->dns_serv && $this->ip4_servidor_dns){
@@ -1318,7 +1379,7 @@ print "<pre>IP6 WEB ";print_r($this->ip6_servidor_web);print "</pre>\n";
);

//print 'Valores: ' . $dns_ip_servidor_ipv6 . " " . $formulario . " Parametros: " ;
print "<pre>"; print_r($paramsite); print "</pre>\n";
//print "<pre>"; print_r($paramsite); print "</pre>\n";

/*print '<pre> cliente id ' . $fields['client_id'];
print "<pre>";print_r($fields);print "</pre>\n";*/
@@ -1364,7 +1425,7 @@ print "<pre>IP6 WEB ";print_r($this->ip6_servidor_web);print "</pre>\n";

echo ('Tabla sys_user --> userid ' . $this->sys_usuario_id . " <br>");
echo ('Tabla sys_user --> sys_groupid ' . $this->sys_grupo_id . " <br>");*/
//print "Subdomino: " . $this->subdomino . "</p>\n Dominio: " . $this->domino;
if($this->comprobarSubDominios($fields['domain'])){
$this->crearSubDominio($remote, $fields['domain']);
@@ -1374,18 +1435,23 @@ print "<pre>IP6 WEB ";print_r($this->ip6_servidor_web);print "</pre>\n";
}

} else {
$this->crearDnsSitioWeb($remote);
//$variablePHP = "<script> document.write(test) </script>";
//Si todo va bien, el resultado de la web y dns
echo '<br><div class="alert alert-success"><br>
Altas Web y DNS del dominio <b>'.$fields['domain'].'</b>, ¡Creadas correctamente!
if(!$this->dominio_error){
$this->crearDnsSitioWeb($remote);
//$variablePHP = "<script> document.write(test) </script>";
//Si todo va bien, el resultado de la web y dns
echo '<br><div class="alert alert-success"><br>
Altas Web y DNS del dominio <b>'.$fields['domain'].'</b>, ¡Creadas correctamente!
<br><br></div></br>';

//IMPORTANTE, es necesario cargar nuestro formulario para poder ejecutar la función que crea
//la base de datos y el ftp ya que hay datos que tomamos de él antes de ejecutarla.
$app->tform->loadFormDef('form/new_service_webdns.tform.php');
//$this->crearBaseDatosFtp($remote);
}else{
$this->onError();
return;
}
}
}
}


Loading…
Annulla
Salva