jbe/bsw@0: request._status = nil jbe/bsw@0: request._forward = nil jbe/bsw@0: request._forward_processed = false jbe/bsw@0: request._redirect = nil jbe/bsw@0: request._absolute_baseurl = nil jbe/bsw@0: request._404_route = nil jbe/bsw@0: request._force_absolute_baseurl = false jbe/bsw@0: request._perm_params = {} jbe/bsw@0: request._csrf_secret = nil jbe@1: request._json_requests_allowed = false jbe/bsw@0: jbe@91: request._params = {} jbe/bsw@0: local depth jbe/bsw@0: if cgi then -- if-clause to support interactive mode jbe@91: for key, value in pairs(cgi.params) do jbe@91: if not string.match(key, "^_webmcp_") then jbe@91: request._params[key] = value jbe@91: end jbe@91: end jbe@91: local path = cgi.params._webmcp_path jbe@91: if path then jbe@91: local function parse() jbe@91: local module, action, view, suffix, id jbe@91: if path == "" then jbe@91: request._module = "index" jbe@91: request._view = "index" jbe@91: depth = 0 jbe@96: return jbe@91: end jbe@91: module = string.match(path, "^([^/]+)/$") jbe@91: if module then jbe@91: request._module = module jbe@91: request._view = "index" jbe@91: depth = 1 jbe@91: return jbe@91: end jbe@91: module, action = string.match(path, "^([^/]+)/([^/.]+)$") jbe@91: if module then jbe@91: request._module = module jbe@91: request._action = action jbe@91: depth = 1 jbe@91: return jbe@91: end jbe@91: module, view, suffix = string.match(path, "^([^/]+)/([^/.]+)%.([^/]+)$") jbe@91: if module then jbe@91: request._module = module jbe@91: request._view = view jbe@91: request._suffix = suffix jbe@91: depth = 1 jbe@91: return jbe@91: end jbe@91: module, view, id, suffix = string.match(path, "^([^/]+)/([^/]+)/([^/.]+)%.([^/]+)$") jbe@91: if module then jbe@91: request._module = module jbe@91: request._view = view jbe@91: request._id = id jbe@91: request._suffix = suffix jbe@91: depth = 2 jbe@91: return jbe@91: end jbe@91: end jbe@91: parse() jbe@91: else jbe@91: request._module = cgi.params._webmcp_module jbe@91: request._action = cgi.params._webmcp_action jbe@91: request._view = cgi.params._webmcp_view jbe@91: request._suffix = cgi.params._webmcp_suffix jbe@91: request._id = cgi.params._webmcp_id jbe@96: depth = tonumber(cgi.params._webmcp_urldepth) jbe@91: end jbe/bsw@0: end jbe/bsw@0: if depth and depth > 0 then jbe/bsw@0: local elements = {} jbe/bsw@0: for i = 1, depth do jbe/bsw@0: elements[#elements+1] = "../" jbe/bsw@0: end jbe/bsw@0: request._relative_baseurl = table.concat(elements) jbe/bsw@0: else jbe/bsw@0: request._relative_baseurl = "./" jbe/bsw@0: end jbe/bsw@0: jbe/bsw@0: request._app_basepath = assert( jbe/bsw@0: os.getenv("WEBMCP_APP_BASEPATH"), jbe/bsw@0: 'WEBMCP_APP_BASEPATH is not set.' jbe/bsw@0: ) jbe/bsw@0: if not string.find(request._app_basepath, "/$") then jbe/bsw@0: request._app_basebase = request._app_basepath .. "/" jbe/bsw@0: end