Commit fd42aebc058d35dd941cce90f9898698bfaa1963
1 parent
102790d5
add logger in web site description to be able to report error into log
Showing
2 changed files
with
164 additions
and
141 deletions
Show diff stats
web/CXM_making_a_web_site.anubis
| ... | ... | @@ -554,8 +554,9 @@ define List(HTTP_header) |
| 554 | 554 | define WEB_Session -> String // the function constructed returns the name of the state |
| 555 | 555 | make_save_session_function |
| 556 | 556 | ( |
| 557 | - Int timeout, | |
| 558 | - String state_directory | |
| 557 | + Int timeout, | |
| 558 | + String state_directory, | |
| 559 | + (LogLevel, String) -> One logger | |
| 559 | 560 | ) = |
| 560 | 561 | (WEB_Session s_var) |-> |
| 561 | 562 | //Set the new timeout |
| ... | ... | @@ -567,10 +568,10 @@ define WEB_Session -> String // the function constructed returns the name of |
| 567 | 568 | session_name = s_var.session_id, |
| 568 | 569 | //println("make_save_state_function " + state_directory+"/s"+state_name); |
| 569 | 570 | if save(to_be_saved,state_directory+"/"+session_name) is ok then |
| 570 | - println("----- session ["+session_name+"] saved"+dump_WEB_Session_Fields(*s_var.fields)); | |
| 571 | + logger(logInfo, "----- session ["+session_name+"] saved"+dump_WEB_Session_Fields(*s_var.fields)); | |
| 571 | 572 | session_name |
| 572 | 573 | else |
| 573 | - println("Cannot create session file in '"+state_directory+"'.\n"); | |
| 574 | + logger(logError, ("Cannot create session file in '"+state_directory+"'.\n")); | |
| 574 | 575 | "" |
| 575 | 576 | . |
| 576 | 577 | |
| ... | ... | @@ -621,7 +622,8 @@ define Previous_Session |
| 621 | 622 | define (List(String) file_names) -> One |
| 622 | 623 | make_delete_out_of_date_sessions_function |
| 623 | 624 | ( |
| 624 | - String state_directory | |
| 625 | + String state_directory, | |
| 626 | + (LogLevel, String) -> One logger | |
| 625 | 627 | ) = |
| 626 | 628 | (List(String) file_names) |-df-> |
| 627 | 629 | if file_names is |
| ... | ... | @@ -644,7 +646,7 @@ define (List(String) file_names) -> One |
| 644 | 646 | df(t) |
| 645 | 647 | ) |
| 646 | 648 | else |
| 647 | - println("Can't retreive session "+h+", hence will be deleted"); | |
| 649 | + logger(logError, "Can't retreive session "+h+", hence will be deleted"); | |
| 648 | 650 | (forget(remove(file_path)); df(t)) |
| 649 | 651 | }. |
| 650 | 652 | |
| ... | ... | @@ -3064,19 +3066,23 @@ read CXM_web_arg_encode.anubis |
| 3064 | 3066 | |
| 3065 | 3067 | |
| 3066 | 3068 | define ($State s) -> String // the function constructed returns the name of the state |
| 3067 | - make_save_state_function | |
| 3068 | - ( | |
| 3069 | - Int timeout, | |
| 3070 | - String state_directory | |
| 3071 | - ) = | |
| 3072 | - ($State s) |-> | |
| 3069 | + make_save_state_function | |
| 3070 | + ( | |
| 3071 | + Int timeout, | |
| 3072 | + String state_directory, | |
| 3073 | + (LogLevel, String) -> One logger | |
| 3074 | + )= | |
| 3075 | + ($State s) |-> | |
| 3073 | 3076 | with time_stamp = now+timeout, |
| 3074 | 3077 | to_be_saved = (time_stamp,s), |
| 3075 | 3078 | state_name = to_ascii(sha1(s)), |
| 3076 | 3079 | //println("make_save_state_function " + state_directory+"/s"+state_name); |
| 3077 | - if save(to_be_saved,state_directory+"/s"+state_name) is ok | |
| 3078 | - then state_name | |
| 3079 | - else (print("Cannot create state file in '"+state_directory+"'.\n"); ""). | |
| 3080 | + if save(to_be_saved,state_directory+"/s"+state_name) is ok then | |
| 3081 | + state_name | |
| 3082 | + else | |
| 3083 | + logger(logError, "Cannot create state file in '"+state_directory+"'.\n"); | |
| 3084 | + "" | |
| 3085 | +. | |
| 3080 | 3086 | |
| 3081 | 3087 | |
| 3082 | 3088 | When a request arrives, we need to retrieve the previous state from the server's |
| ... | ... | @@ -3414,43 +3420,47 @@ define ($State previous, |
| 3414 | 3420 | HTTP_Info http_info, |
| 3415 | 3421 | List(Web_arg) lwa, |
| 3416 | 3422 | Bool is_https) -> $State |
| 3417 | - make_apply_action_function | |
| 3418 | - ( | |
| 3419 | - List(Web_Action($State)) actions_list | |
| 3420 | - ) = | |
| 3421 | - with f = | |
| 3422 | - ($State previous, | |
| 3423 | - String action_name, | |
| 3424 | - HTTP_Info http_info, | |
| 3425 | - List(Web_arg) lwa, | |
| 3426 | - Bool is_https, | |
| 3427 | - List(Web_Action($State)) actions) |-f-> | |
| 3423 | + make_apply_action_function | |
| 3424 | + ( | |
| 3425 | + List(Web_Action($State)) actions_list, | |
| 3426 | + (LogLevel, String) -> One logger //logger | |
| 3427 | + )= | |
| 3428 | + with f = | |
| 3429 | + ($State previous, | |
| 3430 | + String action_name, | |
| 3431 | + HTTP_Info http_info, | |
| 3432 | + List(Web_arg) lwa, | |
| 3433 | + Bool is_https, | |
| 3434 | + List(Web_Action($State)) actions) |-f-> | |
| 3428 | 3435 | //println("Looking for action ["+action_name+"]"); |
| 3429 | 3436 | if actions is |
| 3430 | 3437 | { |
| 3431 | - [ ] then print("action '"+action_name+ | |
| 3432 | - "' not found.\n"); previous, | |
| 3433 | - [ac1 . others] then if ac1 is | |
| 3438 | + [ ] then | |
| 3439 | + logger(logError, "action '"+action_name+"' not found.\n"); previous, | |
| 3440 | + [ac1 . others] then if ac1 is | |
| 3434 | 3441 | { |
| 3435 | - http_action(an,allow,do_it) then | |
| 3436 | - if an = action_name | |
| 3437 | - then if is_https | |
| 3438 | - then (print("HTTP action '"+an+ | |
| 3439 | - "' called through HTTPS (denied).\n"); | |
| 3440 | - previous) | |
| 3441 | - else if allow(previous) | |
| 3442 | - then do_it(http_info,lwa,previous) | |
| 3443 | - else previous | |
| 3444 | - else f(previous,action_name,http_info,lwa,is_https,others), | |
| 3445 | - | |
| 3442 | + //check for http action | |
| 3443 | + http_action(an, allow, do_it) then | |
| 3444 | + | |
| 3445 | + //Action name found | |
| 3446 | + if an = action_name then | |
| 3447 | + if is_https then | |
| 3448 | + (logger(logError, "HTTP action '"+an+"' called through HTTPS (denied).\n"); previous) | |
| 3449 | + else | |
| 3450 | + if allow(previous) then | |
| 3451 | + do_it(http_info,lwa,previous) | |
| 3452 | + else | |
| 3453 | + previous | |
| 3454 | + else | |
| 3455 | + f(previous,action_name,http_info,lwa,is_https,others), | |
| 3456 | + //check https action | |
| 3446 | 3457 | https_action(an,allow,do_it) then |
| 3447 | 3458 | if an = action_name |
| 3448 | 3459 | then if is_https |
| 3449 | 3460 | then if allow(previous) |
| 3450 | 3461 | then do_it(http_info,lwa,previous) |
| 3451 | 3462 | else previous |
| 3452 | - else (print("HTTPS action '"+an+ | |
| 3453 | - "' called through HTTP (denied).\n"); | |
| 3463 | + else (logger(logError, "HTTPS action '"+an+"' called through HTTP (denied).\n"); | |
| 3454 | 3464 | previous) |
| 3455 | 3465 | else f(previous,action_name,http_info,lwa,is_https,others), |
| 3456 | 3466 | |
| ... | ... | @@ -3548,40 +3558,41 @@ define List(HTTP_header) |
| 3548 | 3558 | |
| 3549 | 3559 | |
| 3550 | 3560 | public define Web_Site |
| 3551 | - make_web_site_description | |
| 3552 | - ( | |
| 3553 | - String website_name, // site_UID | |
| 3554 | - List(String) common_names, // for example: ["www.our-business.com"] | |
| 3555 | - String site_directory, | |
| 3556 | - String state_directory, | |
| 3557 | - One -> One init, | |
| 3558 | - (HTTP_Info, | |
| 3559 | - List(Web_arg), | |
| 3560 | - Bool is_https) -> $State initial_state, | |
| 3561 | - ($State expired, | |
| 3562 | - Maybe(String), | |
| 3563 | - HTTP_Info, | |
| 3564 | - List(Web_arg), | |
| 3565 | - Bool is_https) -> $State ticket_expired_state, | |
| 3566 | - (Maybe(String), | |
| 3567 | - HTTP_Info, | |
| 3568 | - List(Web_arg), | |
| 3569 | - Bool is_https) -> $State ticket_lost_state, | |
| 3570 | - List(Web_Action($State)) actions, | |
| 3571 | - $State -> HTTP_Answer compute_page, | |
| 3572 | - $State -> List(HTTP_header) additional_headers, | |
| 3573 | - List(HTTP_header) constant_additional_headers, | |
| 3574 | - Int timeout, | |
| 3575 | - Redirections redirections, | |
| 3576 | - String charset, | |
| 3577 | - List(String) journal_extensions, | |
| 3578 | - List(String) journal_headers, | |
| 3579 | - String secret, | |
| 3580 | - List(MIME) known_mime_types, | |
| 3581 | - (String action_name, | |
| 3582 | - List(Web_arg) args) -> One before_send_file | |
| 3583 | - ) = | |
| 3584 | - init(unique); | |
| 3561 | + make_web_site_description | |
| 3562 | + ( | |
| 3563 | + String website_name, // site_UID | |
| 3564 | + List(String) common_names, // for example: ["www.our-business.com"] | |
| 3565 | + String site_directory, | |
| 3566 | + String state_directory, | |
| 3567 | + One -> One init, | |
| 3568 | + (HTTP_Info, | |
| 3569 | + List(Web_arg), | |
| 3570 | + Bool is_https) -> $State initial_state, | |
| 3571 | + ($State expired, | |
| 3572 | + Maybe(String), | |
| 3573 | + HTTP_Info, | |
| 3574 | + List(Web_arg), | |
| 3575 | + Bool is_https) -> $State ticket_expired_state, | |
| 3576 | + (Maybe(String), | |
| 3577 | + HTTP_Info, | |
| 3578 | + List(Web_arg), | |
| 3579 | + Bool is_https) -> $State ticket_lost_state, | |
| 3580 | + List(Web_Action($State)) actions, | |
| 3581 | + $State -> HTTP_Answer compute_page, | |
| 3582 | + $State -> List(HTTP_header) additional_headers, | |
| 3583 | + List(HTTP_header) constant_additional_headers, | |
| 3584 | + Int timeout, | |
| 3585 | + Redirections redirections, | |
| 3586 | + String charset, | |
| 3587 | + List(String) journal_extensions, | |
| 3588 | + List(String) journal_headers, | |
| 3589 | + (LogLevel, String) -> One logger, //logger | |
| 3590 | + String secret, | |
| 3591 | + List(MIME) known_mime_types, | |
| 3592 | + (String action_name, | |
| 3593 | + List(Web_arg) args) -> One before_send_file | |
| 3594 | + )= | |
| 3595 | + init(unique); | |
| 3585 | 3596 | |
| 3586 | 3597 | |
| 3587 | 3598 | // |
| ... | ... | @@ -3594,10 +3605,10 @@ public define Web_Site |
| 3594 | 3605 | // |
| 3595 | 3606 | // construct tool functions |
| 3596 | 3607 | // TODO 'make_separate_web_args_function' must retrieve state_cookies before parsing web_args if using_state_cookies is true |
| 3597 | - with save_state = make_save_state_function(timeout, state_directory), | |
| 3608 | + with save_state = make_save_state_function(timeout, state_directory, logger), | |
| 3598 | 3609 | retrieve_state = make_retrieve_state_function(state_directory), |
| 3599 | 3610 | separate_web_args = make_separate_web_args_function(state_directory, retrieve_state, website_name), |
| 3600 | - apply_action = make_apply_action_function(actions), | |
| 3611 | + apply_action = make_apply_action_function(actions, logger), | |
| 3601 | 3612 | // |
| 3602 | 3613 | // construct the site handler |
| 3603 | 3614 | // |
| ... | ... | @@ -3670,6 +3681,7 @@ public define Web_Site |
| 3670 | 3681 | charset, |
| 3671 | 3682 | journal_extensions, |
| 3672 | 3683 | journal_headers, |
| 3684 | + logger, | |
| 3673 | 3685 | secret, |
| 3674 | 3686 | known_mime_types, |
| 3675 | 3687 | site_handler(http_port, https_port), |
| ... | ... | @@ -3717,7 +3729,7 @@ define HTTP_Answer |
| 3717 | 3729 | |
| 3718 | 3730 | // content of page |
| 3719 | 3731 | sequence([ |
| 3720 | - preformated([size(14)], "Anubis Web Server - Calexium Lib v1.00 - Anubis language v1.14"), | |
| 3732 | + preformated([size(14)],"Anubis Web Server - Standard Lib v1.14.0.0 - Anubis language v1.14"), | |
| 3721 | 3733 | preformated([size(12)],"Error "+to_String(http_status)), |
| 3722 | 3734 | preformated([size(12)],"Internal message :"+message), |
| 3723 | 3735 | br, |
| ... | ... | @@ -3816,38 +3828,40 @@ define Maybe(WEB_Controller) |
| 3816 | 3828 | ( |
| 3817 | 3829 | String controller_name, |
| 3818 | 3830 | List(WEB_Controller) controllers, |
| 3831 | + (LogLevel, String) -> One logger //logger | |
| 3819 | 3832 | )= |
| 3820 | 3833 | if controllers is |
| 3821 | 3834 | { |
| 3822 | 3835 | [] then |
| 3823 | - println("Can't find controller ["+controller_name+"]"); | |
| 3836 | + logger(logWarning, "Can't find controller ["+controller_name+"]"); | |
| 3824 | 3837 | failure, |
| 3825 | 3838 | [h . t] then |
| 3826 | 3839 | if h.name = controller_name then |
| 3827 | 3840 | //println("Controller ["+controller_name+"] found"); |
| 3828 | 3841 | success(h) |
| 3829 | 3842 | else |
| 3830 | - get_controller(controller_name, t) | |
| 3843 | + get_controller(controller_name, t, logger) | |
| 3831 | 3844 | } |
| 3832 | 3845 | . |
| 3833 | 3846 | |
| 3834 | 3847 | define WEB_Page_Renderer |
| 3835 | 3848 | get_page_renderer |
| 3836 | 3849 | ( |
| 3837 | - String renderer_name, | |
| 3838 | - List(WEB_Page_Renderer) renderers, | |
| 3850 | + String renderer_name, | |
| 3851 | + List(WEB_Page_Renderer) renderers, | |
| 3852 | + (LogLevel, String) -> One logger //logger | |
| 3839 | 3853 | )= |
| 3840 | 3854 | if renderers is |
| 3841 | 3855 | { |
| 3842 | 3856 | [] then |
| 3843 | - println("Can't find page_renderer ["+renderer_name+"], use the default"); | |
| 3857 | + logger(logWarning, "Can't find page_renderer ["+renderer_name+"], use the default"); | |
| 3844 | 3858 | default_page_renderer, |
| 3845 | 3859 | [h . t] then |
| 3846 | 3860 | if h.name = renderer_name then |
| 3847 | 3861 | //println("Controller ["+controller_name+"] found"); |
| 3848 | 3862 | h |
| 3849 | 3863 | else |
| 3850 | - get_page_renderer(renderer_name, t) | |
| 3864 | + get_page_renderer(renderer_name, t, logger) | |
| 3851 | 3865 | } |
| 3852 | 3866 | . |
| 3853 | 3867 | |
| ... | ... | @@ -3857,18 +3871,19 @@ define WEB_Page_Renderer |
| 3857 | 3871 | WEB_Session _session, |
| 3858 | 3872 | WEB_Page_Renderer _current_page_renderer, |
| 3859 | 3873 | List(WEB_Page_Renderer) renderers, |
| 3874 | + (LogLevel, String) -> One logger //logger | |
| 3860 | 3875 | )= |
| 3861 | 3876 | //get the renderer page name to use from the session "AWS_PAGE_RENDERER" |
| 3862 | 3877 | if get_String(_session.fields, "AWS_PAGE_RENDERER") is |
| 3863 | 3878 | { |
| 3864 | - failure then println("No renderer defined, use the default"); default_page_renderer, | |
| 3879 | + failure then logger(logWarning, "No renderer defined, use the default"); default_page_renderer, | |
| 3865 | 3880 | success(renderer_name) then |
| 3866 | 3881 | //check if the renderer_page already in cache |
| 3867 | 3882 | if renderer_name = _current_page_renderer.name then |
| 3868 | 3883 | _current_page_renderer |
| 3869 | 3884 | else |
| 3870 | 3885 | //if not in cache, use the selector function |
| 3871 | - get_page_renderer(renderer_name, renderers) | |
| 3886 | + get_page_renderer(renderer_name, renderers, logger) | |
| 3872 | 3887 | } |
| 3873 | 3888 | . |
| 3874 | 3889 | |
| ... | ... | @@ -3887,7 +3902,8 @@ define (Maybe(WEB_Session), HTTP_Answer) |
| 3887 | 3902 | Maybe(String) _mb_action_name, |
| 3888 | 3903 | (HTTP_Info, |
| 3889 | 3904 | Var(List(Web_arg)), |
| 3890 | - Bool is_https) -> WEB_Session initial_session, | |
| 3905 | + Bool is_https) -> WEB_Session initial_session, | |
| 3906 | + (LogLevel, String) -> One logger //logger | |
| 3891 | 3907 | )= |
| 3892 | 3908 | //get the action name |
| 3893 | 3909 | with mb_action_name = |
| ... | ... | @@ -3902,47 +3918,47 @@ define (Maybe(WEB_Session), HTTP_Answer) |
| 3902 | 3918 | failure then |
| 3903 | 3919 | //(failure, error_page(http_not_found, "Action name failure", _session)), |
| 3904 | 3920 | with new_session = initial_session(_session.web_request.http_info, _session.web_request.lwa, _session.web_request.is_https), |
| 3905 | - if get_controller(get_String(*new_session.web_request.lwa, "aws_controller", "root"), controllers) is | |
| 3921 | + if get_controller(get_String(*new_session.web_request.lwa, "aws_controller", "root"), controllers, logger) is | |
| 3906 | 3922 | { |
| 3907 | 3923 | failure then (failure, error_page(http_not_found, "Initial Session Controller not found", new_session)), |
| 3908 | - success(new_controller) then apply_controller_action(new_controller, controllers, _current_page_renderer, page_renderers, cinfo, new_session, failure, initial_session), | |
| 3924 | + success(new_controller) then apply_controller_action(new_controller, controllers, _current_page_renderer, page_renderers, cinfo, new_session, failure, initial_session, logger), | |
| 3909 | 3925 | }, |
| 3910 | 3926 | success(action_name) then |
| 3911 | - println("ACTION_NAME ["+action_name+"]"); | |
| 3927 | + logger(logInfo, "ACTION_NAME ["+action_name+"]"); | |
| 3912 | 3928 | if apply_action(_session, action_name, *controller.controller_actions) is |
| 3913 | 3929 | { |
| 3914 | 3930 | http_answer(session, answer) then (success(session), answer), |
| 3915 | 3931 | http_answer(answer) then (success(_session), answer), |
| 3916 | 3932 | redirect(new_session) then |
| 3917 | - if get_controller(get_String(*new_session.web_request.lwa, "aws_controller", "root"), controllers) is | |
| 3933 | + if get_controller(get_String(*new_session.web_request.lwa, "aws_controller", "root"), controllers, logger) is | |
| 3918 | 3934 | { |
| 3919 | 3935 | failure then (failure, error_page(http_not_found, "Redirect Controller not found", new_session)), |
| 3920 | - success(new_controller) then apply_controller_action(new_controller, controllers, _current_page_renderer, page_renderers, cinfo, new_session, failure, initial_session), | |
| 3936 | + success(new_controller) then apply_controller_action(new_controller, controllers, _current_page_renderer, page_renderers, cinfo, new_session, failure, initial_session, logger), | |
| 3921 | 3937 | }, |
| 3922 | 3938 | |
| 3923 | 3939 | redirect(new_session, r_controller_name, r_action_name) then |
| 3924 | - if get_controller(r_controller_name, controllers) is | |
| 3940 | + if get_controller(r_controller_name, controllers, logger) is | |
| 3925 | 3941 | { |
| 3926 | 3942 | failure then (failure, error_page(http_not_found, "Redirect Controller "+r_controller_name+" not found", new_session)), |
| 3927 | 3943 | success(new_controller) then |
| 3928 | - apply_controller_action(new_controller, controllers, _current_page_renderer, page_renderers, cinfo, new_session, success(r_action_name), initial_session), | |
| 3944 | + apply_controller_action(new_controller, controllers, _current_page_renderer, page_renderers, cinfo, new_session, success(r_action_name), initial_session, logger), | |
| 3929 | 3945 | }, |
| 3930 | 3946 | |
| 3931 | 3947 | redirect_to_previous then |
| 3932 | - if get_controller(get_String(*_session.previous_web_request.lwa, "aws_controller", "root"), controllers) is | |
| 3948 | + if get_controller(get_String(*_session.previous_web_request.lwa, "aws_controller", "root"), controllers, logger) is | |
| 3933 | 3949 | { |
| 3934 | 3950 | failure then (failure, error_page(http_not_found, "Redirect to previous Controller not found", _session)), |
| 3935 | 3951 | success(new_controller) then |
| 3936 | 3952 | since _session is web_session(id, lang, entries, _, previous), |
| 3937 | - apply_controller_action(new_controller, controllers, _current_page_renderer, page_renderers, cinfo, web_session(id, lang, entries, previous, previous), failure, initial_session), | |
| 3953 | + apply_controller_action(new_controller, controllers, _current_page_renderer, page_renderers, cinfo, web_session(id, lang, entries, previous, previous), failure, initial_session, logger), | |
| 3938 | 3954 | }, |
| 3939 | 3955 | redirect_to_previous(entries) then |
| 3940 | - if get_controller(get_String(*_session.previous_web_request.lwa, "aws_controller", "root"), controllers) is | |
| 3956 | + if get_controller(get_String(*_session.previous_web_request.lwa, "aws_controller", "root"), controllers, logger) is | |
| 3941 | 3957 | { |
| 3942 | 3958 | failure then (failure, error_page(http_not_found, "Redirect to previous Controller not found", _session)), |
| 3943 | 3959 | success(new_controller) then |
| 3944 | 3960 | since _session is web_session(id, lang, _, _, previous), |
| 3945 | - apply_controller_action(new_controller, controllers, _current_page_renderer, page_renderers, cinfo, web_session(id, lang, entries, previous, previous), failure, initial_session), | |
| 3961 | + apply_controller_action(new_controller, controllers, _current_page_renderer, page_renderers, cinfo, web_session(id, lang, entries, previous, previous), failure, initial_session, logger), | |
| 3946 | 3962 | }, |
| 3947 | 3963 | //ajax(answer) then (failure, answer), |
| 3948 | 3964 | //ajax with modified session that must be saved |
| ... | ... | @@ -3955,7 +3971,7 @@ define (Maybe(WEB_Session), HTTP_Answer) |
| 3955 | 3971 | send_file(file_path, c_disposition) then (failure, send_file(file_path, c_disposition)), |
| 3956 | 3972 | renderer_content(session, title, content) then |
| 3957 | 3973 | with the_session = if session is {failure then _session, success(__session) then __session}, |
| 3958 | - with page_renderer = get_page_renderer(the_session, _current_page_renderer, page_renderers), | |
| 3974 | + with page_renderer = get_page_renderer(the_session, _current_page_renderer, page_renderers, logger), | |
| 3959 | 3975 | (session, page_renderer.page_layout(the_session, title, content)) |
| 3960 | 3976 | } |
| 3961 | 3977 | } |
| ... | ... | @@ -3986,7 +4002,8 @@ public define Web_Site |
| 3986 | 4002 | Redirections redirections, |
| 3987 | 4003 | String charset, |
| 3988 | 4004 | List(String) journal_extensions, |
| 3989 | - List(String) journal_headers, | |
| 4005 | + List(String) journal_headers, | |
| 4006 | + (LogLevel, String) -> One logger, //logger | |
| 3990 | 4007 | String secret, |
| 3991 | 4008 | List(MIME) known_mime_types, |
| 3992 | 4009 | (String action_name, |
| ... | ... | @@ -4007,7 +4024,7 @@ public define Web_Site |
| 4007 | 4024 | // |
| 4008 | 4025 | // construct tool functions |
| 4009 | 4026 | // TODO 'make_separate_web_args_function' must retrieve state_cookies before parsing web_args if using_state_cookies is true |
| 4010 | - with save_session = make_save_session_function(timeout, state_directory), | |
| 4027 | + with save_session = make_save_session_function(timeout, state_directory, logger), | |
| 4011 | 4028 | with current_page_renderer = var((WEB_Page_Renderer)default_page_renderer), |
| 4012 | 4029 | // retrieve_session = make_retrieve_session_function(state_directory, website_name), |
| 4013 | 4030 | //separate_web_args = make_separate_web_args_function(state_directory, retrieve_state), |
| ... | ... | @@ -4022,20 +4039,20 @@ public define Web_Site |
| 4022 | 4039 | List(Web_arg) _lwa, |
| 4023 | 4040 | Bool is_https) |-> |
| 4024 | 4041 | //(Printable_tree) |
| 4025 | - //println("host_name "+host_name); | |
| 4026 | - //println(dump_http_info(http_info)); | |
| 4027 | - println(dump_web_arg_values(_lwa)); | |
| 4042 | + logger(logTrace,"host_name "+host_name); | |
| 4043 | + logger(logTrace,dump_http_info(http_info)); | |
| 4044 | + logger(logTrace, dump_web_arg_values(_lwa)); | |
| 4028 | 4045 | with cinfo = info(host_name, http_port, https_port, site_directory, secret), |
| 4029 | 4046 | |
| 4030 | 4047 | //retrieve the previous session and determine the new one |
| 4031 | 4048 | with current_session = if retrieve_session(http_info, state_directory, website_name) is |
| 4032 | 4049 | { |
| 4033 | 4050 | not_found then |
| 4034 | - println("previous state not found"); | |
| 4051 | + logger(logInfo, "previous state not found"); | |
| 4035 | 4052 | initial_session(http_info, var(_lwa), is_https), |
| 4036 | 4053 | |
| 4037 | 4054 | out_of_date(previous_session) then |
| 4038 | - println("previous out_of_date"); | |
| 4055 | + logger(logInfo, "previous out_of_date"); | |
| 4039 | 4056 | //expired_session(previous_session, http_info, var(_lwa), is_https), |
| 4040 | 4057 | since previous_session is web_session(id, lang, entries, previous, _), |
| 4041 | 4058 | web_session(id, lang, entries, web_request(http_info, var(_lwa), is_https), previous) |
| ... | ... | @@ -4048,13 +4065,13 @@ public define Web_Site |
| 4048 | 4065 | |
| 4049 | 4066 | //apply the action according to current session |
| 4050 | 4067 | //since apply_controller_action(get_controller(get_String(lwa, "aws_controller", "root"), *web_controllers), *web_controllers, current_session) |
| 4051 | - since if get_controller(get_String(*current_session.web_request.lwa, "aws_controller", "root"), *web_controllers) is | |
| 4068 | + since if get_controller(get_String(*current_session.web_request.lwa, "aws_controller", "root"), *web_controllers, logger) is | |
| 4052 | 4069 | { |
| 4053 | 4070 | failure then |
| 4054 | 4071 | (failure, error_page(http_not_found, "Controller not found", current_session)), |
| 4055 | 4072 | |
| 4056 | 4073 | success(new_controller) then |
| 4057 | - apply_controller_action(new_controller, *web_controllers, *current_page_renderer, *web_page_renderers, cinfo, current_session, failure, initial_session), | |
| 4074 | + apply_controller_action(new_controller, *web_controllers, *current_page_renderer, *web_page_renderers, cinfo, current_session, failure, initial_session, logger), | |
| 4058 | 4075 | } |
| 4059 | 4076 | is (mb_new_session, http_answer), |
| 4060 | 4077 | |
| ... | ... | @@ -4080,7 +4097,7 @@ public define Web_Site |
| 4080 | 4097 | // make the delete_out_of_date function |
| 4081 | 4098 | // |
| 4082 | 4099 | delete_out_of_date = |
| 4083 | - make_delete_out_of_date_sessions_function(site_directory+"/states"), | |
| 4100 | + make_delete_out_of_date_sessions_function(site_directory+"/states", logger), | |
| 4084 | 4101 | // |
| 4085 | 4102 | // construct the web site description |
| 4086 | 4103 | // |
| ... | ... | @@ -4091,6 +4108,7 @@ public define Web_Site |
| 4091 | 4108 | charset, |
| 4092 | 4109 | journal_extensions, |
| 4093 | 4110 | journal_headers, |
| 4111 | + logger, | |
| 4094 | 4112 | secret, |
| 4095 | 4113 | known_mime_types, |
| 4096 | 4114 | site_handler(http_port,https_port), |
| ... | ... | @@ -4111,22 +4129,23 @@ public define Web_Site |
| 4111 | 4129 | define String |
| 4112 | 4130 | get_site_uid |
| 4113 | 4131 | ( |
| 4114 | - String site_path | |
| 4132 | + String site_path, | |
| 4133 | + (LogLevel, String) -> One logger //logger | |
| 4115 | 4134 | )= |
| 4116 | 4135 | with file_name = site_path+"/site_UID", |
| 4117 | 4136 | if read_from_file(file_name) is |
| 4118 | 4137 | { |
| 4119 | 4138 | cannot_find_file then |
| 4120 | - println("site UID doesn't exists. Generating it now"); | |
| 4139 | + logger(logInfo,"site UID doesn't exists. Generating one now"); | |
| 4121 | 4140 | with uid = generate_random_string(9), |
| 4122 | 4141 | if write_to_file(file_name, to_byte_array(uid)) is |
| 4123 | 4142 | { |
| 4124 | - cannot_open_file then println("Can't create site UID here "+file_name);"", | |
| 4125 | - write_error(_) then println("Can't write site UID here "+file_name);"", | |
| 4143 | + cannot_open_file then logger(logError, "Can't create site UID here "+file_name);"", | |
| 4144 | + write_error(_) then logger(logError, "Can't write site UID here "+file_name);"", | |
| 4126 | 4145 | ok then uid |
| 4127 | 4146 | } |
| 4128 | 4147 | read_error(_) then |
| 4129 | - println("cannot read site UID from "+file_name);"" | |
| 4148 | + logger(logError, "cannot read site UID from "+file_name);"" | |
| 4130 | 4149 | ok(ba) then to_string(ba) |
| 4131 | 4150 | } |
| 4132 | 4151 | . |
| ... | ... | @@ -4159,7 +4178,8 @@ public define Web_Site |
| 4159 | 4178 | Redirections redirections, |
| 4160 | 4179 | String charset, |
| 4161 | 4180 | List(String) journal_extensions, |
| 4162 | - List(String) journal_headers, | |
| 4181 | + List(String) journal_headers, | |
| 4182 | + (LogLevel, String) -> One logger, //logger | |
| 4163 | 4183 | String secret, |
| 4164 | 4184 | List(MIME) known_mime_types, |
| 4165 | 4185 | (String action_name, |
| ... | ... | @@ -4168,8 +4188,8 @@ public define Web_Site |
| 4168 | 4188 | ) |
| 4169 | 4189 | = |
| 4170 | 4190 | //generate an unique ID if doesn't exist in root of site_directory |
| 4171 | - with site_UID = get_site_uid(site_directory), | |
| 4172 | - make_web_site_description(site_UID, common_names, site_directory, state_directory, init, initial_state, ticket_expired_state, ticket_lost_state, actions, compute_page, additional_headers, constant_additional_headers, timeout, redirections, charset, journal_extensions, journal_headers, secret, known_mime_types, before_send_file) | |
| 4191 | + with site_UID = get_site_uid(site_directory, logger), | |
| 4192 | + make_web_site_description(site_UID, common_names, site_directory, state_directory, init, initial_state, ticket_expired_state, ticket_lost_state, actions, compute_page, additional_headers, constant_additional_headers, timeout, redirections, charset, journal_extensions, journal_headers, logger, secret, known_mime_types, before_send_file) | |
| 4173 | 4193 | . |
| 4174 | 4194 | |
| 4175 | 4195 | ... | ... |
web/CXM_multihost_http_server.anubis
| ... | ... | @@ -4,6 +4,8 @@ |
| 4 | 4 | *Title* A Multi Host HTTP/HTTPS Server |
| 5 | 5 | |
| 6 | 6 | *Copyright* Copyright (c) Anubis Team 2003-2007. |
| 7 | + (c) Calexium 2007-2013 | |
| 8 | + (c) David René 2014-2019 | |
| 7 | 9 | |
| 8 | 10 | |
| 9 | 11 | *Authors* Alain Prouté |
| ... | ... | @@ -12,9 +14,9 @@ |
| 12 | 14 | |
| 13 | 15 | |
| 14 | 16 | *Revised* |
| 15 | - June 2015 : Optimization of the file upload | |
| 16 | - July 2007 : Initial version in calexium_lib | |
| 17 | - | |
| 17 | + June 2015 : Optimization of the file upload | |
| 18 | + July 2007 : Initial version in calexium_lib | |
| 19 | + March 2019 : move as standard lib | |
| 18 | 20 | |
| 19 | 21 | *Overviews* |
| 20 | 22 | In this file a HTTP/HTTPS server is defined, which is able to handle multiple hosts |
| ... | ... | @@ -171,10 +173,9 @@ read system/string.anubis |
| 171 | 173 | read system/files.anubis |
| 172 | 174 | read system/lists.anubis |
| 173 | 175 | read system/data_io.anubis |
| 176 | +read system/logger.anubis | |
| 174 | 177 | read web/mime.anubis |
| 175 | 178 | |
| 176 | - | |
| 177 | - | |
| 178 | 179 | *** (4) Site descriptions. |
| 179 | 180 | |
| 180 | 181 | The type HTTP_Info gathers informations comming along with the client's request. These |
| ... | ... | @@ -227,6 +228,7 @@ public type Web_Site_Description: |
| 227 | 228 | String charset, |
| 228 | 229 | List(String) journal_extensions, |
| 229 | 230 | List(String) journal_headers, |
| 231 | + (LogLevel, String) -> One logger, //logger | |
| 230 | 232 | String authorization_secret, |
| 231 | 233 | List(MIME) known_mime_types, |
| 232 | 234 | (String host_name, |
| ... | ... | @@ -1282,11 +1284,11 @@ define One |
| 1282 | 1284 | ( |
| 1283 | 1285 | if file(site_directory(desc)+"/journal/"+make_current_journal_file_name,append) is |
| 1284 | 1286 | { |
| 1285 | - failure then unique, | |
| 1286 | - success(journal_file) then | |
| 1287 | + failure then unique, | |
| 1288 | + success(journal_file) then | |
| 1287 | 1289 | forget(reliable_write(file(journal_file),ba_msg)) |
| 1288 | - }; | |
| 1289 | - forget(reliable_write(file(stdout),ba_msg)) | |
| 1290 | + } | |
| 1291 | + //forget(reliable_write(file(stdout),ba_msg)) | |
| 1290 | 1292 | ). |
| 1291 | 1293 | |
| 1292 | 1294 | |
| ... | ... | @@ -3231,20 +3233,21 @@ define Maybe(String) |
| 3231 | 3233 | }. |
| 3232 | 3234 | |
| 3233 | 3235 | define Maybe((String,Web_Site_Description)) |
| 3234 | - get_site | |
| 3235 | - ( | |
| 3236 | - String requested_host, | |
| 3237 | - List(Web_Site_Description) sites | |
| 3238 | - ) = | |
| 3239 | - if sites is | |
| 3240 | - { | |
| 3241 | - [ ] then print("Requested host '"+requested_host+"' does not exist.\n"); failure, | |
| 3242 | - [site1 . others] then | |
| 3243 | - if site1 is web_site_description(common_names,_,_,_,_,_,_,_,_,_,_) then | |
| 3244 | - if member(common_names,requested_host) | |
| 3245 | - then success((requested_host,site1)) | |
| 3246 | - else get_site(requested_host,others) | |
| 3247 | - }. | |
| 3236 | + get_site | |
| 3237 | + ( | |
| 3238 | + String requested_host, | |
| 3239 | + List(Web_Site_Description) sites | |
| 3240 | + )= | |
| 3241 | + if sites is | |
| 3242 | + { | |
| 3243 | + [ ] then print("Requested host '"+requested_host+"' does not exist.\n"); failure, | |
| 3244 | + [site1 . others] then | |
| 3245 | + if site1 is web_site_description(common_names,_,_,_,_,_,_,_,_,_,_,_) then | |
| 3246 | + if member(common_names,requested_host) | |
| 3247 | + then success((requested_host,site1)) | |
| 3248 | + else get_site(requested_host,others) | |
| 3249 | + } | |
| 3250 | +. | |
| 3248 | 3251 | |
| 3249 | 3252 | |
| 3250 | 3253 | define Maybe((String,Web_Site_Description)) | ... | ... |