OSB enhancements to date
This commit is contained in:
104
modules/host_server/classes/controller/hostserver.php
Normal file
104
modules/host_server/classes/controller/hostserver.php
Normal file
@@ -0,0 +1,104 @@
|
||||
<?php defined('SYSPATH') or die('No direct access allowed.');
|
||||
/**
|
||||
* This class provides Host Server functions
|
||||
*
|
||||
* @package OSB
|
||||
* @subpackage HostServer
|
||||
* @category Controllers
|
||||
* @author Deon George
|
||||
* @copyright (c) 2010 Deon George
|
||||
* @license http://dev.leenooks.net/license.html
|
||||
*/
|
||||
class Controller_HostServer extends Controller {
|
||||
// protected $_control = array(
|
||||
// array('Product Categories'=>'product_category'),
|
||||
// );
|
||||
|
||||
public function action_plesk_addclienttest($id) {
|
||||
$ao = ORM::factory('account',$id);
|
||||
|
||||
$plesk = new Plesk;
|
||||
$result = $plesk->addclient($ao);
|
||||
|
||||
print_r(array('s'=>(string)$result,'r'=>(string)$result->add->result));
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a domain for the client
|
||||
*
|
||||
* @param int $id Hosting ID (in OSB)
|
||||
* @return unknown_type
|
||||
*/
|
||||
public function action_plesk_adddomaintest($id) {
|
||||
$so = ORM::factory('service',$id);
|
||||
|
||||
$plesk = new Plesk;
|
||||
$result = $plesk->adddomain($so);
|
||||
|
||||
print_r(array('s'=>(string)$result,'r'=>(string)$result->add->result));
|
||||
}
|
||||
|
||||
public function action_plesk_addclient($id) {
|
||||
}
|
||||
|
||||
public function action_plesk_getclient($id) {
|
||||
$ao = ORM::factory('account',$id);
|
||||
$plesk = new Plesk;
|
||||
print_r($plesk->get_client($ao)->as_array());
|
||||
}
|
||||
|
||||
public function action_plesk_getservice($id) {
|
||||
$so = ORM::factory('service',$id);
|
||||
$plesk = new Plesk;
|
||||
|
||||
$result = $plesk->get_service($so);
|
||||
print_r(array('s'=>(string)$result,'r'=>(string)$result->get));
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the Limits for the client
|
||||
*
|
||||
* @param int $id Client ID (in plesk)
|
||||
* @return unknown_type
|
||||
*/
|
||||
public function action_plesk_setlimits() {
|
||||
$plesk = new Plesk;
|
||||
$result = $plesk->setlimits();
|
||||
|
||||
print_r(array('s'=>(string)$result,'r'=>(string)$result->set->result));
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the IP for the client
|
||||
*
|
||||
* @param int $id Client ID (in plesk)
|
||||
* @return unknown_type
|
||||
*/
|
||||
public function action_plesk_setip($id) {
|
||||
$plesk = new Plesk;
|
||||
$result = $plesk->setip($id);
|
||||
|
||||
print_r(array('s'=>(string)$result,'r'=>(string)$result->set));
|
||||
}
|
||||
|
||||
/**
|
||||
* Disable mail for a domain
|
||||
*
|
||||
* @param int $id Domain ID (in plesk)
|
||||
* @return unknown_type
|
||||
*/
|
||||
public function action_plesk_disablemail($id) {
|
||||
$plesk = new Plesk;
|
||||
$result = $plesk->disablemail($id);
|
||||
|
||||
print_r(array('s'=>(string)$result,'r'=>(string)$result));
|
||||
}
|
||||
|
||||
public function action_plesk_settraffic() {
|
||||
die();
|
||||
$plesk = new Plesk;
|
||||
$result = $plesk->set_traffic();
|
||||
|
||||
print_r(array('s'=>(string)$result,'r'=>(string)$result));
|
||||
}
|
||||
}
|
16
modules/host_server/classes/model/hostserver.php
Normal file
16
modules/host_server/classes/model/hostserver.php
Normal file
@@ -0,0 +1,16 @@
|
||||
<?php defined('SYSPATH') or die('No direct access allowed.');
|
||||
|
||||
/**
|
||||
* This class supports OSB Web Hosting
|
||||
*
|
||||
* @package OSB
|
||||
* @subpackage Product
|
||||
* @category Models
|
||||
* @author Deon George
|
||||
* @copyright (c) 2010 Open Source Billing
|
||||
* @license http://dev.osbill.net/license.html
|
||||
*/
|
||||
class Model_HostServer extends ORMOSB {
|
||||
protected $_table_name = 'service';
|
||||
}
|
||||
?>
|
321
modules/host_server/classes/plesk.php
Normal file
321
modules/host_server/classes/plesk.php
Normal file
@@ -0,0 +1,321 @@
|
||||
<?php defined('SYSPATH') or die('No direct access allowed.');
|
||||
|
||||
/**
|
||||
* This class provides PLESK support
|
||||
*
|
||||
* @package OSB
|
||||
* @subpackage Plugins/Plesk
|
||||
* @category Plugins
|
||||
* @author Deon George
|
||||
* @copyright (c) 2010 Deon George
|
||||
* @license http://dev.leenooks.net/license.html
|
||||
*/
|
||||
class Plesk {
|
||||
// @todo - need to get this value from the DB.
|
||||
private $admin_id = 'jd-admin';
|
||||
private $password = 'jd3550lp';
|
||||
|
||||
private $protocol = '1.6.0.1';
|
||||
private $path = 'enterprise/control/agent.php';
|
||||
|
||||
private $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,
|
||||
);
|
||||
|
||||
private $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,
|
||||
);
|
||||
|
||||
private $ippool = array(
|
||||
'111.67.13.20'=>'shared',
|
||||
);
|
||||
|
||||
public function addclient($account) {
|
||||
// @todo Remove this static definition
|
||||
$reseller_id = 'gtc-admin';
|
||||
$client_template = 'DefaultClient';
|
||||
|
||||
$xml = XML::factory(null,'plesk');
|
||||
$packet = $xml->add_node('packet','',array('version'=>$this->protocol));
|
||||
|
||||
// Client Details
|
||||
$client = $packet->add_node('client');
|
||||
$add = $client->add_node('add');
|
||||
$gen_info = $add->add_node('gen_info');
|
||||
$gen_info->add_node('cname',$account->company);
|
||||
$gen_info->add_node('pname',sprintf('%s %s',$account->first_name,$account->last_name));
|
||||
|
||||
$gen_info->add_node('login',$this->admin_id);
|
||||
$gen_info->add_node('passwd',$this->password);
|
||||
|
||||
$gen_info->add_node('status',0);
|
||||
$gen_info->add_node('email',$account->email);
|
||||
|
||||
if ($reseller_id)
|
||||
$gen_info->add_node('owner-login',$reseller_id);
|
||||
|
||||
return $this->server_command($xml);
|
||||
}
|
||||
|
||||
// @not developed
|
||||
public function setlimits() {
|
||||
$xml = XML::factory(null,'plesk');
|
||||
$packet = $xml->add_node('packet','',array('version'=>$this->protocol));
|
||||
|
||||
$client = $packet->add_node('client');
|
||||
|
||||
// Permissions
|
||||
$set = $client->add_node('set');
|
||||
$filter = $set->add_node('filter');
|
||||
$filter->add_node('login',$this->admin_id);
|
||||
$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',$this->admin_id);
|
||||
$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($xml);
|
||||
}
|
||||
|
||||
public function setip($id) {
|
||||
$xml = XML::factory(null,'plesk');
|
||||
$packet = $xml->add_node('packet','',array('version'=>$this->protocol));
|
||||
|
||||
// IP Address
|
||||
$client = $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($xml);
|
||||
}
|
||||
|
||||
public function disablemail($id) {
|
||||
$xml = XML::factory(null,'plesk');
|
||||
$packet = $xml->add_node('packet','',array('version'=>$this->protocol));
|
||||
|
||||
// IP Address
|
||||
$client = $packet->add_node('mail');
|
||||
$disable = $client->add_node('disable');
|
||||
$disable->add_node('domain_id',$id);
|
||||
|
||||
echo (string)$xml;
|
||||
return $this->server_command($xml);
|
||||
}
|
||||
|
||||
public function adddomain($service) {
|
||||
$host_ip = '111.67.13.20';
|
||||
$domain_template = 'Default Domain';
|
||||
|
||||
$xml = XML::factory(null,'plesk');
|
||||
$packet = $xml->add_node('packet','',array('version'=>$this->protocol));
|
||||
|
||||
// Domain Details
|
||||
$domain = $packet->add_node('domain');
|
||||
$add = $domain->add_node('add');
|
||||
$gen_setup = $add->add_node('gen_setup');
|
||||
$gen_setup->add_node('name',$service->domain_name);
|
||||
$gen_setup->add_node('owner-login',$this->admin_id);
|
||||
$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',$service->host_username);
|
||||
$property = $vrt_host->add_node('property');
|
||||
$property->add_node('name','ftp_password');
|
||||
$property->add_node('value',$service->host_password);
|
||||
$vrt_host->add_node('ip_address',$host_ip);
|
||||
|
||||
$add->add_node('template-name',$domain_template);
|
||||
|
||||
return $this->server_command($xml);
|
||||
}
|
||||
|
||||
private function render(XML $xml) {
|
||||
return preg_replace('/<\/?plesk>/','',(string)$xml->render(FALSE));
|
||||
}
|
||||
|
||||
public function addclienttohost() {
|
||||
$LOGIN = 'admin';
|
||||
$PASSWD = 'w243550lp';
|
||||
|
||||
$header = array(
|
||||
"HTTP_AUTH_LOGIN: " . $LOGIN,
|
||||
"HTTP_AUTH_PASSWD: " . $PASSWD,
|
||||
"HTTP_PRETTY_PRINT: TRUE",
|
||||
"Content-Type: text/xml",
|
||||
);
|
||||
|
||||
return Remote::get(sprintf('https://%s/%s','w24-1-1.gthost.net:8443',$this->path),array(
|
||||
CURLOPT_SSL_VERIFYHOST => 0,
|
||||
CURLOPT_SSL_VERIFYPEER => FALSE,
|
||||
CURLOPT_HTTPHEADER => $header,
|
||||
CURLOPT_VERBOSE => TRUE,
|
||||
CURLOPT_POSTFIELDS => $this->render(),
|
||||
CURLOPT_RETURNTRANSFER => TRUE));
|
||||
}
|
||||
|
||||
public function adddomaintohost($id) {
|
||||
$this->domain = ORM::factory('hostserver',$id);
|
||||
$this->domain_xml();
|
||||
|
||||
}
|
||||
|
||||
public function get_client($account) {
|
||||
$xml = XML::factory(null,'plesk');
|
||||
$packet = $xml->add_node('packet','',array('version'=>$this->protocol));
|
||||
|
||||
$client = $packet->add_node('client');
|
||||
$get = $client->add_node('get');
|
||||
$filter = $get->add_node('filter');
|
||||
$filter->add_node('login',$this->admin_id);
|
||||
$dataset = $get->add_node('dataset');
|
||||
$dataset->add_node('gen_info');
|
||||
$dataset->add_node('stat');
|
||||
$dataset->add_node('permissions');
|
||||
$dataset->add_node('limits');
|
||||
$dataset->add_node('ippool');
|
||||
|
||||
return $this->server_command($xml);
|
||||
}
|
||||
|
||||
public function get_service($service) {
|
||||
$xml = XML::factory(null,'plesk');
|
||||
$packet = $xml->add_node('packet','',array('version'=>$this->protocol));
|
||||
|
||||
$client = $packet->add_node('domain');
|
||||
$get = $client->add_node('get');
|
||||
$filter = $get->add_node('filter');
|
||||
// @todo this should not be required
|
||||
if ($service->domain_tld)
|
||||
$filter->add_node('domain-name',sprintf('%s.%s',$service->domain_name,$service->domain_tld));
|
||||
else
|
||||
$filter->add_node('domain-name',$service->domain_name);
|
||||
$dataset = $get->add_node('dataset');
|
||||
$dataset->add_node('hosting');
|
||||
$dataset->add_node('limits');
|
||||
|
||||
return $this->server_command($xml);
|
||||
}
|
||||
|
||||
private function server_command(XML $xml) {
|
||||
// @todo Configure this in OSB
|
||||
$LOGIN = 'admin';
|
||||
$PASSWD = 'w243550lp';
|
||||
$SERVER = 'w24-1-1.gthost.net';
|
||||
$PORT = 8443;
|
||||
$PROTO = 'https';
|
||||
|
||||
$header = array(
|
||||
'HTTP_AUTH_LOGIN: '.$LOGIN,
|
||||
'HTTP_AUTH_PASSWD: '.$PASSWD,
|
||||
'HTTP_PRETTY_PRINT: TRUE',
|
||||
'Content-Type: text/xml',
|
||||
);
|
||||
|
||||
//echo (string)$xml;
|
||||
//die();
|
||||
return XML::factory(null,'plesk',Remote::get(sprintf('%s://%s:%s/%s',$PROTO,$SERVER,$PORT,$this->path),array(
|
||||
CURLOPT_SSL_VERIFYHOST => 0,
|
||||
CURLOPT_SSL_VERIFYPEER => FALSE,
|
||||
CURLOPT_HTTPHEADER => $header,
|
||||
CURLOPT_VERBOSE => TRUE,
|
||||
CURLOPT_TIMEOUT => 40,
|
||||
CURLOPT_CONNECTTIMEOUT => 20,
|
||||
CURLOPT_POSTFIELDS => $this->render($xml),
|
||||
CURLOPT_RETURNTRANSFER => TRUE)));
|
||||
}
|
||||
|
||||
public function set_traffic() {
|
||||
$xml = XML::factory(null,'plesk');
|
||||
$packet = $xml->add_node('packet','',array('version'=>$this->protocol));
|
||||
|
||||
$domain = $packet->add_node('domain');
|
||||
$set = $domain->add_node('set');
|
||||
$filter = $set->add_node('filter');
|
||||
|
||||
# foreach (array(
|
||||
# 'absmotorcycles.com.au'
|
||||
# ) as $domain) {
|
||||
# $filter->add_node('domain-name',$domain);
|
||||
# }
|
||||
|
||||
$values = $set->add_node('values');
|
||||
|
||||
// Limits
|
||||
$x = $values->add_node('limits');
|
||||
#foreach ($this->limits as $k=>$v) {
|
||||
$l = $x->add_node('limit');
|
||||
$l->add_node('name','max_traffic');
|
||||
$l->add_node('value',1500*1024*1024);
|
||||
$l = $x->add_node('limit');
|
||||
$l->add_node('name','max_traffic_soft');
|
||||
$l->add_node('value',1300*1024*1024);
|
||||
#}
|
||||
|
||||
//echo (string)$xml;die();
|
||||
return $this->server_command($xml);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user