Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function save () -- Funktion zum Empfangen einer Nachricht und speichern der Paramter Computer Id, des senders (vergelichbar mit IP) und der nachricht in den Variablen, id und msg. Außerdem support für Protokoll, aber nicht verwendet derzeit
- id, msg, protocol = rednet.receive (20) -- Empfangen und speichern
- if id ~= nil then --Falls eine nachricht einging
- print ("Computer " ..id.. " sent " ..msg) --Ausgeben der Empafangenen Nachricht in dem Terminal
- end
- end
- function loginrequest () --Funktion um ein Login zu verarbeiten
- save() --Save (siehe oben)
- username = msg --Speichern des Usernames
- save()
- password = msg --Speichern des Passworts
- if fs.exists ("logins/"..username..".txt") then -- Überprüfen ob der username vergeben ist
- logindir = fs.open ("logins/" ..username..".txt", "r") --Öffnen der text datei
- savedUsername = logindir.readLine (1) --Auslesen der .txt Datei
- savedPassword = logindir.readLine (2)
- print ("ausgelesener Username: "..savedUsername) --Ausgabe im Terminal (Debugging)
- print ("ausgelesenes Passwort: "..savedPassword)
- if username == savedUsername and password == savedPassword then --Vergleichen der gesendeten Daten mit den ausgelesenen
- rednet.send (id, "loggedin") --Falls Username und Passwort korrekt ist, dann senden von "loggedin"
- end
- logindir.close() --Schlie0en der .txt Datei
- end
- end
- function newAccount() --Funktion zum erstellen eines neuen Accounts
- save () --Speichern des User-Inputs in Variabelen auf dem Server
- newUsername = msg
- save ()
- newPassword = msg
- if fs.exists ("logins/"..newUsername..".txt") then --Überprüfen ob der Benutzername berreits vergeben ist
- rednet.send (id, "bereitsVergeben") --Senden von "berreitsVergeben"
- else --Falls der Benutzername noch nicht vergeben ist
- newDir = fs.open ("logins/"..newUsername..".txt", "w") --Erstellen der .txt in Logins/
- newDir.writeLine (newUsername) -- Schreiben der Benutzerdaten
- newDir.writeLine (newPassword)
- rednet.send(id, "erfolgreich") -- Bestätigung an den Clienten senden
- newDir.close() -- Die .txt schließen
- end
- end
- function sendrequest() --Funktion zur verarbeitung einer Email
- save() -- Speichern von Empfänger, Text, Sender
- Empfaenger = msg
- save()
- text = msg
- save()
- sender = msg
- sleep (1)
- rednet.send (id, "received") --Bestätigung des Erhalts an den Clienten
- if fs.exists ("Mails/" ..Empfaenger) == false then --Erstellen des Mail Verzeichnis für den Empfänger
- fs.makeDir ("Mails/" ..Empfaenger)
- end
- if fs.exists ("Mails/"..Empfaenger.. "/list.txt") == true then -- Liste um eine vorführende Reihnfolge in den .txt zu gewährleisten
- list = fs.open ("Mails/" ..Empfaenger.. "/list.txt", "r") --Auslesen des list.txt und dann 1 addieren und anschließend den neuen Wert in die list.txt schreiben
- k = list.readLine ()
- list.close()
- k = k + 1
- list = fs.open ("Mails/" ..Empfaenger.. "/list.txt", "w")
- list.writeLine(k)
- else
- list = fs.open ("Mails/"..Empfaenger.."/list.txt", "w") --Erstellen der List.txt und in die erste Zeile "1" schreiben.
- list.writeLine("1")
- k = 1
- end
- list.close() --Schließen der list.txt
- -- Speichern der Nachricht in einer .txt
- msgdir = fs.open ("Mails/"..Empfaenger.."/nachricht"..k..".txt", "w")
- msgdir.writeLine (sender)
- msgdir.writeLine (text)
- msgdir.close()
- end
- function refreshrequest() --Funktion um eine fetch-Anfrage zu bearbeiten
- save () --Speichern des Usernames
- refreshUsername = msg
- if fs.exists ("Mails/"..refreshUsername.."/list.txt") == false then
- refreshDir = fs.open ("Mails/"..refreshUsername.."/list.txt", "w")
- refreshDir.writeLine ("0")
- refreshDir.close()
- end
- refreshDir = fs.open ("Mails/"..refreshUsername.."/list.txt", "r") --Öffnen der list.txt des Users
- maxrefresh = refreshDir.readAll() --Jede nachricht ist aufsteigend nummerriert. Die höchste Nummer ist in der list.txt gespeichert. Diese wird jetzt
- refreshDir.close() --Schließen der list.
- x = 0 --Initialisieren der Variable x und definieren als 0
- while x < (maxrefresh + 2) do -- Solange x nicht die maximale Nachrichtnummer überschreitet
- if fs.exists("Mails/"..refreshUsername.."/nachricht"..x..".txt") == true then --Überprüfen ob die Nachricht x existiert
- dir = fs.open ("Mails/"..refreshUsername.."/nachricht"..x..".txt", "r") -- Öffnen der nachricht
- line1 = dir.readLine (1) --Auslesen der Nachricht
- line2 = dir.readLine (2)
- dir.close() --Schließen der Nachricht
- x = x + 1 -- X um 1 erhöhen
- rednet.send(id, line1) --Senden der 1. Zeile der Nachricht
- print("Server sendet an "..id.." "..line1) --Ausgabe im Terminal
- rednet.send(id, line2) --Senden der 2. Zeile der Nachricht
- print("Server sendet an "..id.." "..line2) --Ausgabe im Terminal
- else
- x = x + 1 -- Falls Nachricht x nicht existiert, dann mit der nächsten fortfahren
- end
- end
- rednet.send (id, "ende") --Triggerbefehle für den Clienten, dass alle Nachrichten übermittelt worden sind
- print ("Server sendet ende") --Ausgabe im Terminal
- end
- -- Das Programm
- print ("Email-Server started")
- rednet.open ("right")
- while true do --Verzeichnis der Triggerbefehle
- save() --Warten auf einen Triggerbefehl
- if msg == "loginrequest" then --Login Triggerbefehl
- loginrequest()
- elseif msg == "refresh" then --Email Fetch Triggerbefehl
- refreshrequest()
- elseif msg == "nachricht" then -- Nachricht senden Triggerbefehl
- sendrequest()
- elseif msg == "Neuer Account" then -- Neuer Account Triggerbefehl
- newAccount()
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement