This is a read-only snapshot of the ComputerCraft forums, taken in April 2020.
Creator's profile picture

IPnet: IP system for Internet Protocol in ComputerCraft [v1.0]

Started by Creator, 05 February 2015 - 05:18 PM
Creator #1
Posted 05 February 2015 - 06:18 PM
IPnet: IP system for Internet Protocol

in

ComputerCraft [v1.0]


Admit it, you have been missing it: a fully automated network in Computercraft. It's more than just bradcasting over lagre areas, it is routing information to a specific computer. And now it is even easier for the developer to create a program using it. Just use the extremelly simple API included in the package.


Features
  • Packet Encryption with AES
  • Smart packet rerouting
  • Automatic peer discovery
  • Route finding
  • Packet repeating
  • Faulty packets don't crash the computer! WOW
  • Client API
  • Main router
  • Local routers
How To Install IT?


Now thanks to the simple installer you just have to type one command. It is all automatic!


Installer:

pastebin get 2qwZMpSB IPnet

IProuter: (Type it in the shell!)(GUI comming soon, if you behave well, in the next few days)

IPnet IProuter

IPsubRouter:

IPnet IPsubRouter

IPclient:

IPnet IPclient



But How Do I Set It UP?




MainRouter:
SpoilerThe Main Router has to be near level 255. You just load IProuter on it, set it as startup and tada. It is crucial to set up a GPS system because it the IP system works with GPS. There can be an infinite number of Main Routers.

SubRouter
SpoilerLoad the program IPsubRouter on it. Set it as startup and you're done. Communication happening on the local area network do not need to pass through the main router.

Client:
SpoilerThe client is extremelly easy to set up. It contains an API with the following functions:


IPclient.toReturn()

Initializes the modem, registers with the sub router and does a lot of boring stuff you dont need to know.


IPclient.send(destination,message)

Sends a message over the network to the destination. The desination IP is in the format of a table: {x,y,z,ID}.


IPclient.receive()

Recieves a message.

Future Goals:

Spoiler
  • Improve security
  • Packet rerouting based on router load
  • Atomatiaclly reconnect a client, even if it has been disconnected
  • That's it for now

Download from Pastebin at 2qwZMpSB.
Edited on 24 February 2015 - 01:27 PM
InDieTasten #2
Posted 06 February 2015 - 10:38 AM
I have to admit, the credits saying "by Creator" made me giggle a bit :D/>
InDieTasten #3
Posted 06 February 2015 - 10:50 AM
I can see you are somewhat experienced, and your code looks decent, but the core structure isn't like the "real" internet.
If you like to implement the "real" internet, you can have a look at the ISO OSI model, and take a closer look at all the protocols available at each individual layer from 1 - 4 ;)/>
I've got some ideas myself in doing something like this, but it'll take some time and a lot of reading to do it the "right" way. It's also configuration-wise a lot of stuff. As the "Creator"(see what I did there?) I would need to be RIPE, ISP, and multiple clients at once configuring the entire model. and theres a reason, why companies and organizations with hundreds of workers are specialized on only one part of the configuration. Theres really a lot to do to create a model of the internet in minecraft. And layer 5+ of the ISO OSI model is another completely different part.

So if you think you can do it, than at least start off by layer 1 up to layer 4 and you should be good to go. Don't underestimate the time consumption though ;D
cdel #4
Posted 06 February 2015 - 10:56 AM
Looks very promosing, I will definetly be using this.
Creator #5
Posted 06 February 2015 - 12:14 PM
In Die Tasten,

Thanks for the helpfull comments. I will certainly look into what you told me. I forgot to mention that the IProuter programm isn't totally ready. I havent debugged it. I will do that when I get some time. Probably this afternoon.

In die tasten, are you german? I'm german too. :)/>
Creator #6
Posted 24 February 2015 - 02:06 PM
BIG UPDATE!!!

Soon security improvements are comming. The API will use Diffie-Hellman Key exchange to build a secure connection using AES.

Feel free to comment, support or even tell me that my programs suck!

;)/>

~Creator
Anavrins #7
Posted 25 February 2015 - 07:27 AM
Soon security improvements are comming. The API will use Diffie-Hellman Key exchange to build a secure connection using AES.
Two things about that…
KillaVanilla's implementation of AES is broken, I've fixed it in the EnderAPI version here.
Your Diffie-Hellman implementation only uses numbers between 100 and 9999, which is very easy to crack within CC.
I've got it to work with negligible lag with numbers between 100000 and 999999.
Edited on 25 February 2015 - 07:18 AM
Creator #8
Posted 25 February 2015 - 02:21 PM
Soon security improvements are comming. The API will use Diffie-Hellman Key exchange to build a secure connection using AES.
Two things about that…
KillaVanilla's implementation of AES is broken, I've fixed it in the EnderAPI version here.
Your Diffie-Hellman implementation only uses numbers between 100 and 9999, which is very easy to crack within CC.
I've got it to work with negligible lag with numbers between 100000 and 999999.

Thanks,

I thought that else numbers would become too big and it would slow down too much. But I'll test it and see. Have you tried FileNet? It uses IPnet.