mirror of
https://github.com/IgorTimofeev/MineOS.git
synced 2026-09-13 18:46:22 +05:00
- Applications/ : 12 apps SecSite (SecurityConsole, Access, Accounts, Badges, Logs, Messages,
Fleet, Protocols, Reactor, Defense, Config, Map)
- Libraries/shared + Libraries/mineos/{lib,login-fork} : nos libs (résolues via /Libraries/?.lua,
requires en notation slash)
- Libraries/System.lua : auth par carte OpenSecurity ajoutée dans system.authorize (protégée par
pcall -> login mot de passe intact si pas de carte réseau)
- Installer/Files.cfg : nos fichiers ajoutés à la section required (installés de base)
- Installer/Main.lua + OpenOS.lua : repositoryURL repointé sur quentinthierry12/mineos
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UD7cRL4GJdermphho5rVXM
95 lines
3.6 KiB
Lua
95 lines
3.6 KiB
Lua
-- shared/protocol.lua
|
|
-- Contrat de communication terminal/agent/tablette <-> serveur.
|
|
-- Les messages sont des tables sérialisées (util.serialize) puis emballées (netsec.wrap).
|
|
|
|
local protocol = {}
|
|
|
|
protocol.VERSION = 1
|
|
protocol.PORT = 2412 -- port modem dédié à l'intranet de sécurité
|
|
|
|
-- Types de requêtes (client -> serveur).
|
|
protocol.REQ = {
|
|
PING = "ping",
|
|
AUTH_CARD = "auth.card", -- { cardId } -> résout un compte via badge
|
|
AUTH_PASSWORD = "auth.password", -- { name, password } -> login classique
|
|
SESSION_CHECK = "session.check", -- { token }
|
|
LOGOUT = "auth.logout", -- { token }
|
|
ACCOUNT_LIST = "account.list", -- { token }
|
|
ACCOUNT_CREATE = "account.create", -- { token, name, role, cardId?, password? }
|
|
ACCOUNT_DELETE = "account.delete", -- { token, id }
|
|
LOG_QUERY = "log.query", -- { token, limit? }
|
|
DOOR_LIST = "door.list", -- { token }
|
|
DOOR_CMD = "door.cmd", -- { token, id, action }
|
|
RADAR_STATE = "radar.state", -- { token }
|
|
SESSION_LIST = "session.list", -- { token }
|
|
ACCOUNT_SETROLE = "account.setrole", -- { token, id, role }
|
|
ACCOUNT_SETCARD = "account.setcard", -- { token, id, cardId? }
|
|
-- Flotte (lot 4) :
|
|
NODE_REGISTER = "node.register", -- { token?, address, kind }
|
|
NODE_CMD = "node.cmd", -- { token, address, command }
|
|
NODE_LIST = "node.list", -- { token }
|
|
-- Collaboration (lot 5) :
|
|
ANNOUNCE_POST = "announce.post", -- { token, text }
|
|
BOARD_GET = "board.get", -- { token }
|
|
MSG_SEND = "msg.send", -- { token, to, text }
|
|
MSG_INBOX = "msg.inbox", -- { token }
|
|
-- Salle de contrôle & protocoles (lot 7) :
|
|
SITUATION_GET = "situation.get", -- { token }
|
|
PROTOCOL_LIST = "protocol.list", -- { token }
|
|
PROTOCOL_RUN = "protocol.run", -- { token, code, drill }
|
|
-- Supervision réacteur & contre-mesures :
|
|
POWER_STATE = "power.state", -- { token }
|
|
REACTOR_SCRAM = "reactor.scram", -- { token, id }
|
|
DEFENSE_STATE = "defense.state", -- { token }
|
|
DEFENSE_MODE = "defense.mode", -- { token, mode }
|
|
DEFENSE_FIRE = "defense.fire", -- { token }
|
|
-- Kiosque public (sans token) & configuration :
|
|
KIOSK_GET = "kiosk.get", -- {} (aucun token requis : info publique)
|
|
SETTINGS_GET = "settings.get", -- { token }
|
|
SETTINGS_SET = "settings.set", -- { token, key, value }
|
|
}
|
|
|
|
-- Actions de porte acceptées par DOOR_CMD.
|
|
protocol.DOOR_ACTIONS = {
|
|
open = true, close = true,
|
|
inner_open = true, inner_close = true,
|
|
outer_open = true, outer_close = true,
|
|
lockdown = true, release = true,
|
|
}
|
|
|
|
-- Types d'événements diffusés (serveur -> clients).
|
|
protocol.EVT = {
|
|
ALERT = "evt.alert", -- montée DEFCON / missile
|
|
LOCKDOWN = "evt.lockdown",
|
|
ANNOUNCE = "evt.announce", -- annonce / bulletin
|
|
}
|
|
|
|
-- Messages serveur -> agent de nœud (gestion à distance).
|
|
protocol.AGENT = {
|
|
EXEC = "agent.exec", -- { command } où command ∈ NODE_COMMANDS
|
|
}
|
|
|
|
protocol.NODE_COMMANDS = {
|
|
reboot = true, shutdown = true, lock = true, status = true,
|
|
blackout = true, release = true, -- override « poste inaccessible » + levée
|
|
}
|
|
|
|
-- Construit une requête.
|
|
function protocol.request(rtype, payload)
|
|
local req = payload or {}
|
|
req.v = protocol.VERSION
|
|
req.t = rtype
|
|
return req
|
|
end
|
|
|
|
-- Réponses normalisées.
|
|
function protocol.ok(data)
|
|
return { ok = true, data = data }
|
|
end
|
|
|
|
function protocol.err(reason)
|
|
return { ok = false, error = reason }
|
|
end
|
|
|
|
return protocol
|