P9(4): remove local-core live-test trio — outbound speed test + egress probe, restart/stop xray endpoints
Per user decision 2026-10-21 (reverses the earlier keep call in PANEL-LITE-SPEC.md, now amended): the lite panel never runs a local core, so measuring/probing from the panel host is meaningless. Backend: - delete service/outbound probe implementation (probe_http.go and its tests) and the TestOutbound/TestOutbounds batch prober; outbound traffic accounting (AddTraffic/GetOutboundsTraffic/Reset) unchanged - drop POST /panel/api/xray/testOutbound + testOutbounds routes and the outboundTestUrl setting (get/update plumbing removed; stored rows in existing DBs are inert) - drop POST /panel/api/server/restartXrayService + stopXrayService routes/handlers and the node-sync allowlist entry; the service-level Stop/RestartXrayService stay for internal import/restore flows - node-sync allowlist contract test updated to the new inventory Frontend: - remove test buttons/mode switch/test-all from outbounds tab, card list and table columns; delete TestResultPopover and CountryPill; drop the egress/country/latency columns fed by probe results - remove outboundTestUrl state and save plumbing from useXraySetting and the Basics tab field; drop OutboundTestResult schemas - delete the 15 now-dead i18n keys from all 13 locales (incl. the restart/stop keys orphaned since P6/P7 — i18n-dead-keys test green) - tests: drop the test-URL hook test, re-probe the loopback index mapping through Move-to-top, regenerate API types (gen)
This commit is contained in:
@@ -9,83 +9,9 @@ export const SCHEMAS: Record<string, unknown> = {
|
||||
"minimum": 0,
|
||||
"type": "integer"
|
||||
},
|
||||
"externalTrafficInformEnable": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"externalTrafficInformURI": {
|
||||
"type": "string"
|
||||
},
|
||||
"ipLimitAllowlist": {
|
||||
"type": "string"
|
||||
},
|
||||
"ldapAutoCreate": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"ldapAutoDelete": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"ldapBaseDN": {
|
||||
"type": "string"
|
||||
},
|
||||
"ldapBindDN": {
|
||||
"type": "string"
|
||||
},
|
||||
"ldapDefaultExpiryDays": {
|
||||
"minimum": 0,
|
||||
"type": "integer"
|
||||
},
|
||||
"ldapDefaultLimitIP": {
|
||||
"minimum": 0,
|
||||
"type": "integer"
|
||||
},
|
||||
"ldapDefaultTotalGB": {
|
||||
"minimum": 0,
|
||||
"type": "integer"
|
||||
},
|
||||
"ldapEnable": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"ldapFlagField": {
|
||||
"type": "string"
|
||||
},
|
||||
"ldapHost": {
|
||||
"type": "string"
|
||||
},
|
||||
"ldapInboundTags": {
|
||||
"type": "string"
|
||||
},
|
||||
"ldapInsecureSkipVerify": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"ldapInvertFlag": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"ldapPassword": {
|
||||
"type": "string"
|
||||
},
|
||||
"ldapPort": {
|
||||
"maximum": 65535,
|
||||
"minimum": 0,
|
||||
"type": "integer"
|
||||
},
|
||||
"ldapSyncCron": {
|
||||
"type": "string"
|
||||
},
|
||||
"ldapTruthyValues": {
|
||||
"type": "string"
|
||||
},
|
||||
"ldapUseTLS": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"ldapUserAttr": {
|
||||
"type": "string"
|
||||
},
|
||||
"ldapUserFilter": {
|
||||
"type": "string"
|
||||
},
|
||||
"ldapVlessField": {
|
||||
"type": "string"
|
||||
},
|
||||
"outboundDownThreshold": {
|
||||
"maximum": 100,
|
||||
"minimum": 1,
|
||||
@@ -110,48 +36,6 @@ export const SCHEMAS: Record<string, unknown> = {
|
||||
"minimum": 1,
|
||||
"type": "integer"
|
||||
},
|
||||
"smtpCpu": {
|
||||
"maximum": 100,
|
||||
"minimum": 0,
|
||||
"type": "integer"
|
||||
},
|
||||
"smtpEnable": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"smtpEnabledEvents": {
|
||||
"type": "string"
|
||||
},
|
||||
"smtpEncryptionType": {
|
||||
"type": "string"
|
||||
},
|
||||
"smtpFrom": {
|
||||
"type": "string"
|
||||
},
|
||||
"smtpFromName": {
|
||||
"type": "string"
|
||||
},
|
||||
"smtpHost": {
|
||||
"type": "string"
|
||||
},
|
||||
"smtpMemory": {
|
||||
"maximum": 100,
|
||||
"minimum": 0,
|
||||
"type": "integer"
|
||||
},
|
||||
"smtpPassword": {
|
||||
"type": "string"
|
||||
},
|
||||
"smtpPort": {
|
||||
"maximum": 65535,
|
||||
"minimum": 1,
|
||||
"type": "integer"
|
||||
},
|
||||
"smtpTo": {
|
||||
"type": "string"
|
||||
},
|
||||
"smtpUsername": {
|
||||
"type": "string"
|
||||
},
|
||||
"subAnnounce": {
|
||||
"type": "string"
|
||||
},
|
||||
@@ -164,15 +48,9 @@ export const SCHEMAS: Record<string, unknown> = {
|
||||
"subClashEnable": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"subClashEnableRouting": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"subClashPath": {
|
||||
"type": "string"
|
||||
},
|
||||
"subClashRules": {
|
||||
"type": "string"
|
||||
},
|
||||
"subClashURI": {
|
||||
"type": "string"
|
||||
},
|
||||
@@ -185,21 +63,12 @@ export const SCHEMAS: Record<string, unknown> = {
|
||||
"subEnable": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"subEnableRouting": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"subEncrypt": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"subHideSettings": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"subIncyEnableRouting": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"subIncyRoutingRules": {
|
||||
"type": "string"
|
||||
},
|
||||
"subJsonAlwaysArray": {
|
||||
"type": "boolean"
|
||||
},
|
||||
@@ -221,9 +90,6 @@ export const SCHEMAS: Record<string, unknown> = {
|
||||
"subJsonPath": {
|
||||
"type": "string"
|
||||
},
|
||||
"subJsonRules": {
|
||||
"type": "string"
|
||||
},
|
||||
"subJsonURI": {
|
||||
"type": "string"
|
||||
},
|
||||
@@ -240,16 +106,14 @@ export const SCHEMAS: Record<string, unknown> = {
|
||||
"type": "string"
|
||||
},
|
||||
"subPort": {
|
||||
"description": "SubPort 0 means \"no explicit port\": subscription links are generated\nwithout a port (standard scheme port behind a reverse proxy) while the\nsub server still binds the default port. See SettingService.BuildSubURIBase\nand the sub server bootstrap for the two sides of that split.",
|
||||
"maximum": 65535,
|
||||
"minimum": 1,
|
||||
"minimum": 0,
|
||||
"type": "integer"
|
||||
},
|
||||
"subProfileUrl": {
|
||||
"type": "string"
|
||||
},
|
||||
"subRoutingRules": {
|
||||
"type": "string"
|
||||
},
|
||||
"subShowIdentityOnAllLinks": {
|
||||
"type": "boolean"
|
||||
},
|
||||
@@ -270,43 +134,6 @@ export const SCHEMAS: Record<string, unknown> = {
|
||||
"minimum": 0,
|
||||
"type": "integer"
|
||||
},
|
||||
"tgBotAPIServer": {
|
||||
"type": "string"
|
||||
},
|
||||
"tgBotBackup": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"tgBotChatId": {
|
||||
"type": "string"
|
||||
},
|
||||
"tgBotEnable": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"tgBotProxy": {
|
||||
"type": "string"
|
||||
},
|
||||
"tgBotToken": {
|
||||
"type": "string"
|
||||
},
|
||||
"tgCpu": {
|
||||
"maximum": 100,
|
||||
"minimum": 0,
|
||||
"type": "integer"
|
||||
},
|
||||
"tgEnabledEvents": {
|
||||
"type": "string"
|
||||
},
|
||||
"tgLang": {
|
||||
"type": "string"
|
||||
},
|
||||
"tgMemory": {
|
||||
"maximum": 100,
|
||||
"minimum": 0,
|
||||
"type": "integer"
|
||||
},
|
||||
"tgRunTime": {
|
||||
"type": "string"
|
||||
},
|
||||
"timeLocation": {
|
||||
"type": "string"
|
||||
},
|
||||
@@ -318,12 +145,6 @@ export const SCHEMAS: Record<string, unknown> = {
|
||||
"trustedProxyCIDRs": {
|
||||
"type": "string"
|
||||
},
|
||||
"twoFactorEnable": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"twoFactorToken": {
|
||||
"type": "string"
|
||||
},
|
||||
"warpUpdateInterval": {
|
||||
"minimum": 0,
|
||||
"type": "integer"
|
||||
@@ -352,64 +173,24 @@ export const SCHEMAS: Record<string, unknown> = {
|
||||
"required": [
|
||||
"datepicker",
|
||||
"expireDiff",
|
||||
"externalTrafficInformEnable",
|
||||
"externalTrafficInformURI",
|
||||
"ipLimitAllowlist",
|
||||
"ldapAutoCreate",
|
||||
"ldapAutoDelete",
|
||||
"ldapBaseDN",
|
||||
"ldapBindDN",
|
||||
"ldapDefaultExpiryDays",
|
||||
"ldapDefaultLimitIP",
|
||||
"ldapDefaultTotalGB",
|
||||
"ldapEnable",
|
||||
"ldapFlagField",
|
||||
"ldapHost",
|
||||
"ldapInboundTags",
|
||||
"ldapInsecureSkipVerify",
|
||||
"ldapInvertFlag",
|
||||
"ldapPassword",
|
||||
"ldapPort",
|
||||
"ldapSyncCron",
|
||||
"ldapTruthyValues",
|
||||
"ldapUseTLS",
|
||||
"ldapUserAttr",
|
||||
"ldapUserFilter",
|
||||
"ldapVlessField",
|
||||
"outboundDownThreshold",
|
||||
"pageSize",
|
||||
"panelOutbound",
|
||||
"remarkTemplate",
|
||||
"restartXrayOnClientDisable",
|
||||
"sessionMaxAge",
|
||||
"smtpCpu",
|
||||
"smtpEnable",
|
||||
"smtpEnabledEvents",
|
||||
"smtpEncryptionType",
|
||||
"smtpFrom",
|
||||
"smtpFromName",
|
||||
"smtpHost",
|
||||
"smtpMemory",
|
||||
"smtpPassword",
|
||||
"smtpPort",
|
||||
"smtpTo",
|
||||
"smtpUsername",
|
||||
"subAnnounce",
|
||||
"subCertFile",
|
||||
"subClashAutoDetect",
|
||||
"subClashEnable",
|
||||
"subClashEnableRouting",
|
||||
"subClashPath",
|
||||
"subClashRules",
|
||||
"subClashURI",
|
||||
"subClashUserAgentRegex",
|
||||
"subDomain",
|
||||
"subEnable",
|
||||
"subEnableRouting",
|
||||
"subEncrypt",
|
||||
"subHideSettings",
|
||||
"subIncyEnableRouting",
|
||||
"subIncyRoutingRules",
|
||||
"subJsonAlwaysArray",
|
||||
"subJsonAutoDetect",
|
||||
"subJsonEnable",
|
||||
@@ -417,7 +198,6 @@ export const SCHEMAS: Record<string, unknown> = {
|
||||
"subJsonMux",
|
||||
"subJsonObservatory",
|
||||
"subJsonPath",
|
||||
"subJsonRules",
|
||||
"subJsonURI",
|
||||
"subJsonUserAgentRegex",
|
||||
"subKeyFile",
|
||||
@@ -425,29 +205,15 @@ export const SCHEMAS: Record<string, unknown> = {
|
||||
"subPath",
|
||||
"subPort",
|
||||
"subProfileUrl",
|
||||
"subRoutingRules",
|
||||
"subShowIdentityOnAllLinks",
|
||||
"subSupportUrl",
|
||||
"subThemeDir",
|
||||
"subTitle",
|
||||
"subURI",
|
||||
"subUpdates",
|
||||
"tgBotAPIServer",
|
||||
"tgBotBackup",
|
||||
"tgBotChatId",
|
||||
"tgBotEnable",
|
||||
"tgBotProxy",
|
||||
"tgBotToken",
|
||||
"tgCpu",
|
||||
"tgEnabledEvents",
|
||||
"tgLang",
|
||||
"tgMemory",
|
||||
"tgRunTime",
|
||||
"timeLocation",
|
||||
"trafficDiff",
|
||||
"trustedProxyCIDRs",
|
||||
"twoFactorEnable",
|
||||
"twoFactorToken",
|
||||
"warpUpdateInterval",
|
||||
"webBasePath",
|
||||
"webCertFile",
|
||||
@@ -467,104 +233,18 @@ export const SCHEMAS: Record<string, unknown> = {
|
||||
"minimum": 0,
|
||||
"type": "integer"
|
||||
},
|
||||
"externalTrafficInformEnable": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"externalTrafficInformURI": {
|
||||
"type": "string"
|
||||
},
|
||||
"hasApiToken": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"hasLdapPassword": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"hasNordSecret": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"hasSmtpPassword": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"hasTgBotToken": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"hasTwoFactorToken": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"hasWarpSecret": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"ipLimitAllowlist": {
|
||||
"type": "string"
|
||||
},
|
||||
"ldapAutoCreate": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"ldapAutoDelete": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"ldapBaseDN": {
|
||||
"type": "string"
|
||||
},
|
||||
"ldapBindDN": {
|
||||
"type": "string"
|
||||
},
|
||||
"ldapDefaultExpiryDays": {
|
||||
"minimum": 0,
|
||||
"type": "integer"
|
||||
},
|
||||
"ldapDefaultLimitIP": {
|
||||
"minimum": 0,
|
||||
"type": "integer"
|
||||
},
|
||||
"ldapDefaultTotalGB": {
|
||||
"minimum": 0,
|
||||
"type": "integer"
|
||||
},
|
||||
"ldapEnable": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"ldapFlagField": {
|
||||
"type": "string"
|
||||
},
|
||||
"ldapHost": {
|
||||
"type": "string"
|
||||
},
|
||||
"ldapInboundTags": {
|
||||
"type": "string"
|
||||
},
|
||||
"ldapInsecureSkipVerify": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"ldapInvertFlag": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"ldapPassword": {
|
||||
"type": "string"
|
||||
},
|
||||
"ldapPort": {
|
||||
"maximum": 65535,
|
||||
"minimum": 0,
|
||||
"type": "integer"
|
||||
},
|
||||
"ldapSyncCron": {
|
||||
"type": "string"
|
||||
},
|
||||
"ldapTruthyValues": {
|
||||
"type": "string"
|
||||
},
|
||||
"ldapUseTLS": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"ldapUserAttr": {
|
||||
"type": "string"
|
||||
},
|
||||
"ldapUserFilter": {
|
||||
"type": "string"
|
||||
},
|
||||
"ldapVlessField": {
|
||||
"type": "string"
|
||||
},
|
||||
"outboundDownThreshold": {
|
||||
"maximum": 100,
|
||||
"minimum": 1,
|
||||
@@ -589,48 +269,6 @@ export const SCHEMAS: Record<string, unknown> = {
|
||||
"minimum": 1,
|
||||
"type": "integer"
|
||||
},
|
||||
"smtpCpu": {
|
||||
"maximum": 100,
|
||||
"minimum": 0,
|
||||
"type": "integer"
|
||||
},
|
||||
"smtpEnable": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"smtpEnabledEvents": {
|
||||
"type": "string"
|
||||
},
|
||||
"smtpEncryptionType": {
|
||||
"type": "string"
|
||||
},
|
||||
"smtpFrom": {
|
||||
"type": "string"
|
||||
},
|
||||
"smtpFromName": {
|
||||
"type": "string"
|
||||
},
|
||||
"smtpHost": {
|
||||
"type": "string"
|
||||
},
|
||||
"smtpMemory": {
|
||||
"maximum": 100,
|
||||
"minimum": 0,
|
||||
"type": "integer"
|
||||
},
|
||||
"smtpPassword": {
|
||||
"type": "string"
|
||||
},
|
||||
"smtpPort": {
|
||||
"maximum": 65535,
|
||||
"minimum": 1,
|
||||
"type": "integer"
|
||||
},
|
||||
"smtpTo": {
|
||||
"type": "string"
|
||||
},
|
||||
"smtpUsername": {
|
||||
"type": "string"
|
||||
},
|
||||
"subAnnounce": {
|
||||
"type": "string"
|
||||
},
|
||||
@@ -643,15 +281,9 @@ export const SCHEMAS: Record<string, unknown> = {
|
||||
"subClashEnable": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"subClashEnableRouting": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"subClashPath": {
|
||||
"type": "string"
|
||||
},
|
||||
"subClashRules": {
|
||||
"type": "string"
|
||||
},
|
||||
"subClashURI": {
|
||||
"type": "string"
|
||||
},
|
||||
@@ -664,21 +296,12 @@ export const SCHEMAS: Record<string, unknown> = {
|
||||
"subEnable": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"subEnableRouting": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"subEncrypt": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"subHideSettings": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"subIncyEnableRouting": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"subIncyRoutingRules": {
|
||||
"type": "string"
|
||||
},
|
||||
"subJsonAlwaysArray": {
|
||||
"type": "boolean"
|
||||
},
|
||||
@@ -700,9 +323,6 @@ export const SCHEMAS: Record<string, unknown> = {
|
||||
"subJsonPath": {
|
||||
"type": "string"
|
||||
},
|
||||
"subJsonRules": {
|
||||
"type": "string"
|
||||
},
|
||||
"subJsonURI": {
|
||||
"type": "string"
|
||||
},
|
||||
@@ -719,16 +339,14 @@ export const SCHEMAS: Record<string, unknown> = {
|
||||
"type": "string"
|
||||
},
|
||||
"subPort": {
|
||||
"description": "SubPort 0 means \"no explicit port\": subscription links are generated\nwithout a port (standard scheme port behind a reverse proxy) while the\nsub server still binds the default port. See SettingService.BuildSubURIBase\nand the sub server bootstrap for the two sides of that split.",
|
||||
"maximum": 65535,
|
||||
"minimum": 1,
|
||||
"minimum": 0,
|
||||
"type": "integer"
|
||||
},
|
||||
"subProfileUrl": {
|
||||
"type": "string"
|
||||
},
|
||||
"subRoutingRules": {
|
||||
"type": "string"
|
||||
},
|
||||
"subShowIdentityOnAllLinks": {
|
||||
"type": "boolean"
|
||||
},
|
||||
@@ -749,43 +367,6 @@ export const SCHEMAS: Record<string, unknown> = {
|
||||
"minimum": 0,
|
||||
"type": "integer"
|
||||
},
|
||||
"tgBotAPIServer": {
|
||||
"type": "string"
|
||||
},
|
||||
"tgBotBackup": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"tgBotChatId": {
|
||||
"type": "string"
|
||||
},
|
||||
"tgBotEnable": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"tgBotProxy": {
|
||||
"type": "string"
|
||||
},
|
||||
"tgBotToken": {
|
||||
"type": "string"
|
||||
},
|
||||
"tgCpu": {
|
||||
"maximum": 100,
|
||||
"minimum": 0,
|
||||
"type": "integer"
|
||||
},
|
||||
"tgEnabledEvents": {
|
||||
"type": "string"
|
||||
},
|
||||
"tgLang": {
|
||||
"type": "string"
|
||||
},
|
||||
"tgMemory": {
|
||||
"maximum": 100,
|
||||
"minimum": 0,
|
||||
"type": "integer"
|
||||
},
|
||||
"tgRunTime": {
|
||||
"type": "string"
|
||||
},
|
||||
"timeLocation": {
|
||||
"type": "string"
|
||||
},
|
||||
@@ -797,12 +378,6 @@ export const SCHEMAS: Record<string, unknown> = {
|
||||
"trustedProxyCIDRs": {
|
||||
"type": "string"
|
||||
},
|
||||
"twoFactorEnable": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"twoFactorToken": {
|
||||
"type": "string"
|
||||
},
|
||||
"warpUpdateInterval": {
|
||||
"minimum": 0,
|
||||
"type": "integer"
|
||||
@@ -831,71 +406,27 @@ export const SCHEMAS: Record<string, unknown> = {
|
||||
"required": [
|
||||
"datepicker",
|
||||
"expireDiff",
|
||||
"externalTrafficInformEnable",
|
||||
"externalTrafficInformURI",
|
||||
"hasApiToken",
|
||||
"hasLdapPassword",
|
||||
"hasNordSecret",
|
||||
"hasSmtpPassword",
|
||||
"hasTgBotToken",
|
||||
"hasTwoFactorToken",
|
||||
"hasWarpSecret",
|
||||
"ipLimitAllowlist",
|
||||
"ldapAutoCreate",
|
||||
"ldapAutoDelete",
|
||||
"ldapBaseDN",
|
||||
"ldapBindDN",
|
||||
"ldapDefaultExpiryDays",
|
||||
"ldapDefaultLimitIP",
|
||||
"ldapDefaultTotalGB",
|
||||
"ldapEnable",
|
||||
"ldapFlagField",
|
||||
"ldapHost",
|
||||
"ldapInboundTags",
|
||||
"ldapInsecureSkipVerify",
|
||||
"ldapInvertFlag",
|
||||
"ldapPassword",
|
||||
"ldapPort",
|
||||
"ldapSyncCron",
|
||||
"ldapTruthyValues",
|
||||
"ldapUseTLS",
|
||||
"ldapUserAttr",
|
||||
"ldapUserFilter",
|
||||
"ldapVlessField",
|
||||
"outboundDownThreshold",
|
||||
"pageSize",
|
||||
"panelOutbound",
|
||||
"remarkTemplate",
|
||||
"restartXrayOnClientDisable",
|
||||
"sessionMaxAge",
|
||||
"smtpCpu",
|
||||
"smtpEnable",
|
||||
"smtpEnabledEvents",
|
||||
"smtpEncryptionType",
|
||||
"smtpFrom",
|
||||
"smtpFromName",
|
||||
"smtpHost",
|
||||
"smtpMemory",
|
||||
"smtpPassword",
|
||||
"smtpPort",
|
||||
"smtpTo",
|
||||
"smtpUsername",
|
||||
"subAnnounce",
|
||||
"subCertFile",
|
||||
"subClashAutoDetect",
|
||||
"subClashEnable",
|
||||
"subClashEnableRouting",
|
||||
"subClashPath",
|
||||
"subClashRules",
|
||||
"subClashURI",
|
||||
"subClashUserAgentRegex",
|
||||
"subDomain",
|
||||
"subEnable",
|
||||
"subEnableRouting",
|
||||
"subEncrypt",
|
||||
"subHideSettings",
|
||||
"subIncyEnableRouting",
|
||||
"subIncyRoutingRules",
|
||||
"subJsonAlwaysArray",
|
||||
"subJsonAutoDetect",
|
||||
"subJsonEnable",
|
||||
@@ -903,7 +434,6 @@ export const SCHEMAS: Record<string, unknown> = {
|
||||
"subJsonMux",
|
||||
"subJsonObservatory",
|
||||
"subJsonPath",
|
||||
"subJsonRules",
|
||||
"subJsonURI",
|
||||
"subJsonUserAgentRegex",
|
||||
"subKeyFile",
|
||||
@@ -911,29 +441,15 @@ export const SCHEMAS: Record<string, unknown> = {
|
||||
"subPath",
|
||||
"subPort",
|
||||
"subProfileUrl",
|
||||
"subRoutingRules",
|
||||
"subShowIdentityOnAllLinks",
|
||||
"subSupportUrl",
|
||||
"subThemeDir",
|
||||
"subTitle",
|
||||
"subURI",
|
||||
"subUpdates",
|
||||
"tgBotAPIServer",
|
||||
"tgBotBackup",
|
||||
"tgBotChatId",
|
||||
"tgBotEnable",
|
||||
"tgBotProxy",
|
||||
"tgBotToken",
|
||||
"tgCpu",
|
||||
"tgEnabledEvents",
|
||||
"tgLang",
|
||||
"tgMemory",
|
||||
"tgRunTime",
|
||||
"timeLocation",
|
||||
"trafficDiff",
|
||||
"trustedProxyCIDRs",
|
||||
"twoFactorEnable",
|
||||
"twoFactorToken",
|
||||
"warpUpdateInterval",
|
||||
"webBasePath",
|
||||
"webCertFile",
|
||||
@@ -944,36 +460,6 @@ export const SCHEMAS: Record<string, unknown> = {
|
||||
],
|
||||
"type": "object"
|
||||
},
|
||||
"AmneziaWGLogs": {
|
||||
"description": "AmneziaWGLogs is what the overview's AmneziaWG log view renders: the live\nper-peer activity of every running embedded interface, plus the panel's\nown recent AmneziaWG lifecycle log lines that explain a peer being absent\nfrom Peers at all.",
|
||||
"properties": {
|
||||
"events": {
|
||||
"example": [
|
||||
"2025/01/01 12:00:00 amneziawg: started interface awg1 for inbound 1"
|
||||
],
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
"type": "array"
|
||||
},
|
||||
"peers": {
|
||||
"items": {
|
||||
"$ref": "#/components/schemas/PeerActivity"
|
||||
},
|
||||
"type": "array"
|
||||
},
|
||||
"running": {
|
||||
"example": true,
|
||||
"type": "boolean"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"events",
|
||||
"peers",
|
||||
"running"
|
||||
],
|
||||
"type": "object"
|
||||
},
|
||||
"ApiToken": {
|
||||
"properties": {
|
||||
"createdAt": {
|
||||
@@ -2617,6 +2103,14 @@ export const SCHEMAS: Record<string, unknown> = {
|
||||
"name": {
|
||||
"type": "string"
|
||||
},
|
||||
"nodeType": {
|
||||
"description": "NodeType distinguishes traditional panel-to-panel nodes from lightweight\nagent nodes. Agent nodes skip the panel reachability probe and the API\ntoken requirement; an agent token is issued on creation instead.",
|
||||
"enum": [
|
||||
"traditional",
|
||||
"agent"
|
||||
],
|
||||
"type": "string"
|
||||
},
|
||||
"outboundTag": {
|
||||
"type": "string"
|
||||
},
|
||||
@@ -2625,7 +2119,7 @@ export const SCHEMAS: Record<string, unknown> = {
|
||||
},
|
||||
"port": {
|
||||
"maximum": 65535,
|
||||
"minimum": 1,
|
||||
"minimum": 0,
|
||||
"type": "integer"
|
||||
},
|
||||
"remark": {
|
||||
@@ -2778,6 +2272,11 @@ export const SCHEMAS: Record<string, unknown> = {
|
||||
"format": "int64",
|
||||
"type": "integer"
|
||||
},
|
||||
"nodeType": {
|
||||
"description": "NodeType is \"agent\" for lightweight agent-managed nodes (an agent is\nbound to the node) and \"traditional\" otherwise. It is derived from the\nagent binding, not stored on the node row; read paths that serve the\npanel UI annotate it via annotateNodeTypes. Empty on views built\noutside those paths.",
|
||||
"example": "traditional",
|
||||
"type": "string"
|
||||
},
|
||||
"onlineCount": {
|
||||
"example": 5,
|
||||
"type": "integer"
|
||||
@@ -2945,68 +2444,6 @@ export const SCHEMAS: Record<string, unknown> = {
|
||||
],
|
||||
"type": "object"
|
||||
},
|
||||
"PeerActivity": {
|
||||
"description": "PeerActivity is one peer's live embedded-Device-reported state, the\ncounterpart of an Xray access-log entry: a tunnel logs no requests, only\nhandshakes and bytes.",
|
||||
"properties": {
|
||||
"allowedIPs": {
|
||||
"example": "10.8.1.2/32",
|
||||
"type": "string"
|
||||
},
|
||||
"down": {
|
||||
"example": 4194304,
|
||||
"format": "int64",
|
||||
"type": "integer"
|
||||
},
|
||||
"email": {
|
||||
"example": "peer@example.com",
|
||||
"type": "string"
|
||||
},
|
||||
"endpoint": {
|
||||
"example": "203.0.113.9:51820",
|
||||
"type": "string"
|
||||
},
|
||||
"handshake": {
|
||||
"description": "Handshake is unix milliseconds, 0 when the peer has never connected.",
|
||||
"example": 1735732800000,
|
||||
"format": "int64",
|
||||
"type": "integer"
|
||||
},
|
||||
"inboundId": {
|
||||
"example": 1,
|
||||
"type": "integer"
|
||||
},
|
||||
"interface": {
|
||||
"example": "awg1",
|
||||
"type": "string"
|
||||
},
|
||||
"online": {
|
||||
"example": true,
|
||||
"type": "boolean"
|
||||
},
|
||||
"tag": {
|
||||
"example": "inbound-51820",
|
||||
"type": "string"
|
||||
},
|
||||
"up": {
|
||||
"example": 1048576,
|
||||
"format": "int64",
|
||||
"type": "integer"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"allowedIPs",
|
||||
"down",
|
||||
"email",
|
||||
"endpoint",
|
||||
"handshake",
|
||||
"inboundId",
|
||||
"interface",
|
||||
"online",
|
||||
"tag",
|
||||
"up"
|
||||
],
|
||||
"type": "object"
|
||||
},
|
||||
"ProbeResultUI": {
|
||||
"properties": {
|
||||
"cpuPct": {
|
||||
|
||||
Reference in New Issue
Block a user