mcsmapi 0.1.4__py3-none-any.whl → 0.1.5b2__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- mcsmapi/apis/daemon.py +63 -10
- mcsmapi/apis/file.py +73 -70
- mcsmapi/apis/image.py +13 -13
- mcsmapi/apis/instance.py +53 -53
- mcsmapi/apis/user.py +14 -14
- mcsmapi/models/daemon.py +57 -9
- mcsmapi/models/file.py +129 -9
- mcsmapi/models/image.py +105 -10
- mcsmapi/models/instance.py +116 -17
- mcsmapi/models/overview.py +51 -2
- mcsmapi/models/user.py +39 -5
- {mcsmapi-0.1.4.dist-info → mcsmapi-0.1.5b2.dist-info}/METADATA +5 -1
- mcsmapi-0.1.5b2.dist-info/RECORD +23 -0
- mcsmapi-0.1.4.dist-info/RECORD +0 -23
- {mcsmapi-0.1.4.dist-info → mcsmapi-0.1.5b2.dist-info}/WHEEL +0 -0
- {mcsmapi-0.1.4.dist-info → mcsmapi-0.1.5b2.dist-info}/licenses/LICENSE +0 -0
- {mcsmapi-0.1.4.dist-info → mcsmapi-0.1.5b2.dist-info}/top_level.txt +0 -0
mcsmapi/models/image.py
CHANGED
@@ -3,110 +3,205 @@ from pydantic import BaseModel
|
|
3
3
|
|
4
4
|
|
5
5
|
class DockerConfig(BaseModel):
|
6
|
+
"""容器配置"""
|
7
|
+
|
8
|
+
"""容器名称"""
|
6
9
|
containerName: str = ""
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
+
"""镜像名称"""
|
11
|
+
image: str = ""
|
12
|
+
"""容器分配内存(单位: MB)"""
|
13
|
+
memory: int = 0 # in MB
|
14
|
+
"""容器端口映射"""
|
15
|
+
ports: List[str] = [] # ["25565:25565/tcp"]
|
16
|
+
"""额外挂载卷路径"""
|
10
17
|
extraVolumes: List[str] = []
|
18
|
+
"""容器可使用的最大磁盘空间(单位: MB)"""
|
11
19
|
maxSpace: Optional[int] = None
|
20
|
+
"""网络配置,可以是网络名称或ID"""
|
12
21
|
network: Optional[Union[str, int]] = None
|
22
|
+
"""容器的 IO 限制"""
|
13
23
|
io: Optional[Union[str, int]] = None
|
24
|
+
"""网络模式(例如: bridge, host)"""
|
14
25
|
networkMode: str = "bridge"
|
26
|
+
"""网络别名列表"""
|
15
27
|
networkAliases: List[str] = []
|
16
|
-
|
28
|
+
"""绑定的 CPU 核心"""
|
29
|
+
cpusetCpus: str = "" # 例如 `0,1`
|
30
|
+
"""CPU 使用率(单位: %)"""
|
17
31
|
cpuUsage: int = 100
|
32
|
+
"""工作目录"""
|
18
33
|
workingDir: str = ""
|
34
|
+
"""环境变量设置"""
|
19
35
|
env: List[str] = []
|
20
36
|
|
21
37
|
|
22
38
|
class DockerImageItem(BaseModel):
|
39
|
+
"""Docker 镜像信息"""
|
40
|
+
|
41
|
+
"""镜像唯一 ID"""
|
23
42
|
Id: str = ""
|
43
|
+
"""父镜像 ID"""
|
24
44
|
ParentId: str = ""
|
25
|
-
|
45
|
+
"""镜像仓库标签"""
|
46
|
+
RepoTags: List[str] = [] # 例如 ["ubuntu:latest"]
|
47
|
+
"""镜像摘要"""
|
26
48
|
RepoDigests: List[str] = []
|
49
|
+
"""镜像创建时间(Unix 时间戳)"""
|
27
50
|
Created: int = 0
|
51
|
+
"""镜像大小(单位: 字节)"""
|
28
52
|
Size: int = 0
|
53
|
+
"""镜像的虚拟大小"""
|
29
54
|
VirtualSize: int = 0
|
55
|
+
"""共享存储空间大小"""
|
30
56
|
SharedSize: int = 0
|
57
|
+
"""镜像标签"""
|
31
58
|
Labels: dict[str, str] = {}
|
59
|
+
"""依赖该镜像运行的容器数量"""
|
32
60
|
Containers: int = 0
|
33
61
|
|
34
62
|
|
35
63
|
class DockerContainerItemPort(BaseModel):
|
64
|
+
"""Docker 容器端口映射"""
|
65
|
+
|
66
|
+
"""容器内部端口"""
|
36
67
|
PrivatePort: int = 0
|
68
|
+
"""映射到宿主机的端口"""
|
37
69
|
PublicPort: Optional[int] = None
|
70
|
+
"""端口类型(tcp/udp)"""
|
38
71
|
Type: str = ""
|
39
72
|
|
40
73
|
|
41
74
|
class DockerContainerItemNetworkSettingsNetwork(BaseModel):
|
75
|
+
"""Docker 容器网络设置信息"""
|
76
|
+
|
77
|
+
"""网络 ID"""
|
42
78
|
NetworkID: str = ""
|
79
|
+
"""网络端点 ID"""
|
43
80
|
EndpointID: str = ""
|
81
|
+
"""网关地址"""
|
44
82
|
Gateway: str = ""
|
83
|
+
"""分配的 IP 地址"""
|
45
84
|
IPAddress: str = ""
|
85
|
+
"""IP 地址前缀长度"""
|
46
86
|
IPPrefixLen: int = 0
|
87
|
+
"""IPv6 网关地址"""
|
47
88
|
IPv6Gateway: str = ""
|
89
|
+
"""IPv6 地址"""
|
48
90
|
GlobalIPv6Address: str = ""
|
91
|
+
"""IPv6 地址前缀长度"""
|
49
92
|
GlobalIPv6PrefixLen: int = 0
|
93
|
+
"""MAC 地址"""
|
50
94
|
MacAddress: str = ""
|
51
95
|
|
52
96
|
|
53
97
|
class DockerContainerItemNetworkSettings(BaseModel):
|
98
|
+
"""Docker 容器的网络配置信息"""
|
99
|
+
|
100
|
+
"""容器连接的所有网络"""
|
54
101
|
Networks: dict[str, DockerContainerItemNetworkSettingsNetwork] = {}
|
55
102
|
|
56
103
|
|
57
104
|
class DockerContainerItemMount(BaseModel):
|
105
|
+
"""容器挂载点信息"""
|
106
|
+
|
107
|
+
"""挂载名称"""
|
58
108
|
Name: str = ""
|
109
|
+
"""源路径"""
|
59
110
|
Source: str = ""
|
111
|
+
"""目标路径"""
|
60
112
|
Destination: str = ""
|
113
|
+
"""驱动类型"""
|
61
114
|
Driver: str = ""
|
115
|
+
"""挂载模式"""
|
62
116
|
Mode: str = ""
|
117
|
+
"""是否允许读写"""
|
63
118
|
RW: bool = False
|
119
|
+
"""传播模式"""
|
64
120
|
Propagation: str = ""
|
65
121
|
|
66
122
|
|
67
123
|
class DockerContainerItemHostConfig(BaseModel):
|
124
|
+
"""Docker 宿主机配置"""
|
125
|
+
|
126
|
+
"""网络模式"""
|
68
127
|
NetworkMode: str = ""
|
69
128
|
|
70
129
|
|
71
130
|
class DockerContainerItem(BaseModel):
|
131
|
+
"""Docker 容器详细信息"""
|
132
|
+
|
133
|
+
"""容器 ID"""
|
72
134
|
Id: str = ""
|
135
|
+
"""容器名称列表"""
|
73
136
|
Names: List[str] = []
|
137
|
+
"""运行的镜像名称"""
|
74
138
|
Image: str = ""
|
139
|
+
"""镜像 ID"""
|
75
140
|
ImageID: str = ""
|
141
|
+
"""容器启动命令"""
|
76
142
|
Command: str = ""
|
143
|
+
"""容器创建时间(Unix 时间戳)"""
|
77
144
|
Created: int = 0
|
145
|
+
"""容器状态"""
|
78
146
|
State: str = ""
|
147
|
+
"""容器运行状态描述"""
|
79
148
|
Status: str = ""
|
149
|
+
"""端口映射信息"""
|
80
150
|
Ports: List[DockerContainerItemPort] = []
|
151
|
+
"""容器标签信息"""
|
81
152
|
Labels: dict[str, str] = {}
|
153
|
+
"""读写层大小(单位: 字节)"""
|
82
154
|
SizeRw: int = 0
|
155
|
+
"""根文件系统大小(单位: 字节)"""
|
83
156
|
SizeRootFs: int = 0
|
157
|
+
"""宿主机配置"""
|
84
158
|
HostConfig: DockerContainerItemHostConfig = DockerContainerItemHostConfig()
|
85
|
-
|
86
|
-
|
87
|
-
|
159
|
+
"""容器网络配置"""
|
160
|
+
NetworkSettings: DockerContainerItemNetworkSettings = DockerContainerItemNetworkSettings()
|
161
|
+
"""容器挂载信息"""
|
88
162
|
Mounts: List[DockerContainerItemMount] = []
|
89
163
|
|
90
164
|
|
91
165
|
class DockerNetworkItemIPAMConfig(BaseModel):
|
166
|
+
"""Docker 网络 IPAM 配置信息"""
|
167
|
+
|
168
|
+
"""子网地址"""
|
92
169
|
Subnet: str = ""
|
93
170
|
|
94
171
|
|
95
172
|
class DockerNetworkItemIPAM(BaseModel):
|
173
|
+
"""Docker 网络的 IP 地址管理"""
|
174
|
+
|
175
|
+
"""驱动类型"""
|
96
176
|
Driver: str = ""
|
177
|
+
"""IPAM 配置"""
|
97
178
|
Config: List[DockerNetworkItemIPAMConfig] = []
|
98
179
|
|
99
180
|
|
100
181
|
class DockerNetworkItem(BaseModel):
|
182
|
+
"""Docker 网络详细信息"""
|
183
|
+
|
184
|
+
"""网络名称"""
|
101
185
|
Name: str = ""
|
186
|
+
"""网络 ID"""
|
102
187
|
Id: str = ""
|
188
|
+
"""网络创建时间"""
|
103
189
|
Created: str = ""
|
190
|
+
"""网络作用范围(local/global)"""
|
104
191
|
Scope: str = ""
|
192
|
+
"""网络驱动类型"""
|
105
193
|
Driver: str = ""
|
194
|
+
"""是否启用 IPv6"""
|
106
195
|
EnableIPv6: bool = False
|
196
|
+
"""是否为内部网络"""
|
107
197
|
Internal: bool = False
|
198
|
+
"""是否可附加"""
|
108
199
|
Attachable: bool = False
|
200
|
+
"""是否为入口网络"""
|
109
201
|
Ingress: bool = False
|
202
|
+
"""IPAM 配置信息"""
|
110
203
|
IPAM: DockerNetworkItemIPAM = DockerNetworkItemIPAM()
|
111
|
-
|
112
|
-
|
204
|
+
"""网络选项"""
|
205
|
+
Options: dict[str, str] = {}
|
206
|
+
"""连接到此网络的容器信息"""
|
207
|
+
Containers: Optional[dict[str, dict]] = {}
|
mcsmapi/models/instance.py
CHANGED
@@ -1,87 +1,155 @@
|
|
1
1
|
from typing import List, Dict, Optional
|
2
2
|
from pydantic import BaseModel
|
3
|
+
from mcsmapi.models.file import FileList
|
3
4
|
from mcsmapi.models.image import DockerConfig
|
4
5
|
|
5
6
|
|
6
7
|
class TerminalOption(BaseModel):
|
8
|
+
"""终端选项"""
|
9
|
+
|
10
|
+
"""是否启用颜色输出"""
|
7
11
|
haveColor: bool = False
|
12
|
+
"""是否使用伪终端 (PTY)"""
|
8
13
|
pty: bool = True
|
9
14
|
|
10
15
|
|
11
16
|
class EventTask(BaseModel):
|
17
|
+
"""事件任务"""
|
18
|
+
|
19
|
+
"""是否自动启动"""
|
12
20
|
autoStart: bool = False
|
21
|
+
"""是否自动重启"""
|
13
22
|
autoRestart: bool = True
|
23
|
+
"""是否忽略该任务"""
|
14
24
|
ignore: bool = False
|
15
25
|
|
16
26
|
|
17
27
|
class PingConfig(BaseModel):
|
28
|
+
"""服务器 Ping 配置"""
|
29
|
+
|
30
|
+
"""服务器 IP 地址"""
|
18
31
|
ip: str = ""
|
32
|
+
"""服务器端口"""
|
19
33
|
port: int = 25565
|
34
|
+
"""Ping 类型 (1: 默认类型)"""
|
20
35
|
type: int = 1
|
21
36
|
|
22
37
|
|
23
38
|
class InstanceConfig(BaseModel):
|
39
|
+
"""实例配置信息"""
|
40
|
+
|
41
|
+
"""实例名称"""
|
24
42
|
nickname: str = "New Name"
|
43
|
+
"""启动命令"""
|
25
44
|
startCommand: str = "cmd.exe"
|
45
|
+
"""停止命令"""
|
26
46
|
stopCommand: str = "^C"
|
47
|
+
"""工作目录"""
|
27
48
|
cwd: str = ""
|
28
|
-
|
29
|
-
|
49
|
+
"""输入编码"""
|
50
|
+
ie: str = "gbk"
|
51
|
+
"""输出编码"""
|
52
|
+
oe: str = "gbk"
|
53
|
+
"""创建时间 (Unix 时间戳)"""
|
30
54
|
createDatetime: int = 0
|
55
|
+
"""最后修改时间 (Unix 时间戳)"""
|
31
56
|
lastDatetime: int = 0
|
57
|
+
"""实例类型 (universal, minecraft 等)"""
|
32
58
|
type: str = "universal"
|
59
|
+
"""实例标签"""
|
33
60
|
tag: List[str] = []
|
61
|
+
"""实例结束时间 (可选)"""
|
34
62
|
endTime: Optional[int] = None
|
63
|
+
"""文件编码"""
|
35
64
|
fileCode: str = "gbk"
|
65
|
+
"""进程类型 (如 docker, local)"""
|
36
66
|
processType: str = "docker"
|
67
|
+
"""更新命令"""
|
37
68
|
updateCommand: str = "shutdown -s"
|
69
|
+
"""实例可执行的操作命令列表"""
|
38
70
|
actionCommandList: List[str] = []
|
71
|
+
"""换行符 (0: LF, 1: CR, 2: CRLF)"""
|
39
72
|
crlf: int = 2
|
73
|
+
"""Docker 相关配置"""
|
40
74
|
docker: "DockerConfig" = DockerConfig()
|
75
|
+
"""是否启用 RCON 远程控制"""
|
41
76
|
enableRcon: bool = True
|
77
|
+
"""RCON 连接密码"""
|
42
78
|
rconPassword: str = ""
|
79
|
+
"""RCON 端口"""
|
43
80
|
rconPort: int = 2557
|
81
|
+
"""RCON IP 地址"""
|
44
82
|
rconIp: str = ""
|
83
|
+
"""终端选项配置"""
|
45
84
|
terminalOption: TerminalOption = TerminalOption()
|
85
|
+
"""事件任务配置"""
|
46
86
|
eventTask: EventTask = EventTask()
|
87
|
+
"""服务器 Ping 监测配置"""
|
47
88
|
pingConfig: PingConfig = PingConfig()
|
48
89
|
|
49
90
|
|
50
91
|
class ProcessInfo(BaseModel):
|
92
|
+
"""进程信息"""
|
93
|
+
|
94
|
+
"""CPU 使用率 (单位: %)"""
|
51
95
|
cpu: int = 0
|
96
|
+
"""进程占用内存 (单位: KB)"""
|
52
97
|
memory: int = 0
|
98
|
+
"""父进程 ID"""
|
53
99
|
ppid: int = 0
|
100
|
+
"""进程 ID"""
|
54
101
|
pid: int = 0
|
102
|
+
"""进程创建时间 (Unix 时间戳)"""
|
55
103
|
ctime: int = 0
|
104
|
+
"""进程运行时长 (单位: 秒)"""
|
56
105
|
elapsed: int = 0
|
106
|
+
"""时间戳"""
|
57
107
|
timestamp: int = 0
|
58
108
|
|
59
109
|
|
60
110
|
class InstanceInfo(BaseModel):
|
111
|
+
"""实例运行状态信息( 这些选项在新版中已不再支持设置,但仍在API中返回)"""
|
112
|
+
|
113
|
+
"""当前玩家数量 (-1 表示未知)"""
|
61
114
|
currentPlayers: int = -1
|
115
|
+
"""文件锁状态 (0: 无锁)"""
|
62
116
|
fileLock: int = 0
|
117
|
+
"""最大允许玩家数 (-1 表示未知)"""
|
63
118
|
maxPlayers: int = -1
|
119
|
+
"""是否启用 FRP 远程服务"""
|
64
120
|
openFrpStatus: bool = False
|
121
|
+
"""玩家数量变化图表数据"""
|
65
122
|
playersChart: List[Dict] = []
|
123
|
+
"""服务器版本"""
|
66
124
|
version: str = ""
|
67
125
|
|
68
126
|
|
69
127
|
class InstanceDetail(BaseModel):
|
128
|
+
"""实例详细信息"""
|
129
|
+
|
130
|
+
"""实例的配置信息"""
|
70
131
|
config: InstanceConfig = InstanceConfig()
|
132
|
+
"""实例的运行状态信息"""
|
71
133
|
info: InstanceInfo = InstanceInfo()
|
134
|
+
"""所属的守护进程 (Daemon) ID"""
|
72
135
|
daemonId: str = ""
|
136
|
+
"""实例唯一标识符 (UUID)"""
|
73
137
|
instanceUuid: str = ""
|
138
|
+
"""实例的进程信息"""
|
74
139
|
processInfo: ProcessInfo = ProcessInfo()
|
75
|
-
|
76
|
-
|
77
|
-
|
140
|
+
"""实例的存储空间大小(始终为`0`)"""
|
141
|
+
space: int = 0 # 在 MCSM 代码中,此项始终为 0,意义不明
|
142
|
+
"""实例的启动次数"""
|
143
|
+
started: int = 0
|
144
|
+
"""实例状态 (-1: 忙碌, 0: 停止, 1: 停止中, 2: 启动中, 3: 运行中)"""
|
145
|
+
status: int = 0
|
78
146
|
|
79
147
|
def start(self) -> str | bool:
|
80
148
|
"""
|
81
149
|
启动该实例。
|
82
150
|
|
83
151
|
**返回:**
|
84
|
-
|
152
|
+
- str|bool: str|bool: 返回结果中的 "instanceUuid" 字段值,如果未找到该字段,则默认返回True。
|
85
153
|
"""
|
86
154
|
from mcsmapi.apis.instance import Instance
|
87
155
|
|
@@ -92,7 +160,7 @@ class InstanceDetail(BaseModel):
|
|
92
160
|
停止该实例。
|
93
161
|
|
94
162
|
**返回:**
|
95
|
-
|
163
|
+
- str|bool: 返回结果中的 "instanceUuid" 字段值,如果未找到该字段,则默认返回True。
|
96
164
|
"""
|
97
165
|
from mcsmapi.apis.instance import Instance
|
98
166
|
|
@@ -103,7 +171,7 @@ class InstanceDetail(BaseModel):
|
|
103
171
|
重启该实例。
|
104
172
|
|
105
173
|
**返回:**
|
106
|
-
|
174
|
+
- str|bool: 返回结果中的 "instanceUuid" 字段值,如果未找到该字段,则默认返回True。
|
107
175
|
"""
|
108
176
|
from mcsmapi.apis.instance import Instance
|
109
177
|
|
@@ -114,7 +182,7 @@ class InstanceDetail(BaseModel):
|
|
114
182
|
强制关闭该实例。
|
115
183
|
|
116
184
|
**返回:**
|
117
|
-
|
185
|
+
- str|bool: 返回结果中的 "instanceUuid" 字段值,如果未找到该字段,则默认返回True。
|
118
186
|
"""
|
119
187
|
from mcsmapi.apis.instance import Instance
|
120
188
|
|
@@ -125,7 +193,7 @@ class InstanceDetail(BaseModel):
|
|
125
193
|
删除该实例。
|
126
194
|
|
127
195
|
**返回:**
|
128
|
-
|
196
|
+
- str: 被删除的实例的uuid。
|
129
197
|
"""
|
130
198
|
from mcsmapi.apis.instance import Instance
|
131
199
|
|
@@ -136,7 +204,7 @@ class InstanceDetail(BaseModel):
|
|
136
204
|
升级实例。
|
137
205
|
|
138
206
|
**返回:**
|
139
|
-
|
207
|
+
- bool: 返回操作结果,成功时返回True。
|
140
208
|
"""
|
141
209
|
from mcsmapi.apis.instance import Instance
|
142
210
|
|
@@ -147,10 +215,10 @@ class InstanceDetail(BaseModel):
|
|
147
215
|
更新该实例配置。
|
148
216
|
|
149
217
|
**参数:**
|
150
|
-
|
218
|
+
- config (dict): 新的实例配置,以字典形式提供,缺失内容由使用原实例配置填充。
|
151
219
|
|
152
220
|
**返回:**
|
153
|
-
|
221
|
+
- str|bool: 更新成功后返回更新的实例UUID,如果未找到该字段,则默认返回True。
|
154
222
|
"""
|
155
223
|
from mcsmapi.apis.instance import Instance
|
156
224
|
|
@@ -168,12 +236,12 @@ class InstanceDetail(BaseModel):
|
|
168
236
|
重装实例。
|
169
237
|
|
170
238
|
**参数:**
|
171
|
-
|
172
|
-
|
173
|
-
|
239
|
+
- targetUrl (str): 重装文件的目标URL。
|
240
|
+
- title (str): 重装文件的标题。
|
241
|
+
- description (str, optional): 重装文件的描述,默认为空字符串。
|
174
242
|
|
175
243
|
**返回:**
|
176
|
-
|
244
|
+
- bool: 返回操作结果,成功时返回True
|
177
245
|
"""
|
178
246
|
from mcsmapi.apis.instance import Instance
|
179
247
|
|
@@ -181,24 +249,55 @@ class InstanceDetail(BaseModel):
|
|
181
249
|
self.daemonId, self.instanceUuid, targetUrl, title, description
|
182
250
|
)
|
183
251
|
|
252
|
+
def files(self, target: str = "", page: int = 0, page_size: int = 100) -> FileList:
|
253
|
+
"""
|
254
|
+
获取实例的文件列表。
|
255
|
+
|
256
|
+
**参数:**
|
257
|
+
- target (str, 可选): 用于文件过滤的目标路径。默认为空字符串,表示不按路径过滤
|
258
|
+
- page (int, 可选): 指定分页的页码。默认为0。
|
259
|
+
- page_size (int, 可选): 指定每页的文件数量。默认为100。
|
260
|
+
|
261
|
+
**返回:**
|
262
|
+
- FileList: 文件列表。
|
263
|
+
"""
|
264
|
+
from mcsmapi.apis.file import File
|
265
|
+
|
266
|
+
return File().show(self.daemonId, self.instanceUuid, target, page, page_size)
|
267
|
+
|
184
268
|
|
185
269
|
class InstanceCreateResult(BaseModel):
|
270
|
+
"""实例创建结果"""
|
271
|
+
|
272
|
+
"""实例唯一标识符 (UUID)"""
|
186
273
|
instanceUuid: str = ""
|
274
|
+
"""实例的配置信息"""
|
187
275
|
config: InstanceConfig = InstanceConfig()
|
188
276
|
|
189
277
|
|
190
278
|
class InstanceSearchList(BaseModel):
|
279
|
+
"""实例搜索列表"""
|
280
|
+
|
281
|
+
"""每页的实例数量"""
|
191
282
|
pageSize: int = 0
|
283
|
+
"""最大页数"""
|
192
284
|
maxPage: int = 0
|
285
|
+
"""实例详细信息列表"""
|
193
286
|
data: List[InstanceDetail] = []
|
287
|
+
"""所属的守护进程 (Daemon) ID"""
|
194
288
|
daemonId: str = ""
|
195
289
|
|
196
290
|
def __init__(self, **data: str):
|
291
|
+
"""实例化对象,并在每个实例中填充 daemonId"""
|
197
292
|
super().__init__(**data)
|
198
293
|
for instance in self.data:
|
199
294
|
instance.daemonId = self.daemonId
|
200
295
|
|
201
296
|
|
202
297
|
class UserInstancesList(BaseModel):
|
298
|
+
"""用户实例列表"""
|
299
|
+
|
300
|
+
"""实例唯一标识符 (UUID)"""
|
203
301
|
instanceUuid: str = ""
|
302
|
+
"""所属的守护进程 (Daemon) ID"""
|
204
303
|
daemonId: str = ""
|
mcsmapi/models/overview.py
CHANGED
@@ -4,60 +4,109 @@ from mcsmapi.models.daemon import DaemonModel
|
|
4
4
|
|
5
5
|
|
6
6
|
class SystemUser(BaseModel):
|
7
|
+
"""系统用户信息"""
|
8
|
+
|
9
|
+
"""用户 ID (UID)"""
|
7
10
|
uid: int = 0
|
11
|
+
"""用户组 ID (GID)"""
|
8
12
|
gid: int = 0
|
13
|
+
"""用户名"""
|
9
14
|
username: str = ""
|
15
|
+
"""用户主目录"""
|
10
16
|
homedir: str = ""
|
17
|
+
"""默认 Shell 解释器 (可选)"""
|
11
18
|
shell: Optional[str] = None
|
12
19
|
|
13
20
|
|
14
21
|
class SystemInfo(BaseModel):
|
22
|
+
"""系统信息"""
|
23
|
+
|
24
|
+
"""当前登录用户信息"""
|
15
25
|
user: SystemUser = SystemUser()
|
26
|
+
"""系统当前时间 (Unix 时间戳)"""
|
16
27
|
time: int = 0
|
28
|
+
"""系统总内存大小 (单位: 字节)"""
|
17
29
|
totalmem: int = 0
|
30
|
+
"""系统空闲内存大小 (单位: 字节)"""
|
18
31
|
freemem: int = 0
|
32
|
+
"""操作系统类型"""
|
19
33
|
type: str = ""
|
34
|
+
"""操作系统版本"""
|
20
35
|
version: str = ""
|
36
|
+
"""系统节点名称"""
|
21
37
|
node: str = ""
|
38
|
+
"""主机名"""
|
22
39
|
hostname: str = ""
|
40
|
+
"""系统负载平均值 (过去 1、5、15 分钟)"""
|
23
41
|
loadavg: List[float] = []
|
42
|
+
"""操作系统平台"""
|
24
43
|
platform: str = ""
|
44
|
+
"""系统发行版本信息"""
|
25
45
|
release: str = ""
|
46
|
+
"""系统运行时间 (单位: 秒)"""
|
26
47
|
uptime: float = 0
|
48
|
+
"""CPU 当前使用率 (单位: %)"""
|
27
49
|
cpu: float = 0
|
28
50
|
|
29
51
|
|
30
|
-
|
31
52
|
class RecordInfo(BaseModel):
|
53
|
+
"""安全记录信息"""
|
54
|
+
|
55
|
+
"""成功登录次数"""
|
32
56
|
logined: int = 0
|
57
|
+
"""非法访问次数"""
|
33
58
|
illegalAccess: int = 0
|
59
|
+
"""被封禁的 IP 数量"""
|
34
60
|
banips: int = 0
|
61
|
+
"""登录失败次数"""
|
35
62
|
loginFailed: int = 0
|
36
63
|
|
37
64
|
|
38
65
|
class ChartInfo(BaseModel):
|
66
|
+
"""图表数据信息"""
|
67
|
+
|
68
|
+
"""系统性能数据 (CPU/内存等)"""
|
39
69
|
system: List[Dict[str, float]] = []
|
70
|
+
"""请求统计信息 (HTTP 请求数等)"""
|
40
71
|
request: List[Dict[str, int]] = []
|
41
72
|
|
42
73
|
|
43
74
|
class ProcessInfo(BaseModel):
|
75
|
+
"""进程信息"""
|
76
|
+
|
77
|
+
"""CPU 使用率 (单位: %)"""
|
44
78
|
cpu: int = 0
|
79
|
+
"""进程占用内存 (单位: KB)"""
|
45
80
|
memory: int = 0
|
81
|
+
"""进程当前工作目录"""
|
46
82
|
cwd: str = ""
|
47
83
|
|
48
84
|
|
49
85
|
class RemoteCountInfo(BaseModel):
|
86
|
+
"""远程守护进程统计信息"""
|
87
|
+
|
88
|
+
"""远程守护进程总数"""
|
50
89
|
total: int = 0
|
90
|
+
"""可用的远程守护进程数量"""
|
51
91
|
available: int = 0
|
52
92
|
|
53
93
|
|
54
94
|
class OverviewModel(BaseModel):
|
95
|
+
"""系统概览信息"""
|
96
|
+
|
97
|
+
"""系统当前版本"""
|
55
98
|
version: str = ""
|
99
|
+
"""指定的守护进程 (Daemon) 版本"""
|
56
100
|
specifiedDaemonVersion: str = ""
|
101
|
+
"""系统信息"""
|
57
102
|
system: SystemInfo = SystemInfo()
|
103
|
+
"""安全访问记录"""
|
58
104
|
record: RecordInfo = RecordInfo()
|
105
|
+
"""进程状态信息"""
|
59
106
|
process: ProcessInfo = ProcessInfo()
|
107
|
+
"""系统与请求统计图表数据"""
|
60
108
|
chart: ChartInfo = ChartInfo()
|
109
|
+
"""远程守护进程统计信息"""
|
61
110
|
remoteCount: RemoteCountInfo = RemoteCountInfo()
|
111
|
+
"""远程守护进程详细信息"""
|
62
112
|
remote: List["DaemonModel"] = []
|
63
|
-
|