功能修改
This commit is contained in:
@@ -2,14 +2,15 @@
|
||||
"$schema": "../../manifests/game-plugin.manifest.schema.json",
|
||||
"id": "game.scum",
|
||||
"name": "SCUM Server",
|
||||
"description": "First-party local SCUM game server management plugin for platform-mediated lifecycle proof.",
|
||||
"description": "First-party SCUM game server operations plugin with platform-mediated lifecycle and companion bridge support.",
|
||||
"version": "0.1.0",
|
||||
"kind": "game-plugin",
|
||||
"tags": [
|
||||
"scum",
|
||||
"survival",
|
||||
"dedicated-server",
|
||||
"local-proof"
|
||||
"game-operations",
|
||||
"companion-client"
|
||||
],
|
||||
"server": {
|
||||
"type": "scum",
|
||||
@@ -86,9 +87,229 @@
|
||||
"run.distribution.request",
|
||||
"dependencies.request",
|
||||
"logs.backfill.request",
|
||||
"client-manager.request"
|
||||
"client-manager.request",
|
||||
"plugin-lifecycle.request"
|
||||
]
|
||||
},
|
||||
"gameClientBridge": {
|
||||
"commands": [
|
||||
{
|
||||
"type": "announcement.send",
|
||||
"title": "Send SCUM announcement",
|
||||
"permission": "server.game-client.command",
|
||||
"approvalLevel": "operator",
|
||||
"payloadSchemaRef": "schemas/bridge/announcement.payload.schema.json",
|
||||
"resultSchemaRef": "schemas/bridge/announcement.result.schema.json",
|
||||
"timeoutSeconds": 60,
|
||||
"maxPayloadBytes": 4096
|
||||
},
|
||||
{
|
||||
"type": "companion.diagnostics",
|
||||
"title": "Collect companion diagnostics",
|
||||
"permission": "server.game-client.read",
|
||||
"approvalLevel": "none",
|
||||
"payloadSchemaRef": "schemas/bridge/diagnostics.payload.schema.json",
|
||||
"resultSchemaRef": "schemas/bridge/diagnostics.result.schema.json",
|
||||
"timeoutSeconds": 30,
|
||||
"maxPayloadBytes": 2048
|
||||
},
|
||||
{
|
||||
"type": "player.lookup",
|
||||
"title": "Look up SCUM player",
|
||||
"permission": "server.game-client.read",
|
||||
"approvalLevel": "none",
|
||||
"payloadSchemaRef": "schemas/bridge/player-lookup.payload.schema.json",
|
||||
"resultSchemaRef": "schemas/bridge/player-lookup.result.schema.json",
|
||||
"timeoutSeconds": 30,
|
||||
"maxPayloadBytes": 4096
|
||||
},
|
||||
{
|
||||
"type": "reward.deliver",
|
||||
"title": "Deliver SCUM reward",
|
||||
"permission": "server.game-client.command",
|
||||
"approvalLevel": "operator",
|
||||
"payloadSchemaRef": "schemas/bridge/reward-deliver.payload.schema.json",
|
||||
"resultSchemaRef": "schemas/bridge/reward-deliver.result.schema.json",
|
||||
"timeoutSeconds": 60,
|
||||
"maxPayloadBytes": 4096
|
||||
},
|
||||
{
|
||||
"type": "event.start",
|
||||
"title": "Start SCUM event",
|
||||
"permission": "server.game-client.command",
|
||||
"approvalLevel": "operator",
|
||||
"payloadSchemaRef": "schemas/bridge/event-start.payload.schema.json",
|
||||
"resultSchemaRef": "schemas/bridge/event-start.result.schema.json",
|
||||
"timeoutSeconds": 60,
|
||||
"maxPayloadBytes": 4096
|
||||
},
|
||||
{
|
||||
"type": "restart.prepare",
|
||||
"title": "Prepare SCUM restart",
|
||||
"permission": "server.game-client.maintenance",
|
||||
"approvalLevel": "operator",
|
||||
"payloadSchemaRef": "schemas/bridge/restart-prepare.payload.schema.json",
|
||||
"resultSchemaRef": "schemas/bridge/restart-prepare.result.schema.json",
|
||||
"timeoutSeconds": 120,
|
||||
"maxPayloadBytes": 4096
|
||||
},
|
||||
{
|
||||
"type": "maintenance.prepare",
|
||||
"title": "Prepare SCUM maintenance",
|
||||
"permission": "server.game-client.maintenance",
|
||||
"approvalLevel": "platform-admin",
|
||||
"payloadSchemaRef": "schemas/bridge/maintenance-prepare.payload.schema.json",
|
||||
"resultSchemaRef": "schemas/bridge/maintenance-prepare.result.schema.json",
|
||||
"timeoutSeconds": 120,
|
||||
"maxPayloadBytes": 4096
|
||||
}
|
||||
],
|
||||
"snapshots": [
|
||||
{
|
||||
"type": "companion.health",
|
||||
"schemaVersion": "1",
|
||||
"schemaRef": "schemas/bridge/companion-health.snapshot.schema.json",
|
||||
"keepForSeconds": 604800,
|
||||
"maxRecords": 1000
|
||||
},
|
||||
{
|
||||
"type": "online.sessions",
|
||||
"schemaVersion": "1",
|
||||
"schemaRef": "schemas/bridge/online-sessions.snapshot.schema.json",
|
||||
"keepForSeconds": 86400,
|
||||
"maxRecords": 1000
|
||||
},
|
||||
{
|
||||
"type": "players",
|
||||
"schemaVersion": "1",
|
||||
"schemaRef": "schemas/bridge/players.snapshot.schema.json",
|
||||
"keepForSeconds": 86400,
|
||||
"maxRecords": 1000
|
||||
},
|
||||
{
|
||||
"type": "squads",
|
||||
"schemaVersion": "1",
|
||||
"schemaRef": "schemas/bridge/squads.snapshot.schema.json",
|
||||
"keepForSeconds": 86400,
|
||||
"maxRecords": 1000
|
||||
},
|
||||
{
|
||||
"type": "vehicles",
|
||||
"schemaVersion": "1",
|
||||
"schemaRef": "schemas/bridge/vehicles.snapshot.schema.json",
|
||||
"keepForSeconds": 86400,
|
||||
"maxRecords": 1000
|
||||
},
|
||||
{
|
||||
"type": "flags",
|
||||
"schemaVersion": "1",
|
||||
"schemaRef": "schemas/bridge/flags.snapshot.schema.json",
|
||||
"keepForSeconds": 86400,
|
||||
"maxRecords": 1000
|
||||
}
|
||||
],
|
||||
"queryTemplates": [
|
||||
{
|
||||
"key": "scum.player.by-id",
|
||||
"title": "Find SCUM player by ID",
|
||||
"permission": "server.game-client.read",
|
||||
"engine": "sqlite",
|
||||
"transportKey": "sqlite-db",
|
||||
"targetKey": "db/sqlite",
|
||||
"parameterSchemaRef": "schemas/bridge/queries/player-by-id.parameters.schema.json",
|
||||
"resultSchemaRef": "schemas/bridge/queries/player-by-id.result.schema.json",
|
||||
"maxRows": 1,
|
||||
"timeoutSeconds": 10
|
||||
},
|
||||
{
|
||||
"key": "scum.player.search",
|
||||
"title": "Search SCUM players",
|
||||
"permission": "server.game-client.read",
|
||||
"engine": "sqlite",
|
||||
"transportKey": "sqlite-db",
|
||||
"targetKey": "db/sqlite",
|
||||
"parameterSchemaRef": "schemas/bridge/queries/player-search.parameters.schema.json",
|
||||
"resultSchemaRef": "schemas/bridge/queries/player-search.result.schema.json",
|
||||
"maxRows": 50,
|
||||
"timeoutSeconds": 10
|
||||
},
|
||||
{
|
||||
"key": "scum.squad.members",
|
||||
"title": "List SCUM squad members",
|
||||
"permission": "server.game-client.read",
|
||||
"engine": "sqlite",
|
||||
"transportKey": "sqlite-db",
|
||||
"targetKey": "db/sqlite",
|
||||
"parameterSchemaRef": "schemas/bridge/queries/squad-members.parameters.schema.json",
|
||||
"resultSchemaRef": "schemas/bridge/queries/squad-members.result.schema.json",
|
||||
"maxRows": 64,
|
||||
"timeoutSeconds": 10
|
||||
},
|
||||
{
|
||||
"key": "scum.vehicle.owner",
|
||||
"title": "Find SCUM vehicle owner",
|
||||
"permission": "server.game-client.read",
|
||||
"engine": "sqlite",
|
||||
"transportKey": "sqlite-db",
|
||||
"targetKey": "db/sqlite",
|
||||
"parameterSchemaRef": "schemas/bridge/queries/vehicle-owner.parameters.schema.json",
|
||||
"resultSchemaRef": "schemas/bridge/queries/vehicle-owner.result.schema.json",
|
||||
"maxRows": 1,
|
||||
"timeoutSeconds": 10
|
||||
},
|
||||
{
|
||||
"key": "scum.flag.ownership",
|
||||
"title": "Find SCUM flag ownership",
|
||||
"permission": "server.game-client.read",
|
||||
"engine": "sqlite",
|
||||
"transportKey": "sqlite-db",
|
||||
"targetKey": "db/sqlite",
|
||||
"parameterSchemaRef": "schemas/bridge/queries/flag-ownership.parameters.schema.json",
|
||||
"resultSchemaRef": "schemas/bridge/queries/flag-ownership.result.schema.json",
|
||||
"maxRows": 1,
|
||||
"timeoutSeconds": 10
|
||||
}
|
||||
],
|
||||
"commandRetentionSeconds": 604800,
|
||||
"maxCommands": 1000,
|
||||
"pages": [
|
||||
{
|
||||
"pageKey": "operations",
|
||||
"commandTypes": [
|
||||
"announcement.send",
|
||||
"companion.diagnostics",
|
||||
"player.lookup",
|
||||
"reward.deliver",
|
||||
"event.start",
|
||||
"restart.prepare",
|
||||
"maintenance.prepare"
|
||||
],
|
||||
"snapshotTypes": ["companion.health", "online.sessions", "players", "squads", "vehicles", "flags"],
|
||||
"queryTemplateKeys": [
|
||||
"scum.player.by-id",
|
||||
"scum.player.search",
|
||||
"scum.squad.members",
|
||||
"scum.vehicle.owner",
|
||||
"scum.flag.ownership"
|
||||
]
|
||||
}
|
||||
],
|
||||
"companion": {
|
||||
"profileKey": "scum-client-manager",
|
||||
"configTemplateKey": "client-config",
|
||||
"configSchemaRef": "schemas/companion/config.schema.json",
|
||||
"configFormat": "yaml",
|
||||
"platformBaseUrlSource": "run-control",
|
||||
"registrationProof": "hmac-sha256",
|
||||
"proofMaterialSource": "component-package",
|
||||
"proofMaterialEnv": "SCUM_COMPONENT_PROOF",
|
||||
"sessionMode": "component-session",
|
||||
"tlsPolicy": "verify-system-roots",
|
||||
"heartbeatIntervalSeconds": 30,
|
||||
"commandPollIntervalSeconds": 5,
|
||||
"requestTimeoutSeconds": 15
|
||||
}
|
||||
},
|
||||
"permissions": [
|
||||
"server.create",
|
||||
"server.read",
|
||||
@@ -102,7 +323,10 @@
|
||||
"ai.invoke",
|
||||
"server.run.distribution",
|
||||
"server.dependencies.manage",
|
||||
"server.client-manager.manage"
|
||||
"server.client-manager.manage",
|
||||
"server.game-client.read",
|
||||
"server.game-client.command",
|
||||
"server.game-client.maintenance"
|
||||
],
|
||||
"actions": {
|
||||
"install": "actions/install.json",
|
||||
@@ -111,6 +335,11 @@
|
||||
"restart": "actions/restart.json",
|
||||
"status": "actions/status.json"
|
||||
},
|
||||
"productionLifecycle": {
|
||||
"operations": ["install", "enable", "disable", "upgrade", "rollback", "retire", "dependency-check"],
|
||||
"dependencyPolicy": "required",
|
||||
"approvalRequired": ["disable", "rollback", "retire"]
|
||||
},
|
||||
"pages": [
|
||||
{
|
||||
"key": "overview",
|
||||
@@ -125,6 +354,27 @@
|
||||
"jobs.dispatch"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "operations",
|
||||
"title": "SCUM 运维",
|
||||
"path": "/operations",
|
||||
"permissions": [
|
||||
"server.read",
|
||||
"server.game-client.read",
|
||||
"server.game-client.command",
|
||||
"server.game-client.maintenance",
|
||||
"server.client-manager.manage",
|
||||
"server.logs.read",
|
||||
"server.remote.access"
|
||||
],
|
||||
"bridgeActions": [
|
||||
"server.instances.read",
|
||||
"jobs.dispatch",
|
||||
"client-manager.request",
|
||||
"logs.query",
|
||||
"remote.access.request"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "config",
|
||||
"title": "SCUM 配置",
|
||||
@@ -177,7 +427,9 @@
|
||||
"purposes": [
|
||||
"config.suggest",
|
||||
"logs.diagnose"
|
||||
]
|
||||
],
|
||||
"mediation": "platform",
|
||||
"configWritePolicy": "review-required"
|
||||
},
|
||||
"runtimeProfiles": {
|
||||
"discovery": [
|
||||
@@ -249,11 +501,9 @@
|
||||
"key": "scum-client",
|
||||
"mode": "custom-client",
|
||||
"capabilities": [
|
||||
"remote.run.rcon.command",
|
||||
"remote.run.logs.transfer"
|
||||
],
|
||||
"transportKeys": [
|
||||
"client-rcon"
|
||||
"client-manager.deploy",
|
||||
"client-manager.control",
|
||||
"logs.read"
|
||||
],
|
||||
"clientManagerRef": "scum-client-manager",
|
||||
"platforms": [
|
||||
@@ -284,6 +534,21 @@
|
||||
}
|
||||
],
|
||||
"installPlans": [
|
||||
{
|
||||
"key": "install-scum-server",
|
||||
"title": "Install SCUM Dedicated Server",
|
||||
"platforms": [
|
||||
"windows"
|
||||
],
|
||||
"steps": [
|
||||
{
|
||||
"type": "steamcmd-app",
|
||||
"targetKey": "server/install-root",
|
||||
"packageManager": "steamcmd",
|
||||
"packageName": "3792580"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "install-steamcmd-linux",
|
||||
"title": "Install SteamCMD",
|
||||
@@ -302,30 +567,162 @@
|
||||
],
|
||||
"logSources": [
|
||||
{
|
||||
"key": "chat-log",
|
||||
"kind": "ftp.poll",
|
||||
"targetKey": "logs/chat",
|
||||
"streamKey": "chat",
|
||||
"cursorKind": "ftp-listing",
|
||||
"retentionDays": 90
|
||||
},
|
||||
{
|
||||
"key": "server-log",
|
||||
"key": "scum-chat-events",
|
||||
"kind": "file.tail",
|
||||
"targetKey": "logs/server",
|
||||
"streamKey": "server",
|
||||
"targetKey": "logs/chat",
|
||||
"streamKey": "scum.chat",
|
||||
"cursorKind": "fingerprint",
|
||||
"retentionDays": 90
|
||||
},
|
||||
{
|
||||
"key": "client-manager",
|
||||
"key": "scum-server-events",
|
||||
"kind": "file.tail",
|
||||
"targetKey": "logs/server",
|
||||
"streamKey": "scum.server",
|
||||
"cursorKind": "fingerprint",
|
||||
"retentionDays": 90
|
||||
},
|
||||
{
|
||||
"key": "scum-login-events",
|
||||
"kind": "file.tail",
|
||||
"targetKey": "logs/login",
|
||||
"streamKey": "scum.login",
|
||||
"cursorKind": "fingerprint",
|
||||
"retentionDays": 90
|
||||
},
|
||||
{
|
||||
"key": "scum-kill-events",
|
||||
"kind": "file.tail",
|
||||
"targetKey": "logs/kill",
|
||||
"streamKey": "scum.kill",
|
||||
"cursorKind": "fingerprint",
|
||||
"retentionDays": 90
|
||||
},
|
||||
{
|
||||
"key": "scum-trade-events",
|
||||
"kind": "file.tail",
|
||||
"targetKey": "logs/trade",
|
||||
"streamKey": "scum.trade",
|
||||
"cursorKind": "fingerprint",
|
||||
"retentionDays": 90
|
||||
},
|
||||
{
|
||||
"key": "scum-admin-events",
|
||||
"kind": "file.tail",
|
||||
"targetKey": "logs/admin",
|
||||
"streamKey": "scum.admin",
|
||||
"cursorKind": "fingerprint",
|
||||
"retentionDays": 90
|
||||
},
|
||||
{
|
||||
"key": "scum-performance-events",
|
||||
"kind": "file.tail",
|
||||
"targetKey": "logs/performance",
|
||||
"streamKey": "scum.performance",
|
||||
"cursorKind": "fingerprint",
|
||||
"retentionDays": 30
|
||||
},
|
||||
{
|
||||
"key": "scum-client-events",
|
||||
"kind": "client-manager",
|
||||
"targetKey": "scum-client-manager",
|
||||
"streamKey": "client-manager",
|
||||
"streamKey": "scum.client",
|
||||
"cursorKind": "sequence",
|
||||
"retentionDays": 30
|
||||
}
|
||||
],
|
||||
"logEvents": [
|
||||
{
|
||||
"key": "scum-chat",
|
||||
"title": "SCUM chat message",
|
||||
"sourceKey": "scum-chat-events",
|
||||
"eventType": "scum.chat",
|
||||
"permission": "server.logs.read",
|
||||
"schemaRef": "schemas/log-events/chat.event.schema.json",
|
||||
"retentionDays": 90,
|
||||
"severity": "info"
|
||||
},
|
||||
{
|
||||
"key": "scum-login",
|
||||
"title": "SCUM player login",
|
||||
"sourceKey": "scum-login-events",
|
||||
"eventType": "scum.login",
|
||||
"permission": "server.logs.read",
|
||||
"schemaRef": "schemas/log-events/login.event.schema.json",
|
||||
"retentionDays": 90,
|
||||
"severity": "info"
|
||||
},
|
||||
{
|
||||
"key": "scum-logout",
|
||||
"title": "SCUM player logout",
|
||||
"sourceKey": "scum-login-events",
|
||||
"eventType": "scum.logout",
|
||||
"permission": "server.logs.read",
|
||||
"schemaRef": "schemas/log-events/logout.event.schema.json",
|
||||
"retentionDays": 90,
|
||||
"severity": "info"
|
||||
},
|
||||
{
|
||||
"key": "scum-kill",
|
||||
"title": "SCUM player kill",
|
||||
"sourceKey": "scum-kill-events",
|
||||
"eventType": "scum.kill",
|
||||
"permission": "server.logs.read",
|
||||
"schemaRef": "schemas/log-events/kill.event.schema.json",
|
||||
"retentionDays": 90,
|
||||
"severity": "info"
|
||||
},
|
||||
{
|
||||
"key": "scum-trade",
|
||||
"title": "SCUM trade activity",
|
||||
"sourceKey": "scum-trade-events",
|
||||
"eventType": "scum.trade",
|
||||
"permission": "server.logs.read",
|
||||
"schemaRef": "schemas/log-events/trade.event.schema.json",
|
||||
"retentionDays": 90,
|
||||
"severity": "info"
|
||||
},
|
||||
{
|
||||
"key": "scum-mine",
|
||||
"title": "SCUM mine activity",
|
||||
"sourceKey": "scum-server-events",
|
||||
"eventType": "scum.mine",
|
||||
"permission": "server.logs.read",
|
||||
"schemaRef": "schemas/log-events/mine.event.schema.json",
|
||||
"retentionDays": 90,
|
||||
"severity": "warning"
|
||||
},
|
||||
{
|
||||
"key": "scum-unlock",
|
||||
"title": "SCUM unlock activity",
|
||||
"sourceKey": "scum-server-events",
|
||||
"eventType": "scum.unlock",
|
||||
"permission": "server.logs.read",
|
||||
"schemaRef": "schemas/log-events/unlock.event.schema.json",
|
||||
"retentionDays": 90,
|
||||
"severity": "warning"
|
||||
},
|
||||
{
|
||||
"key": "scum-admin",
|
||||
"title": "SCUM admin activity",
|
||||
"sourceKey": "scum-admin-events",
|
||||
"eventType": "scum.admin",
|
||||
"permission": "server.logs.read",
|
||||
"schemaRef": "schemas/log-events/admin.event.schema.json",
|
||||
"retentionDays": 90,
|
||||
"severity": "warning"
|
||||
},
|
||||
{
|
||||
"key": "scum-performance",
|
||||
"title": "SCUM server performance",
|
||||
"sourceKey": "scum-performance-events",
|
||||
"eventType": "scum.performance",
|
||||
"permission": "server.logs.read",
|
||||
"schemaRef": "schemas/log-events/performance.event.schema.json",
|
||||
"retentionDays": 30,
|
||||
"severity": "info"
|
||||
}
|
||||
],
|
||||
"transportProfiles": [
|
||||
{
|
||||
"key": "server-files",
|
||||
@@ -405,14 +802,13 @@
|
||||
],
|
||||
"build": {
|
||||
"system": "go",
|
||||
"workspaceRef": "scum_client",
|
||||
"entryRef": "main.go"
|
||||
},
|
||||
"configTemplates": [
|
||||
{
|
||||
"key": "client-config",
|
||||
"templateRef": "configs/client.template.json",
|
||||
"outputRef": "config.json"
|
||||
"templateRef": "config.yaml.example",
|
||||
"outputRef": "config.yaml"
|
||||
}
|
||||
],
|
||||
"outputArtifacts": [
|
||||
@@ -421,7 +817,6 @@
|
||||
"deployment": {
|
||||
"mode": "run-supervised",
|
||||
"executableRef": "scum_client.exe",
|
||||
"arguments": ["--config", "config.json"],
|
||||
"autoStart": true,
|
||||
"requiredRunCapabilities": [
|
||||
"client-manager.deploy",
|
||||
@@ -438,8 +833,8 @@
|
||||
},
|
||||
"health": {
|
||||
"mode": "component-heartbeat",
|
||||
"intervalSeconds": 15,
|
||||
"degradedAfterSeconds": 45,
|
||||
"intervalSeconds": 30,
|
||||
"degradedAfterSeconds": 90,
|
||||
"offlineAfterSeconds": 120,
|
||||
"requiredCapabilities": ["component.register", "component.heartbeat", "component.health", "component.control", "game-client.bridge", "logs.stream"]
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user