Commit 89b504e6d307f834f75ce633aedbbf8376069f51
1 parent
ec25394c
moved obtaining $signer and $key into a function, which now also ensures that bo…
…th have a value (if not, abort with an HTTP 400 errro) renamed LICENSE file for clarity
Showing
2 changed files
with
24 additions
and
13 deletions
LICENSE renamed to LICENSE.txt
dyndns.pl
... | ... | @@ -138,7 +138,28 @@ sub expand_CNAME($;$) { |
138 | 138 | return $host; |
139 | 139 | } |
140 | 140 | |
141 | -# Method to perform an DNS Update for a single host | |
141 | +# Get signer and key CGI paramseters, abort with HTTP 400 error if not present | |
142 | +sub get_authinfo($$) { | |
143 | + my ($cgi, $host) = @_; | |
144 | + | |
145 | + # Get signer and key parameters | |
146 | + my $signer = ($AuthMode eq 'static') ? $StaticSigner : ($cgi->param('user') | |
147 | + || (($AuthMode eq 'both') ? $StaticSigner : $host)); | |
148 | + my $key = ($AuthMode eq 'static') ? $StaticKey : ($cgi->param('secret') | |
149 | + || (($AuthMode eq 'both') ? $StaticSigner : undef)); | |
150 | + | |
151 | + # Ensure we have a value for signer and key, otherwise abort the processing | |
152 | + if($signer eq '' or $key eq '') { | |
153 | + print $cgi->header(-status=>400, -type=>'text/plain'), | |
154 | + "ERROR - No/incomplete authentication information provided\n"; | |
155 | + exit | |
156 | + } | |
157 | + | |
158 | + # and return the values | |
159 | + return($signer, $key); | |
160 | +} | |
161 | + | |
162 | +# Perform an DNS Update for a single host | |
142 | 163 | sub DNS_Update($$$$$$$) { |
143 | 164 | my ($dnsdomain, $dnshost, $ipv4, $ipv6, $signer, $key, $debug) = @_; |
144 | 165 | my $dnsupdate = Net::DNS::Update->new($dnsdomain); |
... | ... | @@ -190,12 +211,7 @@ sub DNS_Update($$$$$$$) { |
190 | 211 | # Handlers for the different requests |
191 | 212 | sub handle_update($$$$$$) { |
192 | 213 | my ($cgi, $mode, $host, $dnshost, $dnsdomain, $debug) = @_; |
193 | - | |
194 | - # Get signer and key parameters | |
195 | - my $signer = ($AuthMode eq 'static') ? $StaticSigner : ($cgi->param('user') | |
196 | - || (($AuthMode eq 'both') ? $StaticSigner : $host)); | |
197 | - my $key = ($AuthMode eq 'static') ? $StaticKey : ($cgi->param('secret') | |
198 | - || (($AuthMode eq 'both') ? $StaticSigner : undef)); | |
214 | + my ($signer, $key) = get_authinfo($cgi, $host); | |
199 | 215 | |
200 | 216 | # perform the action |
201 | 217 | my ($statuscode, $statusmessage); |
... | ... | @@ -221,13 +237,8 @@ sub handle_update($$$$$$) { |
221 | 237 | |
222 | 238 | sub handle_expire($$$$$$) { |
223 | 239 | my ($cgi, $mode, $host, $dnshost, $dnsdomain, $debug) = @_; |
240 | + my ($signer, $key) = get_authinfo($cgi, $host); | |
224 | 241 | |
225 | - # Get signer and key parameters | |
226 | - my $signer = ($AuthMode eq 'static') ? $StaticSigner : ($cgi->param('user') | |
227 | - || (($AuthMode eq 'both') ? $StaticSigner : $host)); | |
228 | - my $key = ($AuthMode eq 'static') ? $StaticKey : ($cgi->param('secret') | |
229 | - || (($AuthMode eq 'both') ? $StaticSigner : undef)); | |
230 | - | |
231 | 242 | my $debugmsg = ($debug) ? "\n" : ''; |
232 | 243 | |
233 | 244 | # perform the action |
... | ... |