Project

General

Profile

Download (10.6 KB) Statistics
| Branch: | Tag: | Revision:
1 f1f60c92 Ermal Luçi
<?php
2
/* $Id$ */
3
/*
4
	Copyright (C) 2008 Ermal Lu?i
5
	All rights reserved.
6
7
	Redistribution and use in source and binary forms, with or without
8
	modification, are permitted provided that the following conditions are met:
9
10
	1. Redistributions of source code must retain the above copyright notice,
11
	   this list of conditions and the following disclaimer.
12
13
	2. Redistributions in binary form must reproduce the above copyright
14
	   notice, this list of conditions and the following disclaimer in the
15
	   documentation and/or other materials provided with the distribution.
16
17
	THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
18
	INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
19
	AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
20
	AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
21
	OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
22
	SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
23
	INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
24
	CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
25
	ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
26
	POSSIBILITY OF SUCH DAMAGE.
27
*/
28 1d333258 Scott Ullrich
/*
29
	pfSense_BUILDER_BINARIES:	/bin/rm
30
	pfSense_MODULE:	dyndns
31
*/
32 f1f60c92 Ermal Luçi
33 6b07c15a Matthew Grooms
##|+PRIV
34
##|*IDENT=page-services-dynamicdnsclient
35
##|*NAME=Services: Dynamic DNS client page
36
##|*DESCR=Allow access to the 'Services: Dynamic DNS client' page.
37
##|*MATCH=services_dyndns_edit.php*
38
##|-PRIV
39
40 ee2db55f Ermal Lu?i
/* returns true if $uname is a valid DynDNS username */
41
function is_dyndns_username($uname) {
42
        if (!is_string($uname))
43
                return false;
44
        
45
        if (preg_match("/[^a-z0-9\-.@_:]/i", $uname))
46
                return false;
47
        else
48
                return true;
49
}
50
51 f1f60c92 Ermal Luçi
require("guiconfig.inc");
52
53
if (!is_array($config['dyndnses']['dyndns'])) {
54
	$config['dyndnses']['dyndns'] = array();
55
}
56
57
$a_dyndns = &$config['dyndnses']['dyndns'];
58
59
$id = $_GET['id'];
60
if (isset($_POST['id']))
61
	$id = $_POST['id'];
62
63
if (isset($id) && isset($a_dyndns[$id])) {
64
	$pconfig['username'] = $a_dyndns[$id]['username'];
65
	$pconfig['password'] = $a_dyndns[$id]['password'];
66
	$pconfig['host'] = $a_dyndns[$id]['host'];
67
	$pconfig['mx'] = $a_dyndns[$id]['mx'];
68
	$pconfig['type'] = $a_dyndns[$id]['type'];
69 acdfc164 Ermal Luçi
	$pconfig['enable'] = !isset($a_dyndns[$id]['enable']);
70 f1f60c92 Ermal Luçi
	$pconfig['interface'] = $a_dyndns[$id]['interface'];
71
	$pconfig['wildcard'] = isset($a_dyndns[$id]['wildcard']);
72
	$pconfig['descr'] = $a_dyndns[$id]['descr'];
73
}
74
75
if ($_POST) {
76
77
	unset($input_errors);
78
	$pconfig = $_POST;
79 d9cc4b24 gnhb
	
80 0030036f gnhb
	if(($pconfig['type'] == "freedns" || $pconfig['type'] == "namecheap") && $_POST['username'] == "")
81
		$_POST['username'] = "none"; 
82 f1f60c92 Ermal Luçi
83
	/* input validation */
84
	$reqdfields = array();
85
	$reqdfieldsn = array();
86 d9cc4b24 gnhb
	$reqdfields = array("host", "username", "password", "type");
87
	$reqdfieldsn = array(gettext("Hostname"),gettext("Username"),gettext("Password"),gettext("Service type"));
88 f1f60c92 Ermal Luçi
89
	do_input_validation($_POST, $reqdfields, $reqdfieldsn, &$input_errors);
90
91
	if (($_POST['mx'] && !is_domain($_POST['mx']))) 
92 2b2a7984 Rafael Lucas
		$input_errors[] = gettext("The MX contains invalid characters.");
93 61c30081 jim-p
	if (($_POST['username'] && !is_dyndns_username($_POST['username'])) || (($pconfig['type'] != "namecheap") && ($_POST['username'] == ""))) 
94 2b2a7984 Rafael Lucas
		$input_errors[] = gettext("The username contains invalid characters.");
95 f1f60c92 Ermal Luçi
96
	if (!$input_errors) {
97
		$dyndns = array();
98
		$dyndns['type'] = $_POST['type'];
99
		$dyndns['username'] = $_POST['username'];
100
		$dyndns['password'] = $_POST['password'];
101
		$dyndns['host'] = $_POST['host'];
102
		$dyndns['mx'] = $_POST['mx'];
103
		$dyndns['wildcard'] = $_POST['wildcard'] ? true : false;
104
		$dyndns['enable'] = $_POST['enable'] ? false : true;
105
		$dyndns['interface'] = $_POST['interface'];
106
		$dyndns['descr'] = $_POST['descr'];
107 0030036f gnhb
		
108
		if($dyndns['username'] == "none")
109
			$dyndns['username'] = "";
110 f1f60c92 Ermal Luçi
111
		if (isset($id) && $a_dyndns[$id])
112
			$a_dyndns[$id] = $dyndns;
113
		else
114
			$a_dyndns[] = $dyndns;
115
116
		write_config();
117
118
		$retval = 0;
119
120 91e55d73 Ermal Luçi
		conf_mount_rw();
121 9c38bcea sullrich
122 b8e2fd16 jim-p
		unlink("{$g['conf_path']}/dyndns_{$dyndns['interface']}{$dyndns['type']}{$dyndns['host']}.cache");
123 91e55d73 Ermal Luçi
124 789af363 Ermal Luçi
		$retval = services_dyndns_configure_client($dyndns);
125
126 9c38bcea sullrich
		conf_mount_ro();
127
128 07cdb9a2 Ermal Luçi
		header("Location: services_dyndns.php");
129
		exit;
130 f1f60c92 Ermal Luçi
	}
131
}
132
133 2b2a7984 Rafael Lucas
$pgtitle = array(gettext("Services"),gettext("Dynamic DNS client"));
134 f1f60c92 Ermal Luçi
include("head.inc");
135
136
?>
137
138
<body link="#0000CC" vlink="#0000CC" alink="#0000CC">
139
<?php include("fbegin.inc"); ?>
140
<?php if ($input_errors) print_input_errors($input_errors); ?>
141
<?php if ($savemsg) print_info_box($savemsg); ?>
142
<form action="services_dyndns_edit.php" method="post" name="iform" id="iform">
143
              <table width="100%" border="0" cellpadding="6" cellspacing="0">
144
                <tr>
145
                  <td colspan="2" valign="top" class="optsect_t">
146
				  <table border="0" cellspacing="0" cellpadding="0" width="100%">
147 2b2a7984 Rafael Lucas
				  <tr><td class="optsect_s"><strong><?=gettext("Dynamic DNS client");?></strong></td></tr>
148 f1f60c92 Ermal Luçi
				  </table>
149
				  </td>
150
                </tr>
151
                <tr>
152 2b2a7984 Rafael Lucas
                  <td width="22%" valign="top" class="vncell"><?=gettext("Disable");?></td>
153 f1f60c92 Ermal Luçi
				  <td width="78%" class="vtable">
154 2b2a7984 Rafael Lucas
				    <input name="enable" type="checkbox" id="enable" value="<?=gettext("yes");?>" <?php if ($pconfig['enable']) echo "checked"; ?>>
155 f1f60c92 Ermal Luçi
				  </td>
156
                </tr>
157
                <tr>
158 2b2a7984 Rafael Lucas
                  <td width="22%" valign="top" class="vncellreq"><?=gettext("Service type");?></td>
159 f1f60c92 Ermal Luçi
                  <td width="78%" class="vtable">
160
			<select name="type" class="formselect" id="type">
161
                      <?php
162 8ea77433 Chris Wells
						$types = explode(",", "DNS-O-Matic, DynDNS (dynamic),DynDNS (static),DynDNS (custom),DHS,DyNS,easyDNS,No-IP,ODS.org,ZoneEdit,Loopia,freeDNS, DNSexit, OpenDNS, Namecheap, HE.net");
163
						$vals = explode(" ", "dnsomatic dyndns dyndns-static dyndns-custom dhs dyns easydns noip ods zoneedit loopia freedns dnsexit opendns namecheap he-net");
164 f1f60c92 Ermal Luçi
						$j = 0; for ($j = 0; $j < count($vals); $j++): ?>
165
                      <option value="<?=$vals[$j];?>" <?php if ($vals[$j] == $pconfig['type']) echo "selected";?>>
166
                      <?=htmlspecialchars($types[$j]);?>
167
                      </option>
168
                      <?php endfor; ?>
169
                    </select></td>
170
				</tr>
171
				<tr>
172 2b2a7984 Rafael Lucas
				   <td width="22%" valign="top" class="vncellreq"><?=gettext("Interface to monitor");?></td>  
173 f1f60c92 Ermal Luçi
				   <td width="78%" class="vtable">
174
				   <select name="interface" class="formselect" id="interface">
175
				   <?php $iflist = get_configured_interface_with_descr();
176
				   		foreach ($iflist as $if => $ifdesc):?>
177
							<option value="<?=$if;?>" <?php if ($pconfig['interface'] == $if) echo "selected";?>><?=$ifdesc;?></option>
178
					<?php endforeach; ?>
179
					</select>
180
					</td>
181
					</td>
182
				</tr>	
183
                <tr>
184 2b2a7984 Rafael Lucas
                  <td width="22%" valign="top" class="vncellreq"><?=gettext("Hostname");?></td>
185 f1f60c92 Ermal Luçi
                  <td width="78%" class="vtable">
186
                    <input name="host" type="text" class="formfld unknown" id="host" size="30" value="<?=htmlspecialchars($pconfig['host']);?>">
187
                    <br>
188
				    <span class="vexpl">
189 16457bdd Renato Botelho
				    <span class="red"><strong><?=gettext("Note:");?><br></strong>
190 f1f60c92 Ermal Luçi
				    </span>
191 2b2a7984 Rafael Lucas
					<?=gettext("Enter the complete host/domain name.  example:  myhost.dyndns.org");?>
192 f1f60c92 Ermal Luçi
				    </span>
193
		          </td>
194
				</tr>
195
                <tr>
196 50bfcec0 Carlos Eduardo Ramos
                  <td width="22%" valign="top" class="vncell"><?=gettext("MX"); ?></td>
197 f1f60c92 Ermal Luçi
                  <td width="78%" class="vtable">
198
                    <input name="mx" type="text" class="formfld unknown" id="mx" size="30" value="<?=htmlspecialchars($pconfig['mx']);?>">
199
                    <br>
200 2b2a7984 Rafael Lucas
					<?=gettext("Note: With DynDNS service you can only use a hostname, not an IP address.");?>
201 f1f60c92 Ermal Luçi
					<br>
202 2b2a7984 Rafael Lucas
                    <?=gettext("Set this option only if you need a special MX record. Not".
203
                   " all services support this.");?></td>
204 f1f60c92 Ermal Luçi
				</tr>
205
                <tr>
206 50bfcec0 Carlos Eduardo Ramos
                  <td width="22%" valign="top" class="vncell"><?=gettext("Wildcards"); ?></td>
207 f1f60c92 Ermal Luçi
                  <td width="78%" class="vtable">
208
                    <input name="wildcard" type="checkbox" id="wildcard" value="yes" <?php if ($pconfig['wildcard']) echo "checked"; ?>>
209 50bfcec0 Carlos Eduardo Ramos
                    <?=gettext("Enable ");?><?=gettext("Wildcard"); ?></td>
210 f1f60c92 Ermal Luçi
				</tr>
211
                <tr>
212 2b2a7984 Rafael Lucas
                  <td width="22%" valign="top" class="vncellreq"><?=gettext("Username");?></td>
213 f1f60c92 Ermal Luçi
                  <td width="78%" class="vtable">
214
                    <input name="username" type="text" class="formfld user" id="username" size="20" value="<?=htmlspecialchars($pconfig['username']);?>">
215 ce6d1106 jim-p
                    <br/><?= gettext("Username is required for all types except Namecheap and FreeDNS.");?>
216 f1f60c92 Ermal Luçi
                  </td>
217
                </tr>
218
                <tr>
219 2b2a7984 Rafael Lucas
                  <td width="22%" valign="top" class="vncellreq"><?=gettext("Password");?></td>
220 f1f60c92 Ermal Luçi
                  <td width="78%" class="vtable">
221
                    <input name="password" type="password" class="formfld pwd" id="password" size="20" value="<?=htmlspecialchars($pconfig['password']);?>">
222 d9cc4b24 gnhb
                    <br/>
223
                    <?=gettext("FreeDNS (freedns.afraid.org): Enter your \"Authentication Token\" provided by FreeDNS.");?>
224 f1f60c92 Ermal Luçi
                  </td>
225
                </tr>
226
                <tr>
227 2b2a7984 Rafael Lucas
                  <td width="22%" valign="top" class="vncell"><?=gettext("Description");?></td>
228 f1f60c92 Ermal Luçi
                  <td width="78%" class="vtable">
229
                    <input name="descr" type="text" class="formfld unknown" id="descr" size="60" value="<?=htmlspecialchars($pconfig['descr']);?>">
230
                  </td>
231
                </tr>
232
                <tr>
233
                  <td width="22%" valign="top">&nbsp;</td>
234
                  <td width="78%">
235 2b2a7984 Rafael Lucas
                    <input name="Submit" type="submit" class="formbtn" value="<?=gettext("Save");?>" onClick="enable_change(true)">
236
					<a href="services_dyndns.php"><input name="cancel" type="button" class="formbtn" value="<?=gettext("Cancel");?>"></a>
237 f1f60c92 Ermal Luçi
					<?php if (isset($id) && $a_dyndns[$id]): ?>
238 225a2f0b Scott Ullrich
						<input name="id" type="hidden" value="<?=htmlspecialchars($id);?>">
239 f1f60c92 Ermal Luçi
					<?php endif; ?>
240
                  </td>
241
                </tr>
242
                <tr>
243
                  <td width="22%" valign="top">&nbsp;</td>
244 16457bdd Renato Botelho
                  <td width="78%"><span class="vexpl"><span class="red"><strong><?=gettext("Note:");?><br>
245 2b2a7984 Rafael Lucas
                    </strong></span><?php printf(gettext("You must configure a DNS server in %sSystem:
246
                    General setup%s or allow the DNS server list to be overridden
247
                    by DHCP/PPP on WAN for dynamic DNS updates to work."),'<a href="system.php">','</a>');?></span></td>
248 f1f60c92 Ermal Luçi
                </tr>
249
              </table>
250
</form>
251 9e9b596f Ermal Luçi
<?php include("fend.inc"); ?>
252 f1f60c92 Ermal Luçi
</body>
253
</html>