rev |
line source |
jbe/bsw@0
|
1 request._status = nil
|
jbe/bsw@0
|
2 request._forward = nil
|
jbe/bsw@0
|
3 request._forward_processed = false
|
jbe/bsw@0
|
4 request._redirect = nil
|
jbe/bsw@0
|
5 request._absolute_baseurl = nil
|
jbe@97
|
6 request._is_404 = false
|
jbe/bsw@0
|
7 request._404_route = nil
|
jbe/bsw@0
|
8 request._force_absolute_baseurl = false
|
jbe/bsw@0
|
9 request._perm_params = {}
|
jbe/bsw@0
|
10 request._csrf_secret = nil
|
jbe@1
|
11 request._json_requests_allowed = false
|
jbe/bsw@0
|
12
|
jbe@91
|
13 request._params = {}
|
jbe/bsw@0
|
14 local depth
|
jbe/bsw@0
|
15 if cgi then -- if-clause to support interactive mode
|
jbe@97
|
16 if cgi.params._webmcp_404 then
|
jbe@97
|
17 request.force_absolute_baseurl()
|
jbe@97
|
18 request._is_404 = true
|
jbe@97
|
19 end
|
jbe@91
|
20 for key, value in pairs(cgi.params) do
|
jbe@91
|
21 if not string.match(key, "^_webmcp_") then
|
jbe@91
|
22 request._params[key] = value
|
jbe@91
|
23 end
|
jbe@91
|
24 end
|
jbe@91
|
25 local path = cgi.params._webmcp_path
|
jbe@91
|
26 if path then
|
jbe@91
|
27 local function parse()
|
jbe@91
|
28 local module, action, view, suffix, id
|
jbe@91
|
29 if path == "" then
|
jbe@91
|
30 request._module = "index"
|
jbe@91
|
31 request._view = "index"
|
jbe@96
|
32 return
|
jbe@91
|
33 end
|
jbe@91
|
34 module = string.match(path, "^([^/]+)/$")
|
jbe@91
|
35 if module then
|
jbe@91
|
36 request._module = module
|
jbe@91
|
37 request._view = "index"
|
jbe@91
|
38 return
|
jbe@91
|
39 end
|
jbe@91
|
40 module, action = string.match(path, "^([^/]+)/([^/.]+)$")
|
jbe@91
|
41 if module then
|
jbe@91
|
42 request._module = module
|
jbe@91
|
43 request._action = action
|
jbe@91
|
44 return
|
jbe@91
|
45 end
|
jbe@91
|
46 module, view, suffix = string.match(path, "^([^/]+)/([^/.]+)%.([^/]+)$")
|
jbe@91
|
47 if module then
|
jbe@91
|
48 request._module = module
|
jbe@91
|
49 request._view = view
|
jbe@91
|
50 request._suffix = suffix
|
jbe@91
|
51 return
|
jbe@91
|
52 end
|
jbe@91
|
53 module, view, id, suffix = string.match(path, "^([^/]+)/([^/]+)/([^/.]+)%.([^/]+)$")
|
jbe@91
|
54 if module then
|
jbe@91
|
55 request._module = module
|
jbe@91
|
56 request._view = view
|
jbe@91
|
57 request._id = id
|
jbe@91
|
58 request._suffix = suffix
|
jbe@91
|
59 return
|
jbe@91
|
60 end
|
jbe@97
|
61 request._is_404 = true
|
jbe@91
|
62 end
|
jbe@91
|
63 parse()
|
jbe@101
|
64 -- allow id to also be set by "_webmcp_id" parameter
|
jbe@101
|
65 if cgi.params._webmcp_id ~= nil then
|
jbe@101
|
66 request._id = cgi.params._webmcp_id
|
jbe@101
|
67 end
|
jbe@97
|
68 depth = 0
|
jbe@97
|
69 for match in string.gmatch(path, "/") do
|
jbe@97
|
70 depth = depth + 1
|
jbe@97
|
71 end
|
jbe@91
|
72 else
|
jbe@91
|
73 request._module = cgi.params._webmcp_module
|
jbe@91
|
74 request._action = cgi.params._webmcp_action
|
jbe@91
|
75 request._view = cgi.params._webmcp_view
|
jbe@91
|
76 request._suffix = cgi.params._webmcp_suffix
|
jbe@91
|
77 request._id = cgi.params._webmcp_id
|
jbe@96
|
78 depth = tonumber(cgi.params._webmcp_urldepth)
|
jbe@91
|
79 end
|
jbe/bsw@0
|
80 end
|
jbe/bsw@0
|
81 if depth and depth > 0 then
|
jbe/bsw@0
|
82 local elements = {}
|
jbe/bsw@0
|
83 for i = 1, depth do
|
jbe/bsw@0
|
84 elements[#elements+1] = "../"
|
jbe/bsw@0
|
85 end
|
jbe/bsw@0
|
86 request._relative_baseurl = table.concat(elements)
|
jbe/bsw@0
|
87 else
|
jbe/bsw@0
|
88 request._relative_baseurl = "./"
|
jbe/bsw@0
|
89 end
|
jbe/bsw@0
|
90
|
jbe/bsw@0
|
91 request._app_basepath = assert(
|
jbe/bsw@0
|
92 os.getenv("WEBMCP_APP_BASEPATH"),
|
jbe/bsw@0
|
93 'WEBMCP_APP_BASEPATH is not set.'
|
jbe/bsw@0
|
94 )
|
jbe/bsw@0
|
95 if not string.find(request._app_basepath, "/$") then
|
jbe/bsw@0
|
96 request._app_basebase = request._app_basepath .. "/"
|
jbe/bsw@0
|
97 end
|