gitextract_e35dww2e/ ├── .github/ │ ├── ISSUE_TEMPLATE/ │ │ ├── bug_report.md │ │ ├── dns_challenge_request.md │ │ └── feature_request.md │ ├── dependabot.yml │ └── workflows/ │ └── stale.yml ├── .gitignore ├── .version ├── LICENSE ├── README.md ├── backend/ │ ├── .gitignore │ ├── app.js │ ├── biome.json │ ├── certbot/ │ │ ├── README.md │ │ └── dns-plugins.json │ ├── config/ │ │ ├── README.md │ │ ├── default.json │ │ └── sqlite-test-db.json │ ├── db.js │ ├── index.js │ ├── internal/ │ │ ├── 2fa.js │ │ ├── access-list.js │ │ ├── audit-log.js │ │ ├── certificate.js │ │ ├── dead-host.js │ │ ├── host.js │ │ ├── ip_ranges.js │ │ ├── nginx.js │ │ ├── proxy-host.js │ │ ├── redirection-host.js │ │ ├── remote-version.js │ │ ├── report.js │ │ ├── setting.js │ │ ├── stream.js │ │ ├── token.js │ │ └── user.js │ ├── knexfile.js │ ├── lib/ │ │ ├── access/ │ │ │ ├── access_lists-create.json │ │ │ ├── access_lists-delete.json │ │ │ ├── access_lists-get.json │ │ │ ├── access_lists-list.json │ │ │ ├── access_lists-update.json │ │ │ ├── auditlog-list.json │ │ │ ├── certificates-create.json │ │ │ ├── certificates-delete.json │ │ │ ├── certificates-get.json │ │ │ ├── certificates-list.json │ │ │ ├── certificates-update.json │ │ │ ├── dead_hosts-create.json │ │ │ ├── dead_hosts-delete.json │ │ │ ├── dead_hosts-get.json │ │ │ ├── dead_hosts-list.json │ │ │ ├── dead_hosts-update.json │ │ │ ├── permissions.json │ │ │ ├── proxy_hosts-create.json │ │ │ ├── proxy_hosts-delete.json │ │ │ ├── proxy_hosts-get.json │ │ │ ├── proxy_hosts-list.json │ │ │ ├── proxy_hosts-update.json │ │ │ ├── redirection_hosts-create.json │ │ │ ├── redirection_hosts-delete.json │ │ │ ├── redirection_hosts-get.json │ │ │ ├── redirection_hosts-list.json │ │ │ ├── redirection_hosts-update.json │ │ │ ├── reports-hosts.json │ │ │ ├── roles.json │ │ │ ├── settings-get.json │ │ │ ├── settings-list.json │ │ │ ├── settings-update.json │ │ │ ├── streams-create.json │ │ │ ├── streams-delete.json │ │ │ ├── streams-get.json │ │ │ ├── streams-list.json │ │ │ ├── streams-update.json │ │ │ ├── users-create.json │ │ │ ├── users-delete.json │ │ │ ├── users-get.json │ │ │ ├── users-list.json │ │ │ ├── users-loginas.json │ │ │ ├── users-password.json │ │ │ ├── users-permissions.json │ │ │ └── users-update.json │ │ ├── access.js │ │ ├── certbot.js │ │ ├── config.js │ │ ├── error.js │ │ ├── express/ │ │ │ ├── cors.js │ │ │ ├── jwt-decode.js │ │ │ ├── jwt.js │ │ │ ├── pagination.js │ │ │ └── user-id-from-me.js │ │ ├── helpers.js │ │ ├── migrate_template.js │ │ ├── utils.js │ │ └── validator/ │ │ ├── api.js │ │ └── index.js │ ├── logger.js │ ├── migrate.js │ ├── migrations/ │ │ ├── 20180618015850_initial.js │ │ ├── 20180929054513_websockets.js │ │ ├── 20181019052346_forward_host.js │ │ ├── 20181113041458_http2_support.js │ │ ├── 20181213013211_forward_scheme.js │ │ ├── 20190104035154_disabled.js │ │ ├── 20190215115310_customlocations.js │ │ ├── 20190218060101_hsts.js │ │ ├── 20190227065017_settings.js │ │ ├── 20200410143839_access_list_client.js │ │ ├── 20200410143840_access_list_client_fix.js │ │ ├── 20201014143841_pass_auth.js │ │ ├── 20210210154702_redirection_scheme.js │ │ ├── 20210210154703_redirection_status_code.js │ │ ├── 20210423103500_stream_domain.js │ │ ├── 20211108145214_regenerate_default_host.js │ │ ├── 20240427161436_stream_ssl.js │ │ ├── 20251111090000_redirect_auto_scheme.js │ │ └── 20260131163528_trust_forwarded_proto.js │ ├── models/ │ │ ├── access_list.js │ │ ├── access_list_auth.js │ │ ├── access_list_client.js │ │ ├── audit-log.js │ │ ├── auth.js │ │ ├── certificate.js │ │ ├── dead_host.js │ │ ├── now_helper.js │ │ ├── proxy_host.js │ │ ├── redirection_host.js │ │ ├── setting.js │ │ ├── stream.js │ │ ├── token.js │ │ ├── user.js │ │ └── user_permission.js │ ├── nodemon.json │ ├── package.json │ ├── routes/ │ │ ├── audit-log.js │ │ ├── main.js │ │ ├── nginx/ │ │ │ ├── access_lists.js │ │ │ ├── certificates.js │ │ │ ├── dead_hosts.js │ │ │ ├── proxy_hosts.js │ │ │ ├── redirection_hosts.js │ │ │ └── streams.js │ │ ├── reports.js │ │ ├── schema.js │ │ ├── settings.js │ │ ├── tokens.js │ │ ├── users.js │ │ └── version.js │ ├── schema/ │ │ ├── common.json │ │ ├── components/ │ │ │ ├── access-list-object.json │ │ │ ├── audit-log-list.json │ │ │ ├── audit-log-object.json │ │ │ ├── certificate-list.json │ │ │ ├── certificate-object.json │ │ │ ├── check-version-object.json │ │ │ ├── dead-host-list.json │ │ │ ├── dead-host-object.json │ │ │ ├── dns-providers-list.json │ │ │ ├── error-object.json │ │ │ ├── error.json │ │ │ ├── health-object.json │ │ │ ├── permission-object.json │ │ │ ├── proxy-host-list.json │ │ │ ├── proxy-host-object.json │ │ │ ├── redirection-host-list.json │ │ │ ├── redirection-host-object.json │ │ │ ├── security-schemes.json │ │ │ ├── setting-list.json │ │ │ ├── setting-object.json │ │ │ ├── stream-list.json │ │ │ ├── stream-object.json │ │ │ ├── token-challenge.json │ │ │ ├── token-object.json │ │ │ ├── user-list.json │ │ │ └── user-object.json │ │ ├── index.js │ │ ├── paths/ │ │ │ ├── audit-log/ │ │ │ │ ├── get.json │ │ │ │ └── id/ │ │ │ │ └── get.json │ │ │ ├── get.json │ │ │ ├── nginx/ │ │ │ │ ├── access-lists/ │ │ │ │ │ ├── get.json │ │ │ │ │ ├── listID/ │ │ │ │ │ │ ├── delete.json │ │ │ │ │ │ ├── get.json │ │ │ │ │ │ └── put.json │ │ │ │ │ └── post.json │ │ │ │ ├── certificates/ │ │ │ │ │ ├── certID/ │ │ │ │ │ │ ├── delete.json │ │ │ │ │ │ ├── download/ │ │ │ │ │ │ │ └── get.json │ │ │ │ │ │ ├── get.json │ │ │ │ │ │ ├── renew/ │ │ │ │ │ │ │ └── post.json │ │ │ │ │ │ └── upload/ │ │ │ │ │ │ └── post.json │ │ │ │ │ ├── dns-providers/ │ │ │ │ │ │ └── get.json │ │ │ │ │ ├── get.json │ │ │ │ │ ├── post.json │ │ │ │ │ ├── test-http/ │ │ │ │ │ │ └── post.json │ │ │ │ │ └── validate/ │ │ │ │ │ └── post.json │ │ │ │ ├── dead-hosts/ │ │ │ │ │ ├── get.json │ │ │ │ │ ├── hostID/ │ │ │ │ │ │ ├── delete.json │ │ │ │ │ │ ├── disable/ │ │ │ │ │ │ │ └── post.json │ │ │ │ │ │ ├── enable/ │ │ │ │ │ │ │ └── post.json │ │ │ │ │ │ ├── get.json │ │ │ │ │ │ └── put.json │ │ │ │ │ └── post.json │ │ │ │ ├── proxy-hosts/ │ │ │ │ │ ├── get.json │ │ │ │ │ ├── hostID/ │ │ │ │ │ │ ├── delete.json │ │ │ │ │ │ ├── disable/ │ │ │ │ │ │ │ └── post.json │ │ │ │ │ │ ├── enable/ │ │ │ │ │ │ │ └── post.json │ │ │ │ │ │ ├── get.json │ │ │ │ │ │ └── put.json │ │ │ │ │ └── post.json │ │ │ │ ├── redirection-hosts/ │ │ │ │ │ ├── get.json │ │ │ │ │ ├── hostID/ │ │ │ │ │ │ ├── delete.json │ │ │ │ │ │ ├── disable/ │ │ │ │ │ │ │ └── post.json │ │ │ │ │ │ ├── enable/ │ │ │ │ │ │ │ └── post.json │ │ │ │ │ │ ├── get.json │ │ │ │ │ │ └── put.json │ │ │ │ │ └── post.json │ │ │ │ └── streams/ │ │ │ │ ├── get.json │ │ │ │ ├── post.json │ │ │ │ └── streamID/ │ │ │ │ ├── delete.json │ │ │ │ ├── disable/ │ │ │ │ │ └── post.json │ │ │ │ ├── enable/ │ │ │ │ │ └── post.json │ │ │ │ ├── get.json │ │ │ │ └── put.json │ │ │ ├── reports/ │ │ │ │ └── hosts/ │ │ │ │ └── get.json │ │ │ ├── schema/ │ │ │ │ └── get.json │ │ │ ├── settings/ │ │ │ │ ├── get.json │ │ │ │ └── settingID/ │ │ │ │ ├── get.json │ │ │ │ └── put.json │ │ │ ├── tokens/ │ │ │ │ ├── 2fa/ │ │ │ │ │ └── post.json │ │ │ │ ├── get.json │ │ │ │ └── post.json │ │ │ ├── users/ │ │ │ │ ├── get.json │ │ │ │ ├── post.json │ │ │ │ └── userID/ │ │ │ │ ├── 2fa/ │ │ │ │ │ ├── backup-codes/ │ │ │ │ │ │ └── post.json │ │ │ │ │ ├── delete.json │ │ │ │ │ ├── enable/ │ │ │ │ │ │ └── post.json │ │ │ │ │ ├── get.json │ │ │ │ │ └── post.json │ │ │ │ ├── auth/ │ │ │ │ │ └── put.json │ │ │ │ ├── delete.json │ │ │ │ ├── get.json │ │ │ │ ├── login/ │ │ │ │ │ └── post.json │ │ │ │ ├── permissions/ │ │ │ │ │ └── put.json │ │ │ │ └── put.json │ │ │ └── version/ │ │ │ └── check/ │ │ │ └── get.json │ │ └── swagger.json │ ├── scripts/ │ │ ├── install-certbot-plugins │ │ └── regenerate-config │ ├── setup.js │ ├── templates/ │ │ ├── _access.conf │ │ ├── _assets.conf │ │ ├── _certificates.conf │ │ ├── _certificates_stream.conf │ │ ├── _exploits.conf │ │ ├── _forced_ssl.conf │ │ ├── _header_comment.conf │ │ ├── _hsts.conf │ │ ├── _hsts_map.conf │ │ ├── _listen.conf │ │ ├── _location.conf │ │ ├── dead_host.conf │ │ ├── default.conf │ │ ├── ip_ranges.conf │ │ ├── letsencrypt-request.conf │ │ ├── proxy_host.conf │ │ ├── redirection_host.conf │ │ └── stream.conf │ └── validate-schema.js ├── docker/ │ ├── .dive-ci │ ├── Dockerfile │ ├── ci.env │ ├── dev/ │ │ ├── Dockerfile │ │ ├── dnsrouter-config.json │ │ ├── letsencrypt.ini │ │ ├── pdns-db.sql │ │ └── squid.conf │ ├── docker-compose.ci.mysql.yml │ ├── docker-compose.ci.postgres.yml │ ├── docker-compose.ci.sqlite.yml │ ├── docker-compose.ci.yml │ ├── docker-compose.dev.yml │ ├── rootfs/ │ │ ├── etc/ │ │ │ ├── letsencrypt.ini │ │ │ ├── logrotate.d/ │ │ │ │ └── nginx-proxy-manager │ │ │ ├── nginx/ │ │ │ │ ├── conf.d/ │ │ │ │ │ ├── default.conf │ │ │ │ │ ├── dev.conf │ │ │ │ │ ├── include/ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ ├── assets.conf │ │ │ │ │ │ ├── block-exploits.conf │ │ │ │ │ │ ├── force-ssl.conf │ │ │ │ │ │ ├── ip_ranges.conf │ │ │ │ │ │ ├── letsencrypt-acme-challenge.conf │ │ │ │ │ │ ├── log-proxy.conf │ │ │ │ │ │ ├── log-stream.conf │ │ │ │ │ │ ├── proxy.conf │ │ │ │ │ │ ├── ssl-cache-stream.conf │ │ │ │ │ │ ├── ssl-cache.conf │ │ │ │ │ │ └── ssl-ciphers.conf │ │ │ │ │ └── production.conf │ │ │ │ ├── mime.types │ │ │ │ └── nginx.conf │ │ │ └── s6-overlay/ │ │ │ └── s6-rc.d/ │ │ │ ├── backend/ │ │ │ │ ├── dependencies.d/ │ │ │ │ │ └── prepare │ │ │ │ ├── run │ │ │ │ └── type │ │ │ ├── frontend/ │ │ │ │ ├── dependencies.d/ │ │ │ │ │ └── prepare │ │ │ │ ├── run │ │ │ │ └── type │ │ │ ├── nginx/ │ │ │ │ ├── dependencies.d/ │ │ │ │ │ └── prepare │ │ │ │ ├── run │ │ │ │ └── type │ │ │ ├── prepare/ │ │ │ │ ├── 00-all.sh │ │ │ │ ├── 10-usergroup.sh │ │ │ │ ├── 20-paths.sh │ │ │ │ ├── 30-ownership.sh │ │ │ │ ├── 40-dynamic.sh │ │ │ │ ├── 50-ipv6.sh │ │ │ │ ├── 60-secrets.sh │ │ │ │ ├── 90-banner.sh │ │ │ │ ├── dependencies.d/ │ │ │ │ │ └── base │ │ │ │ ├── type │ │ │ │ └── up │ │ │ └── user/ │ │ │ └── contents.d/ │ │ │ ├── backend │ │ │ ├── frontend │ │ │ ├── nginx │ │ │ └── prepare │ │ ├── root/ │ │ │ └── .bashrc │ │ ├── usr/ │ │ │ └── bin/ │ │ │ ├── check-health │ │ │ └── common.sh │ │ └── var/ │ │ └── www/ │ │ └── html/ │ │ └── index.html │ └── scripts/ │ └── install-s6 ├── docs/ │ ├── .gitignore │ ├── .vitepress/ │ │ ├── config.mts │ │ └── theme/ │ │ ├── custom.css │ │ └── index.ts │ ├── package.json │ ├── scripts/ │ │ └── set-version.sh │ └── src/ │ ├── advanced-config/ │ │ └── index.md │ ├── faq/ │ │ └── index.md │ ├── guide/ │ │ └── index.md │ ├── index.md │ ├── public/ │ │ └── robots.txt │ ├── screenshots/ │ │ └── index.md │ ├── setup/ │ │ └── index.md │ ├── third-party/ │ │ └── index.md │ └── upgrading/ │ └── index.md ├── frontend/ │ ├── .gitignore │ ├── biome.json │ ├── check-locales.cjs │ ├── index.html │ ├── package.json │ ├── public/ │ │ └── images/ │ │ └── favicon/ │ │ ├── browserconfig.xml │ │ └── site.webmanifest │ ├── src/ │ │ ├── App.css │ │ ├── App.tsx │ │ ├── Router.tsx │ │ ├── api/ │ │ │ └── backend/ │ │ │ ├── base.ts │ │ │ ├── checkVersion.ts │ │ │ ├── createAccessList.ts │ │ │ ├── createCertificate.ts │ │ │ ├── createDeadHost.ts │ │ │ ├── createProxyHost.ts │ │ │ ├── createRedirectionHost.ts │ │ │ ├── createStream.ts │ │ │ ├── createUser.ts │ │ │ ├── deleteAccessList.ts │ │ │ ├── deleteCertificate.ts │ │ │ ├── deleteDeadHost.ts │ │ │ ├── deleteProxyHost.ts │ │ │ ├── deleteRedirectionHost.ts │ │ │ ├── deleteStream.ts │ │ │ ├── deleteUser.ts │ │ │ ├── downloadCertificate.ts │ │ │ ├── expansions.ts │ │ │ ├── getAccessList.ts │ │ │ ├── getAccessLists.ts │ │ │ ├── getAuditLog.ts │ │ │ ├── getAuditLogs.ts │ │ │ ├── getCertificate.ts │ │ │ ├── getCertificateDNSProviders.ts │ │ │ ├── getCertificates.ts │ │ │ ├── getDeadHost.ts │ │ │ ├── getDeadHosts.ts │ │ │ ├── getHealth.ts │ │ │ ├── getHostsReport.ts │ │ │ ├── getProxyHost.ts │ │ │ ├── getProxyHosts.ts │ │ │ ├── getRedirectionHost.ts │ │ │ ├── getRedirectionHosts.ts │ │ │ ├── getSetting.ts │ │ │ ├── getSettings.ts │ │ │ ├── getStream.ts │ │ │ ├── getStreams.ts │ │ │ ├── getToken.ts │ │ │ ├── getUser.ts │ │ │ ├── getUsers.ts │ │ │ ├── helpers.ts │ │ │ ├── index.ts │ │ │ ├── loginAsUser.ts │ │ │ ├── models.ts │ │ │ ├── refreshToken.ts │ │ │ ├── renewCertificate.ts │ │ │ ├── responseTypes.ts │ │ │ ├── setPermissions.ts │ │ │ ├── testHttpCertificate.ts │ │ │ ├── toggleDeadHost.ts │ │ │ ├── toggleProxyHost.ts │ │ │ ├── toggleRedirectionHost.ts │ │ │ ├── toggleStream.ts │ │ │ ├── toggleUser.ts │ │ │ ├── twoFactor.ts │ │ │ ├── updateAccessList.ts │ │ │ ├── updateAuth.ts │ │ │ ├── updateDeadHost.ts │ │ │ ├── updateProxyHost.ts │ │ │ ├── updateRedirectionHost.ts │ │ │ ├── updateSetting.ts │ │ │ ├── updateStream.ts │ │ │ ├── updateUser.ts │ │ │ ├── uploadCertificate.ts │ │ │ └── validateCertificate.ts │ │ ├── components/ │ │ │ ├── Button.tsx │ │ │ ├── EmptyData.tsx │ │ │ ├── ErrorNotFound.tsx │ │ │ ├── Flag.tsx │ │ │ ├── Form/ │ │ │ │ ├── AccessClientFields.tsx │ │ │ │ ├── AccessField.tsx │ │ │ │ ├── BasicAuthFields.tsx │ │ │ │ ├── DNSProviderFields.module.css │ │ │ │ ├── DNSProviderFields.tsx │ │ │ │ ├── DomainNamesField.tsx │ │ │ │ ├── LocationsFields.module.css │ │ │ │ ├── LocationsFields.tsx │ │ │ │ ├── NginxConfigField.tsx │ │ │ │ ├── SSLCertificateField.tsx │ │ │ │ ├── SSLOptionsFields.tsx │ │ │ │ └── index.ts │ │ │ ├── HasPermission.tsx │ │ │ ├── Loading.module.css │ │ │ ├── Loading.tsx │ │ │ ├── LoadingPage.tsx │ │ │ ├── LocalePicker.module.css │ │ │ ├── LocalePicker.tsx │ │ │ ├── NavLink.tsx │ │ │ ├── Page.module.css │ │ │ ├── Page.tsx │ │ │ ├── SiteContainer.tsx │ │ │ ├── SiteFooter.tsx │ │ │ ├── SiteHeader.module.css │ │ │ ├── SiteHeader.tsx │ │ │ ├── SiteMenu.tsx │ │ │ ├── Table/ │ │ │ │ ├── EmptyRow.tsx │ │ │ │ ├── Formatter/ │ │ │ │ │ ├── AccessListformatter.tsx │ │ │ │ │ ├── CertificateFormatter.tsx │ │ │ │ │ ├── CertificateInUseFormatter.tsx │ │ │ │ │ ├── DateFormatter.tsx │ │ │ │ │ ├── DomainsFormatter.tsx │ │ │ │ │ ├── EmailFormatter.tsx │ │ │ │ │ ├── EventFormatter.tsx │ │ │ │ │ ├── GravatarFormatter.tsx │ │ │ │ │ ├── RolesFormatter.tsx │ │ │ │ │ ├── TrueFalseFormatter.tsx │ │ │ │ │ ├── ValueWithDateFormatter.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── TableBody.tsx │ │ │ │ ├── TableHeader.tsx │ │ │ │ ├── TableHelpers.ts │ │ │ │ ├── TableLayout.tsx │ │ │ │ └── index.ts │ │ │ ├── ThemeSwitcher.module.css │ │ │ ├── ThemeSwitcher.tsx │ │ │ ├── Unhealthy.tsx │ │ │ └── index.ts │ │ ├── context/ │ │ │ ├── AuthContext.tsx │ │ │ ├── LocaleContext.tsx │ │ │ ├── ThemeContext.tsx │ │ │ └── index.ts │ │ ├── declarations.d.ts │ │ ├── hooks/ │ │ │ ├── index.ts │ │ │ ├── useAccessList.ts │ │ │ ├── useAccessLists.ts │ │ │ ├── useAuditLog.ts │ │ │ ├── useAuditLogs.ts │ │ │ ├── useCertificate.ts │ │ │ ├── useCertificates.ts │ │ │ ├── useCheckVersion.ts │ │ │ ├── useDeadHost.ts │ │ │ ├── useDeadHosts.ts │ │ │ ├── useDnsProviders.ts │ │ │ ├── useHealth.ts │ │ │ ├── useHostReport.ts │ │ │ ├── useProxyHost.ts │ │ │ ├── useProxyHosts.ts │ │ │ ├── useRedirectionHost.ts │ │ │ ├── useRedirectionHosts.ts │ │ │ ├── useSetting.ts │ │ │ ├── useStream.ts │ │ │ ├── useStreams.ts │ │ │ ├── useTheme.ts │ │ │ ├── useUser.ts │ │ │ └── useUsers.ts │ │ ├── locale/ │ │ │ ├── IntlProvider.tsx │ │ │ ├── README.md │ │ │ ├── Utils.test.tsx │ │ │ ├── Utils.ts │ │ │ ├── index.ts │ │ │ ├── scripts/ │ │ │ │ ├── locale-sort.cjs │ │ │ │ └── locale-sort.sh │ │ │ └── src/ │ │ │ ├── HelpDoc/ │ │ │ │ ├── bg/ │ │ │ │ │ ├── AccessLists.md │ │ │ │ │ ├── Certificates.md │ │ │ │ │ ├── DeadHosts.md │ │ │ │ │ ├── ProxyHosts.md │ │ │ │ │ ├── RedirectionHosts.md │ │ │ │ │ ├── Streams.md │ │ │ │ │ └── index.ts │ │ │ │ ├── cs/ │ │ │ │ │ ├── AccessLists.md │ │ │ │ │ ├── Certificates.md │ │ │ │ │ ├── DeadHosts.md │ │ │ │ │ ├── ProxyHosts.md │ │ │ │ │ ├── RedirectionHosts.md │ │ │ │ │ ├── Streams.md │ │ │ │ │ └── index.ts │ │ │ │ ├── de/ │ │ │ │ │ ├── AccessLists.md │ │ │ │ │ ├── Certificates.md │ │ │ │ │ ├── DeadHosts.md │ │ │ │ │ ├── ProxyHosts.md │ │ │ │ │ ├── RedirectionHosts.md │ │ │ │ │ ├── Streams.md │ │ │ │ │ └── index.ts │ │ │ │ ├── en/ │ │ │ │ │ ├── AccessLists.md │ │ │ │ │ ├── Certificates.md │ │ │ │ │ ├── DeadHosts.md │ │ │ │ │ ├── ProxyHosts.md │ │ │ │ │ ├── RedirectionHosts.md │ │ │ │ │ ├── Streams.md │ │ │ │ │ └── index.ts │ │ │ │ ├── es/ │ │ │ │ │ ├── AccessLists.md │ │ │ │ │ ├── Certificates.md │ │ │ │ │ ├── DeadHosts.md │ │ │ │ │ ├── ProxyHosts.md │ │ │ │ │ ├── RedirectionHosts.md │ │ │ │ │ ├── Streams.md │ │ │ │ │ └── index.ts │ │ │ │ ├── et/ │ │ │ │ │ ├── AccessLists.md │ │ │ │ │ ├── Certificates.md │ │ │ │ │ ├── DeadHosts.md │ │ │ │ │ ├── ProxyHosts.md │ │ │ │ │ ├── RedirectionHosts.md │ │ │ │ │ ├── Streams.md │ │ │ │ │ └── index.ts │ │ │ │ ├── fr/ │ │ │ │ │ ├── AccessLists.md │ │ │ │ │ ├── Certificates.md │ │ │ │ │ ├── DeadHosts.md │ │ │ │ │ ├── ProxyHosts.md │ │ │ │ │ ├── RedirectionHosts.md │ │ │ │ │ ├── Streams.md │ │ │ │ │ └── index.ts │ │ │ │ ├── ga/ │ │ │ │ │ ├── AccessLists.md │ │ │ │ │ ├── Certificates.md │ │ │ │ │ ├── DeadHosts.md │ │ │ │ │ ├── ProxyHosts.md │ │ │ │ │ ├── RedirectionHosts.md │ │ │ │ │ ├── Streams.md │ │ │ │ │ └── index.ts │ │ │ │ ├── hu/ │ │ │ │ │ ├── AccessLists.md │ │ │ │ │ ├── Certificates.md │ │ │ │ │ ├── DeadHosts.md │ │ │ │ │ ├── ProxyHosts.md │ │ │ │ │ ├── RedirectionHosts.md │ │ │ │ │ ├── Streams.md │ │ │ │ │ └── index.ts │ │ │ │ ├── id/ │ │ │ │ │ ├── AccessLists.md │ │ │ │ │ ├── Certificates.md │ │ │ │ │ ├── DeadHosts.md │ │ │ │ │ ├── ProxyHosts.md │ │ │ │ │ ├── RedirectionHosts.md │ │ │ │ │ ├── Streams.md │ │ │ │ │ └── index.ts │ │ │ │ ├── index.ts │ │ │ │ ├── it/ │ │ │ │ │ ├── AccessLists.md │ │ │ │ │ ├── Certificates.md │ │ │ │ │ ├── DeadHosts.md │ │ │ │ │ ├── ProxyHosts.md │ │ │ │ │ ├── RedirectionHosts.md │ │ │ │ │ ├── Streams.md │ │ │ │ │ └── index.ts │ │ │ │ ├── ja/ │ │ │ │ │ ├── AccessLists.md │ │ │ │ │ ├── Certificates.md │ │ │ │ │ ├── DeadHosts.md │ │ │ │ │ ├── ProxyHosts.md │ │ │ │ │ ├── RedirectionHosts.md │ │ │ │ │ ├── Streams.md │ │ │ │ │ └── index.ts │ │ │ │ ├── ko/ │ │ │ │ │ ├── AccessLists.md │ │ │ │ │ ├── Certificates.md │ │ │ │ │ ├── DeadHosts.md │ │ │ │ │ ├── ProxyHosts.md │ │ │ │ │ ├── RedirectionHosts.md │ │ │ │ │ ├── Streams.md │ │ │ │ │ └── index.ts │ │ │ │ ├── nl/ │ │ │ │ │ ├── AccessLists.md │ │ │ │ │ ├── Certificates.md │ │ │ │ │ ├── DeadHosts.md │ │ │ │ │ ├── ProxyHosts.md │ │ │ │ │ ├── RedirectionHosts.md │ │ │ │ │ ├── Streams.md │ │ │ │ │ └── index.ts │ │ │ │ ├── no/ │ │ │ │ │ ├── AccessLists.md │ │ │ │ │ ├── Certificates.md │ │ │ │ │ ├── DeadHosts.md │ │ │ │ │ ├── ProxyHosts.md │ │ │ │ │ ├── RedirectionHosts.md │ │ │ │ │ ├── Streams.md │ │ │ │ │ └── index.ts │ │ │ │ ├── pl/ │ │ │ │ │ ├── AccessLists.md │ │ │ │ │ ├── Certificates.md │ │ │ │ │ ├── DeadHosts.md │ │ │ │ │ ├── ProxyHosts.md │ │ │ │ │ ├── RedirectionHosts.md │ │ │ │ │ ├── Streams.md │ │ │ │ │ └── index.ts │ │ │ │ ├── pt/ │ │ │ │ │ ├── AccessLists.md │ │ │ │ │ ├── Certificates.md │ │ │ │ │ ├── DeadHosts.md │ │ │ │ │ ├── ProxyHosts.md │ │ │ │ │ ├── RedirectionHosts.md │ │ │ │ │ ├── Streams.md │ │ │ │ │ └── index.ts │ │ │ │ ├── ru/ │ │ │ │ │ ├── AccessLists.md │ │ │ │ │ ├── Certificates.md │ │ │ │ │ ├── DeadHosts.md │ │ │ │ │ ├── ProxyHosts.md │ │ │ │ │ ├── RedirectionHosts.md │ │ │ │ │ ├── Streams.md │ │ │ │ │ └── index.ts │ │ │ │ ├── sk/ │ │ │ │ │ ├── AccessLists.md │ │ │ │ │ ├── Certificates.md │ │ │ │ │ ├── DeadHosts.md │ │ │ │ │ ├── ProxyHosts.md │ │ │ │ │ ├── RedirectionHosts.md │ │ │ │ │ ├── Streams.md │ │ │ │ │ └── index.ts │ │ │ │ ├── tr/ │ │ │ │ │ ├── AccessLists.md │ │ │ │ │ ├── Certificates.md │ │ │ │ │ ├── DeadHosts.md │ │ │ │ │ ├── ProxyHosts.md │ │ │ │ │ ├── RedirectionHosts.md │ │ │ │ │ ├── Streams.md │ │ │ │ │ └── index.ts │ │ │ │ ├── vi/ │ │ │ │ │ ├── AccessLists.md │ │ │ │ │ ├── Certificates.md │ │ │ │ │ ├── DeadHosts.md │ │ │ │ │ ├── ProxyHosts.md │ │ │ │ │ ├── RedirectionHosts.md │ │ │ │ │ ├── Streams.md │ │ │ │ │ └── index.ts │ │ │ │ └── zh/ │ │ │ │ ├── AccessLists.md │ │ │ │ ├── Certificates.md │ │ │ │ ├── DeadHosts.md │ │ │ │ ├── ProxyHosts.md │ │ │ │ ├── RedirectionHosts.md │ │ │ │ ├── Streams.md │ │ │ │ └── index.ts │ │ │ ├── bg.json │ │ │ ├── cs.json │ │ │ ├── de.json │ │ │ ├── en.json │ │ │ ├── es.json │ │ │ ├── et.json │ │ │ ├── fr.json │ │ │ ├── ga.json │ │ │ ├── hu.json │ │ │ ├── id.json │ │ │ ├── it.json │ │ │ ├── ja.json │ │ │ ├── ko.json │ │ │ ├── lang-list.json │ │ │ ├── nl.json │ │ │ ├── no.json │ │ │ ├── pl.json │ │ │ ├── pt.json │ │ │ ├── ru.json │ │ │ ├── sk.json │ │ │ ├── tr.json │ │ │ ├── vi.json │ │ │ └── zh.json │ │ ├── main.tsx │ │ ├── modals/ │ │ │ ├── AccessListModal.tsx │ │ │ ├── ChangePasswordModal.tsx │ │ │ ├── CustomCertificateModal.tsx │ │ │ ├── DNSCertificateModal.tsx │ │ │ ├── DeadHostModal.tsx │ │ │ ├── DeleteConfirmModal.tsx │ │ │ ├── EventDetailsModal.tsx │ │ │ ├── HTTPCertificateModal.tsx │ │ │ ├── HelpModal.tsx │ │ │ ├── PermissionsModal.module.css │ │ │ ├── PermissionsModal.tsx │ │ │ ├── ProxyHostModal.tsx │ │ │ ├── RedirectionHostModal.tsx │ │ │ ├── RenewCertificateModal.tsx │ │ │ ├── SetPasswordModal.tsx │ │ │ ├── StreamModal.tsx │ │ │ ├── TwoFactorModal.tsx │ │ │ ├── UserModal.tsx │ │ │ └── index.ts │ │ ├── modules/ │ │ │ ├── AuthStore.ts │ │ │ ├── Permissions.ts │ │ │ └── Validations.tsx │ │ ├── notifications/ │ │ │ ├── Msg.module.css │ │ │ ├── Msg.tsx │ │ │ ├── helpers.tsx │ │ │ └── index.ts │ │ ├── pages/ │ │ │ ├── Access/ │ │ │ │ ├── Table.tsx │ │ │ │ ├── TableWrapper.tsx │ │ │ │ └── index.tsx │ │ │ ├── AuditLog/ │ │ │ │ ├── Table.tsx │ │ │ │ ├── TableWrapper.tsx │ │ │ │ └── index.tsx │ │ │ ├── Certificates/ │ │ │ │ ├── Table.tsx │ │ │ │ ├── TableWrapper.tsx │ │ │ │ └── index.tsx │ │ │ ├── Dashboard/ │ │ │ │ └── index.tsx │ │ │ ├── Login/ │ │ │ │ ├── index.module.css │ │ │ │ └── index.tsx │ │ │ ├── Nginx/ │ │ │ │ ├── DeadHosts/ │ │ │ │ │ ├── Table.tsx │ │ │ │ │ ├── TableWrapper.tsx │ │ │ │ │ └── index.tsx │ │ │ │ ├── ProxyHosts/ │ │ │ │ │ ├── Table.tsx │ │ │ │ │ ├── TableWrapper.tsx │ │ │ │ │ └── index.tsx │ │ │ │ ├── RedirectionHosts/ │ │ │ │ │ ├── Table.tsx │ │ │ │ │ ├── TableWrapper.tsx │ │ │ │ │ └── index.tsx │ │ │ │ └── Streams/ │ │ │ │ ├── Table.tsx │ │ │ │ ├── TableWrapper.tsx │ │ │ │ └── index.tsx │ │ │ ├── Settings/ │ │ │ │ ├── DefaultSite.tsx │ │ │ │ ├── Layout.tsx │ │ │ │ └── index.tsx │ │ │ ├── Setup/ │ │ │ │ ├── index.module.css │ │ │ │ └── index.tsx │ │ │ └── Users/ │ │ │ ├── Table.tsx │ │ │ ├── TableWrapper.tsx │ │ │ └── index.tsx │ │ └── vite-env.d.ts │ ├── tsconfig.json │ ├── tsconfig.node.json │ ├── vite.config.ts │ └── vitest-setup.js ├── scripts/ │ ├── .common.sh │ ├── buildx │ ├── ci/ │ │ ├── frontend-build │ │ ├── fulltest-cypress │ │ └── test-and-build │ ├── cypress-dev │ ├── destroy-dev │ ├── docs-build │ ├── docs-upload │ ├── start-dev │ ├── stop-dev │ └── wait-healthy └── test/ ├── .eslintrc.json ├── .gitignore ├── .prettierrc ├── README.md ├── cypress/ │ ├── Dockerfile │ ├── config/ │ │ ├── ci.mjs │ │ └── dev.mjs │ ├── e2e/ │ │ └── api/ │ │ ├── Certificates.cy.js │ │ ├── Dashboard.cy.js │ │ ├── FullCertProvision.cy.js │ │ ├── Health.cy.js │ │ ├── Ldap.cy.js │ │ ├── OAuth.cy.js │ │ ├── ProxyHosts.cy.js │ │ ├── Settings.cy.js │ │ ├── Streams.cy.js │ │ ├── SwaggerSchema.cy.js │ │ └── Users.cy.js │ ├── fixtures/ │ │ ├── test.example.com-key.pem │ │ └── test.example.com.pem │ ├── plugins/ │ │ ├── backendApi/ │ │ │ ├── client.mjs │ │ │ ├── logger.mjs │ │ │ └── task.mjs │ │ └── index.mjs │ └── support/ │ ├── commands.mjs │ └── e2e.js ├── jsconfig.json ├── multi-reporter.json ├── package.json ├── vacuum-rules.yaml └── vacuum.conf.yaml