Initial project structure
This commit is contained in:
@@ -0,0 +1,378 @@
|
||||
export interface ServerInfo {
|
||||
|
||||
|
||||
id:string;
|
||||
|
||||
name:string;
|
||||
|
||||
wrapperId:string;
|
||||
|
||||
|
||||
status:
|
||||
| "STARTING"
|
||||
| "RUNNING"
|
||||
| "STOPPING"
|
||||
| "CRASHED";
|
||||
|
||||
|
||||
port:number;
|
||||
|
||||
queryPort:number;
|
||||
|
||||
|
||||
pid?:number;
|
||||
|
||||
|
||||
players:number;
|
||||
|
||||
|
||||
maxPlayers:number;
|
||||
|
||||
|
||||
emptySince?:number;
|
||||
|
||||
|
||||
created:number;
|
||||
|
||||
|
||||
lastSeen:number;
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
export class ServerRegistry {
|
||||
|
||||
|
||||
|
||||
private servers =
|
||||
new Map<string, ServerInfo>();
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
add(server:ServerInfo){
|
||||
|
||||
|
||||
this.servers.set(
|
||||
|
||||
server.id,
|
||||
|
||||
server
|
||||
|
||||
);
|
||||
|
||||
|
||||
console.log(
|
||||
"Server registriert:",
|
||||
server
|
||||
);
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
get(id:string){
|
||||
|
||||
|
||||
return this.servers.get(
|
||||
id
|
||||
);
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
getAll(){
|
||||
|
||||
|
||||
return Array.from(
|
||||
|
||||
this.servers.values()
|
||||
|
||||
);
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
update(server:ServerInfo){
|
||||
|
||||
|
||||
this.servers.set(
|
||||
|
||||
server.id,
|
||||
|
||||
server
|
||||
|
||||
);
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
remove(id:string){
|
||||
|
||||
|
||||
this.servers.delete(
|
||||
id
|
||||
);
|
||||
|
||||
|
||||
console.log(
|
||||
"Server entfernt:",
|
||||
id
|
||||
);
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
list(){
|
||||
|
||||
|
||||
console.log(
|
||||
"\n=== SERVER ÜBERSICHT ==="
|
||||
);
|
||||
|
||||
|
||||
|
||||
const servers =
|
||||
this.getAll();
|
||||
|
||||
|
||||
|
||||
|
||||
if(servers.length === 0){
|
||||
|
||||
|
||||
console.log(
|
||||
"Keine Server vorhanden"
|
||||
);
|
||||
|
||||
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
for(const server of servers){
|
||||
|
||||
|
||||
console.log({
|
||||
|
||||
|
||||
id:
|
||||
server.id,
|
||||
|
||||
|
||||
name:
|
||||
server.name,
|
||||
|
||||
|
||||
wrapper:
|
||||
server.wrapperId,
|
||||
|
||||
|
||||
status:
|
||||
server.status,
|
||||
|
||||
|
||||
port:
|
||||
server.port,
|
||||
|
||||
|
||||
queryPort:
|
||||
server.queryPort,
|
||||
|
||||
|
||||
players:
|
||||
`${server.players}/${server.maxPlayers}`
|
||||
|
||||
|
||||
});
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
syncWrapperStatus(data:any){
|
||||
|
||||
if(!data.servers)
|
||||
return;
|
||||
|
||||
|
||||
|
||||
const runningServerIds =
|
||||
new Set(
|
||||
data.servers.map(
|
||||
(srv:any)=>srv.id
|
||||
)
|
||||
);
|
||||
|
||||
|
||||
|
||||
for(const server of this.servers.values()){
|
||||
|
||||
|
||||
if(
|
||||
server.wrapperId === data.wrapperId &&
|
||||
!runningServerIds.has(server.id)
|
||||
){
|
||||
|
||||
|
||||
if(server.status === "STOPPING"){
|
||||
|
||||
|
||||
console.log(
|
||||
"Server sauber beendet:",
|
||||
server.name
|
||||
);
|
||||
|
||||
|
||||
this.remove(
|
||||
server.id
|
||||
);
|
||||
|
||||
|
||||
}
|
||||
else if(server.status === "RUNNING"){
|
||||
|
||||
|
||||
server.status =
|
||||
"CRASHED";
|
||||
|
||||
|
||||
this.servers.set(
|
||||
server.id,
|
||||
server
|
||||
);
|
||||
|
||||
|
||||
console.log(
|
||||
"Server abgestürzt:",
|
||||
server.name
|
||||
);
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
for(const srv of data.servers){
|
||||
const server =
|
||||
this.servers.get(
|
||||
srv.id
|
||||
);
|
||||
|
||||
|
||||
if(!server)
|
||||
continue;
|
||||
|
||||
|
||||
|
||||
server.pid =
|
||||
srv.pid;
|
||||
|
||||
server.players =
|
||||
srv.players ?? 0;
|
||||
|
||||
|
||||
server.maxPlayers =
|
||||
srv.maxPlayers ?? 0;
|
||||
|
||||
|
||||
server.lastSeen =
|
||||
Date.now();
|
||||
|
||||
|
||||
|
||||
const oldStatus =
|
||||
server.status;
|
||||
|
||||
|
||||
|
||||
if(srv.alive){
|
||||
|
||||
server.status =
|
||||
"RUNNING";
|
||||
|
||||
}
|
||||
else if(
|
||||
server.status === "RUNNING"
|
||||
){
|
||||
|
||||
server.status =
|
||||
"CRASHED";
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
if(oldStatus !== server.status){
|
||||
|
||||
console.log(
|
||||
"Status Änderung:",
|
||||
server.name,
|
||||
oldStatus,
|
||||
"->",
|
||||
server.status
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
this.servers.set(
|
||||
server.id,
|
||||
server
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user