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