<?php
-$BASE_LIB="../lib";
-$BASE_BIN="/usr/bin";
+
+$BASE_LIB=$_SERVER["BASE_LIB"];
+$BASE_DATA=$_SERVER["BASE_DATA"];
+$BACULA_USER=$_SERVER["BACULA_USER"];
+
+global $BASE_DATA, $BASE_LIB, $BACULA_USER, $argv;
require_once "$BASE_LIB/lib.php";
$arc_device = $argv[4];
$drive_index = $argv[5];
+$changer = $changer_dev;
+global $changer;
+
+switch($command) {
+ case "unload":
+ unload_tape();
+ break;
+ case "load":
+ load_tape();
+ break;
+ case "loaded":
+ loaded_tape();
+ break;
+ case "list":
+ list_tapes();
+ break;
+ case "slots":
+ num_slots();
+ break;
+ case "listall":
+ listall();
+ break;
+ case "transfer":
+ transfer();
+ break;
+}
+
+function unload_tape()
+{
+ global $BASE_DATA, $BASE_LIB, $BACULA_USER, $changer, $argv;
+
+ $tapeloc = conf_getVal($changer, "drivelocation");
+ $changer = $argv[1];
+ $taped = $argv[5];
+
+ unlink("$tapeloc/$changer-drive$taped");
+}
+
+function load_tape()
+{
+ global $BASE_DATA, $BASE_LIB, $BACULA_USER, $changer, $argv;
+
+ $changer = $argv[1];
+ $taped = $argv[5];
+
+ $db = db_getDB($argv[1]);
+
+ $res = $db->query("select * from disk_list order by disk_id");
+
+ $tapeloc = conf_getVal($changer, "drivelocation");
+ $amloc = conf_getVal($changer, "automountdir");
+
+ $ret = false;
+ $slot = $argv[3];
+
+ $i=1;
+ foreach($res as $row) {
+ //echo "Listing tapes for disk ".$row["disk_id"].", ".$row["disk_name"]."\n";
+ //echo "dir: $amloc/".$row["disk_name"]."/pbdc/".$argv[1]."/tapes/\n";
+ //exit(0);
+ $dh = opendir("$amloc/".$row["disk_name"]."/pbdc/".$argv[1]."/tapes/");
+ while(($file = readdir($dh)) !== false) {
+ if(ereg("d[0-9]+_vol[0-9]+", $file)!=false) {
+ if($i == $slot) {
+ unlink("$tapeloc/$changer-drive$taped");
+ symlink("$amloc/".$row["disk_name"]."/pbdc/".$argv[1]."/tapes/$file", "$tapeloc/$changer-drive$taped");
+ exit(0);
+ }
+ $i++;
+ } else {
+ //echo "didnt match: $file\n";
+ }
+ //exit(0);
+ }
+ closedir($dh);
+ }
+
+ echo "0\n";
+
+}
+
+function loaded_tape()
+{
+ global $BASE_DATA, $BASE_LIB, $BACULA_USER, $changer, $argv;
+
+ $changer = $argv[1];
+ $taped = $argv[5];
+ $db = db_getDB($argv[1]);
+
+ $res = $db->query("select * from disk_list order by disk_id");
+
+ $tapeloc = conf_getVal($changer, "drivelocation");
+ $amloc = conf_getVal($changer, "automountdir");
+
+ $rl = "";
+ if(file_exists("$tapeloc/$changer-drive$taped")) {
+ $rl = basename(readlink("$tapeloc/$changer-drive$taped"));
+ } else {
+ echo "0\n";
+ exit(0);
+ }
+
+ $ret = false;
+ $i=1;
+ foreach($res as $row) {
+ //echo "Listing tapes for disk ".$row["disk_id"].", ".$row["disk_name"]."\n";
+ //echo "dir: $amloc/".$row["disk_name"]."/pbdc/".$argv[1]."/tapes/\n";
+ //exit(0);
+ $dh = opendir("$amloc/".$row["disk_name"]."/pbdc/".$argv[1]."/tapes/");
+ while(($file = readdir($dh)) !== false) {
+ if(ereg("d[0-9]+_vol[0-9]+", $file)!=false) {
+ if($rl == $file) {
+ echo "$i\n";
+ exit(0);
+ }
+ $i++;
+ } else {
+ //echo "didnt match: $file\n";
+ }
+ //exit(0);
+ }
+ closedir($dh);
+ }
+
+ echo "0\n";
+}
+
+function list_tapes()
+{
+ global $BASE_DATA, $BASE_LIB, $BACULA_USER, $changer, $argv;
+
+ $changer = $argv[1];
+
+ $db = db_getDB($argv[1]);
+
+ $res = $db->query("select * from disk_list order by disk_id");
+
+ $amloc = conf_getVal($changer, "automountdir");
+
+ $ret = false;
+ $i=1;
+ foreach($res as $row) {
+ //echo "Listing tapes for disk ".$row["disk_id"].", ".$row["disk_name"]."\n";
+ //echo "dir: $amloc/".$row["disk_name"]."/pbdc/".$argv[1]."/tapes/\n";
+ //exit(0);
+ $dh = opendir("$amloc/".$row["disk_name"]."/pbdc/".$argv[1]."/tapes/");
+ while(($file = readdir($dh)) !== false) {
+ if(ereg("d[0-9]+_vol[0-9]+", $file)!=false) {
+ echo "slot $i: $file\n";
+ $i++;
+ } else {
+ //echo "didnt match: $file\n";
+ }
+ //exit(0);
+ }
+ closedir($dh);
+ }
+
+}
+
+function num_slots()
+{
+ global $BASE_DATA, $BASE_LIB, $BACULA_USER, $changer, $argv;
+
+ $changer = $argv[1];
+
+ $db = db_getDB($argv[1]);
+
+ $res = $db->query("select * from disk_list order by disk_id");
+
+ $amloc = conf_getVal($changer, "automountdir");
+
+ $ret = false;
+ $i=1;
+ foreach($res as $row) {
+ //echo "Listing tapes for disk ".$row["disk_id"].", ".$row["disk_name"]."\n";
+ //echo "dir: $amloc/".$row["disk_name"]."/pbdc/".$argv[1]."/tapes/\n";
+ //exit(0);
+ $dh = opendir("$amloc/".$row["disk_name"]."/pbdc/".$argv[1]."/tapes/");
+ while(($file = readdir($dh)) !== false) {
+ if(ereg("d[0-9]+_vol[0-9]+", $file)!=false) {
+ $i++;
+ } else {
+ //echo "didnt match: $file\n";
+ }
+ //exit(0);
+ }
+ closedir($dh);
+ }
+ $i--;
+
+ echo "$i\n";
+
+}
+
+function listall()
+{
+ global $BASE_DATA, $BASE_LIB, $BACULA_USER, $changer, $argv;
+
+}
+
+function transfer()
+{
+ global $BASE_DATA, $BASE_LIB, $BACULA_USER, $changer, $argv;
+
+}
?>
\ No newline at end of file