| 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
 |