Page MenuHomePhorge

D4665.1775577334.diff
No OneTemporary

Authored By
Unknown
Size
18 KB
Referenced Files
None
Subscribers
None

D4665.1775577334.diff

diff --git a/src/config/app.php b/src/config/app.php
--- a/src/config/app.php
+++ b/src/config/app.php
@@ -85,10 +85,20 @@
'website_domain' => env('APP_WEBSITE_DOMAIN', env('APP_DOMAIN', 'domain.tld')),
- 'services_domain' => env(
- 'APP_SERVICES_DOMAIN',
- "services." . env('APP_WEBSITE_DOMAIN', env('APP_DOMAIN', 'domain.tld'))
- ),
+ 'services_domains' => explode(',', env(
+ 'APP_SERVICES_DOMAINS',
+ env('APP_SERVICES_DOMAIN', "services." . env('APP_WEBSITE_DOMAIN', env('APP_DOMAIN', 'domain.tld'))),
+ )),
+
+ 'admin_domains' => explode(',', env(
+ 'APP_ADMIN_DOMAINS',
+ "admin." . env('APP_WEBSITE_DOMAIN', env('APP_DOMAIN', 'domain.tld')),
+ )),
+
+ 'reseller_domains' => explode(',', env(
+ 'APP_RESELLER_DOMAINS',
+ "reseller." . env('APP_WEBSITE_DOMAIN', env('APP_DOMAIN', 'domain.tld')),
+ )),
/*
|--------------------------------------------------------------------------
diff --git a/src/routes/api.php b/src/routes/api.php
--- a/src/routes/api.php
+++ b/src/routes/api.php
@@ -1,7 +1,6 @@
<?php
use App\Http\Controllers\API;
-use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
/*
@@ -15,6 +14,140 @@
|
*/
+if (\config('app.with_services')) {
+ foreach (\config('app.services_domains') as $servicesDomain) {
+ Route::group(
+ [
+ 'domain' => $servicesDomain,
+ 'prefix' => 'webhooks'
+ ],
+ function () {
+ Route::get('nginx', [API\V4\NGINXController::class, 'authenticate']);
+ Route::get('nginx-roundcube', [API\V4\NGINXController::class, 'authenticateRoundcube']);
+ Route::get('nginx-httpauth', [API\V4\NGINXController::class, 'httpauth']);
+ Route::post('cyrus-sasl', [API\V4\NGINXController::class, 'cyrussasl']);
+ Route::post('policy/greylist', [API\V4\PolicyController::class, 'greylist']);
+ Route::post('policy/ratelimit', [API\V4\PolicyController::class, 'ratelimit']);
+ Route::post('policy/spf', [API\V4\PolicyController::class, 'senderPolicyFramework']);
+ Route::get('health/status', [API\V4\HealthController::class, 'status']);
+ Route::get('metrics', [API\V4\MetricsController::class, 'metrics']);
+ }
+ );
+ }
+}
+
+if (\config('app.with_admin')) {
+ foreach (\config('app.admin_domains') as $adminDomain) {
+ Route::group(
+ [
+ 'domain' => $adminDomain,
+ 'middleware' => ['auth:api', 'admin'],
+ 'prefix' => 'v4',
+ ],
+ function () {
+ Route::apiResource('domains', API\V4\Admin\DomainsController::class);
+ Route::get('domains/{id}/skus', [API\V4\Admin\DomainsController::class, 'skus']);
+ Route::post('domains/{id}/suspend', [API\V4\Admin\DomainsController::class, 'suspend']);
+ Route::post('domains/{id}/unsuspend', [API\V4\Admin\DomainsController::class, 'unsuspend']);
+
+ Route::get('eventlog/{type}/{id}', [API\V4\Admin\EventLogController::class, 'index']);
+
+ Route::apiResource('groups', API\V4\Admin\GroupsController::class);
+ Route::post('groups/{id}/suspend', [API\V4\Admin\GroupsController::class, 'suspend']);
+ Route::post('groups/{id}/unsuspend', [API\V4\Admin\GroupsController::class, 'unsuspend']);
+
+ Route::apiResource('resources', API\V4\Admin\ResourcesController::class);
+ Route::apiResource('shared-folders', API\V4\Admin\SharedFoldersController::class);
+ Route::apiResource('skus', API\V4\Admin\SkusController::class);
+
+ Route::apiResource('users', API\V4\Admin\UsersController::class);
+ Route::get('users/{id}/discounts', [API\V4\Admin\DiscountsController::class, 'userDiscounts']);
+ Route::post('users/{id}/reset2FA', [API\V4\Admin\UsersController::class, 'reset2FA']);
+ Route::post('users/{id}/resetGeoLock', [API\V4\Admin\UsersController::class, 'resetGeoLock']);
+ Route::post('users/{id}/resync', [API\V4\Admin\UsersController::class, 'resync']);
+ Route::get('users/{id}/skus', [API\V4\Admin\UsersController::class, 'skus']);
+ Route::post('users/{id}/skus/{sku}', [API\V4\Admin\UsersController::class, 'setSku']);
+ Route::post('users/{id}/suspend', [API\V4\Admin\UsersController::class, 'suspend']);
+ Route::post('users/{id}/unsuspend', [API\V4\Admin\UsersController::class, 'unsuspend']);
+
+ Route::apiResource('wallets', API\V4\Admin\WalletsController::class);
+ Route::post('wallets/{id}/one-off', [API\V4\Admin\WalletsController::class, 'oneOff']);
+ Route::get('wallets/{id}/transactions', [API\V4\Admin\WalletsController::class, 'transactions']);
+
+ Route::get('stats/chart/{chart}', [API\V4\Admin\StatsController::class, 'chart']);
+ }
+ );
+
+ Route::group(
+ [
+ 'domain' => $adminDomain,
+ 'prefix' => 'v4',
+ ],
+ function () {
+ Route::get('inspect-request', [API\V4\Admin\UsersController::class, 'inspectRequest']);
+ }
+ );
+ }
+}
+
+if (\config('app.with_reseller')) {
+ foreach (\config('app.reseller_domains') as $resellerDomain) {
+ Route::group(
+ [
+ 'domain' => $resellerDomain,
+ 'middleware' => ['auth:api', 'reseller'],
+ 'prefix' => 'v4',
+ ],
+ function () {
+ Route::apiResource('domains', API\V4\Reseller\DomainsController::class);
+ Route::get('domains/{id}/skus', [API\V4\Reseller\DomainsController::class, 'skus']);
+ Route::post('domains/{id}/suspend', [API\V4\Reseller\DomainsController::class, 'suspend']);
+ Route::post('domains/{id}/unsuspend', [API\V4\Reseller\DomainsController::class, 'unsuspend']);
+
+ Route::get('eventlog/{type}/{id}', [API\V4\Reseller\EventLogController::class, 'index']);
+
+ Route::apiResource('groups', API\V4\Reseller\GroupsController::class);
+ Route::post('groups/{id}/suspend', [API\V4\Reseller\GroupsController::class, 'suspend']);
+ Route::post('groups/{id}/unsuspend', [API\V4\Reseller\GroupsController::class, 'unsuspend']);
+
+ Route::apiResource('invitations', API\V4\Reseller\InvitationsController::class);
+ Route::post('invitations/{id}/resend', [API\V4\Reseller\InvitationsController::class, 'resend']);
+
+ Route::post('payments', [API\V4\Reseller\PaymentsController::class, 'store']);
+ Route::get('payments/mandate', [API\V4\Reseller\PaymentsController::class, 'mandate']);
+ Route::post('payments/mandate', [API\V4\Reseller\PaymentsController::class, 'mandateCreate']);
+ Route::put('payments/mandate', [API\V4\Reseller\PaymentsController::class, 'mandateUpdate']);
+ Route::delete('payments/mandate', [API\V4\Reseller\PaymentsController::class, 'mandateDelete']);
+ Route::get('payments/methods', [API\V4\Reseller\PaymentsController::class, 'paymentMethods']);
+ Route::get('payments/pending', [API\V4\Reseller\PaymentsController::class, 'payments']);
+ Route::get('payments/has-pending', [API\V4\Reseller\PaymentsController::class, 'hasPayments']);
+
+ Route::apiResource('resources', API\V4\Reseller\ResourcesController::class);
+ Route::apiResource('shared-folders', API\V4\Reseller\SharedFoldersController::class);
+ Route::apiResource('skus', API\V4\Reseller\SkusController::class);
+
+ Route::apiResource('users', API\V4\Reseller\UsersController::class);
+ Route::get('users/{id}/discounts', [API\V4\Reseller\DiscountsController::class, 'userDiscounts']);
+ Route::post('users/{id}/reset2FA', [API\V4\Reseller\UsersController::class, 'reset2FA']);
+ Route::post('users/{id}/resetGeoLock', [API\V4\Reseller\UsersController::class, 'resetGeoLock']);
+ Route::post('users/{id}/resync', [API\V4\Reseller\UsersController::class, 'resync']);
+ Route::get('users/{id}/skus', [API\V4\Reseller\UsersController::class, 'skus']);
+ Route::post('users/{id}/skus/{sku}', [API\V4\Reseller\UsersController::class, 'setSku']);
+ Route::post('users/{id}/suspend', [API\V4\Reseller\UsersController::class, 'suspend']);
+ Route::post('users/{id}/unsuspend', [API\V4\Reseller\UsersController::class, 'unsuspend']);
+
+ Route::apiResource('wallets', API\V4\Reseller\WalletsController::class);
+ Route::post('wallets/{id}/one-off', [API\V4\Reseller\WalletsController::class, 'oneOff']);
+ Route::get('wallets/{id}/receipts', [API\V4\Reseller\WalletsController::class, 'receipts']);
+ Route::get('wallets/{id}/receipts/{receipt}', [API\V4\Reseller\WalletsController::class, 'receiptDownload']);
+ Route::get('wallets/{id}/transactions', [API\V4\Reseller\WalletsController::class, 'transactions']);
+
+ Route::get('stats/chart/{chart}', [API\V4\Reseller\StatsController::class, 'chart']);
+ }
+ );
+ }
+}
+
Route::group(
[
'middleware' => 'api',
@@ -38,7 +171,6 @@
Route::group(
[
- 'domain' => \config('app.website_domain'),
'middleware' => 'api',
'prefix' => 'auth'
],
@@ -54,7 +186,6 @@
if (\config('app.with_signup')) {
Route::group(
[
- 'domain' => \config('app.website_domain'),
'middleware' => 'api',
'prefix' => 'auth'
],
@@ -72,7 +203,6 @@
Route::group(
[
- 'domain' => \config('app.website_domain'),
'middleware' => ['auth:api', 'scope:mfa,api'],
'prefix' => 'v4'
],
@@ -89,7 +219,6 @@
if (\config('app.with_files')) {
Route::group(
[
- 'domain' => \config('app.website_domain'),
'middleware' => ['auth:api', 'scope:fs,api'],
'prefix' => 'v4'
],
@@ -103,7 +232,6 @@
);
Route::group(
[
- 'domain' => \config('app.website_domain'),
'middleware' => [],
'prefix' => 'v4'
],
@@ -117,7 +245,6 @@
Route::group(
[
- 'domain' => \config('app.website_domain'),
'middleware' => ['auth:api', 'scope:api'],
'prefix' => 'v4'
],
@@ -195,7 +322,6 @@
Route::group(
[
- 'domain' => \config('app.website_domain'),
'prefix' => 'webhooks'
],
function () {
@@ -203,131 +329,3 @@
Route::post('meet', [API\V4\MeetController::class, 'webhook']);
}
);
-
-if (\config('app.with_services')) {
- Route::group(
- [
- 'domain' => \config('app.services_domain'),
- 'prefix' => 'webhooks'
- ],
- function () {
- Route::get('nginx', [API\V4\NGINXController::class, 'authenticate']);
- Route::get('nginx-roundcube', [API\V4\NGINXController::class, 'authenticateRoundcube']);
- Route::get('nginx-httpauth', [API\V4\NGINXController::class, 'httpauth']);
- Route::post('cyrus-sasl', [API\V4\NGINXController::class, 'cyrussasl']);
- Route::post('policy/greylist', [API\V4\PolicyController::class, 'greylist']);
- Route::post('policy/ratelimit', [API\V4\PolicyController::class, 'ratelimit']);
- Route::post('policy/spf', [API\V4\PolicyController::class, 'senderPolicyFramework']);
- Route::get('health/status', [API\V4\HealthController::class, 'status']);
- Route::get('metrics', [API\V4\MetricsController::class, 'metrics']);
- }
- );
-}
-
-if (\config('app.with_admin')) {
- Route::group(
- [
- 'domain' => 'admin.' . \config('app.website_domain'),
- 'middleware' => ['auth:api', 'admin'],
- 'prefix' => 'v4',
- ],
- function () {
- Route::apiResource('domains', API\V4\Admin\DomainsController::class);
- Route::get('domains/{id}/skus', [API\V4\Admin\DomainsController::class, 'skus']);
- Route::post('domains/{id}/suspend', [API\V4\Admin\DomainsController::class, 'suspend']);
- Route::post('domains/{id}/unsuspend', [API\V4\Admin\DomainsController::class, 'unsuspend']);
-
- Route::get('eventlog/{type}/{id}', [API\V4\Admin\EventLogController::class, 'index']);
-
- Route::apiResource('groups', API\V4\Admin\GroupsController::class);
- Route::post('groups/{id}/suspend', [API\V4\Admin\GroupsController::class, 'suspend']);
- Route::post('groups/{id}/unsuspend', [API\V4\Admin\GroupsController::class, 'unsuspend']);
-
- Route::apiResource('resources', API\V4\Admin\ResourcesController::class);
- Route::apiResource('shared-folders', API\V4\Admin\SharedFoldersController::class);
- Route::apiResource('skus', API\V4\Admin\SkusController::class);
-
- Route::apiResource('users', API\V4\Admin\UsersController::class);
- Route::get('users/{id}/discounts', [API\V4\Admin\DiscountsController::class, 'userDiscounts']);
- Route::post('users/{id}/reset2FA', [API\V4\Admin\UsersController::class, 'reset2FA']);
- Route::post('users/{id}/resetGeoLock', [API\V4\Admin\UsersController::class, 'resetGeoLock']);
- Route::post('users/{id}/resync', [API\V4\Admin\UsersController::class, 'resync']);
- Route::get('users/{id}/skus', [API\V4\Admin\UsersController::class, 'skus']);
- Route::post('users/{id}/skus/{sku}', [API\V4\Admin\UsersController::class, 'setSku']);
- Route::post('users/{id}/suspend', [API\V4\Admin\UsersController::class, 'suspend']);
- Route::post('users/{id}/unsuspend', [API\V4\Admin\UsersController::class, 'unsuspend']);
-
- Route::apiResource('wallets', API\V4\Admin\WalletsController::class);
- Route::post('wallets/{id}/one-off', [API\V4\Admin\WalletsController::class, 'oneOff']);
- Route::get('wallets/{id}/transactions', [API\V4\Admin\WalletsController::class, 'transactions']);
-
- Route::get('stats/chart/{chart}', [API\V4\Admin\StatsController::class, 'chart']);
- }
- );
-
- Route::group(
- [
- 'domain' => 'admin.' . \config('app.website_domain'),
- 'prefix' => 'v4',
- ],
- function () {
- Route::get('inspect-request', [API\V4\Admin\UsersController::class, 'inspectRequest']);
- }
- );
-}
-
-if (\config('app.with_reseller')) {
- Route::group(
- [
- 'domain' => 'reseller.' . \config('app.website_domain'),
- 'middleware' => ['auth:api', 'reseller'],
- 'prefix' => 'v4',
- ],
- function () {
- Route::apiResource('domains', API\V4\Reseller\DomainsController::class);
- Route::get('domains/{id}/skus', [API\V4\Reseller\DomainsController::class, 'skus']);
- Route::post('domains/{id}/suspend', [API\V4\Reseller\DomainsController::class, 'suspend']);
- Route::post('domains/{id}/unsuspend', [API\V4\Reseller\DomainsController::class, 'unsuspend']);
-
- Route::get('eventlog/{type}/{id}', [API\V4\Reseller\EventLogController::class, 'index']);
-
- Route::apiResource('groups', API\V4\Reseller\GroupsController::class);
- Route::post('groups/{id}/suspend', [API\V4\Reseller\GroupsController::class, 'suspend']);
- Route::post('groups/{id}/unsuspend', [API\V4\Reseller\GroupsController::class, 'unsuspend']);
-
- Route::apiResource('invitations', API\V4\Reseller\InvitationsController::class);
- Route::post('invitations/{id}/resend', [API\V4\Reseller\InvitationsController::class, 'resend']);
-
- Route::post('payments', [API\V4\Reseller\PaymentsController::class, 'store']);
- Route::get('payments/mandate', [API\V4\Reseller\PaymentsController::class, 'mandate']);
- Route::post('payments/mandate', [API\V4\Reseller\PaymentsController::class, 'mandateCreate']);
- Route::put('payments/mandate', [API\V4\Reseller\PaymentsController::class, 'mandateUpdate']);
- Route::delete('payments/mandate', [API\V4\Reseller\PaymentsController::class, 'mandateDelete']);
- Route::get('payments/methods', [API\V4\Reseller\PaymentsController::class, 'paymentMethods']);
- Route::get('payments/pending', [API\V4\Reseller\PaymentsController::class, 'payments']);
- Route::get('payments/has-pending', [API\V4\Reseller\PaymentsController::class, 'hasPayments']);
-
- Route::apiResource('resources', API\V4\Reseller\ResourcesController::class);
- Route::apiResource('shared-folders', API\V4\Reseller\SharedFoldersController::class);
- Route::apiResource('skus', API\V4\Reseller\SkusController::class);
-
- Route::apiResource('users', API\V4\Reseller\UsersController::class);
- Route::get('users/{id}/discounts', [API\V4\Reseller\DiscountsController::class, 'userDiscounts']);
- Route::post('users/{id}/reset2FA', [API\V4\Reseller\UsersController::class, 'reset2FA']);
- Route::post('users/{id}/resetGeoLock', [API\V4\Reseller\UsersController::class, 'resetGeoLock']);
- Route::post('users/{id}/resync', [API\V4\Reseller\UsersController::class, 'resync']);
- Route::get('users/{id}/skus', [API\V4\Reseller\UsersController::class, 'skus']);
- Route::post('users/{id}/skus/{sku}', [API\V4\Reseller\UsersController::class, 'setSku']);
- Route::post('users/{id}/suspend', [API\V4\Reseller\UsersController::class, 'suspend']);
- Route::post('users/{id}/unsuspend', [API\V4\Reseller\UsersController::class, 'unsuspend']);
-
- Route::apiResource('wallets', API\V4\Reseller\WalletsController::class);
- Route::post('wallets/{id}/one-off', [API\V4\Reseller\WalletsController::class, 'oneOff']);
- Route::get('wallets/{id}/receipts', [API\V4\Reseller\WalletsController::class, 'receipts']);
- Route::get('wallets/{id}/receipts/{receipt}', [API\V4\Reseller\WalletsController::class, 'receiptDownload']);
- Route::get('wallets/{id}/transactions', [API\V4\Reseller\WalletsController::class, 'transactions']);
-
- Route::get('stats/chart/{chart}', [API\V4\Reseller\StatsController::class, 'chart']);
- }
- );
-}

File Metadata

Mime Type
text/plain
Expires
Tue, Apr 7, 3:55 PM (15 h, 14 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
18842054
Default Alt Text
D4665.1775577334.diff (18 KB)

Event Timeline