Advertisement
Guest User

Untitled

a guest
Nov 14th, 2016
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.60 KB | None | 0 0
  1. 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
  2. id, msg, protocol = rednet.receive (20) -- Empfangen und speichern
  3. if id ~= nil then --Falls eine nachricht einging
  4. print ("Computer " ..id.. " sent " ..msg) --Ausgeben der Empafangenen Nachricht in dem Terminal
  5. end
  6. end
  7.  
  8. function loginrequest () --Funktion um ein Login zu verarbeiten
  9. save() --Save (siehe oben)
  10. username = msg --Speichern des Usernames
  11. save()
  12. password = msg --Speichern des Passworts
  13. if fs.exists ("logins/"..username..".txt") then -- Überprüfen ob der username vergeben ist
  14. logindir = fs.open ("logins/" ..username..".txt", "r") --Öffnen der text datei
  15. savedUsername = logindir.readLine (1) --Auslesen der .txt Datei
  16. savedPassword = logindir.readLine (2)
  17. print ("ausgelesener Username: "..savedUsername) --Ausgabe im Terminal (Debugging)
  18. print ("ausgelesenes Passwort: "..savedPassword)
  19. if username == savedUsername and password == savedPassword then --Vergleichen der gesendeten Daten mit den ausgelesenen
  20. rednet.send (id, "loggedin") --Falls Username und Passwort korrekt ist, dann senden von "loggedin"
  21. end
  22. logindir.close() --Schlie0en der .txt Datei
  23. end
  24. end
  25.  
  26. function newAccount() --Funktion zum erstellen eines neuen Accounts
  27. save () --Speichern des User-Inputs in Variabelen auf dem Server
  28. newUsername = msg
  29. save ()
  30. newPassword = msg
  31. if fs.exists ("logins/"..newUsername..".txt") then --Überprüfen ob der Benutzername berreits vergeben ist
  32. rednet.send (id, "bereitsVergeben") --Senden von "berreitsVergeben"
  33. else --Falls der Benutzername noch nicht vergeben ist
  34. newDir = fs.open ("logins/"..newUsername..".txt", "w") --Erstellen der .txt in Logins/
  35. newDir.writeLine (newUsername) -- Schreiben der Benutzerdaten
  36. newDir.writeLine (newPassword)
  37. rednet.send(id, "erfolgreich") -- Bestätigung an den Clienten senden
  38. newDir.close() -- Die .txt schließen
  39. end
  40. end
  41.  
  42. function sendrequest() --Funktion zur verarbeitung einer Email
  43. save() -- Speichern von Empfänger, Text, Sender
  44. Empfaenger = msg
  45. save()
  46. text = msg
  47. save()
  48. sender = msg
  49. sleep (1)
  50. rednet.send (id, "received") --Bestätigung des Erhalts an den Clienten
  51. if fs.exists ("Mails/" ..Empfaenger) == false then --Erstellen des Mail Verzeichnis für den Empfänger
  52. fs.makeDir ("Mails/" ..Empfaenger)
  53. end
  54. if fs.exists ("Mails/"..Empfaenger.. "/list.txt") == true then -- Liste um eine vorführende Reihnfolge in den .txt zu gewährleisten
  55. 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
  56. k = list.readLine ()
  57. list.close()
  58. k = k + 1
  59. list = fs.open ("Mails/" ..Empfaenger.. "/list.txt", "w")
  60. list.writeLine(k)
  61. else
  62. list = fs.open ("Mails/"..Empfaenger.."/list.txt", "w") --Erstellen der List.txt und in die erste Zeile "1" schreiben.
  63. list.writeLine("1")
  64. k = 1
  65. end
  66. list.close() --Schließen der list.txt
  67.  
  68. -- Speichern der Nachricht in einer .txt
  69. msgdir = fs.open ("Mails/"..Empfaenger.."/nachricht"..k..".txt", "w")
  70. msgdir.writeLine (sender)
  71. msgdir.writeLine (text)
  72. msgdir.close()
  73. end
  74.  
  75. function refreshrequest() --Funktion um eine fetch-Anfrage zu bearbeiten
  76. save () --Speichern des Usernames
  77. refreshUsername = msg
  78. if fs.exists ("Mails/"..refreshUsername.."/list.txt") == false then
  79. refreshDir = fs.open ("Mails/"..refreshUsername.."/list.txt", "w")
  80. refreshDir.writeLine ("0")
  81. refreshDir.close()
  82. end
  83. refreshDir = fs.open ("Mails/"..refreshUsername.."/list.txt", "r") --Öffnen der list.txt des Users
  84. maxrefresh = refreshDir.readAll() --Jede nachricht ist aufsteigend nummerriert. Die höchste Nummer ist in der list.txt gespeichert. Diese wird jetzt
  85. refreshDir.close() --Schließen der list.
  86. x = 0 --Initialisieren der Variable x und definieren als 0
  87. while x < (maxrefresh + 2) do -- Solange x nicht die maximale Nachrichtnummer überschreitet
  88. if fs.exists("Mails/"..refreshUsername.."/nachricht"..x..".txt") == true then --Überprüfen ob die Nachricht x existiert
  89. dir = fs.open ("Mails/"..refreshUsername.."/nachricht"..x..".txt", "r") -- Öffnen der nachricht
  90. line1 = dir.readLine (1) --Auslesen der Nachricht
  91. line2 = dir.readLine (2)
  92. dir.close() --Schließen der Nachricht
  93. x = x + 1 -- X um 1 erhöhen
  94. rednet.send(id, line1) --Senden der 1. Zeile der Nachricht
  95. print("Server sendet an "..id.." "..line1) --Ausgabe im Terminal
  96. rednet.send(id, line2) --Senden der 2. Zeile der Nachricht
  97. print("Server sendet an "..id.." "..line2) --Ausgabe im Terminal
  98. else
  99. x = x + 1 -- Falls Nachricht x nicht existiert, dann mit der nächsten fortfahren
  100. end
  101. end
  102. rednet.send (id, "ende") --Triggerbefehle für den Clienten, dass alle Nachrichten übermittelt worden sind
  103. print ("Server sendet ende") --Ausgabe im Terminal
  104. end
  105. -- Das Programm
  106. print ("Email-Server started")
  107. rednet.open ("right")
  108. while true do --Verzeichnis der Triggerbefehle
  109. save() --Warten auf einen Triggerbefehl
  110. if msg == "loginrequest" then --Login Triggerbefehl
  111. loginrequest()
  112. elseif msg == "refresh" then --Email Fetch Triggerbefehl
  113. refreshrequest()
  114. elseif msg == "nachricht" then -- Nachricht senden Triggerbefehl
  115. sendrequest()
  116. elseif msg == "Neuer Account" then -- Neuer Account Triggerbefehl
  117. newAccount()
  118. end
  119. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement