Bläddra i källkod

Commit Inicial

v1.1
Pablo Sarria 8 år sedan
incheckning
307daff946
14 ändrade filer med 1640 tillägg och 0 borttagningar
  1. +25
    -0
      LICENSE
  2. +12
    -0
      README.md
  3. +123
    -0
      form/new_service_webdns.tform.php
  4. +6
    -0
      lib/admin.conf.php
  5. +183
    -0
      lib/lang/en_new_service_webdns.lng
  6. +81
    -0
      lib/lang/en_template.lng
  7. +183
    -0
      lib/lang/es_new_service_webdns.lng
  8. +81
    -0
      lib/lang/es_template.lng
  9. +51
    -0
      lib/module.conf.php
  10. +12
    -0
      lib/remote.conf.php
  11. +58
    -0
      list/template.list.php
  12. +359
    -0
      new_service_webdns.php
  13. +429
    -0
      templates/new_service_webdns.htm
  14. +37
    -0
      webdns_db.sql

+ 25
- 0
LICENSE Visa fil

@@ -0,0 +1,25 @@
Copyright (c) 2016, Kristián Feldsam, FELDSAM s.r.o. <info@feldsam.cz>
All rights reserved.

Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:

- Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
- Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
- Neither the name of ISPConfig nor the names of its contributors
may be used to endorse or promote products derived from this software without
specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+ 12
- 0
README.md Visa fil

@@ -0,0 +1,12 @@
# ISPConfig WebDNS module

Este módulo crea las DNS y Sitio web introduciendo el dominio y un cliente.

This module is compatible with ISPConfig version 3.1.3

## Installation

-Crear nuevo registro en la tabla dns_template lanzando el archivo webdns_db.sql 'mysql -u root -p < webdns_db.sql'
-Copiar el módulo en la carpeta web de ispconfig.
-Activa el módulo desde ispconfig en System->CP Users->Admin User->Check "webdns" y guardar.
-Logout y login para ver el módulo.

+ 123
- 0
form/new_service_webdns.tform.php Visa fil

@@ -0,0 +1,123 @@
<?php
/*
Copyright (c) 2017, David Ramos García, Open6Hosting <dramos@open6hosting.com>
All rights reserved.

Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:

* Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
* Neither the name of ISPConfig nor the names of its contributors
may be used to endorse or promote products derived from this software without
specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

Form Definition

Tabledefinition

Datatypes:
- INTEGER (Forces the input to Int)
- DOUBLE
- CURRENCY (Formats the values to currency notation)
- VARCHAR (no format check, maxlength: 255)
- TEXT (no format check)
- DATE (Dateformat, automatic conversion to timestamps)

Formtype:
- TEXT (Textfield)
- TEXTAREA (Textarea)
- PASSWORD (Password textfield, input is not shown when edited)
- SELECT (Select option field)
- RADIO
- CHECKBOX
- CHECKBOXARRAY
- FILE

VALUE:
- Wert oder Array

Hint:
The ID field of the database table is not part of the datafield definition.
The ID field must be always auto incement (int or bigint).

Search:
- searchable = 1 or searchable = 2 include the field in the search
- searchable = 1: this field will be the title of the search result
- searchable = 2: this field will be included in the description of the search result


*/

$form["title"] = "Nuevo servicio Web";
$form["description"] = "";
$form["name"] = "new_service_webdns";
$form["action"] = "new_service_webdns.php";
$form["db_table"] = "server";
$form["db_table_idx"] = "server_id";
$form["db_history"] = "no";
$form["tab_default"] = "webdns";
$form["auth"] = 'yes'; // yes / no

$form["auth_preset"]["userid"] = 0; // 0 = id of the user, > 0 id must match with id of current user
$form["auth_preset"]["groupid"] = 0; // 0 = default groupid of the user, > 0 id must match with groupid of current user
$form["auth_preset"]["perm_user"] = 'riud'; //r = read, i = insert, u = update, d = delete
$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"]['webdns'] = array(
'title' => "Alta",
'description' => 'Crea un el sitio web y su dominio.',
'width' => 100,
'template' => "templates/new_service_webdns.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',
'default' => '',
'datasource' => array ( 'type' => 'SQL',
'querystring' => "SELECT sys_group.groupid, sys_group.client_id, sys_group.name, CONCAT(IF(client.company_name != '', CONCAT(client.company_name, ' :: '), ''), client.contact_name, ' (', client.username, IF(client.customer_no != '', CONCAT(', ', client.customer_no), ''), ')') as contactname FROM sys_group, client WHERE sys_group.client_id = client.client_id AND sys_group.client_id > 0 ORDER BY client.company_name, client.contact_name, sys_group.name",
'keyfield'=> 'client_id',
'valuefield'=> 'contactname'
),
'value' => ''
),
)
);

+ 6
- 0
lib/admin.conf.php Visa fil

@@ -0,0 +1,6 @@
<?php

/*
The admin.conf.php file contains menu definitions to be displayed in the administration module.
In this example there are none.
*/

+ 183
- 0
lib/lang/en_new_service_webdns.lng Visa fil

@@ -0,0 +1,183 @@
<?php
$wb["client_id_txt"] = 'Client';
$wb["domain_txt"] = 'Domain';
$wb["db_txt"] = 'Create DB';
$wb["db_type_txt"] = 'DB type';
$wb["ftp_txt"] = 'Create FTP';
$wb["ssh_txt"] = 'Create SSH';
$wb["domain_error_empty"] = 'The domain-name is empty';
$wb["domain_error_regex"] = 'This domain-name is not allowed';
$wb['domain_error_unique'] = 'The domain already exists';
$wb["template_id_txt"] = 'Template';
$wb["mail_txt"] = 'Create Mail';
$wb["mailboxes_txt"] = 'Mailboxes';
$wb["mailboxes_help_txt"] = 'Separated by comma, just mailbox name without @domain.tld';
$wb["dkim_txt"] = 'Enable DKIM';
$wb["dkim_private_txt"] = 'DKIM Private-key';
$wb["dkim_public_txt"] = 'DKIM Public-key\nfor information only';
$wb["dkim_generate_txt"] = 'Generate DKIM Private-key';
$wb["dkim_dns_txt"] = 'DNS-Record';
$wb["dkim_settings_txt"] = 'DomainKeys Identified Mail (DKIM)';
$wb['dkim_selector_txt'] = 'DKIM-Selector';
$wb["dkim_private_key_error"] = 'Invalid DKIM-Private key';
$wb["dns_txt"] = 'Create DNS Zone';
$wb['email_txt'] = 'Email';
$wb['dnssec_txt'] = 'Sign zone (DNSSEC)';
$wb['ns1_txt'] = 'NS 1';
$wb['ns2_txt'] = 'NS 2';
$wb['ip_txt'] = 'IP Address';
$wb['ipv6_txt'] = 'IPv6 Address';
$wb['error_origin_empty'] = 'Origin empty.';
$wb['error_ns_empty'] = 'NS empty.';
$wb['error_mbox_empty'] = 'Mbox empty.';
$wb['error_refresh_empty'] = 'Refresh empty.';
$wb['error_retry_empty'] = 'Retry empty.';
$wb['error_expire_empty'] = 'Expire empty.';
$wb['error_minimum_empty'] = 'Minimum empty.';
$wb['error_ttl_empty'] = 'TTL empty.';
$wb['error_domain_empty'] = 'Domain empty';
$wb['error_ip_empty'] = 'IP empty.';
$wb['error_ipv6_empty'] = 'IPv6 empty.';
$wb['error_ns1_empty'] = 'NS1 empty.';
$wb['error_ns2_empty'] = 'NS2 empty.';
$wb['error_email_empty'] = 'Email empty.';
$wb['error_domain_regex'] = 'Domain contains invalid characters.';
$wb['error_ns1_regex'] = 'NS1 contains invalid characters.';
$wb['error_ns2_regex'] = 'NS2 contains invalid characters.';
$wb['error_email_regex'] = 'Email does not contain a valid email address.';

$wb["backup_interval_txt"] = 'Backup interval';
$wb["backup_copies_txt"] = 'Number of backup copies';
$wb["ssl_state_txt"] = 'State';
$wb["ssl_locality_txt"] = 'Locality';
$wb["ssl_organisation_txt"] = 'Organisation';
$wb["ssl_organisation_unit_txt"] = 'Organisation Unit';
$wb["ssl_country_txt"] = 'Country';
$wb["ssl_key_txt"] = 'SSL Key';
$wb["ssl_request_txt"] = 'SSL Request';
$wb["ssl_cert_txt"] = 'SSL Certificate';
$wb["ssl_bundle_txt"] = 'SSL Bundle';
$wb["ssl_action_txt"] = 'SSL Action';
$wb["ssl_domain_txt"] = 'SSL Domain';
$wb["server_id_txt"] = 'Server';
$wb["domain_txt"] = 'Domain';
$wb['web_folder_error_regex'] = 'Invalid folder entered. Please do not enter a slash.';
$wb["type_txt"] = 'Type';
$wb["parent_domain_id_txt"] = 'Parent Website';
$wb["redirect_type_txt"] = 'Redirect Type';
$wb["redirect_path_txt"] = 'Redirect Path';
$wb["active_txt"] = 'Active';
$wb["document_root_txt"] = 'Documentroot';
$wb["system_user_txt"] = 'Linux User';
$wb["system_group_txt"] = 'Linux Group';
$wb["ip_address_txt"] = 'IPv4-Address';
$wb["ipv6_address_txt"] = 'IPv6-Address';
$wb["vhost_type_txt"] = 'VHost Type';
$wb["hd_quota_txt"] = 'Harddisk Quota';
$wb["traffic_quota_txt"] = 'Traffic Quota';
$wb["cgi_txt"] = 'CGI';
$wb["ssi_txt"] = 'SSI';
$wb["errordocs_txt"] = 'Own Error-Documents';
$wb["subdomain_txt"] = 'Auto-Subdomain';
$wb["ssl_txt"] = 'SSL';
$wb["suexec_txt"] = 'SuEXEC';
$wb["php_txt"] = 'PHP';
$wb["client_txt"] = 'Client';
$wb["limit_web_domain_txt"] = 'The max. number of web domains for your account is reached.';
$wb["limit_web_aliasdomain_txt"] = 'The max. number of aliasdomains for your account is reached.';
$wb["limit_web_subdomain_txt"] = 'The max. number of web subdomains for your account is reached.';
$wb["apache_directives_txt"] = 'Apache Directives';
$wb["domain_error_empty"] = 'Domain is empty.';
$wb["domain_error_unique"] = 'There is already a website or sub / aliasdomain with this domain name.';
$wb["domain_error_regex"] = 'Domain name invalid.';
$wb["domain_error_autosub"] = 'There is already a subdomain with these settings.';
$wb["hd_quota_error_empty"] = 'Harddisk quota is 0 or empty.';
$wb["traffic_quota_error_empty"] = 'Traffic quota is empty.';
$wb["error_ssl_state_empty"] = 'SSL State is empty.';
$wb["error_ssl_locality_empty"] = 'SSL Locality is empty.';
$wb["error_ssl_organisation_empty"] = 'SSL Organisation is empty.';
$wb["error_ssl_organisation_unit_empty"] = 'SSL Organisation Unit is empty.';
$wb["error_ssl_country_empty"] = 'SSL Country is empty.';
$wb["error_ssl_cert_empty"] = 'SSL Certificate field is empty';
$wb["client_group_id_txt"] = 'Client';
$wb["stats_password_txt"] = 'Set Webstatistics password';
$wb["allow_override_txt"] = 'Apache AllowOverride';
$wb["limit_web_quota_free_txt"] = 'Max. available Harddisk Quota';
$wb["ssl_state_error_regex"] = 'Invalid SSL State. Valid characters are: a-z, 0-9 and .,-_&äöüÄÖÜ';
$wb["ssl_locality_error_regex"] = 'Invalid SSL Locality. Valid characters are: a-z, 0-9 and .,-_&äöüÄÖÜ';
$wb["ssl_organisation_error_regex"] = 'Invalid SSL Organisation. Valid characters are: a-z, 0-9 and .,-_&äöüÄÖÜ';
$wb["ssl_organistaion_unit_error_regex"] = 'Invalid SSL Organisation Unit. Valid characters are: a-z, 0-9 and .,-_&äöüÄÖÜ';
$wb["ssl_country_error_regex"] = 'Invalid SSL Country. Valid characters are: A-Z';
$wb["limit_traffic_quota_free_txt"] = 'Max. available Traffic Quota';
$wb["redirect_error_regex"] = 'Invalid redirect path. Valid redirects are for example: /test/ or http://www.domain.tld/test/';
$wb["php_open_basedir_txt"] = 'PHP open_basedir';
$wb["traffic_quota_exceeded_txt"] = 'Traffic quota exceeded';
$wb["ruby_txt"] = 'Ruby';
$wb["stats_user_txt"] = 'Webstatistics username';
$wb["stats_type_txt"] = 'Webstatistics program';
$wb["custom_php_ini_txt"] = 'Custom php.ini settings';
$wb['none_txt'] = 'None';
$wb['disabled_txt'] = 'Disabled';
$wb['no_redirect_txt'] = 'No redirect';
$wb['no_flag_txt'] = 'No flag';
$wb['save_certificate_txt'] = 'Save certificate';
$wb['create_certificate_txt'] = 'Create certificate';
$wb['delete_certificate_txt'] = 'Delete certificate';
$wb["nginx_directives_txt"] = 'nginx Directives';
$wb["seo_redirect_txt"] = 'SEO Redirect';
$wb["non_www_to_www_txt"] = 'Non-www -&gt; www';
$wb["www_to_non_www_txt"] = 'www -&gt; non-www';
$wb["php_fpm_use_socket_txt"] = 'Use Socket For PHP-FPM';
$wb["error_no_sni_txt"] = 'SNI for SSL is not activated on this server. You can enable only one SSL certificate on each IP address.';
$wb["python_txt"] = 'Python';
$wb["perl_txt"] = 'Perl';
$wb["pm_max_children_txt"] = 'PHP-FPM pm.max_children';
$wb["pm_start_servers_txt"] = 'PHP-FPM pm.start_servers';
$wb["pm_min_spare_servers_txt"] = 'PHP-FPM pm.min_spare_servers';
$wb["pm_max_spare_servers_txt"] = 'PHP-FPM pm.max_spare_servers';
$wb["error_php_fpm_pm_settings_txt"] = 'Values of PHP-FPM pm settings must be as follows: pm.max_children &gt;= pm.max_spare_servers &gt;= pm.start_servers &gt;= pm.min_spare_servers &gt; 0';
$wb["pm_max_children_error_regex"] = 'PHP-FPM pm.max_children must be a positive integer value.';
$wb["pm_start_servers_error_regex"] = 'PHP-FPM pm.start_servers must be a positive integer value.';
$wb["pm_min_spare_servers_error_regex"] = 'PHP-FPM pm.min_spare_servers must be a positive integer value.';
$wb["pm_max_spare_servers_error_regex"] = 'PHP-FPM pm.max_spare_servers must be a positive integer value.';
$wb["hd_quota_error_regex"] = 'Harddisk quota is invalid.';
$wb["traffic_quota_error_regex"] = 'Traffic quota is invalid.';
$wb["fastcgi_php_version_txt"] = 'PHP Version';
$wb["pm_txt"] = 'PHP-FPM Process Manager';
$wb["pm_process_idle_timeout_txt"] = 'PHP-FPM pm.process_idle_timeout';
$wb["pm_max_requests_txt"] = 'PHP-FPM pm.max_requests';
$wb["pm_process_idle_timeout_error_regex"] = 'PHP-FPM pm.process_idle_timeout must be a positive integer value.';
$wb["pm_max_requests_error_regex"] = 'PHP-FPM pm.max_requests must be an integer value >= 0.';
$wb["pm_ondemand_hint_txt"] = 'Please note that you must have PHP version >= 5.3.9 in order to use the ondemand process manager. If you select ondemand for an older PHP version, PHP will not start anymore!';
$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['available_php_directive_snippets_txt'] = 'Available PHP Directive Snippets:';
$wb['available_apache_directive_snippets_txt'] = 'Available Apache Directive Snippets:';
$wb['available_nginx_directive_snippets_txt'] = 'Available nginx Directive Snippets:';
$wb['proxy_directives_txt'] = 'Proxy Directives';
$wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:';
$wb['no_server_error'] = 'No server selected.';
$wb['no_backup_txt'] = 'No backup';
$wb['daily_backup_txt'] = 'Daily';
$wb['weekly_backup_txt'] = 'Weekly';
$wb['monthly_backup_txt'] = 'Monthly';
$wb['rewrite_rules_txt'] = 'Rewrite Rules';
$wb['invalid_rewrite_rules_txt'] = 'Invalid Rewrite Rules';
$wb['allowed_rewrite_rule_directives_txt'] = 'Allowed Directives:';
$wb['configuration_error_txt'] = "CONFIGURATION ERROR";
$wb['variables_txt'] = 'Variables';
$wb['added_by_txt'] = 'Added by';
$wb['added_date_txt'] = 'Added date';
$wb['backup_excludes_txt'] = 'Excluded Directories';
$wb['backup_excludes_note_txt'] = '(Separate multiple directories with commas. Example: web/cache/*,web/backup)';
$wb['backup_excludes_error_regex'] = 'The excluded directories contain invalid characters.';
$wb['invalid_custom_php_ini_settings_txt'] = 'Invalid php.ini settings';
$wb['invalid_system_user_or_group_txt'] = 'Invalid system user or group';
$wb['apache_directive_blocked_error'] = 'Apache directive blocked by security settings:';
$wb['http_port_txt'] = 'HTTP Port';
$wb['https_port_txt'] = 'HTTPS Port';
$wb['http_port_error_regex'] = 'HTTP Port invalid.';
$wb['https_port_error_regex'] = 'HTTPS Port invalid.';
?>

+ 81
- 0
lib/lang/en_template.lng Visa fil

@@ -0,0 +1,81 @@
<?php
$wb["server_id_txt"] = 'Server';
$wb["ip_address_txt"] = 'IPv4-Address';
$wb["ipv6_address_txt"] = 'IPv6-Address';
$wb["traffic_quota_txt"] = 'Traffic Quota';
$wb['hd_quota_txt'] = 'Harddisk Quota';
$wb["cgi_txt"] = 'CGI';
$wb["ssi_txt"] = 'SSI';
$wb["errordocs_txt"] = 'Own Error-Documents';
$wb["subdomain_txt"] = 'Auto-Subdomain';
$wb["ssl_txt"] = 'SSL';
$wb["suexec_txt"] = 'SuEXEC';
$wb["php_txt"] = 'PHP';
$wb["perl_txt"] = 'Perl';
$wb["ruby_txt"] = 'Ruby';
$wb["python_txt"] = 'Python';
$wb["allow_override_txt"] = 'Apache AllowOverride';
$wb["fastcgi_php_version_txt"] = 'PHP Version';
$wb["pm_txt"] = 'PHP-FPM Process Manager';
$wb["pm_process_idle_timeout_txt"] = 'PHP-FPM pm.process_idle_timeout';
$wb["pm_max_requests_txt"] = 'PHP-FPM pm.max_requests';
$wb["pm_process_idle_timeout_error_regex"] = 'PHP-FPM pm.process_idle_timeout must be a positive integer value.';
$wb["pm_max_requests_error_regex"] = 'PHP-FPM pm.max_requests must be an integer value >= 0.';
$wb["pm_ondemand_hint_txt"] = 'Please note that you must have PHP version >= 5.3.9 in order to use the ondemand process manager. If you select ondemand for an older PHP version, PHP will not start anymore!';
$wb["pm_max_children_txt"] = 'PHP-FPM pm.max_children';
$wb["pm_start_servers_txt"] = 'PHP-FPM pm.start_servers';
$wb["pm_min_spare_servers_txt"] = 'PHP-FPM pm.min_spare_servers';
$wb["pm_max_spare_servers_txt"] = 'PHP-FPM pm.max_spare_servers';
$wb["error_php_fpm_pm_settings_txt"] = 'Values of PHP-FPM pm settings must be as follows: pm.max_children &gt;= pm.max_spare_servers &gt;= pm.start_servers &gt;= pm.min_spare_servers &gt; 0';
$wb["pm_max_children_error_regex"] = 'PHP-FPM pm.max_children must be a positive integer value.';
$wb["pm_start_servers_error_regex"] = 'PHP-FPM pm.start_servers must be a positive integer value.';
$wb["pm_min_spare_servers_error_regex"] = 'PHP-FPM pm.min_spare_servers must be a positive integer value.';
$wb["pm_max_spare_servers_error_regex"] = 'PHP-FPM pm.max_spare_servers must be a positive integer value.';
$wb["apache_directives_txt"] = 'Apache Directives';
$wb["nginx_directives_txt"] = 'Nginx Directives';
$wb["proxy_directives_txt"] = 'Proxy Directives';
$wb["custom_php_ini_txt"] = 'Custom php.ini settings';
$wb["seo_redirect_txt"] = 'SEO Redirect';
$wb['rewrite_to_https_txt'] = 'Rewrite HTTP to HTTPS';
$wb["no_redirect_txt"] = 'No redirect';
$wb["none_txt"] = 'None';
$wb["php_fpm_use_socket_txt"] = 'Use Socket For PHP-FPM';
$wb["traffic_quota_error_regex"] = 'Traffic quota is invalid.';
$wb['traffic_quota_error_empty'] = 'Traffic quota is empty.';
$wb['hd_quota_error_regex'] = 'Harddisk quota is invalid.';
$wb['hd_quota_error_empty'] = 'Harddisk quota is 0 or empty.';
$wb["btn_save_txt"] = 'Save';
$wb["btn_cancel_txt"] = 'Cancel';
$wb["variables_txt"] = 'Variables';
$wb["disabled_txt"] = 'Disabled';
$wb["template_name_txt"] = 'Template name';
$wb["template_name_error_empty"] = 'Template name can not be empty!';
$wb["policy_txt"] = 'Spamfilter';
$wb["no_policy"] = '- not enabled -';
$wb["dkim_txt"] = 'Enable DKIM';
$wb['dkim_selector_txt'] = 'DKIM-Selector';
$wb['dkim_selector_error'] = 'Invalid DKIM-Selector. Use only lower-case alphanumeric characters (a-z or 0-9) up to 63 chars';
$wb["remote_access_txt"] = 'Remote Access';
$wb["remote_ips_txt"] = 'Remote Access IPs (separate by , and leave blank for <i>any</i>)';
$wb["database_charset_txt"] = 'Database charset';
$wb["database_remote_error_ips"] = 'At least one of the entered ip addresses is invalid.';
$wb['limit_database_quota_txt'] = 'Database quota';
$wb['limit_database_quota_error_notint'] = 'The database quota limit must be a number.';
$wb["quota_files_txt"] = 'Filequota';
$wb["quota_files_unity_txt"] = 'Files';
$wb["ul_ratio_txt"] = 'Upload ratio';
$wb["dl_ratio_txt"] = 'Download ratio';
$wb["ul_bandwidth_txt"] = 'Upload bandwidth';
$wb["dl_bandwidth_txt"] = 'Download bandwidth';
$wb['shell_txt'] = "Shell";
$wb['chroot_txt'] = "Chroot Shell";
$wb['shell_error_regex'] = 'Invalid shell';
$wb['shell_error_empty'] = 'Shell is empty!';
$wb["enablesmtp_txt"] = 'Enable SMTP (sending)';
$wb["enableimap_txt"] = 'Enable IMAP';
$wb["enablepop3_txt"] = 'Enable POP3';
$wb["mailbox_quota_txt"] = 'Mailbox quota (0 for unlimited)';
$wb["quota_error_isint"] = 'Mailbox size must be a number.';
$wb["quota_error_value"] = 'Invalid quota value. Allowed values are: 0 for unlimited or numbers > 1';
$wb['http_port_txt'] = 'HTTP Port';
$wb['https_port_txt'] = 'HTTPS Port';

+ 183
- 0
lib/lang/es_new_service_webdns.lng Visa fil

@@ -0,0 +1,183 @@
<?php
$wb["client_id_txt"] = 'Cliente';
$wb["domain_txt"] = 'Dominio';
$wb["db_txt"] = 'Crear DB';
$wb["db_type_txt"] = 'Tipo DB';
$wb["ftp_txt"] = 'Crear FTP';
$wb["ssh_txt"] = 'Crear SSH';
$wb["domain_error_empty"] = 'El nombre del dominio esta vacio';
$wb["domain_error_regex"] = 'No se permite ese nombre de dominio';
$wb['domain_error_unique'] = 'El dominio ya existe';
$wb["template_id_txt"] = 'Plantilla';
$wb["mail_txt"] = 'Crear Correo';
$wb["mailboxes_txt"] = 'Buzones';
$wb["mailboxes_help_txt"] = 'Separados por coma, solo el nombre sin el parte @tudominio.com';
$wb["dkim_txt"] = 'Habilitar DKIM';
$wb["dkim_private_txt"] = 'Clave-privada DKIM';
$wb["dkim_public_txt"] = 'DKIM Clave-privada\npor informacion unicamente';
$wb["dkim_generate_txt"] = 'Generar Clave-privada DKIM';
$wb["dkim_dns_txt"] = 'DNS-Record';
$wb["dkim_settings_txt"] = 'DomainKeys Identified Mail (DKIM)';
$wb['dkim_selector_txt'] = 'Selector-DKIM';
$wb["dkim_private_key_error"] = 'Clave-privada DKIM erronea';
$wb["dns_txt"] = 'Crear Zona DNS';
$wb['email_txt'] = 'Email';
$wb['dnssec_txt'] = 'Firmar zona (DNSSEC)';
$wb['ns1_txt'] = 'NS 1';
$wb['ns2_txt'] = 'NS 2';
$wb['ip_txt'] = 'Direccion IP';
$wb['ipv6_txt'] = 'Direccion IPv6';
$wb['error_origin_empty'] = 'El campo Origin esta vacio.';
$wb['error_ns_empty'] = 'El campo NS esta vacio.';
$wb['error_mbox_empty'] = 'El campo Email esta vacio.';
$wb['error_refresh_empty'] = 'El campo Refresh esta vacio.';
$wb['error_retry_empty'] = 'El campo Retry esta vacio.';
$wb['error_expire_empty'] = 'El campo Expire esta vacio.';
$wb['error_minimum_empty'] = 'El campo Minimum esta vacio.';
$wb['error_ttl_empty'] = 'El campo TTL esta vacio.';
$wb['error_domain_empty'] = 'El campo Domain esta vacio';
$wb['error_ip_empty'] = 'El campo IP esta vacio.';
$wb['error_ipv6_empty'] = 'El campo IPv6 esta vacio.';
$wb['error_ns1_empty'] = 'El campo NS1 esta vacio.';
$wb['error_ns2_empty'] = 'El campo NS2 esta vacio.';
$wb['error_email_empty'] = 'El campo Email esta vacio.';
$wb['error_domain_regex'] = 'El dominio contiene caracteres erroneos.';
$wb['error_ns1_regex'] = 'NS1 contiene caracteres erroneos.';
$wb['error_ns2_regex'] = 'NS2 contiene caracteres erroneos.';
$wb['error_email_regex'] = 'El Email no contiene una direccion valida.';

$wb['backup_interval_txt'] = 'Intervalo de copia de seguridad';
$wb['backup_copies_txt'] = 'Número de copias de seguridad';
$wb['ssl_state_txt'] = 'Estado/Provincia';
$wb['ssl_locality_txt'] = 'Localidad';
$wb['ssl_organisation_txt'] = 'Organización';
$wb['ssl_organisation_unit_txt'] = 'Departamento de la organización';
$wb['ssl_country_txt'] = 'País';
$wb['ssl_request_txt'] = 'SSL Request';
$wb['ssl_cert_txt'] = 'SSL Certificate';
$wb['ssl_bundle_txt'] = 'SSL Bundle';
$wb['ssl_action_txt'] = 'SSL Action';
$wb['ssl_domain_txt'] = 'SSL Dominio';
$wb['server_id_txt'] = 'Servidor';
$wb['domain_txt'] = 'Dominio';
$wb['type_txt'] = 'Tipo';
$wb['parent_domain_id_txt'] = 'Sitio web padre';
$wb['redirect_type_txt'] = 'Tipo redirección';
$wb['redirect_path_txt'] = 'Ruta redirección';
$wb['active_txt'] = 'Activar';
$wb['document_root_txt'] = 'Documentroot';
$wb['system_user_txt'] = 'Usuario Linux';
$wb['system_group_txt'] = 'Grupo Linux';
$wb['ip_address_txt'] = 'IPv4-Address';
$wb['ipv6_address_txt'] = 'IPv6-Address';
$wb['vhost_type_txt'] = 'VHost Tipo';
$wb['hd_quota_txt'] = 'Couta disco duro';
$wb['traffic_quota_txt'] = 'Cuota de tráfico';
$wb['cgi_txt'] = 'CGI';
$wb['ssi_txt'] = 'SSI';
$wb['errordocs_txt'] = 'Documentos propios de error';
$wb['subdomain_txt'] = 'Auto-Subdominio';
$wb['ssl_txt'] = 'SSL';
$wb['suexec_txt'] = 'SuEXEC';
$wb['php_txt'] = 'PHP';
$wb['client_txt'] = 'Cliente';
$wb['limit_web_domain_txt'] = 'Se ha alcanzado el número máximo de dominios web de esta cuenta';
$wb['limit_web_aliasdomain_txt'] = 'Se ha alcanzado el número máximo de alias de dominios de esta cuenta';
$wb['limit_web_subdomain_txt'] = 'Se ha alcanzado el número máximo de subdominios web de esta cuenta';
$wb['apache_directives_txt'] = 'Directivas de Apache';
$wb['domain_error_empty'] = 'El dominio está vacío.';
$wb['domain_error_unique'] = 'Ya existe un sitio web o sub/aliasdominio con este nombre de dominio.';
$wb['domain_error_regex'] = 'El nombre de dominio no es válido';
$wb['hd_quota_error_empty'] = 'Cuota de disco duro es 0 o vacío.';
$wb['traffic_quota_error_empty'] = 'Cuota de tráfico está vacío.';
$wb['error_ssl_state_empty'] = 'Estado SSL está vacío.';
$wb['error_ssl_locality_empty'] = 'Sitio SSL está vacío.';
$wb['error_ssl_organisation_empty'] = 'SSL Organización está vacío.';
$wb['error_ssl_organisation_unit_empty'] = 'SSL Unidad de Organización está vacío.';
$wb['error_ssl_country_empty'] = 'País SSL está vacío.';
$wb['error_ssl_cert_empty'] = 'Campo de certificado SSL está vacío.';
$wb['client_group_id_txt'] = 'Cliente';
$wb['stats_password_txt'] = 'Contraseña de estadísticas Web ';
$wb['allow_override_txt'] = 'Apache AllowOverride';
$wb['limit_web_quota_free_txt'] = 'Max. cuota disco duro disponible';
$wb['ssl_state_error_regex'] = 'Estado no válido de SSL. Los caracteres válidos son: a-z, 0-9 y,-_.';
$wb['ssl_locality_error_regex'] = 'Invalid Sitio válido SSL. Los caracteres válidos son: a-z, 0-9 y,-_.';
$wb['ssl_organisation_error_regex'] = 'Organización no válido SSL. Los caracteres válidos son: a-z, 0-9 y,-_.';
$wb['ssl_organistaion_unit_error_regex'] = 'Unidad de Organización no válido SSL. Los caracteres válidos son: a-z, 0-9 y,-_.';
$wb['ssl_country_error_regex'] = 'País no válido SSL. Los caracteres válidos son: A-Z';
$wb['limit_traffic_quota_free_txt'] = 'Max. Cuota de tráfico disponible';
$wb['redirect_error_regex'] = 'Redirección no válida camino. Redirecciones válidos son, por ejemplo,: /test/ or http://www.domain.tld/test/';
$wb['php_open_basedir_txt'] = 'PHP open_basedir';
$wb['traffic_quota_exceeded_txt'] = 'Cuota de tráfico excedida';
$wb['ruby_txt'] = 'Ruby';
$wb['stats_user_txt'] = 'Estadísticas Web nombre de usuario';
$wb['stats_type_txt'] = 'Estadísticas Web del programa';
$wb['custom_php_ini_txt'] = 'Configuración personalizada de php.ini';
$wb['none_txt'] = 'Ninguno';
$wb['disabled_txt'] = 'Desactivado';
$wb['no_redirect_txt'] = 'No redirigir';
$wb['no_flag_txt'] = 'No flag';
$wb['save_certificate_txt'] = 'Guardar el certificado';
$wb['create_certificate_txt'] = 'Crear el certificado';
$wb['delete_certificate_txt'] = 'Eliminar certificado';
$wb['nginx_directives_txt'] = 'nginx Directives';
$wb['seo_redirect_txt'] = 'SEO Redirect';
$wb['non_www_to_www_txt'] = 'Non-www -> www';
$wb['www_to_non_www_txt'] = 'www -> non-www';
$wb['php_fpm_use_socket_txt'] = 'Usar Socket para PHP-FPM';
$wb['error_no_sni_txt'] = 'SNI para SSL no está activado en este servidor. Sólo es posible activar un certificado SSL en cada dirección IP.';
$wb['python_txt'] = 'Python';
$wb['pm_max_children_txt'] = 'PHP-FPM pm.max_children';
$wb['pm_start_servers_txt'] = 'PHP-FPM pm.start_servers';
$wb['pm_min_spare_servers_txt'] = 'PHP-FPM pm.min_spare_servers';
$wb['pm_max_spare_servers_txt'] = 'PHP-FPM pm.max_spare_servers';
$wb['error_php_fpm_pm_settings_txt'] = 'Los valores de configuración de PHP-FPM pm debe ser como sigue: pm.max_children> = pm.max_spare_servers> = pm.start_servers> = pm.min_spare_servers> 0';
$wb['pm_max_children_error_regex'] = 'PHP-FPM pm.max_children debe ser un valor entero positivo.';
$wb['pm_start_servers_error_regex'] = 'PHP-FPM pm.start_servers debe ser un valor entero positivo.';
$wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers debe ser un valor entero positivo.';
$wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers debe ser un valor entero positivo.';
$wb['ssl_key_txt'] = 'SSL Key';
$wb['web_folder_error_regex'] = 'Invalid folder entered. Please do not enter a slash.';
$wb['domain_error_autosub'] = 'There is already a subdomain with these settings.';
$wb['perl_txt'] = 'Perl';
$wb['hd_quota_error_regex'] = 'Harddisk quota is invalid.';
$wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.';
$wb['fastcgi_php_version_txt'] = 'PHP Version';
$wb['pm_txt'] = 'PHP-FPM Process Manager';
$wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout';
$wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests';
$wb['pm_process_idle_timeout_error_regex'] = 'PHP-FPM pm.process_idle_timeout must be a positive integer value.';
$wb['pm_max_requests_error_regex'] = 'PHP-FPM pm.max_requests must be an integer value >= 0.';
$wb['pm_ondemand_hint_txt'] = 'Please note that you must have PHP version >= 5.3.9 in order to use the ondemand process manager. If you select ondemand for an older PHP version, PHP will not start anymore!';
$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['available_php_directive_snippets_txt'] = 'Available PHP Directive Snippets:';
$wb['available_apache_directive_snippets_txt'] = 'Available Apache Directive Snippets:';
$wb['available_nginx_directive_snippets_txt'] = 'Available nginx Directive Snippets:';
$wb['proxy_directives_txt'] = 'Proxy Directives';
$wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:';
$wb['no_server_error'] = 'No server selected.';
$wb['no_backup_txt'] = 'No backup';
$wb['daily_backup_txt'] = 'Daily';
$wb['weekly_backup_txt'] = 'Weekly';
$wb['monthly_backup_txt'] = 'Monthly';
$wb['rewrite_rules_txt'] = 'Rewrite Rules';
$wb['invalid_rewrite_rules_txt'] = 'Invalid Rewrite Rules';
$wb['allowed_rewrite_rule_directives_txt'] = 'Allowed Directives:';
$wb['configuration_error_txt'] = 'CONFIGURATION ERROR';
$wb['variables_txt'] = 'Variables';
$wb['added_by_txt'] = 'Added by';
$wb['added_date_txt'] = 'Added date';
$wb['backup_excludes_txt'] = 'Excluded Directories';
$wb['backup_excludes_note_txt'] = '(Separate multiple directories with commas. Example: web/cache/*,web/backup)';
$wb['backup_excludes_error_regex'] = 'The excluded directories contain invalid characters.';
$wb['invalid_custom_php_ini_settings_txt'] = 'Invalid php.ini settings';
$wb['invalid_system_user_or_group_txt'] = 'Invalid system user or group';
$wb['apache_directive_blocked_error'] = 'Apache directive blocked by security settings:';
$wb['http_port_txt'] = 'HTTP Port';
$wb['https_port_txt'] = 'HTTPS Port';
$wb['http_port_error_regex'] = 'HTTP Port invalid.';
$wb['https_port_error_regex'] = 'HTTPS Port invalid.';
?>

+ 81
- 0
lib/lang/es_template.lng Visa fil

@@ -0,0 +1,81 @@
<?php
$wb["server_id_txt"] = 'Servidor';
$wb["ip_address_txt"] = 'Direccion IPv4';
$wb["ipv6_address_txt"] = 'Direccion IPv6';
$wb["traffic_quota_txt"] = 'Cuota trafico';
$wb['hd_quota_txt'] = 'Cuota disco';
$wb["cgi_txt"] = 'CGI';
$wb["ssi_txt"] = 'SSI';
$wb["errordocs_txt"] = 'Error-Documents personalizados';
$wb["subdomain_txt"] = 'Auto-Subdominio';
$wb["ssl_txt"] = 'SSL';
$wb["suexec_txt"] = 'SuEXEC';
$wb["php_txt"] = 'PHP';
$wb["perl_txt"] = 'Perl';
$wb["ruby_txt"] = 'Ruby';
$wb["python_txt"] = 'Python';
$wb["allow_override_txt"] = 'Apache AllowOverride';
$wb["fastcgi_php_version_txt"] = 'Version PHP';
$wb["pm_txt"] = 'PHP-FPM Process Manager';
$wb["pm_process_idle_timeout_txt"] = 'PHP-FPM pm.process_idle_timeout';
$wb["pm_max_requests_txt"] = 'PHP-FPM pm.max_requests';
$wb["pm_process_idle_timeout_error_regex"] = 'El valor PHP-FPM pm.process_idle_timeout debe ser valor de entero positivo.';
$wb["pm_max_requests_error_regex"] = 'El valor PHP-FPM pm.max_requests debe ser un valor entero >= 0.';
$wb["pm_ondemand_hint_txt"] = 'Por favor verifica que la version PHP es >= 5.3.9 para usar process manager ondemand. Si seleccionas ondemand para una version mas antigua PHP no se iniciara!';
$wb["pm_max_children_txt"] = 'PHP-FPM pm.max_children';
$wb["pm_start_servers_txt"] = 'PHP-FPM pm.start_servers';
$wb["pm_min_spare_servers_txt"] = 'PHP-FPM pm.min_spare_servers';
$wb["pm_max_spare_servers_txt"] = 'PHP-FPM pm.max_spare_servers';
$wb["error_php_fpm_pm_settings_txt"] = 'Los ajustes de PHP-FPM pm settings deben cumplir esto: pm.max_children &gt;= pm.max_spare_servers &gt;= pm.start_servers &gt;= pm.min_spare_servers &gt; 0';
$wb["pm_max_children_error_regex"] = 'El valor de PHP-FPM pm.max_children debe ser un valor de entero positivo.';
$wb["pm_start_servers_error_regex"] = 'El valor de PHP-FPM pm.start_servers debe ser un valor de entero positivo.';
$wb["pm_min_spare_servers_error_regex"] = 'El valor de PHP-FPM pm.min_spare_servers debe ser un valor de entero positivo.';
$wb["pm_max_spare_servers_error_regex"] = 'El valor de PHP-FPM pm.max_spare_servers debe ser un valor de entero positivo.';
$wb["apache_directives_txt"] = 'Directivas Apache';
$wb["nginx_directives_txt"] = 'Directivas Nginx';
$wb["proxy_directives_txt"] = 'Directivas Proxy';
$wb["custom_php_ini_txt"] = 'Ajustes php.ini personalizados';
$wb["seo_redirect_txt"] = 'Redireccion SEO';
$wb['rewrite_to_https_txt'] = 'Rewrite HTTP a HTTPS';
$wb["no_redirect_txt"] = 'No redirigir';
$wb["none_txt"] = 'Ninguno';
$wb["php_fpm_use_socket_txt"] = 'Usar Socket para PHP-FPM';
$wb["traffic_quota_error_regex"] = 'Cuota de trafico erronea.';
$wb['traffic_quota_error_empty'] = 'Cuota de trafico vacia.';
$wb['hd_quota_error_regex'] = 'Cuota de disco erronea.';
$wb['hd_quota_error_empty'] = 'Cuota de disco 0 o vacia.';
$wb["btn_save_txt"] = 'Guardar';
$wb["btn_cancel_txt"] = 'Cancelar';
$wb["variables_txt"] = 'Variables';
$wb["disabled_txt"] = 'Desactivado';
$wb["template_name_txt"] = 'Nombre plantilla';
$wb["template_name_error_empty"] = 'El nombre de la plantilla no puede estar vacio!';
$wb["policy_txt"] = 'Spamfilter';
$wb["no_policy"] = '- not enabled -';
$wb["dkim_txt"] = 'Habilitar DKIM';
$wb['dkim_selector_txt'] = 'Selector-DKIM';
$wb['dkim_selector_error'] = 'Selector-DKIM erroneo. Usa unicamente caracteres alfanumericos en minusculas (a-z o 0-9) con un maximo de 63 caracteres';
$wb["remote_access_txt"] = 'Accesso remoto';
$wb["remote_ips_txt"] = 'IPs de acceso remoto (separadas por , o dejalo en blanco para <i>todas</i>)';
$wb["database_charset_txt"] = 'Database charset';
$wb["database_remote_error_ips"] = 'Al menos una de las IPs introducidas es erronea.';
$wb['limit_database_quota_txt'] = 'Cuota de base de datos';
$wb['limit_database_quota_error_notint'] = 'La cuota de base de datos debe ser un numero.';
$wb["quota_files_txt"] = 'Cuota de archivos';
$wb["quota_files_unity_txt"] = 'Archivos';
$wb["ul_ratio_txt"] = 'Ratio de subida';
$wb["dl_ratio_txt"] = 'Ratio de descarga';
$wb["ul_bandwidth_txt"] = 'Ancho de banda de subida';
$wb["dl_bandwidth_txt"] = 'Ancho de banda de descarga';
$wb['shell_txt'] = "Shell";
$wb['chroot_txt'] = "Chroot Shell";
$wb['shell_error_regex'] = 'Shell erronea';
$wb['shell_error_empty'] = 'Shell vacia!';
$wb["enablesmtp_txt"] = 'Habilitar SMTP (envio)';
$wb["enableimap_txt"] = 'Habilitar IMAP';
$wb["enablepop3_txt"] = 'Habilitar POP3';
$wb["mailbox_quota_txt"] = 'Cuota del buzon (0 para ilimitada)';
$wb["quota_error_isint"] = 'La cuota debe ser un numero.';
$wb["quota_error_value"] = 'Valor de cuota erroneo. Los valores permitidos son: 0 para ilimitada o numeros > 1';
$wb['http_port_txt'] = 'Puerto HTTP';
$wb['https_port_txt'] = 'Puerto HTTPS';

+ 51
- 0
lib/module.conf.php Visa fil

@@ -0,0 +1,51 @@
<?php

//**** Module Definition ****

// Name of the module. The module name must match the name of the module directory.
// The module name may not contain spaces.
$module['name'] = 'webdns';

// Title of the module which is dispalayed in the top navigation.
$module['title'] = 'WebDNS';

// The template file of the module. This is always 'module.tpl.htm' unless
// there are any special requirements such as a three column layout.
$module['template'] = 'module.tpl.htm';

// The page that is displayed when the module is loaded.
// The path must is relative to the web/ directory
$module['startpage'] = 'webdns/new_service_webdns.php';

// The width of the tab. Normally you should leave this empty and
// let the browser define the width automatically.
$module['tab_width'] = '';

//**** Menu Definition ****

// Make sure that the items array is empty
$items = array();

// Add a menu item with the label 'Send message'
$items[] = array( 'title' => 'Nuevo servicio web',
'target' => 'content',
'link' => 'webdns/new_service_webdns.php',
'html_id' => 'new_service_webdns');
/*$items[] = array( 'title' => 'Sitio Web',
'target' => 'content',
'link' => 'customdns/webdns_vhost_domain_edit.php?type=domain'
//'../sites/web_vhost_domain_edit.php?type=domain'
);
$items[] = array( 'title' => 'Web DNS2',
'target' => 'content',
'link' => 'customdns/new_service_dns2.php',
'html_id' => 'new_service_dns2');*/


// Append the menu $items defined above to a menu section labeled 'Support'
$module['nav'][] = array( 'title' => 'WebDNS',
'open' => 1,
'items' => $items
);

+ 12
- 0
lib/remote.conf.php Visa fil

@@ -0,0 +1,12 @@
<?php
$function_list['sites_cron_get,sites_cron_add,sites_cron_update,sites_cron_delete'] = 'Sites cron functions';
$function_list['sites_database_get,sites_database_add,sites_database_update,sites_database_delete, sites_database_get_all_by_user,sites_database_user_get,sites_database_user_add,sites_database_user_update,sites_database_user_delete, sites_database_user_get_all_by_user'] = 'Sites database functions';
$function_list['sites_web_folder_get,sites_web_folder_add,sites_web_folder_update,sites_web_folder_delete,sites_web_folder_user_get,sites_web_folder_user_add,sites_web_folder_user_update,sites_web_folder_user_delete'] = 'Sites Protected folder functions';
$function_list['sites_ftp_user_get,sites_ftp_user_server_get,sites_ftp_user_add,sites_ftp_user_update,sites_ftp_user_delete'] = 'Sites FTP-User functions';
$function_list['sites_shell_user_get,sites_shell_user_add,sites_shell_user_update,sites_shell_user_delete'] = 'Sites Shell-User functions';
$function_list['sites_web_domain_get,sites_web_domain_add,sites_web_domain_update,sites_web_domain_delete,sites_web_domain_set_status'] = 'Sites Domain functions';
$function_list['sites_web_domain_backup'] = 'Sites Backup functions';
$function_list['sites_web_aliasdomain_get,sites_web_aliasdomain_add,sites_web_aliasdomain_update,sites_web_aliasdomain_delete'] = 'Sites Aliasdomain functions';
$function_list['sites_web_subdomain_get,sites_web_subdomain_add,sites_web_subdomain_update,sites_web_subdomain_delete'] = 'Sites Subdomain functions';
$function_list['sites_aps_update_package_list,sites_aps_available_packages_list,sites_aps_change_package_status,sites_aps_install_package,sites_aps_get_package_details,sites_aps_get_package_file,sites_aps_get_package_settings,sites_aps_instance_get,sites_aps_instance_delete'] = 'Sites APS functions';
?>

+ 58
- 0
list/template.list.php Visa fil

@@ -0,0 +1,58 @@
<?php

/*
Datatypes:
- INTEGER
- DOUBLE
- CURRENCY
- VARCHAR
- TEXT
- DATE
*/



// Name of the list
$liste["name"] = "wizard_template";

// Database table
$liste["table"] = "wizard_template";

// Index index field of the database table
$liste["table_idx"] = "template_id";

// Search Field Prefix
$liste["search_prefix"] = "search_";

// Records per page
$liste["records_per_page"] = "15";

// Script File of the list
$liste["file"] = "template_list.php";

// Script file of the edit form
$liste["edit_file"] = "template_edit.php";

// Script File of the delete script
$liste["delete_file"] = "template_del.php";

// Paging Template
$liste["paging_tpl"] = "templates/paging.tpl.htm";

// Enable auth
$liste["auth"] = "yes";


/*****************************************************
* Suchfelder
*****************************************************/


$liste["item"][] = array( 'field' => "template_name",
'datatype' => "VARCHAR",
'formtype' => "TEXT",
'op' => "like",
'prefix' => "%",
'suffix' => "%",
'width' => "",
'value' => "");

+ 359
- 0
new_service_webdns.php Visa fil

@@ -0,0 +1,359 @@
<?php
/*
2017, David Ramos García, Open6Hosting <dramos@open6hosting.com>
All rights reserved.
*/


/******************************************
* Begin Form configuration
******************************************/
//Solo se puede tener una variable para cargar los distintos formularios
$tform_def_file = "form/new_service_webdns.tform.php";

/******************************************
* End Form configuration
******************************************/

require_once '../../lib/config.inc.php';
require_once '../../lib/app.inc.php';

//* Check permissions for module
$app->auth->check_module_permissions('webdns');

// Check the module permissions and redirect if not allowed.
/*if(!stristr($_SESSION['s']['user']['modules'],'customdns')) {
header('Location: ../index.php');
die;
}*/

// Loading classes
$app->uses('tpl,tform,tform_actions,remoting,tools_sites,remoting_lib');
$app->load('tform_actions');

class page_action extends tform_actions {
//Con esta funcion se parsean y preparan los campos del formulario, new_service_dns.tform.php
//justo después de la carga de este.
/*function onShowEnd() {
global $app, $conf;*/
//FORMULARIO
//Con esta llamada a al clase $app cargo todos los campos definidos en el formulario,
//en este caso, los definidos en el array $form["tabs"]['webdns'];
//$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'];
}*/
//BASE DE DATOS - TEMPLATE
//Cargo todos los valores de la tabla dns_template que coincidan con id del template seleccionado.
///$template_record = $app->db->queryOneRecord("SELECT * FROM dns_template WHERE template_id = ?", $fields['dns_template_id']);
//IMPORTANTE, aquí cargo el campo fields de la tabla dns_template
//que contiene una lista de los campos que se muestran en el template(vista)
/*$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;
//Carga de campos del formulario.
$fields = $app->tform->encode($this->dataRecord, $app->tform->getCurrentTab(), true);
// 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'];
}
if($app->tform->errorMessage)
{
$this->onError();
return;
}
//Esta variable nos llega por jQuery desde el htm para el control de errores en la vista.
if($_POST['create'] != 1)
{
$app->tform->errorMessage = 'DUMMY';
$app->tpl->setVar($this->dataRecord);
$this->onShow();
return;
}
// Domain OK, continue
$remote = new remote_actions;

// client prefix and group id
$res = $app->db->queryOneRecord("SELECT groupid FROM sys_group WHERE client_id = ".$app->functions->intval($fields['client_id']));
$client_group_id = $res['groupid'];
$client_prefix = 'c'.$fields['client_id'];
// 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']));
//Carga del formulario dns_soa para guardar en base de datos
$tform_def_file = "../dns/form/dns_soa.tform.php";
$app->tform->loadFormDef($tform_def_file);
// Carga y seleccion de dns_template, si no esta creado se informa de que tiene que crearse
$template_record = $app->db->queryOneRecord("SELECT * FROM dns_template WHERE visible = 'Y' AND name = 'webdns'"); /*'open6hosting'");*/
/*if($template_record) {
//echo '<br><br>Teplate '.$template_record.', ';
$app->tform->errorMessage = 'Error hay que crear un template llamado webdns';
$this->onError();
return;
} else {
$app->tform->errorMessage = 'Error hay que crear un template llamado webdnsssssss';
$this->onError();
return;
}*/
/*if($app->tform->errorMessage)
{
$this->onError();
return;
}*/

//$template_record = $app->db->queryOneRecord("SELECT * FROM dns_template WHERE visible = 'Y' AND name = 'webdns'"); /*'open6hosting'");*/

//Llamada a la tabla server_ip para recuperar la ip4 e ip6
$dns_ip_servidor = $app->db->queryOneRecord("SELECT ip_type, ip_address FROM server_ip WHERE client_id = ".$app->functions->intval($fields['client_id']. " AND ip_type='IPv4'"));

$dns_ip_servidor_ipv6 = $app->db->queryOneRecord("SELECT ip_type, ip_address FROM server_ip WHERE client_id = ".$fields['client_id']." AND ip_type='IPv6'");
//Comprobamos que el resultado para el cliente seleccionado no esta vacío,
//si lo esta tomamos los datos del cliente id 0
if(!$dns_ip_servidor_ipv6){
$dns_ip_servidor = $app->db->queryOneRecord("SELECT ip_type, ip_address FROM server_ip WHERE client_id = 0 AND ip_type='IPv4'");
$dns_ip_servidor_ipv6 = $app->db->queryOneRecord("SELECT ip_type, ip_address FROM server_ip WHERE client_id = 0 AND ip_type='IPv6'");
/*echo '<br><br>Valor de la consulta '.$dns_ip_servidor_ipv6[ip_address].' ';
echo '<br><br>Valor de la consulta '.$dns_ip_servidor[ip_address].' ';*/
}


$tpl_content = $template_record['template'];
// Reemplazo la variable que nos encontramos en base de datos por el valor que se ha introducido en el formulario
$tpl_content = str_replace('{DOMAIN}', $fields['domain'], $tpl_content);
//Carga de los datos en las variables ns
$tpl_content = str_replace('{IP}', $dns_ip_servidor['ip_address'], $tpl_content);
$tpl_content = str_replace('{IPV6}', $dns_ip_servidor_ipv6['ip_address'], $tpl_content);
/*$tpl_content = str_replace('{NS1}', '.open6servers.com', $tpl_content);
$tpl_content = str_replace('{NS2}', '.open6servers.com', $tpl_content); */
$enable_dnssec = 'N';//(($_POST['dns_dnssec'] == 'Y') ? 'Y' : 'N');
// Parse the template
$tpl_rows = explode("\n", $tpl_content);
$section = '';
$vars = array();
$vars['xfer']='';
$dns_rr = array();
foreach($tpl_rows as $row) {
$row = trim($row);
if(substr($row, 0, 1) == '[') {
if($row == '[ZONE]') {
$section = 'zone';
} elseif($row == '[DNS_RECORDS]') {
$section = 'dns_records';
} else {
die('Unknown section type');
}
} else {
if($row != '') {
// Handle zone section
if($section == 'zone') {
$parts = explode('=', $row);
$key = trim($parts[0]);
$val = trim($parts[1]);
if($key != '') $vars[$key] = $val;
}
// Handle DNS Record rows
if($section == 'dns_records') {
$parts = explode('|', $row);
$dns_rr[] = array(
'name' => $parts[1],
'type' => $parts[0],
'data' => $parts[2],
'aux' => $parts[3],
'ttl' => $parts[4]
);
}
}
}
} // end foreach


$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;
}*/

//Llamada a la tabla client para recuperar el client_id y su default_dnsserver
$dns_servidor = $app->db->queryOneRecord("SELECT client_id, default_dnsserver, default_webserver FROM client WHERE client_id = ".$app->functions->intval($fields['client_id']));
$valor_recuperado1 = $dns_servidor['client_id'];
/*$valor_recuperado2 = $dns_servidor['default_dnsserver'];
$valor_recuperado3 = $dns_servidor['default_webserver'];
*/
// 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" => $dns_servidor['default_dnsserver'],
"origin" => $origin,
"ns" => $ns,
"mbox" => $mbox,
"serial" => $serial,
"refresh" => $refresh,
"retry" => $retry,
"expire" => $expire,
"minimum" => $minimum,
"ttl" => $ttl,
"active" => 'Y',
"xfer" => $xfer,
"also_notify" => $also_notify,
"update_acl" => $update_acl,
"dnssec_wanted" => $enable_dnssec
);
$dns_soa_id = $app->db->datalogInsert('dns_soa', $insert_data, 'id');

// Insert the dns_rr records
if(is_array($dns_rr) && $dns_soa_id > 0) {
foreach($dns_rr as $rr) {
$insert_data = array(
"sys_userid" => $sys_userid,
"sys_groupid" => $client_group_id,
"sys_perm_user" => 'riud',
"sys_perm_group" => 'riud',
"sys_perm_other" => '',
"server_id" => $dns_servidor['default_dnsserver'],
"zone" => $dns_soa_id,
"name" => $rr['name'],
"type" => $rr['type'],
"data" => $rr['data'],
"aux" => $rr['aux'],
"ttl" => $rr['ttl'],
"active" => 'Y'
);
$dns_rr_id = $app->db->datalogInsert('dns_rr', $insert_data, 'id');
}
}
//sites_web_domain_add
$tform_def_file = "../sites/form/web_vhost_domain.tform.php";
$app->tform->loadFormDef($tform_def_file);

//$app->remoting_lib->loadFormDef($tform_def_file);

// add site
$paramsite = array(
'type' => 'vhost',
'domain' => $fields['domain'],
'server_id' => $dns_servidor['default_webserver'],
'ip_address' => '*', //$dns_ip_servidor['ip_address'],
'ipv6_address' => $dns_ip_servidor_ipv6['ip_address'],
'traffic_quota' => '-1',
'hd_quota' => '0',
'cgi' => 'y',
'ssi' => 'y',
'suexec' => 'y',
'ruby' => 'n',
'python' => 'n',
'perl' => 'n',
'errordocs' => '1',
'subdomain' => 'www',
'php' => 'php-fpm',
'fastcgi_php_version' => '',
'seo_redirect' => '',
'rewrite_to_https' => 'n',
'allow_override' => 'All',
'http_port' => 80,
'https_port' => 443,
'apache_directives' => '',
'nginx_directives' => '',
'php_fpm_use_socket' => 'y',
'pm' => 'ondemand',
'pm_max_children' => 10,
'pm_start_servers' => 1,
'pm_min_spare_servers' => 1,
'pm_max_spare_servers' => 5,
'pm_process_idle_timeout' => 10,
'pm_max_requests' => 0,
'custom_php_ini' => '',
'active' => 'y',
'document_root' => '-',
'system_user' => '-',
'system_group' => '-',
'log_retention' => 30,
'client_group_id' => $client_group_id,
);

//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');
// 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);

//$remote->insert_query('../sites/form/web_vhost_domain.tform.php', $fields['client_id'], $paramsite);
//Si todo va bien, el resultado
echo '<br><br>Altas Web y DNS del dominio '.$fields['domain'].', ¡Creadas correctamente!<br>';


//parent::onSubmit();
}

}

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);
}
}

$page = new page_action;
$page->onLoad();

+ 429
- 0
templates/new_service_webdns.htm Visa fil

@@ -0,0 +1,429 @@
<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="form-group">
<label class="col-sm-3 control-label" for="client_id">{tmpl_var name='client_id_txt'}</label>
<div class="col-sm-9">
<select class="form-control" id="client_id" name="client_id">
{tmpl_var name='client_id'}
</select>
</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 -->

<!--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>

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

<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="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 -->

<!--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 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','customdns/new_service_dns.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 -->

<!-- variable control de error -->
<input id="create_service" name="create" type="hidden" value="0">

<form>
<input name="id" type="hidden" value="{tmpl_var name='id'}">
</form>


<!-- añadido -->
<!--div class="panel panel_web_vhost_domain">

<div class="pnl_formsarea">
<fieldset class="inlineLabels"><legend>Domain</legend>
<div class="ctrlHolder">
<label for="server_id">{tmpl_var name='server_id_txt'}</label>
<select name="server_id" id="server_id" class="selectInput">
{tmpl_var name='server_id'}
</select>
</div>
<div class="ctrlHolder">
<label for="ip_address">{tmpl_var name='ip_address_txt'}</label>
<select name="ip_address" id="ip_address" class="selectInput">
{tmpl_var name='ip_address'}
</select>
</div>
<div class="ctrlHolder">
<label for="ipv6_address">{tmpl_var name='ipv6_address_txt'}</label>
<select name="ipv6_address" id="ipv6_address" class="selectInput">
{tmpl_var name='ipv6_address'}
</select>
</div>
<div class="ctrlHolder">
<label for="domain">{tmpl_var name='domain_txt'}</label>
<input name="domain" id="domain" value="{tmpl_var name='domain'}" size="30" maxlength="255" type="text" class="textInput" />
</div>
<div class="ctrlHolder">
<label for="type">{tmpl_var name='type_txt'}</label>
<select name="type" id="type" class="selectInput">
{tmpl_var name='type'}
</select>
</div>
<div class="ctrlHolder">
<label for="parent_domain_id">{tmpl_var name='parent_domain_id_txt'}</label>
<select name="parent_domain_id" id="parent_domain_id" class="selectInput">
{tmpl_var name='parent_domain_id'}
</select>
</div>
<div class="ctrlHolder">
<label for="vhost_type">{tmpl_var name='vhost_type_txt'}</label>
<select name="vhost_type" id="vhost_type" class="selectInput">
{tmpl_var name='vhost_type'}
</select>
</div>
<div class="ctrlHolder">
<label for="hd_quota">{tmpl_var name='hd_quota_txt'}</label>
<input name="hd_quota" id="hd_quota" value="{tmpl_var name='hd_quota'}" size="7" maxlength="7" type="text" class="textInput" />
</div>
<div class="ctrlHolder">
<label for="traffic_quota">{tmpl_var name='traffic_quota_txt'}</label>
<input name="traffic_quota" id="traffic_quota" value="{tmpl_var name='traffic_quota'}" size="7" maxlength="7" type="text" class="textInput" />
</div>
<div class="ctrlHolder">
<p class="label">{tmpl_var name='cgi_txt'}</p>
<div class="multiField">
{tmpl_var name='cgi'}
</div>
</div>
<div class="ctrlHolder">
<p class="label">{tmpl_var name='ssi_txt'}</p>
<div class="multiField">
{tmpl_var name='ssi'}
</div>
</div>
<div class="ctrlHolder">
<p class="label">{tmpl_var name='suexec_txt'}</p>
<div class="multiField">
{tmpl_var name='suexec'}
</div>
</div>
<div class="ctrlHolder">
<p class="label">{tmpl_var name='errordocs_txt'}</p>
<div class="multiField">
{tmpl_var name='errordocs'}
</div>
</div>
<div class="ctrlHolder">
<label for="subdomain">{tmpl_var name='subdomain_txt'}</label>
<select name="subdomain" id="subdomain" class="selectInput">
{tmpl_var name='subdomain'}
</select>
</div>
<div class="ctrlHolder">
<p class="label">{tmpl_var name='ssl_txt'}</p>
<div class="multiField">
{tmpl_var name='ssl'}
</div>
</div>
<div class="ctrlHolder">
<p class="label">{tmpl_var name='ssl_letsencrypt_txt'}</p>
<div class="multiField">
{tmpl_var name='ssl_letsencrypt'}
</div>
</div>
<div class="ctrlHolder">
<label for="php">{tmpl_var name='php_txt'}</label>
<select name="php" id="php" class="selectInput">
{tmpl_var name='php'}
</select>
</div>
<div class="ctrlHolder">
<label for="fastcgi_php_version">{tmpl_var name='fastcgi_php_version_txt'}</label>
<select name="fastcgi_php_version" id="fastcgi_php_version" class="selectInput">
{tmpl_var name='fastcgi_php_version'}
</select>
</div>
<div class="ctrlHolder">
<p class="label">{tmpl_var name='perl_txt'}</p>
<div class="multiField">
{tmpl_var name='perl'}
</div>
</div>
<div class="ctrlHolder">
<p class="label">{tmpl_var name='ruby_txt'}</p>
<div class="multiField">
{tmpl_var name='ruby'}
</div>
</div>
<div class="ctrlHolder">
<p class="label">{tmpl_var name='python_txt'}</p>
<div class="multiField">
{tmpl_var name='python'}
</div>
</div>
<div class="ctrlHolder">
<p class="label">{tmpl_var name='enable_pagespeed_txt'}</p>
<div class="multiField">
{tmpl_var name='enable_pagespeed'}
</div>
</div>
<div class="ctrlHolder">
<p class="label">{tmpl_var name='active_txt'}</p>
<div class="multiField">
{tmpl_var name='active'}
</div>
</div>
<div class="ctrlHolder">
<label for="web_folder">{tmpl_var name='web_folder_txt'}</label>
<input name="web_folder" id="web_folder" value="{tmpl_var name='web_folder'}" size="30" maxlength="255" type="text" class="textInput" />
</div>
<div class="ctrlHolder">
<label for="_csrf_id">{tmpl_var name='_csrf_id_txt'}</label>
<input name="_csrf_id" id="_csrf_id" value="{tmpl_var name='_csrf_id'}" size="" maxlength="" type="text" class="textInput" />
</div>
<div class="ctrlHolder">
<label for="_csrf_key">{tmpl_var name='_csrf_key_txt'}</label>
<input name="_csrf_key" id="_csrf_key" value="{tmpl_var name='_csrf_key'}" size="" maxlength="" type="text" class="textInput" />
</div>
</fieldset>

<input type="hidden" name="id" value="{tmpl_var name='id'}">

<div class="buttonHolder buttons">
<button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onclick="ISPConfig.submitForm('pageForm','customdns/new_service_dns.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
<button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" data-load-content="customdns/new_service_dns.php"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
</div>
</div>

</div>

<!-- fin añadido -->

<div class="clear">
<div class="right">
<button class="btn btn-default formbutton-success" id="dom-edit-submit" type="button" value="{tmpl_var name='btn_save_txt'}">{tmpl_var name='btn_save_txt'}</button>
<button class="btn btn-default formbutton-default" data-load-content="webdns/index.php" type="button" value="{tmpl_var name='btn_cancel_txt'}">{tmpl_var name='btn_cancel_txt'}</button>
</div>
</div>

<script type="text/javascript">
$("input[name=db]").change(function(){
if($(this).is(':checked'))
{
$(".db").show();
}
else
{
$(".db").hide();
}
});
$("input[name=mail]").change(function(){
if($(this).is(':checked'))
{
$(".mail").show();
}
else
{
$(".mail").hide();
$(".dkim").hide();
$("input[name=dkim]").prop('checked', false);
}
});
if( ! $("input[name=dkim]").is(':checked'))
{
$(".dkim").hide();
}
$("input[name=dkim]").change(function(){
if($(this).is(':checked'))
{
$(".dkim").show();
$(".dns").show();
$("input[name=dns]").prop('checked', true);
}
else
{
$(".dkim").hide();
}
});
$("input[name=dns]").change(function(){
if($(this).is(':checked'))
{
$(".dns").show();
}
else
{
$(".dns").hide();
$(".dkim").hide();
$("input[name=dkim]").prop('checked', false);
}
});
jQuery('#dom-edit-submit').click(function() {
$("#create_service").val("1");
ISPConfig.submitForm('pageForm','webdns/new_service_webdns.php');
//Debuggeo
//alert(document.getElementById("create_service").value);
});

jQuery('#dns_ip').ispconfigSearch({
dataSrc: '/dns/ajax_get_json.php?type=get_ipv4',
resultsLimit: '$ <tmpl_var name="globalsearch_resultslimit_of_txt"> % <tmpl_var name="globalsearch_resultslimit_results_txt">',
ResultsTextPrefix: '<tmpl_var name="globalsearch_suggestions_text_txt">',
noResultsText: '<tmpl_var name="globalsearch_noresults_text_txt">',
noResultsLimit: '<tmpl_var name="globalsearch_noresults_limit_txt">',
minChars: 0,
cssPrefix: 'df-',
fillSearchField: true,
fillSearchFieldWith: 'fill_text',
searchFieldWatermark: '',
resultBoxPosition: ''
});

jQuery('#dns_ipv6').ispconfigSearch({
dataSrc: '/dns/ajax_get_json.php?type=get_ipv6',
resultsLimit: '$ <tmpl_var name="globalsearch_resultslimit_of_txt"> % <tmpl_var name="globalsearch_resultslimit_results_txt">',
ResultsTextPrefix: '<tmpl_var name="globalsearch_suggestions_text_txt">',
noResultsText: '<tmpl_var name="globalsearch_noresults_text_txt">',
noResultsLimit: '<tmpl_var name="globalsearch_noresults_limit_txt">',
minChars: 0,
cssPrefix: 'df-',
fillSearchField: true,
fillSearchFieldWith: 'fill_text',
searchFieldWatermark: '',
resultBoxPosition: ''
});
</script>
<script language="JavaScript" type="text/javascript" src="js/mail_domain_dkim.js"></script>

+ 37
- 0
webdns_db.sql Visa fil

@@ -0,0 +1,37 @@
/*
Copyright (c) 2017, David Ramos García, Open6Hosting <dramos@open6hosting.com>
All rights reserved.

Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:

* Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
* Neither the name of ISPConfig nor the names of its contributors
may be used to endorse or promote products derived from this software without
specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/

/*CONFIGURACIÓN WEBDNS*/
USE `dbispconfig`;

INSERT INTO `dns_template` (`sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `name`, `fields`, `template`, `visible`) VALUES
(1, 1, 'riud', 'riud', '', 'webdns', 'DOMAIN,IP,IPV6,NS1,NS2,EMAIL', '[ZONE]\r\norigin={DOMAIN}.\r\nns=119.open6servers.com.\r\nmbox=soporte@open6hosting.com.\r\nrefresh=7200\r\nretry=540\r\nexpire=604800\r\nminimum=3600\r\nttl=3600\r\n\r\n[DNS_RECORDS]\r\nA|{DOMAIN}.|{IP}|0|3600\r\nA|www|{IP}|0|3600\r\nA|mail|{IP}|0|3600\r\nA|smtp|{IP}|0|3600\r\nA|ftp|{IP}|0|3600\r\nNS|{DOMAIN}.|119.open6servers.com.|0|3600\r\nNS|{DOMAIN}.|119a.open6servers.com.|0|3600\r\nMX|{DOMAIN}.|mail.{DOMAIN}.|10|3600\r\nTXT|{DOMAIN}.|v=spf1 mx a ip6:{IPV6}/64 -all|0|3600\r\nAAAA|{DOMAIN}.|{IPV6}|0|3600\r\nAAAA|www|{IPV6}|0|3600\r\nAAAA|ftp|{IPV6}|0|3600\r\nAAAA|smtp|{IPV6}|0|3600\r\nAAAA|mail|{IPV6}|0|3600', 'Y');





Laddar…
Avbryt
Spara