# Networks
- Also involves a computer update
- **LONG IN THE FUTURE - needed for final rendition of science system, but this is very low priority.**
## General
- Singleton global datums for records, techwebs, etc, kinda sucks
- Inspired by Nebula networking systems
## Networks
- Different computer networks made in game
- Networks consist of relays, and functional objects
- Client-server architecture, kinda
- Mainframe manages an entire network
- Some servers are singletons - should only have one per network, more won't work (only one will be allowed to be linked)
- Others can be duplicated (research correlation servers, triangulation nodes, relay, routers, etc)
- Servers represent network functionality
- Clients request network functionality
- A server can act like a client
## Relays, Communication
- Power networks can transmit a network across
- Network cables can transmit a network across
- Machinery either connect to wired networks, or wireless networks.
- Wireless:
- Wired cables can connect to wireless relays
- Wired networks can be bridged with subspace relays
## Devices
- /datum/network_connection/wired, /datum/network_connection/wireless, and /datum/component/network_connection
- Unsure real structure yet, may need to move away from components
- Each device utilizes a network connection
- Connects to any network the connection can access
- Toggle between networks
- Connection types:
- Wired (network cable or wires)
- If network cable, cables should be **smart wire only** and **extraordinarily cheap.**
- Area (APC)
- Wireless (relays)
- Bridge connection types (inter-network bridging):
- Physical connection to a router
- Layered wires - router handles internetwork bridging, don't directly connect by default
- Subspace relays to expand a network into another area.
## Servers
- A network has servers with roles on them
- Mainframe determines network ID and everything else
- File servers store data
- Special mainframes that store science, security, and medical data?
- Logging server, read-only for the most part, logs network actions to disk
- Router controls inter-network communication
- Firewall controls network security
- Access Controller controls what can access a network
- Mainframe links to servers via ID + network ID
- Optional mainframe "Secret" key used to authenticate root level servers
- Taking out servers limits network functionality
- Taking out mainframe or severing connection completely kills the network.
- Multiple mainframes per network won't work
- Department mainframes are nigh-indestructible and have static, overriding IDs
- Other mainframes will automatically section into numbers - physically impossible to conflict.
- Servers can be registered to multiple mainframes but why would you do that??
## Authentication
- All devices have an unchangable network ID
- You can block IDs using the firewall
- You can entirely block wireless or inter-network communication with the firewall
- Networks have secret keys used to allow servers to be linked
- Networks have user accounts
- One superuser account per mainframe
- RNG password for remote shell access
- Always accessible via directly interacting with the mainframe physically
- Allows full access to network (not servers, but you can simply bypass servers via mainframe)
- Every server has a superuser account
- Same rules as above
- Allows control to that server
- Resources like techweb access defaults to "can access network", but can be locked to certain user permission flags instead
- Access controller manages this
- Permissions lists that things check for
- Other networks have virtual accounts
- Allow permission control of internetwork behavior
- Each crewmember has a default account
- Each ID has a default account
- Each crewmember has the same default account as their ID
## Inter-Network
- Each department has a set of network devices
- Station has a master network with default permissions
- To get data from another network, one network has to go through this master network from its network, to the destination, and return data.
- Primary network is fully wireless, other than wirenet connections to department networks
- Default network for station equipment
- Full structure:
- Station has a master network
- Subnetworks for each department + AI and cyborgs
- Each network will have the same basic machines
- Mainframe
- Logging server
- Access Controller
- Router
- Firewall
- Fileserver(s)
- Wireless transreceiver
- Connected to station main network
- Special machinery
- Security records fileserver
- Medical records fileserver
- Research mainframe (not a fileserver, stores master research data)
- Research correlation servers (not a fileserver)
- Backup individual records to files
- AI control machinery
## Shell
- Shell commands for modular computers
- Nebula has servers just be subtypes of modular computers - we should do this too.
- Login to other nodes with shell
- ACL on each computer for what flags are required on an account to log in
- Defaults to allowing network login - also required for network functionality
- Might need to make this more permissive
- Shell executes command on remote computers if connected
- Allows for bounce chaining
- Shell commands and most GUI programs are linked so you can do *most* but not all things on GUI with shell
## Silicons
- Cyborgs get an innate ability to connect to any network
- Connecting to unsafe networks might be a bad idea - they need to be "anchored" on a primary network that gives them access
- Defaults to the AI's network
- New server peripherels?
- Door controller
- APC controller
- Cameranet controller
- Miniature combiined AI access manager for subnetworks
- New devices?
- All devices using default wireless connection to their APC, which then connects to a network node in substation
- Taking out cameranet won't prevent silicons from using network to access, they'll just be blindfiring kinda
- AI can connect to any network with an AI relay
- Can be configured to block out AIs
- Camera access decoupled from control
- In exchange, **greatly** increased control from AIs for machinery
- To make cutting out AI more difficult, could do control cutting + APC cut?
- WIP
## Triangulation
- New servers that can be duplicated:
- Trianglation servers
- Relays
- Wireless relays with a triangulation server allows for
- Logging server to automatically give approximate location of a device that does a static action
- This gets more accurate with time if the user isn't moving
- Active triangulation of "socket" systems like ongoing voicecalls/downloads that continually become more accurate as time goes on
- AI actions count as one of these always.
## Devices
- Security HUDs - facial recognition uses security records server
- Diagnostic HUDs - basic damage can be evaluated, anything more requires connection to servers
- Medical HUDs - anything but the "healthbar" which is always usable
- AI, cyborgs - Network control, arbitrary cameranet access
- **Science**
- All kinds of fabricators can download designs if they can access a research server in some way
- R&D consoles use this entirely
- Genetics console download genetic data
- Efficiency upgrades depend on this
- Modular Computers - mostly serving as thin-ish clients, allows for local storage + processing but mostly requires this
- Tablets having scanners for network IDs on things
- PDAs - should be combined with tablets when possible.
- Most machinery should be linked if possible
- Security system:
- Individual network keys?
- Station master door, APC, air alarm controllers?
- APCs governing rooms? Doors defaulting to APC network?
- APCs being able to either join a powerline network or a network cable specifically?
- Everything controllable by command line with the right authentication keys
- Silicon transreceiver nodes automatically grant this?
- Wires to cut for network control + AI control at once?
- Normal clients: stationwide access codes on a master server? Server forcing syncs? Department servers? Etc
- Enforced network crosspoints at routers would make this easier.
## Antagonism
- Break into the research server and rm -rf / science's work
- Use shells to bounce connections around to make tracking harder
- Steal people's IDs for automatic network login
- Break into the physical servers to give yourself network all access
- Break the logging server
- Gain permissions on door controller, manually key doors open with shell
- Fuck with the AI/cyborgs for fun and profit
- Take down network lines and relays
- Gain access to devices and fuck with them
- If this is implemented it should be extraordinarily obvious so you don't have AIs getting lynched for no reason