Code: Select all
{"assembly":{"type":"type-c electronic machine","name":"SubNET Hub Server","opened":1},"components":[{"type":"beeper circuit","inputs":[[1,0,"chime"],[2,0,50],[3,0,1]]},{"type":"small screen","name":"Current Address Selected"},{"type":"small screen","name":"New Address Domain Name"},{"type":"large screen","name":"Activity Monitoring Screen"},{"type":"large screen","name":"Messaging Screen"},{"type":"concatenator","name":"Address Modification Concatenator","inputs":[[1,0,"NTNet Address "],[2,0,"103"],[3,0," domain name is now set to "],[4,0,"SubNET Testbed"],[5,0,"!"]]},{"type":"number to string","name":"Modification Address NtS","inputs":[[1,0,103]]},{"type":"memory chip","name":"RAP Set Packet Header","inputs":[[1,0,"SubNET Hub"]]},{"type":"concatenator","name":"Registration Accepted Packet Concatenator","inputs":[[1,0,"Congratulations, your NTNet hardware address, "],[2,0,"103"],[3,0," is now registered under the SubNET domain name "],[4,0,"SubNET Testbed"],[5,0,". Welcome to SubNET!"]]},{"type":"toggle button","name":"Toggle Secure Mode"},{"type":"light-emitting diode","name":"Secure Mode Active","inputs":[[2,0,"#66FF00"]]},{"type":"toggle button","name":"Toggle External Registration"},{"type":"light-emitting diode","name":"External Registration Allowed","inputs":[[2,0,"#FFEA00"]]},{"type":"toggle button","name":"Toggle Public Access To Webpage"},{"type":"light-emitting diode","name":"Webpage Online","inputs":[[2,0,"#FF9900"]]},{"type":"toggle button","name":"Toggle Network Lockdown"},{"type":"light-emitting diode","name":"Network Lockdown In Effect"},{"type":"number pad","name":"Set Address To Modify"},{"type":"subtraction circuit","name":"Address Input Compensator","inputs":[[1,0,103],[2,0,100]]},{"type":"text pad","name":"Set Address Domain Name"},{"type":"button","name":"Confirm Modifications"},{"type":"large tesla power relay"},{"type":"NTNet networking circuit"},{"type":"equal gate","name":"Is Lockdown In Effect","inputs":[[1,0,0],[2,0,0]]},{"type":"button","name":"Reset Domain Name Directory"},{"type":"large list constructor","name":"Domain Name Directory 101-116"},{"type":"large list constructor","name":"Domain Name Directory 117-132"},{"type":"append circuit","name":"DND Append Circuit 101-132","inputs":[[1,0,[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]],[2,0,[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]]]},{"type":"large list constructor","name":"Domain Name Directory 133-148"},{"type":"large list constructor","name":"Domain Name Directory 149-164"},{"type":"append circuit","name":"DND Append Circuit 133-164","inputs":[[1,0,[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]],[2,0,[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]]]},{"type":"append circuit","name":"DND Append Circuit 101-164","inputs":[[1,0,[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]],[2,0,[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]]]},{"type":"memory chip","name":"Domain Name Directory Proper","inputs":[[1,0,[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]]]},{"type":"write circuit","name":"DND Modifyer","inputs":[[1,0,[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]],[2,0,3],[3,0,"SubNET Testbed"]]},{"type":"string exploder","name":"Header Parser A","inputs":[[1,0,"SubNET Hub"],[2,0,";"]]},{"type":"list deconstructor","name":"Header Parser B","inputs":[[1,0,["SubNET Hub"]]]},{"type":"search circuit","name":"Find Sender Address","inputs":[[1,0,[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]]]},{"type":"equal gate","name":"Is Secure Mode In Effect","inputs":[[1,0,0],[2,0,1]]},{"type":"small memory circuit","name":"Terminated Connection Warning Memory","inputs":[[1,0,"ERROR CODE 1: Unregistered or nonexistant sender domain detected in packet header. Connection terminated."],[2,0,"warning buzz"]]},{"type":"memory chip","name":"Set No Sender Flag","inputs":[[1,0,1]]},{"type":"memory chip","name":"Set Sender Flag","inputs":[[1,0,0]]},{"type":"addition circuit","name":"Sender Address Compensator","inputs":[[1,0,4],[2,0,100]]},{"type":"number to string","name":"Sender Address NtS","inputs":[[1,0,104]]},{"type":"search circuit","name":"Find Recipient Address","inputs":[[1,0,[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]],[2,0,"SubNET Hub"]]},{"type":"memory chip","name":"Set No Recipient Flag","inputs":[[1,0,2]]},{"type":"memory chip","name":"Set Recipient Flag","inputs":[[1,0,0]]},{"type":"addition circuit","name":"Recipient Address Compensator","inputs":[[1,0,2],[2,0,100]]},{"type":"number to string","name":"Recipient Address NtS","inputs":[[1,0,102]]},{"type":"equal gate","name":"If SubNET Connection","inputs":[[1,0,"SubNET Hub"],[2,0,"SubNET Hub"]]},{"type":"small memory circuit","name":"Flag Compilation","inputs":[[1,0,0],[2,0,0]]},{"type":"addition circuit","name":"Add Flags","inputs":[[1,0,1],[2,0,2]]},{"type":"greater_than or equal gate","name":"If Flags","inputs":[[1,0,3],[2,0,1]]},{"type":"four pulse demultiplexer","name":"Error Message Demux","inputs":[[1,0,3]]},{"type":"concatenator","name":"Code 1 Error Concatenator","inputs":[[1,0,"ERROR CODE 1: Unregistered or nonexistant sender domain detected in packet header. Forwarding packet to "],[2,0,"SubNET Hub"],[3,0," at NTNet address "],[4,0,"102"],[5,0," regardless."]]},{"type":"small memory circuit","name":"Code 1 Error Memory","inputs":[[1,0,"ERROR CODE 1: Unregistered or nonexistant sender domain detected in packet header. Forwarding packet to Dummy Reciever at NTNet address 101 regardless."],[2,0,"beep"]]},{"type":"concatenator","name":"Code 2 Error Concatenator","inputs":[[1,0,"ERROR CODE 2: Unregistered or nonexistant recipient domain detected in packet header. Sending connection error packet to "],[3,0," at NTNet address "],[4,0,"104"],[5,0,"."]]},{"type":"small memory circuit","name":"Code 2 Error Memory","inputs":[[1,0,"ERROR CODE 2: Unregistered or nonexistant recipient domain detected in packet header. Sending connection error packet to Dummy Sender at NTNet address 103."],[2,0,"buzz sigh"]]},{"type":"text pad","name":"Configure System Domain Name"},{"type":"concatenator","name":"System Domain Name Change Concatenator","inputs":[[1,0,"System Domain Name is now "],[2,0,"SubNET Hub"],[3,0," on outgoing packet headers! Remember to update it's entry in the Domain Name Directory to match."]]},{"type":"medium memory circuit","name":"Connection Error Packet Memory","inputs":[[1,0,"104"],[2,0,"ERROR CODE 2: The domain name you are trying to reach does not exist."],[3,0,"SubNET Hub"]]},{"type":"small memory circuit","name":"Code 3 Memory","inputs":[[1,0,"ERROR CODE 3: Unregistered or nonexistant sender and recipient domains detected in packet header. Packet discarded."],[2,0,"buzz twice"]]},{"type":"concatenator","name":"No Error Concatenator","inputs":[[2,0," at NTNet address "],[3,0,"104"],[4,0," sending packet via SubNET to "],[5,0,"SubNET Hub"],[6,0," at NTNet address "],[7,0,"102"],[8,0,"."]]},{"type":"equal gate","name":"Is Webpage Online","inputs":[[1,0,0],[2,0,1]]},{"type":"string exploder","name":"Webpage Command Parser A","inputs":[[1,0,"Congratulations, your NTNet hardware address, 103 is now registered under the SubNET domain name SubNET Testbed. Welcome to SubNET!"],[2,0,";"]]},{"type":"list deconstructor","name":"Webpage Command Parser B","inputs":[[1,0,["Congratulations, your NTNet hardware address, 103 is now registered under the SubNET domain name SubNET Testbed. Welcome to SubNET!"]]]},{"type":"equal gate","name":"Did He Figure Out How To Bother Us","inputs":[[1,0,"Congratulations, your NTNet hardware address, 103 is now registered under the SubNET domain name SubNET Testbed. Welcome to SubNET!"],[2,0,"Message Admin"]]},{"type":"small memory circuit","name":"Message Screen Modification","inputs":[[2,0,"chime"]]},{"type":"memory chip","name":"Screen Blank Memory"},{"type":"button","name":"Reset Monitors"},{"type":"equal gate","name":"Will He At Least Fuck The Directory","inputs":[[1,0,"Congratulations, your NTNet hardware address, 103 is now registered under the SubNET domain name SubNET Testbed. Welcome to SubNET!"],[2,0,"Register Domain"]]},{"type":"equal gate","name":"Can He Even Do That","inputs":[[1,0,0],[2,0,1]]},{"type":"medium memory circuit","name":"No He Can Not","inputs":[[1,0,"104"],[2,0,"We are sorry, but external registration of domain names has been closed until further notice. Please contact the system administraitor if you want a SubNET domain name of your own."],[3,0,"SubNET Hub"]]},{"type":"small memory circuit","name":"I Guess He Can"},{"type":"string to number","inputs":[[1,0,"103"]]},{"type":"subtraction circuit","name":"YEAH YEAH COMPENSAT FOR THIS SHIT","inputs":[[1,0,103],[2,0,100]]}],"wires":[[[1,"I",1],[39,"O",2]],[[1,"I",1],[55,"O",2]],[[1,"I",1],[57,"O",2]],[[1,"I",1],[61,"O",2]],[[1,"I",1],[67,"O",2]],[[1,"A",1],[39,"A",2]],[[1,"A",1],[55,"A",2]],[[1,"A",1],[57,"A",2]],[[1,"A",1],[61,"A",2]],[[1,"A",1],[67,"A",2]],[[2,"I",1],[18,"O",1]],[[2,"I",1],[68,"O",1]],[[2,"A",1],[19,"A",2]],[[2,"A",1],[68,"A",2]],[[3,"I",1],[20,"O",1]],[[3,"I",1],[68,"O",1]],[[3,"A",1],[20,"A",1]],[[3,"A",1],[68,"A",2]],[[4,"I",1],[6,"O",1]],[[4,"I",1],[39,"O",1]],[[4,"I",1],[55,"O",1]],[[4,"I",1],[57,"O",1]],[[4,"I",1],[59,"O",1]],[[4,"I",1],[61,"O",1]],[[4,"I",1],[62,"O",1]],[[4,"I",1],[68,"O",1]],[[4,"A",1],[6,"A",2]],[[4,"A",1],[39,"A",2]],[[4,"A",1],[55,"A",2]],[[4,"A",1],[57,"A",2]],[[4,"A",1],[59,"A",2]],[[4,"A",1],[61,"A",2]],[[4,"A",1],[62,"A",2]],[[4,"A",1],[68,"A",2]],[[5,"I",1],[67,"O",1]],[[5,"I",1],[68,"O",1]],[[5,"A",1],[67,"A",2]],[[5,"A",1],[68,"A",2]],[[6,"I",2],[7,"O",1]],[[6,"I",2],[73,"O",1]],[[6,"I",4],[20,"O",1]],[[6,"I",4],[73,"O",2]],[[6,"A",1],[34,"A",2]],[[7,"I",1],[18,"O",1]],[[7,"O",1],[9,"I",2]],[[7,"O",1],[23,"I",1]],[[7,"A",1],[18,"A",1]],[[8,"I",1],[58,"O",1]],[[8,"O",1],[23,"I",3]],[[8,"A",1],[9,"A",2]],[[8,"A",2],[23,"A",1]],[[9,"I",2],[73,"O",1]],[[9,"I",4],[20,"O",1]],[[9,"I",4],[73,"O",2]],[[9,"O",1],[23,"I",2]],[[9,"A",1],[34,"A",2]],[[10,"O",1],[11,"I",1]],[[10,"O",1],[38,"I",1]],[[12,"O",1],[13,"I",1]],[[12,"O",1],[71,"I",1]],[[14,"O",1],[15,"I",1]],[[14,"O",1],[63,"I",1]],[[16,"O",1],[17,"I",1]],[[16,"O",1],[24,"I",1]],[[18,"O",1],[19,"I",1]],[[18,"A",1],[19,"A",1]],[[19,"O",1],[34,"I",2]],[[20,"O",1],[34,"I",3]],[[21,"A",1],[34,"A",1]],[[23,"I",1],[60,"O",1]],[[23,"I",1],[48,"O",1]],[[23,"I",1],[72,"O",1]],[[23,"I",2],[60,"O",2]],[[23,"I",2],[23,"O",2]],[[23,"I",2],[72,"O",2]],[[23,"I",3],[60,"O",3]],[[23,"I",3],[23,"O",3]],[[23,"I",3],[72,"O",3]],[[23,"O",2],[64,"I",1]],[[23,"O",3],[35,"I",1]],[[23,"A",1],[60,"A",2]],[[23,"A",1],[62,"A",2]],[[23,"A",1],[72,"A",2]],[[23,"A",2],[24,"A",1]],[[24,"A",2],[35,"A",1]],[[25,"A",1],[26,"A",1]],[[26,"O",1],[28,"I",1]],[[26,"A",2],[27,"A",1]],[[27,"O",1],[28,"I",2]],[[27,"A",2],[28,"A",1]],[[28,"O",1],[32,"I",1]],[[28,"A",2],[29,"A",1]],[[29,"O",1],[31,"I",1]],[[29,"A",2],[30,"A",1]],[[30,"O",1],[31,"I",2]],[[30,"A",2],[31,"A",1]],[[31,"O",1],[32,"I",2]],[[31,"A",2],[32,"A",1]],[[32,"O",1],[33,"I",1]],[[32,"A",2],[33,"A",1]],[[33,"I",1],[34,"O",1]],[[33,"O",1],[34,"I",1]],[[33,"O",1],[37,"I",1]],[[33,"O",1],[44,"I",1]],[[33,"A",1],[34,"A",2]],[[34,"I",2],[75,"O",1]],[[34,"I",3],[73,"O",2]],[[34,"A",1],[75,"A",2]],[[35,"O",1],[36,"I",1]],[[35,"A",2],[36,"A",1]],[[36,"O",1],[44,"I",2]],[[36,"O",1],[54,"I",2]],[[36,"O",1],[62,"I",5]],[[36,"O",1],[49,"I",1]],[[36,"O",2],[37,"I",2]],[[36,"O",2],[56,"I",2]],[[36,"O",2],[62,"I",1]],[[36,"A",2],[37,"A",1]],[[37,"O",1],[42,"I",1]],[[37,"A",2],[41,"A",1]],[[37,"A",3],[38,"A",1]],[[38,"A",2],[39,"A",1]],[[38,"A",3],[40,"A",1]],[[40,"O",1],[50,"I",1]],[[40,"A",2],[44,"A",1]],[[41,"O",1],[50,"I",1]],[[41,"A",2],[42,"A",1]],[[42,"O",1],[43,"I",1]],[[42,"A",2],[43,"A",1]],[[43,"O",1],[56,"I",4]],[[43,"O",1],[60,"I",1]],[[43,"O",1],[62,"I",3]],[[43,"O",1],[72,"I",1]],[[43,"A",2],[44,"A",1]],[[44,"O",1],[47,"I",1]],[[44,"A",2],[46,"A",1]],[[44,"A",3],[45,"A",1]],[[45,"O",1],[50,"I",2]],[[45,"A",2],[50,"A",1]],[[46,"O",1],[50,"I",2]],[[46,"A",2],[47,"A",1]],[[47,"O",1],[48,"I",1]],[[47,"A",2],[48,"A",1]],[[48,"O",1],[54,"I",4]],[[48,"O",1],[62,"I",7]],[[48,"A",2],[49,"A",1]],[[49,"I",2],[58,"O",1]],[[49,"A",2],[63,"A",1]],[[49,"A",3],[50,"A",1]],[[50,"O",1],[51,"I",1]],[[50,"O",2],[51,"I",2]],[[50,"A",2],[51,"A",1]],[[51,"O",1],[52,"I",1]],[[51,"O",1],[53,"I",1]],[[51,"A",2],[52,"A",1]],[[52,"A",2],[53,"A",1]],[[52,"A",3],[62,"A",1]],[[53,"A",2],[54,"A",1]],[[53,"A",3],[56,"A",1]],[[53,"A",4],[61,"A",1]],[[54,"O",1],[55,"I",1]],[[54,"A",2],[55,"A",1]],[[56,"O",1],[57,"I",1]],[[56,"A",2],[57,"A",1]],[[57,"A",2],[60,"A",1]],[[58,"O",1],[60,"I",3]],[[58,"O",1],[59,"I",2]],[[58,"O",1],[72,"I",3]],[[58,"A",1],[59,"A",1]],[[60,"A",1],[63,"A",3]],[[63,"A",2],[64,"A",1]],[[64,"O",1],[65,"I",1]],[[64,"A",2],[65,"A",1]],[[65,"O",1],[66,"I",1]],[[65,"O",1],[70,"I",1]],[[65,"O",2],[67,"I",1]],[[65,"O",2],[73,"I",1]],[[65,"O",3],[73,"I",2]],[[65,"A",2],[66,"A",1]],[[66,"A",2],[67,"A",1]],[[66,"A",3],[70,"A",1]],[[68,"A",1],[69,"A",1]],[[70,"A",2],[71,"A",1]],[[71,"A",2],[73,"A",1]],[[71,"A",3],[72,"A",1]],[[73,"O",1],[74,"I",1]],[[73,"A",2],[74,"A",1]],[[74,"O",1],[75,"I",1]],[[74,"A",2],[75,"A",1]]]}
Well, given the DNS I already put up failed immediately, here's the new and improved version, with some new and improved branding, the SubNET Hub.
It comes with 64 slots to register domain names in, the ability to modify the domain name listing both from the Hub itself and via external devices, multiple questionably useful security features, and an unfinished pseduo-webpage feature that both me and god gave up on.
So, to operate this thing, there are about a dozen different controls, here they are from top to bottom;
The four toggle switches toggle various functions, primarily based around how much you want to lock users out of the system:
-Toggle Secure Mode allows you to turn on "Secure Mode", which automatically shitcans any data transmission with an invalid sender domain, otherwise it will go through as normal.
-Toggle External Registration lets you control if people are able to change the domain name listings from an external device, more on that later.
-Toggle Public Access to the Webpage lets you control whether, when someone tries to connect to the SubNET Hub's domain name, they are able to access the two whole embedded functions in that thing, or if the attempt is treated as if they tried to contact a non-existant domain.
-Toggle Network Lockdown turns off all incoming traffic entirely, no if ands or buts.
You can check the status of these switches by examining the Hub and looking at the labeled LEDs.
The next three controls all have to do with changing domain names via the Hub itself, their names should be self explanitory. Just remember that you have to press "Confirm Modifications" after you've set your changes to make sure they go through.
-Reset Domain Name Directory wipes the list containing all the domain names clean, in case a clown hacked them with an electronic assembly he cobbled together out of banana peels and audacity so that every single Domain Name is HONK.
-Configure System Domain Name only changes the Domain Name used for when the Hub sends out packets of it's own for error messages and notifying devices that their address is now registered with SubNET. If you change it here you'll still have to modify the actual listing in the directory.
-Reset Monitors just wipes any text on the monitors, more just a convenience for getting rid of old data on days with minimal activity and getting rid of any absurdly long text crawls that might end up on the monitors via shenanigans.
Packet headers still work mostly as they did before. Recipient Name;Sender Name. The only case where this doesn't happen is packets directly from the SubNET Hub, which simply sets the packet header to whatever the system domain name has been configured to. Also, as I mentioned before, there is a pseudo-webpage thing that kinda fell apart. The idea was that if you contacted the SubNET Hub directly it'd ping back with a packet holding data about the system and what you can do from your external device with the system, which if you set up your device in such a way, could be seen as a sort of homepage or whatever. But I kinda gave up on it because the Hub is really bad at sending it's own packets most of the time--either that or the testbed I posted last time is barely functional--though the actual functions are still there and work.
You can do two whole things through the amazing wonderful half-bakedful SubNET Hub External Access System via command given through the main Data To Send pin:
-Message Admin;[string] lets you send a message to whoever is operating the unit via the built in Message Screen. The admin can't reply back, though.
-Register Domain;[NTNet Address];[string] lets you set a domain name for that given NTNet address if the External Registration is turned on.
Honestly not my proudest work, and also honestly I am just kinda fucking done with tinkering with this particular machine, though if anyone else feels up to doing a better job of it, you can easily rip out the pseduo-webpage I put in by just taking out every circuit below the "Is Webpage Online" circuit and replacing it with your own.
See you next time, when I spiral even further into networking induced insanity via actually making a SubNET compatible spess website and web browsing device and then finally become one with the integrated circuits.