blob: 50b561cce680ad590f16ab99c471ecbc36a9b3b2 [file] [log] [blame]
PiBa-NLc3949d42018-12-23 21:06:31 +01001
2local vtc_port1 = 0
3local mailsreceived = 0
4local mailconnectionsmade = 0
5local healthcheckcounter = 0
6
7core.register_action("bug", { "http-res" }, function(txn)
8 data = txn:get_priv()
9 if not data then
10 data = 0
11 end
12 data = data + 1
13 print(string.format("set to %d", data))
14 txn.http:res_set_status(200 + data)
15 txn:set_priv(data)
16end)
17
18core.register_service("luahttpservice", "http", function(applet)
19 local response = "?"
20 local responsestatus = 200
21 if applet.path == "/setport" then
22 vtc_port1 = applet.headers["vtcport1"][0]
23 response = "OK"
24 end
25 if applet.path == "/svr_healthcheck" then
26 healthcheckcounter = healthcheckcounter + 1
27 if healthcheckcounter < 2 or healthcheckcounter > 6 then
28 responsestatus = 403
29 end
30 end
31
32 applet:set_status(responsestatus)
33 if applet.path == "/checkMailCounters" then
34 response = "MailCounters"
35 applet:add_header("mailsreceived", mailsreceived)
36 applet:add_header("mailconnectionsmade", mailconnectionsmade)
37 end
38 applet:start_response()
39 applet:send(response)
40end)
41
42core.register_service("fakeserv", "http", function(applet)
43 applet:set_status(200)
44 applet:start_response()
45end)
46
47function RecieveAndCheck(applet, expect)
48 data = applet:getline()
49 if data:sub(1,expect:len()) ~= expect then
50 core.Info("Expected: "..expect.." but got:"..data:sub(1,expect:len()))
51 applet:send("Expected: "..expect.." but got:"..data.."\r\n")
52 return false
53 end
54 return true
55end
56
57core.register_service("mailservice", "tcp", function(applet)
58 core.Info("############# Mailservice Called #############")
59 mailconnectionsmade = mailconnectionsmade + 1
60 applet:send("220 Welcome\r\n")
61 local data
62
63 if RecieveAndCheck(applet, "EHLO") == false then
64 return
65 end
66 applet:send("250 OK\r\n")
67 if RecieveAndCheck(applet, "MAIL FROM:") == false then
68 return
69 end
70 applet:send("250 OK\r\n")
71 if RecieveAndCheck(applet, "RCPT TO:") == false then
72 return
73 end
74 applet:send("250 OK\r\n")
75 if RecieveAndCheck(applet, "DATA") == false then
76 return
77 end
78 applet:send("354 OK\r\n")
79 core.Info("#### Send your mailbody")
80 local endofmail = false
81 local subject = ""
82 while endofmail ~= true do
83 data = applet:getline() -- BODY CONTENT
84 --core.Info(data)
85 if data:sub(1, 9) == "Subject: " then
86 subject = data
87 end
88 if (data == "\r\n") then
89 data = applet:getline() -- BODY CONTENT
90 core.Info(data)
91 if (data == ".\r\n") then
92 endofmail = true
93 end
94 end
95 end
Ilya Shipitsin77e3b4a2020-03-10 12:06:11 +050096 core.Info("#### Body received OK")
PiBa-NLc3949d42018-12-23 21:06:31 +010097 applet:send("250 OK\r\n")
98
99 if RecieveAndCheck(applet, "QUIT") == false then
100 return
101 end
102 applet:send("221 Mail queued for delivery to /dev/null \r\n")
103 core.Info("Mail queued for delivery to /dev/null subject: "..subject)
104 mailsreceived = mailsreceived + 1
105end)