$ifdesc) { $list[$if] = $ifdesc; } unset($iflist); $grouplist = return_gateway_groups_array(); foreach ($grouplist as $name => $group) { $list[$name] = 'GW Group ' . $name; } unset($grouplist); return($list); } $pgtitle = array(gettext("Services"), gettext("Dynamic DNS"), gettext("Dynamic DNS Clients"), gettext("Edit")); $pglinks = array("", "services_dyndns.php", "services_dyndns.php", "@self"); include("head.inc"); if ($input_errors) { print_input_errors($input_errors); } $form = new Form; $section = new Form_Section('Dynamic DNS Client'); // Confusingly the 'enable' checkbox is labelled 'Disable', but thats the way it works! // No action (hide or disable) is taken on selecting this. $section->addInput(new Form_Checkbox( 'enable', 'Disable', 'Disable this client', $pconfig['enable'] )); $section->addInput(new Form_Select( 'type', '*Service Type', $pconfig['type'], build_type_list() )); $interfacelist = build_if_list(); $section->addInput(new Form_Select( 'interface', '*Interface to monitor', $pconfig['interface'], $interfacelist ))->setHelp('If the interface IP address is private the public IP address will be fetched and used instead.'); $section->addInput(new Form_Select( 'requestif', '*Interface to send update from', $pconfig['requestif'], $interfacelist ))->setHelp('This is almost always the same as the Interface to Monitor. '); $group = new Form_Group('*Hostname'); $group->add(new Form_Input( 'host', 'Hostname', 'text', $pconfig['host'] )); $group->add(new Form_Input( 'domainname', 'Domain name', 'text', $pconfig['domainname'] )); $group->setHelp('Enter the complete fully qualified domain name. Example: myhost.dyndns.org%1$s' . 'DNS Made Easy: Dynamic DNS ID (NOT hostname)%1$s' . 'he.net tunnelbroker: Enter the tunnel ID.%1$s' . 'GleSYS: Enter the record ID.%1$s' . 'DNSimple: Enter only the domain name.%1$s' . 'Namecheap, Cloudflare, GratisDNS, Hover: Enter the hostname and the domain separately, with the domain being the domain or subdomain zone being handled by the provider.', '
'); $section->add($group); $section->addInput(new Form_Input( 'mx', 'MX', 'text', $pconfig['mx'] ))->setHelp('Note: With DynDNS service only a hostname can be used, not an IP address. '. 'Set this option only if a special MX record is needed. Not all services support this.'); $section->addInput(new Form_Checkbox( 'wildcard', 'Wildcards', 'Enable Wildcard', $pconfig['wildcard'] )); $section->addInput(new Form_Checkbox( 'proxied', 'CloudFlare Proxy', 'Enable Proxy', $pconfig['proxied'] ))->setHelp('Note: This enables CloudFlares Virtual DNS proxy. When Enabled it will route all traffic '. 'through their servers. By Default this is disabled and your Real IP is exposed.'. 'More info: %s', 'CloudFlare Blog'); $section->addInput(new Form_Checkbox( 'verboselog', 'Verbose logging', 'Enable verbose logging', $pconfig['verboselog'] )); $section->addInput(new Form_Checkbox( 'curl_ipresolve_v4', 'HTTP API DNS Options', 'Force IPv4 DNS Resolution', $pconfig['curl_ipresolve_v4'] )); $section->addInput(new Form_Checkbox( 'curl_ssl_verifypeer', 'HTTP API SSL Options', 'Verify SSL Certificate Trust', $pconfig['curl_ssl_verifypeer'] ))->setHelp('When set, the server must provide a valid certificate trust chain which can be verified by this firewall.'); $section->addInput(new Form_Input( 'username', 'Username', 'text', $pconfig['username'] ))->setHelp('Username is required for all types except Namecheap, FreeDNS and Custom Entries.%1$s' . 'DNS Made Easy: Dynamic DNS ID%1$s' . 'Route 53: Enter the Access Key ID.%1$s' . 'GleSYS: Enter the API user.%1$s' . 'Dreamhost: Enter a value to appear in the DNS record comment.%1$s' . 'For Custom Entries, Username and Password represent HTTP Authentication username and passwords.', '
'); $section->addPassword(new Form_Input( 'passwordfld', 'Password', 'password', $pconfig['password'] ))->setHelp('FreeDNS (freedns.afraid.org): Enter the "Authentication Token" provided by FreeDNS.%1$s' . 'DNS Made Easy: Dynamic DNS Password%1$s' . 'Route 53: Enter the Secret Access Key.%1$s' . 'GleSYS: Enter the API key.%1$s' . 'Dreamhost: Enter the API Key.%1$s' . 'DNSimple: Enter the API token.%1$s' . 'Cloudflare: Enter the Global API Key.', '
'); $section->addInput(new Form_Input( 'zoneid', 'Zone ID', 'text', $pconfig['zoneid'] ))->setHelp('Route53: Enter AWS Zone ID.%1$s' . 'DNSimple: Enter the Record ID of record to update.', '
'); $section->addInput(new Form_Input( 'updateurl', 'Update URL', 'text', $pconfig['updateurl'] ))->setHelp('This is the only field required by for Custom Dynamic DNS, and is only used by Custom Entries.'); $section->addInput(new Form_Textarea( 'resultmatch', 'Result Match', $pconfig['resultmatch'] ))->sethelp('This field should be identical to what the DDNS Provider will return if the update succeeds, leave it blank to disable checking of returned results.%1$s' . 'To include the new IP in the request, put %%IP%% in its place.%1$s' . 'To include multiple possible values, separate them with a |. If the provider includes a |, escape it with \\|)%1$s' . 'Tabs (\\t), newlines (\\n) and carriage returns (\\r) at the beginning or end of the returned results are removed before comparison.', '
'); $section->addInput(new Form_Input( 'ttl', 'TTL', 'text', $pconfig['ttl'] ))->setHelp('Choose TTL for the dns record.'); $section->addInput(new Form_Input( 'descr', 'Description', 'text', $pconfig['descr'] ))->setHelp('A description may be entered here for administrative reference (not parsed).'); if (isset($id) && $a_dyndns[$id]) { $section->addInput(new Form_Input( 'id', null, 'hidden', $id )); $form->addGlobal(new Form_Button( 'force', 'Save & Force Update', null, 'fa-refresh' ))->removeClass('btn-primary')->addClass('btn-info'); } $form->add($section); print($form); // Certain input elements are hidden/shown based on the service type in the following script ?>