WIP: Add Create Domain capability
This commit is contained in:
parent
a8f089e3b2
commit
c7bcaa2093
|
@ -25,9 +25,15 @@ class Hookmanager
|
||||||
private $Mailer;
|
private $Mailer;
|
||||||
|
|
||||||
|
|
||||||
|
private $VirtualminHandler;
|
||||||
|
|
||||||
|
|
||||||
// Can be overloaded by child classes in order to add new features.W
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// Can be overloaded by child classes in order to add new features.
|
||||||
|
// alert types are defined by wordpress.
|
||||||
protected $alertTypes =
|
protected $alertTypes =
|
||||||
[
|
[
|
||||||
"subscription_created",
|
"subscription_created",
|
||||||
|
@ -47,11 +53,14 @@ class Hookmanager
|
||||||
|
|
||||||
public function __construct()
|
public function __construct()
|
||||||
{
|
{
|
||||||
|
// TODO: Switch project to MVC structuring.
|
||||||
|
// This doesn't make much sense.
|
||||||
$this->Customer = new Customer();
|
$this->Customer = new Customer();
|
||||||
$this->Renderview = new EmailRenderer();
|
$this->Renderview = new EmailRenderer();
|
||||||
$this->APITools = new ApplicationAPI();
|
$this->APITools = new ApplicationAPI();
|
||||||
$this->JsonHelper = new Json();
|
$this->JsonHelper = new Json();
|
||||||
|
$this->VirtualminHandler = new VirtualminHandler();
|
||||||
|
$this->PackageController = new PackageController();
|
||||||
|
|
||||||
// Create mailer when needed
|
// Create mailer when needed
|
||||||
|
|
||||||
|
@ -105,6 +114,8 @@ class Hookmanager
|
||||||
}
|
}
|
||||||
|
|
||||||
// The response and request method is passed by the redirecting method
|
// The response and request method is passed by the redirecting method
|
||||||
|
// KISS and DRY might not apply here
|
||||||
|
// This method choses what to do based on the request's "intent".
|
||||||
private function redirectAlert(Request $Request, Response $response, $intent)
|
private function redirectAlert(Request $Request, Response $response, $intent)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
@ -153,7 +164,7 @@ class Hookmanager
|
||||||
$this->JsonHelper->set
|
$this->JsonHelper->set
|
||||||
([
|
([
|
||||||
"status" => "fail",
|
"status" => "fail",
|
||||||
"message" => "Error: Invalid alert type (Or middleman attack in-progress)",
|
"message" => "Error: Invalid alert type!",
|
||||||
"code" => 500
|
"code" => 500
|
||||||
|
|
||||||
]);
|
]);
|
||||||
|
@ -171,19 +182,24 @@ class Hookmanager
|
||||||
// Return POST variable list in a structured array, DRY
|
// Return POST variable list in a structured array, DRY
|
||||||
private function getStructuredVariableList(Request $request)
|
private function getStructuredVariableList(Request $request)
|
||||||
{
|
{
|
||||||
$PDATA = $request->getParsedBody();
|
|
||||||
$dArr = $PDATA;
|
|
||||||
|
|
||||||
return $dArr;
|
return $request->getParsedBody();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// These methods below interact directly with the Virtualmin controller.
|
||||||
|
// args should also provide email and ip, not only plan
|
||||||
public function EventSubscriptionCreated(Request $request, Response $response, $args)
|
public function EventSubscriptionCreated(Request $request, Response $response, $args)
|
||||||
{
|
{
|
||||||
|
|
||||||
return $response->write($this->getStructuredVariableList($Request))->withStatus(200);
|
// Creates a subscription in the database.
|
||||||
|
// This method sends information directly to the virtualmin controller.
|
||||||
|
$combinedArguments = array_merge($this->PackageController->getDefaultOptionsArray(), $this->PackageController->selectPackage($args['package']));
|
||||||
|
$this->VirtualminHandler->CreateVirtualServer($domain, $password, $combinedArguments);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -226,5 +242,10 @@ class Hookmanager
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private function postProcessFor($domain, $password)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
|
@ -3,7 +3,7 @@
|
||||||
/*
|
/*
|
||||||
*
|
*
|
||||||
* This class is part of the Application core logic, since it handles customer packages.
|
* This class is part of the Application core logic, since it handles customer packages.
|
||||||
*
|
* TODO: Finish default packages
|
||||||
*/
|
*/
|
||||||
class Package extends Application
|
class Package extends Application
|
||||||
{
|
{
|
||||||
|
@ -19,14 +19,14 @@ class Package extends Application
|
||||||
const PACKAGE_UNLIMITED = "P_UNLIMITED";
|
const PACKAGE_UNLIMITED = "P_UNLIMITED";
|
||||||
|
|
||||||
|
|
||||||
|
// TODO: These values are subject to change, they should be pulled from config
|
||||||
private $allowedPackages =
|
private $allowedPackages =
|
||||||
[
|
[
|
||||||
"P_STARTER",
|
"P_STARTER" => 0,
|
||||||
"P_SMALLCOMPANY",
|
"P_SMALLCOMPANY" => 152017738012172,
|
||||||
"P_PROFESSIONAL",
|
"P_PROFESSIONAL" => 152017787812438,
|
||||||
"P_ENTERPRISE",
|
"P_ENTERPRISE" => 152017803412693,
|
||||||
"P_UNLIMITED"
|
"P_UNLIMITED" => 152017828912823
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
||||||
|
@ -45,7 +45,7 @@ class Package extends Application
|
||||||
return
|
return
|
||||||
[
|
[
|
||||||
|
|
||||||
"desc" => "Created by Spacejewel Billing System",
|
"desc" => "Automatically created by Spacejewel Billing System",
|
||||||
"dir",
|
"dir",
|
||||||
"unix",
|
"unix",
|
||||||
"webmin",
|
"webmin",
|
||||||
|
@ -55,10 +55,23 @@ class Package extends Application
|
||||||
"ssl",
|
"ssl",
|
||||||
"spam",
|
"spam",
|
||||||
"virus",
|
"virus",
|
||||||
"limits-from-plan"
|
"limits-from-plan" // apply limits from chosen plan.
|
||||||
|
|
||||||
];
|
];
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// return features for each $package in an array format
|
||||||
|
public function selectPackage($package)
|
||||||
|
{
|
||||||
|
if (array_key_exists($package, $this->allowedPackages))
|
||||||
|
{
|
||||||
|
return
|
||||||
|
[
|
||||||
|
"--plan" => $this->allowedPackages[$package]
|
||||||
|
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
|
@ -22,6 +22,7 @@ class VirtualminHandler
|
||||||
|
|
||||||
// Creates a domain with the specified password. The username will be the domain with the .tld removed.
|
// Creates a domain with the specified password. The username will be the domain with the .tld removed.
|
||||||
// The features array will be populated when the method is exposed with the correct package name provided.
|
// The features array will be populated when the method is exposed with the correct package name provided.
|
||||||
|
// Note: the features array contains the numerical ID of the chosen plan.
|
||||||
public function CreateVirtualServer($DomainName, $Password, Array $Features = [])
|
public function CreateVirtualServer($DomainName, $Password, Array $Features = [])
|
||||||
{
|
{
|
||||||
return $this->virtualmin->create($DomainName, $Password, $Features);
|
return $this->virtualmin->create($DomainName, $Password, $Features);
|
||||||
|
|
Loading…
Reference in New Issue