Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --[[
- DEJFBank Banking Server Software
- Version 1.00
- ]]--
- function cls()
- term.clear()
- term.setCursorPos(1,1)
- end
- -- Check if the floppy disk containing user data is present.
- cls()
- if not fs.exists("disk") then
- print("ERROR: User data disk is not present!")
- end
- -- Start up rednet
- print("Starting up banking server...")
- rednet.open("top")
- rednet.host("InfoServe", "BSMain")
- print("Banking server online.")
- print("")
- -- Look for requests indefinitely.
- while true do
- senderId, message, protocol = rednet.receive("InfoServe")
- if message == "UserLoginInfoRequest" then
- print("Received: UserLoginInfoRequest from "..senderId)
- rednet.send(senderId, "RequestAccepted", "InfoServe")
- print("Sent: RequestAccepted to "..senderId)
- senderID, message, protocol = rednet.receive("InfoServe")
- if not senderId == senderId then -- OBSOLETE
- print("ERROR: Another computer interfered with our session. My spaghetti code can't cope.")
- else
- print("Received username: "..message.." from "..senderId)
- -- We check if the username and password matches the sent credentials.
- if fs.exists("disk/"..message) then
- local fsReadHandle = fs.open("disk/"..message, "r")
- if fsReadHandle then
- password = fsReadHandle.readLine()
- fsReadHandle.close()
- senderId, message, protocol = rednet.receive("InfoServe")
- print("Received password: "..message.." from "..senderId)
- if message ~= password then
- rednet.send(senderId, "CredentialsInvalid", "InfoServe")
- print("Sent: CredentialsInvalid to "..senderId)
- elseif message == password then
- rednet.send(senderId, "CredentialsValid", "InfoServe")
- print("Sent: CredentialsValid to "..senderId)
- end
- end
- else
- rednet.send(senderId, "CredentialsInvalid", "InfoServe")
- print("Sent: CredentialsInvalid to "..senderId)
- end
- end
- end
- if message == "UserDataRequest" then
- print("Received: UserDataRequest from "..senderId)
- senderId, message, protocol = rednet.receive("InfoServe")
- if not senderID == senderId then -- OBSOLETE
- print("ERROR: Another computer interfered with our session. My spaghetti code can't cope.")
- else
- print("Received username: "..message.." from "..senderId)
- local fsReadHandle = fs.open("disk/"..message, "r")
- if fsReadHandle then
- password = fsReadHandle.readLine()
- balance = fsReadHandle.readLine()
- fsReadHandle.close()
- rednet.send(senderId, balance, "InfoServe")
- print("Sent balance: "..balance.." to "..senderId)
- else
- rednet.send(senderId, "Fake", "InfoServe")
- print("Sent Fake")
- end
- end
- end
- if message == "UserModifyDataRequest" then
- print("Received an UserModifyDataRequest from "..senderId)
- senderId, message, protocol = rednet.receive("InfoServe")
- print("Received sendamount: "..message.." from "..senderId)
- local sendamount = message
- senderId, message, protocol = rednet.receive("InfoServe")
- print("Received accountname: "..message.." from "..senderId)
- local accountname = message
- senderId, message, protocol = rednet.receive("InfoServe")
- print("Received username: "..message.." from "..senderId)
- local username = message
- local fsReadHandle = fs.open("disk/"..username, "r")
- if fsReadHandle then
- fsReadHandle.readLine()
- balance = fsReadHandle.readLine()
- fsReadHandle.close()
- if balance < sendamount then
- rednet.send(senderId, "DataModInvalid", "InfoServe")
- print("Sent DataModInvalid")
- elseif accountname == username then
- rednet.send(senderId, "DataModInvalid", "InfoServe")
- print("Sent DataModInvalid")
- else
- -- Here we temporarily store the user and recipient files in variables so we can use them later.
- local fsUserReadHandle = fs.open("disk/"..username, "r")
- userpassword = fsUserReadHandle.readLine()
- userbalance = fsUserReadHandle.readLine()
- fsUserReadHandle.close()
- local fsRecReadHandle = fs.open("disk/"..accountname, "r")
- recpassword = fsRecReadHandle.readLine()
- recbalance = fsRecReadHandle.readLine()
- fsRecReadHandle.close()
- local fsUserWriteHandle = fs.open("disk/"..username, "w")
- fsUserWriteHandle.writeLine(userpassword)
- fsUserWriteHandle.writeLine(tonumber(userbalance) - sendamount)
- fsUserWriteHandle.close()
- local fsRecWriteHandle = fs.open("disk/"..accountname, "w")
- fsRecWriteHandle.writeLine(recpassword)
- fsRecWriteHandle.writeLine(tonumber(recbalance) + sendamount)
- fsRecWriteHandle.close()
- rednet.send(senderId, "DataModValid", "InfoServe")
- print("Sent DataModValid to "..senderId)
- print("Done transaction")
- end
- end
- end
- if message == "UserDepositRequest" then
- print("Received an UserDepositRequest from "..senderId)
- senderId, message, protocol = rednet.receive("InfoServe")
- print("Received amount: "..message.." from "..senderId)
- local sendamount = message
- senderId, message, protocol = rednet.receive("InfoServe")
- print("Received accountname: "..message.." from "..senderId)
- local accountname = message
- -- Here we temporarily store the user files in variables so we can use them later.
- local fsRecReadHandle = fs.open("disk/"..accountname, "r")
- recpassword = fsRecReadHandle.readLine()
- recbalance = fsRecReadHandle.readLine()
- fsRecReadHandle.close()
- local fsRecWriteHandle = fs.open("disk/"..accountname, "w")
- fsRecWriteHandle.writeLine(recpassword)
- fsRecWriteHandle.writeLine(tonumber(recbalance) + sendamount)
- fsRecWriteHandle.close()
- print("Done transaction")
- --end
- end
- if message == "UserCreationRequest" then
- print("Received UserCreationRequest from "..senderId)
- rednet.send(senderId, "RequestAccepted", "InfoServe")
- print("Sent RequestAccepted to "..senderId)
- senderId, message, protocol = rednet.receive("InfoServe")
- print("Received username "..message.." from "..senderId)
- newusername = message
- senderId, message, protocol = rednet.receive("InfoServe")
- print("Received password "..message.." from "..senderId)
- newpassword = message
- if not fs.exists("disk/"..newusername) then
- local fsWriteHandle = fs.open("disk/"..newusername, "w")
- fsWriteHandle.writeLine(newpassword)
- fsWriteHandle.writeLine("1000")
- fsWriteHandle.close()
- rednet.send(senderId, "UserAccountCreationSuccess", "InfoServe")
- print("Sent UserAccountCreationSuccess to "..senderId)
- else
- rednet.send(senderId, "UserAccountCreationFail", "InfoServe")
- print("Sent UserAccountCreationFail to "..senderId)
- end
- end
- end
Add Comment
Please, Sign In to add comment