-# This is the config file.
-# Please, modify with your preferences
+; If http://www.domain.com/bacula/
+; root = /bacula
+root = '/bacula-web'
-# If http://www.domain.com/bacula/
-# root = /bacula
-root = /bacula-web
-
-# Show a box with a detailed report at index or Status report
-# I'll remove this in future versions.
+; Show a box with a detailed report at index or Status report
+; I'll remove this in future versions.
IndexReport = 0
-# Secs since last run. Default 24h.
-# Unused in this version
-# LastRun = 86400
-
-
-# Mode of index page: Full or Lite
-# Only useful if IndexReport = 0
-#
-# Lite: Only shows a little report for the last 24h.
-# Maybe you would want this if you have very much jobs.
-# Full: This shows a full table with detailed data
-# Maybe you would want this if you have a bit of jobs.
-mode = Lite
-
-
-
-# LANGUAGE:
-# en_EN -> English
-# es_ES -> Spanish, Mantained by Juan Luis Francés Jiménez.
-# it_IT -> Italian, Mantained by Gian Domenico Messina (gianni.messina AT c-ict.it).
-# fr_FR -> Frech, Mantained by Morgan LEFIEUX (comete AT daknet.org).
-# de_DE -> German, Mantained by Florian Heigl.
+; Secs since last run. Default 24h.
+; Unused in this version
+; LastRun = 86400
+
+; Mode of index page: Full or Lite
+; Only useful if IndexReport = 0
+
+; Lite: Only shows a little report for the last 24h.
+; Maybe you would want this if you have very much jobs.
+; Full: This shows a full table with detailed data
+; Maybe you would want this if you have a bit of jobs.
+; mode = Lite
+
+; Language
+; en_EN -> English
+; es_ES -> Spanish, Mantained by Juan Luis Francés Jiménez.
+; it_IT -> Italian, Mantained by Gian Domenico Messina (gianni.messina AT c-ict.it).
+; fr_FR -> Frech, Mantained by Morgan LEFIEUX (comete AT daknet.org).
+; de_DE -> German, Mantained by Florian Heigl.
lang = en_EN
-
-
-# DATABASE INFORMATION AND MULTICATALOG SUPPORT
-# ---------------------------------------------
-# This section contains the database configuration.
-# You must create a user or to give it permissions to access
-# from web machine.
+; Database connection configuration
[.DATABASE]
-# Your database host or IP
-host = localhost
-
-# Your database login
+host = localhost ; Database host or IP
+login = root ; Database account name
+pass = p@ssw0rd ; Database account password
+db_name = bacula ; Database name
+db_type = mysql ; Database type
+;db_port = 3306 ; Uncomment if not standard port
+
+; Multi-Catalog support
+; If you want to configure more than 1 Bacula catalog in Bacula-Web, simply copy the previous line (See example below)
+; Don't forget the change the name of the section (DATABASE2 in this case)
+
+[.DATABASE2]
+host = 192.168.2.55
login = bacula
-
-# Your database password.
-# For empty passwords use this:
-# pass =
-pass =
-
-# Your database name
+pass =
db_name = bacula
-
-# Your database type: mysql,sqlite,pgsql
db_type = mysql
-
-# Uncomment this and modify it if your database runs on a non standard port.
-# db_port = 3306
-
-# MULTICATALOG SUPPORT
-# ---------------------
-# If you have only one catalog don't remove the comments.
-# If you have 2 or more catalogs, please remove the coments of this section
-# and configure with your preferences.
-# You can add so many as you want.
-
-#[.DATABASE2]
-#host = 192.168.2.55
-#login = bacula
-#pass =
-#db_name = bacula
-#db_type = mysql
-
-#[.DATABASE3]
-#host = 192.168.20.40
-#login = bacula
-#pass =
-#db_name = bacula
-#db_type= pgsql
| GNU General Public License for more details. |
+-------------------------------------------------------------------------+
*/
-// Last Err:
session_start();
require ("paths.php");
require($smarty_path."Smarty.class.php");
include "classes.inc";
-$smarty = new Smarty; // Template engine
+$smarty = new Smarty;
$dbSql = new Bweb();
+require("lang.php");
+
+$mode = "";
+
$smarty->compile_check = true;
$smarty->debugging = false;
$smarty->force_compile = true;
$smarty->template_dir = "./templates";
$smarty->compile_dir = "./templates_c";
$smarty->config_dir = "./configs";
+
+/*
$smarty->config_load("bacula.conf"); // Load config file
-$mode = $smarty->get_config_vars("mode"); // Lite o Extend?
+$mode = $smarty->get_config_vars("mode");
+*/ // Lite o Extend?
-require("lang.php");
+// Getting mode from config file
+$mode = $dbSql->get_config_param("mode");
+if( $mode == false )
+ $mode = "Lite";
+
+$smarty->assign( "mode", $mode );
+
+// Determine which template to show
+$indexreport = $dbSql->get_config_param( "IndexReport" );
+
+if( $indexreport == 0 ) {
+ $smarty->assign( "last_report", "last_run_report.tpl" );
+}else {
+ $smarty->assign( "last_report", "report_select.tpl" );
+}
+
+// Assign to template catalogs number
+$smarty->assign( "dbs", $dbSql->Get_Nb_Catalogs() );
//Assign dbs
+/*
if ( count($dbSql->dbs) >1 ) {
$smarty->assign("dbs", $dbSql->dbs);
$smarty->assign("dbs_now", $_SESSION['DATABASE']);
}
+*/
-// generaldata.tpl & last_run_report.tpl (last24bytes)
-$client = $dbSql->link->query("select count(*) from Client")
- or die ("Error query: 1");
-$totalfiles = $dbSql->link->query("select count(FilenameId) from Filename")
- or die ("Error query: 2");
-if ( $dbSql->driver == "mysql")
- $last24bytes = $dbSql->link->query("select sum(JobBytes),count(*) from Job where Endtime <= NOW() and UNIX_TIMESTAMP(EndTime) > UNIX_TIMESTAMP(NOW())-86400")
- or die ("Error query: 3");
-if ( $dbSql->driver == "pgsql")
- $last24bytes = $dbSql->link->query("select sum(JobBytes),count(*) from Job where Endtime <= NOW() and EndTime > NOW() - 86400 * interval '1 second'")
- or die ("Error query: 3");
-$bytes_stored =& $dbSql->link->getOne("select SUM(VolBytes) from Media")
- or die ("Error query: 4");
-
+// generaldata.tpl & last_run_report.tpl ( Last 24 hours report )
+$last24bytes = "";
+$query = "";
+
+/*$client = $dbSql->db_link->query("select count(*) from Client")
+ or die ("Error query: 1");*/
+ $totalfiles = $dbSql->db_link->query("select count(FilenameId) from Filename") or die ("Error query: 2");
+
+ if ( PEAR::isError( $totalfiles ) ) {
+ die( "Unable to get Total Files information from catalog" . $totalfiles->getMessage() );
+ }else {
+ $tmp = $totalfiles->fetchRow();
+ $smarty->assign('files_totales',$tmp[0]);
+ }
+ $totalfiles->free();
+
+ switch( $dbSql->driver )
+ {
+ case 'mysql':
+ $query = "select sum(JobBytes),count(*) from Job where Endtime <= NOW() and UNIX_TIMESTAMP(EndTime) > UNIX_TIMESTAMP(NOW())-86400";
+ break;
+ case 'pgsql':
+ $query = "select sum(JobBytes),count(*) from Job where Endtime <= NOW() and EndTime > NOW() - 86400 * interval '1 second'";
+ break;
+ default:
+ $query = "select sum(JobBytes),count(*) from Job where Endtime <= NOW() and UNIX_TIMESTAMP(EndTime) > UNIX_TIMESTAMP(NOW())-86400";
+ break;
+ }
+
+ $last24bytes = $dbSql->db_link->query( $query ) or die ("Failed to get Total Job Bytes from catalog");
+
+ if ( PEAR::isError( $last24bytes ) ) {
+ die( "Unable to get Total Job Bytes from catalog" . $last24bytes->getMessage() );
+ }else {
+ $tmp = $last24bytes->fetchRow();
+ var_dump( $tmp );
+ // Transfered bytes since last 24 hours
+ $smarty->assign('bytes_totales', $dbSql->human_file_size( $tmp[0] ) );
+
+ $smarty->assign('total_jobs', $tmp[1]);
+
+ $last24bytes->free();
+ }
+
// Database size
$smarty->assign('database_size', $dbSql->GetDbSize());
// Total bytes stored
+$bytes_stored = $dbSql->db_link->getOne("select SUM(VolBytes) from Media") or die ("Failed to get Total stored Bytes from catalog");
$smarty->assign('bytes_stored', $dbSql->human_file_size($bytes_stored) );
// Number of clients
-$tmp = $client->fetchRow();
-$smarty->assign('clientes_totales',$tmp[0]);
+$nb_clients = $dbSql->Get_Nb_Clients();
+$smarty->assign('clientes_totales',$nb_clients["nb_client"] );
-$tmp = $last24bytes->fetchRow();
/*if ( empty($tmp[0]) ) { // No data for last 24, search last 48
if ( $dbSql->driver == "mysql" )
- $last24bytes = $dbSql->link->query("select sum(JobBytes) from Job where Endtime <= NOW() and UNIX_TIMESTAMP(EndTime) > UNIX_TIMESTAMP(NOW())-172800" );
+ $last24bytes = $dbSql->db_link->query("select sum(JobBytes) from Job where Endtime <= NOW() and UNIX_TIMESTAMP(EndTime) > UNIX_TIMESTAMP(NOW())-172800" );
if ( $dbSql->driver == "pgsql")
- $last24bytes = $dbSql->link->query("select sum(JobBytes) from Job where Endtime <= NOW() and EndTime > NOW()-172800 * interval '1 second'" )
+ $last24bytes = $dbSql->db_link->query("select sum(JobBytes) from Job where Endtime <= NOW() and EndTime > NOW()-172800 * interval '1 second'" )
or die ("Error query: 4.1");
$smarty->assign('when',"yesterday");
$tmp = $last24bytes->fetchRow();
}*/
-// Transfered bytes since last 24 hours
-$smarty->assign('bytes_totales', $dbSql->human_file_size( $tmp[0] ) );
-
-$smarty->assign('total_jobs', $tmp[1]);
-
-$tmp = $totalfiles->fetchRow();
-$smarty->assign('files_totales',$tmp[0]);
-
-$client->free();
-$totalfiles->free();
-$last24bytes->free();
-
// report_select.tpl & last_run_report.tpl
-$res = $dbSql->link->query("select Name from Job group by Name");
+$res = $dbSql->db_link->query("select Name from Job group by Name");
+
$a_jobs = array();
while ( $tmp = $res->fetchRow() )
array_push($a_jobs, $tmp[0]);
$smarty->assign('pools',$dbSql->GetVolumeList() );
// last_run_report.tpl
-if ($mode == "Lite" && $_GET['Full_popup'] != "yes") {
+if ( $mode == "Lite" && $_GET['Full_popup'] == "yes" ) {
$tmp = array();
- if ( $dbSql->driver == "mysql" )
- $status = $dbSql->link->query("select JobId,Name,EndTime,JobStatus from Job where EndTime <= NOW() and UNIX_TIMESTAMP(EndTime) >UNIX_TIMESTAMP(NOW())-86400 and JobStatus!='T'" )
+ switch( $dbSql->driver )
+ {
+ case 'mysql':
+ $query = "SELECT JobId, Name, EndTime, JobStatus";
+ $query .= "FROM Job ";
+ $query .= "WHERE EndTime <= NOW() and UNIX_TIMESTAMP(EndTime) > UNIX_TIMESTAMP(NOW())-86400 and JobStatus!='T'";
+ break;
+ case 'pgsql':
+ $query = "SELECT JobId, Name, EndTime, JobStatus ";
+ $query .= "FROM Job ";
+ $query .= "WHERE EndTime <= NOW() and EndTime >NOW() - 86400 * interval '1 second' and JobStatus!= 'T'";
+ break;
+ }
+
+ $status = $dbSql->db_link->query( $query );
+
+ if (PEAR::isError( $status ) )
+ die( "Unable to get last job status from catalog<br />" . $status->getMessage() );
+
+ /*
+ if ( $dbSql->driver == "mysql" )
+ $status = $dbSql->db_link->query("select JobId,Name,EndTime,JobStatus from Job where EndTime <= NOW() and UNIX_TIMESTAMP(EndTime) >UNIX_TIMESTAMP(NOW())-86400 and JobStatus!='T'" )
or die ("Error: query at row 95");
if ( $dbSql->driver == "pgsql" )
- $status = $dbSql->link->query("select JobId,Name,EndTime,JobStatus from Job where EndTime <= NOW() and EndTime >NOW() - 86400 * interval '1 second' and JobStatus!= 'T'")
+ $status = $dbSql->db_link->query("select JobId,Name,EndTime,JobStatus from Job where EndTime <= NOW() and EndTime >NOW() - 86400 * interval '1 second' and JobStatus!= 'T'")
or die ( "Error: query at row 98" );
- $smarty->assign('status', $status->numRows());
+ */
+ $smarty->assign('status', $status->numRows() );
if ( $status->numRows() ) {
while ( $res = $status->fetchRow() )
array_push($tmp, $res);
// Total Elapsed Time. Only for single Job.
if ( $dbSql->driver == "mysql" )
- $ret = $dbSql->link->query("select UNIX_TIMESTAMP(EndTime)-UNIX_TIMESTAMP(StartTime) as elapsed from Job where EndTime <= NOW() and UNIX_TIMESTAMP(EndTime) > UNIX_TIMESTAMP(NOW())-84600")
+ $ret = $dbSql->db_link->query("select UNIX_TIMESTAMP(EndTime)-UNIX_TIMESTAMP(StartTime) as elapsed from Job where EndTime <= NOW() and UNIX_TIMESTAMP(EndTime) > UNIX_TIMESTAMP(NOW())-84600")
or die ("Error at row 110");
if ( $dbSql->driver == "pgsql" )
- $ret = $dbSql->link->query("select EndTime - StartTime as elapsed from Job where EndTime <= NOW() and EndTime > NOW() - 84600 * interval '1 second'")
+ $ret = $dbSql->db_link->query("select EndTime - StartTime as elapsed from Job where EndTime <= NOW() and EndTime > NOW() - 84600 * interval '1 second'")
or die ("Error at row 113");
while ( $res = $ret->fetchRow() ) {
if ( $TotalElapsed < 1000000000 ) // Temporal "workaround" ;) Fix later
as elapsed,Job.Name,Job.StartTime,Job.EndTime,Job.Level,Pool.Name,Job.JobStatus from Job
LEFT JOIN Pool ON Job.PoolId=Pool.PoolId where EndTime <= NOW() and EndTime > NOW() - 86400 * interval '1 second'
order by elapsed ";
- $status = $dbSql->link->query($query)
+ $status = $dbSql->db_link->query($query)
or die ("Error: query at row 138");
while ( $tmp = $status->fetchRow() ) {
$tdate = explode (":",$tmp[0]);
$smarty->compile_dir = "./templates_c";
$smarty->config_dir = "./configs";
$smarty->config_load("bacula.conf");
-require("lang.php");
$dbSql = new Bweb();
+require("lang.php");
+
if ( $_GET['default'] == 1) { // Default params, 1 month
$dbSql->StartDate = strftime("%Y-%m-%d %H:%M:%S",time()-2678400);
$dbSql->EndDate = strftime("%Y-%m-%d %H:%M:%S",time());
// Array with jobs data
$a_jobs = array();
if ($dbSql->driver == "mysql")
- $res_jobs = $dbSql->link->query("select *,SEC_TO_TIME( UNIX_TIMESTAMP(Job.EndTime)-UNIX_TIMESTAMP(Job.StartTime) ) as elapsed from Job where EndTime < '$dbSql->EndDate' and EndTime > '$dbSql->StartDate' and Name='$_GET[server]' order by EndTime")
+ $res_jobs = $dbSql->db_link->query("select *,SEC_TO_TIME( UNIX_TIMESTAMP(Job.EndTime)-UNIX_TIMESTAMP(Job.StartTime) ) as elapsed from Job where EndTime < '$dbSql->EndDate' and EndTime > '$dbSql->StartDate' and Name='$_GET[server]' order by EndTime")
or die("Error query row 50");
else if ($dbSql->driver == "pgsql")
- $res_jobs = $dbSql->link->query("select jobid as \"JobId\",job as \"Job\",name as \"Name\",type as \"Type\",level as \"Level\",clientid as \"ClientId\",jobstatus as \"JobStatus\",schedtime as \"SchedTime\",starttime as \"StartTime\",endtime as \"EndTime\",jobtdate as \"JobtDate\",volsessionid as \"VolSessionId\",volsessiontime as \"VolSessionTime\",jobfiles as \"JobFiles\",jobbytes as \"JobBytes\",joberrors as \"JobErrors\",jobmissingfiles as \"JobMissingFiles\",poolid as \"PoolId\",filesetid as \"FilesetId\",purgedfiles as \"PurgedFiles\",hasbase,Job.EndTime::timestamp-Job.StartTime::timestamp as elapsed from Job where EndTime < '$dbSql->EndDate' and EndTime > '$dbSql->StartDate' and Name='$_GET[server]' order by EndTime")
+ $res_jobs = $dbSql->db_link->query("select jobid as \"JobId\",job as \"Job\",name as \"Name\",type as \"Type\",level as \"Level\",clientid as \"ClientId\",jobstatus as \"JobStatus\",schedtime as \"SchedTime\",starttime as \"StartTime\",endtime as \"EndTime\",jobtdate as \"JobtDate\",volsessionid as \"VolSessionId\",volsessiontime as \"VolSessionTime\",jobfiles as \"JobFiles\",jobbytes as \"JobBytes\",joberrors as \"JobErrors\",jobmissingfiles as \"JobMissingFiles\",poolid as \"PoolId\",filesetid as \"FilesetId\",purgedfiles as \"PurgedFiles\",hasbase,Job.EndTime::timestamp-Job.StartTime::timestamp as elapsed from Job where EndTime < '$dbSql->EndDate' and EndTime > '$dbSql->StartDate' and Name='$_GET[server]' order by EndTime")
or die("Error query row 56");
while ( $tmp = $res_jobs->fetchRow(DB_FETCHMODE_ASSOC) ) {
$smarty->assign('jobs',$a_jobs);
// report_select.tpl
-$res = $dbSql->link->query("select Name from Job group by Name");
+$res = $dbSql->db_link->query("select Name from Job group by Name");
$a_jobs = array();
while ( $tmp = $res->fetchRow() )
array_push($a_jobs, $tmp[0]);