Guest User

Untitled

a guest
Jul 6th, 2018
30
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 6.53 KB | None | 0 0
  1. --[[
  2.  
  3.  DEJFBank Banking Server Software
  4.  Version 1.00
  5.  
  6. ]]--
  7.  
  8. function cls()
  9.     term.clear()
  10.     term.setCursorPos(1,1)
  11. end
  12.  
  13. -- Check if the floppy disk containing user data is present.
  14. cls()
  15. if not fs.exists("disk") then
  16.     print("ERROR: User data disk is not present!")
  17. end
  18.  
  19. -- Start up rednet
  20. print("Starting up banking server...")
  21. rednet.open("top")
  22. rednet.host("InfoServe", "BSMain")
  23. print("Banking server online.")
  24. print("")
  25.  
  26. -- Look for requests indefinitely.
  27. while true do
  28.     senderId, message, protocol = rednet.receive("InfoServe")
  29.    
  30.     if message == "UserLoginInfoRequest" then
  31.         print("Received: UserLoginInfoRequest from "..senderId)
  32.         rednet.send(senderId, "RequestAccepted", "InfoServe")
  33.         print("Sent: RequestAccepted to "..senderId)
  34.         senderID, message, protocol = rednet.receive("InfoServe")
  35.         if not senderId == senderId then -- OBSOLETE
  36.             print("ERROR: Another computer interfered with our session. My spaghetti code can't cope.")
  37.         else
  38.             print("Received username: "..message.." from "..senderId)
  39.             -- We check if the username and password matches the sent credentials.
  40.             if fs.exists("disk/"..message) then
  41.                 local fsReadHandle = fs.open("disk/"..message, "r")
  42.                 if fsReadHandle then
  43.                     password = fsReadHandle.readLine()
  44.                     fsReadHandle.close()
  45.                     senderId, message, protocol = rednet.receive("InfoServe")
  46.                     print("Received password: "..message.." from "..senderId)
  47.                     if message ~= password then
  48.                         rednet.send(senderId, "CredentialsInvalid", "InfoServe")
  49.                         print("Sent: CredentialsInvalid to "..senderId)
  50.                     elseif message == password then
  51.                         rednet.send(senderId, "CredentialsValid", "InfoServe")
  52.                         print("Sent: CredentialsValid to "..senderId)
  53.                     end
  54.                 end
  55.             else
  56.                 rednet.send(senderId, "CredentialsInvalid", "InfoServe")
  57.                 print("Sent: CredentialsInvalid to "..senderId)
  58.             end
  59.         end
  60.     end
  61.    
  62.     if message == "UserDataRequest" then
  63.         print("Received: UserDataRequest from "..senderId)
  64.         senderId, message, protocol = rednet.receive("InfoServe")
  65.         if not senderID == senderId then -- OBSOLETE
  66.             print("ERROR: Another computer interfered with our session. My spaghetti code can't cope.")
  67.         else
  68.             print("Received username: "..message.." from "..senderId)
  69.             local fsReadHandle = fs.open("disk/"..message, "r")
  70.             if fsReadHandle then
  71.                 password = fsReadHandle.readLine()
  72.                 balance = fsReadHandle.readLine()
  73.                 fsReadHandle.close()
  74.                 rednet.send(senderId, balance, "InfoServe")
  75.                 print("Sent balance: "..balance.." to "..senderId)
  76.             else
  77.                 rednet.send(senderId, "Fake", "InfoServe")
  78.                 print("Sent Fake")
  79.             end
  80.         end
  81.     end
  82.    
  83.     if message == "UserModifyDataRequest" then
  84.         print("Received an UserModifyDataRequest from "..senderId)
  85.         senderId, message, protocol = rednet.receive("InfoServe")
  86.         print("Received sendamount: "..message.." from "..senderId)
  87.         local sendamount = message
  88.         senderId, message, protocol = rednet.receive("InfoServe")
  89.         print("Received accountname: "..message.." from "..senderId)
  90.         local accountname = message
  91.         senderId, message, protocol = rednet.receive("InfoServe")
  92.         print("Received username: "..message.." from "..senderId)
  93.         local username = message
  94.         local fsReadHandle = fs.open("disk/"..username, "r")
  95.         if fsReadHandle then
  96.             fsReadHandle.readLine()
  97.             balance = fsReadHandle.readLine()
  98.             fsReadHandle.close()           
  99.             if balance < sendamount then
  100.                 rednet.send(senderId, "DataModInvalid", "InfoServe")
  101.                 print("Sent DataModInvalid")
  102.             elseif accountname == username then
  103.                 rednet.send(senderId, "DataModInvalid", "InfoServe")
  104.                 print("Sent DataModInvalid")
  105.             else
  106.                 -- Here we temporarily store the user and recipient files in variables so we can use them later.
  107.                 local fsUserReadHandle = fs.open("disk/"..username, "r")
  108.                 userpassword = fsUserReadHandle.readLine()
  109.                 userbalance = fsUserReadHandle.readLine()
  110.                 fsUserReadHandle.close()
  111.                
  112.                 local fsRecReadHandle = fs.open("disk/"..accountname, "r")
  113.                 recpassword = fsRecReadHandle.readLine()
  114.                 recbalance = fsRecReadHandle.readLine()
  115.                 fsRecReadHandle.close()
  116.                
  117.                
  118.                 local fsUserWriteHandle = fs.open("disk/"..username, "w")
  119.                 fsUserWriteHandle.writeLine(userpassword)
  120.                 fsUserWriteHandle.writeLine(tonumber(userbalance) - sendamount)
  121.                 fsUserWriteHandle.close()
  122.                
  123.                 local fsRecWriteHandle = fs.open("disk/"..accountname, "w")
  124.                 fsRecWriteHandle.writeLine(recpassword)
  125.                 fsRecWriteHandle.writeLine(tonumber(recbalance) + sendamount)
  126.                 fsRecWriteHandle.close()
  127.                 rednet.send(senderId, "DataModValid", "InfoServe")
  128.                 print("Sent DataModValid to "..senderId)               
  129.                 print("Done transaction")
  130.             end
  131.         end
  132.     end
  133.  
  134.     if message == "UserDepositRequest" then
  135.         print("Received an UserDepositRequest from "..senderId)
  136.         senderId, message, protocol = rednet.receive("InfoServe")
  137.         print("Received amount: "..message.." from "..senderId)
  138.         local sendamount = message
  139.         senderId, message, protocol = rednet.receive("InfoServe")
  140.         print("Received accountname: "..message.." from "..senderId)
  141.         local accountname = message
  142.        
  143.         -- Here we temporarily store the user files in variables so we can use them later.             
  144.         local fsRecReadHandle = fs.open("disk/"..accountname, "r")
  145.         recpassword = fsRecReadHandle.readLine()
  146.         recbalance = fsRecReadHandle.readLine()
  147.         fsRecReadHandle.close()
  148.            
  149.         local fsRecWriteHandle = fs.open("disk/"..accountname, "w")
  150.         fsRecWriteHandle.writeLine(recpassword)
  151.         fsRecWriteHandle.writeLine(tonumber(recbalance) + sendamount)
  152.         fsRecWriteHandle.close()           
  153.         print("Done transaction")
  154.            
  155.         --end  
  156.     end
  157.    
  158.     if message == "UserCreationRequest" then
  159.         print("Received UserCreationRequest from "..senderId)
  160.         rednet.send(senderId, "RequestAccepted", "InfoServe")
  161.         print("Sent RequestAccepted to "..senderId)
  162.         senderId, message, protocol = rednet.receive("InfoServe")
  163.         print("Received username "..message.." from "..senderId)
  164.         newusername = message
  165.         senderId, message, protocol = rednet.receive("InfoServe")
  166.         print("Received password "..message.." from "..senderId)
  167.         newpassword = message
  168.        
  169.         if not fs.exists("disk/"..newusername) then
  170.             local fsWriteHandle = fs.open("disk/"..newusername, "w")       
  171.             fsWriteHandle.writeLine(newpassword)
  172.             fsWriteHandle.writeLine("1000")
  173.             fsWriteHandle.close()
  174.             rednet.send(senderId, "UserAccountCreationSuccess", "InfoServe")
  175.             print("Sent UserAccountCreationSuccess to "..senderId)
  176.         else
  177.             rednet.send(senderId, "UserAccountCreationFail", "InfoServe")
  178.             print("Sent UserAccountCreationFail to "..senderId)
  179.         end
  180.     end
  181. end
Add Comment
Please, Sign In to add comment