ug... i have no idea really...
[PHPIPManager.git] / lib / www.php
index 79409a8..4fc2f27 100644 (file)
@@ -1,7 +1,19 @@
 <?php
 // The www class file.
 $actionRegister["addsuper"] = "www_ip_addSuperRange";
-$actionRegister["allocate"] = "www_ip_allocateSubRange";
+$actionRegister["allocate"] = "www_ip_allocateRange";
+$actionRegister["allocatesub"] = "www_ip_allocateSubRange";
+$actionRegister["deletesub"] = "www_ip_deleteSubRange";
+$actionRegister["modsubnet"] = "www_ip_modifySubnet";
+$actionRegister["dumpdb"] = "www_db_dumpdb";
+$actionRegister["restoredb"] = "www_db_restoredb";
+$actionRegister["changesubdetails"] = "www_ip_changesubdetails";
+$actionRegister["addhosts"] = "www_ip_addhost";
+$actionRegister["deletehost"] = "www_ip_deletehost";
+$actionRegister["modifyhost"] = "www_ip_modifyhost";
+$actionRegister["updatehost"] = "www_ip_updatehost";
+$actionRegister["scansub"] = "www_ip_scansub";
+$actionRegister["scansubreal"] = "www_ip_scansubReal";
 
 class www {
        function Go() {
@@ -67,14 +79,38 @@ Description <input type="text" name="desc"></input>
                $res = $db->dbobject->query("select * from supernet");
                foreach($res as $row) {
                        //echo "<pre>";
-               //      print_r($row);
-               //      echo "</pre><hr>";
-                       echo "<table border=\"1\"><tr><th>".$row["sn_name"]."</th><td>".$row["sn_ip"]."/".$row["sn_mask"]."</td><td>".$row["sn_desc"]."</td>";
+                       //      print_r($row);
+                       //      echo "</pre><hr>";
+                       if(ipversion($row["sn_ip"]) == 6) $ip6trans = "::0";
+                       else $ip6trans = "";
+                       echo "<table border=\"1\"><tr><th align=\"left\">".$row["sn_name"]."</th><td>".$row["sn_ip"]."$ip6trans/".$row["sn_mask"]."</td><td>".$row["sn_desc"]."</td>";
                        echo "<td><a href=\"?action=allocate&id=".$row["sn_id"]."\">Allocate Subnet</a></td>";
                        echo "<td><a href=\"?action=delete&id=".$row["sn_id"]."\">Delete Supernet</a></td>";
+                       echo "</tr>";
                        // now we search for sub's
+                       $res2 = $db->dbobject->query("select * from subnet where snid_id='".$row["sn_id"]."'");
+                       foreach($res2 as $row2) {
+                               // ("sn_id" INTEGER PRIMARY KEY AUTOINCREMENT,"snid_id" INTEGER,"sn_ip" TEXT,"sn_mask" TEXT,"sn_name" TEXT, "sn_desc" TEXT);';
+                               $name = $row2["sn_name"];
+                               $subid = $row2["sn_id"];
+                               $subnet = $row2["sn_ip"];
+                               $mask = $row2["sn_mask"];
+                               $desc = $row2["sn_desc"];
+
+                               if(ipversion($row2["sn_ip"]) == 6) $ip6trans = "::0";
+                               else $ip6trans = "";
+       
+                               echo "<tr>";
+                               echo "<td><li> <i><a href=\"?action=modsubnet&id=".$row2["sn_id"]."\">$name</a></i></td><td>$subnet$ip6trans/$mask</td><td>$desc</td>";
+                               echo "<td><a href=\"?action=deletesub&id=".$row2["sn_id"]."\">Delete Subnet</a></td>";
+                               //echo "<td><a href=\"?action=addhost&id=".$row["sn_id"]."\">Add Host</a></td>";
+                               if(ipversion($row2["sn_ip"]) == 4) echo "<td><a href=\"?action=scansub&id=".$row2["sn_id"]."\">Scan Subnet</a></td>";
+                               echo "</tr>";
+                       }
                        echo "</table><br>";
                }
+               
+               echo "<a href=\"?action=dumpdb\">dump database</a> <a href=\"?action=restoredb\">restore database</a>";  
        }
        
        function printError()
@@ -95,6 +131,10 @@ Description <input type="text" name="desc"></input>
                ?>
 <html>
 <head><title><?php echo $title ?></title>
+<?php 
+               if(file_exists("style.css")) echo '<link href="style.css" rel="stylesheet" type="text/css" />'; 
+
+?>
 </head>
 <body><h1><?php echo $title ?></h1>
                <?php
@@ -102,6 +142,13 @@ Description <input type="text" name="desc"></input>
        
        function footer()
        {
+               echo "<pre>";
+               //print_r($_SERVER);
+               
+               //print_r($_REQUEST);
+               
+               //print_r($GLOBALS);
+               echo "</pre>";
                ?>
 </body></html>
                <?php
@@ -114,6 +161,46 @@ Description <input type="text" name="desc"></input>
        }
 }
 
+function www_ip_scansub()
+{
+       global $db, $wwwConnector;
+       
+       $id = $_REQUEST["id"];
+       
+       $res = $db->dbobject->query("select * from subnet where sn_id=='$id'");
+       
+       foreach($res as $row) {
+               $snip = $row["sn_ip"];
+               $snmask = $row["sn_mask"];
+               $snname = $row["sn_name"];
+       }
+       $wwwConnector->header();
+       $wwwConnector->printError();
+       
+?>
+You are about to scan the subnet <?php echo "$snname ($snip/$snmask)" ?> how would you like entries added:<br>
+<li> <a href="index.php?action=scansubreal&id=<?php echo $id?>&method=1">Replace</a> all default entries (i.e. where the name and the ip address are the same) where hosts are UP (reply to ping)
+<li> <a href="index.php?action=scansubreal&id=<?php echo $id?>&method=2">Replace</a> all entries where hosts are UP (reply to ping)
+<li> <a href="index.php?action=scansubreal&id=<?php echo $id?>&method=3">Add</a> any entries where hosts are UP (reply to ping) and an entry does not already exist in the database
+<li> <a href="index.php?action=scansubreal&id=<?php echo $id?>&method=4">Add</a> any entries where hosts are UP or Down and an entry does not already exist in the database, but the IP has a reverse hostname entry
+<li> <a href="index.php?action=scansubreal&id=<?php echo $id?>&method=5">Delete</a> all entries and replace with hosts that are Up or Down and have reverse hostname entries
+<?php 
+
+       $wwwConnector->footer();
+}
+
+function www_ip_scansubReal()
+{
+       global $db, $wwwConnector;
+
+       $id = $_REQUEST["id"];
+       
+       system("/usr/bin/php ../lib/runscan.php $id > /tmp/out.phpipman 2>&1 &");
+       error_log("would exec... nmap -sP -oX $fname $sn/$sm");
+       
+       header("Location: index.php?notice=Scan Initiated");
+}
+
 function www_ip_addSuperRange()
 {
        global $db;
@@ -123,17 +210,16 @@ function www_ip_addSuperRange()
        $mask = $_REQUEST["mask"];
        $desc = $_REQUEST["desc"];
        
-       if(ip::isValid($sn, $mask)) {
-               $sn = ip::truncateNetwork($sn, $mask);
-               $sql = "insert into supernet values (NULL, '$name', '$sn', '$mask', '$desc')";
-               $db->dbobject->query($sql);
+       $myip = new ip();
+       
+       if($myip->addSupernet($name, $sn, $mask, $desc)) {
                header("Location: index.php?notice=range added");
        } else {
                header("Location: index.php?error=invalid ipaddress");
        }
 }
 
-function www_ip_allocateSubRange()
+function www_ip_allocateRange()
 {
        global $db, $wwwConnector;
 
@@ -147,12 +233,12 @@ function www_ip_allocateSubRange()
        $wwwConnector->header();
        $wwwConnector->printError();
        ?>
-sql is <?php echo "select * from supernet where sn_id=='$id" ?><br>
 <form method="post" action="?action=allocatesub&id=<?php echo $id ?>">
+<input type="hidden" name="superid" value="<?php echo $id ?>">
 <table>
 <tr><td>Subnet Name</td><td><input type="text" name="subname"></td></tr>
 <tr><td>Subnet IP</td><td><input type="text" name="subip" value="<?php echo $sn?>"></td></tr>
-<tr><td>Subnet Mask</td><td><input type="text" name="subip"></td></tr>
+<tr><td>Subnet Mask</td><td><input type="text" name="submask"></td></tr>
 <tr><td>Description</td><td><input type="text" name="subdesc"></td></tr>
 <tr><td><input type="submit" name="add" value="Add"></td></tr>
 </table>
@@ -162,4 +248,201 @@ sql is <?php echo "select * from supernet where sn_id=='$id" ?><br>
        $wwwConnector->footer();
 }
 
+function www_ip_deleteSubRange()
+{
+       global $db, $wwwConnector;
+       
+       $id = $_REQUEST["id"];
+       //("sn_id" INTEGER PRIMARY KEY AUTOINCREMENT,"snid_id" INTEGER,"sn_ip" TEXT,"sn_mask" TEXT,"sn_name" TEXT, "sn_desc" TEXT);';
+       $sql = "delete from subnet where sn_id=='$id'";
+       $res = $db->dbobject->query($sql);
+       
+       header("Location: index.php?notice=Deleted\n");
+}
+
+function www_ip_allocateSubRange()
+{
+       global $db, $wwwConnector;
+       
+       $superid = $_REQUEST["superid"];
+       $name = $_REQUEST["subname"];
+       $subip = $_REQUEST["subip"];
+       $mask = $_REQUEST["submask"];
+       $desc = $_REQUEST["subdesc"];
+       
+       $myip = new ip();
+       $err = $myip->addSubnet($name, $subip, $mask, $desc, $superid);
+       if($err ===true) {
+               header("Location: index.php?notice=range added");
+       } else {
+               header("Location: index.php?error=$err");
+       }
+}
+
+function www_ip_modifySubnet()
+{
+       global $db, $wwwConnector;
+
+       $id = $_REQUEST["id"];
+       //("sn_id" INTEGER PRIMARY KEY AUTOINCREMENT,"snid_id" INTEGER,"sn_ip" TEXT,"sn_mask" TEXT,"sn_name" TEXT, "sn_desc" TEXT);';
+       $sql = "select sn_name,sn_desc,sn_ip from subnet where sn_id=='$id'";
+       $res = $db->dbobject->query($sql);
+       
+       foreach($res as $row) {
+               $sn_name = $row["sn_name"];
+               $sn_desc = $row["sn_desc"];
+               $sn_ip = $row["sn_ip"];
+       }
+       
+       $wwwConnector->header();
+       $wwwConnector->printError();
+       
+       // ("ho_id" INTEGER PRIMARY KEY AUTOINCREMENT,"ho_sn_id" INTEGER,"ho_ip" TEXT,"ho_name" TEXT,"ho_desc" TEXT)
+       ?>
+<form method="post" action="?action=changesubdetails&id=<?php echo $id ?>">
+Subnet Name: <input type="text" name="subname" value="<?php echo $sn_name?>">
+Subnet Description: <input type="text" name="subdesc" value="<?php echo $sn_desc?>">
+<input type="submit" name="change" value="Update">
+</form>
+
+<form method="post" action="?action=addhosts&id=<?php echo $id ?>">
+<h3>Add Host</h3>
+Hostname <input type="text" name="hostname">
+IP Address <input type="text" name="hostip" value="<?php echo $sn_ip?>">
+Description <input type="text" name="hostdesc" >
+<input type="submit" name="change" value="Add">
+</form>
+
+
+
+<table border=1>
+<tr><th>Host IP</th><th>Hostname</th><th>Description</th></tr>
+<?php
+       $sql = "select * from hosts where ho_sn_id='$id'";
+       $res = $db->dbobject->query($sql);
+       
+       foreach($res as $row) {
+               $name = $row["ho_name"];
+               $desc = $row["ho_desc"];
+               $ip = $row["ho_ip"];
+               $hid = $row["ho_id"];
+               echo "<tr><td><a href=\"?action=modifyhost&hid=$hid\">$ip</a></td><td>$name</td><td>$desc</td><td><a href=\"?action=deletehost&hostid=$hid&snid=$id\">Delete</a></td></tr>";
+       } 
+?>
+</table>
+
+
+<a href="index.php">Back</a>
+<?php
+
+       $wwwConnector->footer();
+}
+
+function www_ip_updatehost()
+{
+       global $db, $wwwConnector;
+       
+       $hname = $_REQUEST["hostname"];
+       $hip = $_REQUEST["hostip"];
+       $hdesc = $_REQUEST["hostdesc"];
+       $sid = $_REQUEST["superid"];
+       $hid = $_REQUEST["hid"];
+       
+       // ("ho_id" INTEGER PRIMARY KEY AUTOINCREMENT,"ho_sn_id" INTEGER,"ho_ip" TEXT,"ho_name" TEXT,"ho_desc" TEXT)
+       $sql = "update hosts set ho_name='$hname',ho_ip='$hip',ho_desc='$hdesc' where ho_id='$hid'";
+       $db->dbobject->query($sql);
+       
+       header("Location: ?action=modsubnet&id=$sid");
+}
+
+function www_ip_modifyhost()
+{
+       global $db, $wwwConnector;
+       
+       $id = $_REQUEST["hid"];
+       
+       $res = $db->dbobject->query("select * from hosts where ho_id=='$id'");
+       
+       foreach($res as $row) {
+               $hname = $row["ho_name"];
+               $hip = $row["ho_ip"];
+               $sid = $row["ho_sn_id"];
+               $hdesc = $row["ho_desc"];
+       }
+       
+       $wwwConnector->header();
+       $wwwConnector->printError();
+       ?>
+<form method="post" action="?action=updatehost&hid=<?php echo $id ?>">
+<input type="hidden" name="superid" value="<?php echo $sid ?>">
+<table>
+<tr><td>Host Name</td><td><input type="text" name="hostname" value="<?php echo $hname?>"></td></tr>
+<tr><td>Host IP</td><td><input type="text" name="hostip" value="<?php echo $hip?>"></td></tr>
+<tr><td>Description</td><td><input type="text" name="hostdesc" value="<?php echo $hdesc?>"></td></tr>
+<tr><td><input type="submit" name="add" value="Update"></td></tr>
+</table>
+</form>
+<a href="<?php echo $_SERVER["HTTP_REFERER"]?>">Back</a>
+<?php
+
+       $wwwConnector->footer();
+}
+
+function www_ip_deletehost()
+{
+       global $db, $wwwConnector;
+       
+       $id = $_REQUEST["hostid"];
+       $sid = $_REQUEST["snid"];
+       
+       $sql = "delete from hosts where ho_id=='$id'";
+       $db->dbobject->query($sql);
+       
+       header("Location: ?action=modsubnet&id=$sid");
+}
+
+function www_ip_addhost()
+{
+       global $db, $wwwConnector;
+       
+       $id = $_REQUEST["id"];
+       $hn = $_REQUEST["hostname"];
+       $hip = $_REQUEST["hostip"];
+       $desc = $_REQUEST["hostdesc"];
+       
+       $sql = "insert into hosts values (NULL, '$id', '$hip', '$hn', '$desc')";
+       $db->dbobject->query($sql);
+       
+       header("Location: ?action=modsubnet&id=$id");
+}
+
+function www_ip_changesubdetails()
+{
+       global $db, $wwwConnector;
+       
+       $id = $_REQUEST["id"];
+       $name = $_REQUEST["subname"];
+       $desc = $_REQUEST["subdesc"];
+
+       $sql = "update subnet set sn_name='$name', sn_desc='$desc' where sn_id=='$id'";
+       $db->dbobject->query($sql);
+       
+       header("Location: ?action=modsubnet&id=$id");
+}
+
+function www_db_dumpdb()
+{
+       global $db;
+       
+       $datestamp = strftime("%d-%m-%Y-%H.%M.%S");
+       $name = "ipmandbdump-$datestamp.db";
+       header("Content-type: application/octet-stream;\n");
+       header("Content-Disposition: attachment; filename=\"$name\";\n\n");
+       $db->dump();
+}
+
+function www_db_restoredb()
+{
+}
+
 ?>
\ No newline at end of file