2012-06-26 14:28:18 +00:00
|
|
|
<?php defined('SYSPATH') or die('No direct access allowed.');
|
|
|
|
|
|
|
|
/**
|
|
|
|
* This class provides PLESK client support
|
|
|
|
*
|
|
|
|
* @package OSB
|
|
|
|
* @subpackage Plugins/Plesk
|
|
|
|
* @category Plugins
|
|
|
|
* @author Deon George
|
|
|
|
* @copyright (c) 2010 Deon George
|
|
|
|
* @license http://dev.leenooks.net/license.html
|
|
|
|
*/
|
|
|
|
class Host_Plugin_Plesk_9 extends Host_Plugin_Plesk {
|
|
|
|
protected $protocol = '1.6.0.1';
|
|
|
|
private $_loaded = FALSE;
|
|
|
|
|
|
|
|
// @todo Get these default "templates" values out of the DB
|
|
|
|
private $_template = array(
|
|
|
|
'client'=>array(
|
|
|
|
'gen_info'=>array(),
|
|
|
|
'stat'=>array(),
|
|
|
|
'permissions' => array(
|
|
|
|
'cp_access'=>TRUE,
|
|
|
|
'create_domains'=>FALSE,
|
|
|
|
'manage_phosting'=>FALSE,
|
|
|
|
'manage_php_safe_mode'=>FALSE,
|
|
|
|
'manage_sh_access'=>FALSE,
|
|
|
|
'manage_not_chroot_shell'=>FALSE,
|
|
|
|
'manage_quota'=>TRUE,
|
|
|
|
'manage_subdomains'=>TRUE,
|
|
|
|
'manage_domain_aliases'=>FALSE,
|
|
|
|
'manage_log'=>TRUE,
|
|
|
|
'manage_anonftp'=>FALSE,
|
|
|
|
'manage_crontab'=>FALSE,
|
|
|
|
'change_limits'=>FALSE,
|
|
|
|
'manage_dns'=>TRUE,
|
|
|
|
'manage_webapps'=>FALSE,
|
|
|
|
'manage_webstat'=>TRUE,
|
|
|
|
'manage_maillists'=>TRUE,
|
|
|
|
'manage_spamfilter'=>FALSE,
|
|
|
|
'manage_virusfilter'=>FALSE,
|
|
|
|
'allow_local_backups'=>FALSE,
|
|
|
|
'allow_ftp_backups'=>TRUE,
|
|
|
|
'remote_access_interface'=>FALSE,
|
|
|
|
'site_builder'=>FALSE,
|
|
|
|
'manage_performance'=>FALSE,
|
|
|
|
'manage_dashboard'=>TRUE,
|
|
|
|
'select_db_server'=>FALSE,
|
|
|
|
),
|
|
|
|
'limits' => array(
|
|
|
|
'resource-policy'=>'notify',
|
|
|
|
'max_dom'=>-1,
|
|
|
|
'max_subdom'=>-1,
|
|
|
|
'max_dom_aliases'=>-1,
|
|
|
|
'disk_space_soft'=>-1,
|
|
|
|
'disk_space'=>-1,
|
|
|
|
'max_traffic_soft'=>-1,
|
|
|
|
'max_traffic'=>-1,
|
|
|
|
'max_wu'=>-1,
|
|
|
|
'max_db'=>-1,
|
|
|
|
'max_box'=>-1,
|
|
|
|
'mbox_quota'=>51200000,
|
|
|
|
'max_redir'=>-1,
|
|
|
|
'max_mg'=>-1,
|
|
|
|
'max_resp'=>-1,
|
|
|
|
'max_maillists'=>-1,
|
|
|
|
'max_webapps'=>0,
|
|
|
|
'expiration'=>-1,
|
|
|
|
),
|
|
|
|
'ippool' => array(
|
|
|
|
'223.27.16.147'=>'shared',
|
|
|
|
),
|
|
|
|
),
|
|
|
|
'domain'=>array(
|
|
|
|
'gen_info'=>array(),
|
|
|
|
'hosting'=>array(),
|
|
|
|
'limits'=>array(),
|
|
|
|
'user'=>array(),
|
|
|
|
),
|
|
|
|
);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Get a Client Configuration
|
|
|
|
*/
|
|
|
|
public function cmd_getclient(Model_Service $so) {
|
|
|
|
$this->init();
|
|
|
|
$items = array_keys($this->_template['client']);
|
|
|
|
|
|
|
|
$client = $this->packet->add_node('client');
|
|
|
|
$get = $client->add_node('get');
|
|
|
|
$filter = $get->add_node('filter');
|
|
|
|
$filter->add_node('login',$so->plugin()->host_account);
|
|
|
|
$dataset = $get->add_node('dataset');
|
|
|
|
foreach ($items as $k)
|
|
|
|
$dataset->add_node($k);
|
|
|
|
|
|
|
|
$result = $this->server_command($this->xml);
|
|
|
|
|
|
|
|
if (! $this->loaded())
|
|
|
|
throw new Kohana_Exception('Unable to get PLESK Client data - Error :error',array(':error'=>(string)$result));
|
|
|
|
|
2012-07-03 13:05:08 +00:00
|
|
|
$this->_object['id'] = $result->id->value();
|
2012-06-26 14:28:18 +00:00
|
|
|
foreach ($items as $k)
|
|
|
|
foreach ($result->get($k) as $a=>$b)
|
|
|
|
$this->_object[$k] = $this->collapse($b);
|
|
|
|
|
|
|
|
return $this;
|
|
|
|
}
|
|
|
|
|
2012-07-03 13:05:08 +00:00
|
|
|
/**
|
|
|
|
* Get a DNS Configuration
|
|
|
|
*/
|
|
|
|
public function cmd_getdns(Model_Service $so,$file='') {
|
|
|
|
$do = $this->cmd_getdomain($so);
|
|
|
|
|
|
|
|
$this->init();
|
|
|
|
$domain = $this->packet->add_node('dns');
|
|
|
|
$get = $domain->add_node('get_rec');
|
|
|
|
$filter = $get->add_node('filter');
|
|
|
|
$filter->add_node('domain_id',$do->id);
|
|
|
|
|
|
|
|
$result = $this->server_command($this->xml);
|
|
|
|
if (! $this->loaded())
|
|
|
|
throw new Kohana_Exception('Unable to get PLESK Domain data - Error :error',array(':error'=>(string)$result));
|
|
|
|
|
|
|
|
$this->_object = $this->collapse($result);
|
|
|
|
if ($file)
|
|
|
|
file_put_contents($file,(string)$result);
|
|
|
|
|
|
|
|
return $this;
|
|
|
|
}
|
|
|
|
|
2012-06-26 14:28:18 +00:00
|
|
|
/**
|
|
|
|
* Get a Domain Configuration
|
|
|
|
*/
|
|
|
|
public function cmd_getdomain(Model_Service $so) {
|
|
|
|
$this->init();
|
|
|
|
$items = array_keys($this->_template['domain']);
|
|
|
|
|
|
|
|
$domain = $this->packet->add_node('domain');
|
|
|
|
$get = $domain->add_node('get');
|
|
|
|
$filter = $get->add_node('filter');
|
|
|
|
$filter->add_node('domain-name',strtolower($so->plugin()->name()));
|
|
|
|
$dataset = $get->add_node('dataset');
|
|
|
|
foreach ($items as $k)
|
|
|
|
$dataset->add_node($k);
|
|
|
|
|
|
|
|
$result = $this->server_command($this->xml);
|
|
|
|
|
|
|
|
if (! $this->loaded())
|
|
|
|
throw new Kohana_Exception('Unable to get PLESK Domain data - Error :error',array(':error'=>(string)$result));
|
|
|
|
|
2012-07-03 13:05:08 +00:00
|
|
|
$this->_object['id'] = $result->id->value();
|
2012-06-26 14:28:18 +00:00
|
|
|
foreach ($items as $k)
|
|
|
|
foreach ($result->get($k) as $a=>$b)
|
|
|
|
$this->_object[$k] = $this->collapse($b);
|
|
|
|
|
|
|
|
return $this;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Get Domain Traffic
|
|
|
|
*/
|
|
|
|
public function cmd_gettraffic(Model_Service $so) {
|
|
|
|
$this->init();
|
|
|
|
|
|
|
|
$client = $this->packet->add_node('domain');
|
|
|
|
$get = $client->add_node('get_traffic');
|
|
|
|
$filter = $get->add_node('filter');
|
|
|
|
$filter->add_node('domain-name',strtolower($so->plugin()->name()));
|
|
|
|
|
|
|
|
# $get->add_node('since_date','2012-04-01');
|
|
|
|
# $get->add_node('end_date','2012-04-02');
|
|
|
|
|
|
|
|
$result = $this->server_command($this->xml);
|
|
|
|
|
|
|
|
if (! $this->loaded())
|
|
|
|
throw new Kohana_Exception('Unable to get PLESK Traffic data - Error :error',array(':error'=>(string)$result));
|
|
|
|
|
|
|
|
$this->_object = $this->collapse($result);
|
|
|
|
|
|
|
|
return $this;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Provision a hosting service
|
|
|
|
* @todo To implement
|
|
|
|
*/
|
|
|
|
public function provision(Model_Service $so) {
|
|
|
|
throw new Kohana_Exception('Not Implemented');
|
|
|
|
|
|
|
|
/*
|
|
|
|
$result = $this->add_client($so);
|
|
|
|
|
|
|
|
// Next need to get the ID from the account call to set the IP
|
|
|
|
$result = $this->hs->setip(35); // @todo change this number
|
|
|
|
print_r((string)$result);
|
|
|
|
|
|
|
|
// Provision Domain
|
|
|
|
$result = $this->hs->add_service($so);
|
|
|
|
print_r((string)$result);
|
|
|
|
|
|
|
|
// Set Limits
|
|
|
|
$result = $this->hs->setlimits($so);
|
|
|
|
print_r((string)$result);
|
|
|
|
|
|
|
|
// Next need to get the ID for the domain to disable mail
|
|
|
|
$result = $this->hs->disablemail(43);
|
|
|
|
print_r((string)$result);
|
|
|
|
*/
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Add a new client to the host server
|
|
|
|
* @todo To implement
|
|
|
|
*/
|
|
|
|
public function add_client(Model_Service $so) {
|
|
|
|
throw new Kohana_Exception('Not Implemented');
|
|
|
|
|
|
|
|
/*
|
|
|
|
$client_template = 'DefaultClient';
|
|
|
|
$reseller_id = $so->affiliate->host_server_affiliate->host_username;
|
|
|
|
|
|
|
|
$client = $this->packet->add_node('client');
|
|
|
|
$add = $client->add_node('add');
|
|
|
|
$gen_info = $add->add_node('gen_info');
|
|
|
|
$gen_info->add_node('cname',$so->account->company);
|
|
|
|
$gen_info->add_node('pname',sprintf('%s %s',$so->account->first_name,$so->account->last_name));
|
|
|
|
|
|
|
|
$gen_info->add_node('login',$so->plugin()->host_username);
|
|
|
|
$gen_info->add_node('passwd',$so->plugin()->host_password);
|
|
|
|
|
|
|
|
$gen_info->add_node('status',0);
|
|
|
|
$gen_info->add_node('email',$so->account->email);
|
|
|
|
|
|
|
|
if ($reseller_id)
|
|
|
|
$gen_info->add_node('owner-login',$reseller_id);
|
|
|
|
|
|
|
|
return $this->server_command($this->xml);
|
|
|
|
*/
|
|
|
|
}
|
|
|
|
|
|
|
|
// * @todo To implement
|
|
|
|
public function add_service(Model_Service $so) {
|
|
|
|
throw new Kohana_Exception('Not Implemented');
|
|
|
|
|
|
|
|
/*
|
|
|
|
// @todo This should come from the DB.
|
|
|
|
$host_ip = '223.27.16.147';
|
|
|
|
$domain_template = 'Default Domain';
|
|
|
|
|
|
|
|
$domain = $this->packet->add_node('domain');
|
|
|
|
$add = $domain->add_node('add');
|
|
|
|
$gen_setup = $add->add_node('gen_setup');
|
|
|
|
$gen_setup->add_node('name',strtolower($so->name()));
|
|
|
|
$gen_setup->add_node('owner-login',$so->plugin()->host_username);
|
|
|
|
$gen_setup->add_node('htype','vrt_hst');
|
|
|
|
$gen_setup->add_node('ip_address',$host_ip);
|
|
|
|
$gen_setup->add_node('status','0');
|
|
|
|
$hosting = $add->add_node('hosting');
|
|
|
|
$vrt_host = $hosting->add_node('vrt_hst');
|
|
|
|
$property = $vrt_host->add_node('property');
|
|
|
|
$property->add_node('name','ftp_login');
|
|
|
|
$property->add_node('value',$so->plugin()->ftp_username);
|
|
|
|
$property = $vrt_host->add_node('property');
|
|
|
|
$property->add_node('name','ftp_password');
|
|
|
|
$property->add_node('value',$so->plugin()->ftp_password);
|
|
|
|
$vrt_host->add_node('ip_address',$host_ip);
|
|
|
|
|
|
|
|
$add->add_node('template-name',$domain_template);
|
|
|
|
|
|
|
|
return $this->server_command($this->xml);
|
|
|
|
*/
|
|
|
|
}
|
|
|
|
|
|
|
|
// @todo not sure if this is actually working as desired
|
|
|
|
// * @todo To implement
|
|
|
|
public function setlimits(Model_Service $so) {
|
|
|
|
throw new Kohana_Exception('Not Implemented');
|
|
|
|
|
|
|
|
/*
|
|
|
|
$client = $this->packet->add_node('client');
|
|
|
|
|
|
|
|
// Permissions
|
|
|
|
$set = $client->add_node('set');
|
|
|
|
$filter = $set->add_node('filter');
|
|
|
|
$filter->add_node('login',$so->plugin()->host_username);
|
|
|
|
$values = $set->add_node('values');
|
|
|
|
|
|
|
|
$x = $values->add_node('permissions');
|
|
|
|
foreach ($this->permissions as $k=>$v) {
|
|
|
|
$l = $x->add_node('permission');
|
|
|
|
$l->add_node('name',$k);
|
|
|
|
$l->add_node('value',$v==TRUE?'true':'false');
|
|
|
|
}
|
|
|
|
|
|
|
|
// Limits
|
|
|
|
$set = $client->add_node('set');
|
|
|
|
$filter = $set->add_node('filter');
|
|
|
|
$filter->add_node('login',$so->plugin()->host_username);
|
|
|
|
$values = $set->add_node('values');
|
|
|
|
|
|
|
|
$x = $values->add_node('limits');
|
|
|
|
foreach ($this->limits as $k=>$v) {
|
|
|
|
$l = $x->add_node('limit');
|
|
|
|
$l->add_node('name',$k);
|
|
|
|
$l->add_node('value',$v);
|
|
|
|
}
|
|
|
|
|
|
|
|
return $this->server_command($this->xml);
|
|
|
|
*/
|
|
|
|
}
|
|
|
|
|
|
|
|
// @todo This is broken. $this->ippool is not existing
|
|
|
|
// * @todo To implement
|
|
|
|
public function setip($id) {
|
|
|
|
throw new Kohana_Exception('Not Implemented');
|
|
|
|
|
|
|
|
/*
|
|
|
|
$client = $this->packet->add_node('client');
|
|
|
|
$ip = $client->add_node('ippool_add_ip');
|
|
|
|
$ip->add_node('client_id',$id);
|
|
|
|
foreach ($this->ippool as $k=>$v)
|
|
|
|
$ip->add_node('ip_address',$k);
|
|
|
|
|
|
|
|
return $this->server_command($this->xml);
|
|
|
|
*/
|
|
|
|
}
|
|
|
|
|
|
|
|
// * @todo To implement
|
|
|
|
public function disablemail($id) {
|
|
|
|
throw new Kohana_Exception('Not Implemented');
|
|
|
|
|
|
|
|
/*
|
|
|
|
$client = $this->packet->add_node('mail');
|
|
|
|
$disable = $client->add_node('disable');
|
|
|
|
$disable->add_node('domain_id',$id);
|
|
|
|
|
|
|
|
return $this->server_command($this->xml);
|
|
|
|
*/
|
|
|
|
}
|
|
|
|
}
|
|
|
|
?>
|