X-Git-Url: http://git.pjr.cc/?p=glcas.git;a=blobdiff_plain;f=plugins%2Fhosts.php;fp=plugins%2Fhosts.php;h=3634682eb4d1f4de9e86da7c6a4d5b5635887539;hp=76e3e59fb5fe68f98417260df95984d3d6872e5b;hb=155c0a1bc81dff4fc1bb4bcebb754c961e457499;hpb=58365ecc64413d416dadaa82607e57a1f76eca7e
diff --git a/plugins/hosts.php b/plugins/hosts.php
index 76e3e59..3634682 100644
--- a/plugins/hosts.php
+++ b/plugins/hosts.php
@@ -22,11 +22,18 @@ class GLCASHosts {
switch($_REQUEST["action"]) {
case "addhost":
error_log("in updaterepo");
- GLCASpageBuilder($this,"addPackage");
+ GLCASpageBuilder($this,"addHost");
return;
- case "delhost":
- error_log("in delete pkg");
- GLCASpageBuilder($this, "delPackage");
+ case "addgroup":
+ error_log("in add group");
+ GLCASpageBuilder($this, "addGroup");
+ return;
+ case "deletehost":
+ error_log("in add group");
+ GLCASpageBuilder($this, "deleteHost");
+ return;
+ case "scanrange":
+ GLCASpageBuilder($this, "scanIPRange");
return;
}
}
@@ -36,9 +43,194 @@ class GLCASHosts {
}
+ function scanIPRange($url)
+ {
+ $iprange = $_REQUEST["scanip"];
+ $hostgroup = "";
+ if(isset($_REQUEST["hostgroup"])) {
+ $hostgroup = $_REQUEST["hostgroup"];
+ }
+
+ // we just assume class c atm
+ $ips_v = explode(".", $iprange);
+
+ $ips = $ips_v[0].".".$ips_v[1].".".$ips_v[2];
+
+ for($i = 1; $i < 32; $i++) {
+ $hostname = "";
+ $ips_me = "$ips.$i";
+ echo "Scanning $ips_me
";
+ error_log("Scanning $ips_me
");
+ flush();
+ $hostname = gethostbyaddr($ips_me);
+ if($hostname != $ips_me) {
+ echo "Found host on $ips_me as $hostname
";
+ error_log("Found host on $ips_me as $hostname");
+ flush();
+ $hosts = $this->config->getData("hosts");
+ $exists = false;
+ foreach($hosts as $key => $val) {
+ if($val["category"] == $hostname && $val["name"] == $ips_me) {
+ echo "Host in db already
";
+ $exists = true;
+ flush();
+ }
+
+ }
+ if(!$exists) $this->config->addData("hosts", "$hostname", "$ips_me", "$hostgroup");
+
+
+ }
+ }
+ echo "Finished";
+ }
+
+ function deleteHost($url)
+ {
+ $hostname = $_REQUEST["hostname"];
+ $this->config->delData("hosts", "$hostname");
+ global $WEB_ROOT_FS, $URL_HANDLERS, $BASE_URL;
+ header("Location: $BASE_URL/hosts");
+ }
+
+ function addHost($url)
+ {
+ $hg = $_REQUEST["hostgroup"];
+ $hostname = $_REQUEST["hostname"];
+ $ip = $_REQUEST["ipaddr"];
+
+ if($hostname == "" && $ip == "") {
+ echo "Error: must have either ip or hostname\n";
+ return 0;
+ }
+
+ if($hostname == "") {
+ // try to lookup hostname from ip
+ $hostname = gethostbyaddr($ip);
+ }
+
+ if($ip == "") {
+ // try to lookup ip from hostname
+ $ip = gethostbyname($hostname);
+ }
+
+ $hosts = $this->config->getData("hosts");
+ foreach($hosts as $key => $val) {
+ if($val["category"] == $hostname && $val["name"] == $ip) {
+ echo "Error: host already exists
";
+ return 0;
+ }
+ }
+
+ $this->config->addData("hosts", "$hostname", "$ip", "$hg");
+
+
+ global $WEB_ROOT_FS, $URL_HANDLERS, $BASE_URL;
+ header("Location: $BASE_URL/hosts");
+
+ }
+
+ function addGroup($url)
+ {
+ $grpname = $_REQUEST["groupname"];
+ $groups = $this->config->getData("hostgroups");
+
+ foreach($groups as $key => $val) {
+ if($val["category"] == $grpname) {
+ echo "Error: gorup already exists";
+ return 0;
+ }
+ }
+
+ $this->config->adddata("hostgroups", "$grpname", "", "");
+ global $WEB_ROOT_FS, $URL_HANDLERS, $BASE_URL;
+ header("Location: $BASE_URL/hosts");
+
+ }
+
function mainBody($url)
{
- echo "I am a hosts thingy";
+ $hosts = $this->config->getData("hosts");
+ $groups = $this->config->getData("hostgroups");
+
+ echo "
Hosts
";
+ if($hosts) {
+ echo "Host | IP | Host Group | Last Seen | Control |
";
+ foreach($hosts as $key => $val) {
+ $hname = $val["category"];
+ $hip = $val["name"];
+ $hg = $val["val"];
+ if($hg == "") $hg = "-";
+ echo "$hname | $hip | $hg | ... | Delete |
";
+ }
+ echo "
";
+ } else {
+ echo "No hosts defined yet
";
+ }
+ echo "
";
+
+ // groups
+ echo "Host Groups
";
+ if($groups) {
+ echo "Group Name |
";
+ foreach($groups as $key=>$val) {
+ $grpname = $val["category"];
+ echo "$grpname |
";
+ }
+ echo "
";
+ } else {
+ echo "No host groups defined yet
";
+ }
+ echo "
";
+
+
+ echo "";
+
+ // the add hosts dialog
+ echo "Add Host";
+ echo "";
+
+ echo " | ";
+
+ // the add groups dialog
+ echo "Add Group";
+ echo "";
+
+ echo " | ";
+ //scan ip range via dns
+ echo "Scan Range";
+ echo "";
+
+ echo " |
";
+
}
private $config;