diff --git a/web/CXM_making_a_web_site.anubis b/web/CXM_making_a_web_site.anubis index cf91800..639bec8 100644 --- a/web/CXM_making_a_web_site.anubis +++ b/web/CXM_making_a_web_site.anubis @@ -3361,11 +3361,27 @@ define (Maybe(WEB_Session), HTTP_Answer) success(new_controller) then apply_controller_action(new_controller, plugins, controllers, _current_page_renderer, page_renderers, cinfo, new_session, failure, initial_session, logger), }, success(action_name) then - logger(logInfo, "ACTION_NAME ["+action_name+"]"); + logger(logInfo, "ACTION_NAME ["+action_name+"] from IP "+get_String(_session.fields, "IP", "")); if apply_action(_session, action_name, *controller.controller_actions) is { - http_answer(session, answer) then (success(session), answer), - http_answer(answer) then (success(_session), answer), + http_answer(session, answer) then + since session is web_session(id, lang, entries, current, previous, _), + with new_web_session = web_session(id, lang, entries, current, previous, current), +// println("***** http_answer(session, answer) record new draw point to *****"); +// println("web arguments:"+ +// dump_web_arg_values(*current.lwa)); +// println("************************************"); + (success(new_web_session), answer), + + http_answer(answer) then + since _session is web_session(id, lang, entries, current, previous, _), + with new_web_session = web_session(id, lang, entries, current, previous, current), +// println("***** http_answer(answer) record new draw point to *****"); +// println("web arguments:"+ +// dump_web_arg_values(*current.lwa)); +// println("************************************"); + (success(new_web_session), answer), + redirect(new_session) then if get_controller(get_String(*new_session.web_request.lwa, "aws_controller", "root"), controllers, logger) is { @@ -3386,16 +3402,16 @@ define (Maybe(WEB_Session), HTTP_Answer) { failure then (failure, error_page(http_not_found, "Redirect to previous Controller not found", _session)), success(new_controller) then - since _session is web_session(id, lang, entries, _, previous), - apply_controller_action(new_controller, plugins, controllers, _current_page_renderer, page_renderers, cinfo, web_session(id, lang, entries, previous, previous), failure, initial_session, logger), + since _session is web_session(id, lang, entries, _, previous, draw), + apply_controller_action(new_controller, plugins, controllers, _current_page_renderer, page_renderers, cinfo, web_session(id, lang, entries, previous, previous, draw), failure, initial_session, logger), }, redirect_to_previous(entries) then if get_controller(get_String(*_session.previous_web_request.lwa, "aws_controller", "root"), controllers, logger) is { failure then (failure, error_page(http_not_found, "Redirect to previous Controller not found", _session)), success(new_controller) then - since _session is web_session(id, lang, _, _, previous), - apply_controller_action(new_controller, plugins, controllers, _current_page_renderer, page_renderers, cinfo, web_session(id, lang, entries, previous, previous), failure, initial_session, logger), + since _session is web_session(id, lang, _, _, previous, draw), + apply_controller_action(new_controller, plugins, controllers, _current_page_renderer, page_renderers, cinfo, web_session(id, lang, entries, previous, previous, draw), failure, initial_session, logger), }, //ajax(answer) then (failure, answer), //ajax with modified session that must be saved @@ -3408,8 +3424,14 @@ define (Maybe(WEB_Session), HTTP_Answer) send_file(file_path, c_disposition) then (failure, send_file(file_path, c_disposition)), renderer_content(session, content) then with the_session = if session is {failure then _session, success(__session) then __session}, - with page_renderer = get_page_renderer(the_session, _current_page_renderer, page_renderers, logger), - (session, page_renderer.page_layout(the_session, plugins, content)) + since the_session is web_session(id, lang, entries, current, previous, _), + with new_web_session = web_session(id, lang, entries, current, previous, current), +// println("***** renderer_content(session, content) record new draw point to *****"); +// println("web arguments:"+ +// dump_web_arg_values(*current.lwa)); +// println("************************************"); + with page_renderer = get_page_renderer(new_web_session, _current_page_renderer, page_renderers, logger), + (success(new_web_session), page_renderer.page_layout(new_web_session, plugins, content)) } } . @@ -3493,12 +3515,14 @@ public define Web_Site out_of_date(previous_session) then logger(logInfo, "previous out_of_date"); //expired_session(previous_session, http_info, var(_lwa), is_https), - since previous_session is web_session(id, lang, entries, previous, _), - web_session(id, lang, entries, web_request(http_info, var(_lwa), is_https), previous) + since previous_session is web_session(id, lang, entries, previous, _, draw), + replace_String(entries, "IP", get_String(_lwa, "x-forwarded-for", ip_addr_to_string(http_info.ip_address))); + web_session(id, lang, entries, web_request(http_info, var(_lwa), is_https), previous, draw) still_valid(previous_session) then - since previous_session is web_session(id, lang, entries, previous, _), - web_session(id, lang, entries, web_request(http_info, var(_lwa), is_https), previous) + since previous_session is web_session(id, lang, entries, previous, _, draw), + replace_String(entries, "IP", get_String(_lwa, "x-forwarded-for", ip_addr_to_string(http_info.ip_address))); + web_session(id, lang, entries, web_request(http_info, var(_lwa), is_https), previous, draw) }, diff --git a/web/CXM_web_session.anubis b/web/CXM_web_session.anubis index abf8cab..3d2d230 100644 --- a/web/CXM_web_session.anubis +++ b/web/CXM_web_session.anubis @@ -92,7 +92,8 @@ public type WEB_Session: String language, Var(List(WEB_Session_Field)) fields, WEB_Request web_request, - WEB_Request previous_web_request + WEB_Request previous_web_request, + WEB_Request draw_web_request ). public type WEB_Session_No_Var: @@ -101,7 +102,8 @@ public type WEB_Session_No_Var: String language, List(WEB_Session_Field_No_Var) fields, WEB_Request_No_Var web_request, - WEB_Request_No_Var previous_web_request + WEB_Request_No_Var previous_web_request, + WEB_Request_No_Var draw_web_request, ). public define Var(List(WEB_Session_Field)) @@ -148,10 +150,11 @@ public define WEB_Session ( WEB_Session_No_Var _session )= - since _session is web_session(id, language, fields, c_web_request, p_web_request), + since _session is web_session(id, language, fields, c_web_request, p_web_request, d_web_request), web_session(id, language, to_WEB_Session_Field(fields), web_request(c_web_request.http_info, var(c_web_request.lwa), c_web_request.is_https), - web_request(p_web_request.http_info, var(p_web_request.lwa), p_web_request.is_https) + web_request(p_web_request.http_info, var(p_web_request.lwa), p_web_request.is_https), + web_request(d_web_request.http_info, var(d_web_request.lwa), d_web_request.is_https), ) . @@ -160,10 +163,11 @@ public define WEB_Session_No_Var ( WEB_Session _session )= - since _session is web_session(id, language, fields, c_web_request, p_web_request), + since _session is web_session(id, language, fields, c_web_request, p_web_request, d_web_request), web_session(id, language, to_WEB_Session_Field_No_Var(*fields), web_request(c_web_request.http_info, *c_web_request.lwa, c_web_request.is_https), - web_request(p_web_request.http_info, *p_web_request.lwa, p_web_request.is_https) + web_request(p_web_request.http_info, *p_web_request.lwa, p_web_request.is_https), + web_request(d_web_request.http_info, *d_web_request.lwa, d_web_request.is_https), ) . @@ -1175,7 +1179,7 @@ public define String ( WEB_Session _session )= - since _session is web_session(id, language, fields, web_request, previous_web_request), + since _session is web_session(id, language, fields, web_request, previous_web_request, draw_web_request), "WEB Session Dump: \n"+ "----------------- \n"+ "Session ID : ["+id+"]\n"+ @@ -1195,6 +1199,13 @@ public define String "http_info:\n"+ dump_http_info(previous_web_request.http_info)+"\n"+ "web arguments:"+ - dump_web_arg_values(*previous_web_request.lwa)+"\n" - + dump_web_arg_values(*previous_web_request.lwa)+"\n\n"+ + "-----------------------------------------------------------------------------\n"+ + "Draw WEB REQUEST:\n"+ + "-----------------------------------------------------------------------------\n"+ + "is https "+to_String(draw_web_request.is_https)+"\n"+ + "http_info:\n"+ + dump_http_info(draw_web_request.http_info)+"\n"+ + "web arguments:"+ + dump_web_arg_values(*draw_web_request.lwa)+"\n" . -- libgit2 0.21.4