204 lines
6.8 KiB
Lua
204 lines
6.8 KiB
Lua
local API = require("api")
|
|
API.createWebsocket("ws://befator.befatorinc.de:5000/banking")
|
|
local id = os.getComputerID()
|
|
local autehnticated = false
|
|
local lastusr = 0
|
|
local lastpass = 0
|
|
local wpass = 0
|
|
local wuser = 0
|
|
local awaiting_inbox = false
|
|
local motd = "Befator Inc."
|
|
print(id)
|
|
|
|
|
|
|
|
|
|
|
|
-- Funktion zum Empfangen und Verarbeiten von Nachrichten
|
|
local function receiveMessages()
|
|
while true do
|
|
local success, messageObj = API.getMessage()
|
|
if success then
|
|
-- Beispiel für die Verwendung
|
|
if messageObj.id == id or messageObj.id == -1 and messageObj.action == "displayMessage" then
|
|
if messageObj.value2 == "message_count" then
|
|
os.queueEvent("inbox_message_received", messageObj.value1, messageObj.value2, messageObj.value3)
|
|
end
|
|
print(messageObj.value1)
|
|
if messageObj.value2 == "auth.success" then
|
|
autehnticated = true
|
|
wuser = API.username
|
|
wpass = API.password
|
|
end
|
|
end
|
|
if messageObj.action == "reauth" and autehnticated == true then
|
|
API.sendMessage({
|
|
["action"] = "reauth_server",
|
|
["value1"] = wuser,
|
|
["value2"] = wpass,
|
|
["id"] = id
|
|
})
|
|
end
|
|
if messageObj.id == id or messageObj.id == -1 and messageObj.action == "inbox" then
|
|
os.queueEvent("inbox_message_received", messageObj.value1, messageObj.value2, messageObj.value3)
|
|
end
|
|
if messageObj.action == "motd" then
|
|
motd = messageObj.value1
|
|
end
|
|
if messageObj.id == id or messageObj.id == -1 and messageObj.action == "pm_inbox" then
|
|
os.queueEvent("pm_inbox_message_received", messageObj.value1, messageObj.value2, messageObj.value3)
|
|
end
|
|
-- messageObj.(value) = value
|
|
else
|
|
print("WebSocket-Verbindung unterbrochen")
|
|
end
|
|
end
|
|
end
|
|
|
|
|
|
|
|
local function userInteraction()
|
|
API.sendGetMOTD()
|
|
sleep(0.2)
|
|
while true do
|
|
term.clear()
|
|
term.setCursorPos(1, 1)
|
|
print(motd)
|
|
print(" ")
|
|
if autehnticated == true then
|
|
print("Authenticated!")
|
|
print("As " .. wuser)
|
|
print(" ")
|
|
elseif autehnticated == false then
|
|
print("Not Authenticated!")
|
|
print("")
|
|
print("")
|
|
end
|
|
print("What would you like to do?: login, register, logout, pay, balance, inbox, read, pms, pmread, sendpm")
|
|
local indes = read()
|
|
if indes == "login" then
|
|
print("Username:")
|
|
local username = io.read()
|
|
print("Password (VISIBLE!):")
|
|
local password = io.read()
|
|
API.setCredentials(username, password)
|
|
API.login()
|
|
lastusr = username
|
|
lastpass = password
|
|
end
|
|
if indes == "register" then
|
|
print("Username:")
|
|
local username = io.read()
|
|
print("Password (VISIBLE!):")
|
|
local password = io.read()
|
|
API.setCredentials(username, password)
|
|
API.register()
|
|
end
|
|
if indes == "logout" then
|
|
API.logout()
|
|
lastpass = 0
|
|
lastusr = 0
|
|
wpass = 0
|
|
wuser = 0
|
|
autehnticated = false
|
|
|
|
print("Logged out!")
|
|
end
|
|
if indes == "pay" and autehnticated == true then
|
|
print("To Username:")
|
|
local dest = io.read()
|
|
print("Amount:")
|
|
local amount = io.read()
|
|
API.pay(dest, amount)
|
|
end
|
|
if indes == "balance" and autehnticated == true then
|
|
API.sendGetBalance()
|
|
end
|
|
if indes == "inbox" and autehnticated == true then
|
|
API.sendGetInboxPointer()
|
|
print("Send Message")
|
|
local event, value1, value2, value3 = os.pullEvent("inbox_message_received")
|
|
print(value2 .. " " .. value3)
|
|
local value1 = value2
|
|
local value2 = value3
|
|
print("Received Queue")
|
|
print(value1)
|
|
print(value2)
|
|
if value1 == "message_count" then
|
|
local count = tonumber(value2)
|
|
term.clear()
|
|
term.setCursorPos(1, 1)
|
|
local i = 0
|
|
for i = 1, count do
|
|
API.sendGetInboxMessage(i)
|
|
local event, value1, value2 = os.pullEvent("inbox_message_received")
|
|
print(value2 .. " " .. value1)
|
|
print("--------------------")
|
|
end
|
|
end
|
|
end
|
|
if indes == "pms" and autehnticated == true then
|
|
API.sendGetPmInboxPointer()
|
|
print("Send Message")
|
|
local event, value1, value2, value3 = os.pullEvent("pm_inbox_message_received")
|
|
local value1 = value2
|
|
local value2 = value3
|
|
if value1 == "pm_message_count" then
|
|
local count = tonumber(value2)
|
|
term.clear()
|
|
term.setCursorPos(1, 1)
|
|
local i = 0
|
|
for i = 1, count do
|
|
API.sendGetPmInboxMessage(i)
|
|
local event, value1, value2 = os.pullEvent("pm_inbox_message_received")
|
|
print(value2 .. " " .. value1)
|
|
print("--------------------")
|
|
end
|
|
end
|
|
end
|
|
if indes == "pmread" and autehnticated == true then
|
|
print("Please type the Message id you would like to mark as Read: ")
|
|
local pointer = read()
|
|
API.markPmRead(pointer)
|
|
end
|
|
if indes == "read" and autehnticated == true then
|
|
print("Please type the Message id you would like to mark as Read: ")
|
|
local pointer = read()
|
|
API.markRead(pointer)
|
|
end
|
|
if indes == "sendpm" and autehnticated == true then
|
|
print("Destination: ")
|
|
local dest = read()
|
|
print("Message: ")
|
|
local message = read()
|
|
API.sendPmMessage(dest, message)
|
|
print("Send")
|
|
end
|
|
|
|
|
|
print("Press enter to Continue!")
|
|
read()
|
|
end
|
|
end
|
|
-- Hauptprogramm
|
|
if API.ws then
|
|
print("WebSocket-Verbindung hergestellt")
|
|
-- Sende eine Nachricht im gewünschten Format
|
|
---local id = 1234 -- Beispiel-ID
|
|
---API.sendMessage({
|
|
--- ["action"] = "update",
|
|
--- ["status"] = true,
|
|
--- ["id"] = id,
|
|
---})
|
|
|
|
-- Empfange Nachrichten in einer Schleife
|
|
|
|
parallel.waitForAny(receiveMessages, userInteraction)
|
|
|
|
-- Schließe die Verbindung am Ende
|
|
ws.close()
|
|
else
|
|
print("Fehler beim Herstellen der WebSocket-Verbindung")
|
|
end
|
|
|