Changeset 262 for branches/dns/cgi-bin/admin.cgi
- Timestamp:
- 06/17/05 16:42:45 (20 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/dns/cgi-bin/admin.cgi
r214 r262 33 33 } 34 34 35 if ($authuser !~ /^(kdeugau|jodyh|jipp)$/) {36 print "Content-Type: text/html\n\n".37 "<html><head><title>Access denied</title></head><body>\n".38 'Access to this tool is restricted. Contact <a href="mailto:kdeugau@vianet.ca">Kris</a> '.39 "for more information.</body></html>\n";40 exit;41 }42 43 35 syslog "debug", "$authuser active"; 44 36 … … 53 45 } 54 46 initIPDBGlobals($ip_dbh); 47 48 if ($IPDBacl{$authuser} !~ /A/) { 49 print "Content-Type: text/html\n\n". 50 "<html><head><title>Access denied</title></head><body>\n". 51 'Access to this tool is restricted. Contact <a href="mailto:kdeugau@vianet.ca">Kris</a> '. 52 "for more information.</body></html>\n"; 53 exit; 54 } 55 55 56 56 my %webvar = parse_post(); … … 90 90 </form> 91 91 <hr><a href="admin.cgi?action=showpools">List IP Pools</a> for manual tweaking and updates 92 <hr><a href="admin.cgi?action=showusers">Manage users</a> (add/remove users; change 93 internal access controls - note that this does NOT include IP-based limits) 92 94 ); 93 95 } else { … … 123 125 printAndExit("Can't allocate from outside a free block!!\n") 124 126 if !$data[0]; 127 } elsif ($webvar{alloctype} =~ /^(.)i$/) { 128 $sth = $ip_dbh->prepare("select cidr from allocations where cidr >>='$cidr' and (type like '_d' or type like '_p')"); 129 $sth->execute; 130 @data = $sth->fetchrow_array; 131 # User deserves errors if user can't be bothered to find the pool and a free IP first. 132 printAndExit("Can't allocate static IP from outside a pool!!\n") 133 if !$data[0]; 125 134 } else { 126 135 $sth = $ip_dbh->prepare("select cidr from freeblocks where cidr >>='$cidr' and not (routed='n')"); … … 202 211 print "Allocation failed! IPDB::allocateBlock said:\n$msg\n"; 203 212 syslog "err", "($authuser) Allocation of '$webvar{cidr}' to '$webvar{custid}' as ". 204 "'$webvar{ type}' failed: '$msg'";213 "'$webvar{alloctype}' failed: '$msg'"; 205 214 } 206 215 } # done city check … … 267 276 syslog "notice", "$authuser updated pool IP $webvar{ip}"; 268 277 } 269 # showPool("$data[0]"); 270 #} else { 271 # print "webvar{action} check failed: $webvar{action}"; 278 } elsif ($webvar{action} eq 'showusers') { 279 print "Notes:<br>\n". 280 "<li>Admin users automatically get all other priviledges.\n". 281 "<hr>Add new user:<form action=admin.cgi method=POST>\n". 282 "Username: <input name=username><br>\n". 283 "Password: <input name=password> <input type=checkbox name=preenc>Password is pre-encrypted (MUST be crypt() encrypted)<br>\n". 284 "<input type=submit value='Add user'><input type=hidden name=action value=newuser></form>\n"; 285 286 print "<hr>Users with access:\n<table border=1>\n"; 287 print "<tr><td>Username</td><td>Add new</td><td>Change</td>". 288 "<td>Delete</td><td>Admin user</td></tr>\n". 289 "<form action=admin.cgi method=POST>\n"; 290 $sth = $ip_dbh->prepare("select username,acl from users order by username"); 291 $sth->execute; 292 while (my @data = $sth->fetchrow_array) { 293 print "<form action=admin.cgi method=POST><input type=hidden name=action value=updacl>". 294 qq(<tr><td>$data[0]<input type=hidden name=username value="$data[0]"></td><td>). 295 # Now for the fun bit. We have to pull apart the ACL field and 296 # output a bunch of checkboxes. 297 "<input type=checkbox name=add".($data[1] =~ /a/ ? ' checked=y' : ''). 298 "></td><td><input type=checkbox name=change".($data[1] =~ /c/ ? ' checked=y' : ''). 299 "></td><td><input type=checkbox name=del".($data[1] =~ /d/ ? ' checked=y' : ''). 300 "></td><td><input type=checkbox name=admin".($data[1] =~ /A/ ? ' checked=y' : ''). 301 qq(></td><td><input type=submit value="Update"></td></form>\n). 302 "<form action=admin.cgi method=POST><td><input type=hidden name=action value=deluser>". 303 "<input type=hidden name=username value=$data[0]>". 304 qq(<input type=submit value="Delete user"></tr></form>\n); 305 306 } 307 print "</table>\n"; 308 } elsif ($webvar{action} eq 'updacl') { 309 print "Updating ACL for $webvar{username}:<br>\n"; 310 my $acl = 'b'; 311 if ($webvar{admin} eq 'on') { 312 $acl .= "acdA"; 313 } else { 314 $acl .= ($webvar{add} eq 'on' ? 'a' : ''). 315 ($webvar{change} eq 'on' ? 'c' : ''). 316 ($webvar{del} eq 'on' ? 'd' : ''); 317 } 318 print "New ACL: $acl<br>\n"; 319 320 $sth = $ip_dbh->prepare("update users set acl='$acl' where username='$webvar{username}'"); 321 $sth->execute; 322 print "OK\n" if !$sth->err; 323 324 print qq(<hr><a href="admin.cgi?action=showusers">Back</a> to user listing\n); 325 326 } elsif ($webvar{action} eq 'newuser') { 327 print "Adding user $webvar{username}...\n"; 328 my $cr_pass = ($webvar{preenc} ? $webvar{password} : 329 crypt $webvar{password}, join('',('.','/',0..9,'A'..'Z','a'..'z')[rand 64, rand 64])); 330 $sth = $ip_dbh->prepare("insert into users (username,password,acl) values ". 331 "('$webvar{username}','$cr_pass','b')"); 332 $sth->execute; 333 if ($sth->err) { 334 print "<br>Error adding user: ".$sth->errstr; 335 } else { 336 print "OK\n"; 337 } 338 339 print qq(<hr><a href="admin.cgi?action=showusers">Back</a> to user listing\n); 340 341 } elsif ($webvar{action} eq 'deluser') { 342 print "Deleting user $webvar{username}.<br>\n"; 343 $sth = $ip_dbh->prepare("delete from users where username='$webvar{username}'"); 344 $sth->execute; 345 print "OK\n" if !$sth->err; 346 347 print qq(<hr><a href="admin.cgi?action=showusers">Back</a> to user listing\n); 348 349 } elsif ($webvar{action} ne '<NULL>') { 350 print "webvar{action} check failed: Don't know how to $webvar{action}"; 272 351 } 273 352
Note:
See TracChangeset
for help on using the changeset viewer.