gitextract_nwjdm6gt/ ├── .dockerignore ├── .editorconfig ├── .eslintrc.json ├── .github/ │ ├── DISCUSSION_TEMPLATE/ │ │ └── feature-requests.yml │ ├── FUNDING.yml │ ├── ISSUE_TEMPLATE/ │ │ ├── 1.bug_report.yml │ │ └── config.yml │ ├── PULL_REQUEST_TEMPLATE.md │ ├── dependabot.yml │ └── workflows/ │ ├── cicd.yml │ ├── linting.yml │ ├── mirror.yaml │ ├── restart-runners.yml │ ├── saas.yml │ ├── stale-bot.yml │ └── test.yml ├── .gitignore ├── .nvmrc ├── .prettierignore ├── .prettierrc ├── .vscode/ │ ├── extensions.json │ └── settings.json ├── CONTRIBUTING.md ├── Dockerfile ├── Dockerfile.dev ├── LICENSE ├── Makefile ├── README.md ├── SECURITY.md ├── bruno/ │ ├── API Keys/ │ │ ├── Create API Key.bru │ │ ├── Delete API Key.bru │ │ ├── List API Key Actions.bru │ │ ├── List Org API Keys.bru │ │ ├── List Root API Keys.bru │ │ ├── Set API Key Actions.bru │ │ ├── Set API Key Orgs.bru │ │ └── folder.bru │ ├── Auth/ │ │ ├── 2fa-disable.bru │ │ ├── 2fa-enable.bru │ │ ├── 2fa-request.bru │ │ ├── change-password.bru │ │ ├── login.bru │ │ ├── logout.bru │ │ ├── reset-password-request.bru │ │ ├── reset-password.bru │ │ ├── signup.bru │ │ ├── verify-email-request.bru │ │ ├── verify-email.bru │ │ └── verify-user.bru │ ├── Clients/ │ │ ├── createClient.bru │ │ └── pickClientDefaults.bru │ ├── IDP/ │ │ ├── Create OIDC Provider.bru │ │ ├── Generate OIDC URL.bru │ │ └── folder.bru │ ├── Internal/ │ │ ├── Traefik Config.bru │ │ └── folder.bru │ ├── Newt/ │ │ ├── Create Newt.bru │ │ └── Get Token.bru │ ├── Olm/ │ │ ├── createOlm.bru │ │ └── folder.bru │ ├── Orgs/ │ │ ├── Check Id.bru │ │ └── listOrgs.bru │ ├── Remote Exit Node/ │ │ └── createRemoteExitNode.bru │ ├── Resources/ │ │ ├── listResourcesByOrg.bru │ │ └── listResourcesBySite.bru │ ├── Sites/ │ │ ├── Get Site.bru │ │ └── listSites.bru │ ├── Targets/ │ │ └── listTargets.bru │ ├── Test.bru │ ├── Traefik/ │ │ └── traefik-config.bru │ ├── Users/ │ │ ├── adminListUsers.bru │ │ ├── adminRemoveUser.bru │ │ └── getUser.bru │ └── bruno.json ├── cli/ │ ├── commands/ │ │ ├── clearExitNodes.ts │ │ ├── clearLicenseKeys.ts │ │ ├── deleteClient.ts │ │ ├── generateOrgCaKeys.ts │ │ ├── resetUserSecurityKeys.ts │ │ ├── rotateServerSecret.ts │ │ └── setAdminCredentials.ts │ ├── index.ts │ └── wrapper.sh ├── components.json ├── config/ │ ├── .gitkeep │ ├── config.example.yml │ ├── db/ │ │ └── .gitkeep │ ├── logs/ │ │ └── .gitkeep │ └── traefik/ │ ├── dynamic_config.yml │ └── traefik_config.yml ├── crowdin.yml ├── docker-compose.drizzle.yml ├── docker-compose.example.yml ├── docker-compose.pgr.yml ├── docker-compose.yml ├── drizzle.pg.config.ts ├── drizzle.sqlite.config.ts ├── esbuild.mjs ├── eslint.config.js ├── install/ │ ├── Makefile │ ├── config/ │ │ ├── config.yml │ │ ├── crowdsec/ │ │ │ ├── acquis.d/ │ │ │ │ ├── appsec.yaml │ │ │ │ └── traefik.yaml │ │ │ ├── docker-compose.yml │ │ │ ├── dynamic_config.yml │ │ │ ├── profiles.yaml │ │ │ └── traefik_config.yml │ │ ├── docker-compose.yml │ │ └── traefik/ │ │ ├── dynamic_config.yml │ │ └── traefik_config.yml │ ├── config.go │ ├── containers.go │ ├── crowdsec.go │ ├── get-installer.sh │ ├── go.mod │ ├── go.sum │ ├── input.go │ ├── input.txt │ ├── main.go │ └── theme.go ├── messages/ │ ├── bg-BG.json │ ├── cs-CZ.json │ ├── de-DE.json │ ├── en-US.json │ ├── es-ES.json │ ├── fr-FR.json │ ├── it-IT.json │ ├── ko-KR.json │ ├── nb-NO.json │ ├── nl-NL.json │ ├── pl-PL.json │ ├── pt-PT.json │ ├── ru-RU.json │ ├── tr-TR.json │ ├── zh-CN.json │ └── zh-TW.json ├── next.config.ts ├── package.json ├── postcss.config.mjs ├── server/ │ ├── apiServer.ts │ ├── auth/ │ │ ├── actions.ts │ │ ├── canUserAccessResource.ts │ │ ├── canUserAccessSiteResource.ts │ │ ├── checkValidInvite.ts │ │ ├── password.ts │ │ ├── passwordSchema.ts │ │ ├── resourceOtp.ts │ │ ├── sendEmailVerificationCode.ts │ │ ├── sessions/ │ │ │ ├── app.ts │ │ │ ├── newt.ts │ │ │ ├── olm.ts │ │ │ ├── resource.ts │ │ │ └── verifySession.ts │ │ ├── totp.ts │ │ ├── unauthorizedResponse.ts │ │ └── verifyResourceAccessToken.ts │ ├── cleanup.ts │ ├── db/ │ │ ├── README.md │ │ ├── asns.ts │ │ ├── countries.ts │ │ ├── ios_models.json │ │ ├── mac_models.json │ │ ├── maxmind.ts │ │ ├── maxmindAsn.ts │ │ ├── migrate.ts │ │ ├── names.json │ │ ├── names.ts │ │ ├── pg/ │ │ │ ├── driver.ts │ │ │ ├── index.ts │ │ │ ├── logsDriver.ts │ │ │ ├── migrate.ts │ │ │ ├── safeRead.ts │ │ │ └── schema/ │ │ │ ├── privateSchema.ts │ │ │ └── schema.ts │ │ ├── queries/ │ │ │ └── verifySessionQueries.ts │ │ └── sqlite/ │ │ ├── driver.ts │ │ ├── index.ts │ │ ├── logsDriver.ts │ │ ├── migrate.ts │ │ ├── safeRead.ts │ │ └── schema/ │ │ ├── privateSchema.ts │ │ └── schema.ts │ ├── emails/ │ │ ├── index.ts │ │ ├── sendEmail.ts │ │ └── templates/ │ │ ├── EnterpriseEditionKeyGenerated.tsx │ │ ├── NotifyResetPassword.tsx │ │ ├── NotifyUsageLimitApproaching.tsx │ │ ├── NotifyUsageLimitReached.tsx │ │ ├── ResetPasswordCode.tsx │ │ ├── ResourceOTPCode.tsx │ │ ├── SendInviteLink.tsx │ │ ├── SupportEmail.tsx │ │ ├── TwoFactorAuthNotification.tsx │ │ ├── VerifyEmailCode.tsx │ │ ├── WelcomeQuickStart.tsx │ │ ├── components/ │ │ │ ├── ButtonLink.tsx │ │ │ ├── CopyCodeBox.tsx │ │ │ └── Email.tsx │ │ └── lib/ │ │ └── theme.ts │ ├── extendZod.ts │ ├── index.ts │ ├── integrationApiServer.ts │ ├── internalServer.ts │ ├── lib/ │ │ ├── asn.ts │ │ ├── billing/ │ │ │ ├── createCustomer.ts │ │ │ ├── features.ts │ │ │ ├── getLineItems.ts │ │ │ ├── getOrgTierData.ts │ │ │ ├── index.ts │ │ │ ├── licenses.ts │ │ │ ├── limitSet.ts │ │ │ ├── limitsService.ts │ │ │ ├── tierMatrix.ts │ │ │ └── usageService.ts │ │ ├── blueprints/ │ │ │ ├── MaintenanceSchema.ts │ │ │ ├── applyBlueprint.ts │ │ │ ├── applyNewtDockerBlueprint.ts │ │ │ ├── clientResources.ts │ │ │ ├── parseDockerContainers.ts │ │ │ ├── parseDotNotation.ts │ │ │ ├── proxyResources.ts │ │ │ └── types.ts │ │ ├── cache.ts │ │ ├── calculateUserClientsForOrgs.ts │ │ ├── canUserAccessResource.ts │ │ ├── certificates.ts │ │ ├── checkOrgAccessPolicy.ts │ │ ├── cleanupLogs.test.ts │ │ ├── cleanupLogs.ts │ │ ├── clientVersionChecks.ts │ │ ├── colorsSchema.ts │ │ ├── config.ts │ │ ├── consts.ts │ │ ├── corsWithLoginPage.ts │ │ ├── crypto.ts │ │ ├── deleteOrg.ts │ │ ├── domainUtils.ts │ │ ├── encryption.ts │ │ ├── exitNodes/ │ │ │ ├── exitNodeComms.ts │ │ │ ├── exitNodes.ts │ │ │ ├── getCurrentExitNodeId.ts │ │ │ ├── index.ts │ │ │ └── subnet.ts │ │ ├── geoip.ts │ │ ├── getEnvOrYaml.ts │ │ ├── hostMeta.ts │ │ ├── idp/ │ │ │ └── generateRedirectUrl.ts │ │ ├── ip.test.ts │ │ ├── ip.ts │ │ ├── isLicencedOrSubscribed.ts │ │ ├── isSubscribed.ts │ │ ├── lock.ts │ │ ├── logAccessAudit.ts │ │ ├── normalizePostAuthPath.ts │ │ ├── rateLimitStore.ts │ │ ├── readConfigFile.ts │ │ ├── rebuildClientAssociations.ts │ │ ├── response.ts │ │ ├── s3.ts │ │ ├── schemas.ts │ │ ├── serverIpService.ts │ │ ├── sshCA.ts │ │ ├── stoi.ts │ │ ├── telemetry.ts │ │ ├── totp.ts │ │ ├── traefik/ │ │ │ ├── TraefikConfigManager.ts │ │ │ ├── getTraefikConfig.ts │ │ │ ├── index.ts │ │ │ ├── middleware.ts │ │ │ ├── pathEncoding.test.ts │ │ │ ├── traefikConfig.test.ts │ │ │ └── utils.ts │ │ ├── userOrg.ts │ │ ├── validators.test.ts │ │ └── validators.ts │ ├── license/ │ │ └── license.ts │ ├── logger.ts │ ├── middlewares/ │ │ ├── csrfProtection.ts │ │ ├── formatError.ts │ │ ├── getUserOrgs.ts │ │ ├── index.ts │ │ ├── integration/ │ │ │ ├── index.ts │ │ │ ├── verifyAccessTokenAccess.ts │ │ │ ├── verifyApiKey.ts │ │ │ ├── verifyApiKeyApiKeyAccess.ts │ │ │ ├── verifyApiKeyClientAccess.ts │ │ │ ├── verifyApiKeyDomainAccess.ts │ │ │ ├── verifyApiKeyHasAction.ts │ │ │ ├── verifyApiKeyIdpAccess.ts │ │ │ ├── verifyApiKeyIsRoot.ts │ │ │ ├── verifyApiKeyOrgAccess.ts │ │ │ ├── verifyApiKeyResourceAccess.ts │ │ │ ├── verifyApiKeyRoleAccess.ts │ │ │ ├── verifyApiKeySetResourceClients.ts │ │ │ ├── verifyApiKeySetResourceUsers.ts │ │ │ ├── verifyApiKeySiteAccess.ts │ │ │ ├── verifyApiKeySiteResourceAccess.ts │ │ │ ├── verifyApiKeyTargetAccess.ts │ │ │ └── verifyApiKeyUserAccess.ts │ │ ├── logActionAudit.ts │ │ ├── logIncoming.ts │ │ ├── notFound.ts │ │ ├── requestTimeout.ts │ │ ├── stripDuplicateSessions.ts │ │ ├── verifyAccessTokenAccess.ts │ │ ├── verifyAdmin.ts │ │ ├── verifyApiKeyAccess.ts │ │ ├── verifyClientAccess.ts │ │ ├── verifyDomainAccess.ts │ │ ├── verifyIsLoggedInUser.ts │ │ ├── verifyLimits.ts │ │ ├── verifyOlmAccess.ts │ │ ├── verifyOrgAccess.ts │ │ ├── verifyResourceAccess.ts │ │ ├── verifyRoleAccess.ts │ │ ├── verifySession.ts │ │ ├── verifySetResourceClients.ts │ │ ├── verifySetResourceUsers.ts │ │ ├── verifySiteAccess.ts │ │ ├── verifySiteResourceAccess.ts │ │ ├── verifyTargetAccess.ts │ │ ├── verifyUser.ts │ │ ├── verifyUserAccess.ts │ │ ├── verifyUserHasAction.ts │ │ ├── verifyUserInRole.ts │ │ ├── verifyUserIsOrgOwner.ts │ │ └── verifyUserIsServerAdmin.ts │ ├── nextServer.ts │ ├── openApi.ts │ ├── private/ │ │ ├── auth/ │ │ │ └── sessions/ │ │ │ └── remoteExitNode.ts │ │ ├── cleanup.ts │ │ ├── lib/ │ │ │ ├── billing/ │ │ │ │ ├── createCustomer.ts │ │ │ │ ├── getOrgTierData.ts │ │ │ │ └── index.ts │ │ │ ├── blueprints/ │ │ │ │ └── MaintenanceSchema.ts │ │ │ ├── cache.ts │ │ │ ├── certificates.ts │ │ │ ├── checkOrgAccessPolicy.ts │ │ │ ├── config.ts │ │ │ ├── exitNodes/ │ │ │ │ ├── exitNodeComms.ts │ │ │ │ ├── exitNodes.ts │ │ │ │ └── index.ts │ │ │ ├── isLicencedOrSubscribed.ts │ │ │ ├── isSubscribed.ts │ │ │ ├── lock.ts │ │ │ ├── logAccessAudit.ts │ │ │ ├── rateLimit.test.ts │ │ │ ├── rateLimit.ts │ │ │ ├── rateLimitStore.ts │ │ │ ├── readConfigFile.ts │ │ │ ├── redis.ts │ │ │ ├── redisStore.ts │ │ │ ├── stripe.ts │ │ │ └── traefik/ │ │ │ ├── getTraefikConfig.ts │ │ │ └── index.ts │ │ ├── license/ │ │ │ ├── license.ts │ │ │ └── licenseJwt.ts │ │ ├── middlewares/ │ │ │ ├── index.ts │ │ │ ├── logActionAudit.ts │ │ │ ├── verifyCertificateAccess.ts │ │ │ ├── verifyIdpAccess.ts │ │ │ ├── verifyLoginPageAccess.ts │ │ │ ├── verifyRemoteExitNode.ts │ │ │ ├── verifyRemoteExitNodeAccess.ts │ │ │ ├── verifySubscription.ts │ │ │ └── verifyValidLicense.ts │ │ └── routers/ │ │ ├── approvals/ │ │ │ ├── countApprovals.ts │ │ │ ├── index.ts │ │ │ ├── listApprovals.ts │ │ │ └── processPendingApproval.ts │ │ ├── auditLogs/ │ │ │ ├── exportAccessAuditLog.ts │ │ │ ├── exportActionAuditLog.ts │ │ │ ├── index.ts │ │ │ ├── queryAccessAuditLog.ts │ │ │ └── queryActionAuditLog.ts │ │ ├── auth/ │ │ │ ├── getSessionTransferToken.ts │ │ │ ├── index.ts │ │ │ └── transferSession.ts │ │ ├── billing/ │ │ │ ├── changeTier.ts │ │ │ ├── createCheckoutSession.ts │ │ │ ├── createPortalSession.ts │ │ │ ├── featureLifecycle.ts │ │ │ ├── getOrgSubscriptions.ts │ │ │ ├── getOrgUsage.ts │ │ │ ├── hooks/ │ │ │ │ ├── getSubType.ts │ │ │ │ ├── handleCustomerCreated.ts │ │ │ │ ├── handleCustomerDeleted.ts │ │ │ │ ├── handleCustomerUpdated.ts │ │ │ │ ├── handleSubscriptionCreated.ts │ │ │ │ ├── handleSubscriptionDeleted.ts │ │ │ │ └── handleSubscriptionUpdated.ts │ │ │ ├── index.ts │ │ │ ├── internalGetOrgTier.ts │ │ │ ├── subscriptionLifecycle.ts │ │ │ └── webhooks.ts │ │ ├── certificates/ │ │ │ ├── createCertificate.ts │ │ │ ├── getCertificate.ts │ │ │ ├── index.ts │ │ │ └── restartCertificate.ts │ │ ├── domain/ │ │ │ ├── checkDomainNamespaceAvailability.ts │ │ │ ├── index.ts │ │ │ └── listDomainNamespaces.ts │ │ ├── external.ts │ │ ├── generatedLicense/ │ │ │ ├── generateNewEnterpriseLicense.ts │ │ │ ├── generateNewLicense.ts │ │ │ ├── index.ts │ │ │ └── listGeneratedLicenses.ts │ │ ├── gerbil/ │ │ │ └── createExitNode.ts │ │ ├── hybrid.ts │ │ ├── integration.ts │ │ ├── internal.ts │ │ ├── license/ │ │ │ ├── activateLicense.ts │ │ │ ├── deleteLicenseKey.ts │ │ │ ├── getLicenseStatus.ts │ │ │ ├── index.ts │ │ │ ├── listLicenseKeys.ts │ │ │ └── recheckStatus.ts │ │ ├── loginPage/ │ │ │ ├── createLoginPage.ts │ │ │ ├── deleteLoginPage.ts │ │ │ ├── deleteLoginPageBranding.ts │ │ │ ├── getLoginPage.ts │ │ │ ├── getLoginPageBranding.ts │ │ │ ├── index.ts │ │ │ ├── loadLoginPage.ts │ │ │ ├── loadLoginPageBranding.ts │ │ │ ├── updateLoginPage.ts │ │ │ └── upsertLoginPageBranding.ts │ │ ├── misc/ │ │ │ ├── index.ts │ │ │ └── sendSupportEmail.ts │ │ ├── org/ │ │ │ ├── index.ts │ │ │ └── sendUsageNotifications.ts │ │ ├── orgIdp/ │ │ │ ├── createOrgOidcIdp.ts │ │ │ ├── deleteOrgIdp.ts │ │ │ ├── getOrgIdp.ts │ │ │ ├── index.ts │ │ │ ├── listOrgIdps.ts │ │ │ └── updateOrgOidcIdp.ts │ │ ├── re-key/ │ │ │ ├── index.ts │ │ │ ├── reGenerateClientSecret.ts │ │ │ ├── reGenerateExitNodeSecret.ts │ │ │ └── reGenerateSiteSecret.ts │ │ ├── remoteExitNode/ │ │ │ ├── createRemoteExitNode.ts │ │ │ ├── deleteRemoteExitNode.ts │ │ │ ├── getRemoteExitNode.ts │ │ │ ├── getRemoteExitNodeToken.ts │ │ │ ├── handleRemoteExitNodePingMessage.ts │ │ │ ├── handleRemoteExitNodeRegisterMessage.ts │ │ │ ├── index.ts │ │ │ ├── listRemoteExitNodes.ts │ │ │ ├── pickRemoteExitNodeDefaults.ts │ │ │ └── quickStartRemoteExitNode.ts │ │ ├── resource/ │ │ │ ├── getMaintenanceInfo.ts │ │ │ └── index.ts │ │ ├── ssh/ │ │ │ ├── index.ts │ │ │ └── signSshKey.ts │ │ └── ws/ │ │ ├── index.ts │ │ ├── messageHandlers.ts │ │ └── ws.ts │ ├── routers/ │ │ ├── accessToken/ │ │ │ ├── deleteAccessToken.ts │ │ │ ├── generateAccessToken.ts │ │ │ ├── index.ts │ │ │ └── listAccessTokens.ts │ │ ├── apiKeys/ │ │ │ ├── createOrgApiKey.ts │ │ │ ├── createRootApiKey.ts │ │ │ ├── deleteApiKey.ts │ │ │ ├── deleteOrgApiKey.ts │ │ │ ├── getApiKey.ts │ │ │ ├── index.ts │ │ │ ├── listApiKeyActions.ts │ │ │ ├── listOrgApiKeys.ts │ │ │ ├── listRootApiKeys.ts │ │ │ ├── setApiKeyActions.ts │ │ │ └── setApiKeyOrgs.ts │ │ ├── auditLogs/ │ │ │ ├── exportRequestAuditLog.ts │ │ │ ├── generateCSV.ts │ │ │ ├── index.ts │ │ │ ├── queryRequestAnalytics.ts │ │ │ ├── queryRequestAuditLog.ts │ │ │ └── types.ts │ │ ├── auth/ │ │ │ ├── changePassword.ts │ │ │ ├── checkResourceSession.ts │ │ │ ├── deleteMyAccount.ts │ │ │ ├── disable2fa.ts │ │ │ ├── index.ts │ │ │ ├── initialSetupComplete.ts │ │ │ ├── login.ts │ │ │ ├── logout.ts │ │ │ ├── lookupUser.ts │ │ │ ├── pollDeviceWebAuth.ts │ │ │ ├── requestEmailVerificationCode.ts │ │ │ ├── requestPasswordReset.ts │ │ │ ├── requestTotpSecret.ts │ │ │ ├── resetPassword.ts │ │ │ ├── securityKey.ts │ │ │ ├── setServerAdmin.ts │ │ │ ├── signup.ts │ │ │ ├── startDeviceWebAuth.ts │ │ │ ├── types.ts │ │ │ ├── validateSetupToken.ts │ │ │ ├── verifyDeviceWebAuth.ts │ │ │ ├── verifyEmail.ts │ │ │ └── verifyTotp.ts │ │ ├── badger/ │ │ │ ├── exchangeSession.ts │ │ │ ├── index.ts │ │ │ ├── logRequestAudit.ts │ │ │ ├── verifySession.test.ts │ │ │ └── verifySession.ts │ │ ├── billing/ │ │ │ ├── types.ts │ │ │ └── webhooks.ts │ │ ├── blueprints/ │ │ │ ├── applyJSONBlueprint.ts │ │ │ ├── applyYAMLBlueprint.ts │ │ │ ├── getBlueprint.ts │ │ │ ├── index.ts │ │ │ ├── listBlueprints.ts │ │ │ └── types.ts │ │ ├── certificates/ │ │ │ ├── createCertificate.ts │ │ │ └── types.ts │ │ ├── client/ │ │ │ ├── archiveClient.ts │ │ │ ├── blockClient.ts │ │ │ ├── createClient.ts │ │ │ ├── createUserClient.ts │ │ │ ├── deleteClient.ts │ │ │ ├── getClient.ts │ │ │ ├── index.ts │ │ │ ├── listClients.ts │ │ │ ├── listUserDevices.ts │ │ │ ├── pickClientDefaults.ts │ │ │ ├── targets.ts │ │ │ ├── terminate.ts │ │ │ ├── unarchiveClient.ts │ │ │ ├── unblockClient.ts │ │ │ └── updateClient.ts │ │ ├── domain/ │ │ │ ├── createOrgDomain.ts │ │ │ ├── deleteOrgDomain.ts │ │ │ ├── getDNSRecords.ts │ │ │ ├── getDomain.ts │ │ │ ├── index.ts │ │ │ ├── listDomains.ts │ │ │ ├── restartOrgDomain.ts │ │ │ ├── types.ts │ │ │ └── updateDomain.ts │ │ ├── external.ts │ │ ├── generatedLicense/ │ │ │ └── types.ts │ │ ├── gerbil/ │ │ │ ├── createExitNode.ts │ │ │ ├── getAllRelays.ts │ │ │ ├── getConfig.ts │ │ │ ├── getResolvedHostname.ts │ │ │ ├── index.ts │ │ │ ├── peers.ts │ │ │ ├── receiveBandwidth.ts │ │ │ └── updateHolePunch.ts │ │ ├── hybrid.ts │ │ ├── idp/ │ │ │ ├── createIdpOrgPolicy.ts │ │ │ ├── createOidcIdp.ts │ │ │ ├── deleteIdp.ts │ │ │ ├── deleteIdpOrgPolicy.ts │ │ │ ├── generateOidcUrl.ts │ │ │ ├── getIdp.ts │ │ │ ├── index.ts │ │ │ ├── listIdpOrgPolicies.ts │ │ │ ├── listIdps.ts │ │ │ ├── updateIdpOrgPolicy.ts │ │ │ ├── updateOidcIdp.ts │ │ │ └── validateOidcCallback.ts │ │ ├── integration.ts │ │ ├── internal.ts │ │ ├── license/ │ │ │ └── types.ts │ │ ├── loginPage/ │ │ │ └── types.ts │ │ ├── newt/ │ │ │ ├── buildConfiguration.ts │ │ │ ├── createNewt.ts │ │ │ ├── dockerSocket.ts │ │ │ ├── getNewtToken.ts │ │ │ ├── handleApplyBlueprintMessage.ts │ │ │ ├── handleGetConfigMessage.ts │ │ │ ├── handleNewtDisconnectingMessage.ts │ │ │ ├── handleNewtPingMessage.ts │ │ │ ├── handleNewtPingRequestMessage.ts │ │ │ ├── handleNewtRegisterMessage.ts │ │ │ ├── handleReceiveBandwidthMessage.ts │ │ │ ├── handleSocketMessages.ts │ │ │ ├── index.ts │ │ │ ├── peers.ts │ │ │ ├── sync.ts │ │ │ └── targets.ts │ │ ├── olm/ │ │ │ ├── archiveUserOlm.ts │ │ │ ├── buildConfiguration.ts │ │ │ ├── createOlm.ts │ │ │ ├── createUserOlm.ts │ │ │ ├── deleteUserOlm.ts │ │ │ ├── error.ts │ │ │ ├── fingerprintingUtils.ts │ │ │ ├── getOlmToken.ts │ │ │ ├── getUserOlm.ts │ │ │ ├── handleOlmDisconnectingMessage.ts │ │ │ ├── handleOlmPingMessage.ts │ │ │ ├── handleOlmRegisterMessage.ts │ │ │ ├── handleOlmRelayMessage.ts │ │ │ ├── handleOlmServerInitAddPeerHandshake.ts │ │ │ ├── handleOlmServerPeerAddMessage.ts │ │ │ ├── handleOlmUnRelayMessage.ts │ │ │ ├── index.ts │ │ │ ├── listUserOlms.ts │ │ │ ├── peers.ts │ │ │ ├── recoverOlmWithFingerprint.ts │ │ │ ├── sync.ts │ │ │ └── unarchiveUserOlm.ts │ │ ├── org/ │ │ │ ├── checkId.ts │ │ │ ├── checkOrgUserAccess.ts │ │ │ ├── createOrg.ts │ │ │ ├── deleteOrg.ts │ │ │ ├── getOrg.ts │ │ │ ├── getOrgOverview.ts │ │ │ ├── index.ts │ │ │ ├── listOrgs.ts │ │ │ ├── listUserOrgs.ts │ │ │ ├── pickOrgDefaults.ts │ │ │ ├── resetOrgBandwidth.ts │ │ │ └── updateOrg.ts │ │ ├── orgIdp/ │ │ │ └── types.ts │ │ ├── remoteExitNode/ │ │ │ └── types.ts │ │ ├── resource/ │ │ │ ├── addEmailToResourceWhitelist.ts │ │ │ ├── addRoleToResource.ts │ │ │ ├── addUserToResource.ts │ │ │ ├── authWithAccessToken.ts │ │ │ ├── authWithPassword.ts │ │ │ ├── authWithPincode.ts │ │ │ ├── authWithWhitelist.ts │ │ │ ├── createResource.ts │ │ │ ├── createResourceRule.ts │ │ │ ├── deleteResource.ts │ │ │ ├── deleteResourceRule.ts │ │ │ ├── getExchangeToken.ts │ │ │ ├── getResource.ts │ │ │ ├── getResourceAuthInfo.ts │ │ │ ├── getResourceWhitelist.ts │ │ │ ├── getUserResources.ts │ │ │ ├── index.ts │ │ │ ├── listAllResourceNames.ts │ │ │ ├── listResourceRoles.ts │ │ │ ├── listResourceRules.ts │ │ │ ├── listResourceUsers.ts │ │ │ ├── listResources.ts │ │ │ ├── removeEmailFromResourceWhitelist.ts │ │ │ ├── removeRoleFromResource.ts │ │ │ ├── removeUserFromResource.ts │ │ │ ├── setResourceHeaderAuth.ts │ │ │ ├── setResourcePassword.ts │ │ │ ├── setResourcePincode.ts │ │ │ ├── setResourceRoles.ts │ │ │ ├── setResourceUsers.ts │ │ │ ├── setResourceWhitelist.ts │ │ │ ├── types.ts │ │ │ ├── updateResource.ts │ │ │ └── updateResourceRule.ts │ │ ├── role/ │ │ │ ├── addRoleAction.ts │ │ │ ├── addRoleSite.ts │ │ │ ├── createRole.ts │ │ │ ├── deleteRole.ts │ │ │ ├── getRole.ts │ │ │ ├── index.ts │ │ │ ├── listRoleActions.ts │ │ │ ├── listRoleResources.ts │ │ │ ├── listRoleSites.ts │ │ │ ├── listRoles.ts │ │ │ ├── removeRoleAction.ts │ │ │ ├── removeRoleResource.ts │ │ │ ├── removeRoleSite.ts │ │ │ └── updateRole.ts │ │ ├── serverInfo/ │ │ │ ├── getServerInfo.ts │ │ │ └── index.ts │ │ ├── site/ │ │ │ ├── createSite.ts │ │ │ ├── deleteSite.ts │ │ │ ├── getSite.ts │ │ │ ├── index.ts │ │ │ ├── listSiteRoles.ts │ │ │ ├── listSites.ts │ │ │ ├── pickSiteDefaults.ts │ │ │ ├── socketIntegration.ts │ │ │ └── updateSite.ts │ │ ├── siteResource/ │ │ │ ├── addClientToSiteResource.ts │ │ │ ├── addRoleToSiteResource.ts │ │ │ ├── addUserToSiteResource.ts │ │ │ ├── batchAddClientToSiteResources.ts │ │ │ ├── createSiteResource.ts │ │ │ ├── deleteSiteResource.ts │ │ │ ├── getSiteResource.ts │ │ │ ├── index.ts │ │ │ ├── listAllSiteResourcesByOrg.ts │ │ │ ├── listSiteResourceClients.ts │ │ │ ├── listSiteResourceRoles.ts │ │ │ ├── listSiteResourceUsers.ts │ │ │ ├── listSiteResources.ts │ │ │ ├── removeClientFromSiteResource.ts │ │ │ ├── removeRoleFromSiteResource.ts │ │ │ ├── removeUserFromSiteResource.ts │ │ │ ├── setSiteResourceClients.ts │ │ │ ├── setSiteResourceRoles.ts │ │ │ ├── setSiteResourceUsers.ts │ │ │ └── updateSiteResource.ts │ │ ├── supporterKey/ │ │ │ ├── hideSupporterKey.ts │ │ │ ├── index.ts │ │ │ ├── isSupporterKeyVisible.ts │ │ │ └── validateSupporterKey.ts │ │ ├── target/ │ │ │ ├── createTarget.ts │ │ │ ├── deleteTarget.ts │ │ │ ├── getTarget.ts │ │ │ ├── handleHealthcheckStatusMessage.ts │ │ │ ├── helpers.ts │ │ │ ├── index.ts │ │ │ ├── listTargets.ts │ │ │ └── updateTarget.ts │ │ ├── traefik/ │ │ │ ├── configSchema.ts │ │ │ ├── index.ts │ │ │ └── traefikConfigProvider.ts │ │ ├── user/ │ │ │ ├── acceptInvite.ts │ │ │ ├── addUserAction.ts │ │ │ ├── addUserRole.ts │ │ │ ├── addUserSite.ts │ │ │ ├── adminGeneratePasswordResetCode.ts │ │ │ ├── adminGetUser.ts │ │ │ ├── adminListUsers.ts │ │ │ ├── adminRemoveUser.ts │ │ │ ├── adminUpdateUser2FA.ts │ │ │ ├── createOrgUser.ts │ │ │ ├── getOrgUser.ts │ │ │ ├── getOrgUserByUsername.ts │ │ │ ├── getUser.ts │ │ │ ├── index.ts │ │ │ ├── inviteUser.ts │ │ │ ├── listInvitations.ts │ │ │ ├── listUsers.ts │ │ │ ├── myDevice.ts │ │ │ ├── removeInvitation.ts │ │ │ ├── removeUserAction.ts │ │ │ ├── removeUserOrg.ts │ │ │ ├── removeUserResource.ts │ │ │ ├── removeUserSite.ts │ │ │ └── updateOrgUser.ts │ │ └── ws/ │ │ ├── checkRoundTripMessage.ts │ │ ├── handleRoundTripMessage.ts │ │ ├── index.ts │ │ ├── messageHandlers.ts │ │ ├── types.ts │ │ └── ws.ts │ ├── setup/ │ │ ├── .gitignore │ │ ├── clearStaleData.ts │ │ ├── copyInConfig.ts │ │ ├── ensureActions.ts │ │ ├── ensureSetupToken.ts │ │ ├── index.ts │ │ ├── migrationsPg.ts │ │ ├── migrationsSqlite.ts │ │ ├── scriptsPg/ │ │ │ ├── 1.10.0.ts │ │ │ ├── 1.10.2.ts │ │ │ ├── 1.11.0.ts │ │ │ ├── 1.11.1.ts │ │ │ ├── 1.12.0.ts │ │ │ ├── 1.13.0.ts │ │ │ ├── 1.14.0.ts │ │ │ ├── 1.15.0.ts │ │ │ ├── 1.15.3.ts │ │ │ ├── 1.15.4.ts │ │ │ ├── 1.16.0.ts │ │ │ ├── 1.6.0.ts │ │ │ ├── 1.7.0.ts │ │ │ ├── 1.8.0.ts │ │ │ └── 1.9.0.ts │ │ └── scriptsSqlite/ │ │ ├── 1.0.0-beta1.ts │ │ ├── 1.0.0-beta10.ts │ │ ├── 1.0.0-beta12.ts │ │ ├── 1.0.0-beta13.ts │ │ ├── 1.0.0-beta15.ts │ │ ├── 1.0.0-beta2.ts │ │ ├── 1.0.0-beta3.ts │ │ ├── 1.0.0-beta5.ts │ │ ├── 1.0.0-beta6.ts │ │ ├── 1.0.0-beta9.ts │ │ ├── 1.0.0.ts │ │ ├── 1.1.0.ts │ │ ├── 1.10.0.ts │ │ ├── 1.10.1.ts │ │ ├── 1.10.2.ts │ │ ├── 1.11.0.ts │ │ ├── 1.11.1.ts │ │ ├── 1.12.0.ts │ │ ├── 1.13.0.ts │ │ ├── 1.14.0.ts │ │ ├── 1.15.0.ts │ │ ├── 1.15.3.ts │ │ ├── 1.15.4.ts │ │ ├── 1.16.0.ts │ │ ├── 1.2.0.ts │ │ ├── 1.3.0.ts │ │ ├── 1.5.0.ts │ │ ├── 1.6.0.ts │ │ ├── 1.7.0.ts │ │ ├── 1.8.0.ts │ │ └── 1.9.0.ts │ └── types/ │ ├── ArrayElement.ts │ ├── Auth.ts │ ├── ErrorResponse.ts │ ├── HttpCode.ts │ ├── MessageResponse.ts │ ├── Pagination.ts │ ├── Response.ts │ ├── Tiers.ts │ └── UserTypes.ts ├── src/ │ ├── actions/ │ │ └── server.ts │ ├── app/ │ │ ├── [orgId]/ │ │ │ ├── layout.tsx │ │ │ ├── page.tsx │ │ │ └── settings/ │ │ │ ├── (private)/ │ │ │ │ ├── access/ │ │ │ │ │ └── approvals/ │ │ │ │ │ └── page.tsx │ │ │ │ ├── billing/ │ │ │ │ │ ├── layout.tsx │ │ │ │ │ └── page.tsx │ │ │ │ ├── idp/ │ │ │ │ │ ├── [idpId]/ │ │ │ │ │ │ ├── general/ │ │ │ │ │ │ │ └── page.tsx │ │ │ │ │ │ ├── layout.tsx │ │ │ │ │ │ └── page.tsx │ │ │ │ │ ├── create/ │ │ │ │ │ │ └── page.tsx │ │ │ │ │ ├── layout.tsx │ │ │ │ │ └── page.tsx │ │ │ │ ├── license/ │ │ │ │ │ ├── layout.tsx │ │ │ │ │ └── page.tsx │ │ │ │ └── remote-exit-nodes/ │ │ │ │ ├── [remoteExitNodeId]/ │ │ │ │ │ ├── credentials/ │ │ │ │ │ │ └── page.tsx │ │ │ │ │ ├── layout.tsx │ │ │ │ │ └── page.tsx │ │ │ │ ├── create/ │ │ │ │ │ └── page.tsx │ │ │ │ └── page.tsx │ │ │ ├── access/ │ │ │ │ ├── invitations/ │ │ │ │ │ └── page.tsx │ │ │ │ ├── layout.tsx │ │ │ │ ├── page.tsx │ │ │ │ ├── roles/ │ │ │ │ │ └── page.tsx │ │ │ │ └── users/ │ │ │ │ ├── [userId]/ │ │ │ │ │ ├── access-controls/ │ │ │ │ │ │ └── page.tsx │ │ │ │ │ ├── layout.tsx │ │ │ │ │ └── page.tsx │ │ │ │ ├── create/ │ │ │ │ │ └── page.tsx │ │ │ │ └── page.tsx │ │ │ ├── api-keys/ │ │ │ │ ├── [apiKeyId]/ │ │ │ │ │ ├── layout.tsx │ │ │ │ │ ├── page.tsx │ │ │ │ │ └── permissions/ │ │ │ │ │ └── page.tsx │ │ │ │ ├── create/ │ │ │ │ │ └── page.tsx │ │ │ │ └── page.tsx │ │ │ ├── blueprints/ │ │ │ │ ├── [blueprintId]/ │ │ │ │ │ └── page.tsx │ │ │ │ ├── create/ │ │ │ │ │ └── page.tsx │ │ │ │ └── page.tsx │ │ │ ├── clients/ │ │ │ │ ├── layout.tsx │ │ │ │ ├── machine/ │ │ │ │ │ ├── [niceId]/ │ │ │ │ │ │ ├── credentials/ │ │ │ │ │ │ │ └── page.tsx │ │ │ │ │ │ ├── general/ │ │ │ │ │ │ │ └── page.tsx │ │ │ │ │ │ ├── layout.tsx │ │ │ │ │ │ └── page.tsx │ │ │ │ │ ├── create/ │ │ │ │ │ │ └── page.tsx │ │ │ │ │ └── page.tsx │ │ │ │ ├── page.tsx │ │ │ │ └── user/ │ │ │ │ ├── [niceId]/ │ │ │ │ │ ├── general/ │ │ │ │ │ │ └── page.tsx │ │ │ │ │ ├── layout.tsx │ │ │ │ │ └── page.tsx │ │ │ │ └── page.tsx │ │ │ ├── domains/ │ │ │ │ ├── [domainId]/ │ │ │ │ │ └── page.tsx │ │ │ │ └── page.tsx │ │ │ ├── general/ │ │ │ │ ├── auth-page/ │ │ │ │ │ └── page.tsx │ │ │ │ ├── layout.tsx │ │ │ │ ├── page.tsx │ │ │ │ └── security/ │ │ │ │ └── page.tsx │ │ │ ├── layout.tsx │ │ │ ├── logs/ │ │ │ │ ├── access/ │ │ │ │ │ └── page.tsx │ │ │ │ ├── action/ │ │ │ │ │ └── page.tsx │ │ │ │ ├── analytics/ │ │ │ │ │ └── page.tsx │ │ │ │ ├── layout.tsx │ │ │ │ ├── page.tsx │ │ │ │ └── request/ │ │ │ │ └── page.tsx │ │ │ ├── not-found.tsx │ │ │ ├── page.tsx │ │ │ ├── resources/ │ │ │ │ ├── client/ │ │ │ │ │ └── page.tsx │ │ │ │ ├── page.tsx │ │ │ │ └── proxy/ │ │ │ │ ├── [niceId]/ │ │ │ │ │ ├── authentication/ │ │ │ │ │ │ └── page.tsx │ │ │ │ │ ├── general/ │ │ │ │ │ │ └── page.tsx │ │ │ │ │ ├── layout.tsx │ │ │ │ │ ├── page.tsx │ │ │ │ │ ├── proxy/ │ │ │ │ │ │ └── page.tsx │ │ │ │ │ └── rules/ │ │ │ │ │ └── page.tsx │ │ │ │ ├── create/ │ │ │ │ │ └── page.tsx │ │ │ │ └── page.tsx │ │ │ ├── share-links/ │ │ │ │ └── page.tsx │ │ │ └── sites/ │ │ │ ├── [niceId]/ │ │ │ │ ├── credentials/ │ │ │ │ │ └── page.tsx │ │ │ │ ├── general/ │ │ │ │ │ └── page.tsx │ │ │ │ ├── layout.tsx │ │ │ │ ├── page.tsx │ │ │ │ └── wireguardConfig.ts │ │ │ ├── create/ │ │ │ │ └── page.tsx │ │ │ └── page.tsx │ │ ├── admin/ │ │ │ ├── api-keys/ │ │ │ │ ├── [apiKeyId]/ │ │ │ │ │ ├── layout.tsx │ │ │ │ │ ├── page.tsx │ │ │ │ │ └── permissions/ │ │ │ │ │ └── page.tsx │ │ │ │ ├── create/ │ │ │ │ │ └── page.tsx │ │ │ │ └── page.tsx │ │ │ ├── idp/ │ │ │ │ ├── [idpId]/ │ │ │ │ │ ├── general/ │ │ │ │ │ │ └── page.tsx │ │ │ │ │ ├── layout.tsx │ │ │ │ │ ├── page.tsx │ │ │ │ │ └── policies/ │ │ │ │ │ └── page.tsx │ │ │ │ ├── create/ │ │ │ │ │ └── page.tsx │ │ │ │ └── page.tsx │ │ │ ├── layout.tsx │ │ │ ├── license/ │ │ │ │ ├── layout.tsx │ │ │ │ └── page.tsx │ │ │ ├── page.tsx │ │ │ └── users/ │ │ │ ├── AdminUsersTable.tsx │ │ │ ├── [userId]/ │ │ │ │ ├── general/ │ │ │ │ │ └── page.tsx │ │ │ │ ├── layout.tsx │ │ │ │ └── page.tsx │ │ │ └── page.tsx │ │ ├── auth/ │ │ │ ├── 2fa/ │ │ │ │ └── setup/ │ │ │ │ └── page.tsx │ │ │ ├── delete-account/ │ │ │ │ ├── DeleteAccountClient.tsx │ │ │ │ └── page.tsx │ │ │ ├── idp/ │ │ │ │ └── [idpId]/ │ │ │ │ └── oidc/ │ │ │ │ └── callback/ │ │ │ │ └── page.tsx │ │ │ ├── initial-setup/ │ │ │ │ ├── layout.tsx │ │ │ │ └── page.tsx │ │ │ ├── layout.tsx │ │ │ ├── login/ │ │ │ │ ├── device/ │ │ │ │ │ ├── page.tsx │ │ │ │ │ └── success/ │ │ │ │ │ └── page.tsx │ │ │ │ └── page.tsx │ │ │ ├── org/ │ │ │ │ ├── [orgId]/ │ │ │ │ │ └── page.tsx │ │ │ │ └── page.tsx │ │ │ ├── reset-password/ │ │ │ │ ├── ResetPasswordForm.tsx │ │ │ │ └── page.tsx │ │ │ ├── resource/ │ │ │ │ └── [resourceGuid]/ │ │ │ │ └── page.tsx │ │ │ ├── signup/ │ │ │ │ └── page.tsx │ │ │ └── verify-email/ │ │ │ └── page.tsx │ │ ├── globals.css │ │ ├── invite/ │ │ │ └── page.tsx │ │ ├── layout.tsx │ │ ├── maintenance-screen/ │ │ │ └── page.tsx │ │ ├── navigation.tsx │ │ ├── not-found.tsx │ │ ├── page.tsx │ │ ├── robots.ts │ │ ├── s/ │ │ │ └── [accessToken]/ │ │ │ └── page.tsx │ │ └── setup/ │ │ ├── layout.tsx │ │ └── page.tsx │ ├── components/ │ │ ├── AccessPageHeaderAndNav.tsx │ │ ├── AccessToken.tsx │ │ ├── AccessTokenUsage.tsx │ │ ├── ActionBanner.tsx │ │ ├── AdminIdpDataTable.tsx │ │ ├── AdminIdpTable.tsx │ │ ├── AdminUsersDataTable.tsx │ │ ├── AdminUsersTable.tsx │ │ ├── ApiKeysDataTable.tsx │ │ ├── ApiKeysTable.tsx │ │ ├── ApplyInternalRedirect.tsx │ │ ├── ApprovalFeed.tsx │ │ ├── ApprovalsBanner.tsx │ │ ├── ApprovalsEmptyState.tsx │ │ ├── AuthPageBrandingForm.tsx │ │ ├── AuthPageSettings.tsx │ │ ├── AutoLoginHandler.tsx │ │ ├── AutoProvisionConfigWidget.tsx │ │ ├── BlueprintDetailsForm.tsx │ │ ├── BlueprintsTable.tsx │ │ ├── BrandingLogo.tsx │ │ ├── CertificateStatus.tsx │ │ ├── ChangePasswordDialog.tsx │ │ ├── ChangePasswordForm.tsx │ │ ├── ClientDownloadBanner.tsx │ │ ├── ClientInfoCard.tsx │ │ ├── ClientResourcesTable.tsx │ │ ├── ClientsDataTable.tsx │ │ ├── ColumnFilter.tsx │ │ ├── ColumnFilterButton.tsx │ │ ├── ConfirmDeleteDialog.tsx │ │ ├── ContainersSelector.tsx │ │ ├── CopyTextBox.tsx │ │ ├── CopyToClipboard.tsx │ │ ├── CreateBlueprintForm.tsx │ │ ├── CreateDomainForm.tsx │ │ ├── CreateInternalResourceDialog.tsx │ │ ├── CreateRoleForm.tsx │ │ ├── CreateShareLinkForm.tsx │ │ ├── Credenza.tsx │ │ ├── CustomDomainInput.tsx │ │ ├── DNSRecordTable.tsx │ │ ├── DNSRecordsDataTable.tsx │ │ ├── DashboardLoginForm.tsx │ │ ├── DataTablePagination.tsx │ │ ├── DateTimePicker.tsx │ │ ├── DeleteAccountConfirmDialog.tsx │ │ ├── DeleteRoleForm.tsx │ │ ├── DeviceAuthConfirmation.tsx │ │ ├── DeviceLoginForm.tsx │ │ ├── Disable2FaForm.tsx │ │ ├── DismissableBanner.tsx │ │ ├── DomainCertForm.tsx │ │ ├── DomainInfoCard.tsx │ │ ├── DomainPicker.tsx │ │ ├── DomainsDataTable.tsx │ │ ├── DomainsTable.tsx │ │ ├── EditInternalResourceDialog.tsx │ │ ├── EditRoleForm.tsx │ │ ├── Enable2FaDialog.tsx │ │ ├── Enable2FaForm.tsx │ │ ├── ExitNodeInfoCard.tsx │ │ ├── ExitNodesDataTable.tsx │ │ ├── ExitNodesTable.tsx │ │ ├── GenerateLicenseKeyForm.tsx │ │ ├── GenerateLicenseKeysTable.tsx │ │ ├── HeadersInput.tsx │ │ ├── HealthCheckDialog.tsx │ │ ├── HorizontalTabs.tsx │ │ ├── IdpCreateWizard.tsx │ │ ├── IdpGlobalModeBanner.tsx │ │ ├── IdpLoginButtons.tsx │ │ ├── IdpTypeBadge.tsx │ │ ├── InfoSection.tsx │ │ ├── InternalResourceForm.tsx │ │ ├── InvitationsDataTable.tsx │ │ ├── InvitationsTable.tsx │ │ ├── InviteStatusCard.tsx │ │ ├── Layout.tsx │ │ ├── LayoutHeader.tsx │ │ ├── LayoutMobileMenu.tsx │ │ ├── LayoutSidebar.tsx │ │ ├── LicenseKeysDataTable.tsx │ │ ├── LicenseViolation.tsx │ │ ├── LocaleSwitcher.tsx │ │ ├── LocaleSwitcherSelect.tsx │ │ ├── LogAnalyticsData.tsx │ │ ├── LogDataTable.tsx │ │ ├── LoginCardHeader.tsx │ │ ├── LoginForm.tsx │ │ ├── LoginOrgSelector.tsx │ │ ├── LoginPasswordForm.tsx │ │ ├── MachineClientsBanner.tsx │ │ ├── MachineClientsTable.tsx │ │ ├── MemberResourcesPortal.tsx │ │ ├── MfaInputForm.tsx │ │ ├── NewPricingLicenseForm.tsx │ │ ├── OptionSelect.tsx │ │ ├── OrgApiKeysDataTable.tsx │ │ ├── OrgApiKeysTable.tsx │ │ ├── OrgIdpDataTable.tsx │ │ ├── OrgIdpTable.tsx │ │ ├── OrgInfoCard.tsx │ │ ├── OrgLoginPage.tsx │ │ ├── OrgPolicyRequired.tsx │ │ ├── OrgPolicyResult.tsx │ │ ├── OrgSelectionForm.tsx │ │ ├── OrgSelector.tsx │ │ ├── OrgSignInLink.tsx │ │ ├── OrganizationLanding.tsx │ │ ├── OrganizationLandingCard.tsx │ │ ├── PaidFeaturesAlert.tsx │ │ ├── PathMatchRenameModal.tsx │ │ ├── PermissionsSelectBox.tsx │ │ ├── PlaceHolderLoader.tsx │ │ ├── PolicyDataTable.tsx │ │ ├── PolicyTable.tsx │ │ ├── PrivateResourcesBanner.tsx │ │ ├── ProductUpdates.tsx │ │ ├── ProfessionalContentOverlay.tsx │ │ ├── ProfileIcon.tsx │ │ ├── ProxyResourcesBanner.tsx │ │ ├── ProxyResourcesTable.tsx │ │ ├── QRContainer.tsx │ │ ├── RedirectToOrg.tsx │ │ ├── RefreshButton.tsx │ │ ├── RegenerateInvitationForm.tsx │ │ ├── RegionSelector.tsx │ │ ├── ResetPasswordForm.tsx │ │ ├── ResourceAccessDenied.tsx │ │ ├── ResourceAuthPortal.tsx │ │ ├── ResourceInfoBox.tsx │ │ ├── ResourceNotFound.tsx │ │ ├── RestartDomainButton.tsx │ │ ├── RoleForm.tsx │ │ ├── RolesDataTable.tsx │ │ ├── RolesTable.tsx │ │ ├── SecurityKeyAuthButton.tsx │ │ ├── SecurityKeyForm.tsx │ │ ├── SetLastOrgCookie.tsx │ │ ├── SetResourceHeaderAuthForm.tsx │ │ ├── SetResourcePasswordForm.tsx │ │ ├── SetResourcePincodeForm.tsx │ │ ├── Settings.tsx │ │ ├── SettingsSectionTitle.tsx │ │ ├── ShareLinksDataTable.tsx │ │ ├── ShareLinksSplash.tsx │ │ ├── ShareLinksTable.tsx │ │ ├── SidebarLicenseButton.tsx │ │ ├── SidebarNav.tsx │ │ ├── SidebarSupportButton.tsx │ │ ├── SignupForm.tsx │ │ ├── SiteInfoCard.tsx │ │ ├── SitePriceCalculator.tsx │ │ ├── SitesBanner.tsx │ │ ├── SitesSplashCard.tsx │ │ ├── SitesTable.tsx │ │ ├── SmartLoginForm.tsx │ │ ├── SplashImage.tsx │ │ ├── StoreInternalRedirect.tsx │ │ ├── StrategySelect.tsx │ │ ├── SubscriptionViolation.tsx │ │ ├── SupporterMessage.tsx │ │ ├── SupporterStatus.tsx │ │ ├── SwitchInput.tsx │ │ ├── TailwindIndicator.tsx │ │ ├── TanstackQueryProvider.tsx │ │ ├── ThemeSwitcher.tsx │ │ ├── TopbarNav.tsx │ │ ├── Toploader.tsx │ │ ├── TwoFactorSetupForm.tsx │ │ ├── UserDevicesTable.tsx │ │ ├── UserProfileCard.tsx │ │ ├── UsersDataTable.tsx │ │ ├── UsersTable.tsx │ │ ├── ValidateOidcToken.tsx │ │ ├── ValidateSessionTransferToken.tsx │ │ ├── VerifyEmailForm.tsx │ │ ├── ViewDevicesDialog.tsx │ │ ├── ViewportHeightFix.tsx │ │ ├── WorldMap.tsx │ │ ├── newt-install-commands.tsx │ │ ├── olm-install-commands.tsx │ │ ├── resource-target-address-item.tsx │ │ ├── tags/ │ │ │ ├── autocomplete.tsx │ │ │ ├── tag-input.tsx │ │ │ ├── tag-list.tsx │ │ │ ├── tag-popover.tsx │ │ │ └── tag.tsx │ │ └── ui/ │ │ ├── alert.tsx │ │ ├── avatar.tsx │ │ ├── badge.tsx │ │ ├── breadcrumb.tsx │ │ ├── button.tsx │ │ ├── calendar.tsx │ │ ├── card.tsx │ │ ├── chart.tsx │ │ ├── checkbox.tsx │ │ ├── collapsible.tsx │ │ ├── command.tsx │ │ ├── controlled-data-table.tsx │ │ ├── data-table.tsx │ │ ├── dialog.tsx │ │ ├── drawer.tsx │ │ ├── dropdown-menu.tsx │ │ ├── form.tsx │ │ ├── info-popup.tsx │ │ ├── input-otp.tsx │ │ ├── input.tsx │ │ ├── label.tsx │ │ ├── popover.tsx │ │ ├── progress.tsx │ │ ├── radio-group.tsx │ │ ├── scroll-area.tsx │ │ ├── select.tsx │ │ ├── separator.tsx │ │ ├── sheet.tsx │ │ ├── switch.tsx │ │ ├── table.tsx │ │ ├── tabs.tsx │ │ ├── textarea.tsx │ │ ├── toast.tsx │ │ ├── toaster.tsx │ │ └── tooltip.tsx │ ├── contexts/ │ │ ├── apiKeyContext.ts │ │ ├── clientContext.ts │ │ ├── domainContext.ts │ │ ├── envContext.ts │ │ ├── licenseStatusContext.ts │ │ ├── orgContext.ts │ │ ├── orgUserContext.ts │ │ ├── remoteExitNodeContext.ts │ │ ├── resourceContext.ts │ │ ├── siteContext.ts │ │ ├── subscriptionStatusContext.ts │ │ ├── supporterStatusContext.ts │ │ └── userContext.ts │ ├── hooks/ │ │ ├── useApikeyContext.ts │ │ ├── useCertificate.ts │ │ ├── useClientContext.ts │ │ ├── useDomainContext.ts │ │ ├── useEnvContext.ts │ │ ├── useLicenseStatusContext.ts │ │ ├── useLocalStorage.ts │ │ ├── useMediaQuery.ts │ │ ├── useNavigationContext.ts │ │ ├── useOrgContext.ts │ │ ├── useOrgUserContext.ts │ │ ├── usePaidStatus.ts │ │ ├── useRemoteExitNodeContext.ts │ │ ├── useResourceContext.ts │ │ ├── useSiteContext.ts │ │ ├── useStoredColumnVisibility.ts │ │ ├── useStoredPageSize.ts │ │ ├── useSubscriptionStatusContext.ts │ │ ├── useSupporterStatusContext.ts │ │ ├── useToast.ts │ │ ├── useUserContext.ts │ │ └── useUserLookup.ts │ ├── i18n/ │ │ ├── config.ts │ │ └── request.ts │ ├── lib/ │ │ ├── api/ │ │ │ ├── cookies.ts │ │ │ ├── formatAxiosError.ts │ │ │ ├── getCachedOrg.ts │ │ │ ├── getCachedOrgUser.ts │ │ │ ├── getCachedSubscription.ts │ │ │ ├── index.ts │ │ │ └── isOrgSubscribed.ts │ │ ├── auth/ │ │ │ └── verifySession.ts │ │ ├── cleanRedirect.ts │ │ ├── cn.ts │ │ ├── countryCodeList.ts │ │ ├── countryCodeToFlagEmoji.ts │ │ ├── dataSize.ts │ │ ├── docker.ts │ │ ├── durationToMs.ts │ │ ├── formatDeviceFingerprint.ts │ │ ├── getSevenDaysAgo.ts │ │ ├── getUserDisplayName.ts │ │ ├── internalRedirect.ts │ │ ├── parseHostTarget.ts │ │ ├── pullEnv.ts │ │ ├── queries.ts │ │ ├── replacePlaceholder.ts │ │ ├── shareLinks.ts │ │ ├── sortColumn.ts │ │ ├── subdomain-utils.ts │ │ ├── themeColors.ts │ │ ├── timeAgoFormatter.ts │ │ ├── types/ │ │ │ ├── env.ts │ │ │ └── sort.ts │ │ ├── validateLocalPath.ts │ │ ├── wait.ts │ │ └── wireguard.ts │ ├── middleware.ts │ ├── providers/ │ │ ├── ApiKeyProvider.tsx │ │ ├── ClientProvider.tsx │ │ ├── DomainProvider.tsx │ │ ├── EnvProvider.tsx │ │ ├── LicenseStatusProvider.tsx │ │ ├── OrgProvider.tsx │ │ ├── OrgUserProvider.tsx │ │ ├── RemoteExitNodeProvider.tsx │ │ ├── ResourceProvider.tsx │ │ ├── SiteProvider.tsx │ │ ├── SubscriptionStatusProvider.tsx │ │ ├── SupporterStatusProvider.tsx │ │ ├── ThemeDataProvider.tsx │ │ ├── ThemeProvider.tsx │ │ └── UserProvider.tsx │ ├── services/ │ │ └── locale.ts │ └── types/ │ ├── canvas-confetti.d.ts │ └── tanstack-query.d.ts ├── test/ │ └── assert.ts ├── tsconfig.enterprise.json ├── tsconfig.oss.json └── tsconfig.saas.json