Ver código fonte

Creación de usuario base de datos, base de datos y usuario de ftp

master
root 8 anos atrás
pai
commit
90c0705596
8 arquivos alterados com 405 adições e 668 exclusões
  1. +30
    -123
      form/ftp_bd_service.tform.php
  2. +5
    -397
      ftp_bd_service.php
  3. +61
    -0
      lib/lang/en_ftp_bd_service.lng
  4. +61
    -0
      lib/lang/es_ftp_bd_service.lng
  5. +4
    -3
      lib/module.conf.php
  6. +109
    -9
      new_service_webdns.php
  7. +134
    -135
      templates/ftp_bd_service.htm
  8. +1
    -1
      version_webdns.php

+ 30
- 123
form/ftp_bd_service.tform.php Ver arquivo

@@ -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'
),
)
);
);


?>

+ 5
- 397
ftp_bd_service.php Ver arquivo

@@ -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 {


+ 61
- 0
lib/lang/en_ftp_bd_service.lng Ver arquivo

@@ -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';
?>

+ 61
- 0
lib/lang/es_ftp_bd_service.lng Ver arquivo

@@ -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';
?>

+ 4
- 3
lib/module.conf.php Ver arquivo

@@ -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',


+ 109
- 9
new_service_webdns.php Ver arquivo

@@ -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;


+ 134
- 135
templates/ftp_bd_service.htm Ver arquivo

@@ -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">&nbsp;</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">&nbsp;</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">&nbsp;</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>

+ 1
- 1
version_webdns.php Ver arquivo

@@ -23,7 +23,7 @@ require_once '../../lib/app.inc.php';
//$app->auth->check_module_permissions('help');

//if($_SESSION['s']['user']['typ'] == 'admin') {
echo '<p>&nbsp;</p><p>&nbsp;</p><p class="frmTextHead" style="text-align:center;">'.$app->lng('Versión de WebDNS:').' 1.1</p>';
echo '<p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p class="frmTextHead" style="text-align:center;">'.$app->lng('Versión de WebDNS:').' 1.2 develop</p>';
//}

?>

Carregando…
Cancelar
Salvar