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 ""; + foreach($hosts as $key => $val) { + $hname = $val["category"]; + $hip = $val["name"]; + $hg = $val["val"]; + if($hg == "") $hg = "-"; + echo ""; + } + echo "
HostIPHost GroupLast SeenControl
$hname$hip$hg...Delete
"; + } else { + echo "No hosts defined yet
"; + } + echo "
"; + + // groups + echo "

Host Groups

"; + if($groups) { + echo ""; + foreach($groups as $key=>$val) { + $grpname = $val["category"]; + echo ""; + } + echo "
Group Name
$grpname
"; + } else { + echo "No host groups defined yet
"; + } + echo "
"; + + + echo "
"; + + // the add hosts dialog + echo "

Add Host

"; + echo "
"; + echo "Hostname:
"; + echo "IP Address:
"; + if($groups) { + echo "Host Group:
"; + } + echo ""; + echo "
"; + + echo "
"; + + // the add groups dialog + echo "

Add Group

"; + echo "
"; + echo "Groupname:
"; + echo "
"; + echo "
"; + + echo "
"; + //scan ip range via dns + echo "

Scan Range

"; + echo "
"; + echo "Range (i.e. 10.1.2.0):
"; + if($groups) { + echo "Host Group:
"; + } + echo "
"; + echo "
"; + + echo "
"; + } private $config;