SQL y expresiones regulares por Pablo Sarria Pérez, Open6Hosting
';
//Check database user against blacklist
$dbuser_blacklist = array($conf['db_user'], 'mysql', 'root');
if(is_array($dbuser_blacklist) && in_array($dbuser_prefix . $this->dataRecord['database_user'], $dbuser_blacklist)) {
$app->tform->errorMessage .= $app->lng('Database user not allowed.').'
';
}
/* restrict the names */
/* crop user names if they are too long -> mysql: user: 16 chars / db: 64 chars */
if ($app->tform->errorMessage == ''){
$this->dataRecord['database_user'] = substr($dbuser_prefix . $this->dataRecord['database_user'], 0, 16);
}
$this->dataRecord['server_id'] = 0; // we need this on all servers
}
public $dominio;
public $subdominio;
public $es_subdominio = false;
public $subdom_error = false;
public $dominio_error = false;
public $no_ip = false;
//Campos para PDF
public $usuario_db_txt;
public $nombre_db_txt;
public $pass_db_txt;
public $usuario_ftp_txt;
public $pass_ftp_txt;
public $nombre_user_ftp;
public $ip4_pdf;
public $url_db;
function generaNombreFTP(){
global $app, $conf, $interfaceConf;
//Get the database name and database user prefix
$app->uses('getconf,tools_sites');
$global_config = $app->getconf->get_global_config('sites');
$dbuser_prefix = $app->tools_sites->replacePrefix($global_config['dbuser_prefix'], $this->dataRecord);
$dbuser_prefix_valor = $app->tpl->setVar("database_name", $app->tools_sites->removePrefix($this->dataRecord['database_name'], $this->dataRecord['database_name_prefix'], $dbname_prefix));
//echo ('El prefix ' . $dbuser_prefix);
$this->dataRecord['database_user_prefix'] = $dbuser_prefix_valor;
//echo ('PreFIX ' . '{user}' . str_replace('{user}', htmlentities($dbuser_prefix . $this->dataRecord['database_user'], ENT_QUOTES, 'UTF-8')));
if(strlen($dbuser_prefix . $this->dataRecord['database_user']) > 16)
$app->tform->errorMessage .= str_replace('{user}', htmlentities($dbuser_prefix . $this->dataRecord['database_user'], ENT_QUOTES, 'UTF-8'),
$app->tform->wordbook["database_user_error_len"]).'
';
//Check database user against blacklist
$dbuser_blacklist = array($conf['db_user'], 'mysql', 'root');
if(is_array($dbuser_blacklist) && in_array($dbuser_prefix . $this->dataRecord['database_user'], $dbuser_blacklist)) {
$app->tform->errorMessage .= $app->lng('Database user not allowed.').'
';
}
/* restrict the names */
/* crop user names if they are too long -> mysql: user: 16 chars / db: 64 chars */
if ($app->tform->errorMessage == ''){
$this->dataRecord['database_user'] = substr($dbuser_prefix . $this->dataRecord['database_user'], 0, 16);
}
$this->dataRecord['server_id'] = 0; // we need this on all servers
$this->tratarVariablesPrefix();
//echo ('PreFIX Valor ' . $dbuser_prefix_valor);
//Cadena de caractares para construir el nombre.
$cadena = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ23456789";
//Obtengo la longitud de las cadenas
$longitudCadena=strlen($cadena);
//Variable para el nombre
$nombre = "";
//Longitud para el nombre
$longitudNombre=8;
//Creo el nombre
for($i=1 ; $i<=$longitudNombre ; $i++){
//Número aleatorio entre 0 y la longitud de la cadena de caracteres-1
$pos=rand(0,$longitudCadena-1);
//Formo la nombre en cada iteracción del bucle, añadiendo a la cadena $nombre
//la letra correspondiente a la posición $pos en la cadena de caracteres definida.
$nombre .= substr($cadena,$pos,1);
}
return $nombre;
}
function generaPass(){
//Cadena de caractares para construir las password.
$cadena = "abcdefghijklmnopqrstuvwxyz!@#_ABCDEFGHIJKLMNOPQRSTUVWXYZ23456789";
$cadSpeciales = "!@#_";
//Obtengo la longitud de las cadenas
$longitudCadena = strlen($cadena);
$longSpeciales = strlen($cadSpeciales);
//Variable para la password
$pass = "";
//Longitud para la password
$longitudPass=13;
//Creo la password
for($i=1 ; $i<=$longitudPass ; $i++){
//Número aleatorio entre 0 y la longitud de la cadena de caracteres-1
$pos=rand(0,$longitudCadena-1);
//Formo la password en cada iteracción del bucle, añadiendo a la cadena $pass
//la letra correspondiente a la posición $pos en la cadena de caracteres definida.
$pass .= substr($cadena,$pos,1);
//Añado algún caracter especial en los últimos cuatro caracteres
for($i2=13;$i2<=$i; $i2++){
$poSpecial=rand(0,$longSpeciales-1);
$pass .= substr($cadSpeciales, $poSpecial, 1);
}
}
return $pass;
}
function generaNombreBD(){
global $app, $conf, $interfaceConf;
//Get the database name and database user prefix
$app->uses('getconf,tools_sites');
$global_config = $app->getconf->get_global_config('sites');
$dbuser_prefix = $app->tools_sites->replacePrefix($global_config['dbuser_prefix'], $this->dataRecord);
$dbuser_prefix_valor = $app->tpl->setVar("database_name", $app->tools_sites->removePrefix($this->dataRecord['database_name'], $this->dataRecord['database_name_prefix'], $dbname_prefix));
//echo ('El prefix ' . $dbuser_prefix);
$this->dataRecord['database_user_prefix'] = $dbuser_prefix_valor;
//echo ('PreFIX ' . '{user}' . str_replace('{user}', htmlentities($dbuser_prefix . $this->dataRecord['database_user'], ENT_QUOTES, 'UTF-8')));
if(strlen($dbuser_prefix . $this->dataRecord['database_user']) > 16)
$app->tform->errorMessage .= str_replace('{user}', htmlentities($dbuser_prefix . $this->dataRecord['database_user'], ENT_QUOTES, 'UTF-8'),
$app->tform->wordbook["database_user_error_len"]).'
';
//Check database user against blacklist
$dbuser_blacklist = array($conf['db_user'], 'mysql', 'root');
if(is_array($dbuser_blacklist) && in_array($dbuser_prefix . $this->dataRecord['database_user'], $dbuser_blacklist)) {
$app->tform->errorMessage .= $app->lng('Database user not allowed.').'
';
}
/* restrict the names */
/* crop user names if they are too long -> mysql: user: 16 chars / db: 64 chars */
if ($app->tform->errorMessage == ''){
$this->dataRecord['database_user'] = substr($dbuser_prefix . $this->dataRecord['database_user'], 0, 16);
}
$this->dataRecord['server_id'] = 0; // we need this on all servers
$this->tratarVariablesPrefix();
//echo ('PreFIX Valor ' . $dbuser_prefix_valor);
//Cadena de caractares para construir las nombre.
$cadena = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ23456789";
//$cadSpeciales = "!@#_";
//Obtengo la longitud de las cadenas
$longitudCadena=strlen($cadena);
//$longSpeciales = strlen($cadSpeciales);
//Variable para la nombre
$nombre = "";
//Longitud para la nombre
$longitudNombre=8;
//Creo el nombre
for($i=1 ; $i<=$longitudNombre ; $i++){
//Número aleatorio entre 0 y la longitud de la cadena de caracteres-1
$pos=rand(0,$longitudCadena-1);
//Formo la nombre en cada iteracción del bucle, añadiendo a la cadena $nombre
//la letra correspondiente a la posición $pos en la cadena de caracteres definida.
$nombre .= substr($cadena,$pos,1);
}
return $this->valor_prefix . $nombre;
}
/*function comprobarPass($claveGenerada){
//compruebo que el tamaño del string sea válido.
if (strlen($claveGenerada)<3 || strlen($claveGenerada)>20){
echo $claveGenerada . " no es válida0
";
return false;
}
//compruebo que los caracteres sean los permitidos
$alphachars = "abcdefghijkmnopqrstuvwxyz";
$upperchars = "ABCDEFGHJKLMNPQRSTUVWXYZ";
$numchars = "23456789";
$specialchars = "!@#_";
//$permitidos = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_";
if (ereg("^[a-zA-Z0-9\-_]{3,20}$", $claveGenerada)) {
echo $claveGenerada . " es válido
";
return true;
} else {
echo $claveGenerada . " NO válido
";
return false;
}
echo $claveGenerada . " es válido
";
return true;
}*/
function crearBaseDatosFtp($remoto){
global $app, $conf;
$fields = $app->tform->encode($this->dataRecord, $app->tform->getCurrentTab(), true);
$app->uses('ini_parser,getconf');
$server_config_array = $app->getconf->get_global_config();
$generated_usernameBBDD = $this->generaNombreBD();
//print ""; print_r($generated_usernameBBDD); print "
\n";
$sitio_id = $app->db->queryOneRecord(
'SELECT domain_id, domain FROM web_domain WHERE domain = "'.$fields['domain'].'"');
//print ""; print_r($camDnsRR); print "
\n";
//$camDnsRR = $app->db->queryOneRecord('SELECT server_id, zone FROM dns_rr WHERE name LIKE "'.$this->dominio.'."');
//print ""; print_r($fields['client_id']); print "
\n";
$clavePass = $this->generaPass();
//*Recupero todos los prefix necesarios
$app->uses('getconf,tools_sites');
$global_config = $app->getconf->get_global_config('sites');
$ftpuser_prefix = $app->tools_sites->replacePrefix($global_config['ftpuser_prefix'], $this->dataRecord);
//añado database user con su prefix
$db_user_params = array(
'server_id' => $this->bbdd_serv,
'sysgroup_id' => $this->sys_grupo_id,
'sys_userid' => $this->sys_usuario_id,
'sys_perm_other' => '-',
'database_user' => $generated_usernameBBDD,
'database_user_prefix' => $this->valor_prefix,
'database_password' => $clavePass
);
$this->usuario_db_txt = $db_user_params['database_user'];
$this->pass_db_txt = $db_user_params['database_password'];
//print " USUARIO BBDD "; print_r($db_user_params); print "
\n";
//print "
". $this->cli_id;
//print "
". $this->usuario_db_txt;
//print "
". $this->pass_db_txt;
//print ""; print_r($fields); print "
\n";
$db_user_id = $remoto->insert_query('../sites/form/database_user.tform.php', $this->cli_id, $db_user_params, 'sites:web_database_user:on_after_insert');
// add database
$paramsBD = array(
'server_id' => $this->bbdd_serv, //$camDnsRR['server_id'],
'sysgroup_id' => $this->sys_grupo_id, //$fields['client_group_id'],
'parent_domain_id' => $sitio_id['domain_id'],
'type' => 'mysql',
'database_quota' => '-1',
'database_name' => $generated_usernameBBDD,
'database_name_prefix' => $this->valor_prefix,
'database_user_id' => $db_user_id,
'database_charset' => 'utf8',
'remote_access' => 'n',
'remote_ips' => '-1',
'active' => 'y'
);
//print " BBDD "; print_r($paramsBD); print "
\n";
$this->nombre_db_txt = $paramsBD['database_name'];
$db_id = $remoto->sites_database_add($this->cli_id,/*$fields['client_group_id'],*/ $paramsBD);
$this->urlBBDD($db_id, $this->bbdd_serv);
//echo('Id de la BBDD ' . $db_id);
// get site data para usarlo en la creación de la cuenta ftp, otra forma de cargar una tupla dandole un id
//$app->uses('remoting_lib');
$app->remoting_lib->loadFormDef('../sites/form/web_vhost_domain.tform.php');
$site_data = $app->remoting_lib->getDataRecord($sitio_id);
$this->nombre_user_ftp = $this->generaNombreFTP();
// add ftp user
$ftp_params = array(
'server_id' => $this->web_serv, //$camDnsRR['server_id'],
'parent_domain_id' => $sitio_id['domain_id'],
'username' => $this->valor_prefix_ftp . $this->nombre_user_ftp,
'username_prefix' => $this->valor_prefix_ftp,
'password' => $clavePass,
'quota_size' => '-1',
'dir' => $site_data['0']['document_root'],
'uid' => $site_data['0']['system_user'],
'gid' => $site_data['0']['system_group'],
'sys_groupid' => $site_data['0']['sys_groupid'],
'quota_files' => '-1',
'ul_ratio' => '-1',
'dl_ratio' => '-1',
'ul_bandwidth' => '-1',
'dl_bandwidth' => '-1',
'active' => 'y',
);
$this->usuario_ftp_txt = $ftp_params['username'];
$this->pass_ftp_txt = $ftp_params['password'];
//print " FTP "; print_r($ftp_params); print "
\n";
//print ""; print_r($site_data); print "
\n";
//echo('El usuario es ' . $fields['client_group_id']);
$remoto->insert_query('../sites/form/ftp_user.tform.php', $fields['client_group_id'], $ftp_params);
echo '
Altas de BBDD y FTP, ¡Correctas!
Usuario BBDD: '. $this->usuario_db_txt .'
Contraseña: ' . $this->pass_db_txt . '
Nombre BBDD: ' . $this->nombre_db_txt . '
Usuario FTP: '. $this->usuario_ftp_txt .'
Contraseña: ' . $this->pass_ftp_txt . '
BBDD
Usuario: '. $this->usuario_db_txt .'
Nombre Base de Datos: ' . $this->nombre_db_txt .'
Clave: ' . $this->pass_db_txt . '
FTP
Usuario: '. $this->usuario_ftp_txt .'
Clave: ' . $this->pass_ftp_txt . '
Nuevo dominio: '. $fields['domain'].'
';
$eldom = $fields['domain'];
echo '';
echo '';
}
function urlBBDD($idBBDD, $servidor_id){
global $app, $conf;
$dbData = $app->db->queryOneRecord(
"SELECT server_id, database_name FROM web_database WHERE database_id = ?", $idBBDD);
$serverData = $app->db->queryOneRecord(
"SELECT server_name FROM server WHERE server_id = ?", $servidor_id);
$app->uses('getconf');
$global_config = $app->getconf->get_global_config('sites');
$web_config = $app->getconf->get_server_config($servidor_id, 'web');
//print ""; print_r($global_config); print "
\n";
//print ""; print_r($web_config); print "
\n";
/*
* We only redirect to the login-form, so there is no need, to check any rights
*/
if($global_config['phpmyadmin_url'] != '') {
$phpmyadmin_url = $global_config['phpmyadmin_url'];
$phpmyadmin_url = str_replace(array('[SERVERNAME]', '[DATABASENAME]'), array($serverData['server_name'], $dbData['database_name']), $phpmyadmin_url);
//header('Location: '.$phpmyadmin_url);
$this->url_db = $phpmyadmin_url;
//print('la url ' . $phpmyadmin_url);
} /*else {
isset($_SERVER['HTTPS'])? $http = 'https' : $http = 'http';
if($web_config['server_type'] == 'nginx') {
//header('Location: http://' . $serverData['server_name'] . ':8081/phpmyadmin');
print('la url http://' . $serverData['server_name'] . ':8081/phpmyadmin');
} else {
//header('Location: ' . $http . '://' . $serverData['server_name'] . '/phpmyadmin');
print('la url http://' . $serverData['server_name'] . ':8081/phpmyadmin');
}
}*/
}
//Expresiones regulares para comprobar si es subdominio
function comprobarSubDominios($subdom) {
global $app, $conf;
$patronSubDominos = "/(.*?)\.(.*)$/";
$patronWWW = "/^w{3}/";
//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 ""; print_r($subdom); print "
\n";
//Si el dominio tiene mas de dos puntos, es incorrecto
if(substr_count($subdom,".") > 2) {
$this->es_subdominio = false;
$this->dominio_error = true;
$app->tform->errorMessage = $app->tform->wordbook['error_dominio_mas_puntos'];
//return;
}else if(substr_count($subdom,".") == 2){
$this->encontrado = preg_match($patronSubDominos, $subdom, $coincidencias);
//print ""; print_r($coincidencias); print "
\n";
$this->subdominio = $coincidencias[0];
$this->dominio = $coincidencias[2];
$this->es_subdominio = true;
}
return $this->es_subdominio;
}
public $cli_id;
public $cli_grupo_id;
public $sys_usuario_id;
public $sys_grupo_id;
function controlUserGrupoId(){
global $app, $conf;
$fields = $app->tform->encode($this->dataRecord, $app->tform->getCurrentTab(), true);
//Captura de los distintos ids del cliente y usuario de sistema.
//combinando un query a las dos tablas sys_group y sys_user que comparten el client_id.
//print "Seleccionado: "; print_r($fields['client_group_id']); print "
\n";
if($fields['client_group_id']==0) {
//En la tabla sys_user el client_id 0 es admin. En sys_group este valor es 0
$this->cli_id = 0;
//En la tabla dns_soa y dns_rr se guarda el valor 0 en sys_groupid cuando es admin.
$this->cli_grupo_id = 0;
$this->sys_usuario_id = 1;//$this->cli_id;
$this->sys_grupo_id = 0;//$this->cli_grupo_id;
}else{
$client = $app->db->queryOneRecord(
'SELECT sys_user.sys_userid, sys_user.sys_groupid, sys_user.default_group, sys_user.client_id
FROM sys_group, sys_user
WHERE sys_group.client_id = sys_user.client_id and sys_group.groupid = ?', $fields['client_group_id']);
$this->cli_id = $client['client_id'];
$this->cli_grupo_id = $client['default_group'];
$this->sys_usuario_id = $client['sys_userid'];
$this->sys_grupo_id = $client['sys_groupid'];
}
//print "Valores : "; print_r($this->cli_id); print "
\n";
//print "Valores " . $this->cli_id . ' ' . $this->cli_grupo_id . ' ' . $this->sys_usuario_id . ' ' . $this->sys_grupo_id;
}
//Crear subdominio
function crearSubDominio($remoto, $campoSubDominio){
global $app, $conf;
$fields = $app->tform->encode($this->dataRecord, $app->tform->getCurrentTab(), true);
//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.'."');
// print "En crearSubDominio campo que se le pasa subdominio es: "; print_r($campoSubDominio); print "
\n";
//Compruebo que el subdominio no existe consultando la tabla web_domain.
$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 "Error En crearSubDominio campo comprobacion dns_rr es: "; print_r($existeDominioParaSubDominio); print "
\n";
$this->onError();
return;
}
// print "En crearSubDominio campo comprobacion dns_rr es: "; print_r($existeDominioParaSubDominio); print "
\n";
//print 'El Sub existe '. $existeSubDominio['domain'];
if($existeSubDominioWeb['domain']){
$this->subdom_error = true;
$app->tform->errorMessage = $app->tform->wordbook['error_no_existe_dominio_padre'];
$this->onError();
return $this->subdom_error;
}
if($existeSubDominioTipoA['name']){
$this->subdom_error = true;
$app->tform->errorMessage = $app->tform->wordbook['error_no_existe_dominio_padre'];
$this->onError();
return $this->subdom_error;
}
//$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'");
//print_r($camDominio);
//print_r($camDnsRR);
//Si el dominio NO existe mostramos mensaje de error y salimos de la ejecución
if(!$camDominio['origin']){
$this->subdom_error = true;
$app->tform->errorMessage = $app->tform->wordbook['error_no_existe_dominio_padre'];
$this->onError();
//return;
//print 'No existe el dominio';
return $this->subdom_error;
} else {
//Parametros para la creación de subdominios
$paramSubDominios = array(
'server_id' => $camDnsRR['server_id'],
'zone' => $camDnsRR['zone'],
'name' => $this->subdominio,
'type' => 'a',
'data' => $camServIP['ip_address'],
//'aux' => '0',
'ttl' => '3600',
'active' => 'y',
//comento el campo stamp, ya que introducia solo ceros en la bbdd
//'stamp' => time(),
'serial' => '1',
);
//echo ('
El client_id GLOBAL ' . $this->cli_id . "
");
// 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 . "
");
echo ('El groupid de la tabla sys_group ' . $res['groupid'] . " ");*/
//print ""; print_r($paramSubDominios); print "
\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);
echo '
Se ha dado de alta Web y Subdominio, '.$this->subdominio.', ¡Correctamente!
DNS SERVER ";print_r($this->dns_serv);print "
\n";
print "WEB SERVER ";print_r($this->web_serv);print "
\n";
print "IP4 DNS ";print_r($this->ip4_servidor_dns);print "
\n";
print "IP6 DNS ";print_r($this->ip6_servidor_dns);print "
\n";
print "IP4 WEB ";print_r($this->ip4_servidor_web);print "
\n";
print "IP6 WEB ";print_r($this->ip6_servidor_web);print "
\n";
print "IP6 WEB LA OTRA ";print_r($this->ip6_ultima['ip_address']);print "
\n";
*/
//add site
$paramsite = array(
//"sys_userid" => $this->sys_usuario_id,
//"sys_groupid" => $this->cli_grupo_id,
'type' => 'vhost',
'domain' => $fields['domain'], //$this->subdominio,
'server_id' => $this->web_serv, //$server_id,
'ip_address' => '*',
'ipv6_address' =>$this->ip6_servidor_web['ip_address'],
'traffic_quota' => '-1',
'hd_quota' => '0',
'cgi' => 'y',
'ssi' => 'y',
'suexec' => 'y',
'ruby' => 'n',
'python' => 'n',
'perl' => 'n',
'errordocs' => '1',
'subdomain' => '',
'php' => 'php-fpm',
'fastcgi_php_version' => '',
'seo_redirect' => '',
'rewrite_to_https' => 'n',
'allow_override' => 'All',
'http_port' => 80,
'https_port' => 443,
'apache_directives' => '',
'nginx_directives' => '',
'php_fpm_use_socket' => 'y',
'pm' => 'ondemand',
'pm_max_children' => 10,
'pm_start_servers' => 1,
'pm_min_spare_servers' => 1,
'pm_max_spare_servers' => 5,
'pm_process_idle_timeout' => 10,
'pm_max_requests' => 0,
'custom_php_ini' => '',
'active' => 'y',
'document_root' => '-',
'system_user' => '-',
'system_group' => '-',
'log_retention' => 30,
'client_group_id' => $this->cli_grupo_id, //$client_group_id,
);
//print " Parametros:"; print_r($paramsite); print "
\n";
/*print ' cliente id ' . $fields['client_id'];
print "
";print_r($fields);print "
\n" . $fields['client_id'];*/
//print 'DNS IPV6 ' . $dns_ip_servidor_ipv6['ip_address'];
//$tform_def_file2 = "../sites/form/web_vhost_domain.tform.php";
//$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->cli_id, $paramsite, 'sites:web_vhost_domain:on_after_insert');
}
public $ip4_servidor_dns;
public $ip6_servidor_dns;
public $ip4_servidor_web;
public $ip6_servidor_web;
public $ip4_servidor_bbdd;
public $ip6_servidor_bbdd;
public $ip4_servidor_ftp;
public $ip6_servidor_ftp;
public $dns_serv;
public $web_serv;
public $bbdd_serv;
public $ftp_serv;
function tieneServidorIPs(){
global $app, $conf;
$this->controlUserGrupoId();
$app->uses('getconf');
$global_config_sitio = $app->getconf->get_global_config('sites');
$global_config_dns = $app->getconf->get_global_config('dns');
if(!$global_config_dns['default_dnsserver']) {
$app->tform->errorMessage = $app->tform->wordbook['error_no_servidor_default']. 'DNS.';
$this->onError();
return true;
} else if(!$global_config_sitio['default_webserver']) {
$app->tform->errorMessage = $app->tform->wordbook['error_no_servidor_default']. 'WEB.';
$this->onError();
return true;
} else if(!$global_config_sitio['default_dbserver']) {
$app->tform->errorMessage = $app->tform->wordbook['error_no_servidor_default']. 'DB.';
$this->onError();
return true;
}
//print "WEB SERVER por defecto ";print_r($global_config_sitio);print "
\n";
//print "DNS SERVER por defecto ";print_r($global_config_dns);print "
\n";
//El cliente 1 es admin.
//Recupero los servidores asignados por defecto y se los asigno a admin o al usuario
//que no tenga asignado ninguno.
if($this->cli_id == 0) {
$this->dns_serv = $global_config_dns['default_dnsserver'];//1;
$this->web_serv = $global_config_sitio['default_webserver'];//1;
$this->bbdd_serv = $global_config_sitio['default_dbserver'];//1;
$this->ftp_serv = $global_config_sitio['default_webserver'];//1;
//print "tieneServidorIPs el cli_id "; print_r($this->cli_id . ' el servidor ' . $this->dns_serv); print "
\n";
}else{
$servidores = $app->db->queryOneRecord(
"SELECT client_id, dns_servers, web_servers, db_servers FROM client
WHERE client_id = ". $this->cli_id);
$this->dns_serv = $servidores['dns_servers'];
$this->web_serv = $servidores['web_servers'];
$this->bbdd_serv = $servidores['db_servers'];
//para el ftp el servidor es el mismo que para el sitio web.
$this->ftp_serv = $servidores['web_servers'];
//Si el cliente no tiene asignado un servidor se añade por defecto al 1
if(!$this->dns_serv){
$this->dns_serv = $global_config_dns['default_dnsserver'];//1;
}
//Si el cliente no tiene asignado un servidor se añade por defecto al 1
if(!$this->web_serv){
$this->web_serv = $global_config_sitio['default_webserver'];//1;
}
//Si el cliente no tiene asignado un servidor se añade por defecto al 1
if(!$this->bbdd_serv){
$this->bbdd_serv = $global_config_sitio['default_dbserver'];//1;
}
//Si el cliente no tiene asignado un servidor se añade por defecto al 1
if(!$this->ftp_serv){
$this->ftp_serv = $global_config_sitio['default_webserver'];//1;
}
}
/*print "DNS SERVER ";print_r($this->dns_serv);print "
\n";
print "WEB SERVER ";print_r($this->web_serv);print "
\n";
print "DB SERVER ";print_r($this->bbdd_serv);print "
\n";
print "FTP SERVER ";print_r($this->ftp_serv);print "
\n";*/
//El cliente 1 es admin
//Captura de las ips del servidor dns
if($this->cli_id == 0){
//Compruebo si hay datos para el client_id 0 y si no existe pruebo con el 1.
//Alguno de los dos tiene que existir por configuración de ispconfig.
$this->ip4_servidor_dns = $app->db->queryOneRecord(
'SELECT ip_type, ip_address FROM server_ip
WHERE client_id = "0" AND server_id = "'.$this->dns_serv.'" AND ip_type="IPv4"');
$this->ip6_servidor_dns = $app->db->queryOneRecord(
'SELECT ip_type, ip_address FROM server_ip
WHERE client_id = "0" AND server_id = "'.$this->dns_serv.'" AND ip_type="IPv6"');
if(!$this->ip4_servidor_dns){
$this->ip4_servidor_dns = $app->db->queryOneRecord(
'SELECT ip_type, ip_address FROM server_ip
WHERE client_id = "1" AND server_id = "'.$this->dns_serv.'" AND ip_type="IPv4"');
}
if(!$this->ip6_servidor_dns){
$this->ip6_servidor_dns = $app->db->queryOneRecord(
'SELECT ip_type, ip_address FROM server_ip
WHERE client_id = "1" AND server_id = "'.$this->dns_serv.'" AND ip_type="IPv6"');
}
}else{//Comprobamos si el cliente tiene servidor asignado, si no lo tiene asignamos el que admin a seleccionado
//para este servidor.
$this->ip4_servidor_dns = $app->db->queryOneRecord(
'SELECT ip_type, ip_address
FROM server_ip
WHERE client_id = "'.$this->cli_id.'" AND server_id = "'.$this->dns_serv.'" AND ip_type="IPv4"');
$this->ip6_servidor_dns = $app->db->queryOneRecord(
'SELECT ip_type, ip_address
FROM server_ip
WHERE client_id = "'.$this->cli_id.'" AND server_id = "'.$this->dns_serv.'"AND ip_type="IPv6"');
//si no tiene asignado le damos el de admin.
if(!$this->ip4_servidor_dns){
//Compruebo si hay datos para el client_id 0 y si no existe pruebo con el 1. Es admin ya que este cliente no tiene ip4 ni ip6 asignadas
//Tomamos las de admin.
//Alguno de los dos tiene que existir por configuración de ispconfig.
$this->ip4_servidor_dns = $app->db->queryOneRecord(
'SELECT ip_type, ip_address FROM server_ip
WHERE client_id = "0" AND server_id = "'.$this->dns_serv.'" AND ip_type="IPv4"');
if(!$this->ip4_servidor_dns){
$this->ip4_servidor_dns = $app->db->queryOneRecord(
'SELECT ip_type, ip_address FROM server_ip
WHERE client_id = "1" AND server_id = "'.$this->dns_serv.'" AND ip_type="IPv4"');
}
}
if(!$this->ip6_servidor_dns){
//Compruebo si hay datos para el client_id 0 y si no existe pruebo con el 1. Es admin ya que este cliente no tiene ip4 ni ip6 asignadas
//Tomamos las de admin.
//Alguno de los dos tiene que existir por configuración de ispconfig.
//$this->ip4_servidor_dns = $app->db->queryOneRecord('SELECT ip_type, ip_address FROM server_ip WHERE client_id = "0" AND ip_type="IPv4"');
$this->ip6_servidor_dns = $app->db->queryOneRecord(
'SELECT ip_type, ip_address FROM server_ip
WHERE client_id = "0" AND server_id = "'.$this->dns_serv.'" AND ip_type="IPv6"');
if(!$this->ip6_servidor_dns){
$this->ip6_servidor_dns = $app->db->queryOneRecord(
'SELECT ip_type, ip_address FROM server_ip
WHERE client_id = "1" AND server_id = "'.$this->dns_serv.'" AND ip_type="IPv6"');
}
}
}
//Captura de las ips del servidor web
if($this->cli_id == 0){
//Compruebo si hay datos para el client_id 0 y si no existe pruebo con el 1.
//Alguno de los dos tiene que existir por configuración de ispconfig.
$this->ip4_servidor_web = $app->db->queryOneRecord(
'SELECT ip_type, ip_address FROM server_ip
WHERE client_id = "0" AND server_id = "'.$this->web_serv.'" AND ip_type="IPv4"');
$this->ip6_servidor_web = $app->db->queryOneRecord(
'SELECT ip_type, ip_address FROM server_ip
WHERE client_id = "0" AND server_id = "'.$this->web_serv.'" AND ip_type="IPv6"');
/*if(!$this->ip4_servidor_web){
$this->ip4_servidor_web = $app->db->queryOneRecord(
'SELECT ip_type, ip_address FROM server_ip
WHERE client_id = "1" AND server_id = "'.$this->web_serv.'" AND ip_type="IPv4"');
}
if(!$this->ip6_servidor_web){
$this->ip6_servidor_web = $app->db->queryOneRecord(
'SELECT ip_type, ip_address FROM server_ip
WHERE client_id = "1" AND server_id = "'.$this->web_serv.'" AND ip_type="IPv6"');
}*/
}else{//Comprobamos si el cliente tiene servidor asignado
$this->ip4_servidor_web = $app->db->queryOneRecord(
'SELECT ip_type, ip_address
FROM server_ip
WHERE client_id = "'.$this->cli_id.'" AND server_id = "'.$this->web_serv.'" AND ip_type="IPv4"');
$this->ip6_servidor_web = $app->db->queryOneRecord(
'SELECT ip_type, ip_address
FROM server_ip
WHERE client_id = "'.$this->cli_id.'" AND server_id = "'.$this->web_serv.'"AND ip_type="IPv6"');
//si no tiene asignado le damos el de admin.
if(!$this->ip4_servidor_web){
$this->ip4_servidor_web = $app->db->queryOneRecord(
'SELECT ip_type, ip_address FROM server_ip
WHERE client_id = "0" AND server_id = "'.$this->web_serv.'" AND ip_type="IPv4"');
/*if(!$this->ip4_servidor_web){
$this->ip4_servidor_web = $app->db->queryOneRecord(
'SELECT ip_type, ip_address FROM server_ip
WHERE client_id = "1" AND server_id = "'.$this->web_serv.'" AND ip_type="IPv4"');
}*/
}
if(!$this->ip6_servidor_web){
$this->ip6_servidor_web = $app->db->queryOneRecord(
'SELECT ip_type, ip_address FROM server_ip
WHERE client_id = "0" AND server_id = "'.$this->web_serv.'" AND ip_type="IPv6"');
/*if(!$this->ip6_servidor_web){
$this->ip6_servidor_web = $app->db->queryOneRecord(
'SELECT ip_type, ip_address FROM server_ip
WHERE client_id = "1" AND server_id = "'.$this->web_serv.'" AND ip_type="IPv6"');
}*/
}
}
//Captura de las ips del servidor bbdd
if($this->cli_id == 0){
//Compruebo si hay datos para el client_id 0 y si no existe pruebo con el 1.
//Alguno de los dos tiene que existir por configuración de ispconfig.
$this->ip4_servidor_bbdd = $app->db->queryOneRecord(
'SELECT ip_type, ip_address FROM server_ip
WHERE client_id = "0" AND server_id = "'.$this->bbdd_serv.'" AND ip_type="IPv4"');
$this->ip6_servidor_bbdd = $app->db->queryOneRecord(
'SELECT ip_type, ip_address FROM server_ip
WHERE client_id = "0" AND server_id = "'.$this->bbdd_serv.'" AND ip_type="IPv6"');
/*if(!$this->ip4_servidor_bbdd){
$this->ip4_servidor_bbdd = $app->db->queryOneRecord(
'SELECT ip_type, ip_address FROM server_ip
WHERE client_id = "1" AND server_id = "'.$this->bbdd_serv.'" AND ip_type="IPv4"');
}
if(!$this->ip6_servidor_bbdd){
$this->ip6_servidor_bbdd = $app->db->queryOneRecord(
'SELECT ip_type, ip_address FROM server_ip
WHERE client_id = "1" AND server_id = "'.$this->bbdd_serv.'" AND ip_type="IPv6"');
}*/
}else{//Comprobamos si el cliente tiene servidor asignado
$this->ip4_servidor_bbdd = $app->db->queryOneRecord(
'SELECT ip_type, ip_address
FROM server_ip
WHERE client_id = "'.$this->cli_id.'" AND server_id = "'.$this->bbdd_serv.'" AND ip_type="IPv4"');
$this->ip6_servidor_bbdd = $app->db->queryOneRecord(
'SELECT ip_type, ip_address
FROM server_ip
WHERE client_id = "'.$this->cli_id.'" AND server_id = "'.$this->bbdd_serv.'"AND ip_type="IPv6"');
//si no tiene asignado le damos el de admin.
if(!$this->ip4_servidor_bbdd){
//Compruebo si hay datos para el client_id 0 y si no existe pruebo con el 1. Es admin ya que este cliente no tiene ip4 ni ip6 asignadas
//Tomamos las de admin.
//Alguno de los dos tiene que existir por configuración de ispconfig.
$this->ip4_servidor_bbdd = $app->db->queryOneRecord(
'SELECT ip_type, ip_address FROM server_ip
WHERE client_id = "0" AND server_id = "'.$this->bbdd_serv.'" AND ip_type="IPv4"');
/*if(!$this->ip4_servidor_bbdd){
$this->ip4_servidor_bbdd = $app->db->queryOneRecord(
'SELECT ip_type, ip_address FROM server_ip
WHERE client_id = "1" AND server_id = "'.$this->bbdd_serv.'" AND ip_type="IPv4"');
}*/
}
if(!$this->ip6_servidor_bbdd){
$this->ip6_servidor_bbdd = $app->db->queryOneRecord(
'SELECT ip_type, ip_address FROM server_ip
WHERE client_id = "0" AND server_id = "'.$this->bbdd_serv.'" AND ip_type="IPv6"');
/*if(!$this->ip6_servidor_bbdd){
$this->ip6_servidor_bbdd = $app->db->queryOneRecord(
'SELECT ip_type, ip_address FROM server_ip
WHERE client_id = "1" AND server_id = "'.$this->bbdd_serv.'" AND ip_type="IPv6"');
}*/
}
}
//para el servidor ftp no se hacen comprobaciones
//ya que las ips son las mismas que para el servidor web.
//$la_ip4 = $app->db->queryOneRecord("SELECT ip_type, ip_address FROM server_ip WHERE ip_type='IPv4'");
$this->ip4_pdf = $this->ip4_servidor_dns['ip_address'];//$dns_ip_servidor['ip_address'];//$la_ip4['ip_address'];
/*print "IP4 DNS ";print_r($this->ip4_servidor_dns);print "
\n";
print "IP6 DNS ";print_r($this->ip6_servidor_dns);print "
\n";
print "IP4 WEB ";print_r($this->ip4_servidor_web);print "
\n";
print "IP6 WEB ";print_r($this->ip6_servidor_web);print "
\n";
print "IP4 BBDD ";print_r($this->ip4_servidor_bbdd);print "
\n";
print "IP6 BBDD ";print_r($this->ip6_servidor_bbdd);print "
\n";
echo('El cliente ' . $this->cli_id . '
');*/
if(!$this->ip4_servidor_dns['ip_address']){
$servicio_dns = $app->db->queryOneRecord(
'SELECT server_id, dns_server, server_name FROM server
WHERE server_id = "'.$this->dns_serv.'"');
$nom_serv_dns = $servicio_dns['server_name'];
$app->tform->errorMessage = $app->tform->wordbook['error_no_ip']. 'la IP4 para el servidor ' . $nom_serv_dns;
$this->onError();
return true;
}
if(!$this->ip6_servidor_dns['ip_address']){
$servicio_dns = $app->db->queryOneRecord(
'SELECT server_id, dns_server, server_name FROM server
WHERE server_id = "'.$this->dns_serv.'"');
$nom_serv_dns = $servicio_dns['server_name'];
$app->tform->errorMessage = $app->tform->wordbook['error_no_ip']. 'la IP6 para el servidor '. $nom_serv_dns;
$this->onError();
return true;
}
if(!$this->ip4_servidor_web['ip_address']){
$servidor_web = $app->db->queryOneRecord(
'SELECT server_id, web_server, server_name FROM server
WHERE server_id = "'.$this->web_serv.'"');
$nom_serv_web = $servidor_web['server_name'];
$app->tform->errorMessage = $app->tform->wordbook['error_no_ip']. 'la IP4 para el servidor ' . $nom_serv_web;
$this->onError();
return true;
}
if(!$this->ip6_servidor_web['ip_address']){
$servidor_web = $app->db->queryOneRecord(
'SELECT server_id, web_server, server_name FROM server
WHERE server_id = "'.$this->web_serv.'"');
$nom_serv_web = $servidor_web['server_name'];
$app->tform->errorMessage = $app->tform->wordbook['error_no_ip']. 'la IP6 para el servidor ' . $nom_serv_web;
$this->onError();
return true;
}
if(!$this->ip4_servidor_bbdd['ip_address']){
$servicio_db = $app->db->queryOneRecord(
'SELECT server_id, db_server, server_name FROM server
WHERE server_id = "'.$this->bbdd_serv.'"');
$nom_serv_db = $servicio_db['server_name'];
$app->tform->errorMessage = $app->tform->wordbook['error_no_ip']. 'la IP4 para el servidor ' . $nom_serv_db;
$this->onError();
return true;
}
if(!$this->ip6_servidor_bbdd['ip_address']){
$servicio_db = $app->db->queryOneRecord(
'SELECT server_id, db_server, server_name FROM server
WHERE server_id = "'.$this->bbdd_serv.'"');
$nom_serv_db = $servicio_db['server_name'];
$app->tform->errorMessage = $app->tform->wordbook['error_no_ip']. 'la IP6 para el servidor ' . $nom_serv_db;
$this->onError();
return true;
}
return false;
}
//Comprueba si los servidores asignados al usuario seleccionado tiene los servicios activos para cada caso.
function servidoresActivados(){
global $app, $conf;
$servicio_web = $app->db->queryOneRecord(
'SELECT server_id, web_server, server_name FROM server
WHERE server_id = "'.$this->web_serv.'"');
$nom_serv_web = $servicio_web['server_name'];
$servicio_dns = $app->db->queryOneRecord(
'SELECT server_id, dns_server, server_name FROM server
WHERE server_id = "'.$this->dns_serv.'"');
$nom_serv_dns = $servicio_dns['server_name'];
$servicio_ftp = $app->db->queryOneRecord(
'SELECT server_id, file_server, server_name FROM server
WHERE server_id = "'.$this->ftp_serv.'"');
$nom_serv_ftp = $servicio_ftp['server_name'];
$servicio_db = $app->db->queryOneRecord(
'SELECT server_id, db_server, server_name FROM server
WHERE server_id = "'.$this->bbdd_serv.'"');
$nom_serv_db = $servicio_db['server_name'];
//print "Servidor WEB ";print_r($servicio_web);print "
\n";
if($servicio_web['web_server'] == 0){
$app->tform->errorMessage = $app->tform->wordbook['error_activado_servidor'] . $nom_serv_web . ' el servicio WEB.';
$this->onError();
return true;
}
//print "Servidor DNS ";print_r($servicio_dns);print "
\n";
if($servicio_dns['dns_server'] == 0){
$app->tform->errorMessage = $app->tform->wordbook['error_activado_servidor'] . $nom_serv_dns . ' el servicio DNS.';
$this->onError();
return true;
}
//print "Servidor FTP ";print_r($servicio_ftp);print "
\n";
if($servicio_ftp['file_server'] == 0){
$app->tform->errorMessage = $app->tform->wordbook['error_activado_servidor'] . $nom_serv_ftp . ' el servicio FTP.';
$this->onError();
return true;
}
//print "Servidor DB ";print_r($servicio_db);print "
\n";
if($servicio_db['db_server'] == 0){
$app->tform->errorMessage = $app->tform->wordbook['error_activado_servidor'] . $nom_serv_db . ' el servicio DB.';
$this->onError();
return true;
}
/*$servidores = $app->db->queryAllRecords(
'SELECT server_id, server_name, web_server, dns_server, file_server, db_server FROM server');
foreach($servidores as $servidor){
$serv_web = $servidor['web_server'];
$serv_dns = $servidor['dns_server'];
$serv_ftp = $servidor['file_server'];
$serv_db = $servidor['db_server'];
$nombre_server = $servidor['server_name'];
//print "Todos los servidores ";print_r($servidor);print "
\n";
//Si alguno de los servidores no esta activo, mostramos error.
if($serv_web == 0){
$app->tform->errorMessage = $app->tform->wordbook['error_activado_servidor'] . $nombre_server . ' el servicio WEB';
$this->onError();
return true;
} else if($serv_dns == 0){
$app->tform->errorMessage = $app->tform->wordbook['error_activado_servidor'] . $nombre_server . ' el servicio DNS';
$this->onError();
return true;
} else if($serv_ftp == 0){
$app->tform->errorMessage = $app->tform->wordbook['error_activado_servidor'] . $nombre_server . ' el servicio FTP';
$this->onError();
return true;
} else if($serv_db == 0){
$app->tform->errorMessage = $app->tform->wordbook['error_activado_servidor'] . $nombre_server . ' el servicio DB';
$this->onError();
return true;
}*/
//}
return false;
}
//Comprobación de que tenemos instalada nuestra plantilla
function plantillaWebDNS(){
global $app;
if(!$app->db->queryOneRecord("SELECT name FROM dns_template WHERE name = 'webdns'")) {
$app->tform->errorMessage = $app->tform->wordbook['error_plantilla_webdns'];
$this->onError();
return true;
}
}
//Comprueba que no exista el dominio y que no tenga sitio web, puede tener sitio web y no tener dns.
function existeDominio($campos){
global $app, $conf;
//if($app->db->queryOneRecord('SELECT * FROM dns_soa WHERE origin LIKE "'.$campos['domain'].'%"')) {
if($app->db->queryOneRecord('SELECT * FROM dns_soa WHERE origin = "'.$campos['domain'].'."')) {
$app->tform->errorMessage = $app->tform->wordbook['domain_error_unique_webdns'];
$this->onError();
return true;
}
if($app->db->queryOneRecord('SELECT domain_id, domain FROM web_domain WHERE domain = "'.$campos['domain'].'"')) {
$app->tform->errorMessage = $app->tform->wordbook['error_sitio_web_existe'];
$this->onError();
return true;
}
/*if($app->tform->errorsMessage)
{
$this->onError();
return true;
}*/
}
public $ip4_ultima;
public $ip6_ultima;
//Creación del las dns y sitio web para un dominio.
function crearDnsSitioWeb($remoto){
global $app, $conf;
//Carga de los campos del formulario.
$fields = $app->tform->encode($this->dataRecord, $app->tform->getCurrentTab(), true);
//Carga del formulario dns_soa para guardar en base de datos.
$tform_def_file = "../dns/form/dns_soa.tform.php";
$app->tform->loadFormDef($tform_def_file);
//Carga y seleccion de dns_template, si no esta creado se informa de que tiene que crearse.
$template_record = $app->db->queryOneRecord(
"SELECT * FROM dns_template WHERE visible = 'Y' AND name = 'webdns'"); /*'open6hosting'");*/
/*print "DNS SERVER ";print_r($this->dns_serv);print "
\n";
print "WEB SERVER ";print_r($this->web_serv);print "
\n";
print "IP4 DNS ";print_r($this->ip4_servidor_dns);print "
\n";
print "IP6 DNS ";print_r($this->ip6_servidor_dns);print "
\n";
print "IP4 WEB ";print_r($this->ip4_servidor_web);print "
\n";
print "IP6 WEB ";print_r($this->ip6_servidor_web);print "
\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){
$this->ip4_ultima = $this->ip4_servidor_dns;
}
if($this->dns_serv && $this->ip6_servidor_dns){
$this->ip6_ultima = $this->ip6_servidor_dns;
}
if($this->web_serv && $this->ip4_servidor_web){
$this->ip4_ultima = $this->ip4_servidor_web;
}
if($this->web_serv && $this->ip6_servidor_web){
$this->ip6_ultima = $this->ip6_servidor_web;
}
$tpl_content = $template_record['template'];
// Reemplazo la variable que nos encontramos en base de datos por el valor que se ha introducido en el formulario
$tpl_content = str_replace('{DOMAIN}', $fields['domain'], $tpl_content);
//Carga de los datos en las variables de las ips.
$tpl_content = str_replace('{IP}', $this->ip4_ultima['ip_address'],/*$dns_ip_servidor['ip_address'],*/ $tpl_content);
$tpl_content = str_replace('{IPV6}', $this->ip6_ultima['ip_address'], /*$dns_ip_servidor_ipv6['ip_address'],*/ $tpl_content);
$enable_dnssec = 'N';//(($_POST['dns_dnssec'] == 'Y') ? 'Y' : 'N');
// Parse the template
$tpl_rows = explode("\n", $tpl_content);
$section = '';
$vars = array();
$vars['xfer']='';
$dns_rr = array();
foreach($tpl_rows as $row) {
$row = trim($row);
if(substr($row, 0, 1) == '[') {
if($row == '[ZONE]') {
$section = 'zone';
} elseif($row == '[DNS_RECORDS]') {
$section = 'dns_records';
} else {
die('Unknown section type');
}
} else {
if($row != '') {
// Handle zone section
if($section == 'zone') {
$parts = explode('=', $row);
$key = trim($parts[0]);
$val = trim($parts[1]);
if($key != '') $vars[$key] = $val;
}
// Handle DNS Record rows
if($section == 'dns_records') {
$parts = explode('|', $row);
$dns_rr[] = array(
'name' => $parts[1],
'type' => $parts[0],
'data' => $parts[2],
'aux' => $parts[3],
'ttl' => $parts[4]
);
}
}
}
} // end foreach
// Insert the soa record
$sys_userid = $this->cli_id;//$cliente_id_seleccionado;//$fields['client_group_id'];
$origin = $vars['origin'];
$ns = $vars['ns'];
$mbox = str_replace('@', '.', $vars['mbox']);
$refresh = $vars['refresh'];
$retry = $vars['retry'];
$expire = $vars['expire'];
$minimum = $vars['minimum'];
$ttl = $vars['ttl'];
$xfer = $vars['xfer'];
$also_notify = $vars['also_notify'];
$update_acl = $vars['update_acl'];
$serial = $app->validate_dns->increase_serial(0);
$insert_data = array(
"sys_userid" => $this->sys_usuario_id,//$sysUsuarioId,//$fields['client_group_id'],
"sys_groupid" => $this->cli_grupo_id,//$cliente_groupid,//$client_group_id,
"sys_perm_user" => 'riud',
"sys_perm_group" => 'riud',
"sys_perm_other" => '',
"server_id" => $this->dns_serv, //$dns_servidor,//$server_id,//$dns_servidor, //$server_id,//$dns_servidor['default_dnsserver'],
"origin" => $origin,
"ns" => $ns,
"mbox" => $mbox,
"serial" => $serial,
"refresh" => $refresh,
"retry" => $retry,
"expire" => $expire,
"minimum" => $minimum,
"ttl" => $ttl,
"active" => 'Y',
"xfer" => $xfer,
"also_notify" => $also_notify,
"update_acl" => $update_acl,
"dnssec_wanted" => $enable_dnssec
);
$dns_soa_id = $app->db->datalogInsert('dns_soa', $insert_data, 'id');
// Insert the dns_rr records
if(is_array($dns_rr) && $dns_soa_id > 0) {
foreach($dns_rr as $rr) {
$insert_data = array(
"sys_userid" => $this->sys_usuario_id,//$sysUsuarioId, //$fields['client_group_id'],
"sys_groupid" => $this->cli_grupo_id,//$cliente_groupid, //$client_group_id,
"sys_perm_user" => 'riud',
"sys_perm_group" => 'riud',
"sys_perm_other" => '',
"server_id" => $this->dns_serv,
"zone" => $dns_soa_id,
"name" => $rr['name'],
"type" => $rr['type'],
"data" => $rr['data'],
"aux" => $rr['aux'],
"ttl" => $rr['ttl'],
"active" => 'Y'
);
$dns_rr_id = $app->db->datalogInsert('dns_rr', $insert_data, 'id');
}
}
//sites_web_domain_add
$tform_def_file = "../sites/form/web_vhost_domain.tform.php";
$app->tform->loadFormDef($tform_def_file);
//print_r($fields);
//echo('La sesión user id ' . $_SESSION['s']['user']['userid']);
// add site
$paramsite = array(
'type' => 'vhost',
'domain' => $fields['domain'],
'server_id' => $this->web_serv,// $web_servidor, //$server_id,//$dns_servidor['default_webserver'],
//IMPORTANTE. Aquí no se ponen los campos sys_userid ni sys_groupid, el evento on_after_insert
//'sys_userid' => $sysUsuarioId, //$fields['client_group_id'],//$sys_userid,
//'sys_groupid' => $cliente_groupid,
'ip_address' => '*', //$dns_ip_servidor['ip_address'],
'ipv6_address' => $this->ip6_servidor_web['ip_address'], //$this->ip6_ultima['ip_address'], //$dns_ip_servidor_ipv6['ip_address'],
'traffic_quota' => '-1',
'hd_quota' => '0',
'cgi' => 'y',
'ssi' => 'y',
'suexec' => 'y',
'ruby' => 'n',
'python' => 'n',
'perl' => 'n',
'errordocs' => '1',
'subdomain' => 'www',
'php' => 'php-fpm',
'fastcgi_php_version' => '',
'seo_redirect' => '',
'rewrite_to_https' => 'n',
'allow_override' => 'All',
'http_port' => 80,
'https_port' => 443,
'apache_directives' => '',
'nginx_directives' => '',
'php_fpm_use_socket' => 'y',
'pm' => 'ondemand',
'pm_max_children' => 10,
'pm_start_servers' => 1,
'pm_min_spare_servers' => 1,
'pm_max_spare_servers' => 5,
'pm_process_idle_timeout' => 10,
'pm_max_requests' => 0,
'custom_php_ini' => '',
'active' => 'y',
'document_root' => '-',
'system_user' => '-',
'system_group' => '-',
'log_retention' => 30,
'client_group_id' => $this->cli_grupo_id,//$cliente_groupid, //$client_group_id,
);
//print 'Valores: ' . $dns_ip_servidor_ipv6 . " " . $formulario . " Parametros: " ;
//print ""; print_r($paramsite); print "
\n";
/*print ' cliente id ' . $fields['client_id'];
print "
";print_r($fields);print "
\n";*/
//print "Formulario ";print_r($formulario);print "
\n";
//$this->crearBaseDatosFtp($remote);
//print 'DNS IPV6 ' . $dns_ip_servidor_ipv6['ip_address'];
//IMPORTANTE. 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->cli_id, /*$cliente_id_seleccionado,*/ $paramsite, 'sites:web_vhost_domain:on_after_insert');
//print 'Sitio id '. $site_id;
}
function onSubmit() {
global $app, $conf;
if($this->plantillaWebDNS()){
return;
}
//Carga de campos del formulario.
$fields = $app->tform->encode($this->dataRecord, $app->tform->getCurrentTab(), true);
//Creo la clase remote para usar las librerias
$remote = new remote_actions;
if($this->tieneServidorIPs()){
return;
}
if($this->servidoresActivados()){
return;
}
if($this->existeDominio($fields)){
return;
}
//Esta variable nos llega por jQuery desde el htm para el control de errores en la vista.
if($_POST['create'] != 1)
{
$app->tform->errorMessage = 'DUMMY';
$app->tpl->setVar($this->dataRecord);
$this->onShow();
return;
}
/*echo ('Lo seleccionado ' . $fields['client_group_id'] . "
");
echo ('Tabla sys_group --> client id ' . $this->cli_id . "
");
echo ('Tabla sys_group --> groupid ' . $this->cli_grupo_id . "
");
echo ('Tabla sys_user --> userid ' . $this->sys_usuario_id . "
");
echo ('Tabla sys_user --> sys_groupid ' . $this->sys_grupo_id . "
");*/
//print "Subdomino: " . $this->subdomino . "