some more code.
authorpaulr <me@pjr.cc>
Sun, 11 Jul 2010 06:24:59 +0000 (16:24 +1000)
committerpaulr <me@pjr.cc>
Sun, 11 Jul 2010 06:24:59 +0000 (16:24 +1000)
bin/pbdc.php
db/pbdc.db [new file with mode: 0644]
db/pbdc_created.db [new file with mode: 0644]

index 8e61a23..b0424bb 100644 (file)
 
 $BASE_LIB="../lib";
 $BASE_DATA="../db";
-$BASE_BIN="/usr/bin";
+$BACULA_USER="paulr";
+
+global $BASE_DATA, $BASE_LIB, $BACULA_USER;
 
 require_once "$BASE_LIB/lib.php";
 
-if(!isset($argv[1])) {
-       echo "Usage: ".$argv[0]."  command\n";
+if(!isset($argv[2])) {
+       echo "Usage: ".$argv[0]." changer_name command\n";
        echo "\tbacula-config - outputs bacula config\n";
        echo "\tinit - inits the bacula php changer stuff\n";
        echo "\tadd-disk - adds a disk\n";
-       echo "\tdisks - lists current disks\n";
+       echo "\tdisks - lists currently (known) disks\n";
        echo "\tstatus - prints status (whats where in which slot, drive, etc)\n";
        exit(0);
 }
 
-$command = $argv[1];
+$command = $argv[2];
+
+switch($command) {
+       case "init":
+               init();
+               break;
+       case "bacula-config":
+               break;
+       case "add-disk":
+               add_disk();
+               break;
+       case "disks":
+               break;
+       case "status":
+               break;
+       default:
+               echo "invalid command\n";
+}
 
+function init()
+{
+       global $BASE_DATA, $BASE_LIB, $BACULA_USER, $argv;
+       
+       // check if we are the bacula user
+       $user = posix_getlogin();
+       if($user != $BACULA_USER) {
+               echo "This command must be run as the bacula user\n";
+               exit(0);
+       }
+       
+       $changer_name = $argv[1];
+       
+       echo "This command will init the data for $changer_name\n";
+       
+       if(file_exists("$BASE_DATA/$changer_name.db")) {
+               //echo "Daemon is already init'd, are you sure you wish to do this, it will loose all config [y/n]:";
+               $r = readline("Daemon is already init'd, are you sure you wish to do this, it will loose all config [y/n]:");
+               if($r == "y") {
+                       echo "Ok, but its your disaster, waiting 5 seconds prior to init'ing the database (hit ctrl-c to exit)\n";
+                       sleep(5);
+               } else {
+                       echo "Ok, not doing it, so long chum\n";
+                       exit(0);
+               }
+       }
+       
+       echo "Creating database\n";
+       $r = readline("Directory where automount occurs [/changer/]:");
+       $r = readline("Number of drives [1]:");
+       $r = readline("Size of tapes [20] (in gb):");
+}
+
+function add_disk()
+{
+       // disks get inited by going to /changer_dir/disk_uuid/ then:
+       // creating pbdc/changer_name/stuff.
+       global $BASE_DATA, $BASE_LIB, $BACULA_USER, $argv;
+       
+       $dh = opendir("/dev/disk/by-uuid");
+       
+       $disk = "";
+       $i = 0;
+       
+       while(($file = readdir($dh)) !== false) {
+               if($file != "." && $file != "..") {
+                       $st = stat("/dev/disk/by-uuid/".$file);
+                       $realname = basename(readlink("/dev/disk/by-uuid/".$file));
+                       
+                       // now get the size
+                       $fh = fopen("/sys/class/block/$realname/size", "r");
+                       $rl = fgets($fh);
+                       fclose($fh);
+                       $realsize = (int)(((($rl/1024)*512)/1024)/1024);
+                       
+                       echo "disk $i: /dev/$realname or /dev/disk/by-uuid/$file of size ".$realsize."gb\n";
+                       $disk[$i]["real"] = "/dev/$realname";
+                       $disk[$i]["syml"] = "/dev/disk/by-uuid/".$file;
+                       $disk[$i]["size"] = $realsize;
+                       $i++;
+               }
+       }
+       
+       closedir($dh);
+       
+       $i = readline("Choose a disk from the list above:");
+       if(isset($disk[$i]["real"])) {
+               echo "you have chosen, ".$disk[$i]["syml"]." (".$disk[$i]["real"].") of size ".$disk[$i]["size"]."gb\n";
+               $ans = readline("is this correct? [y/n]:");
+               if($ans != "y") {
+                       echo "you said no, i bail\n";
+                       exit(0);
+               }
+       } else {
+               echo "invalid selection\n";
+               exit(0);
+       }
+
+       // now we try and init the disk
+}
 ?>
\ No newline at end of file
diff --git a/db/pbdc.db b/db/pbdc.db
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/db/pbdc_created.db b/db/pbdc_created.db
new file mode 100644 (file)
index 0000000..60ea221
Binary files /dev/null and b/db/pbdc_created.db differ