PiBa-NL | c3949d4 | 2018-12-23 21:06:31 +0100 | [diff] [blame] | 1 | |
| 2 | local vtc_port1 = 0 |
| 3 | local mailsreceived = 0 |
| 4 | local mailconnectionsmade = 0 |
| 5 | local healthcheckcounter = 0 |
| 6 | |
| 7 | core.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) |
| 16 | end) |
| 17 | |
| 18 | core.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) |
| 40 | end) |
| 41 | |
| 42 | core.register_service("fakeserv", "http", function(applet) |
| 43 | applet:set_status(200) |
| 44 | applet:start_response() |
| 45 | end) |
| 46 | |
| 47 | function 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 |
| 55 | end |
| 56 | |
| 57 | core.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 |
| 96 | core.Info("#### Body recieved OK") |
| 97 | 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 |
| 105 | end) |