Advertisement
sammie287

ChatProgram.lua

Aug 16th, 2017
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 2.78 KB | None | 0 0
  1. local component = require("component")
  2. local event = require("event")
  3. local modem = component.modem
  4. local keyboard = require("keyboard")
  5. local data = component.data
  6.  
  7. --local serverAddress = "7709c111-2724-4327-a98e-280aaf2cd439"
  8. local serverAddress = "9955471e-b28f-4001-9d66-79c28c75be2d"
  9. local computerAddress = "defb88c6-fe9b-4fd7-a236-c1b956c9023e"
  10. local compOrServer
  11. local addressToUse
  12. local sendID
  13. local receiveID
  14. local key = "Two One Nine Two"
  15. local IV = "Thats my Kung Fu"
  16. local decryptedMessage
  17.  
  18. local function CheckModem()
  19.   for k,v in component.list("modem") do
  20.     if k == serverAddress then
  21.       compOrServer = "server"
  22.       break
  23.     elseif k == computerAddress then
  24.       compOrServer = "computer"
  25.       break
  26.     end
  27.   end
  28. end
  29.  
  30. local function CompOrServer(compOrServer)
  31.   if compOrServer == "computer" then
  32.     addressToUse = serverAddress
  33.     sendID = "Computer: "
  34.     receiveID = "Server: "
  35.   elseif compOrServer == "server" then
  36.     addressToUse = computerAddress
  37.     sendID = "Server: "
  38.     receiveID = "Computer: "
  39.   end
  40. end
  41.  
  42. local function OpenPort()
  43.   modem.open(42)
  44.   openStatus = modem.isOpen(42)
  45.   if openStatus then
  46.     print("Successfully opened port 42.")
  47.   else
  48.     print("Was unable to open port 42, closing program...")
  49.     os.exit()
  50.   end
  51. end
  52.  
  53. local function EncryptMessage(message, key, IV)
  54.   encryptedMessage = data.encrypt(message, key, IV)
  55.   if encryptedMessage == message then
  56.     print("Encryption of message has failed, exiting program.")
  57.     modem.close(42)
  58.     os.exit()
  59.   end
  60.   return encryptedMessage
  61. end
  62.  
  63. local function SendMessage(key, IV)
  64.   io.write(sendID)
  65.   message = io.read()
  66.   encryptedMessage = EncryptMessage(message, key, IV)
  67.   print("Sending " .. encryptedMessage .. " to " .. addressToUse .. " on port 42")
  68.   modem.send(addressToUse, 42, encryptedMessage)
  69. end
  70.  
  71. local function DecryptMessage(encryptedMessage, key, IV)
  72.   decryptedMessage = data.decrypt(encryptedMessage, key, IV)
  73.   if encryptedMessage == decryptedMessage then
  74.     print("Message decryption has failed, exiting program.")
  75.     modem.close(42)
  76.     os.exit()
  77.   end
  78.   return decryptedMessage
  79. end
  80.  
  81. OpenPort()
  82. CheckModem()
  83. CompOrServer(compOrServer)
  84. print("Hold ctrl to send a message. Hold alt to exit.")
  85. while true do
  86.   local type, _, from, port, _, message = event.pull()
  87.   if type == "modem_message" then
  88.     if message ~= nil then
  89.       decryptedMessage = DecryptMessage(message, key, IV)
  90.       print(receiveID .. tostring(decryptedMessage))
  91.     end
  92.   elseif type == "key_down" then
  93.     if keyboard.isAltDown() then
  94.       modem.close(42)
  95.       print("Closing port 42 and exiting program...")
  96.       os.exit()
  97.     elseif keyboard.isControlDown() then
  98.       SendMessage(key, IV)
  99.     --else
  100.       --os.sleep(0.5)
  101.     end
  102.   end
  103. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement