hostgroup scanning works.
[glcas.git] / plugins / adhoc.php
index 9bfbb65..7b56ef8 100644 (file)
@@ -25,6 +25,17 @@ class GLCASAdhoc {
        
        function go($url)
        {
+               error_log("ADHOC: url is $url in");
+               $tags = explode("/", $url);
+               if(isset($tags[1])) {
+                       error_log("tags 1 is set: \"".$tags[1]."\"");
+                       if($tags[1] != "") {
+                               if($this->doPackageRequest($tags[1])) return 0;
+                       } else {
+                               GLCASpageBuilder($this, "doPackageList");
+                               return 0;
+                       }
+               }
                if(isset($_REQUEST["action"])) {
                        switch($_REQUEST["action"]) {
                                case "addpackage":
@@ -43,22 +54,31 @@ class GLCASAdhoc {
                
        }
        
+       function doPackageList()
+       {
+               echo "im a package list\n";
+       }
+       
+       function doPackageRequest($package)
+       {
+               echo "i got a request for $package\n";
+               
+               return true;
+       }
+       
        function delPackage($url)
        {       
                $repostore = $this->config->getConfig("storagelocation");
                
                $pkgid = $_REQUEST["pkgid"];
+               $pkgname = $_REQUEST["pkgname"];
                
-               $pkgs = unserialize($this->config->getConfig("adhocpackages"));
-               
-               if(isset($pkgs[$pkgid])) {
-                       unset($pkgs[$pkgid]);
-                       $this->config->setConfig("adhocpackages", serialize($pkgs));
-                       $this->config->saveConfig();
-               }
+               $this->config->delAllData("adhocpkgdata", $pkgid);
+               $this->config->delData("adhoc", "pkglist", "$pkgname", "$pkgid");
                
                global $WEB_ROOT_FS, $URL_HANDLERS, $BASE_URL;
-               header("Location: $BASE_URL/adhoc/");
+               header("Location: $BASE_URL/adhoc");
+               
                
        }
        
@@ -67,10 +87,16 @@ class GLCASAdhoc {
                $repostore = $this->config->getConfig("storagelocation");
                
                if(!isset($_REQUEST["pkgname"])) {
-                       echo "<font color=\"red\">Error: No package name set</font><br>";
+                       if(isset($_REQUEST["origpkg"])) if($_REQUEST["origpkg"] == -1) {
+                               echo "<font color=\"red\">Error: No package name set</font><br>";
+                               return 0;
+                       }
                } 
                if($_REQUEST["pkgname"] == "") {
-                       echo "<font color=\"red\">Error: Package name cant be blank</font><br>";
+                       if(isset($_REQUEST["origpkg"])) if($_REQUEST["origpkg"] == -1) {
+                               echo "<font color=\"red\">Error: Package name cant be blank</font><br>";
+                               return 0;
+                       }
                }
                
 
@@ -97,50 +123,63 @@ class GLCASAdhoc {
                
                if(!$uploaded && !$fileurl) {
                        echo "<font color=\"red\">Error: no uploaded file and no file url, you need one or the other buddy</font><br>";
+                       return 0;
                }
                
                $getfile = "";
                if($fileurl) {
                        $getfile = file_get_contents($_REQUEST["fileurl"]);
-               }
+               } 
                
                if($uploaded||$fileurl) {
                        echo "Got a file named $fname, $lname";
                }
                
-               $pkgs = unserialize($this->config->getConfig("adhocpackages"));
+               $myname = $_REQUEST["pkgname"];
+               $myarch = $_REQUEST["arch"];
+               $mytype = $_REQUEST["type"];
+               $myfileurl = $ultfileurl;
+               
+               if(isset($_REQUEST["origpkg"])) if($_REQUEST["origpkg"] != -1) {
+                       $n = $_REQUEST["origpkg"];
+                       $this->config->addData("adhocpkgdata", "$n", "arch", $myarch);
+                       $this->config->addData("adhocpkgdata", "$n", "type", $mytype);
+                       $outputfile = "$repostore/adhoc/$n.$myarch.$mytype";
+                       if($uploaded) {
+                               copy("$fname", "$outputfile");
+                       } else {
+                               file_put_contents("$outputfile", $getfile);
+                       }
+                       
+                       global $WEB_ROOT_FS, $URL_HANDLERS, $BASE_URL;
+                       header("Location: $BASE_URL/adhoc");
+                       return 0;
+               }
                
-               $n = -1;
-               foreach($pkgs as $key => $var) {
-                       $n = $key;
+               // assuming add a new
+               $n = 0;
+               $pkglist = $this->config->getData("adhoc", "pkglist");
+               if($pkglist !== false) foreach($pkglist as $key => $val) {
+                       $n = $val["name"]+1;
                }
-               $n++;
+
+               error_log("would add package as $n");
                
-               echo "Would add package as $n";
+               $this->config->addData("adhoc", "pkglist", "$myname", $n);
+               $this->config->addData("adhocpkgdata", "$n", "arch", $myarch);
+               $this->config->addData("adhocpkgdata", "$n", "type", $mytype);
                
-               $pkgs[$n]["name"] = $_REQUEST["pkgname"];
-               $pkgs[$n]["arch"] = $_REQUEST["arch"];
-               $pkgs[$n]["type"] = $_REQUEST["type"];
-               $pkgs[$n]["fileurl"] = $ultfileurl;
-
+               
+               $outputfile = "$repostore/adhoc/$n.$myarch.$mytype";
                if($uploaded) {
-                       copy("$fname", "$repostore/adhoc/$n");
+                       copy("$fname", "$outputfile");
                } else {
-                       file_put_contents("$repostore/adhoc/$n", $fetfile);
+                       file_put_contents("$outputfile", $getfile);
                }
                
-               $this->config->setConfig("adhocpackages", serialize($pkgs));
-               $this->config->saveConfig();
-               
-               echo "Done";
-               
-               
-               echo "<pre>";
-               print_r($_SERVER);
-               print_r($_FILES);
-               print_r($_REQUEST);
-               print_r($pkgs);
-               echo "</pre>";
+               global $WEB_ROOT_FS, $URL_HANDLERS, $BASE_URL;
+               header("Location: $BASE_URL/adhoc");
+
        }
        
        
@@ -148,23 +187,51 @@ class GLCASAdhoc {
        {
                echo "<h2>Packages</h2>";
 
+               /* TODO: to new config
                $pkgs = unserialize($this->config->getConfig("adhocpackages"));
-               echo "<table border=\"1\"><tr><th>Name</th><th>Package Types</th><th>Architecture</th><th>Control</th></tr>";
-               
-               foreach($pkgs as $key => $var) {
-                       $name = $var["pkgname"];
-                       $arch = $var["arch"];
-                       $type = $var["type"];
-                       echo "<tr><td>$name</td><td>$type</td><td>$arch</td><td>Add another arch <a href=\"?action=deletepkg&pkgid=$key\">Delete</a></td></tr>";
+               */
+               $pkgs = $this->config->getData("adhoc");
+               //print_r($pkgs);
+               if($pkgs !== false) {
+                       echo "<table border=\"1\"><tr><th>Name</th><th>Package Types</th><th>Architecture</th><th>Control</th></tr>";
+                       
+                       foreach($pkgs as $key => $var) {
+                               $name = $var["name"];
+                               $id = $var["val"];
+                               $arch_v = $this->config->getData("adhocpkgdata", $id, "arch");
+                               $arch = $arch_v[0]["val"];
+                               $type_v = $this->config->getData("adhocpkgdata", $id, "type");
+                               $type = $type_v[0]["val"];
+                               echo "<tr><td>$name</td><td>$type</td><td>$arch</td><td><a href=\"?action=deletepkg&pkgid=$id&pkgname=$name\">Delete</a></td></tr>";
+                               if(count($arch_v) > 1) {
+                                       for($i=1; $i < count($arch_v); $i++) {
+                                               $arch = $arch_v[$i]["val"];
+                                               $type_v = $this->config->getData("adhocpkgdata", $id, "type");
+                                               $type = $type_v[$i]["val"];
+                                               echo "<tr><td></td><td>$type</td><td>$arch</td><td></td></tr>";
+                                       }
+                               }
+                       }
+                       echo "<table>";
                }
-               echo "<table>";
-               
+                       
                $kos = getKnownOSList();
                
                echo "<hr>";
                echo "<h3>Add a Package</h3><br>";
                echo "<form enctype=\"multipart/form-data\" method=\"post\" action=\"?action=addpackage\">";
-               echo "Name <input type=\"text\" name=\"pkgname\"> or Add version of <select name=\"origpkg\"></select><br>";
+               echo "Name <input type=\"text\" name=\"pkgname\">";
+               if($pkgs !== false) {
+                       echo "or Add version of <select name=\"origpkg\">";
+                       echo "<option value=\"-1\" default>None</option>";
+                       foreach($pkgs as $key=>$var) {
+                               $id = $var["val"];
+                               $name = $var["name"];
+                               echo "<option value=\"$id\">$name</option>";
+                       }
+                       echo "</select><br>";
+               }
+               else echo "<br>";
                echo "Arch <select name=\"arch\">";
                foreach($kos["pkgarch"] as $key => $val) {
                        echo "<option value=\"$key\">$val</option>";