-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsecurelink-apache2.lua
executable file
·57 lines (48 loc) · 2.07 KB
/
securelink-apache2.lua
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#!/usr/bin/env lua
-- Copyright (C) 2013 Luca Filipozzi <[email protected]>
--
-- Permission is hereby granted, free of charge, to any person obtaining a copy
-- of this software and associated documentation files (the "Software"), to deal
-- in the Software without restriction, including without limitation the rights
-- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-- copies of the Software, and to permit persons to whom the Software is
-- furnished to do so, subject to the following conditions:
--
-- The above copyright notice and this permission notice shall be included in
-- all copies or substantial portions of the Software.
--
-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-- SOFTWARE.
package.path = "/etc/apache2/?.lua;" .. package.path
local securelink = require("securelink-common")
local function get_uri(_str)
-- pass in four parameters, delineated by '+' since RewriteMap
-- provides no means to pass parameters via the environment
local _key, _src, _tgt, _uri = string.match(_str, "^([^+]+)+([^+]+)+([^+]+)+(.+)$")
return _key, _src, _tgt, _uri
end
local function set_uri(_uri, _ext)
io.write(_uri .. "+" .. _ext)
end
local function return_status(_status)
error()
end
local function log_error(_error)
-- intentionally empty .. mechanism not available in apache via RewriteMap
end
securelink.return_status = return_status
securelink.log_error = log_error
-- do forever: get_uri() -> rewrite_uri() -> set_uri()
while true do
if not pcall(function () set_uri(securelink.rewrite_uri(get_uri(io.read()))) end) then
io.write("NULL")
end
io.write("\n")
io.flush()
end
-- vim: set ts=2 sw=2 et ai si fdm=indent: