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