Commit c39fad5bb124f8e9012bbae186c6e66c88bb2fa4
1 parent
abc3c314
Modification:
- Adding support of multi-site cookies
Showing
1 changed file
with
46 additions
and
6 deletions
Show diff stats
web/CXM_making_a_web_site.anubis
| @@ -2090,7 +2090,8 @@ define (List(Web_arg) lwa, HTTP_Info info) -> Separated_Web_Args($State) | @@ -2090,7 +2090,8 @@ define (List(Web_arg) lwa, HTTP_Info info) -> Separated_Web_Args($State) | ||
| 2090 | make_separate_web_args_function | 2090 | make_separate_web_args_function |
| 2091 | ( | 2091 | ( |
| 2092 | String state_directory, | 2092 | String state_directory, |
| 2093 | - String -> PreviousState($State) retrieve_state | 2093 | + String -> PreviousState($State) retrieve_state, |
| 2094 | + String website_name | ||
| 2094 | ) = | 2095 | ) = |
| 2095 | (List(Web_arg) lwa, HTTP_Info info) |-swaf-> | 2096 | (List(Web_arg) lwa, HTTP_Info info) |-swaf-> |
| 2096 | if lwa is | 2097 | if lwa is |
| @@ -2099,7 +2100,7 @@ define (List(Web_arg) lwa, HTTP_Info info) -> Separated_Web_Args($State) | @@ -2099,7 +2100,7 @@ define (List(Web_arg) lwa, HTTP_Info info) -> Separated_Web_Args($State) | ||
| 2099 | // | 2100 | // |
| 2100 | // no web arg found => no previous state and no action | 2101 | // no web arg found => no previous state and no action |
| 2101 | // | 2102 | // |
| 2102 | - if find_cookie("state", server_get_cookies(http_headers(info))) is | 2103 | + if find_cookie("state_"+website_name, server_get_cookies(http_headers(info))) is |
| 2103 | { | 2104 | { |
| 2104 | failure then swa(not_found,failure,[]), | 2105 | failure then swa(not_found,failure,[]), |
| 2105 | success(cookie) then swa(retrieve_state(value(cookie)),failure,[]) | 2106 | success(cookie) then swa(retrieve_state(value(cookie)),failure,[]) |
| @@ -2277,11 +2278,12 @@ define Printable_tree | @@ -2277,11 +2278,12 @@ define Printable_tree | ||
| 2277 | define List(HTTP_header) | 2278 | define List(HTTP_header) |
| 2278 | make_state_cookie_headers | 2279 | make_state_cookie_headers |
| 2279 | ( | 2280 | ( |
| 2281 | + String website_name, | ||
| 2280 | String state_name | 2282 | String state_name |
| 2281 | ) | 2283 | ) |
| 2282 | = | 2284 | = |
| 2283 | [ | 2285 | [ |
| 2284 | - http_header("Set-Cookie", "state="+state_name) | 2286 | + http_header("Set-Cookie", "state_"+website_name+"="+state_name) |
| 2285 | ] | 2287 | ] |
| 2286 | . | 2288 | . |
| 2287 | 2289 | ||
| @@ -2317,11 +2319,12 @@ define List(HTTP_header) | @@ -2317,11 +2319,12 @@ define List(HTTP_header) | ||
| 2317 | (String action_name, | 2319 | (String action_name, |
| 2318 | List(Web_arg) args)-> One before_send_file | 2320 | List(Web_arg) args)-> One before_send_file |
| 2319 | ). | 2321 | ). |
| 2320 | - | 2322 | + |
| 2321 | 2323 | ||
| 2322 | public define Web_Site | 2324 | public define Web_Site |
| 2323 | make_web_site_description | 2325 | make_web_site_description |
| 2324 | ( | 2326 | ( |
| 2327 | + String website_name, | ||
| 2325 | List(String) common_names, // for example: ["www.our-business.com"] | 2328 | List(String) common_names, // for example: ["www.our-business.com"] |
| 2326 | String site_directory, | 2329 | String site_directory, |
| 2327 | String state_directory, | 2330 | String state_directory, |
| @@ -2367,7 +2370,7 @@ public define Web_Site | @@ -2367,7 +2370,7 @@ public define Web_Site | ||
| 2367 | // TODO 'make_separate_web_args_function' must retrieve state_cookies before parsing web_args if using_state_cookies is true | 2370 | // TODO 'make_separate_web_args_function' must retrieve state_cookies before parsing web_args if using_state_cookies is true |
| 2368 | with save_state = make_save_state_function(timeout, state_directory), | 2371 | with save_state = make_save_state_function(timeout, state_directory), |
| 2369 | retrieve_state = make_retrieve_state_function(state_directory), | 2372 | retrieve_state = make_retrieve_state_function(state_directory), |
| 2370 | - separate_web_args = make_separate_web_args_function(state_directory, retrieve_state), | 2373 | + separate_web_args = make_separate_web_args_function(state_directory, retrieve_state, website_name), |
| 2371 | apply_action = make_apply_action_function(actions), | 2374 | apply_action = make_apply_action_function(actions), |
| 2372 | // | 2375 | // |
| 2373 | // construct the site handler | 2376 | // construct the site handler |
| @@ -2413,7 +2416,7 @@ public define Web_Site | @@ -2413,7 +2416,7 @@ public define Web_Site | ||
| 2413 | if substr(action_name, 0, 5)="ajax_" then | 2416 | if substr(action_name, 0, 5)="ajax_" then |
| 2414 | [] | 2417 | [] |
| 2415 | else | 2418 | else |
| 2416 | - make_state_cookie_headers(state_name) | 2419 | + make_state_cookie_headers(website_name, state_name) |
| 2417 | }, | 2420 | }, |
| 2418 | 2421 | ||
| 2419 | format(info(host_name, http_port, https_port, site_directory, secret), | 2422 | format(info(host_name, http_port, https_port, site_directory, secret), |
| @@ -2453,6 +2456,43 @@ public define Web_Site | @@ -2453,6 +2456,43 @@ public define Web_Site | ||
| 2453 | ), | 2456 | ), |
| 2454 | delete_out_of_date). | 2457 | delete_out_of_date). |
| 2455 | 2458 | ||
| 2459 | +// Compatibility function for older websites | ||
| 2460 | +public define Web_Site | ||
| 2461 | + make_web_site_description | ||
| 2462 | + ( | ||
| 2463 | + List(String) common_names, // for example: ["www.our-business.com"] | ||
| 2464 | + String site_directory, | ||
| 2465 | + String state_directory, | ||
| 2466 | + One -> One init, | ||
| 2467 | + (HTTP_Info, | ||
| 2468 | + List(Web_arg), | ||
| 2469 | + Bool is_https) -> $State initial_state, | ||
| 2470 | + ($State expired, | ||
| 2471 | + Maybe(String), | ||
| 2472 | + HTTP_Info, | ||
| 2473 | + List(Web_arg), | ||
| 2474 | + Bool is_https) -> $State ticket_expired_state, | ||
| 2475 | + (Maybe(String), | ||
| 2476 | + HTTP_Info, | ||
| 2477 | + List(Web_arg), | ||
| 2478 | + Bool is_https) -> $State ticket_lost_state, | ||
| 2479 | + List(Web_Action($State)) actions, | ||
| 2480 | + $State -> HTTP_Answer compute_page, | ||
| 2481 | + $State -> List(HTTP_header) additional_headers, | ||
| 2482 | + Int timeout, | ||
| 2483 | + Redirections redirections, | ||
| 2484 | + String charset, | ||
| 2485 | + List(String) journal_extensions, | ||
| 2486 | + List(String) journal_headers, | ||
| 2487 | + String secret, | ||
| 2488 | + List(MIME) known_mime_types, | ||
| 2489 | + (String action_name, | ||
| 2490 | + List(Web_arg) args) -> One before_send_file | ||
| 2491 | + //Bool using_state_cookies | ||
| 2492 | + ) | ||
| 2493 | + = | ||
| 2494 | + make_web_site_description("", common_names, site_directory, state_directory, init, initial_state, ticket_expired_state, ticket_lost_state, actions, compute_page, additional_headers, timeout, redirections, charset, journal_extensions, journal_headers, secret, known_mime_types, before_send_file) | ||
| 2495 | + . | ||
| 2456 | 2496 | ||
| 2457 | 2497 | ||
| 2458 | 2498 |