From 1b24f85aaa6d1db55285d164fed8cf278f1f9db9 Mon Sep 17 00:00:00 2001 From: David Ramos Date: Thu, 23 Nov 2017 10:32:45 +0100 Subject: [PATCH] Password autogenerado muy fuerte --- new_service_webdns.php | 295 +++++++++++++++++++++-------------------- version_webdns.php | 2 +- 2 files changed, 149 insertions(+), 148 deletions(-) diff --git a/new_service_webdns.php b/new_service_webdns.php index c1e3b5c..feb6515 100755 --- a/new_service_webdns.php +++ b/new_service_webdns.php @@ -82,31 +82,105 @@ class page_action extends tform_actions { public $pass_ftp_txt; + 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 iteraccion del bucle, añadiendo a la cadena $pass + //la letra correspondiente a la posicion $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 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); // generate username lo uso para generar el nombre del usuario y nombre BBDD y usuario FTP - $generated_username = $fields['client_id'].substr(sha1(rand()), 0, 8);//client_prefix.substr(sha1(rand()), 0, 8); + + $app->uses('ini_parser,getconf'); + $server_config_array = $app->getconf->get_global_config(); + + //Tomo el valor mínimo de dígitos que tiene que tener la contraseña + $min_password_length = 10; + //if(isset($server_config_array['misc']['min_password_length'])) { + $min_password_length = $app->functions->intval($server_config_array['misc']['min_password_length']); + //} + //print "Cantidad de digitos: " . $min_password_length; + //print 'La clave ' . $this->generaPass(); + + $generated_username = $fields['client_id'].substr(sha1(rand()), 0, 10);//client_prefix.substr(sha1(rand()), 0, 8); //print "
"; print_r($generated_username); 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.'%"'); - + $clavePass = $this->generaPass(); //*Recupero todos los prefix necesarios $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); $dbname_prefix = $app->tools_sites->replacePrefix($global_config['dbname_prefix'], $this->dataRecord); $ftpuser_prefix = $app->tools_sites->replacePrefix($global_config['ftpuser_prefix'], $this->dataRecord); - - + + /*if(isset($dbuser_prefix)){ + print 'BBDD prefix-->' . $dbuser_prefix . "<-->" . $generated_username; + }*/ // añado database user con su prefix $db_user_params = array( 'server_id' => $camDnsRR['server_id'], 'database_user' => $dbuser_prefix . $generated_username, - 'database_password' => substr(sha1(rand()), 0, 10) + 'database_password' => $clavePass//substr(sha1($dbuser_prefix . $generated_username), 0, 16) + //substr(sha1(rand()), 0, 20) ); $this->usuario_db_txt = $db_user_params['database_user']; @@ -147,20 +221,20 @@ class page_action extends tform_actions { // add ftp user $ftp_params = array( - 'server_id' => $camDnsRR['server_id'],//$template['web_server_id'], - 'parent_domain_id' => $sitio_id['domain_id'],//$site_id, + 'server_id' => $camDnsRR['server_id'], + 'parent_domain_id' => $sitio_id['domain_id'], 'username' => $ftpuser_prefix . $generated_username, - 'password' => substr(sha1(rand()), 0, 10), - 'quota_size' => '-1',//$template['hd_quota'], + 'password' => $clavePass,//substr(sha1(rand()), 0, 10), + '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',//$template['quota_files'], - 'ul_ratio' => '-1',//$template['ul_ratio'], - 'dl_ratio' => '-1',//$template['dl_ratio'], - 'ul_bandwidth' => '-1',//$template['ul_bandwidth'], - 'dl_bandwidth' => '-1',//$template['dl_bandwidth'], + 'quota_files' => '-1', + 'ul_ratio' => '-1', + 'dl_ratio' => '-1', + 'ul_bandwidth' => '-1', + 'dl_bandwidth' => '-1', 'active' => 'y', ); $this->usuario_ftp_txt = $ftp_params['username']; @@ -190,14 +264,7 @@ class page_action extends tform_actions { Nuevo dominio: '. $fields['domain'].'

Documento generado: ' . $hoy . '

'; - - - /*echo 'Decargar PDF';*/ - /*echo ''; -*/ $eldom = $fields['domain']; echo '
'; echo ''; @@ -208,28 +275,10 @@ class page_action extends tform_actions { echo ''; echo ''; echo ''; - /*echo ''; - echo 'FueraPDF'; - */ echo '
'; echo '
'; - - //echo ''; - /*echo 'Crear PDF';*/ - //$datos_test = 'Datos muchosssss datos'; - - //echo''; - //echo 'Pedefeando '.$datos_test.''; - - /*echo 'PDF'; -*/ - //echo ''; - } //Expresiones regulares para comprobar si es subdominio @@ -266,16 +315,10 @@ class page_action extends tform_actions { //print "Subdomino: " . $this->subdomino . "

\n Dominio: " . $this->domino; $this->es_subdominio = true; - } //print "
El dominio es: " . $this->dominio;
 		return $this->es_subdominio;
 	}
-	
-	function onAfterInsert(){
-	    global $app, $conf;
-	    $app->uses('sites_database_plugin');
-	}
 
 	//Crear subdominio
 	function crearSubDominio($remoto, $campoSubDominio){
@@ -336,12 +379,9 @@ class page_action extends tform_actions {
 			echo '

Se ha dado de alta Web y Subdominio, '.$this->subdominio.', ¡Correctamente!


'; - /*echo '

- Usuario de la Base de Datos: '. $this->usuario_db_txt .', Contraseña: ' . $this->pass_db_txt . '


'; - */ + //$this->onShow(); } - } function crearSitioWebSubdominio($remoto){ @@ -410,8 +450,6 @@ class page_action extends tform_actions { 'client_group_id' => $client_group_id, ); - - //$app->uses('remoting_lib'); //$formulario = $app->remoting_lib->loadFormDef('../sites/form/web_vhost_domain.tform.php'); //$formulario = $app->tform->loadFormDef('../sites/form/web_vhost_domain.tform.php'); @@ -423,18 +461,14 @@ class page_action extends tform_actions { print "
";print_r($fields);print "
\n" . $fields['client_id'];*/ //print "
Formulario ";print_r($formulario);print "
\n"; - //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_id'], $paramsite, 'sites:web_vhost_domain:on_after_insert');
 
 		//print '
ID sitio web del subdominio --> ' . $site_id;
-		
-
 	}
 
 	function tieneIPs(){
@@ -563,14 +597,13 @@ class page_action extends tform_actions {
 			}
 		} // end foreach
 		
-		
-
+	
 		//Llamada a la tabla client para recuperar el client_id y su default_dnsserver
 		$dns_servidor = $app->db->queryOneRecord("SELECT client_id, default_dnsserver, default_webserver FROM client WHERE client_id = ".$app->functions->intval($fields['client_id']));
 		$valor_recuperado1 = $dns_servidor['client_id'];
 		/*$valor_recuperado2 = $dns_servidor['default_dnsserver'];
-		$valor_recuperado3 = $dns_servidor['default_webserver'];
-*/
+		$valor_recuperado3 = $dns_servidor['default_webserver'];*/
+
 		// Insert the soa record
 		$sys_userid = $_SESSION['s']['user']['userid'];
 		$origin = $vars['origin'];
@@ -634,10 +667,8 @@ class page_action extends tform_actions {
 		//sites_web_domain_add
 		$tform_def_file = "../sites/form/web_vhost_domain.tform.php";
 		$app->tform->loadFormDef($tform_def_file);
-
-		//$app->remoting_lib->loadFormDef($tform_def_file);
 	
-	// add site
+		// add site
 		$paramsite = array(
 			'type' => 'vhost',
 			'domain' => $fields['domain'],
@@ -693,12 +724,6 @@ class page_action extends tform_actions {
 		//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_id'], $paramsite, 'sites:web_vhost_domain:on_after_insert');
 		//print 'Sitio id '. $site_id;
-		//$this->crearBaseDatosFtp($remote);
-		// get site data
-		/*$app->uses('remoting_lib');
-		$app->remoting_lib->loadFormDef('../sites/form/web_vhost_domain.tform.php');
-		$site_data = $app->remoting_lib->getDataRecord($site_id);*/
-
 	}
 
 	function onSubmit() {
@@ -712,7 +737,6 @@ class page_action extends tform_actions {
 		if($this->tieneIPs()){
 		    return;
 		}
-
 		if($this->existeDominio($fields)){
 			return;
 		}
@@ -737,21 +761,18 @@ class page_action extends tform_actions {
 		} else {
 
 			$this->crearSitioDns($remote);
-		
+			//$variablePHP = "";
 			//Si todo va bien, el resultado de la web y dns
 			echo '

Altas Web y DNS del dominio '.$fields['domain'].', ¡Creadas correctamente!


'; //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 el antes de ejecutarla. + //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); } - - } - } @@ -797,83 +818,63 @@ $page = new page_action; $page->onLoad(); +//IMPORTENTE, es necesario estas líneas para que el botón del pdf funcione. Activa el javascript +//echo ''; + + ?> + + + for(i = 0; i < upperlen; i++) { + password += upperchars.charAt(Math.floor(Math.random() * upperchars.length)); + } + + for(i = 0; i < num_special; i++) { + password += specialchars.charAt(Math.floor(Math.random() * specialchars.length)); + } + + for(i = 0; i < numericlen; i++) { + password += numchars.charAt(Math.floor(Math.random() * numchars.length)); + } + + password = password.split('').sort(function() { return 0.5 - Math.random(); }).join(''); + + return password; +}*/ + + \ No newline at end of file diff --git a/version_webdns.php b/version_webdns.php index fab3605..a19bd62 100755 --- a/version_webdns.php +++ b/version_webdns.php @@ -23,7 +23,7 @@ require_once '../../lib/app.inc.php'; //$app->auth->check_module_permissions('help'); //if($_SESSION['s']['user']['typ'] == 'admin') { - echo '

 

 

 

'.$app->lng('Versión de WebDNS:').' 1.2 develop

'; + echo '

 

 

 

'.$app->lng('Versión de WebDNS:').' 1.2

'; //} ?>