mirror of
https://github.com/fosrl/pangolin.git
synced 2026-07-05 03:46:04 +00:00
Compare commits
30 Commits
dependabot
...
crowdin_de
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3db28e5140 | ||
|
|
2e95257e09 | ||
|
|
dcd6d6486d | ||
|
|
df145ac14c | ||
|
|
00de9ed49f | ||
|
|
3b6ce77972 | ||
|
|
5589e4da1d | ||
|
|
b662a4c06f | ||
|
|
b4d0354740 | ||
|
|
949a0221d8 | ||
|
|
c4b56b2b29 | ||
|
|
da7676de14 | ||
|
|
d2e7438692 | ||
|
|
b0f196b4ec | ||
|
|
ef9d15fded | ||
|
|
04a4a1899d | ||
|
|
f9c3d0647d | ||
|
|
6bac384b19 | ||
|
|
bf4426f1f9 | ||
|
|
7bf419d058 | ||
|
|
e85ebe717c | ||
|
|
2ec527f5d7 | ||
|
|
d334e6c3a5 | ||
|
|
755281abc3 | ||
|
|
7b05ad6b1d | ||
|
|
edbd1a743e | ||
|
|
fa5397095d | ||
|
|
3f914c4eab | ||
|
|
18b1460615 | ||
|
|
267ee63a60 |
@@ -864,8 +864,8 @@
|
||||
"policyAuthHeaderAuthTitle": "Базово удостоверяване чрез заглавие",
|
||||
"policyAuthHeaderAuthDescription": "Валидирайте собствено HTTP заглавие и стойност при всяка заявка",
|
||||
"policyAuthHeaderAuthSummary": "Конфигурирано заглавие",
|
||||
"policyAuthHeaderName": "Име на заглавието",
|
||||
"policyAuthHeaderValue": "Очаквана стойност",
|
||||
"policyAuthHeaderName": "Username",
|
||||
"policyAuthHeaderValue": "Password",
|
||||
"policyAuthSetPasscode": "Задайте парола",
|
||||
"policyAuthSetPincode": "Задайте ПИН код",
|
||||
"policyAuthSetEmailWhitelist": "Задайте списък с имейли",
|
||||
@@ -1915,6 +1915,9 @@
|
||||
"billingDomains": "Домейни",
|
||||
"billingOrganizations": "Организации",
|
||||
"billingRemoteExitNodes": "Дистанционни възли",
|
||||
"billingPublicResources": "Public Resources",
|
||||
"billingPrivateResources": "Private Resources",
|
||||
"billingMachineClients": "Machine Clients",
|
||||
"billingNoLimitConfigured": "Няма конфигуриран лимит",
|
||||
"billingEstimatedPeriod": "Очакван период на фактуриране",
|
||||
"billingIncludedUsage": "Включено използване",
|
||||
@@ -1943,6 +1946,9 @@
|
||||
"billingUsersInfo": "Колко потребители можете да използвате",
|
||||
"billingDomainInfo": "Колко домейни можете да използвате",
|
||||
"billingRemoteExitNodesInfo": "Колко дистанционни възли можете да използвате",
|
||||
"billingPublicResourcesInfo": "How many public resources you can use",
|
||||
"billingPrivateResourcesInfo": "How many private resources you can use",
|
||||
"billingMachineClientsInfo": "How many machine clients you can use",
|
||||
"billingLicenseKeys": "Лицензионни ключове",
|
||||
"billingLicenseKeysDescription": "Управлявайте вашите абонаменти за лицензионни ключове",
|
||||
"billingLicenseSubscription": "Абонамент за лиценз",
|
||||
|
||||
@@ -864,8 +864,8 @@
|
||||
"policyAuthHeaderAuthTitle": "Základní Ověření Záhlaví",
|
||||
"policyAuthHeaderAuthDescription": "Ověřit vlastní HTTP hlavičku názvu a hodnoty při každém požadavku",
|
||||
"policyAuthHeaderAuthSummary": "Nastaveno hlavička",
|
||||
"policyAuthHeaderName": "Název hlavičky",
|
||||
"policyAuthHeaderValue": "Očekávaná hodnota",
|
||||
"policyAuthHeaderName": "Username",
|
||||
"policyAuthHeaderValue": "Password",
|
||||
"policyAuthSetPasscode": "Nastavit přístupový kód",
|
||||
"policyAuthSetPincode": "Nastavit PIN kód",
|
||||
"policyAuthSetEmailWhitelist": "Nastavit e-mailový whitelist",
|
||||
@@ -1915,6 +1915,9 @@
|
||||
"billingDomains": "Domény",
|
||||
"billingOrganizations": "Tělo",
|
||||
"billingRemoteExitNodes": "Vzdálené uzly",
|
||||
"billingPublicResources": "Public Resources",
|
||||
"billingPrivateResources": "Private Resources",
|
||||
"billingMachineClients": "Machine Clients",
|
||||
"billingNoLimitConfigured": "Žádný limit nenastaven",
|
||||
"billingEstimatedPeriod": "Odhadované období fakturace",
|
||||
"billingIncludedUsage": "Zahrnuto využití",
|
||||
@@ -1943,6 +1946,9 @@
|
||||
"billingUsersInfo": "Kolik uživatelů můžete použít",
|
||||
"billingDomainInfo": "Kolik domén můžete použít",
|
||||
"billingRemoteExitNodesInfo": "Kolik vzdálených uzlů můžete použít",
|
||||
"billingPublicResourcesInfo": "How many public resources you can use",
|
||||
"billingPrivateResourcesInfo": "How many private resources you can use",
|
||||
"billingMachineClientsInfo": "How many machine clients you can use",
|
||||
"billingLicenseKeys": "Licenční klíče",
|
||||
"billingLicenseKeysDescription": "Spravovat předplatné licenčního klíče",
|
||||
"billingLicenseSubscription": "Předplatné licence",
|
||||
|
||||
@@ -864,8 +864,8 @@
|
||||
"policyAuthHeaderAuthTitle": "Grunnleggende Header Autentificering",
|
||||
"policyAuthHeaderAuthDescription": "Bekræft et tilpasset HTTP-headernavn og værdi ved hver forespørgsel",
|
||||
"policyAuthHeaderAuthSummary": "Header konfigureret",
|
||||
"policyAuthHeaderName": "Headernavn",
|
||||
"policyAuthHeaderValue": "Forventet værdi",
|
||||
"policyAuthHeaderName": "Username",
|
||||
"policyAuthHeaderValue": "Password",
|
||||
"policyAuthSetPasscode": "Angiv adgangskode",
|
||||
"policyAuthSetPincode": "Sett PIN-kode",
|
||||
"policyAuthSetEmailWhitelist": "Angiv e-mail hviteliste",
|
||||
@@ -1915,6 +1915,9 @@
|
||||
"billingDomains": "Domæner",
|
||||
"billingOrganizations": "Orger",
|
||||
"billingRemoteExitNodes": "Eksterne noder",
|
||||
"billingPublicResources": "Public Resources",
|
||||
"billingPrivateResources": "Private Resources",
|
||||
"billingMachineClients": "Machine Clients",
|
||||
"billingNoLimitConfigured": "Ingen grænse konfigureret",
|
||||
"billingEstimatedPeriod": "Estimert faktureringsperiode",
|
||||
"billingIncludedUsage": "Inklusive Brug",
|
||||
@@ -1943,6 +1946,9 @@
|
||||
"billingUsersInfo": "Hvor mange brugere du kan bruge",
|
||||
"billingDomainInfo": "Hvor mange domæner du kan bruge",
|
||||
"billingRemoteExitNodesInfo": "Hvor mange fjernnoder du kan bruge",
|
||||
"billingPublicResourcesInfo": "How many public resources you can use",
|
||||
"billingPrivateResourcesInfo": "How many private resources you can use",
|
||||
"billingMachineClientsInfo": "How many machine clients you can use",
|
||||
"billingLicenseKeys": "Licensnøgler",
|
||||
"billingLicenseKeysDescription": "Administrer dine licensnøgleabonnementer",
|
||||
"billingLicenseSubscription": "Licens abonnement",
|
||||
|
||||
@@ -864,8 +864,8 @@
|
||||
"policyAuthHeaderAuthTitle": "Grundlegende Header-Authentifizierung",
|
||||
"policyAuthHeaderAuthDescription": "Überprüfen Sie einen benutzerdefinierten HTTP-Headernamen und -wert bei jeder Anfrage",
|
||||
"policyAuthHeaderAuthSummary": "Header konfiguriert",
|
||||
"policyAuthHeaderName": "Header-Name",
|
||||
"policyAuthHeaderValue": "Erwarteter Wert",
|
||||
"policyAuthHeaderName": "Username",
|
||||
"policyAuthHeaderValue": "Password",
|
||||
"policyAuthSetPasscode": "Passcode setzen",
|
||||
"policyAuthSetPincode": "PIN-Code festlegen",
|
||||
"policyAuthSetEmailWhitelist": "E-Mail-Whitelist festlegen",
|
||||
@@ -1915,6 +1915,9 @@
|
||||
"billingDomains": "Domänen",
|
||||
"billingOrganizations": "Orden",
|
||||
"billingRemoteExitNodes": "Entfernte Knoten",
|
||||
"billingPublicResources": "Public Resources",
|
||||
"billingPrivateResources": "Private Resources",
|
||||
"billingMachineClients": "Machine Clients",
|
||||
"billingNoLimitConfigured": "Kein Limit konfiguriert",
|
||||
"billingEstimatedPeriod": "Geschätzter Abrechnungszeitraum",
|
||||
"billingIncludedUsage": "Inklusive Nutzung",
|
||||
@@ -1943,6 +1946,9 @@
|
||||
"billingUsersInfo": "Wie viele Benutzer Sie verwenden können",
|
||||
"billingDomainInfo": "Wie viele Domains Sie verwenden können",
|
||||
"billingRemoteExitNodesInfo": "Wie viele entfernte Knoten Sie verwenden können",
|
||||
"billingPublicResourcesInfo": "How many public resources you can use",
|
||||
"billingPrivateResourcesInfo": "How many private resources you can use",
|
||||
"billingMachineClientsInfo": "How many machine clients you can use",
|
||||
"billingLicenseKeys": "Lizenzschlüssel",
|
||||
"billingLicenseKeysDescription": "Verwalten Sie Ihre Lizenzschlüssel Abonnements",
|
||||
"billingLicenseSubscription": "Lizenzabonnement",
|
||||
|
||||
@@ -1915,9 +1915,6 @@
|
||||
"billingDomains": "Domains",
|
||||
"billingOrganizations": "Orgs",
|
||||
"billingRemoteExitNodes": "Remote Nodes",
|
||||
"billingPublicResources": "Public Resources",
|
||||
"billingPrivateResources": "Private Resources",
|
||||
"billingMachineClients": "Machine Clients",
|
||||
"billingNoLimitConfigured": "No limit configured",
|
||||
"billingEstimatedPeriod": "Estimated Billing Period",
|
||||
"billingIncludedUsage": "Included Usage",
|
||||
@@ -1946,9 +1943,6 @@
|
||||
"billingUsersInfo": "How many users you can use",
|
||||
"billingDomainInfo": "How many domains you can use",
|
||||
"billingRemoteExitNodesInfo": "How many remote nodes you can use",
|
||||
"billingPublicResourcesInfo": "How many public resources you can use",
|
||||
"billingPrivateResourcesInfo": "How many private resources you can use",
|
||||
"billingMachineClientsInfo": "How many machine clients you can use",
|
||||
"billingLicenseKeys": "License Keys",
|
||||
"billingLicenseKeysDescription": "Manage your license key subscriptions",
|
||||
"billingLicenseSubscription": "License Subscription",
|
||||
|
||||
@@ -864,8 +864,8 @@
|
||||
"policyAuthHeaderAuthTitle": "Autenticación Básica del Encabezado",
|
||||
"policyAuthHeaderAuthDescription": "Valida un nombre y valor de encabezado HTTP personalizado en cada petición",
|
||||
"policyAuthHeaderAuthSummary": "Encabezado configurado",
|
||||
"policyAuthHeaderName": "Nombre del encabezado",
|
||||
"policyAuthHeaderValue": "Valor esperado",
|
||||
"policyAuthHeaderName": "Username",
|
||||
"policyAuthHeaderValue": "Password",
|
||||
"policyAuthSetPasscode": "Establecer Código de Acceso",
|
||||
"policyAuthSetPincode": "Establecer Código PIN",
|
||||
"policyAuthSetEmailWhitelist": "Establecer Lista Blanca de Correo",
|
||||
@@ -1915,6 +1915,9 @@
|
||||
"billingDomains": "Dominios",
|
||||
"billingOrganizations": "Orgánico",
|
||||
"billingRemoteExitNodes": "Nodos remotos",
|
||||
"billingPublicResources": "Public Resources",
|
||||
"billingPrivateResources": "Private Resources",
|
||||
"billingMachineClients": "Machine Clients",
|
||||
"billingNoLimitConfigured": "No se ha configurado ningún límite",
|
||||
"billingEstimatedPeriod": "Período de facturación estimado",
|
||||
"billingIncludedUsage": "Uso incluido",
|
||||
@@ -1943,6 +1946,9 @@
|
||||
"billingUsersInfo": "Cuántos usuarios puedes usar",
|
||||
"billingDomainInfo": "Cuántos dominios puedes usar",
|
||||
"billingRemoteExitNodesInfo": "Cuántos nodos remotos puedes usar",
|
||||
"billingPublicResourcesInfo": "How many public resources you can use",
|
||||
"billingPrivateResourcesInfo": "How many private resources you can use",
|
||||
"billingMachineClientsInfo": "How many machine clients you can use",
|
||||
"billingLicenseKeys": "Claves de licencia",
|
||||
"billingLicenseKeysDescription": "Administrar las suscripciones de su clave de licencia",
|
||||
"billingLicenseSubscription": "Suscripción de licencia",
|
||||
|
||||
@@ -864,8 +864,8 @@
|
||||
"policyAuthHeaderAuthTitle": "Authentification de l'en-tête de base",
|
||||
"policyAuthHeaderAuthDescription": "Validez un nom et une valeur d'en-tête HTTP personnalisé à chaque requête",
|
||||
"policyAuthHeaderAuthSummary": "En-tête configuré",
|
||||
"policyAuthHeaderName": "Nom de l'en-tête",
|
||||
"policyAuthHeaderValue": "Valeur attendue",
|
||||
"policyAuthHeaderName": "Username",
|
||||
"policyAuthHeaderValue": "Password",
|
||||
"policyAuthSetPasscode": "Définir le code confidentiel",
|
||||
"policyAuthSetPincode": "Définir le code PIN",
|
||||
"policyAuthSetEmailWhitelist": "Définir la liste blanche des e-mails",
|
||||
@@ -1915,6 +1915,9 @@
|
||||
"billingDomains": "Domaines",
|
||||
"billingOrganizations": "Organes",
|
||||
"billingRemoteExitNodes": "Nœuds distants",
|
||||
"billingPublicResources": "Public Resources",
|
||||
"billingPrivateResources": "Private Resources",
|
||||
"billingMachineClients": "Machine Clients",
|
||||
"billingNoLimitConfigured": "Aucune limite configurée",
|
||||
"billingEstimatedPeriod": "Période de facturation estimée",
|
||||
"billingIncludedUsage": "Utilisation incluse",
|
||||
@@ -1943,6 +1946,9 @@
|
||||
"billingUsersInfo": "Combien d'utilisateurs vous pouvez utiliser",
|
||||
"billingDomainInfo": "Combien de domaines vous pouvez utiliser",
|
||||
"billingRemoteExitNodesInfo": "Combien de nœuds distants vous pouvez utiliser",
|
||||
"billingPublicResourcesInfo": "How many public resources you can use",
|
||||
"billingPrivateResourcesInfo": "How many private resources you can use",
|
||||
"billingMachineClientsInfo": "How many machine clients you can use",
|
||||
"billingLicenseKeys": "Clés de licence",
|
||||
"billingLicenseKeysDescription": "Gérer vos abonnements à la clé de licence",
|
||||
"billingLicenseSubscription": "Abonnement à la licence",
|
||||
|
||||
@@ -864,8 +864,8 @@
|
||||
"policyAuthHeaderAuthTitle": "Autenticazione Header Base",
|
||||
"policyAuthHeaderAuthDescription": "Convalida un nome e un valore di intestazione HTTP personalizzato su ogni richiesta",
|
||||
"policyAuthHeaderAuthSummary": "Intestazione configurata",
|
||||
"policyAuthHeaderName": "Nome dell'intestazione",
|
||||
"policyAuthHeaderValue": "Valore atteso",
|
||||
"policyAuthHeaderName": "Username",
|
||||
"policyAuthHeaderValue": "Password",
|
||||
"policyAuthSetPasscode": "Imposta Codice di Accesso",
|
||||
"policyAuthSetPincode": "Imposta Codice PIN",
|
||||
"policyAuthSetEmailWhitelist": "Imposta Lista Autorizzazioni Email",
|
||||
@@ -1915,6 +1915,9 @@
|
||||
"billingDomains": "Domini",
|
||||
"billingOrganizations": "Organi",
|
||||
"billingRemoteExitNodes": "Nodi Remoti",
|
||||
"billingPublicResources": "Public Resources",
|
||||
"billingPrivateResources": "Private Resources",
|
||||
"billingMachineClients": "Machine Clients",
|
||||
"billingNoLimitConfigured": "Nessun limite configurato",
|
||||
"billingEstimatedPeriod": "Periodo di Fatturazione Stimato",
|
||||
"billingIncludedUsage": "Utilizzo Incluso",
|
||||
@@ -1943,6 +1946,9 @@
|
||||
"billingUsersInfo": "Quanti utenti puoi usare",
|
||||
"billingDomainInfo": "Quanti domini puoi usare",
|
||||
"billingRemoteExitNodesInfo": "Quanti nodi remoti puoi usare",
|
||||
"billingPublicResourcesInfo": "How many public resources you can use",
|
||||
"billingPrivateResourcesInfo": "How many private resources you can use",
|
||||
"billingMachineClientsInfo": "How many machine clients you can use",
|
||||
"billingLicenseKeys": "Chiavi di Licenza",
|
||||
"billingLicenseKeysDescription": "Gestisci le sottoscrizioni alla chiave di licenza",
|
||||
"billingLicenseSubscription": "Abbonamento Licenza",
|
||||
|
||||
@@ -864,8 +864,8 @@
|
||||
"policyAuthHeaderAuthTitle": "기본 헤더 인증",
|
||||
"policyAuthHeaderAuthDescription": "각 요청에서 맞춤 HTTP 헤더 이름 및 값을 검증",
|
||||
"policyAuthHeaderAuthSummary": "헤더 구성됨",
|
||||
"policyAuthHeaderName": "헤더 이름",
|
||||
"policyAuthHeaderValue": "예상 값",
|
||||
"policyAuthHeaderName": "Username",
|
||||
"policyAuthHeaderValue": "Password",
|
||||
"policyAuthSetPasscode": "패스코드 설정",
|
||||
"policyAuthSetPincode": "PIN 코드 설정",
|
||||
"policyAuthSetEmailWhitelist": "이메일 화이트리스트 설정",
|
||||
@@ -1915,6 +1915,9 @@
|
||||
"billingDomains": "도메인",
|
||||
"billingOrganizations": "조직",
|
||||
"billingRemoteExitNodes": "원격 노드",
|
||||
"billingPublicResources": "Public Resources",
|
||||
"billingPrivateResources": "Private Resources",
|
||||
"billingMachineClients": "Machine Clients",
|
||||
"billingNoLimitConfigured": "구성된 한도가 없습니다.",
|
||||
"billingEstimatedPeriod": "예상 청구 기간",
|
||||
"billingIncludedUsage": "포함 사용량",
|
||||
@@ -1943,6 +1946,9 @@
|
||||
"billingUsersInfo": "사용할 수 있는 사용자 수",
|
||||
"billingDomainInfo": "사용할 수 있는 도메인 수",
|
||||
"billingRemoteExitNodesInfo": "사용할 수 있는 원격 노드 수",
|
||||
"billingPublicResourcesInfo": "How many public resources you can use",
|
||||
"billingPrivateResourcesInfo": "How many private resources you can use",
|
||||
"billingMachineClientsInfo": "How many machine clients you can use",
|
||||
"billingLicenseKeys": "라이센스 키",
|
||||
"billingLicenseKeysDescription": "라이센스 키 구독을 관리하세요",
|
||||
"billingLicenseSubscription": "라이센스 구독",
|
||||
|
||||
@@ -864,8 +864,8 @@
|
||||
"policyAuthHeaderAuthTitle": "Grunnleggende Header Autentisering",
|
||||
"policyAuthHeaderAuthDescription": "Bekreft et tilpasset HTTP-headernavn og verdi ved hver forespørsel",
|
||||
"policyAuthHeaderAuthSummary": "Header konfigurert",
|
||||
"policyAuthHeaderName": "Headernavn",
|
||||
"policyAuthHeaderValue": "Forventet verdi",
|
||||
"policyAuthHeaderName": "Username",
|
||||
"policyAuthHeaderValue": "Password",
|
||||
"policyAuthSetPasscode": "Angi passordkode",
|
||||
"policyAuthSetPincode": "Sett PIN-kode",
|
||||
"policyAuthSetEmailWhitelist": "Angi e-post hviteliste",
|
||||
@@ -1915,6 +1915,9 @@
|
||||
"billingDomains": "Domener",
|
||||
"billingOrganizations": "Orger",
|
||||
"billingRemoteExitNodes": "Eksterne Noder",
|
||||
"billingPublicResources": "Public Resources",
|
||||
"billingPrivateResources": "Private Resources",
|
||||
"billingMachineClients": "Machine Clients",
|
||||
"billingNoLimitConfigured": "Ingen grense konfigurert",
|
||||
"billingEstimatedPeriod": "Estimert faktureringsperiode",
|
||||
"billingIncludedUsage": "Inkludert Bruk",
|
||||
@@ -1943,6 +1946,9 @@
|
||||
"billingUsersInfo": "Hvor mange brukere du kan bruke",
|
||||
"billingDomainInfo": "Hvor mange domener du kan bruke",
|
||||
"billingRemoteExitNodesInfo": "Hvor mange fjernnoder du kan bruke",
|
||||
"billingPublicResourcesInfo": "How many public resources you can use",
|
||||
"billingPrivateResourcesInfo": "How many private resources you can use",
|
||||
"billingMachineClientsInfo": "How many machine clients you can use",
|
||||
"billingLicenseKeys": "Lisensnøkler",
|
||||
"billingLicenseKeysDescription": "Administrer dine lisensnøkkelabonnementer",
|
||||
"billingLicenseSubscription": "Lisens abonnement",
|
||||
|
||||
@@ -864,8 +864,8 @@
|
||||
"policyAuthHeaderAuthTitle": "Basic Header Authenticatie",
|
||||
"policyAuthHeaderAuthDescription": "Valideer een aangepaste HTTP-headernaam en waarde bij elk verzoek",
|
||||
"policyAuthHeaderAuthSummary": "Header geconfigureerd",
|
||||
"policyAuthHeaderName": "Header naam",
|
||||
"policyAuthHeaderValue": "Verwachte waarde",
|
||||
"policyAuthHeaderName": "Username",
|
||||
"policyAuthHeaderValue": "Password",
|
||||
"policyAuthSetPasscode": "Stel toegangscode in",
|
||||
"policyAuthSetPincode": "Stel Pincode in",
|
||||
"policyAuthSetEmailWhitelist": "Stel E-mail Whitelist in",
|
||||
@@ -1915,6 +1915,9 @@
|
||||
"billingDomains": "Domeinen",
|
||||
"billingOrganizations": "Ordenen",
|
||||
"billingRemoteExitNodes": "Externe knooppunten",
|
||||
"billingPublicResources": "Public Resources",
|
||||
"billingPrivateResources": "Private Resources",
|
||||
"billingMachineClients": "Machine Clients",
|
||||
"billingNoLimitConfigured": "Geen limiet ingesteld",
|
||||
"billingEstimatedPeriod": "Geschatte Facturatie Periode",
|
||||
"billingIncludedUsage": "Opgenomen Gebruik",
|
||||
@@ -1943,6 +1946,9 @@
|
||||
"billingUsersInfo": "Hoeveel gebruikers je kan gebruiken",
|
||||
"billingDomainInfo": "Hoeveel domeinen je kunt gebruiken",
|
||||
"billingRemoteExitNodesInfo": "Hoeveel externe nodes je kunt gebruiken",
|
||||
"billingPublicResourcesInfo": "How many public resources you can use",
|
||||
"billingPrivateResourcesInfo": "How many private resources you can use",
|
||||
"billingMachineClientsInfo": "How many machine clients you can use",
|
||||
"billingLicenseKeys": "Licentie Sleutels",
|
||||
"billingLicenseKeysDescription": "Beheer uw licentiesleutelabonnementen",
|
||||
"billingLicenseSubscription": "Licentie abonnement",
|
||||
|
||||
@@ -864,8 +864,8 @@
|
||||
"policyAuthHeaderAuthTitle": "Podstawowe Uwierzytelnianie Nagłówka",
|
||||
"policyAuthHeaderAuthDescription": "Walidacja niestandardowej nazwy i wartości nagłówka HTTP przy każdym żądaniu",
|
||||
"policyAuthHeaderAuthSummary": "Skonfigurowany nagłówek",
|
||||
"policyAuthHeaderName": "Nazwa nagłówka",
|
||||
"policyAuthHeaderValue": "Oczekiwana wartość",
|
||||
"policyAuthHeaderName": "Username",
|
||||
"policyAuthHeaderValue": "Password",
|
||||
"policyAuthSetPasscode": "Ustaw hasło dostępu",
|
||||
"policyAuthSetPincode": "Ustaw kod PIN",
|
||||
"policyAuthSetEmailWhitelist": "Ustaw białą listę e-mail",
|
||||
@@ -1915,6 +1915,9 @@
|
||||
"billingDomains": "Domeny",
|
||||
"billingOrganizations": "O masie całkowitej pojazdu przekraczającej 5 ton, ale nieprzekraczającej 5 ton",
|
||||
"billingRemoteExitNodes": "Zdalne węzły",
|
||||
"billingPublicResources": "Public Resources",
|
||||
"billingPrivateResources": "Private Resources",
|
||||
"billingMachineClients": "Machine Clients",
|
||||
"billingNoLimitConfigured": "Nie skonfigurowano limitu",
|
||||
"billingEstimatedPeriod": "Szacowany Okres Rozliczeniowy",
|
||||
"billingIncludedUsage": "Zawarte użycie",
|
||||
@@ -1943,6 +1946,9 @@
|
||||
"billingUsersInfo": "Ile użytkowników możesz użyć",
|
||||
"billingDomainInfo": "Ile domen możesz użyć",
|
||||
"billingRemoteExitNodesInfo": "Ile zdalnych węzłów możesz użyć",
|
||||
"billingPublicResourcesInfo": "How many public resources you can use",
|
||||
"billingPrivateResourcesInfo": "How many private resources you can use",
|
||||
"billingMachineClientsInfo": "How many machine clients you can use",
|
||||
"billingLicenseKeys": "Klucze licencyjne",
|
||||
"billingLicenseKeysDescription": "Zarządzaj subskrypcjami kluczy licencyjnych",
|
||||
"billingLicenseSubscription": "Subskrypcja licencji",
|
||||
|
||||
@@ -864,8 +864,8 @@
|
||||
"policyAuthHeaderAuthTitle": "Autenticação de Cabeçalho Básico",
|
||||
"policyAuthHeaderAuthDescription": "Valide um nome e valor de cabeçalho HTTP personalizado em cada solicitação",
|
||||
"policyAuthHeaderAuthSummary": "Cabeçalho configurado",
|
||||
"policyAuthHeaderName": "Nome do Cabeçalho",
|
||||
"policyAuthHeaderValue": "Valor esperado",
|
||||
"policyAuthHeaderName": "Username",
|
||||
"policyAuthHeaderValue": "Password",
|
||||
"policyAuthSetPasscode": "Definir Código de Acesso",
|
||||
"policyAuthSetPincode": "Definir Código PIN",
|
||||
"policyAuthSetEmailWhitelist": "Definir Lista de E-mails Permitidos",
|
||||
@@ -1915,6 +1915,9 @@
|
||||
"billingDomains": "Domínios",
|
||||
"billingOrganizations": "Órgãos",
|
||||
"billingRemoteExitNodes": "Nós remotos",
|
||||
"billingPublicResources": "Public Resources",
|
||||
"billingPrivateResources": "Private Resources",
|
||||
"billingMachineClients": "Machine Clients",
|
||||
"billingNoLimitConfigured": "Nenhum limite configurado",
|
||||
"billingEstimatedPeriod": "Período Estimado de Cobrança",
|
||||
"billingIncludedUsage": "Uso Incluído",
|
||||
@@ -1943,6 +1946,9 @@
|
||||
"billingUsersInfo": "Quantos usuários você pode usar",
|
||||
"billingDomainInfo": "Quantos domínios você pode usar",
|
||||
"billingRemoteExitNodesInfo": "Quantos nós remotos você pode usar",
|
||||
"billingPublicResourcesInfo": "How many public resources you can use",
|
||||
"billingPrivateResourcesInfo": "How many private resources you can use",
|
||||
"billingMachineClientsInfo": "How many machine clients you can use",
|
||||
"billingLicenseKeys": "Chaves de Licença",
|
||||
"billingLicenseKeysDescription": "Gerenciar suas subscrições de chave de licença",
|
||||
"billingLicenseSubscription": "Assinatura de Licença",
|
||||
|
||||
@@ -864,8 +864,8 @@
|
||||
"policyAuthHeaderAuthTitle": "Базовая аутентификация заголовка",
|
||||
"policyAuthHeaderAuthDescription": "Проверка пользовательского имени и значения HTTP-заголовка для каждого запроса",
|
||||
"policyAuthHeaderAuthSummary": "Заголовок настроен",
|
||||
"policyAuthHeaderName": "Имя заголовка",
|
||||
"policyAuthHeaderValue": "Ожидаемое значение",
|
||||
"policyAuthHeaderName": "Username",
|
||||
"policyAuthHeaderValue": "Password",
|
||||
"policyAuthSetPasscode": "Установить пароль",
|
||||
"policyAuthSetPincode": "Установить ПИН-код",
|
||||
"policyAuthSetEmailWhitelist": "Установить белый список email",
|
||||
@@ -1915,6 +1915,9 @@
|
||||
"billingDomains": "Домены",
|
||||
"billingOrganizations": "Орги",
|
||||
"billingRemoteExitNodes": "Удаленные узлы",
|
||||
"billingPublicResources": "Public Resources",
|
||||
"billingPrivateResources": "Private Resources",
|
||||
"billingMachineClients": "Machine Clients",
|
||||
"billingNoLimitConfigured": "Лимит не установлен",
|
||||
"billingEstimatedPeriod": "Предполагаемый период выставления счетов",
|
||||
"billingIncludedUsage": "Включенное использование",
|
||||
@@ -1943,6 +1946,9 @@
|
||||
"billingUsersInfo": "Сколько пользователей вы можете использовать",
|
||||
"billingDomainInfo": "Сколько доменов вы можете использовать",
|
||||
"billingRemoteExitNodesInfo": "Сколько удаленных узлов вы можете использовать",
|
||||
"billingPublicResourcesInfo": "How many public resources you can use",
|
||||
"billingPrivateResourcesInfo": "How many private resources you can use",
|
||||
"billingMachineClientsInfo": "How many machine clients you can use",
|
||||
"billingLicenseKeys": "Лицензионные ключи",
|
||||
"billingLicenseKeysDescription": "Управление подписками на лицензионные ключи",
|
||||
"billingLicenseSubscription": "Лицензионное соглашение",
|
||||
|
||||
@@ -864,8 +864,8 @@
|
||||
"policyAuthHeaderAuthTitle": "Temel Başlık Kimlik Doğrulama",
|
||||
"policyAuthHeaderAuthDescription": "Her istekte özel bir HTTP başlık adını ve değerini doğrulayın",
|
||||
"policyAuthHeaderAuthSummary": "Başlık yapılandırıldı",
|
||||
"policyAuthHeaderName": "Başlık adı",
|
||||
"policyAuthHeaderValue": "Beklenen değer",
|
||||
"policyAuthHeaderName": "Username",
|
||||
"policyAuthHeaderValue": "Password",
|
||||
"policyAuthSetPasscode": "Şifreyi Ayarla",
|
||||
"policyAuthSetPincode": "PIN Kodunu Ayarla",
|
||||
"policyAuthSetEmailWhitelist": "E-posta Beyaz Listesini Ayarla",
|
||||
@@ -1915,6 +1915,9 @@
|
||||
"billingDomains": "Alan Adları",
|
||||
"billingOrganizations": "Organizasyonlar",
|
||||
"billingRemoteExitNodes": "Uzak Düğümler",
|
||||
"billingPublicResources": "Public Resources",
|
||||
"billingPrivateResources": "Private Resources",
|
||||
"billingMachineClients": "Machine Clients",
|
||||
"billingNoLimitConfigured": "Hiçbir limit yapılandırılmadı",
|
||||
"billingEstimatedPeriod": "Tahmini Fatura Dönemi",
|
||||
"billingIncludedUsage": "Dahil Kullanım",
|
||||
@@ -1943,6 +1946,9 @@
|
||||
"billingUsersInfo": "Kaç tane kullanıcı kullanabileceğiniz",
|
||||
"billingDomainInfo": "Kaç tane alan adı kullanabileceğiniz",
|
||||
"billingRemoteExitNodesInfo": "Kaç tane uzaktan düğüm kullanabileceğiniz",
|
||||
"billingPublicResourcesInfo": "How many public resources you can use",
|
||||
"billingPrivateResourcesInfo": "How many private resources you can use",
|
||||
"billingMachineClientsInfo": "How many machine clients you can use",
|
||||
"billingLicenseKeys": "Lisans Anahtarları",
|
||||
"billingLicenseKeysDescription": "Lisans anahtarı aboneliklerinizi yönetin",
|
||||
"billingLicenseSubscription": "Lisans Aboneliği",
|
||||
|
||||
@@ -864,8 +864,8 @@
|
||||
"policyAuthHeaderAuthTitle": "基础标题认证",
|
||||
"policyAuthHeaderAuthDescription": "在每次请求上验证自定义 HTTP 标头名称和值",
|
||||
"policyAuthHeaderAuthSummary": "标头已配置",
|
||||
"policyAuthHeaderName": "标头名称",
|
||||
"policyAuthHeaderValue": "预期值",
|
||||
"policyAuthHeaderName": "Username",
|
||||
"policyAuthHeaderValue": "Password",
|
||||
"policyAuthSetPasscode": "设定密码",
|
||||
"policyAuthSetPincode": "设置 PIN 码",
|
||||
"policyAuthSetEmailWhitelist": "设置电子邮件白名单",
|
||||
@@ -1915,6 +1915,9 @@
|
||||
"billingDomains": "域",
|
||||
"billingOrganizations": "球队",
|
||||
"billingRemoteExitNodes": "远程节点",
|
||||
"billingPublicResources": "Public Resources",
|
||||
"billingPrivateResources": "Private Resources",
|
||||
"billingMachineClients": "Machine Clients",
|
||||
"billingNoLimitConfigured": "未配置限制",
|
||||
"billingEstimatedPeriod": "估计结算周期",
|
||||
"billingIncludedUsage": "包含的使用量",
|
||||
@@ -1943,6 +1946,9 @@
|
||||
"billingUsersInfo": "您可以使用多少用户",
|
||||
"billingDomainInfo": "您可以使用多少域",
|
||||
"billingRemoteExitNodesInfo": "您可以使用多少远程节点",
|
||||
"billingPublicResourcesInfo": "How many public resources you can use",
|
||||
"billingPrivateResourcesInfo": "How many private resources you can use",
|
||||
"billingMachineClientsInfo": "How many machine clients you can use",
|
||||
"billingLicenseKeys": "许可证密钥",
|
||||
"billingLicenseKeysDescription": "管理您的许可证密钥订阅",
|
||||
"billingLicenseSubscription": "许可订阅",
|
||||
|
||||
4065
package-lock.json
generated
4065
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
114
package.json
114
package.json
@@ -35,7 +35,7 @@
|
||||
"@asteasolutions/zod-to-openapi": "8.5.0",
|
||||
"@devolutions/iron-remote-desktop": "https://static.pangolin.net/packages/devolutions-iron-remote-desktop-0.0.0.tgz",
|
||||
"@devolutions/iron-remote-desktop-rdp": "https://static.pangolin.net/packages/devolutions-iron-remote-desktop-rdp-0.0.0.tgz",
|
||||
"@aws-sdk/client-s3": "3.1079.0",
|
||||
"@aws-sdk/client-s3": "3.1056.0",
|
||||
"@headlessui/react": "2.2.10",
|
||||
"@hookform/resolvers": "5.4.0",
|
||||
"@monaco-editor/react": "4.7.0",
|
||||
@@ -43,38 +43,38 @@
|
||||
"@novnc/novnc": "^1.7.0",
|
||||
"@oslojs/crypto": "1.0.1",
|
||||
"@oslojs/encoding": "1.1.0",
|
||||
"@radix-ui/react-avatar": "1.2.1",
|
||||
"@radix-ui/react-checkbox": "1.3.6",
|
||||
"@radix-ui/react-collapsible": "1.1.15",
|
||||
"@radix-ui/react-dialog": "1.1.18",
|
||||
"@radix-ui/react-dropdown-menu": "2.1.19",
|
||||
"@radix-ui/react-avatar": "1.1.11",
|
||||
"@radix-ui/react-checkbox": "1.3.3",
|
||||
"@radix-ui/react-collapsible": "1.1.12",
|
||||
"@radix-ui/react-dialog": "1.1.15",
|
||||
"@radix-ui/react-dropdown-menu": "2.1.16",
|
||||
"@radix-ui/react-icons": "1.3.2",
|
||||
"@radix-ui/react-label": "2.1.11",
|
||||
"@radix-ui/react-popover": "1.1.18",
|
||||
"@radix-ui/react-progress": "1.1.11",
|
||||
"@radix-ui/react-radio-group": "1.4.2",
|
||||
"@radix-ui/react-scroll-area": "1.2.13",
|
||||
"@radix-ui/react-select": "2.3.2",
|
||||
"@radix-ui/react-separator": "1.1.11",
|
||||
"@radix-ui/react-slot": "1.3.0",
|
||||
"@radix-ui/react-switch": "1.3.2",
|
||||
"@radix-ui/react-tabs": "1.1.16",
|
||||
"@radix-ui/react-toast": "1.2.18",
|
||||
"@radix-ui/react-tooltip": "1.2.11",
|
||||
"@radix-ui/react-label": "2.1.8",
|
||||
"@radix-ui/react-popover": "1.1.15",
|
||||
"@radix-ui/react-progress": "1.1.8",
|
||||
"@radix-ui/react-radio-group": "1.3.8",
|
||||
"@radix-ui/react-scroll-area": "1.2.10",
|
||||
"@radix-ui/react-select": "2.2.6",
|
||||
"@radix-ui/react-separator": "1.1.8",
|
||||
"@radix-ui/react-slot": "1.2.4",
|
||||
"@radix-ui/react-switch": "1.2.6",
|
||||
"@radix-ui/react-tabs": "1.1.13",
|
||||
"@radix-ui/react-toast": "1.2.15",
|
||||
"@radix-ui/react-tooltip": "1.2.8",
|
||||
"@react-email/body": "0.3.0",
|
||||
"@react-email/components": "1.0.12",
|
||||
"@react-email/render": "2.0.10",
|
||||
"@react-email/render": "2.0.8",
|
||||
"@react-email/tailwind": "2.0.7",
|
||||
"@simplewebauthn/browser": "13.3.0",
|
||||
"@simplewebauthn/server": "13.3.2",
|
||||
"@simplewebauthn/server": "13.3.1",
|
||||
"@tailwindcss/forms": "0.5.11",
|
||||
"@tanstack/react-query": "5.101.2",
|
||||
"@tanstack/react-query": "5.100.14",
|
||||
"@tanstack/react-table": "8.21.3",
|
||||
"@xterm/addon-fit": "^0.11.0",
|
||||
"@xterm/addon-web-links": "^0.12.0",
|
||||
"@xterm/xterm": "^6.0.0",
|
||||
"arctic": "3.7.0",
|
||||
"axios": "1.18.1",
|
||||
"axios": "1.16.1",
|
||||
"better-sqlite3": "11.9.1",
|
||||
"canvas-confetti": "1.9.4",
|
||||
"class-variance-authority": "0.7.1",
|
||||
@@ -91,40 +91,40 @@
|
||||
"helmet": "8.2.0",
|
||||
"http-errors": "2.0.1",
|
||||
"input-otp": "1.4.2",
|
||||
"ioredis": "5.11.1",
|
||||
"ioredis": "5.11.0",
|
||||
"jmespath": "0.16.0",
|
||||
"js-yaml": "5.2.1",
|
||||
"js-yaml": "4.2.0",
|
||||
"jsonwebtoken": "9.0.3",
|
||||
"lucide-react": "1.23.0",
|
||||
"lucide-react": "1.17.0",
|
||||
"maxmind": "5.0.6",
|
||||
"moment": "2.30.1",
|
||||
"next": "16.2.10",
|
||||
"next-intl": "4.13.1",
|
||||
"next": "16.2.6",
|
||||
"next-intl": "4.13.0",
|
||||
"next-themes": "0.4.6",
|
||||
"nextjs-toploader": "3.9.17",
|
||||
"node-cache": "5.1.2",
|
||||
"nodemailer": "9.0.3",
|
||||
"nodemailer": "9.0.1",
|
||||
"oslo": "1.2.1",
|
||||
"pg": "8.22.0",
|
||||
"posthog-node": "5.39.4",
|
||||
"pg": "8.21.0",
|
||||
"posthog-node": "5.35.6",
|
||||
"qrcode.react": "4.2.0",
|
||||
"react": "19.2.7",
|
||||
"react-day-picker": "10.0.1",
|
||||
"react-dom": "19.2.7",
|
||||
"react": "19.2.6",
|
||||
"react-day-picker": "9.14.0",
|
||||
"react-dom": "19.2.6",
|
||||
"react-easy-sort": "1.8.0",
|
||||
"react-hook-form": "7.80.0",
|
||||
"react-icons": "5.7.0",
|
||||
"recharts": "3.9.1",
|
||||
"react-hook-form": "7.76.1",
|
||||
"react-icons": "5.6.0",
|
||||
"recharts": "3.8.1",
|
||||
"reodotdev": "1.1.0",
|
||||
"semver": "7.8.5",
|
||||
"semver": "7.8.1",
|
||||
"sshpk": "1.18.0",
|
||||
"stripe": "22.3.0",
|
||||
"stripe": "22.2.0",
|
||||
"swagger-ui-express": "5.0.1",
|
||||
"tailwind-merge": "3.6.0",
|
||||
"topojson-client": "3.1.0",
|
||||
"tw-animate-css": "1.4.0",
|
||||
"use-debounce": "10.1.1",
|
||||
"uuid": "14.0.1",
|
||||
"uuid": "14.0.0",
|
||||
"vaul": "1.1.2",
|
||||
"visionscarto-world-atlas": "1.0.0",
|
||||
"winston": "3.19.0",
|
||||
@@ -136,11 +136,11 @@
|
||||
"zod-validation-error": "5.0.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@dotenvx/dotenvx": "2.1.4",
|
||||
"@dotenvx/dotenvx": "1.69.1",
|
||||
"@esbuild-plugins/tsconfig-paths": "0.1.2",
|
||||
"@react-email/ui": "^6.6.6",
|
||||
"@tailwindcss/postcss": "4.3.2",
|
||||
"@tanstack/react-query-devtools": "5.101.2",
|
||||
"@react-email/ui": "^6.5.0",
|
||||
"@tailwindcss/postcss": "4.3.0",
|
||||
"@tanstack/react-query-devtools": "5.100.14",
|
||||
"@types/better-sqlite3": "7.6.13",
|
||||
"@types/cookie-parser": "1.4.10",
|
||||
"@types/cors": "2.8.19",
|
||||
@@ -151,14 +151,14 @@
|
||||
"@types/jmespath": "0.15.2",
|
||||
"@types/js-yaml": "4.0.9",
|
||||
"@types/jsonwebtoken": "9.0.10",
|
||||
"@types/node": "26.1.0",
|
||||
"@types/nodemailer": "8.0.1",
|
||||
"@types/node": "25.9.1",
|
||||
"@types/nodemailer": "8.0.0",
|
||||
"@types/nprogress": "0.2.3",
|
||||
"@types/pg": "8.20.0",
|
||||
"@types/react": "19.2.17",
|
||||
"@types/react": "19.2.15",
|
||||
"@types/react-dom": "19.2.3",
|
||||
"@types/semver": "7.7.1",
|
||||
"@types/sshpk": "1.17.5",
|
||||
"@types/sshpk": "1.17.4",
|
||||
"@types/swagger-ui-express": "4.1.8",
|
||||
"@types/topojson-client": "3.1.5",
|
||||
"@types/ws": "8.18.1",
|
||||
@@ -166,21 +166,21 @@
|
||||
"babel-plugin-react-compiler": "1.0.0",
|
||||
"drizzle-kit": "0.31.10",
|
||||
"esbuild": "0.28.1",
|
||||
"esbuild-node-externals": "1.23.1",
|
||||
"eslint": "10.6.0",
|
||||
"eslint-config-next": "16.2.10",
|
||||
"postcss": "8.5.16",
|
||||
"prettier": "3.9.4",
|
||||
"react-email": "6.6.6",
|
||||
"tailwindcss": "4.3.2",
|
||||
"esbuild-node-externals": "1.22.0",
|
||||
"eslint": "10.4.0",
|
||||
"eslint-config-next": "16.2.6",
|
||||
"postcss": "8.5.15",
|
||||
"prettier": "3.8.3",
|
||||
"react-email": "6.5.0",
|
||||
"tailwindcss": "4.3.0",
|
||||
"tsc-alias": "1.8.17",
|
||||
"tsx": "4.22.5",
|
||||
"tsx": "4.22.3",
|
||||
"typescript": "6.0.3",
|
||||
"typescript-eslint": "8.62.1"
|
||||
"typescript-eslint": "8.60.0"
|
||||
},
|
||||
"overrides": {
|
||||
"esbuild": "0.28.1",
|
||||
"dompurify": "3.4.0",
|
||||
"postcss": "8.5.16"
|
||||
"postcss": "8.5.15"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -27,12 +27,6 @@ export async function getFeatureDisplayName(
|
||||
return "Remote Exit Nodes";
|
||||
case LimitId.ORGANIZATIONS:
|
||||
return "Organizations";
|
||||
case LimitId.PUBLIC_RESOURCES:
|
||||
return "Public Resources";
|
||||
case LimitId.PRIVATE_RESOURCES:
|
||||
return "Private Resources";
|
||||
case LimitId.MACHINE_CLIENTS:
|
||||
return "Machine Clients";
|
||||
case LimitId.TIER1:
|
||||
return "Home Lab";
|
||||
default:
|
||||
|
||||
@@ -104,18 +104,6 @@ export async function getOrgUsage(
|
||||
orgId,
|
||||
LimitId.ORGANIZATIONS
|
||||
);
|
||||
const publicResources = await usageService.getUsage(
|
||||
orgId,
|
||||
LimitId.PUBLIC_RESOURCES
|
||||
);
|
||||
const privateResources = await usageService.getUsage(
|
||||
orgId,
|
||||
LimitId.PRIVATE_RESOURCES
|
||||
);
|
||||
const machineClients = await usageService.getUsage(
|
||||
orgId,
|
||||
LimitId.MACHINE_CLIENTS
|
||||
);
|
||||
// const egressData = await usageService.getUsage(
|
||||
// orgId,
|
||||
// FeatureId.EGRESS_DATA_MB
|
||||
@@ -139,15 +127,6 @@ export async function getOrgUsage(
|
||||
if (organizations) {
|
||||
usageData.push(organizations);
|
||||
}
|
||||
if (publicResources) {
|
||||
usageData.push(publicResources);
|
||||
}
|
||||
if (privateResources) {
|
||||
usageData.push(privateResources);
|
||||
}
|
||||
if (machineClients) {
|
||||
usageData.push(machineClients);
|
||||
}
|
||||
|
||||
const orgLimits = await db
|
||||
.select()
|
||||
|
||||
@@ -3,12 +3,8 @@ import { db, orgs } from "@server/db";
|
||||
import { actions, roles, roleActions } from "@server/db";
|
||||
import { eq, inArray } from "drizzle-orm";
|
||||
import logger from "@server/logger";
|
||||
import { build } from "@server/build";
|
||||
|
||||
export async function ensureActions() {
|
||||
if (build == "saas") {
|
||||
return;
|
||||
}
|
||||
await db.transaction(async (trx) => {
|
||||
const actionIds = Object.values(ActionsEnum);
|
||||
const existingActions = await trx.select().from(actions).execute();
|
||||
|
||||
@@ -158,9 +158,6 @@ const tierLimits: Record<
|
||||
domains: number;
|
||||
remoteNodes: number;
|
||||
organizations: number;
|
||||
publicResources: number;
|
||||
privateResources: number;
|
||||
machineClients: number;
|
||||
}
|
||||
> = {
|
||||
basic: {
|
||||
@@ -168,50 +165,35 @@ const tierLimits: Record<
|
||||
sites: freeLimitSet[LimitId.SITES]?.value ?? 0,
|
||||
domains: freeLimitSet[LimitId.DOMAINS]?.value ?? 0,
|
||||
remoteNodes: freeLimitSet[LimitId.REMOTE_EXIT_NODES]?.value ?? 0,
|
||||
organizations: freeLimitSet[LimitId.ORGANIZATIONS]?.value ?? 0,
|
||||
publicResources: freeLimitSet[LimitId.PUBLIC_RESOURCES]?.value ?? 0,
|
||||
privateResources: freeLimitSet[LimitId.PRIVATE_RESOURCES]?.value ?? 0,
|
||||
machineClients: freeLimitSet[LimitId.MACHINE_CLIENTS]?.value ?? 0
|
||||
organizations: freeLimitSet[LimitId.ORGANIZATIONS]?.value ?? 0
|
||||
},
|
||||
tier1: {
|
||||
users: tier1LimitSet[LimitId.USERS]?.value ?? 0,
|
||||
sites: tier1LimitSet[LimitId.SITES]?.value ?? 0,
|
||||
domains: tier1LimitSet[LimitId.DOMAINS]?.value ?? 0,
|
||||
remoteNodes: tier1LimitSet[LimitId.REMOTE_EXIT_NODES]?.value ?? 0,
|
||||
organizations: tier1LimitSet[LimitId.ORGANIZATIONS]?.value ?? 0,
|
||||
publicResources: tier1LimitSet[LimitId.PUBLIC_RESOURCES]?.value ?? 0,
|
||||
privateResources: tier1LimitSet[LimitId.PRIVATE_RESOURCES]?.value ?? 0,
|
||||
machineClients: tier1LimitSet[LimitId.MACHINE_CLIENTS]?.value ?? 0
|
||||
organizations: tier1LimitSet[LimitId.ORGANIZATIONS]?.value ?? 0
|
||||
},
|
||||
tier2: {
|
||||
users: tier2LimitSet[LimitId.USERS]?.value ?? 0,
|
||||
sites: tier2LimitSet[LimitId.SITES]?.value ?? 0,
|
||||
domains: tier2LimitSet[LimitId.DOMAINS]?.value ?? 0,
|
||||
remoteNodes: tier2LimitSet[LimitId.REMOTE_EXIT_NODES]?.value ?? 0,
|
||||
organizations: tier2LimitSet[LimitId.ORGANIZATIONS]?.value ?? 0,
|
||||
publicResources: tier2LimitSet[LimitId.PUBLIC_RESOURCES]?.value ?? 0,
|
||||
privateResources: tier2LimitSet[LimitId.PRIVATE_RESOURCES]?.value ?? 0,
|
||||
machineClients: tier2LimitSet[LimitId.MACHINE_CLIENTS]?.value ?? 0
|
||||
organizations: tier2LimitSet[LimitId.ORGANIZATIONS]?.value ?? 0
|
||||
},
|
||||
tier3: {
|
||||
users: tier3LimitSet[LimitId.USERS]?.value ?? 0,
|
||||
sites: tier3LimitSet[LimitId.SITES]?.value ?? 0,
|
||||
domains: tier3LimitSet[LimitId.DOMAINS]?.value ?? 0,
|
||||
remoteNodes: tier3LimitSet[LimitId.REMOTE_EXIT_NODES]?.value ?? 0,
|
||||
organizations: tier3LimitSet[LimitId.ORGANIZATIONS]?.value ?? 0,
|
||||
publicResources: tier3LimitSet[LimitId.PUBLIC_RESOURCES]?.value ?? 0,
|
||||
privateResources: tier3LimitSet[LimitId.PRIVATE_RESOURCES]?.value ?? 0,
|
||||
machineClients: tier3LimitSet[LimitId.MACHINE_CLIENTS]?.value ?? 0
|
||||
organizations: tier3LimitSet[LimitId.ORGANIZATIONS]?.value ?? 0
|
||||
},
|
||||
enterprise: {
|
||||
users: 0, // Custom for enterprise
|
||||
sites: 0, // Custom for enterprise
|
||||
domains: 0, // Custom for enterprise
|
||||
remoteNodes: 0, // Custom for enterprise
|
||||
organizations: 0, // Custom for enterprise
|
||||
publicResources: 0, // Custom for enterprise
|
||||
privateResources: 0, // Custom for enterprise
|
||||
machineClients: 0 // Custom for enterprise
|
||||
organizations: 0 // Custom for enterprise
|
||||
}
|
||||
};
|
||||
|
||||
@@ -252,9 +234,6 @@ export default function BillingPage() {
|
||||
const DOMAINS = "domains";
|
||||
const REMOTE_EXIT_NODES = "remoteExitNodes";
|
||||
const ORGINIZATIONS = "organizations";
|
||||
const PUBLIC_RESOURCES = "publicResources";
|
||||
const PRIVATE_RESOURCES = "privateResources";
|
||||
const MACHINE_CLIENTS = "machineClients";
|
||||
|
||||
// Confirmation dialog state
|
||||
const [showConfirmDialog, setShowConfirmDialog] = useState(false);
|
||||
@@ -818,45 +797,6 @@ export default function BillingPage() {
|
||||
});
|
||||
}
|
||||
|
||||
// Check public resources
|
||||
const publicResourcesUsage = getUsageValue(PUBLIC_RESOURCES);
|
||||
if (
|
||||
limits.publicResources > 0 &&
|
||||
publicResourcesUsage > limits.publicResources
|
||||
) {
|
||||
violations.push({
|
||||
feature: "Public Resources",
|
||||
currentUsage: publicResourcesUsage,
|
||||
newLimit: limits.publicResources
|
||||
});
|
||||
}
|
||||
|
||||
// Check private resources
|
||||
const privateResourcesUsage = getUsageValue(PRIVATE_RESOURCES);
|
||||
if (
|
||||
limits.privateResources > 0 &&
|
||||
privateResourcesUsage > limits.privateResources
|
||||
) {
|
||||
violations.push({
|
||||
feature: "Private Resources",
|
||||
currentUsage: privateResourcesUsage,
|
||||
newLimit: limits.privateResources
|
||||
});
|
||||
}
|
||||
|
||||
// Check machine clients
|
||||
const machineClientsUsage = getUsageValue(MACHINE_CLIENTS);
|
||||
if (
|
||||
limits.machineClients > 0 &&
|
||||
machineClientsUsage > limits.machineClients
|
||||
) {
|
||||
violations.push({
|
||||
feature: "Machine Clients",
|
||||
currentUsage: machineClientsUsage,
|
||||
newLimit: limits.machineClients
|
||||
});
|
||||
}
|
||||
|
||||
return violations;
|
||||
};
|
||||
|
||||
@@ -1085,7 +1025,7 @@ export default function BillingPage() {
|
||||
<div className="text-sm text-muted-foreground mb-3">
|
||||
{t("billingMaximumLimits") || "Maximum Limits"}
|
||||
</div>
|
||||
<InfoSections cols={8}>
|
||||
<InfoSections cols={5}>
|
||||
<InfoSection>
|
||||
<InfoSectionTitle className="flex items-center gap-1 text-xs">
|
||||
{t("billingUsers") || "Users"}
|
||||
@@ -1368,168 +1308,6 @@ export default function BillingPage() {
|
||||
)}
|
||||
</InfoSectionContent>
|
||||
</InfoSection>
|
||||
<InfoSection>
|
||||
<InfoSectionTitle className="flex items-center gap-1 text-xs">
|
||||
{t("billingPublicResources") ||
|
||||
"Public Resources"}
|
||||
</InfoSectionTitle>
|
||||
<InfoSectionContent className="text-sm">
|
||||
{isOverLimit(PUBLIC_RESOURCES) ? (
|
||||
<Tooltip>
|
||||
<TooltipTrigger className="flex items-center gap-1">
|
||||
<AlertTriangle className="h-3 w-3 text-orange-400" />
|
||||
<span
|
||||
className={cn(
|
||||
"text-orange-600 dark:text-orange-400 font-medium"
|
||||
)}
|
||||
>
|
||||
{getLimitValue(
|
||||
PUBLIC_RESOURCES
|
||||
) ??
|
||||
t(
|
||||
"billingUnlimited"
|
||||
) ??
|
||||
"∞"}
|
||||
</span>
|
||||
</TooltipTrigger>
|
||||
<TooltipContent>
|
||||
<p>
|
||||
{t(
|
||||
"billingUsageExceedsLimit",
|
||||
{
|
||||
current:
|
||||
getUsageValue(
|
||||
PUBLIC_RESOURCES
|
||||
),
|
||||
limit:
|
||||
getLimitValue(
|
||||
PUBLIC_RESOURCES
|
||||
) ?? 0
|
||||
}
|
||||
) ||
|
||||
`Current usage (${getUsageValue(PUBLIC_RESOURCES)}) exceeds limit (${getLimitValue(PUBLIC_RESOURCES)})`}
|
||||
</p>
|
||||
</TooltipContent>
|
||||
</Tooltip>
|
||||
) : (
|
||||
<>
|
||||
{getLimitValue(
|
||||
PUBLIC_RESOURCES
|
||||
) ??
|
||||
t("billingUnlimited") ??
|
||||
"∞"}
|
||||
</>
|
||||
)}
|
||||
</InfoSectionContent>
|
||||
</InfoSection>
|
||||
<InfoSection>
|
||||
<InfoSectionTitle className="flex items-center gap-1 text-xs">
|
||||
{t("billingPrivateResources") ||
|
||||
"Private Resources"}
|
||||
</InfoSectionTitle>
|
||||
<InfoSectionContent className="text-sm">
|
||||
{isOverLimit(PRIVATE_RESOURCES) ? (
|
||||
<Tooltip>
|
||||
<TooltipTrigger className="flex items-center gap-1">
|
||||
<AlertTriangle className="h-3 w-3 text-orange-400" />
|
||||
<span
|
||||
className={cn(
|
||||
"text-orange-600 dark:text-orange-400 font-medium"
|
||||
)}
|
||||
>
|
||||
{getLimitValue(
|
||||
PRIVATE_RESOURCES
|
||||
) ??
|
||||
t(
|
||||
"billingUnlimited"
|
||||
) ??
|
||||
"∞"}
|
||||
</span>
|
||||
</TooltipTrigger>
|
||||
<TooltipContent>
|
||||
<p>
|
||||
{t(
|
||||
"billingUsageExceedsLimit",
|
||||
{
|
||||
current:
|
||||
getUsageValue(
|
||||
PRIVATE_RESOURCES
|
||||
),
|
||||
limit:
|
||||
getLimitValue(
|
||||
PRIVATE_RESOURCES
|
||||
) ?? 0
|
||||
}
|
||||
) ||
|
||||
`Current usage (${getUsageValue(PRIVATE_RESOURCES)}) exceeds limit (${getLimitValue(PRIVATE_RESOURCES)})`}
|
||||
</p>
|
||||
</TooltipContent>
|
||||
</Tooltip>
|
||||
) : (
|
||||
<>
|
||||
{getLimitValue(
|
||||
PRIVATE_RESOURCES
|
||||
) ??
|
||||
t("billingUnlimited") ??
|
||||
"∞"}
|
||||
</>
|
||||
)}
|
||||
</InfoSectionContent>
|
||||
</InfoSection>
|
||||
<InfoSection>
|
||||
<InfoSectionTitle className="flex items-center gap-1 text-xs">
|
||||
{t("billingMachineClients") ||
|
||||
"Machine Clients"}
|
||||
</InfoSectionTitle>
|
||||
<InfoSectionContent className="text-sm">
|
||||
{isOverLimit(MACHINE_CLIENTS) ? (
|
||||
<Tooltip>
|
||||
<TooltipTrigger className="flex items-center gap-1">
|
||||
<AlertTriangle className="h-3 w-3 text-orange-400" />
|
||||
<span
|
||||
className={cn(
|
||||
"text-orange-600 dark:text-orange-400 font-medium"
|
||||
)}
|
||||
>
|
||||
{getLimitValue(
|
||||
MACHINE_CLIENTS
|
||||
) ??
|
||||
t(
|
||||
"billingUnlimited"
|
||||
) ??
|
||||
"∞"}
|
||||
</span>
|
||||
</TooltipTrigger>
|
||||
<TooltipContent>
|
||||
<p>
|
||||
{t(
|
||||
"billingUsageExceedsLimit",
|
||||
{
|
||||
current:
|
||||
getUsageValue(
|
||||
MACHINE_CLIENTS
|
||||
),
|
||||
limit:
|
||||
getLimitValue(
|
||||
MACHINE_CLIENTS
|
||||
) ?? 0
|
||||
}
|
||||
) ||
|
||||
`Current usage (${getUsageValue(MACHINE_CLIENTS)}) exceeds limit (${getLimitValue(MACHINE_CLIENTS)})`}
|
||||
</p>
|
||||
</TooltipContent>
|
||||
</Tooltip>
|
||||
) : (
|
||||
<>
|
||||
{getLimitValue(
|
||||
MACHINE_CLIENTS
|
||||
) ??
|
||||
t("billingUnlimited") ??
|
||||
"∞"}
|
||||
</>
|
||||
)}
|
||||
</InfoSectionContent>
|
||||
</InfoSection>
|
||||
</InfoSections>
|
||||
</div>
|
||||
</div>
|
||||
@@ -1729,45 +1507,6 @@ export default function BillingPage() {
|
||||
"Remote Nodes"}
|
||||
</span>
|
||||
</div>
|
||||
<div className="flex items-center gap-2">
|
||||
<span className="w-1.5 h-1.5 rounded-full bg-muted-foreground/50 shrink-0" />
|
||||
<span>
|
||||
{
|
||||
tierLimits[
|
||||
pendingTier.tier
|
||||
].publicResources
|
||||
}{" "}
|
||||
{t(
|
||||
"billingPublicResources"
|
||||
) || "Public Resources"}
|
||||
</span>
|
||||
</div>
|
||||
<div className="flex items-center gap-2">
|
||||
<span className="w-1.5 h-1.5 rounded-full bg-muted-foreground/50 shrink-0" />
|
||||
<span>
|
||||
{
|
||||
tierLimits[
|
||||
pendingTier.tier
|
||||
].privateResources
|
||||
}{" "}
|
||||
{t(
|
||||
"billingPrivateResources"
|
||||
) || "Private Resources"}
|
||||
</span>
|
||||
</div>
|
||||
<div className="flex items-center gap-2">
|
||||
<span className="w-1.5 h-1.5 rounded-full bg-muted-foreground/50 shrink-0" />
|
||||
<span>
|
||||
{
|
||||
tierLimits[
|
||||
pendingTier.tier
|
||||
].machineClients
|
||||
}{" "}
|
||||
{t(
|
||||
"billingMachineClients"
|
||||
) || "Machine Clients"}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
)}
|
||||
|
||||
Reference in New Issue
Block a user