| 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@97 | 64     depth = 0 | 
| jbe@97 | 65     for match in string.gmatch(path, "/") do | 
| jbe@97 | 66       depth = depth + 1 | 
| jbe@97 | 67     end | 
| jbe@91 | 68   else | 
| jbe@91 | 69     request._module = cgi.params._webmcp_module | 
| jbe@91 | 70     request._action = cgi.params._webmcp_action | 
| jbe@91 | 71     request._view   = cgi.params._webmcp_view | 
| jbe@91 | 72     request._suffix = cgi.params._webmcp_suffix | 
| jbe@91 | 73     request._id     = cgi.params._webmcp_id | 
| jbe@96 | 74     depth = tonumber(cgi.params._webmcp_urldepth) | 
| jbe@91 | 75   end | 
| jbe/bsw@0 | 76 end | 
| jbe/bsw@0 | 77 if depth and depth > 0 then | 
| jbe/bsw@0 | 78   local elements = {} | 
| jbe/bsw@0 | 79   for i = 1, depth do | 
| jbe/bsw@0 | 80     elements[#elements+1] = "../" | 
| jbe/bsw@0 | 81   end | 
| jbe/bsw@0 | 82   request._relative_baseurl = table.concat(elements) | 
| jbe/bsw@0 | 83 else | 
| jbe/bsw@0 | 84   request._relative_baseurl = "./" | 
| jbe/bsw@0 | 85 end | 
| jbe/bsw@0 | 86 | 
| jbe/bsw@0 | 87 request._app_basepath = assert( | 
| jbe/bsw@0 | 88   os.getenv("WEBMCP_APP_BASEPATH"), | 
| jbe/bsw@0 | 89   'WEBMCP_APP_BASEPATH is not set.' | 
| jbe/bsw@0 | 90 ) | 
| jbe/bsw@0 | 91 if not string.find(request._app_basepath, "/$") then | 
| jbe/bsw@0 | 92   request._app_basebase = request._app_basepath .. "/" | 
| jbe/bsw@0 | 93 end |