| @@ -63,14 +63,15 @@ EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |||
| */ | |||
| $form["title"] = "Baicon, queso y Ftp con BBDD"; | |||
| $form["title"] = "Crear BBDD y FTP"; | |||
| $form["description"] = ""; | |||
| $form["name"] = "ftp_bd_service"; | |||
| $form["action"] = "ftp_bd_service.php"; | |||
| $form["db_table"] = "server"; | |||
| $form["db_table_idx"] = "server_id"; | |||
| $form["db_history"] = "no"; | |||
| $form["tab_default"] = "client"; | |||
| $form["db_history"] = "yes"; | |||
| $form["tab_default"] = "database_user"; | |||
| //$form["list_default"] = "database_user_list.php"; | |||
| $form["auth"] = 'yes'; // yes / no | |||
| $form["auth_preset"]["userid"] = 0; // 0 = id of the user, > 0 id must match with id of current user | |||
| @@ -79,35 +80,11 @@ $form["auth_preset"]["perm_user"] = 'riud'; //r = read, i = insert, u = update, | |||
| $form["auth_preset"]["perm_group"] = 'riud'; //r = read, i = insert, u = update, d = delete | |||
| $form["auth_preset"]["perm_other"] = ''; //r = read, i = insert, u = update, d = delete | |||
| $form["tabs"]['client'] = array( | |||
| 'title' => "Ftp vs BBDD", | |||
| 'description' => 'Create domain, mail domain, site, database and ftp/ssh', | |||
| $form["tabs"]['database_user'] = array ( | |||
| 'title' => "Altas", | |||
| 'width' => 100, | |||
| 'template' => "templates/ftp_bd_service.htm", | |||
| 'fields' => array ( | |||
| 'domain' => array ( | |||
| 'datatype' => 'VARCHAR', | |||
| 'formtype' => 'TEXT', | |||
| 'filters' => array( | |||
| 0 => array( 'event' => 'SAVE', | |||
| 'type' => 'IDNTOASCII'), | |||
| 1 => array( 'event' => 'SHOW', | |||
| 'type' => 'IDNTOUTF8'), | |||
| 2 => array( 'event' => 'SAVE', | |||
| 'type' => 'TOLOWER') | |||
| ), | |||
| 'validators' => array ( | |||
| 0 => array ( 'type' => 'NOTEMPTY', | |||
| 'errmsg'=> 'domain_error_empty'), | |||
| 2 => array ( 'type' => 'REGEX', | |||
| 'regex' => '/^[\w\.\-]{2,255}\.[a-zA-Z0-9\-]{2,30}$/', | |||
| 'errmsg'=> 'domain_error_regex'), | |||
| ), | |||
| 'default' => '', | |||
| 'value' => '', | |||
| 'width' => '30', | |||
| 'maxlength' => '255' | |||
| ), | |||
| 'client_id' => array ( | |||
| 'datatype' => 'INTEGER', | |||
| 'formtype' => 'SELECT', | |||
| @@ -119,112 +96,42 @@ $form["tabs"]['client'] = array( | |||
| ), | |||
| 'value' => '' | |||
| ), | |||
| 'template_id' => array( | |||
| 'parent_domain_id' => array ( | |||
| 'datatype' => 'INTEGER', | |||
| 'formtype' => 'SELECT', | |||
| 'default' => '', | |||
| 'datasource' => array ( 'type' => 'SQL', | |||
| 'querystring' => 'SELECT template_id, template_name FROM wizard_template WHERE {AUTHSQL} ORDER BY template_name', | |||
| 'keyfield'=> 'template_id', | |||
| 'valuefield'=> 'template_name' | |||
| 'querystring' => "SELECT web_domain.domain_id, CONCAT(web_domain.domain, ' :: ', server.server_name) AS parent_domain FROM web_domain, server WHERE web_domain.type = 'vhost' AND web_domain.server_id = server.server_id AND {AUTHSQL::web_domain} ORDER BY web_domain.domain", | |||
| 'keyfield'=> 'domain_id', | |||
| 'valuefield'=> 'parent_domain' | |||
| ), | |||
| 'value' => '', | |||
| ), | |||
| 'db' => array ( | |||
| 'datatype' => 'VARCHAR', | |||
| 'formtype' => 'CHECKBOX', | |||
| 'default' => 'y', | |||
| 'value' => array(0 => 'n', 1 => 'y') | |||
| ), | |||
| 'db_type' => array ( | |||
| 'datatype' => 'VARCHAR', | |||
| 'formtype' => 'SELECT', | |||
| 'default' => 'mysql', | |||
| 'value' => array( | |||
| //'mongo' => 'MongoDB', | |||
| 'mysql' => 'MySQL' | |||
| ) | |||
| ), | |||
| 'ftp' => array ( | |||
| 'datatype' => 'VARCHAR', | |||
| 'formtype' => 'CHECKBOX', | |||
| 'default' => 'y', | |||
| 'value' => array(0 => 'n', 1 => 'y') | |||
| ), | |||
| 'ssh' => array ( | |||
| 'datatype' => 'VARCHAR', | |||
| 'formtype' => 'CHECKBOX', | |||
| 'default' => 'y', | |||
| 'value' => array(0 => 'n', 1 => 'y') | |||
| 'value' => '' | |||
| ), | |||
| 'mail' => array ( | |||
| 'username' => array ( | |||
| 'datatype' => 'VARCHAR', | |||
| 'formtype' => 'CHECKBOX', | |||
| 'default' => 'y', | |||
| 'value' => array(0 => 'n', 1 => 'y') | |||
| ), | |||
| 'mailboxes' => array ( | |||
| 'datatype' => 'TEXT', | |||
| 'formtype' => 'TEXTAREA', | |||
| 'formtype' => 'TEXT', | |||
| 'validators' => array ( 0 => array ( 'type' => 'UNIQUE', | |||
| 'errmsg'=> 'username_error_unique'), | |||
| 1 => array ( 'type' => 'REGEX', | |||
| 'regex' => '/^[\w\.\-@\+]{0,64}$/', | |||
| 'errmsg'=> 'username_error_regex'), | |||
| ), | |||
| 'default' => '', | |||
| 'value' => '', | |||
| 'width' => '30', | |||
| 'maxlength' => '255', | |||
| 'searchable' => 1 | |||
| ), | |||
| 'dkim' => array ( | |||
| 'datatype' => 'VARCHAR', | |||
| 'formtype' => 'CHECKBOX', | |||
| 'default' => 'n', | |||
| 'value' => array(0 => 'n', 1 => 'y') | |||
| ), | |||
| 'dkim_private' => array ( | |||
| 'datatype' => 'TEXT', | |||
| 'formtype' => 'TEXTAREA', | |||
| 'default' => '', | |||
| 'value' => '', | |||
| 'cols' => '30', | |||
| 'rows' => '10', | |||
| 'validators' => array ( 0 => array ('type' => 'CUSTOM', | |||
| 'class' => 'validate_dkim', | |||
| 'function' => 'check_private_key', | |||
| 'errmsg'=> 'dkim_private_key_error'), | |||
| ), | |||
| ), | |||
| 'dkim_public' => array ( | |||
| 'datatype' => 'TEXT', | |||
| 'formtype' => 'TEXTAREA', | |||
| 'default' => '', | |||
| 'value' => '', | |||
| 'cols' => '30', | |||
| 'rows' => '10' | |||
| ), | |||
| 'dkim_selector' => array ( | |||
| 'datatype' => 'VARCHAR', | |||
| 'formtype' => 'TEXT', | |||
| 'default' => 'default', | |||
| 'value' => 'default', | |||
| 'width' => '20', | |||
| 'maxlength' => '63', | |||
| 'validators' => array ( 0 => array ( 'type' => 'REGEX', | |||
| 'regex' => '/^[a-z0-9]{0,63}$/', | |||
| 'errmsg'=> 'dkim_selector_error'), | |||
| ), | |||
| ), | |||
| 'dns' => array ( | |||
| 'username_prefix' => array ( | |||
| 'datatype' => 'VARCHAR', | |||
| 'formtype' => 'CHECKBOX', | |||
| 'default' => 'y', | |||
| 'value' => array(0 => 'n', 1 => 'y') | |||
| ), | |||
| 'dns_template_id' => array( | |||
| 'datatype' => 'INTEGER', | |||
| 'formtype' => 'SELECT', | |||
| 'formtype' => 'TEXT', | |||
| 'default' => '', | |||
| 'datasource' => array ( 'type' => 'SQL', | |||
| 'querystring' => "SELECT template_id, name FROM dns_template WHERE visible = 'Y' ORDER BY name ASC", | |||
| 'keyfield'=> 'template_id', | |||
| 'valuefield'=> 'name' | |||
| ), | |||
| 'value' => '', | |||
| 'value' => '', | |||
| 'width' => '30', | |||
| 'maxlength' => '25' | |||
| ), | |||
| ) | |||
| ); | |||
| ); | |||
| ?> | |||
| @@ -45,35 +45,11 @@ require_once '../../lib/app.inc.php'; | |||
| $app->auth->check_module_permissions('webdns'); | |||
| // Loading classes | |||
| $app->uses('tpl,tform,remoting'); | |||
| $app->uses('tpl,tform,remoting,tform_actions,tools_sites,remoting_lib'); | |||
| $app->load('tform_actions'); | |||
| class page_action extends tform_actions { | |||
| function onShowEnd() { | |||
| global $app, $conf; | |||
| $fields = $app->tform->encode($this->dataRecord, $app->tform->getCurrentTab(), true); | |||
| // select first template as default | |||
| if($fields['dns_template_id'] == 0) | |||
| { | |||
| $first_template = $app->db->queryOneRecord("SELECT template_id FROM dns_template WHERE visible = 'Y' ORDER BY name ASC"); | |||
| $fields['dns_template_id'] = $first_template['template_id']; | |||
| } | |||
| $template_record = $app->db->queryOneRecord("SELECT * FROM dns_template WHERE template_id = ?", $fields['dns_template_id']); | |||
| $fields = explode(',', $template_record['fields']); | |||
| if(is_array($fields)) { | |||
| foreach($fields as $field) { | |||
| $app->tpl->setVar($field."_VISIBLE", 1); | |||
| $field = strtolower($field); | |||
| $app->tpl->setVar($field, $_POST['dns_'.$field]); | |||
| } | |||
| } | |||
| parent::onShowEnd(); | |||
| } | |||
| function onSubmit() { | |||
| global $app, $conf; | |||
| @@ -113,319 +89,7 @@ class page_action extends tform_actions { | |||
| // add domain | |||
| $domain_id = $remote->insert_query('../client/form/domain.tform.php', $fields['client_id'], array('domain' => $fields['domain'])); | |||
| // DNS Zone | |||
| if($fields['dns']) | |||
| { | |||
| if(isset($_POST['dns_ns1']) && $_POST['dns_ns1'] != ''){ | |||
| $_POST['dns_ns1'] = $app->functions->idn_encode($_POST['dns_ns1']); | |||
| $_POST['dns_ns1'] = strtolower($_POST['dns_ns1']); | |||
| } | |||
| if(isset($_POST['dns_ns2']) && $_POST['dns_ns2'] != ''){ | |||
| $_POST['dns_ns2'] = $app->functions->idn_encode($_POST['dns_ns2']); | |||
| $_POST['dns_ns2'] = strtolower($_POST['dns_ns2']); | |||
| } | |||
| if(isset($_POST['dns_email']) && $_POST['dns_email'] != ''){ | |||
| $_POST['dns_email'] = $app->functions->idn_encode($_POST['dns_email']); | |||
| $_POST['dns_email'] = strtolower($_POST['dns_email']); | |||
| } | |||
| $dns_error = ''; | |||
| if(isset($_POST['dns_ip']) && $_POST['dns_ip'] == '') $dns_error .= $app->lng('error_ip_empty').'<br />'; | |||
| if(isset($_POST['dns_ipv6']) && $_POST['dns_ipv6'] == '') $dns_error .= $app->lng('error_ipv6_empty').'<br />'; | |||
| if(isset($_POST['dns_ns1']) && $_POST['dns_ns1'] == '') $dns_error .= $app->lng('error_ns1_empty').'<br />'; | |||
| elseif(isset($_POST['ns1']) && !preg_match('/^[\w\.\-]{2,64}\.[a-zA-Z0-9]{2,30}$/', $_POST['ns1'])) $dns_error .= $app->lng('error_ns1_regex').'<br />'; | |||
| if(isset($_POST['dns_ns2']) && $_POST['dns_ns2'] == '') $dns_error .= $app->lng('error_ns2_empty').'<br />'; | |||
| elseif(isset($_POST['ns2']) && !preg_match('/^[\w\.\-]{2,64}\.[a-zA-Z0-9]{2,30}$/', $_POST['ns2'])) $dns_error .= $app->lng('error_ns2_regex').'<br />'; | |||
| if(isset($_POST['dns_email']) && $_POST['dns_email'] == '') $dns_error .= $app->lng('error_email_empty').'<br />'; | |||
| elseif(isset($_POST['dns_email']) && filter_var($_POST['dns_email'], FILTER_VALIDATE_EMAIL) === false) $dns_error .= $app->lng('error_email_regex').'<br />'; | |||
| // check for dns errors | |||
| if($dns_error) | |||
| { | |||
| $app->tform->errorMessage = $dns_error; | |||
| $this->onError(); | |||
| return; | |||
| } | |||
| $tform_def_file = "../dns/form/dns_soa.tform.php"; | |||
| $app->tform->loadFormDef($tform_def_file); | |||
| // replace template placeholders | |||
| $template_record = $app->db->queryOneRecord("SELECT * FROM dns_template WHERE template_id = ?", $fields['dns_template_id']); | |||
| $tpl_content = $template_record['template']; | |||
| $tpl_content = str_replace('{DOMAIN}', $fields['domain'], $tpl_content); | |||
| if($_POST['dns_ip'] != '') $tpl_content = str_replace('{IP}', $_POST['dns_ip'], $tpl_content); | |||
| if($_POST['dns_ipv6'] != '') $tpl_content = str_replace('{IPV6}',$_POST['dns_ipv6'],$tpl_content); | |||
| if($_POST['dns_ns1'] != '') $tpl_content = str_replace('{NS1}', $_POST['dns_ns1'], $tpl_content); | |||
| if($_POST['dns_ns2'] != '') $tpl_content = str_replace('{NS2}', $_POST['dns_ns2'], $tpl_content); | |||
| if($_POST['dns_email'] != '') $tpl_content = str_replace('{EMAIL}', $_POST['dns_email'], $tpl_content); | |||
| $enable_dnssec = (($_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 | |||
| $dns_error = ''; | |||
| if($vars['origin'] == '') $dns_error .= $app->lng('error_origin_empty').'<br />'; | |||
| if($vars['ns'] == '') $dns_error .= $app->lng('error_ns_empty').'<br />'; | |||
| if($vars['mbox'] == '') $dns_error .= $app->lng('error_mbox_empty').'<br />'; | |||
| if($vars['refresh'] == '') $dns_error .= $app->lng('error_refresh_empty').'<br />'; | |||
| if($vars['retry'] == '') $dns_error .= $app->lng('error_retry_empty').'<br />'; | |||
| if($vars['expire'] == '') $dns_error .= $app->lng('error_expire_empty').'<br />'; | |||
| if($vars['minimum'] == '') $dns_error .= $app->lng('error_minimum_empty').'<br />'; | |||
| if($vars['ttl'] == '') $dns_error .= $app->lng('error_ttl_empty').'<br />'; | |||
| // check for dns errors | |||
| if($dns_error) | |||
| { | |||
| $app->tform->errorMessage = $dns_error; | |||
| $this->onError(); | |||
| return; | |||
| } | |||
| // Insert the soa record | |||
| $sys_userid = $_SESSION['s']['user']['userid']; | |||
| $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" => $sys_userid, | |||
| "sys_groupid" => $client_group_id, | |||
| "sys_perm_user" => 'riud', | |||
| "sys_perm_group" => 'riud', | |||
| "sys_perm_other" => '', | |||
| "server_id" => $template['dns_server_id'], | |||
| "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" => $sys_userid, | |||
| "sys_groupid" => $client_group_id, | |||
| "sys_perm_user" => 'riud', | |||
| "sys_perm_group" => 'riud', | |||
| "sys_perm_other" => '', | |||
| "server_id" => $template['dns_server_id'], | |||
| "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'); | |||
| } | |||
| if($fields['dkim']) | |||
| { | |||
| $insert_data = array( | |||
| "sys_userid" => $sys_userid, | |||
| "sys_groupid" => $client_group_id, | |||
| "sys_perm_user" => 'riud', | |||
| "sys_perm_group" => 'riud', | |||
| "sys_perm_other" => '', | |||
| "server_id" => $template['dns_server_id'], | |||
| "zone" => $dns_soa_id, | |||
| "name" => $fields['dkim_selector'].'._domainkey.'.$fields['domain'].'.', | |||
| "type" => 'TXT', | |||
| "data" => 'v=DKIM1; t=s; p='.str_replace(array('-----BEGIN PUBLIC KEY-----','-----END PUBLIC KEY-----',"\r","\n"), '', $_POST['dkim_public']), | |||
| "aux" => 0, | |||
| "ttl" => 86400, | |||
| "active" => 'Y' | |||
| ); | |||
| $dns_rr_id = $app->db->datalogInsert('dns_rr', $insert_data, 'id'); | |||
| } | |||
| } | |||
| $tform_def_file = "form/ftp_bd_service.tform.php"; | |||
| $app->tform->loadFormDef($tform_def_file); | |||
| } | |||
| if($fields['mail']) | |||
| { | |||
| // add mail domain | |||
| $params = array( | |||
| 'server_id' => $template['mail_server_id'], | |||
| 'domain' => $fields['domain'], | |||
| 'dkim' => $fields['dkim'], | |||
| 'dkim_private' => $_POST['dkim_private'], | |||
| 'dkim_public' => $_POST['dkim_public'], | |||
| 'dkim_selector' => $fields['dkim_selector'], | |||
| 'active' => 'y' | |||
| ); | |||
| $mail_domain_id = $remote->insert_query('../mail/form/mail_domain.tform.php', $fields['client_id'], $params); | |||
| if($template['policy']) | |||
| { | |||
| $params = array( | |||
| 'server_id' => $template['mail_server_id'], | |||
| 'policy_id' => $template['policy'], | |||
| 'priority' => 5, | |||
| 'email' => '@'.$fields['domain'], | |||
| 'fullname' => '@'.$fields['domain'], | |||
| 'local' => 'Y', | |||
| ); | |||
| $remote->insert_query('../mail/form/spamfilter_users.tform.php', $fields['client_id'], $params); | |||
| } | |||
| if($fields['mailboxes']) | |||
| { | |||
| $mailboxes = explode(',', $fields['mailboxes']); | |||
| $mailbox_passwords = array(); | |||
| foreach($mailboxes as $alias) | |||
| { | |||
| $alias = strtolower($app->functions->idn_encode($alias)); | |||
| $mailbox = $alias.'@'.$fields['domain']; | |||
| // validate, on error skip | |||
| if( ! preg_match('/^[_a-z0-9][\w\.\-_\+@]{1,63}$/', $mailbox)) continue; | |||
| $mailbox_passwords[$mailbox] = substr(sha1(rand()), 0, 10); | |||
| $params = array( | |||
| 'server_id' => $template['mail_server_id'], | |||
| 'uid' => -1, | |||
| 'gid' => -1, | |||
| 'email' => $mailbox, | |||
| 'login' => $mailbox, | |||
| 'password' => $mailbox_passwords[$mailbox], | |||
| 'quota' => $template['mailbox_quota']*1024*1024, | |||
| 'postfix' => 'y', | |||
| 'disableimap' => ($template['enableimap'] == 'y' ? 'n' : 'y'), | |||
| 'disablepop3' => ($template['enablepop3'] == 'y' ? 'n' : 'y'), | |||
| 'disablesmtp' => ($template['enablesmtp'] == 'y' ? 'n' : 'y'), | |||
| 'maildir' => '/var/vmail/'.$fields['domain'].'/'.$alias, | |||
| 'homedir' => '/var/vmail', | |||
| ); | |||
| $remote->insert_query('../mail/form/mail_user.tform.php', $fields['client_id'], $params); | |||
| } | |||
| } | |||
| } | |||
| // add site | |||
| $params = array( | |||
| 'type' => 'vhost', | |||
| 'domain' => $fields['domain'], | |||
| 'server_id' => $template['web_server_id'], | |||
| 'ip_address' => $template['ip_address'], | |||
| 'ipv6_address' => $template['ipv6_address'], | |||
| 'traffic_quota' => $template['traffic_quota'], | |||
| 'hd_quota' => $template['hd_quota'], | |||
| 'cgi' => $template['cgi'], | |||
| 'ssi' => $template['ssi'], | |||
| 'suexec' => $template['suexec'], | |||
| 'ruby' => $template['ruby'], | |||
| 'python' => $template['python'], | |||
| 'perl' => $template['perl'], | |||
| 'errordocs' => $template['errordocs'], | |||
| 'subdomain' => $template['subdomain'], | |||
| 'php' => $template['php'], | |||
| 'fastcgi_php_version' => $template['fastcgi_php_version'], | |||
| 'seo_redirect' => $template['seo_redirect'], | |||
| 'rewrite_to_https' => $template['rewrite_to_https'], | |||
| 'allow_override' => $template['allow_override'], | |||
| 'http_port' => $template['http_port'], | |||
| 'https_port' => $template['https_port'], | |||
| 'apache_directives' => $template['apache_directives'], | |||
| 'nginx_directives' => $template['nginx_directives'], | |||
| 'php_fpm_use_socket' => $template['php_fpm_use_socket'], | |||
| 'pm' => $template['pm'], | |||
| 'pm_max_children' => $template['pm_max_children'], | |||
| 'pm_start_servers' => $template['pm_start_servers'], | |||
| 'pm_min_spare_servers' => $template['pm_min_spare_servers'], | |||
| 'pm_max_spare_servers' => $template['pm_max_spare_servers'], | |||
| 'pm_process_idle_timeout' => $template['pm_process_idle_timeout'], | |||
| 'pm_max_requests' => $template['pm_max_requests'], | |||
| 'custom_php_ini' => $template['custom_php_ini'], | |||
| 'active' => 'y', | |||
| 'document_root' => '-', | |||
| 'system_user' => '-', | |||
| 'system_group' => '-', | |||
| 'client_group_id' => $client_group_id, | |||
| ); | |||
| $site_id = $remote->insert_query('../sites/form/web_vhost_domain.tform.php', $fields['client_id'], $params, 'sites:web_vhost_domain:on_after_insert'); | |||
| // 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); | |||
| //--------------------------------------------------- | |||
| // generate username | |||
| $generated_username = $client_prefix.substr(sha1(rand()), 0, 8); | |||
| @@ -477,31 +141,6 @@ class page_action extends tform_actions { | |||
| $remote->insert_query('../sites/form/ftp_user.tform.php', $fields['client_id'], $ftp_params); | |||
| } | |||
| if($fields['ssh']) { | |||
| // add ssh user | |||
| $ssh_params = array( | |||
| 'server_id' => $template['web_server_id'], | |||
| 'parent_domain_id' => $site_id, | |||
| 'quota_size' => $template['hd_quota'], | |||
| 'dir' => $site_data['document_root'], | |||
| 'puser' => $site_data['system_user'], | |||
| 'pgroup' => $site_data['system_group'], | |||
| 'sys_groupid' => $site_data['sys_groupid'], | |||
| 'chroot' => $template['shell_chroot'], | |||
| 'shell' => $template['shell'], | |||
| 'active' => 'y', | |||
| 'username' => $generated_username, | |||
| ); | |||
| // username, password | |||
| if(isset($ftp_params)) { | |||
| $ssh_params['password'] = $ftp_params['password']; | |||
| } else { | |||
| $ssh_params['password'] = substr(sha1(rand()), 0, 10); | |||
| } | |||
| $remote->insert_query('../sites/form/shell_user.tform.php', $fields['client_id'], $ssh_params); | |||
| } | |||
| // results | |||
| echo ' | |||
| @@ -511,9 +150,9 @@ class page_action extends tform_actions { | |||
| <div class="table-wrapper marginTop15"> | |||
| <table class="table"> | |||
| <thead class="dark"> | |||
| <tr> | |||
| <!--tr> | |||
| <th colspan="2">'.$fields['domain'].'</th> | |||
| </tr> | |||
| </tr--!> | |||
| </thead> | |||
| <tbody>'; | |||
| if(isset($db_user_params)) { | |||
| @@ -538,33 +177,7 @@ class page_action extends tform_actions { | |||
| <td>'.$ftp_params['password'].'</td> | |||
| </tr>'; | |||
| } | |||
| if(isset($ssh_params)) { | |||
| echo' | |||
| <tr class="info"> | |||
| <th>SSH user</th> | |||
| <th>SSH password</th> | |||
| </tr> | |||
| <tr> | |||
| <td>'.$ssh_params['username'].'</td> | |||
| <td>'.$ssh_params['password'].'</td> | |||
| </tr>'; | |||
| } | |||
| if(isset($mailbox_passwords) and (bool)count($mailbox_passwords)) | |||
| { | |||
| echo ' | |||
| <tr class="info"> | |||
| <th>Mailbox</th> | |||
| <th>Password</th> | |||
| </tr>'; | |||
| foreach($mailbox_passwords as $mail => $pass) | |||
| { | |||
| echo' | |||
| <tr> | |||
| <td>'.$mail.'</td> | |||
| <td>'.$pass.'</td> | |||
| </tr>'; | |||
| } | |||
| } | |||
| echo' | |||
| </tbody> | |||
| </table> | |||
| @@ -572,11 +185,6 @@ class page_action extends tform_actions { | |||
| '; | |||
| } | |||
| private function clean_private_key($key) | |||
| { | |||
| return str_replace('\r\n', '', $key); | |||
| } | |||
| } | |||
| class remote_actions extends remoting { | |||
| @@ -185,4 +185,65 @@ $wb['error_dominio_www'] = 'El dominio no es correcto. No escriba "www" antes de | |||
| $wb['error_no_existe_dominio_padre'] = 'El dominio padre para este subdominio, no existe.'; | |||
| $wb['error_no_ip'] = 'No tiene ip, necesita añadirla en la configuración.'; | |||
| $wb['error_subdominio_existe'] = 'Este subdominio existe.'; | |||
| $wb["nom_bd_txt"] = 'Nombre'; | |||
| $wb["usuario_bd_txt"] = 'Usuario'; | |||
| $wb["pass_bd_txt"] = 'Clave'; | |||
| $wb["usuario_ftp_txt"] = 'Usuario'; | |||
| $wb["clave_ftp_txt"] = 'Clave'; | |||
| $wb["database_user_txt"] = 'Database user'; | |||
| $wb["database_password_txt"] = 'Database password'; | |||
| $wb["password_strength_txt"] = 'Password strength'; | |||
| $wb["client_txt"] = 'Client'; | |||
| $wb["active_txt"] = 'Active'; | |||
| $wb["database_user_error_empty"] = 'Database user is empty.'; | |||
| $wb["database_user_error_unique"] = 'There is already a database user with this name on the server. To get a unique name, e.g. prepend your domain name to the username.'; | |||
| $wb["database_user_error_regex"] = 'Invalid database user name. The username may contain these characters: a-z, A-Z, 0-9 and the underscore. Length: 2 - 64 characters.'; | |||
| $wb["database_user_error_len"] = 'Database username - {user} - too long. The max. database username length incl. prefix is 16 chars.'; | |||
| $wb["btn_save_txt"] = 'Save'; | |||
| $wb["btn_cancel_txt"] = 'Cancel'; | |||
| $wb['generate_password_txt'] = 'Generate Password'; | |||
| $wb['repeat_password_txt'] = 'Repeat Password'; | |||
| $wb['password_mismatch_txt'] = 'The passwords do not match.'; | |||
| $wb['password_match_txt'] = 'The passwords do match.'; | |||
| $wb['globalsearch_resultslimit_of_txt'] = "of"; | |||
| $wb['globalsearch_resultslimit_results_txt'] = "results"; | |||
| $wb['globalsearch_noresults_text_txt'] = "No results."; | |||
| $wb['globalsearch_noresults_limit_txt'] = "0 results"; | |||
| $wb['globalsearch_searchfield_watermark_txt'] = "Search"; | |||
| $wb['globalsearch_suggestions_text_txt'] = "Suggestions"; | |||
| $wb['limit_database_user_txt'] = "The max. number of database users is reached."; | |||
| $wb['database_password_error_empty'] = 'Database password is empty.'; | |||
| $wb['uid_txt'] = 'Identificador de usuario (UID)'; | |||
| $wb['gid_txt'] = 'Identificador de grupo (GID)'; | |||
| $wb['dir_txt'] = 'Directorio'; | |||
| $wb['quota_files_txt'] = 'Cuota de archivos'; | |||
| $wb['quota_files_unity_txt'] = 'Archivos'; | |||
| $wb['ul_ratio_txt'] = 'Radio de subida'; | |||
| $wb['dl_ratio_txt'] = 'Radio de descarga'; | |||
| $wb['ul_bandwidth_txt'] = 'Ancho de banda de subida'; | |||
| $wb['dl_bandwidth_txt'] = 'Ancho de banda de bajada'; | |||
| $wb['server_id_txt'] = 'Servidor'; | |||
| $wb['parent_domain_id_txt'] = 'Sitio web'; | |||
| $wb['username_txt'] = 'Nombre de usuario'; | |||
| $wb['password_txt'] = 'Contraseña'; | |||
| $wb['password_strength_txt'] = 'Fortaleza de la contraseña'; | |||
| $wb['quota_size_txt'] = 'Cuota de disco'; | |||
| $wb['active_txt'] = 'Habilitado'; | |||
| $wb['limit_ftp_user_txt'] = 'Ha alcanzado en su cuenta el número máx. de usuarios FTP.'; | |||
| $wb['username_error_empty'] = 'El nombre de usuario está vacío.'; | |||
| $wb['username_error_unique'] = 'El nombre de usuario debe ser único.'; | |||
| $wb['username_error_regex'] = 'El nombre de usuario contiene caracteres inválidos.'; | |||
| $wb['quota_size_error_empty'] = 'La cuota está vacía.'; | |||
| $wb['uid_error_empty'] = 'GID está vacío.'; | |||
| $wb['directory_error_empty'] = 'El directorio está vacío.'; | |||
| $wb['directory_error_notinweb'] = 'El directorio no se encuentra dentro del directorio de inicio del sitio web.'; | |||
| $wb['parent_domain_id_error_empty'] = 'No se ha seleccionado un sitio web.'; | |||
| $wb['quota_size_error_regex'] = 'Cuota: ingrese -1 para ilimitado o un número > 0'; | |||
| $wb['dir_dot_error'] = 'No se permite .. en la ruta.'; | |||
| $wb['dir_slashdot_error'] = 'No se permite ./ en la ruta.'; | |||
| $wb['generate_password_txt'] = 'Generar contraseña'; | |||
| $wb['repeat_password_txt'] = 'Repetir contraseña'; | |||
| $wb['password_mismatch_txt'] = 'Las contraseñas no coinciden.'; | |||
| $wb['password_match_txt'] = 'Las contraseñas coinciden.'; | |||
| $wb['expires_txt'] = 'Expire at'; | |||
| ?> | |||
| @@ -185,4 +185,65 @@ $wb['error_dominio_www'] = 'El dominio no es correcto. No escriba "www" antes de | |||
| $wb['error_no_existe_dominio_padre'] = 'El dominio padre para este subdominio, no existe.'; | |||
| $wb['error_no_ip'] = 'No tiene ip, necesita añadirla en la configuración.'; | |||
| $wb['error_subdominio_existe'] = 'Este subdominio existe.'; | |||
| $wb["nom_bd_txt"] = 'Nombre'; | |||
| $wb["usuario_bd_txt"] = 'Usuario'; | |||
| $wb["pass_bd_txt"] = 'Clave'; | |||
| $wb["usuario_ftp_txt"] = 'Usuario'; | |||
| $wb["clave_ftp_txt"] = 'Clave'; | |||
| $wb["database_user_txt"] = 'Base de Datos Usuaio'; | |||
| $wb["database_password_txt"] = 'Password'; | |||
| $wb["password_strength_txt"] = 'Password fuerza'; | |||
| $wb["client_txt"] = 'Cliente'; | |||
| $wb["active_txt"] = 'Active'; | |||
| $wb["database_user_error_empty"] = 'Base de Datos usuario esta vacío.'; | |||
| $wb["database_user_error_unique"] = 'There is already a database user with this name on the server. To get a unique name, e.g. prepend your domain name to the username.'; | |||
| $wb["database_user_error_regex"] = 'Invalid database user name. The username may contain these characters: a-z, A-Z, 0-9 and the underscore. Length: 2 - 64 characters.'; | |||
| $wb["database_user_error_len"] = 'Database username - {user} - too long. The max. database username length incl. prefix is 16 chars.'; | |||
| $wb["btn_save_txt"] = 'Guardar'; | |||
| $wb["btn_cancel_txt"] = 'Cancelar'; | |||
| $wb['generate_password_txt'] = 'Generar Password'; | |||
| $wb['repeat_password_txt'] = 'Repetir Password'; | |||
| $wb['password_mismatch_txt'] = 'The passwords do not match.'; | |||
| $wb['password_match_txt'] = 'The passwords do match.'; | |||
| $wb['globalsearch_resultslimit_of_txt'] = "of"; | |||
| $wb['globalsearch_resultslimit_results_txt'] = "results"; | |||
| $wb['globalsearch_noresults_text_txt'] = "No results."; | |||
| $wb['globalsearch_noresults_limit_txt'] = "0 results"; | |||
| $wb['globalsearch_searchfield_watermark_txt'] = "Search"; | |||
| $wb['globalsearch_suggestions_text_txt'] = "Suggestions"; | |||
| $wb['limit_database_user_txt'] = "The max. number of database users is reached."; | |||
| $wb['database_password_error_empty'] = 'Base de Datos password esta vacío.'; | |||
| $wb['uid_txt'] = 'Identificador de usuario (UID)'; | |||
| $wb['gid_txt'] = 'Identificador de grupo (GID)'; | |||
| $wb['dir_txt'] = 'Directorio'; | |||
| $wb['quota_files_txt'] = 'Cuota de archivos'; | |||
| $wb['quota_files_unity_txt'] = 'Archivos'; | |||
| $wb['ul_ratio_txt'] = 'Radio de subida'; | |||
| $wb['dl_ratio_txt'] = 'Radio de descarga'; | |||
| $wb['ul_bandwidth_txt'] = 'Ancho de banda de subida'; | |||
| $wb['dl_bandwidth_txt'] = 'Ancho de banda de bajada'; | |||
| $wb['server_id_txt'] = 'Servidor'; | |||
| $wb['parent_domain_id_txt'] = 'Sitio web'; | |||
| $wb['username_txt'] = 'Nombre de usuario'; | |||
| $wb['password_txt'] = 'Contraseña'; | |||
| $wb['password_strength_txt'] = 'Fortaleza de la contraseña'; | |||
| $wb['quota_size_txt'] = 'Cuota de disco'; | |||
| $wb['active_txt'] = 'Habilitado'; | |||
| $wb['limit_ftp_user_txt'] = 'Ha alcanzado en su cuenta el número máx. de usuarios FTP.'; | |||
| $wb['username_error_empty'] = 'El nombre de usuario está vacío.'; | |||
| $wb['username_error_unique'] = 'El nombre de usuario debe ser único.'; | |||
| $wb['username_error_regex'] = 'El nombre de usuario contiene caracteres inválidos.'; | |||
| $wb['quota_size_error_empty'] = 'La cuota está vacía.'; | |||
| $wb['uid_error_empty'] = 'GID está vacío.'; | |||
| $wb['directory_error_empty'] = 'El directorio está vacío.'; | |||
| $wb['directory_error_notinweb'] = 'El directorio no se encuentra dentro del directorio de inicio del sitio web.'; | |||
| $wb['parent_domain_id_error_empty'] = 'No se ha seleccionado un sitio web.'; | |||
| $wb['quota_size_error_regex'] = 'Cuota: ingrese -1 para ilimitado o un número > 0'; | |||
| $wb['dir_dot_error'] = 'No se permite .. en la ruta.'; | |||
| $wb['dir_slashdot_error'] = 'No se permite ./ en la ruta.'; | |||
| $wb['generate_password_txt'] = 'Generar contraseña'; | |||
| $wb['repeat_password_txt'] = 'Repetir contraseña'; | |||
| $wb['password_mismatch_txt'] = 'Las contraseñas no coinciden.'; | |||
| $wb['password_match_txt'] = 'Las contraseñas coinciden.'; | |||
| $wb['expires_txt'] = 'Expire at'; | |||
| ?> | |||
| @@ -30,13 +30,14 @@ $items = array(); | |||
| $items[] = array( 'title' => 'Nuevo servicio web', | |||
| 'target' => 'content', | |||
| 'link' => 'webdns/new_service_webdns.php', | |||
| 'html_id' => 'new_service_webdns'); | |||
| 'html_id' => 'new_service_webdns' | |||
| ); | |||
| $items[] = array( 'title' => 'FTP con BD', | |||
| /*$items[] = array( 'title' => 'BBDD y FTP', | |||
| 'target' => 'content', | |||
| 'link' => 'webdns/ftp_bd_service.php', | |||
| 'html_id' =>'ftp_service' | |||
| ); | |||
| );*/ | |||
| $items[] = array( 'title' => 'Versión', | |||
| 'target' => 'content', | |||
| 'link' => 'webdns/version_webdns.php', | |||
| @@ -74,6 +74,73 @@ class page_action extends tform_actions { | |||
| public $no_ip = false; | |||
| function crearBaseDatosFtp($remoto){ | |||
| global $app, $conf; | |||
| $fields = $app->tform->encode($this->dataRecord, $app->tform->getCurrentTab(), true); | |||
| // generate username | |||
| $generated_username = $fields['client_id'].substr(sha1(rand()), 0, 8);//client_prefix.substr(sha1(rand()), 0, 8); | |||
| //print "<pre>"; print_r($generated_username); print "</pre>\n"; | |||
| $sitio_id = $app->db->queryOneRecord('SELECT domain_id, domain FROM web_domain WHERE domain = "'.$fields['domain'].'"'); | |||
| //print "<pre>"; print_r($camDnsRR); print "</pre>\n"; | |||
| $camDnsRR = $app->db->queryOneRecord('SELECT server_id, zone FROM dns_rr WHERE name LIKE "'.$this->dominio.'%"'); | |||
| // add database user | |||
| $db_user_params = array( | |||
| 'server_id' => $camDnsRR['server_id'], | |||
| 'database_user' => $generated_username, | |||
| 'database_password' => substr(sha1(rand()), 0, 10) | |||
| ); | |||
| //print "<pre>"; print_r($db_user_params); print "</pre>\n"; | |||
| //print "<pre>"; print_r($fields); print "</pre>\n"; | |||
| $db_user_id = $remoto->insert_query('../sites/form/database_user.tform.php', $fields['client_id'], $db_user_params, 'sites:web_database_user:on_after_insert'); | |||
| // add database | |||
| $paramsBD = array( | |||
| 'server_id' => $camDnsRR['server_id'], | |||
| 'parent_domain_id' => $sitio_id['domain_id'], | |||
| 'type' => 'y', | |||
| 'database_quota' => '-1', | |||
| 'database_name' => $db_user_params['database_user'], | |||
| 'database_user_id' => $db_user_id, | |||
| 'database_charset' => 'utf8', | |||
| 'remote_access' => 'n', | |||
| 'remote_ips' => '-1', | |||
| 'active' => 'y' | |||
| ); | |||
| //print "<pre>"; print_r($paramsBD); print "</pre>\n"; | |||
| //print "<pre>"; print_r($fields); print "</pre>\n"; | |||
| $remoto->sites_database_add($fields['client_id'], $paramsBD); | |||
| // 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); | |||
| // add ftp user | |||
| $ftp_params = array( | |||
| 'server_id' => $camDnsRR['server_id'],//$template['web_server_id'], | |||
| 'parent_domain_id' => $sitio_id['domain_id'],//$site_id, | |||
| 'username' => $generated_username, | |||
| 'password' => substr(sha1(rand()), 0, 10), | |||
| 'quota_size' => '-1',//$template['hd_quota'], | |||
| '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'], | |||
| 'active' => 'y', | |||
| ); | |||
| //print "<pre>"; print_r($ftp_params); print "</pre>\n"; | |||
| //print "<pre>"; print_r($site_data); print "</pre>\n"; | |||
| $remoto->insert_query('../sites/form/ftp_user.tform.php', $fields['client_id'], $ftp_params); | |||
| } | |||
| //Expresiones regulares para comprobar si es subdominio | |||
| function comprobarSubDominios($subdom) { | |||
| global $app, $conf; | |||
| @@ -81,10 +148,10 @@ class page_action extends tform_actions { | |||
| $patronSubDominos = "/(.*?)\.(.*)$/"; | |||
| $patronWWW = "/^w{3}/"; | |||
| //$patronPunto = '/(\.)/'; | |||
| $patronP1 = '/(^\.)/'; | |||
| /*$patronP1 = '/(^\.)/'; | |||
| $patronP2 = '/(\.$)/'; | |||
| $patronP3 = '/(\.\.+)/'; | |||
| $patronP4 = '/(\.[[:alpha:]]*)$/'; | |||
| $patronP4 = '/(\.[[:alpha:]]*)$/';*/ | |||
| //Se comprueba que no tenga 3 w "www" al principio del nombre del dominio o subdomino | |||
| $encontradoWWW = preg_match($patronWWW, $subdom, $coincidencias); | |||
| @@ -98,7 +165,6 @@ class page_action extends tform_actions { | |||
| $app->tform->errorMessage = $app->tform->wordbook['error_dominio_mas_puntos']; | |||
| return; | |||
| //$this->subdom_error = true; | |||
| } else if(substr_count($subdom,".") == 2){ | |||
| $this->encontrado = preg_match($patronSubDominos, $subdom, $coincidencias); | |||
| @@ -313,9 +379,10 @@ class page_action extends tform_actions { | |||
| if(!$this->subdom_error){ | |||
| $this->crearSitioWebSubdominio($remote); | |||
| } | |||
| $this->crearBaseDatosFtp($remote); | |||
| return; | |||
| } //else if(!$this->subdom_error){ | |||
| //$this->crearBaseDatosFtp($remote); | |||
| // check for domain unique name | |||
| if($app->db->queryOneRecord('SELECT domain_id FROM domain WHERE domain = "'.$fields['domain'].'"')) { | |||
| $app->tform->errorMessage = $app->tform->wordbook['domain_error_unique']; | |||
| @@ -345,7 +412,7 @@ class page_action extends tform_actions { | |||
| // add domain. Llamada que inserta el dominio en la tabla domain | |||
| $domain_id = $remote->insert_query('../client/form/domain.tform.php', $fields['client_id'], array('domain' => $fields['domain'])); | |||
| //$this->crearBaseDatosFtp($remote); | |||
| //Carga del formulario dns_soa para guardar en base de datos | |||
| $tform_def_file = "../dns/form/dns_soa.tform.php"; | |||
| @@ -583,17 +650,22 @@ class page_action extends tform_actions { | |||
| print "<pre>";print_r($fields);print "</pre>\n";*/ | |||
| //print "<pre>Formulario ";print_r($formulario);print "</pre>\n"; | |||
| //$this->crearBaseDatosFtp($remote); | |||
| //print 'DNS IPV6 ' . $dns_ip_servidor_ipv6['ip_address']; | |||
| //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 = $remote->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); | |||
| //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. | |||
| $app->tform->loadFormDef('form/new_service_webdns.tform.php'); | |||
| $this->crearBaseDatosFtp($remote); | |||
| //$remote->insert_query('../sites/form/web_vhost_domain.tform.php', $fields['client_id'], $paramsite); | |||
| //Si todo va bien, el resultado | |||
| @@ -616,15 +688,43 @@ class page_action extends tform_actions { | |||
| //parent::onSubmit(); | |||
| //}//FIN IF | |||
| //$this->crearBaseDatosFtp($remote); | |||
| } | |||
| } | |||
| class remote_actions extends remoting { | |||
| public function insert_query($formdef_file, $client_id, $params, $event_identifier = '') { | |||
| return $this->insertQuery($formdef_file, $client_id, $params, $event_identifier); | |||
| } | |||
| public function sites_database_add($client_id, $params){ | |||
| global $app; | |||
| $sql = $this->insertQueryPrepare('../sites/form/database.tform.php', $client_id, $params); | |||
| if($sql !== false) { | |||
| $app->uses('sites_database_plugin'); | |||
| $this->id = 0; | |||
| $this->dataRecord = $params; | |||
| $app->sites_database_plugin->processDatabaseInsert($this); | |||
| $retval = $this->insertQueryExecute($sql, $params); | |||
| // set correct values for backup_interval and backup_copies | |||
| if(isset($params['backup_interval']) || isset($params['backup_copies'])){ | |||
| $sql_set = array(); | |||
| if(isset($params['backup_interval'])) $sql_set[] = "backup_interval = '".$app->db->quote($params['backup_interval'])."'"; | |||
| if(isset($params['backup_copies'])) $sql_set[] = "backup_copies = ".$app->functions->intval($params['backup_copies']); | |||
| //$app->db->query("UPDATE web_database SET ".implode(', ', $sql_set)." WHERE database_id = ".$retval); | |||
| $this->updateQueryExecute("UPDATE web_database SET ".implode(', ', $sql_set)." WHERE database_id = ".$retval, $retval, $params); | |||
| } | |||
| return $retval; | |||
| } | |||
| return false; | |||
| } | |||
| } | |||
| $page = new page_action; | |||
| @@ -1,10 +1,21 @@ | |||
| <div class="form-group"> | |||
| <label class="col-sm-3 control-label">{tmpl_var name='password_strength_txt'}</label> | |||
| <div class="col-sm-9 checkbox"> | |||
| <div id="passBar"></div> | |||
| <span id="passText"> </span> | |||
| </div> | |||
| </div> | |||
| <div class="form-group"> | |||
| <label class="col-sm-3 control-label" for="domain">{tmpl_var name='domain_txt'}</label> | |||
| <div class="col-sm-9"> | |||
| <input class="form-control" id="domain" maxlength="255" name="domain" size="30" type="text" value="{tmpl_var name='domain'}"> | |||
| </div> | |||
| </div> | |||
| <div class="col-sm-offset-3 col-sm-9"> | |||
| <div id="confirmpasswordError" style="display:none;" class="confirmpassworderror">{tmpl_var name='password_mismatch_txt'}</div> | |||
| <div id="confirmpasswordOK" style="display:none;" class="confirmpasswordok">{tmpl_var name='password_match_txt'}</div> | |||
| </div> | |||
| </div> | |||
| <div class='page-header'> | |||
| </div> | |||
| <b>BBDD</b> | |||
| <div class="form-group"> | |||
| <label class="col-sm-3 control-label" for="client_id">{tmpl_var name='client_id_txt'}</label> | |||
| <div class="col-sm-9"> | |||
| @@ -14,145 +25,133 @@ | |||
| </div> | |||
| </div> | |||
| <!--div class="form-group"> | |||
| <label class="col-sm-3 control-label" for="template_id">{tmpl_var name='template_id_txt'}</label> | |||
| <div class="col-sm-9"> | |||
| <select class="form-control" id="template_id" name="template_id"> | |||
| {tmpl_var name='template_id'} | |||
| </select> | |||
| </div> | |||
| </div--!> | |||
| <input id="pass_bd" name="ver_bd_fuerza" type="hidden" value="0"> | |||
| <input id="pass_ftp" name="ver_ftp_fuerza" type="hidden" value="0"> | |||
| <div class="form-group"> | |||
| <label class="col-sm-3 control-label">{tmpl_var name='db_txt'}</label> | |||
| <div class="col-sm-9"> | |||
| {tmpl_var name='db'} | |||
| </div> | |||
| </div> | |||
| <tmpl_if name="is_admin"> | |||
| <!--div class="form-group"> | |||
| <label for="client_group_id" class="col-sm-3 control-label">{tmpl_var name='client_txt'}</label> | |||
| <div class="col-sm-9"><select name="client_group_id" id="client_group_id" class="form-control"> | |||
| {tmpl_var name='client_group_id'} | |||
| </select></div> | |||
| </div--> | |||
| </tmpl_if> | |||
| <tmpl_if name="is_reseller"> | |||
| <!--div class="form-group"> | |||
| <label for="client_group_id" class="col-sm-3 control-label">{tmpl_var name='client_txt'}</label> | |||
| <div class="col-sm-9"><select name="client_group_id" id="client_group_id" class="form-control"> | |||
| {tmpl_var name='client_group_id'} | |||
| </select></div> | |||
| </div--> | |||
| </tmpl_if> | |||
| <div class="form-group"> | |||
| <label for="database_user" class="col-sm-3 control-label">{tmpl_var name='database_user_txt'}</label> | |||
| <div class="col-sm-9"> | |||
| <div class="input-group"> | |||
| <span class="input-group-addon" id="database_user-desc">{tmpl_var name='database_user_prefix'}</span> | |||
| <input type="text" name="database_user" id="database_user" value="{tmpl_var name='database_user'}" class="form-control" aria-describedby="database_user-desc" /> | |||
| </div> | |||
| </div> | |||
| </div> | |||
| <div class="form-group"> | |||
| <label for="database_password" class="col-sm-3 control-label">{tmpl_var name='database_password_txt'}</label> | |||
| <div class="col-sm-9"> | |||
| <div class="input-group"> | |||
| <input type="password" name="database_password" id="database_password" value="{tmpl_var name='database_password'}" class="form-control" autocomplete="off" onkeyup="pass_check(this.value);checkPassMatch('database_password','repeat_password');" /> | |||
| <span class="input-group-btn"> | |||
| <button class="btn btn-default" type="button" onclick="generatePassword('database_password','repeat_password');">{tmpl_var name='generate_password_txt'}</button> | |||
| </span> | |||
| </div> | |||
| </div> | |||
| </div> | |||
| <!--div class="form-group"> | |||
| <label class="col-sm-3 control-label">{tmpl_var name='password_strength_txt'}</label> | |||
| <div class="col-sm-9 checkbox"> | |||
| <div id="passBar2"></div> | |||
| <span id="passText2"> </span> | |||
| </div> | |||
| </div--> | |||
| <div class="form-group"> | |||
| <label for="repeat_password" class="col-sm-3 control-label">{tmpl_var name='repeat_password_txt'}</label> | |||
| <div class="col-sm-9"><input type="password" name="repeat_password" id="repeat_password" value="" class="form-control" autocomplete="off" onkeyup="checkPassMatch('database_password','repeat_password');" /></div></div> | |||
| <!--div class="form-group"> | |||
| <div class="col-sm-offset-3 col-sm-9"> | |||
| <div id="confirmpasswordError" style="display:none;" class="confirmpassworderror">{tmpl_var name='password_mismatch_txt'}</div> | |||
| <div id="confirmpasswordOK" style="display:none;" class="confirmpasswordok">{tmpl_var name='password_match_txt'}</div> | |||
| </div> | |||
| </div--> | |||
| <div class="form-group db"> | |||
| <label class="col-sm-3 control-label" for="db_type">{tmpl_var name='db_type_txt'}</label> | |||
| <div class="col-sm-9"> | |||
| <select class="form-control" id="db_type" name="db_type"> | |||
| {tmpl_var name='db_type'} | |||
| </select> | |||
| </div> | |||
| </div> | |||
| <!--input type="hidden" name="id" value="{tmpl_var name='id'}"> | |||
| <div class="form-group"> | |||
| <label class="col-sm-3 control-label">{tmpl_var name='ftp_txt'}</label> | |||
| <div class="col-sm-9"> | |||
| {tmpl_var name='ftp'} | |||
| </div> | |||
| </div> | |||
| <div class="clear"><div class="right"> | |||
| <button class="btn btn-default formbutton-success" type="button" value="{tmpl_var name='btn_save_txt'}" data-submit-form="pageForm" data-form-action="sites/database_user_edit.php">{tmpl_var name='btn_save_txt'}</button> | |||
| <button class="btn btn-default formbutton-default" type="button" value="{tmpl_var name='btn_cancel_txt'}" data-load-content="sites/database_user_list.php">{tmpl_var name='btn_cancel_txt'}</button> | |||
| </div></div --> | |||
| <!--div class="form-group"> | |||
| <label class="col-sm-3 control-label">{tmpl_var name='ssh_txt'}</label> | |||
| <div class="col-sm-9"> | |||
| {tmpl_var name='ssh'} | |||
| </div> | |||
| </div> | |||
| <div class="form-group"> | |||
| <label class="col-sm-3 control-label">{tmpl_var name='mail_txt'}</label> | |||
| <div class="col-sm-9"> | |||
| {tmpl_var name='mail'} | |||
| </div> | |||
| </div> | |||
| <div class="form-group mail"> | |||
| <label for="mailboxes" class="col-sm-3 control-label">{tmpl_var name='mailboxes_txt'}</label> | |||
| <div class="col-sm-6"> | |||
| <textarea class="form-control" name="mailboxes" id="mailboxes" rows='3' cols='50'>{tmpl_var name='mailboxes'}</textarea> | |||
| </div> | |||
| <div class="col-sm-3">{tmpl_var name='mailboxes_help_txt'}</div> | |||
| </div> | |||
| <div class="form-group mail"> | |||
| <label class="col-sm-3 control-label">{tmpl_var name='dkim_txt'}</label> | |||
| <div class="col-sm-9"> | |||
| {tmpl_var name='dkim'} | |||
| </div> | |||
| </div> | |||
| <div class="form-group dkim"> | |||
| <label for="dkim_selector" class="col-sm-3 control-label">{tmpl_var name='dkim_selector_txt'}</label> | |||
| <div class="col-sm-9"> | |||
| <input type="text" name="dkim_selector" id="dkim_selector" value="{tmpl_var name='dkim_selector'}" class="form-control" /> | |||
| </div> | |||
| </div> | |||
| <div class="form-group dkim"> | |||
| <label for="dkim_private" class="col-sm-3 control-label">{tmpl_var name='dkim_private_txt'}</label> | |||
| <div class="col-sm-9"> | |||
| <textarea class="form-control" name="dkim_private" id="dkim_private" rows='10' cols='30'>{tmpl_var name='dkim_private'}</textarea> | |||
| </div> | |||
| </div> | |||
| <div class="form-group dkim"> | |||
| <div class="col-sm-9 col-sm-push-3"> | |||
| <a class="btn btn-default formbutton-default" href="javascript:setRequest('create')" value="{tmpl_var name='dkim_generate_txt'}">{tmpl_var name='dkim_generate_txt'}</a> | |||
| </div> | |||
| </div> | |||
| <div class="form-group dkim"> | |||
| <div class="col-sm-9"> | |||
| <textarea class="form-control" name="dkim_public" style="display:none;" id="dkim_public" rows='5' cols='30' readonly>{tmpl_var name='dkim_public'}</textarea> | |||
| </div> | |||
| <div class='page-header'> | |||
| </div> | |||
| <b>FTP</b> | |||
| <div class="form-group dkim"> | |||
| <label for="dns_record" class="col-sm-3 control-label">{tmpl_var name='dkim_dns_txt'}</label> | |||
| <div class="col-sm-9"> | |||
| <textarea class="form-control" name="dns_record" id="dns_record" rows='10' cols='30' readonly>{tmpl_var name='dns_record'}</textarea> | |||
| </div> | |||
| </div> | |||
| <div class="form-group"> | |||
| <label for="parent_domain_id" class="col-sm-3 control-label">{tmpl_var name='parent_domain_id_txt'}</label> | |||
| <div class="col-sm-9"><select name="parent_domain_id" id="parent_domain_id" class="form-control"> | |||
| {tmpl_var name='parent_domain_id'} | |||
| </select></div> | |||
| </div> | |||
| <div class="form-group"> | |||
| <label for="username" class="col-sm-3 control-label">{tmpl_var name='username_txt'}</label> | |||
| <div class="col-sm-9"> | |||
| <div class="input-group"> | |||
| <span class="input-group-addon" id="username-desc">{tmpl_var name='username_prefix'}</span> | |||
| <input type="text" name="username" id="username" value="{tmpl_var name='username'}" class="form-control" aria-describedby="username-desc" /> | |||
| </div> | |||
| </div> | |||
| </div> | |||
| <div class="form-group"> | |||
| <label for="passwordftp" class="col-sm-3 control-label">{tmpl_var name='password_txt'}</label> | |||
| <div class="col-sm-9"> | |||
| <div class="input-group"> | |||
| <input type="password" name="passwordftp" id="passwordftp" value="{tmpl_var name='passwordftp'}" class="form-control" autocomplete="off" onkeyup="pass_check(this.value);checkPassMatch('passwordftp','repeat_passwordftp');" /> | |||
| <span class="input-group-btn"> | |||
| <button class="btn btn-default" type="button" onclick="generatePassword('passwordftp','repeat_passwordftp');">{tmpl_var name='generate_password_txt'}</button> | |||
| </span> | |||
| </div> | |||
| </div> | |||
| </div> | |||
| <!--div class="form-group"> | |||
| <label class="col-sm-3 control-label">{tmpl_var name='password_strength_txt'}</label> | |||
| <div class="col-sm-9 checkbox"> | |||
| <div id="passBar"></div> | |||
| <span id="passText"> </span> | |||
| </div> | |||
| </div--> | |||
| <div class="form-group"> | |||
| <label for="repeat_passwordftp" class="col-sm-3 control-label">{tmpl_var name='repeat_password_txt'}</label> | |||
| <div class="col-sm-9"><input type="password" name="repeat_passwordftp" id="repeat_passwordftp" value="" class="form-control" autocomplete="off" onkeyup="checkPassMatch('passwordftp','repeat_passwordftp');" /></div></div> | |||
| <!--div class="form-group"> | |||
| <div class="col-sm-offset-3 col-sm-9"> | |||
| <div id="confirmpasswordError" style="display:none;" class="confirmpassworderror">{tmpl_var name='password_mismatch_txt'}</div> | |||
| <div id="confirmpasswordOK" style="display:none;" class="confirmpasswordok">{tmpl_var name='password_match_txt'}</div> | |||
| </div> | |||
| </div--> | |||
| <!--div class="form-group"> | |||
| <label for="quota_size" class="col-sm-3 control-label">{tmpl_var name='quota_size_txt'}</label> | |||
| <div class="col-sm-9"><div class="input-group"><input type="text" name="quota_size" id="quota_size" value="{tmpl_var name='quota_size'}" class="form-control" aria-describedby="quota_size-desc" /><span class="input-group-addon" id="quota_size-desc">MB</span></div></div> | |||
| </div> | |||
| <div class="form-group"> | |||
| <label class="col-sm-3 control-label">{tmpl_var name='active_txt'}</label> | |||
| <div class="col-sm-9"> | |||
| {tmpl_var name='active'} | |||
| </div> | |||
| </div--> | |||
| <div class="form-group"> | |||
| <label class="col-sm-3 control-label">{tmpl_var name='dns_txt'}</label> | |||
| <div class="col-sm-9"> | |||
| {tmpl_var name='dns'} | |||
| </div> | |||
| </div> | |||
| <div class="form-group dns"> | |||
| <label for="dns_template_id" class="col-sm-3 control-label">DNS {tmpl_var name='template_id_txt'}</label> | |||
| <div class="col-sm-9"><select name="dns_template_id" id="dns_template_id" class="form-control" onChange="ISPConfig.submitForm('pageForm','webdns/ftp_bd_service.php')"> | |||
| {tmpl_var name='dns_template_id'} | |||
| </select></div> | |||
| </div> | |||
| <tmpl_if name="IP_VISIBLE"> | |||
| <div class="form-group dns"> | |||
| <label for="dns_ip" class="col-sm-3 control-label">{tmpl_var name='ip_txt'}</label> | |||
| <div class="col-sm-9"><input type="text" name="dns_ip" id="dns_ip" value="{tmpl_var name='dns_ip'}" class="form-control" /></div></div> | |||
| </tmpl_if> | |||
| <tmpl_if name="IPV6_VISIBLE"> | |||
| <div class="form-group dns"> | |||
| <label for="dns_ipv6" class="col-sm-3 control-label">{tmpl_var name='ipv6_txt'}</label> | |||
| <div class="col-sm-9"><input type="text" name="dns_ipv6" id="dns_ipv6" value="{tmpl_var name='dns_ipv6'}" class="form-control" /></div></div> | |||
| </tmpl_if> | |||
| <tmpl_if name="NS1_VISIBLE"> | |||
| <div class="form-group dns"> | |||
| <label for="dns_ns1" class="col-sm-3 control-label">{tmpl_var name='ns1_txt'}</label> | |||
| <div class="col-sm-9"><input type="text" name="dns_ns1" id="dns_ns1" value="{tmpl_var name='dns_ns1'}" class="form-control" /></div></div> | |||
| </tmpl_if> | |||
| <tmpl_if name="NS2_VISIBLE"> | |||
| <div class="form-group dns"> | |||
| <label for="dns_ns2" class="col-sm-3 control-label">{tmpl_var name='ns2_txt'}</label> | |||
| <div class="col-sm-9"><input type="text" name="dns_ns2" id="dns_ns2" value="{tmpl_var name='dns_ns2'}" class="form-control" /></div></div> | |||
| </tmpl_if> | |||
| <tmpl_if name="EMAIL_VISIBLE"> | |||
| <div class="form-group dns"> | |||
| <label for="dns_email" class="col-sm-3 control-label">{tmpl_var name='email_txt'}</label> | |||
| <div class="col-sm-9"><input type="text" name="dns_email" id="dns_email" value="{tmpl_var name='dns_email'}" class="form-control" /></div></div> | |||
| </tmpl_if> | |||
| <tmpl_if name="DNSSEC_VISIBLE"> | |||
| <div class="form-group dns"> | |||
| <label for="dns_dnssec" class="col-sm-3 control-label">{tmpl_var name='dnssec_txt'}</label> | |||
| <div class="col-sm-9"><input type="checkbox" name="dns_dnssec" value="Y"></div></div> | |||
| </tmpl_if> | |||
| --!> | |||
| <input id="create_service" name="create" type="hidden" value="0"> | |||
| <form> | |||
| @@ -166,7 +165,7 @@ | |||
| </div> | |||
| </div> | |||
| <script type="text/javascript"> | |||
| <!-- script type="text/javascript"> | |||
| $("input[name=db]").change(function(){ | |||
| if($(this).is(':checked')) | |||
| { | |||
| @@ -254,5 +253,5 @@ | |||
| searchFieldWatermark: '', | |||
| resultBoxPosition: '' | |||
| }); | |||
| </script> | |||
| </script --!> | |||
| <script language="JavaScript" type="text/javascript" src="js/mail_domain_dkim.js"></script> | |||
| @@ -23,7 +23,7 @@ require_once '../../lib/app.inc.php'; | |||
| //$app->auth->check_module_permissions('help'); | |||
| //if($_SESSION['s']['user']['typ'] == 'admin') { | |||
| echo '<p> </p><p> </p><p class="frmTextHead" style="text-align:center;">'.$app->lng('Versión de WebDNS:').' 1.1</p>'; | |||
| echo '<p> </p><p> </p><p> </p><p class="frmTextHead" style="text-align:center;">'.$app->lng('Versión de WebDNS:').' 1.2 develop</p>'; | |||
| //} | |||
| ?> | |||