6 Commits

Author SHA1 Message Date
563ecefe71 update domain create
Signed-off-by: envoyr <hello@envoyr.com>
2024-12-08 13:42:13 +01:00
66778ea7c4 fix search query
Signed-off-by: envoyr <hello@envoyr.com>
2024-12-08 13:30:02 +01:00
d37c0ad55b change from names to ids
Signed-off-by: envoyr <hello@envoyr.com>
2024-12-08 12:17:51 +01:00
63d68d8921 Update Server.php 2023-02-14 20:28:58 +01:00
6f2b651a70 Update Server.php 2023-01-25 12:42:58 +01:00
a5f3d3d0fd Update Server.php 2023-01-25 12:39:15 +01:00
13 changed files with 83 additions and 76 deletions

View File

@@ -1,5 +1,8 @@
# PHP Froxlor API Client # PHP Froxlor API Client
> [!WARNING]
> We have changed the way we get the object. Now you have to use the `id` instead of the `name` to get, change or delete the object.
API Wrapper for Froxlor. API Wrapper for Froxlor.
## Installation ## Installation
@@ -43,8 +46,8 @@ $response = $froxlor
```php ```php
$response = $froxlor $response = $froxlor
->customer('example') ->customer(1)
->email('hello@example.com') ->email(1)
->attributes; ->attributes;
``` ```

View File

@@ -9,15 +9,15 @@ class Customer
public Domains $domains; public Domains $domains;
public Ftps $ftps; public Ftps $ftps;
public Emails $emails; public Emails $emails;
public string $loginname; public string $id;
public Server $server; public Server $server;
public function __construct(Server $server, string $loginname) public function __construct(Server $server, string $id)
{ {
$this->server = $server; $this->server = $server;
$this->loginname = $loginname; $this->id = $id;
$this->attributes = $this->server->request('Customers.get', [ $this->attributes = $this->server->request('Customers.get', [
'loginname' => $this->loginname 'id' => $this->id
]); ]);
$this->databases = $this->databases(); $this->databases = $this->databases();
@@ -46,30 +46,30 @@ class Customer
return new Emails($this); return new Emails($this);
} }
public function database(string $dbname): Database public function database(string $id): Database
{ {
return new Database($this, $dbname); return new Database($this, $id);
} }
public function domain(string $domainname): Domain public function domain(string $id): Domain
{ {
return new Domain($this, $domainname); return new Domain($this, $id);
} }
public function email(string $emailaddr): Email public function email(string $id): Email
{ {
return new Email($this, $emailaddr); return new Email($this, $id);
} }
public function ftp(string $username): Ftp public function ftp(string $id): Ftp
{ {
return new Ftp($this, $username); return new Ftp($this, $id);
} }
public function deactivated(bool $deactivated): array public function deactivated(bool $deactivated): array
{ {
return $this->server->request('Customers.update', [ return $this->server->request('Customers.update', [
'loginname' => $this->loginname, 'id' => $this->id,
'deactivated' => $deactivated 'deactivated' => $deactivated
]); ]);
} }
@@ -79,7 +79,7 @@ class Customer
return $this->server->request( return $this->server->request(
'Customers.update', 'Customers.update',
array_merge($attributes, [ array_merge($attributes, [
'loginname' => $this->loginname 'id' => $this->id
]) ])
); );
} }
@@ -87,7 +87,7 @@ class Customer
public function delete(): array public function delete(): array
{ {
return $this->server->request('Customers.delete', [ return $this->server->request('Customers.delete', [
'loginname' => $this->loginname 'id' => $this->id
]); ]);
} }
} }

View File

@@ -5,15 +5,15 @@ namespace Envoyr\Froxlor;
class Database class Database
{ {
public array $attributes; public array $attributes;
public string $dbname; public string $id;
public Customer $customer; public Customer $customer;
public function __construct(Customer $customer, string $dbname) public function __construct(Customer $customer, string $id)
{ {
$this->customer = $customer; $this->customer = $customer;
$this->dbname = $dbname; $this->id = $id;
$this->attributes = $this->customer->server->request('Mysqls.get', [ $this->attributes = $this->customer->server->request('Mysqls.get', [
'dbname' => $this->dbname 'id' => $this->id
]); ]);
} }
@@ -22,8 +22,8 @@ class Database
return $this->customer->server->request( return $this->customer->server->request(
'Mysqls.update', 'Mysqls.update',
array_merge($attributes, [ array_merge($attributes, [
'loginname' => $this->customer->loginname, 'customerid' => $this->customer->id,
'dbname' => $this->dbname, 'id' => $this->id,
]) ])
); );
} }
@@ -31,8 +31,8 @@ class Database
public function delete(): array public function delete(): array
{ {
return $this->customer->server->request('Mysqls.delete', [ return $this->customer->server->request('Mysqls.delete', [
'loginname' => $this->customer->loginname, 'customerid' => $this->customer->id,
'dbname' => $this->dbname 'id' => $this->id
]); ]);
} }
} }

View File

@@ -18,7 +18,7 @@ class Databases
string $suffix = null string $suffix = null
): array { ): array {
return $this->customer->server->request('Mysqls.add', [ return $this->customer->server->request('Mysqls.add', [
'loginname' => $this->customer->loginname, 'customerid' => $this->customer->id,
'mysql_password' => $password, 'mysql_password' => $password,
'description' => $description, 'description' => $description,
'sendinfomail' => $mail, 'sendinfomail' => $mail,
@@ -29,7 +29,7 @@ class Databases
public function list(): array public function list(): array
{ {
return $this->customer->server->request('Mysqls.listing', [ return $this->customer->server->request('Mysqls.listing', [
'loginname' => $this->customer->loginname, 'customerid' => $this->customer->id,
]); ]);
} }
} }

View File

@@ -6,14 +6,14 @@ class Domain
{ {
public array $attributes; public array $attributes;
public Customer $customer; public Customer $customer;
public string $domainname; public string $id;
public function __construct(Customer $customer, string $domainname) public function __construct(Customer $customer, string $id)
{ {
$this->domainname = $domainname; $this->id = $id;
$this->customer = $customer; $this->customer = $customer;
$this->attributes = $this->customer->server->request('Domains.get', [ $this->attributes = $this->customer->server->request('Domains.get', [
'domainname' => $this->domainname 'id' => $this->id
]); ]);
} }
@@ -22,7 +22,7 @@ class Domain
return $this->customer->server->request( return $this->customer->server->request(
'Domains.update', 'Domains.update',
array_merge($attributes, [ array_merge($attributes, [
'domainname' => $this->domainname, 'id' => $this->id,
]) ])
); );
} }
@@ -30,7 +30,7 @@ class Domain
public function delete(): array public function delete(): array
{ {
return $this->customer->server->request('Domains.delete', [ return $this->customer->server->request('Domains.delete', [
'domainname' => $this->domainname 'id' => $this->id
]); ]);
} }
} }

View File

@@ -11,14 +11,21 @@ class Domains
$this->customer = $customer; $this->customer = $customer;
} }
public function create(string $domain, bool $letsencrypt = false): array public function create(
string $domain,
bool $letsencrypt = false,
?string $description = null,
bool $isemaildomain = true,
bool $caneditdomain = true
): array
{ {
return $this->customer->server->request('Domains.add', [ return $this->customer->server->request('Domains.add', [
'loginname' => $this->customer->loginname, 'customerid' => $this->customer->id,
'domain' => $domain, 'domain' => $domain,
'letsencrypt' => $letsencrypt, 'letsencrypt' => $letsencrypt,
'isemaildomain' => true, 'isemaildomain' => $isemaildomain,
'caneditdomain' => true, 'caneditdomain' => $caneditdomain,
'description' => $description,
]); ]);
} }
@@ -26,9 +33,9 @@ class Domains
{ {
return $this->customer->server->request('Domains.listing', [ return $this->customer->server->request('Domains.listing', [
'sql_search' => [ 'sql_search' => [
'loginname' => [ 'c.customerid' => [
'op' => '=', 'op' => '=',
'value' => $this->customer->loginname, 'value' => $this->customer->id,
] ]
], ],
]); ]);

View File

@@ -6,15 +6,15 @@ class Email
{ {
public array $attributes; public array $attributes;
public EmailAccounts $email_accounts; public EmailAccounts $email_accounts;
public string $emailaddr; public string $id;
public Customer $customer; public Customer $customer;
public function __construct(Customer $customer, string $emailaddr) public function __construct(Customer $customer, string $id)
{ {
$this->customer = $customer; $this->customer = $customer;
$this->emailaddr = $emailaddr; $this->id = $id;
$this->attributes = $this->customer->server->request('Emails.get', [ $this->attributes = $this->customer->server->request('Emails.get', [
'emailaddr' => $this->emailaddr 'id' => $this->id
]); ]);
$this->email_accounts = $this->email_accounts(); $this->email_accounts = $this->email_accounts();
@@ -35,8 +35,8 @@ class Email
return $this->customer->server->request( return $this->customer->server->request(
'Emails.update', 'Emails.update',
array_merge($attributes, [ array_merge($attributes, [
'loginname' => $this->customer->loginname, 'customerid' => $this->customer->id,
'emailaddr' => $this->emailaddr, 'id' => $this->id,
]) ])
); );
} }
@@ -44,8 +44,8 @@ class Email
public function delete(): array public function delete(): array
{ {
return $this->customer->server->request('Emails.delete', [ return $this->customer->server->request('Emails.delete', [
'loginname' => $this->customer->loginname, 'customerid' => $this->customer->id,
'emailaddr' => $this->emailaddr 'id' => $this->id
]); ]);
} }
} }

View File

@@ -16,8 +16,8 @@ class EmailAccount
public function delete() public function delete()
{ {
$this->email->customer->server->request('EmailAccounts.delete', [ $this->email->customer->server->request('EmailAccounts.delete', [
'loginname' => $this->email->customer->loginname, 'customerid' => $this->email->customer->id,
'emailaddr' => $this->email->emailaddr, 'id' => $this->email->id,
]); ]);
} }
@@ -26,8 +26,8 @@ class EmailAccount
return $this->email->customer->server->request( return $this->email->customer->server->request(
'EmailAccounts.update', 'EmailAccounts.update',
array_merge($attributes, [ array_merge($attributes, [
'loginname' => $this->email->customer->loginname, 'customerid' => $this->email->customer->id,
'emailaddr' => $this->email->emailaddr, 'id' => $this->email->id,
]) ])
); );
} }

View File

@@ -14,8 +14,8 @@ class EmailAccounts
public function create(string $email_password, bool $sendinfomail = false): array public function create(string $email_password, bool $sendinfomail = false): array
{ {
return $this->email->customer->server->request('EmailAccounts.add', [ return $this->email->customer->server->request('EmailAccounts.add', [
'loginname' => $this->email->customer->loginname, 'customerid' => $this->email->customer->id,
'emailaddr' => $this->email->emailaddr, 'id' => $this->email->id,
'email_password' => $email_password, 'email_password' => $email_password,
'sendinfomail' => $sendinfomail, 'sendinfomail' => $sendinfomail,
]); ]);

View File

@@ -14,7 +14,7 @@ class Emails
public function create(string $email_part, string $domain, string $description = null): array public function create(string $email_part, string $domain, string $description = null): array
{ {
return $this->customer->server->request('Emails.add', [ return $this->customer->server->request('Emails.add', [
'loginname' => $this->customer->loginname, 'customerid' => $this->customer->id,
'email_part' => $email_part, 'email_part' => $email_part,
'domain' => $domain, 'domain' => $domain,
'description' => $description, 'description' => $description,
@@ -24,7 +24,7 @@ class Emails
public function list(): array public function list(): array
{ {
return $this->customer->server->request('Emails.listing', [ return $this->customer->server->request('Emails.listing', [
'loginname' => $this->customer->loginname, 'customerid' => $this->customer->id,
]); ]);
} }
} }

View File

@@ -5,16 +5,16 @@ namespace Envoyr\Froxlor;
class Ftp class Ftp
{ {
public array $attributes; public array $attributes;
public string $username; public string $id;
public Customer $customer; public Customer $customer;
public function __construct(Customer $customer, string $username) public function __construct(Customer $customer, string $id)
{ {
$this->customer = $customer; $this->customer = $customer;
$this->username = $username; $this->id = $id;
$this->attributes = $this->customer->server->request('Ftps.get', [ $this->attributes = $this->customer->server->request('Ftps.get', [
'loginname' => $this->customer->loginname, 'customerid' => $this->customer->id,
'username' => $this->username 'id' => $this->id
]); ]);
} }
@@ -23,8 +23,8 @@ class Ftp
return $this->customer->server->request( return $this->customer->server->request(
'Ftps.update', 'Ftps.update',
array_merge($attributes, [ array_merge($attributes, [
'loginname' => $this->customer->loginname, 'customerid' => $this->customer->id,
'username' => $this->username, 'id' => $this->id,
]) ])
); );
} }
@@ -32,8 +32,8 @@ class Ftp
public function delete(): array public function delete(): array
{ {
return $this->customer->server->request('Ftps.delete', [ return $this->customer->server->request('Ftps.delete', [
'loginname' => $this->customer->loginname, 'customerid' => $this->customer->id,
'username' => $this->username 'id' => $this->id
]); ]);
} }
} }

View File

@@ -14,7 +14,7 @@ class Ftps
public function create(string $password, string $path = '/', string $description = null, bool $mail = false): array public function create(string $password, string $path = '/', string $description = null, bool $mail = false): array
{ {
return $this->customer->server->request('Ftps.add', [ return $this->customer->server->request('Ftps.add', [
'loginname' => $this->customer->loginname, 'customerid' => $this->customer->id,
'ftp_password' => $password, 'ftp_password' => $password,
'path' => $path, 'path' => $path,
'ftp_description' => $description, 'ftp_description' => $description,
@@ -25,7 +25,7 @@ class Ftps
public function list(): array public function list(): array
{ {
return $this->customer->server->request('Ftps.listing', [ return $this->customer->server->request('Ftps.listing', [
'loginname' => $this->customer->loginname, 'customerid' => $this->customer->id,
]); ]);
} }
} }

View File

@@ -36,18 +36,15 @@ class Server
} }
$payload = [ $payload = [
'header' => [ 'command' => $command,
'apikey' => $this->apiKey, 'params' => $attributes
'secret' => $this->apiSecret,
],
'body' => [
'command' => $command,
'params' => $attributes
]
]; ];
$token = base64_encode(sprintf('%s:%s', $this->apiKey, $this->apiSecret));
$response = $this->client->post("api.php", [ $response = $this->client->post("api.php", [
'headers' => [ 'headers' => [
'Authorization' => 'Basic ' . $token,
'Content-Type' => 'application/json', 'Content-Type' => 'application/json',
], ],
'body' => json_encode($payload) 'body' => json_encode($payload)
@@ -58,8 +55,8 @@ class Server
return $payload['data']; return $payload['data'];
} }
public function customer(string $loginname): Customer public function customer(string $id): Customer
{ {
return new Customer($this, $loginname); return new Customer($this, $id);
} }
} }