Skip to content

Commit 35fff90

Browse files
author
Mubashar Ahmad
committed
no message
1 parent dbca95a commit 35fff90

File tree

1 file changed

+69
-16
lines changed

1 file changed

+69
-16
lines changed

src/Cpanel.php

Lines changed: 69 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -184,7 +184,7 @@ public function createSubdomain($subdomain, $username = '', $subdomain_dir = '',
184184
$result = $this->api2_query($username, 'SubDomain', 'addsubdomain', array(
185185
'domain' => $subdomain,
186186
'rootdomain' => $domain,
187-
'dir' => '/public_html/' . $subdomain_dir,
187+
'dir' => $subdomain_dir,
188188
'disallowdot' => 1
189189
)
190190
);
@@ -238,10 +238,12 @@ public function createdb(string $db_name)
238238
return array('reason' => $msg, 'result' => 0);
239239
}
240240

241-
$name_length = 54 - strlen($this->username);
241+
$name_length = 63;
242+
if (!$this->hasUsernamePrefixed($db_name)) {
243+
$name_length = $name_length - (strlen($this->username) + 1);
244+
}
242245

243-
$db_name = str_replace($this->username . '_', '', $this->slug($db_name, '_'));
244-
$database_name = $this->username . "_" . $db_name;
246+
$database_name = $this->fixName($db_name);
245247

246248
if (strlen($db_name) > $name_length || strlen($db_name) < 4) {
247249
return array('reason' => 'Database name should be greater than 4 and less than ' . $name_length . ' characters.', 'result' => 0);
@@ -252,6 +254,20 @@ public function createdb(string $db_name)
252254
return $this->returnResult($result);
253255
}
254256

257+
public function deletedb($db_name)
258+
{
259+
if (!isset($db_name) || empty($db_name)) {
260+
$msg = "database name is required.";
261+
return array('reason' => $msg, 'result' => 0);
262+
}
263+
264+
$db_name = $this->fixName($db_name);
265+
266+
$result = $this->api2_query($this->username, "MysqlFE", "deletedb", array('db' => $db_name));
267+
268+
return $this->returnResult($result);
269+
}
270+
255271
/**
256272
* @param string $db_user
257273
* @return array|mixed
@@ -264,7 +280,7 @@ public function checkdbuser(string $db_user)
264280
return array('reason' => $msg, 'result' => 0);
265281
}
266282

267-
$dbuser = $this->username . '_' . ($db_user ? str_replace($this->username . '_', '', $db_user) : "myadmin");
283+
$dbuser = $this->fixName(($db_user ?: 'myadmin'));
268284

269285
$user = $this->api2_query($this->username, "MysqlFE", "dbuserexists", array('dbuser' => $dbuser));
270286

@@ -289,12 +305,15 @@ public function createdbuser($db_user, $db_pass)
289305
return array('reason' => 'Please sent database username and password.', 'result' => '0');
290306
}
291307

292-
$user_length = 16 - strlen($this->username);
293-
$db_user = str_replace($this->username . '_', '', $this->slug($db_user, '_'));
294-
$dbuser = $this->username . "_" . $db_user;
308+
$name_length = 32;
309+
if (!$this->hasUsernamePrefixed($db_user)) {
310+
$name_length = $name_length - (strlen($this->username) + 1);
311+
}
312+
313+
$dbuser = $this->fixName($db_user);
295314

296-
if (strlen($db_user) > $user_length || strlen($db_user) < 4) {
297-
return array('reason' => 'Database username should be greater than 4 and less than ' . $user_length . ' characters.', 'result' => 0);
315+
if (strlen($db_user) > $name_length || strlen($db_user) < 4) {
316+
return array('reason' => 'Database username should be greater than 4 and less than ' . $name_length . ' characters.', 'result' => 0);
298317
}
299318

300319
$validate = $this->checkPassword($db_pass);
@@ -325,7 +344,7 @@ public function createdbuser($db_user, $db_pass)
325344
* @param string $privileges
326345
* @return array|mixed
327346
*/
328-
protected function setdbuser(string $db_name, string $db_user, string $privileges = '')
347+
public function setdbuser(string $db_name, string $db_user, string $privileges = '')
329348
{
330349

331350
if (!isset($db_name) || !isset($db_user)) {
@@ -334,8 +353,8 @@ protected function setdbuser(string $db_name, string $db_user, string $privilege
334353
return array('reason' => $msg, 'result' => 0);
335354
}
336355

337-
$dbname = $this->username . "_" . str_replace($this->username . '_', '', $db_name);
338-
$dbuser = $this->username . '_' . ($db_user ? str_replace($this->username . '_', '', $db_user) : "myadmin"); //be careful this can only have a maximum of 7 characters
356+
$dbname = $this->fixName($db_name);
357+
$dbuser = $this->fixName($db_user);
339358

340359
if (is_array($privileges)) {
341360
$privileges = implode(',', $privileges);
@@ -369,6 +388,19 @@ public function accountDetials(string $username = '')
369388
return $this->accountsummary($username);
370389
}
371390

391+
public function createEmailAccount($email, $password, $quota = 500, $main_domain = '')
392+
{
393+
$result = $this->api2_query($this->username, 'Email', 'addpop', [
394+
'domain' => $main_domain,
395+
'email' => $email,
396+
'password' => $password,
397+
'quota' => $quota
398+
]
399+
);
400+
401+
return $this->returnResult($result);
402+
}
403+
372404
/**
373405
* @param $result
374406
* @return array|mixed
@@ -393,8 +425,8 @@ protected function returnResult($result)
393425
if (isset($result['data'])) {
394426
$data = $result['data'];
395427
if (is_array($data)) {
396-
$reason = (string)$data['reason'];
397-
$status = (string)$data['result'];
428+
$reason = (string)(is_array($data['reason']) ? implode(', ', $data['reason']) : $data['reason']);
429+
$result = (string)(is_array($data['result']) ? array_shift($data['result']) : $data['result']);
398430

399431
if (mb_strpos($reason, ')') !== false) {
400432
$reason = ltrim(strstr($reason, ')'), ') ');
@@ -404,7 +436,7 @@ protected function returnResult($result)
404436
$reason = trim(strstr($reason, ' at ', true));
405437
}
406438

407-
return array('reason' => $reason, 'result' => (int)$status);
439+
return array('reason' => $reason, 'result' => (int)$result);
408440
} else {
409441
if (isset($result['func'])) {
410442
$function = $result['func'];
@@ -482,4 +514,25 @@ protected function checkPassword($pwd)
482514

483515
return '';
484516
}
517+
518+
519+
/**
520+
* @param $name
521+
* @return bool
522+
*/
523+
protected function hasUsernamePrefixed($name): bool
524+
{
525+
if (substr(strtolower($name), 0, strlen($this->username)) == strtolower($this->username)) {
526+
return true;
527+
}
528+
return false;
529+
}
530+
531+
protected function fixName($name)
532+
{
533+
if (!$this->hasUsernamePrefixed($name)) {
534+
$name = $this->username . "_" . $name;
535+
}
536+
return $name;
537+
}
485538
}

0 commit comments

Comments
 (0)