From 6ebf986a81ea36bd3e79fb13f1e9f1ff940d5a45 Mon Sep 17 00:00:00 2001 From: Ralph Amissah Date: Sun, 19 Apr 2020 11:00:01 -0400 Subject: cgi search form, document sub-root path - (doc_output_root_path - web_doc_root_path) which added to url host provides document path --- org/out_cgi_search_sqlite.org | 52 +++++++++++++++----------- src/doc_reform/io_out/cgi_sqlite_search_form.d | 52 +++++++++++++++----------- 2 files changed, 62 insertions(+), 42 deletions(-) diff --git a/org/out_cgi_search_sqlite.org b/org/out_cgi_search_sqlite.org index 852b93f..4f3ccad 100644 --- a/org/out_cgi_search_sqlite.org +++ b/org/out_cgi_search_sqlite.org @@ -83,6 +83,11 @@ template CGIsearchSQLite() { string _cgi_search_script_raw_fn_d = (opt_action.cgi_sqlite_search_filename_d.empty) ? make_and_meta_struct.conf.w_srv_cgi_search_script_raw_fn_d : opt_action.cgi_sqlite_search_filename_d; + string get_doc_collection_sub_root(string output_path) { + string web_doc_root_path = environment.get("DOCUMENT_ROOT", "/var/www/html"); + auto m = output_path.matchFirst(regex("^(" ~ web_doc_root_path ~ ")")); + return m.post; + } string the_cgi_search_form = format(q"≓ <> <> @@ -114,6 +119,8 @@ void cgi_function_intro(Cgi cgi) { } mixin GenericMain!cgi_function_intro; ≓", + get_doc_collection_sub_root(make_and_meta_struct.conf.output_path), + make_and_meta_struct.conf.output_path ~ "/sqlite/", _sqlite_db_fn, (opt_action.css_theme_default) ? "FFFFFF" : "000000", (opt_action.css_theme_default) ? "000000" : "CCCCCC", @@ -134,6 +141,7 @@ mixin GenericMain!cgi_function_intro; (opt_action.css_theme_default) ? "FFFF48" : "777748", (opt_action.css_theme_default) ? "222222" : "AAAAAA", _cgi_search_script, + _sqlite_db_fn, ).strip; string _cgi_path = (opt_action.output_dir_set.length > 0) ? opt_action.output_dir_set @@ -245,7 +253,8 @@ struct Config { string http_request_type; string http_host; // string server_name; - string doc_root; + string web_doc_root_path; + string doc_collection_sub_root; string cgi_root; string cgi_script; string data_path_html; @@ -255,16 +264,17 @@ struct Config { string request_method; } auto conf = Config(); -conf.http_request_type = environment.get("REQUEST_SCHEME", "http"); -conf.http_host = environment.get("HTTP_HOST", "localhost"); -// conf.server_name = environment.get("SERVER_NAME", "localhost"); -conf.doc_root = environment.get("DOCUMENT_ROOT", "/var/www/html"); -conf.cgi_root = environment.get("CONTEXT_DOCUMENT_ROOT", "/usr/lib/cgi-bin/"); -// conf.cgi_script = environment.get("SCRIPT_NAME", "/cgi-bin/spine-search"); -conf.query_string = environment.get("QUERY_STRING", ""); -conf.http_url = environment.get("HTTP_REFERER", conf.http_request_type ~ "://" ~ conf.http_host ~ conf.cgi_script ~ "?" ~ conf.query_string); -conf.db_path = "/var/www/html/sqlite/"; // conf.http_host ~ "/sqlite/"; -conf.request_method = environment.get("REQUEST_METHOD", "POST"); +conf.http_request_type = environment.get("REQUEST_SCHEME", "http"); +conf.http_host = environment.get("HTTP_HOST", "localhost"); +// conf.server_name = environment.get("SERVER_NAME", "localhost"); +conf.web_doc_root_path = environment.get("DOCUMENT_ROOT", "/var/www/html"); +conf.doc_collection_sub_root = "%s"; // (output_path - web_doc_root_path) +conf.cgi_root = environment.get("CONTEXT_DOCUMENT_ROOT", "/usr/lib/cgi-bin/"); +// conf.cgi_script = environment.get("SCRIPT_NAME", "/cgi-bin/spine-search"); +conf.query_string = environment.get("QUERY_STRING", ""); +conf.http_url = environment.get("HTTP_REFERER", conf.http_request_type ~ "://" ~ conf.http_host ~ conf.cgi_script ~ "?" ~ conf.query_string); +conf.db_path = "%s"; // (output_path + /sqlite) +conf.request_method = environment.get("REQUEST_METHOD", "POST"); #+END_SRC # REQUEST_URI QUERY_STRING @@ -1518,11 +1528,11 @@ string show_matched_objects (string fn) { } else { val = false; } return val; } - cv.db_selected = set_value("selected_db", "spine.search.db"); // selected_db == db - cv.sql_match_limit = set_value("sml", "1000"); - cv.sql_match_offset = set_value("smo", "0"); - cv.search_text = set_value("sf", ""); - cv.results_type = set_value("rt", "idx"); + cv.db_selected = set_value("selected_db", "%s"); // selected_db_name == db (spine.search.db or whatever) + cv.sql_match_limit = set_value("sml", "1000"); + cv.sql_match_offset = set_value("smo", "0"); + cv.search_text = set_value("sf", ""); + cv.results_type = set_value("rt", "idx"); cv.checked_echo = set_bool("ec"); cv.checked_stats = set_bool("sts"); cv.checked_url = set_bool("url"); @@ -1719,7 +1729,7 @@ LIMIT %%s OFFSET %%s auto m = (row["date_published"].as!string).match(regex(r"^([0-9]{4})")); // breaks if row missing or no match? cgi.write( "
" @@ -1780,7 +1790,7 @@ LIMIT %%s OFFSET %%s if (row["ocn"].as!string != "0") { cgi.write( "" diff --git a/src/doc_reform/io_out/cgi_sqlite_search_form.d b/src/doc_reform/io_out/cgi_sqlite_search_form.d index 7bfd5ef..145203f 100644 --- a/src/doc_reform/io_out/cgi_sqlite_search_form.d +++ b/src/doc_reform/io_out/cgi_sqlite_search_form.d @@ -14,6 +14,11 @@ template CGIsearchSQLite() { string _cgi_search_script_raw_fn_d = (opt_action.cgi_sqlite_search_filename_d.empty) ? make_and_meta_struct.conf.w_srv_cgi_search_script_raw_fn_d : opt_action.cgi_sqlite_search_filename_d; + string get_doc_collection_sub_root(string output_path) { + string web_doc_root_path = environment.get("DOCUMENT_ROOT", "/var/www/html"); + auto m = output_path.matchFirst(regex("^(" ~ web_doc_root_path ~ ")")); + return m.post; + } string the_cgi_search_form = format(q"≓ /+ dub.sdl name "spine search" @@ -33,7 +38,8 @@ void cgi_function_intro(Cgi cgi) { string http_request_type; string http_host; // string server_name; - string doc_root; + string web_doc_root_path; + string doc_collection_sub_root; string cgi_root; string cgi_script; string data_path_html; @@ -43,16 +49,17 @@ void cgi_function_intro(Cgi cgi) { string request_method; } auto conf = Config(); - conf.http_request_type = environment.get("REQUEST_SCHEME", "http"); - conf.http_host = environment.get("HTTP_HOST", "localhost"); - // conf.server_name = environment.get("SERVER_NAME", "localhost"); - conf.doc_root = environment.get("DOCUMENT_ROOT", "/var/www/html"); - conf.cgi_root = environment.get("CONTEXT_DOCUMENT_ROOT", "/usr/lib/cgi-bin/"); - // conf.cgi_script = environment.get("SCRIPT_NAME", "/cgi-bin/spine-search"); - conf.query_string = environment.get("QUERY_STRING", ""); - conf.http_url = environment.get("HTTP_REFERER", conf.http_request_type ~ "://" ~ conf.http_host ~ conf.cgi_script ~ "?" ~ conf.query_string); - conf.db_path = "/var/www/html/sqlite/"; // conf.http_host ~ "/sqlite/"; - conf.request_method = environment.get("REQUEST_METHOD", "POST"); + conf.http_request_type = environment.get("REQUEST_SCHEME", "http"); + conf.http_host = environment.get("HTTP_HOST", "localhost"); + // conf.server_name = environment.get("SERVER_NAME", "localhost"); + conf.web_doc_root_path = environment.get("DOCUMENT_ROOT", "/var/www/html"); + conf.doc_collection_sub_root = "%s"; // (output_path - web_doc_root_path) + conf.cgi_root = environment.get("CONTEXT_DOCUMENT_ROOT", "/usr/lib/cgi-bin/"); + // conf.cgi_script = environment.get("SCRIPT_NAME", "/cgi-bin/spine-search"); + conf.query_string = environment.get("QUERY_STRING", ""); + conf.http_url = environment.get("HTTP_REFERER", conf.http_request_type ~ "://" ~ conf.http_host ~ conf.cgi_script ~ "?" ~ conf.query_string); + conf.db_path = "%s"; // (output_path + /sqlite) + conf.request_method = environment.get("REQUEST_METHOD", "POST"); struct CGI_val { string db_selected = ""; string sql_match_limit = ""; // radio: ( 1000 | 2500 ) @@ -1180,11 +1187,11 @@ void cgi_function_intro(Cgi cgi) { } else { val = false; } return val; } - cv.db_selected = set_value("selected_db", "spine.search.db"); // selected_db == db - cv.sql_match_limit = set_value("sml", "1000"); - cv.sql_match_offset = set_value("smo", "0"); - cv.search_text = set_value("sf", ""); - cv.results_type = set_value("rt", "idx"); + cv.db_selected = set_value("selected_db", "%s"); // selected_db_name == db (spine.search.db or whatever) + cv.sql_match_limit = set_value("sml", "1000"); + cv.sql_match_offset = set_value("smo", "0"); + cv.search_text = set_value("sf", ""); + cv.results_type = set_value("rt", "idx"); cv.checked_echo = set_bool("ec"); cv.checked_stats = set_bool("sts"); cv.checked_url = set_bool("url"); @@ -1347,7 +1354,7 @@ LIMIT %%s OFFSET %%s auto m = (row["date_published"].as!string).match(regex(r"^([0-9]{4})")); // breaks if row missing or no match? cgi.write( "
" @@ -1396,7 +1403,7 @@ LIMIT %%s OFFSET %%s if (row["ocn"].as!string != "0") { cgi.write( "" @@ -1436,6 +1443,8 @@ LIMIT %%s OFFSET %%s } mixin GenericMain!cgi_function_intro; ≓", + get_doc_collection_sub_root(make_and_meta_struct.conf.output_path), + make_and_meta_struct.conf.output_path ~ "/sqlite/", _sqlite_db_fn, (opt_action.css_theme_default) ? "FFFFFF" : "000000", (opt_action.css_theme_default) ? "000000" : "CCCCCC", @@ -1456,6 +1465,7 @@ mixin GenericMain!cgi_function_intro; (opt_action.css_theme_default) ? "FFFF48" : "777748", (opt_action.css_theme_default) ? "222222" : "AAAAAA", _cgi_search_script, + _sqlite_db_fn, ).strip; string _cgi_path = (opt_action.output_dir_set.length > 0) ? opt_action.output_dir_set -- cgit v1.2.3