X-Git-Url: http://git.pjr.cc/?a=blobdiff_plain;f=plugins%2Fadmin.php;h=e7dcd142e81f10eb956bd970450387cd4471aef9;hb=155c0a1bc81dff4fc1bb4bcebb754c961e457499;hp=af5ed85612d29a2d12b129c0f9c3bbd04e42f9e5;hpb=f3bb1ef4d1fb0297498f8a1a30c2332e2e5905e8;p=glcas.git
diff --git a/plugins/admin.php b/plugins/admin.php
index af5ed85..e7dcd14 100644
--- a/plugins/admin.php
+++ b/plugins/admin.php
@@ -2,8 +2,14 @@
error_log("admin loaded");
+global $BASE_URL, $MENU_ITEMS;
+$MENU_ITEMS["10admin"]["name"] = "Admin";
+$MENU_ITEMS["10admin"]["link"] = "$BASE_URL/admin";
+
global $URL_HANDLERS;
$URL_HANDLERS["admin.*"] = "GLCASAdmin";
+global $CRON_CLASSES;
+$CRON_CLASSES["GLCASAdmin"] = "GLCASAdmin";
class GLCASAdmin {
function __construct($config)
@@ -19,10 +25,33 @@ class GLCASAdmin {
if(isset($_REQUEST["action"])) {
switch($_REQUEST["action"]) {
- case "addrepo":
- GLCASpageBuilder($this,"doAddRepoForm");
+ case "updaterepo":
+ error_log("in updaterepo");
+ GLCASpageBuilder($this,"doUpdateRepo");
+ return;
+ case "reponext":
+ error_log("in reponext");
+ GLCASpageBuilder($this,"doRepoNextForm");
return;
break;
+ case "addrepoapt":
+ GLCASpageBuilder($this,"doAddRepoApt");
+ return;
+ case "addrepoyum":
+ GLCASpageBuilder($this,"doAddRepoYum");
+ return;
+ case "deleterepo":
+ error_log("call delete repo");
+ GLCASpageBuilder($this, "doRemoveRepo");
+ return;
+ case "setstorage":
+ error_log("call setstorage");
+ GLCASpageBuilder($this, "setStorage");
+ return;
+ case "freezerepo":
+ error_log("call freezerepo");
+ GLCASpageBuilder($this, "freezeRepo");
+ return;
case "scanrepo":
break;
}
@@ -30,6 +59,34 @@ class GLCASAdmin {
GLCASpageBuilder($this, "body");
}
+ function cron()
+ {
+ echo "ADMIN CRON: nothing to see here
";
+ // TODO: touch cronstamp file here
+
+ // make a backup of the config.. but.. errr. how to tell if theres an old backup?
+ // backups will occur... weekly and be called $configpath.DDMMYYYY
+ $configpath = glcas_getWebConfigPath();
+ $basepath = dirname($configpath);
+ echo "ADMIN CRON: backing up config, $configpath, $basepath
";
+ $nowtime = time();
+ $oneday = 3600 * 24; // 1 hour in seconds, by 24 hours
+ for($i = 0; $i < 7; $i ++) {
+ $cdatestr = strftime("%d-%h-%Y", $nowtime - ($oneday*$i));
+ $backupfile = "$configpath.$cdatestr";
+ error_log("checking for backup of config as $backupfile");
+ if(file_exists($backupfile)) {
+ error_log("backupconfig exists as $backupfile, exit");
+ echo "ADMIN CRON: backup of config is $backupfile, created $i days ago, not creating new one
";
+ return;
+ }
+ }
+ $nowdatestr = strftime("%d-%h-%Y");
+ $backupfile = "$configpath.$nowdatestr";
+ copy($configpath, $backupfile);
+ echo "ADMIN CRON: createing backup of config as $backupfile
";
+ }
+
function body($url)
{
// for the main admin body, we hae the following components
@@ -44,11 +101,49 @@ class GLCASAdmin {
$this->mainBody($url);
}
- function doAddRepoForm($url)
+ function freezeRepo($url)
+ {
+ $repo = $_REQUEST["repo"];
+
+
+ $myRep = new GLCASRepo($this->config);
+
+
+ error_log("called freeze repo on $repo");
+ $myRep->freezeRepo($repo);
+
+ global $WEB_ROOT_FS, $URL_HANDLERS, $BASE_URL;
+ header("Location: $BASE_URL/admin/");
+
+ }
+
+ function doRemoveRepo($url)
{
+ $repo = $_REQUEST["repo"];
$myRep = new GLCASRepo($this->config);
+
+ error_log("called delete repo on $repo");
+ $myRep->deleteRepo($repo);
+
+ global $WEB_ROOT_FS, $URL_HANDLERS, $BASE_URL;
+ header("Location: $BASE_URL/admin/");
+ }
+
+
+ function setStorage($url)
+ {
+
+ }
+
+ function doRepoNextForm($url)
+ {
+ $myRep = new GLCASRepo($this->config);
+
+ $kos = getKnownOSList();
+
$wasyum = false;
+ $wasapt = false;
if($_REQUEST["repotype"] == "yumbase") {
$glt = $myRep->getRepoDetailsYum($_REQUEST["repourl"]);
$wasyum = true;
@@ -57,62 +152,313 @@ class GLCASAdmin {
$wasyum = true;
} else if($_REQUEST["repotype"] == "apt") {
$glt = $myRep->getRepoDetailsApt($_REQUEST["repourl"]);
+ $wasapt = true;
}
+ if($wasapt) {
+ error_log("in wasapt");
+ $repourl = $_REQUEST["repourl"];
+
+ if($glt === false) {
+ echo "Could not find any apt repository at $repourl
";
+ return;
+ }
+
+ $extratext = "";
+ $provides = "";
+ if($glt["nrepos"] > 0) {
+
+ foreach($glt["knownrepo"] as $key => $val) {
+ $reponame = $kos["apt"][$val];
+ //echo "Fount a repo, $val which is $reponame
";
+ $provides .= "$reponame\n";
+ }
+ $extratext = " for ".$glt["distros"];
+ } else {
+ //echo "Looks like an apt repo, but I cant find any known distro's
";
+ }
+ //$existing_repos["distros"] = "Ubuntu, Debian";
+ //$existing_repos["versions"] = "8.04LTS, 9.10, 10.04LTS, 10.10, 11.04, 11.10";
+ //$existing_repos["arch"] = "x86_64, i386";
+
+
+ $distros = $glt["distros"];
+ $version = $glt["versions"];
+ $archs = $glt["arch"];
+
+ //echo "
"; + //print_r($glt); + //echo ""; + + echo "The joy of apt is that there could be a million distro's under the root of an apt mirror"; + echo "if it doesn't list here, but you know its there, its still usable for glcas"; + echo ""; + return true; + } if($wasyum) { $os = $glt["OS"]; $version = $glt["version"]; $arch = $glt["arch"]; - echo ""; - } else { - // apt is much tricker cause one repo can provide multiple versions, OS's and architectures. } } + + function doAddRepoApt($url) + { + $repo = new GLCASRepo($this->config); + + $desc = $_REQUEST["desc"]; + $OS = $_REQUEST["distro"]; + $version = $_REQUEST["provides"]; + $arch = $_REQUEST["arch"]; + $shorturl = $_REQUEST["shorturl"]; + $prefix = $_REQUEST["prefix"]; + $repurl = $_REQUEST["repourl"]; + $expiretime = $REQUEST["expiretime"]; + $init = false; + if(isset($_REQUEST["initial"])) $init = true; + + $blocklist = null; + $bn = 0; + foreach($_REQUEST as $key => $val) { + if(preg_match("/^blocked-*/", $key)) { + $blocked = preg_replace("/^blocked-/", "", $key); + //echo "
"; + //print_r($_REQUEST); + //echo ""; + + //exit(0); + + $repo->addRepo($desc, $OS, $version, $arch, "-", $shorturl, $prefix, $repurl, "APT", $init, $expiretime, $blocklist); + + // next we need to deal with that "blocked" bit + + global $WEB_ROOT_FS, $URL_HANDLERS, $BASE_URL; + header("Location: $BASE_URL/admin/"); + } + + function doAddRepoYum($url) + { + $repo = new GLCASRepo($this->config); + + $desc = $_REQUEST["desc"]; + $OS = $_REQUEST["OS"]; + $version = $_REQUEST["version"]; + $arch = $_REQUEST["arch"]; + $other = $_REQUEST["other"]; + $shorturl = $_REQUEST["shorturl"]; + $prefix = $_REQUEST["prefix"]; + $repurl = $_REQUEST["repourl"]; + $expiretime = $REQUEST["expiretime"]; + $init = false; + if(isset($_REQUEST["initial"])) $init = true; + + + + $repo->addRepo($desc, $OS, $version, $arch, $other, $shorturl, $prefix, $repurl, "YUM", $init, $expiretime); + + global $WEB_ROOT_FS, $URL_HANDLERS, $BASE_URL; + header("Location: $BASE_URL/admin/"); + } + + function doUpdateRepo($url) + { + $rkey = $_REQUEST["repo"]; + + error_log("would update for repo"); + + $repo = new GLCASRepo($this->config); + + $repo->updateRepo($rkey); + global $WEB_ROOT_FS, $URL_HANDLERS, $BASE_URL; + header("Location: $BASE_URL/admin/"); + } function mainBody($url) { + global $WEB_ROOT_FS, $URL_HANDLERS, $BASE_URL; + // first, list available repos - echo "
Name | Type | Version | Browse | Control |
---|
Name | Type | OS | Version | Architecture | Other | Prefix | Short URL | Browse | Control |
---|---|---|---|---|---|---|---|---|---|
$desc | $repotype | $os | $version | $arch | $other | $prefix | $shorturl | "; + + // get url + $browseurl = "$BASE_URL/repo/$rkey"; + if($shorturl!="-") { + $brurl = $shorturl; + if($prefix != "-") $brurl = "$prefix/$shorturl"; + $browseurl = "$BASE_URL/$brurl/"; + } + + echo "Browse | "; + + // Edit + echo "Edit "; + // update + if(!$frozen) echo "Update "; + // freeze + echo "$frotext "; + // deactivate + echo "Disable "; + // clean + echo "Clean "; + // Remove + echo "Delete"; + + echo " | "; + echo "
"; + //if($repos !== false) print_r($repos); + //echo ""; // wrap all this in a table - echo "
";
+ echo "
Storage"; + echo ""; + + echo " "; + echo " Proxy Config"; + echo ""; + } private $config; |