Commit 1b48e26b81cdc8fdf8cbd8b20ddb2b8e238b1aa6
1 parent
ec213933
Adding "Bool using_state_cookies" in "public type Web_Site_Description" in "web/…
…CXM_multihost_http_server.anubis".
Adding "Bool using_state_cookies" in "make_web_site_description" in "web/CXM_making_a_web_site.anubis"
Adding "make_state_cookie_headers" in "web/CXM_making_a_web_site.anubis"
TODO in "web/CXM_making_a_web_site.anubis" line 2295 :
// TODO 'make_separate_web_args_function' must retrieve state_cookies before parsing web_args if using_state_cookies is true
Showing
2 changed files
with
24 additions
and
7 deletions
Show diff stats
calexium_lib/web/CXM_making_a_web_site.anubis
| ... | ... | @@ -2235,7 +2235,18 @@ define Printable_tree |
| 2235 | 2235 | { |
| 2236 | 2236 | absolute(x) then ["\"",x,"\""], |
| 2237 | 2237 | percentage(x) then ["\"",x,"%\""] |
| 2238 | - }. | |
| 2238 | + }. | |
| 2239 | + | |
| 2240 | +define List(HTTP_header) | |
| 2241 | + make_state_cookie_headers | |
| 2242 | + ( | |
| 2243 | + String state_name | |
| 2244 | + ) | |
| 2245 | + = | |
| 2246 | + [ | |
| 2247 | + http_header("Set-Cookie", "s="+state_name) | |
| 2248 | + ] | |
| 2249 | + . | |
| 2239 | 2250 | |
| 2240 | 2251 | public define Web_Site |
| 2241 | 2252 | make_web_site_description |
| ... | ... | @@ -2266,7 +2277,8 @@ public define Web_Site |
| 2266 | 2277 | String secret, |
| 2267 | 2278 | List(MIME) known_mime_types, |
| 2268 | 2279 | (String action_name, |
| 2269 | - List(Web_arg) args) -> One before_send_file | |
| 2280 | + List(Web_arg) args) -> One before_send_file, | |
| 2281 | + Bool using_state_cookies | |
| 2270 | 2282 | ) = |
| 2271 | 2283 | init(unique); |
| 2272 | 2284 | |
| ... | ... | @@ -2280,7 +2292,7 @@ public define Web_Site |
| 2280 | 2292 | forget((String)make_directory(site_directory+"/public")); |
| 2281 | 2293 | // |
| 2282 | 2294 | // construct tool functions |
| 2283 | - // | |
| 2295 | + // TODO 'make_separate_web_args_function' must retrieve state_cookies before parsing web_args if using_state_cookies is true | |
| 2284 | 2296 | with save_state = make_save_state_function(timeout,state_directory), |
| 2285 | 2297 | retrieve_state = make_retrieve_state_function(state_directory), |
| 2286 | 2298 | separate_web_args = make_separate_web_args_function(state_directory,retrieve_state), |
| ... | ... | @@ -2330,9 +2342,10 @@ public define Web_Site |
| 2330 | 2342 | }, |
| 2331 | 2343 | if state_and_headers is (session_ticket, mb_new_state, headers) then |
| 2332 | 2344 | with state_name = save_state(mb_new_state), |
| 2345 | + with cookie_headers = if using_state_cookies then make_state_cookie_headers(state_name) else [], | |
| 2333 | 2346 | format(info(host_name, http_port, https_port, site_directory, secret), |
| 2334 | 2347 | state_name, |
| 2335 | - headers, | |
| 2348 | + headers + cookie_headers, | |
| 2336 | 2349 | compute_page(session_ticket, mb_new_state, state_name, operands), |
| 2337 | 2350 | is_https, |
| 2338 | 2351 | charset) |
| ... | ... | @@ -2362,7 +2375,9 @@ public define Web_Site |
| 2362 | 2375 | { |
| 2363 | 2376 | failure then unique |
| 2364 | 2377 | success(an) then before_send_file(an,operands) |
| 2365 | - }), | |
| 2378 | + }, | |
| 2379 | + using_state_cookies | |
| 2380 | + ), | |
| 2366 | 2381 | delete_out_of_date). |
| 2367 | 2382 | |
| 2368 | 2383 | ... | ... |
calexium_lib/web/CXM_multihost_http_server.anubis
| ... | ... | @@ -210,7 +210,9 @@ public type Web_Site_Description: |
| 210 | 210 | HTTP_Info http_info, |
| 211 | 211 | List(Web_arg) lwa, |
| 212 | 212 | Bool is_https) -> (Printable_tree) awp_handler, |
| 213 | - (List(Web_arg) lwa) -> One before_send_file). | |
| 213 | + (List(Web_arg) lwa) -> One before_send_file, | |
| 214 | + Bool using_state_cookies, | |
| 215 | + ). | |
| 214 | 216 | |
| 215 | 217 | The component 'common_names' is the list of names of the site, like for example |
| 216 | 218 | "www.our-business.com". The reason why we have a list of common names instead of a |
| ... | ... | @@ -3003,7 +3005,7 @@ define Maybe((String,Web_Site_Description)) |
| 3003 | 3005 | { |
| 3004 | 3006 | [ ] then print("Requested host '"+requested_host+"' does not exist.\n"); failure, |
| 3005 | 3007 | [site1 . others] then |
| 3006 | - if site1 is web_site_description(common_names,_,_,_,_,_,_,_,_,_) then | |
| 3008 | + if site1 is web_site_description(common_names,_,_,_,_,_,_,_,_,_,_) then | |
| 3007 | 3009 | if member(common_names,requested_host) |
| 3008 | 3010 | then success((requested_host,site1)) |
| 3009 | 3011 | else get_site(requested_host,others) | ... | ... |