mirror of
https://github.com/MHSanaei/3x-ui.git
synced 2026-09-30 05:36:36 +08:00
768bbd2a29
* feat(settings): allow customizing Reality scan candidate list Persist a realityScanCandidates panel setting (defaulting to the previous hardcoded list), expose it in General Settings with i18n, and have the Find Targets scanner use it when the search box is empty. Fixes #5847 * style(frontend): oxfmt realityScanCandidates in setting.ts * Fix locale JSON syntax This change removes the malformed duplicate key and missing comma in the Android per-app proxy translations across the bundled locale files. The JSON now parses correctly while preserving the translated labels for each language. * docs(i18n): update Happ translations Localize the remaining Happ subscription settings strings across the translation files and refine the English copy. This aligns the labels and descriptions with the current Happ behavior for notifications, TUN options, HWID enforcement, routing presets, and per-app proxy settings. * refactor(reality): drop test-only scaffolding from the candidate setting TestDefaultRealityScanCandidatesCSV compared the CSV against its own initializer and a defaultValueMap lookup, and TestRealityScanCandidateTokensFallsBackWithoutDB drove a no-database state no production caller reaches (the only caller is the scanRealityTargets handler, served after InitDB). The s != nil && GetDB() != nil guard existed only for that second test. None of them could fail except in lockstep with the code they restate. * docs(api): describe the setting-driven scanRealityTargets fallback An empty targets value now probes the realityScanCandidates setting, but the endpoint summary, parameter description and handler comment still promised the built-in seed list, so API consumers were told the wrong target set. Regenerated openapi.json and synced the docs copy, which also lacked the new AllSetting field in the settings reference. --------- Co-authored-by: mrchatam <287639636+mrchatam@users.noreply.github.com> Co-authored-by: Sanaei <ho3ein.sanaei@gmail.com>
333 lines
27 KiB
Plaintext
333 lines
27 KiB
Plaintext
---
|
||
title: Server
|
||
description: System status, log retrieval, certificate generators, Xray binary
|
||
management, and backup/restore. All under /panel/api/server.
|
||
full: true
|
||
_openapi:
|
||
preload:
|
||
- ./public/openapi.json
|
||
toc:
|
||
- depth: 2
|
||
title: Serve this API description as an OpenAPI 3 document — the same file that
|
||
powers the API Docs page. Requires a session or Bearer token like the
|
||
rest of /panel/api. Useful for generating clients or importing into API
|
||
tooling.
|
||
url: '#serve-this-api-description-as-an-openapi-3-document--the-same-file-that-powers-the-api-docs-page-requires-a-session-or-bearer-token-like-the-rest-of-panelapi-useful-for-generating-clients-or-importing-into-api-tooling'
|
||
- depth: 2
|
||
title: 'Real-time machine snapshot: CPU, memory, swap, disk, network IO, load
|
||
averages, open connections, Xray state. Cached and refreshed every 2
|
||
seconds in the background.'
|
||
url: '#real-time-machine-snapshot-cpu-memory-swap-disk-network-io-load-averages-open-connections-xray-state-cached-and-refreshed-every-2-seconds-in-the-background'
|
||
- depth: 2
|
||
title: Reports whether per-client IP limits can be enforced on this host. The
|
||
panel uses it to gate the "IP Limit" field, since enforcement depends on
|
||
Fail2ban being installed.
|
||
url: '#reports-whether-per-client-ip-limits-can-be-enforced-on-this-host-the-panel-uses-it-to-gate-the-ip-limit-field-since-enforcement-depends-on-fail2ban-being-installed'
|
||
- depth: 2
|
||
title: 'Legacy: aggregated CPU history. Use /history/cpu/:bucket instead — same
|
||
data with a uniform {t, v} shape.'
|
||
url: '#legacy-aggregated-cpu-history-use-historycpubucket-instead--same-data-with-a-uniform-t-v-shape'
|
||
- depth: 2
|
||
title: Aggregated time-series for one metric. Returns an array of {t, v} samples
|
||
covering the last ~6 hours.
|
||
url: '#aggregated-time-series-for-one-metric-returns-an-array-of-t-v-samples-covering-the-last-6-hours'
|
||
- depth: 2
|
||
title: Xray runtime metrics state — whether the xray config has a `metrics`
|
||
block, which expvar keys are flowing, and the current snapshot values
|
||
for each. Returns an empty state when metrics are not configured.
|
||
url: '#xray-runtime-metrics-state--whether-the-xray-config-has-a-metrics-block-which-expvar-keys-are-flowing-and-the-current-snapshot-values-for-each-returns-an-empty-state-when-metrics-are-not-configured'
|
||
- depth: 2
|
||
title: Time-series history for one Xray runtime metric over the last ~6 hours.
|
||
Same {t, v} shape as /history/:metric/:bucket.
|
||
url: '#time-series-history-for-one-xray-runtime-metric-over-the-last-6-hours-same-t-v-shape-as-historymetricbucket'
|
||
- depth: 2
|
||
title: Latest snapshot from the Xray observatory — per-outbound latency, health
|
||
status, and last-probe time. Only populated when the Xray config has an
|
||
observatory configured.
|
||
url: '#latest-snapshot-from-the-xray-observatory--per-outbound-latency-health-status-and-last-probe-time-only-populated-when-the-xray-config-has-an-observatory-configured'
|
||
- depth: 2
|
||
title: Time-series of observatory probe results for one outbound tag. Same {t,
|
||
v} shape as the other history endpoints.
|
||
url: '#time-series-of-observatory-probe-results-for-one-outbound-tag-same-t-v-shape-as-the-other-history-endpoints'
|
||
- depth: 2
|
||
title: List Xray binary versions available for install on this host.
|
||
url: '#list-xray-binary-versions-available-for-install-on-this-host'
|
||
- depth: 2
|
||
title: Check whether a newer 3x-ui release is available on GitHub.
|
||
url: '#check-whether-a-newer-3x-ui-release-is-available-on-github'
|
||
- depth: 2
|
||
title: Report the outcome of the most recently launched panel self-update (see
|
||
POST updatePanel). Compare the returned runId against the one
|
||
updatePanel returned to tell this run apart from a stale result.
|
||
url: '#report-the-outcome-of-the-most-recently-launched-panel-self-update-see-post-updatepanel-compare-the-returned-runid-against-the-one-updatepanel-returned-to-tell-this-run-apart-from-a-stale-result'
|
||
- depth: 2
|
||
title: Return the assembled Xray config that’s currently running on this host.
|
||
url: '#return-the-assembled-xray-config-thats-currently-running-on-this-host'
|
||
- depth: 2
|
||
title: 'Stream a full database backup as an attachment: the SQLite .db file on
|
||
SQLite panels, or a pg_dump custom-format archive (.dump) on PostgreSQL
|
||
panels. Use as a manual backup.'
|
||
url: '#stream-a-full-database-backup-as-an-attachment-the-sqlite-db-file-on-sqlite-panels-or-a-pg_dump-custom-format-archive-dump-on-postgresql-panels-use-as-a-manual-backup'
|
||
- depth: 2
|
||
title: 'Stream a cross-engine migration file as an attachment: a .dump (SQL
|
||
text) on SQLite, or a .db SQLite database built from the live data on
|
||
PostgreSQL.'
|
||
url: '#stream-a-cross-engine-migration-file-as-an-attachment-a-dump-sql-text-on-sqlite-or-a-db-sqlite-database-built-from-the-live-data-on-postgresql'
|
||
- depth: 2
|
||
title: Generate a fresh UUID v4. Convenience helper for client IDs.
|
||
url: '#generate-a-fresh-uuid-v4-convenience-helper-for-client-ids'
|
||
- depth: 2
|
||
title: Return this panel's own web TLS certificate and key file paths. The
|
||
central panel calls it on a node (via the node API token) so "Set Cert
|
||
from Panel" fills a node-assigned inbound with paths that exist on the
|
||
node.
|
||
url: '#return-this-panels-own-web-tls-certificate-and-key-file-paths-the-central-panel-calls-it-on-a-node-via-the-node-api-token-so-set-cert-from-panel-fills-a-node-assigned-inbound-with-paths-that-exist-on-the-node'
|
||
- depth: 2
|
||
title: Read-only summaries (guid, parentGuid, name, address, status, versions)
|
||
of the nodes this panel manages. A parent panel calls it on a node (via
|
||
the node API token) to surface transitive sub-nodes in a chained
|
||
topology. Counts are computed by the parent, not returned here.
|
||
url: '#read-only-summaries-guid-parentguid-name-address-status-versions-of-the-nodes-this-panel-manages-a-parent-panel-calls-it-on-a-node-via-the-node-api-token-to-surface-transitive-sub-nodes-in-a-chained-topology-counts-are-computed-by-the-parent-not-returned-here'
|
||
- depth: 2
|
||
title: Generate a new X25519 keypair for Reality.
|
||
url: '#generate-a-new-x25519-keypair-for-reality'
|
||
- depth: 2
|
||
title: Generate a new ML-DSA-65 keypair. Returns {seed, verify}.
|
||
url: '#generate-a-new-ml-dsa-65-keypair-returns-seed-verify'
|
||
- depth: 2
|
||
title: Generate a new ML-KEM-768 keypair. Returns {seed, client}.
|
||
url: '#generate-a-new-ml-kem-768-keypair-returns-seed-client'
|
||
- depth: 2
|
||
title: Generate VLESS encryption auth options. Returns an auths array each with
|
||
id, label, encryption, and decryption fields.
|
||
url: '#generate-vless-encryption-auth-options-returns-an-auths-array-each-with-id-label-encryption-and-decryption-fields'
|
||
- depth: 2
|
||
title: Stop the Xray binary. All proxies go offline immediately.
|
||
url: '#stop-the-xray-binary-all-proxies-go-offline-immediately'
|
||
- depth: 2
|
||
title: Reload Xray with the current config. Typically required after structural
|
||
inbound or routing changes.
|
||
url: '#reload-xray-with-the-current-config-typically-required-after-structural-inbound-or-routing-changes'
|
||
- depth: 2
|
||
title: Download and install the specified Xray version. Pass "latest" for the
|
||
newest release.
|
||
url: '#download-and-install-the-specified-xray-version-pass-latest-for-the-newest-release'
|
||
- depth: 2
|
||
title: Self-update the panel to the latest version. The server restarts on
|
||
success.
|
||
url: '#self-update-the-panel-to-the-latest-version-the-server-restarts-on-success'
|
||
- depth: 2
|
||
title: Toggle the panel update channel between stable and the rolling per-commit
|
||
dev release. Only effective on dev builds.
|
||
url: '#toggle-the-panel-update-channel-between-stable-and-the-rolling-per-commit-dev-release-only-effective-on-dev-builds'
|
||
- depth: 2
|
||
title: Refresh the default GeoIP / GeoSite data files. Use the /:fileName
|
||
variant to update one file.
|
||
url: '#refresh-the-default-geoip--geosite-data-files-use-the-filename-variant-to-update-one-file'
|
||
- depth: 2
|
||
title: Refresh a single Geo file by filename (e.g. geoip.dat, geosite.dat).
|
||
url: '#refresh-a-single-geo-file-by-filename-eg-geoipdat-geositedat'
|
||
- depth: 2
|
||
title: Return the last N lines of the panel’s own log.
|
||
url: '#return-the-last-n-lines-of-the-panels-own-log'
|
||
- depth: 2
|
||
title: Return the last N lines of the Xray process log.
|
||
url: '#return-the-last-n-lines-of-the-xray-process-log'
|
||
- depth: 2
|
||
title: Return live AmneziaWG peer activity (handshake, endpoint, transfer) plus
|
||
the panel’s own AmneziaWG event lines.
|
||
url: '#return-live-amneziawg-peer-activity-handshake-endpoint-transfer-plus-the-panels-own-amneziawg-event-lines'
|
||
- depth: 2
|
||
title: Restore the panel DB from an uploaded backup (multipart form, field name
|
||
"db"). SQLite panels accept a SQLite database (.db) or a SQLite
|
||
migration dump (.dump); PostgreSQL panels accept a pg_dump archive
|
||
(.dump), a SQLite database (.db), or a SQLite migration dump. The panel
|
||
restarts after restore. Destructive.
|
||
url: '#restore-the-panel-db-from-an-uploaded-backup-multipart-form-field-name-db-sqlite-panels-accept-a-sqlite-database-db-or-a-sqlite-migration-dump-dump-postgresql-panels-accept-a-pg_dump-archive-dump-a-sqlite-database-db-or-a-sqlite-migration-dump-the-panel-restarts-after-restore-destructive'
|
||
- depth: 2
|
||
title: Generate a new ECH (Encrypted Client Hello) keypair and config list for
|
||
the given SNI.
|
||
url: '#generate-a-new-ech-encrypted-client-hello-keypair-and-config-list-for-the-given-sni'
|
||
- depth: 2
|
||
title: Compute the hex SHA-256 of a certificate (DER) for pinning
|
||
(pinnedPeerCertSha256). Provide either a server file path or inline
|
||
PEM/DER content.
|
||
url: '#compute-the-hex-sha-256-of-a-certificate-der-for-pinning-pinnedpeercertsha256-provide-either-a-server-file-path-or-inline-pemder-content'
|
||
- depth: 2
|
||
title: Run `xray tls ping` against a remote server and return its live
|
||
leaf-certificate SHA-256 hash(es) for pinning (pinnedPeerCertSha256).
|
||
url: '#run-xray-tls-ping-against-a-remote-server-and-return-its-live-leaf-certificate-sha-256-hashes-for-pinning-pinnedpeercertsha256'
|
||
- depth: 2
|
||
title: Run a live TLS 1.3 probe against a candidate REALITY target and return a
|
||
feasibility verdict (TLS 1.3 + h2 + X25519 + trusted certificate) plus
|
||
the certificate SAN DNS names. A target on a private/loopback address is
|
||
reported with privateTarget=true and probed only when allowPrivate is
|
||
set.
|
||
url: '#run-a-live-tls-13-probe-against-a-candidate-reality-target-and-return-a-feasibility-verdict-tls-13--h2--x25519--trusted-certificate-plus-the-certificate-san-dns-names-a-target-on-a-privateloopback-address-is-reported-with-privatetargettrue-and-probed-only-when-allowprivate-is-set'
|
||
- depth: 2
|
||
title: Probe/discover REALITY targets and return each verdict ranked by
|
||
feasibility then latency. Each comma-separated token may be a domain
|
||
(validated with SNI), a bare IP, or a CIDR range (discovered without SNI
|
||
by reading the certificate domain). When empty, the
|
||
realityScanCandidates setting is probed (the built-in seed list if that
|
||
setting is empty).
|
||
url: '#probediscover-reality-targets-and-return-each-verdict-ranked-by-feasibility-then-latency-each-comma-separated-token-may-be-a-domain-validated-with-sni-a-bare-ip-or-a-cidr-range-discovered-without-sni-by-reading-the-certificate-domain-when-empty-the-realityscancandidates-setting-is-probed-the-built-in-seed-list-if-that-setting-is-empty'
|
||
- depth: 2
|
||
title: Fetch the fully aggregated inbound_client_ips database table. Used by
|
||
nodes to sync recently active IPs across the cluster.
|
||
url: '#fetch-the-fully-aggregated-inbound_client_ips-database-table-used-by-nodes-to-sync-recently-active-ips-across-the-cluster'
|
||
- depth: 2
|
||
title: Submit a list of recently active IP timestamps. The panel merges them
|
||
with the existing database to maintain a unified global IP-limit view.
|
||
url: '#submit-a-list-of-recently-active-ip-timestamps-the-panel-merges-them-with-the-existing-database-to-maintain-a-unified-global-ip-limit-view'
|
||
structuredData:
|
||
headings:
|
||
- content: Serve this API description as an OpenAPI 3 document — the same file
|
||
that powers the API Docs page. Requires a session or Bearer token like
|
||
the rest of /panel/api. Useful for generating clients or importing
|
||
into API tooling.
|
||
id: serve-this-api-description-as-an-openapi-3-document--the-same-file-that-powers-the-api-docs-page-requires-a-session-or-bearer-token-like-the-rest-of-panelapi-useful-for-generating-clients-or-importing-into-api-tooling
|
||
- content: 'Real-time machine snapshot: CPU, memory, swap, disk, network IO, load
|
||
averages, open connections, Xray state. Cached and refreshed every 2
|
||
seconds in the background.'
|
||
id: real-time-machine-snapshot-cpu-memory-swap-disk-network-io-load-averages-open-connections-xray-state-cached-and-refreshed-every-2-seconds-in-the-background
|
||
- content: Reports whether per-client IP limits can be enforced on this host. The
|
||
panel uses it to gate the "IP Limit" field, since enforcement depends
|
||
on Fail2ban being installed.
|
||
id: reports-whether-per-client-ip-limits-can-be-enforced-on-this-host-the-panel-uses-it-to-gate-the-ip-limit-field-since-enforcement-depends-on-fail2ban-being-installed
|
||
- content: 'Legacy: aggregated CPU history. Use /history/cpu/:bucket instead —
|
||
same data with a uniform {t, v} shape.'
|
||
id: legacy-aggregated-cpu-history-use-historycpubucket-instead--same-data-with-a-uniform-t-v-shape
|
||
- content: Aggregated time-series for one metric. Returns an array of {t, v}
|
||
samples covering the last ~6 hours.
|
||
id: aggregated-time-series-for-one-metric-returns-an-array-of-t-v-samples-covering-the-last-6-hours
|
||
- content: Xray runtime metrics state — whether the xray config has a `metrics`
|
||
block, which expvar keys are flowing, and the current snapshot values
|
||
for each. Returns an empty state when metrics are not configured.
|
||
id: xray-runtime-metrics-state--whether-the-xray-config-has-a-metrics-block-which-expvar-keys-are-flowing-and-the-current-snapshot-values-for-each-returns-an-empty-state-when-metrics-are-not-configured
|
||
- content: Time-series history for one Xray runtime metric over the last ~6 hours.
|
||
Same {t, v} shape as /history/:metric/:bucket.
|
||
id: time-series-history-for-one-xray-runtime-metric-over-the-last-6-hours-same-t-v-shape-as-historymetricbucket
|
||
- content: Latest snapshot from the Xray observatory — per-outbound latency,
|
||
health status, and last-probe time. Only populated when the Xray
|
||
config has an observatory configured.
|
||
id: latest-snapshot-from-the-xray-observatory--per-outbound-latency-health-status-and-last-probe-time-only-populated-when-the-xray-config-has-an-observatory-configured
|
||
- content: Time-series of observatory probe results for one outbound tag. Same {t,
|
||
v} shape as the other history endpoints.
|
||
id: time-series-of-observatory-probe-results-for-one-outbound-tag-same-t-v-shape-as-the-other-history-endpoints
|
||
- content: List Xray binary versions available for install on this host.
|
||
id: list-xray-binary-versions-available-for-install-on-this-host
|
||
- content: Check whether a newer 3x-ui release is available on GitHub.
|
||
id: check-whether-a-newer-3x-ui-release-is-available-on-github
|
||
- content: Report the outcome of the most recently launched panel self-update (see
|
||
POST updatePanel). Compare the returned runId against the one
|
||
updatePanel returned to tell this run apart from a stale result.
|
||
id: report-the-outcome-of-the-most-recently-launched-panel-self-update-see-post-updatepanel-compare-the-returned-runid-against-the-one-updatepanel-returned-to-tell-this-run-apart-from-a-stale-result
|
||
- content: Return the assembled Xray config that’s currently running on this host.
|
||
id: return-the-assembled-xray-config-thats-currently-running-on-this-host
|
||
- content: 'Stream a full database backup as an attachment: the SQLite .db file on
|
||
SQLite panels, or a pg_dump custom-format archive (.dump) on
|
||
PostgreSQL panels. Use as a manual backup.'
|
||
id: stream-a-full-database-backup-as-an-attachment-the-sqlite-db-file-on-sqlite-panels-or-a-pg_dump-custom-format-archive-dump-on-postgresql-panels-use-as-a-manual-backup
|
||
- content: 'Stream a cross-engine migration file as an attachment: a .dump (SQL
|
||
text) on SQLite, or a .db SQLite database built from the live data on
|
||
PostgreSQL.'
|
||
id: stream-a-cross-engine-migration-file-as-an-attachment-a-dump-sql-text-on-sqlite-or-a-db-sqlite-database-built-from-the-live-data-on-postgresql
|
||
- content: Generate a fresh UUID v4. Convenience helper for client IDs.
|
||
id: generate-a-fresh-uuid-v4-convenience-helper-for-client-ids
|
||
- content: Return this panel's own web TLS certificate and key file paths. The
|
||
central panel calls it on a node (via the node API token) so "Set Cert
|
||
from Panel" fills a node-assigned inbound with paths that exist on the
|
||
node.
|
||
id: return-this-panels-own-web-tls-certificate-and-key-file-paths-the-central-panel-calls-it-on-a-node-via-the-node-api-token-so-set-cert-from-panel-fills-a-node-assigned-inbound-with-paths-that-exist-on-the-node
|
||
- content: Read-only summaries (guid, parentGuid, name, address, status, versions)
|
||
of the nodes this panel manages. A parent panel calls it on a node
|
||
(via the node API token) to surface transitive sub-nodes in a chained
|
||
topology. Counts are computed by the parent, not returned here.
|
||
id: read-only-summaries-guid-parentguid-name-address-status-versions-of-the-nodes-this-panel-manages-a-parent-panel-calls-it-on-a-node-via-the-node-api-token-to-surface-transitive-sub-nodes-in-a-chained-topology-counts-are-computed-by-the-parent-not-returned-here
|
||
- content: Generate a new X25519 keypair for Reality.
|
||
id: generate-a-new-x25519-keypair-for-reality
|
||
- content: Generate a new ML-DSA-65 keypair. Returns {seed, verify}.
|
||
id: generate-a-new-ml-dsa-65-keypair-returns-seed-verify
|
||
- content: Generate a new ML-KEM-768 keypair. Returns {seed, client}.
|
||
id: generate-a-new-ml-kem-768-keypair-returns-seed-client
|
||
- content: Generate VLESS encryption auth options. Returns an auths array each
|
||
with id, label, encryption, and decryption fields.
|
||
id: generate-vless-encryption-auth-options-returns-an-auths-array-each-with-id-label-encryption-and-decryption-fields
|
||
- content: Stop the Xray binary. All proxies go offline immediately.
|
||
id: stop-the-xray-binary-all-proxies-go-offline-immediately
|
||
- content: Reload Xray with the current config. Typically required after
|
||
structural inbound or routing changes.
|
||
id: reload-xray-with-the-current-config-typically-required-after-structural-inbound-or-routing-changes
|
||
- content: Download and install the specified Xray version. Pass "latest" for the
|
||
newest release.
|
||
id: download-and-install-the-specified-xray-version-pass-latest-for-the-newest-release
|
||
- content: Self-update the panel to the latest version. The server restarts on
|
||
success.
|
||
id: self-update-the-panel-to-the-latest-version-the-server-restarts-on-success
|
||
- content: Toggle the panel update channel between stable and the rolling
|
||
per-commit dev release. Only effective on dev builds.
|
||
id: toggle-the-panel-update-channel-between-stable-and-the-rolling-per-commit-dev-release-only-effective-on-dev-builds
|
||
- content: Refresh the default GeoIP / GeoSite data files. Use the /:fileName
|
||
variant to update one file.
|
||
id: refresh-the-default-geoip--geosite-data-files-use-the-filename-variant-to-update-one-file
|
||
- content: Refresh a single Geo file by filename (e.g. geoip.dat, geosite.dat).
|
||
id: refresh-a-single-geo-file-by-filename-eg-geoipdat-geositedat
|
||
- content: Return the last N lines of the panel’s own log.
|
||
id: return-the-last-n-lines-of-the-panels-own-log
|
||
- content: Return the last N lines of the Xray process log.
|
||
id: return-the-last-n-lines-of-the-xray-process-log
|
||
- content: Return live AmneziaWG peer activity (handshake, endpoint, transfer)
|
||
plus the panel’s own AmneziaWG event lines.
|
||
id: return-live-amneziawg-peer-activity-handshake-endpoint-transfer-plus-the-panels-own-amneziawg-event-lines
|
||
- content: Restore the panel DB from an uploaded backup (multipart form, field
|
||
name "db"). SQLite panels accept a SQLite database (.db) or a SQLite
|
||
migration dump (.dump); PostgreSQL panels accept a pg_dump archive
|
||
(.dump), a SQLite database (.db), or a SQLite migration dump. The
|
||
panel restarts after restore. Destructive.
|
||
id: restore-the-panel-db-from-an-uploaded-backup-multipart-form-field-name-db-sqlite-panels-accept-a-sqlite-database-db-or-a-sqlite-migration-dump-dump-postgresql-panels-accept-a-pg_dump-archive-dump-a-sqlite-database-db-or-a-sqlite-migration-dump-the-panel-restarts-after-restore-destructive
|
||
- content: Generate a new ECH (Encrypted Client Hello) keypair and config list for
|
||
the given SNI.
|
||
id: generate-a-new-ech-encrypted-client-hello-keypair-and-config-list-for-the-given-sni
|
||
- content: Compute the hex SHA-256 of a certificate (DER) for pinning
|
||
(pinnedPeerCertSha256). Provide either a server file path or inline
|
||
PEM/DER content.
|
||
id: compute-the-hex-sha-256-of-a-certificate-der-for-pinning-pinnedpeercertsha256-provide-either-a-server-file-path-or-inline-pemder-content
|
||
- content: Run `xray tls ping` against a remote server and return its live
|
||
leaf-certificate SHA-256 hash(es) for pinning (pinnedPeerCertSha256).
|
||
id: run-xray-tls-ping-against-a-remote-server-and-return-its-live-leaf-certificate-sha-256-hashes-for-pinning-pinnedpeercertsha256
|
||
- content: Run a live TLS 1.3 probe against a candidate REALITY target and return
|
||
a feasibility verdict (TLS 1.3 + h2 + X25519 + trusted certificate)
|
||
plus the certificate SAN DNS names. A target on a private/loopback
|
||
address is reported with privateTarget=true and probed only when
|
||
allowPrivate is set.
|
||
id: run-a-live-tls-13-probe-against-a-candidate-reality-target-and-return-a-feasibility-verdict-tls-13--h2--x25519--trusted-certificate-plus-the-certificate-san-dns-names-a-target-on-a-privateloopback-address-is-reported-with-privatetargettrue-and-probed-only-when-allowprivate-is-set
|
||
- content: Probe/discover REALITY targets and return each verdict ranked by
|
||
feasibility then latency. Each comma-separated token may be a domain
|
||
(validated with SNI), a bare IP, or a CIDR range (discovered without
|
||
SNI by reading the certificate domain). When empty, the
|
||
realityScanCandidates setting is probed (the built-in seed list if
|
||
that setting is empty).
|
||
id: probediscover-reality-targets-and-return-each-verdict-ranked-by-feasibility-then-latency-each-comma-separated-token-may-be-a-domain-validated-with-sni-a-bare-ip-or-a-cidr-range-discovered-without-sni-by-reading-the-certificate-domain-when-empty-the-realityscancandidates-setting-is-probed-the-built-in-seed-list-if-that-setting-is-empty
|
||
- content: Fetch the fully aggregated inbound_client_ips database table. Used by
|
||
nodes to sync recently active IPs across the cluster.
|
||
id: fetch-the-fully-aggregated-inbound_client_ips-database-table-used-by-nodes-to-sync-recently-active-ips-across-the-cluster
|
||
- content: Submit a list of recently active IP timestamps. The panel merges them
|
||
with the existing database to maintain a unified global IP-limit view.
|
||
id: submit-a-list-of-recently-active-ip-timestamps-the-panel-merges-them-with-the-existing-database-to-maintain-a-unified-global-ip-limit-view
|
||
contents: []
|
||
---
|
||
|
||
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
|
||
|
||
export default function Layout(props) {
|
||
const { APIPage, OpenAPIPage } = props.components ?? {};
|
||
// "APIPage" is the old name from v10, this allows both for backward compatibility
|
||
const Comp = OpenAPIPage ?? APIPage;
|
||
return (
|
||
<>
|
||
{props.children}
|
||
<Comp document="./public/openapi.json" webhooks={[]} operations={[{"path":"/panel/api/openapi.json","method":"get"},{"path":"/panel/api/server/status","method":"get"},{"path":"/panel/api/server/fail2banStatus","method":"get"},{"path":"/panel/api/server/cpuHistory/{bucket}","method":"get"},{"path":"/panel/api/server/history/{metric}/{bucket}","method":"get"},{"path":"/panel/api/server/xrayMetricsState","method":"get"},{"path":"/panel/api/server/xrayMetricsHistory/{metric}/{bucket}","method":"get"},{"path":"/panel/api/server/xrayObservatory","method":"get"},{"path":"/panel/api/server/xrayObservatoryHistory/{tag}/{bucket}","method":"get"},{"path":"/panel/api/server/getXrayVersion","method":"get"},{"path":"/panel/api/server/getPanelUpdateInfo","method":"get"},{"path":"/panel/api/server/getUpdateStatus","method":"get"},{"path":"/panel/api/server/getConfigJson","method":"get"},{"path":"/panel/api/server/getDb","method":"get"},{"path":"/panel/api/server/getMigration","method":"get"},{"path":"/panel/api/server/getNewUUID","method":"get"},{"path":"/panel/api/server/getWebCertFiles","method":"get"},{"path":"/panel/api/server/descendants","method":"get"},{"path":"/panel/api/server/getNewX25519Cert","method":"get"},{"path":"/panel/api/server/getNewmldsa65","method":"get"},{"path":"/panel/api/server/getNewmlkem768","method":"get"},{"path":"/panel/api/server/getNewVlessEnc","method":"get"},{"path":"/panel/api/server/stopXrayService","method":"post"},{"path":"/panel/api/server/restartXrayService","method":"post"},{"path":"/panel/api/server/installXray/{version}","method":"post"},{"path":"/panel/api/server/updatePanel","method":"post"},{"path":"/panel/api/server/setUpdateChannel","method":"post"},{"path":"/panel/api/server/updateGeofile","method":"post"},{"path":"/panel/api/server/updateGeofile/{fileName}","method":"post"},{"path":"/panel/api/server/logs/{count}","method":"post"},{"path":"/panel/api/server/xraylogs/{count}","method":"post"},{"path":"/panel/api/server/amneziawglogs/{count}","method":"post"},{"path":"/panel/api/server/importDB","method":"post"},{"path":"/panel/api/server/getNewEchCert","method":"post"},{"path":"/panel/api/server/getCertHash","method":"post"},{"path":"/panel/api/server/getRemoteCertHash","method":"post"},{"path":"/panel/api/server/scanRealityTarget","method":"post"},{"path":"/panel/api/server/scanRealityTargets","method":"post"},{"path":"/panel/api/server/clientIps","method":"get"},{"path":"/panel/api/server/clientIps","method":"post"}]} showTitle />
|
||
</>
|
||
);
|
||
} |