Added a hosts bit
[glcas.git] / plugins / adhoc.php
1 <?php 
2
3 error_log("adhoc loaded");
4
5 global $URL_HANDLERS;
6 $URL_HANDLERS["adhoc.*"] = "GLCASAdhoc";
7 global $BASE_URL, $MENU_ITEMS;
8 $MENU_ITEMS["20adhoc"]["name"] = "Adhoc Packages";
9 $MENU_ITEMS["20adhoc"]["link"] = "$BASE_URL/adhoc";
10
11
12 class GLCASAdhoc {
13         function __construct($config)
14         {
15                 $this->config = $config;
16                 error_log("constructor for GLCASAdhoc");
17                 
18                 $repostore = $this->config->getConfigVar("storagelocation");
19                 if(!is_dir("$repostore/adhoc")) {
20                         error_log("Creating dir for adhoc component");
21                         mkdir("$repostore/adhoc");
22                 }
23                 
24         }
25         
26         function go($url)
27         {
28                 if(isset($_REQUEST["action"])) {
29                         switch($_REQUEST["action"]) {
30                                 case "addpackage":
31                                         error_log("in updaterepo");
32                                         GLCASpageBuilder($this,"addPackage");
33                                         return;
34                                 case "deletepkg":
35                                         error_log("in delete pkg");
36                                         GLCASpageBuilder($this, "delPackage");
37                                         return;
38                         }
39                 }
40                 
41                 GLCASpageBuilder($this,"mainBody");
42                 return;
43                 
44         }
45         
46         function delPackage($url)
47         {       
48                 $repostore = $this->config->getConfigVar("storagelocation");
49                 
50                 $pkgid = $_REQUEST["pkgid"];
51                 
52                 $pkgs = unserialize($this->config->getConfigVar("adhocpackages"));
53                 
54                 if(isset($pkgs[$pkgid])) {
55                         unset($pkgs[$pkgid]);
56                         $this->config->setConfigVar("adhocpackages", serialize($pkgs));
57                         $this->config->saveConfig();
58                 }
59                 
60                 global $WEB_ROOT_FS, $URL_HANDLERS, $BASE_URL;
61                 header("Location: $BASE_URL/adhoc/");
62                 
63         }
64         
65         function addPackage($url)
66         {
67                 $repostore = $this->config->getConfigVar("storagelocation");
68                 
69                 if(!isset($_REQUEST["pkgname"])) {
70                         echo "<font color=\"red\">Error: No package name set</font><br>";
71                 } 
72                 if($_REQUEST["pkgname"] == "") {
73                         echo "<font color=\"red\">Error: Package name cant be blank</font><br>";
74                 }
75                 
76
77                 $fname = "";
78                 $lname = "";
79                 $ultfileurl = "";
80                 if($_FILES["uploadedfile"]["name"] == "") {
81                         $uploaded = false;
82                         $ultfileurl = "uploaded";
83                 } else {
84                         $fname = $_FILES["uploadedfile"]["tmp_name"];
85                         $lname = $_FILES["uploadedfile"]["name"];
86                         $uploaded = true;
87                 }
88                 
89                 if($_REQUEST["fileurl"] == "") {
90                         $fileurl = false;
91                         $ultfileurl = $_REQUEST["fileurl"];
92                 } else {
93                         $fname = $_REQUEST["fileurl"];
94                         $lname = basename($fname);
95                         $fileurl = true;
96                 }
97                 
98                 if(!$uploaded && !$fileurl) {
99                         echo "<font color=\"red\">Error: no uploaded file and no file url, you need one or the other buddy</font><br>";
100                 }
101                 
102                 $getfile = "";
103                 if($fileurl) {
104                         $getfile = file_get_contents($_REQUEST["fileurl"]);
105                 }
106                 
107                 if($uploaded||$fileurl) {
108                         echo "Got a file named $fname, $lname";
109                 }
110                 
111                 $pkgs = unserialize($this->config->getConfigVar("adhocpackages"));
112                 
113                 $n = -1;
114                 foreach($pkgs as $key => $var) {
115                         $n = $key;
116                 }
117                 $n++;
118                 
119                 echo "Would add package as $n";
120                 
121                 $pkgs[$n]["name"] = $_REQUEST["pkgname"];
122                 $pkgs[$n]["arch"] = $_REQUEST["arch"];
123                 $pkgs[$n]["type"] = $_REQUEST["type"];
124                 $pkgs[$n]["fileurl"] = $ultfileurl;
125
126                 if($uploaded) {
127                         copy("$fname", "$repostore/adhoc/$n");
128                 } else {
129                         file_put_contents("$repostore/adhoc/$n", $fetfile);
130                 }
131                 
132                 $this->config->setConfigVar("adhocpackages", serialize($pkgs));
133                 $this->config->saveConfig();
134                 
135                 echo "Done";
136                 
137                 
138                 echo "<pre>";
139                 print_r($_SERVER);
140                 print_r($_FILES);
141                 print_r($_REQUEST);
142                 print_r($pkgs);
143                 echo "</pre>";
144         }
145         
146         
147         function mainBody($url)
148         {
149                 echo "<h2>Packages</h2>";
150
151                 $pkgs = unserialize($this->config->getConfigVar("adhocpackages"));
152                 echo "<table border=\"1\"><tr><th>Name</th><th>Package Types</th><th>Architecture</th><th>Control</th></tr>";
153                 
154                 foreach($pkgs as $key => $var) {
155                         $name = $var["pkgname"];
156                         $arch = $var["arch"];
157                         $type = $var["type"];
158                         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>";
159                 }
160                 echo "<table>";
161                 
162                 $kos = getKnownOSList();
163                 
164                 echo "<hr>";
165                 echo "<h3>Add a Package</h3><br>";
166                 echo "<form enctype=\"multipart/form-data\" method=\"post\" action=\"?action=addpackage\">";
167                 echo "Name <input type=\"text\" name=\"pkgname\"> or Add version of <select name=\"origpkg\"></select><br>";
168                 echo "Arch <select name=\"arch\">";
169                 foreach($kos["pkgarch"] as $key => $val) {
170                         echo "<option value=\"$key\">$val</option>";
171                 }
172                 echo "</select><br>";
173                 echo "Type <select name=\"type\">";
174                 foreach($kos["pkg"] as $key => $val) {
175                         echo "<option value=\"$key\">$val</option>";
176                 }
177                 echo "</select><br>";
178                 echo "Upload <input type=\"file\" name=\"uploadedfile\"><br>";
179                 echo "From URL <input type=\"text\" name=\"fileurl\"><br>";
180                 echo "<input type=\"submit\" name=\"add\" value=\"Add\">";
181                 echo "</form>";
182         }
183         
184         private $config;
185 }
186
187 ?>