[enh] Handles version

This commit is contained in:
root 2014-07-04 16:09:08 +02:00
parent 4ecfd9c73a
commit 04e0b270fe
4 changed files with 55 additions and 17 deletions

View File

@ -15,6 +15,9 @@ class Alternc_Diagnostic_Manager{
*/
public $directoryInstance;
/** @var string the Alternc version */
public $version;
/**
* Constructor with dependancy injection
*
@ -37,6 +40,13 @@ class Alternc_Diagnostic_Manager{
throw new \Exception("Missing parameter directoryInstance");
}
// Attempts to retrieve version
if (isset($options["version"]) && ! is_null($options["version"])) {
$this->version = $options["version"];
} else {
throw new \Exception("Missing parameter version");
}
}
/**
@ -58,7 +68,7 @@ class Alternc_Diagnostic_Manager{
throw new \Exception("Invalid service $service");
}
/** @var Alternc_Diagnostic_Service_Interface */
$serviceAgent = new $class_name;
$serviceAgent = new $class_name( array("service" => $this) );
// Runs the service agent and store the results
$diagnosticData->addData($serviceAgent->name, $serviceAgent->run());

View File

@ -40,7 +40,10 @@ abstract class Alternc_Diagnostic_Service_Abstract{
/** @var m_quota */
protected $quota;
public function __construct() {
/** @var Alternc_Diagnostic_Service */
protected $service;
public function __construct( $options ) {
$this->data = new Alternc_Diagnostic_Data(Alternc_Diagnostic_Data::TYPE_DOMAIN);
global $db;
@ -76,6 +79,10 @@ abstract class Alternc_Diagnostic_Service_Abstract{
global $admin;
$this->admin= $admin;
if( array_key_exists("service",$options) && is_object($options["service"] ) ){
$this->service = $options["service"];
}
}
/**

View File

@ -23,20 +23,19 @@ class Alternc_Diagnostic_Service_Dns
const SECTION_ZONES = "zones";
const SECTION_ZONES_LOCKED = "zones_locked";
const SECTION_SLAVES = "slaves";
public function __construct() {
parent::__construct();
$this->bind = new system_bind();
}
function run(){
/** @var m_dom */
global $dom;
if( !is_a($dom, "system_bind")){
$this->bind = new system_bind();
$version = $this->service->version;
if( $version < 3 ) {
$this->domainList = $this->get_domain_all_summary();
}else{
$this->domainList = $dom->get_domain_all_summary();
$this->data->setMetadata("Alternc 1.x: can't read DNS");
return $this->data;
}
// Writes the domains list
@ -55,6 +54,25 @@ class Alternc_Diagnostic_Service_Dns
return $this->data;
}
/**
* Local override if not available (1.0)
* @return array
*/
function get_domain_all_summary() {
global $db, $err;
$res = array();
$db->query("SELECT domaine, gesdns, gesmx, dns_action, zonettl FROM domaines ORDER BY domaine");
while ($db->next_record()) {
$res[$db->f("domaine")] = array(
"gesdns" => $db->f("gesdns"),
"gesmx" => $db->f("gesmx"),
"dns_action" => $db->f("dns_action"),
"zonettl" => $db->f("zonettl"),
);
}
return $res;
}
function getHosts(){
$resultArray = array();
foreach ($this->domainList as $domain => $domainInfo) {

View File

@ -112,10 +112,12 @@ function __autoload($class_name)
// ==================================================================
// ==================================================================
$version = "3.0";
// alternc 1.0
if(is_file("/usr/share/alternc/panel/class/config_nochk.php")){
require_once("/usr/share/alternc/panel/class/config_nochk.php");
$version = "1.0";
}else{
require_once("/var/alternc/bureau/class/config_nochk.php");
include "../bureau/class/class_system_bind.php";
@ -131,7 +133,8 @@ $directoryInstance = new Alternc_Diagnostic_Directory("/tmp
$diagnosticManager = new Alternc_Diagnostic_Manager( array(
"directoryInstance" => $directoryInstance,
"formatInstance" => new Alternc_Diagnostic_Format_Json($directoryInstance)
"formatInstance" => new Alternc_Diagnostic_Format_Json($directoryInstance),
"version" => $version
));