From ad168d33f53581e082fa52a392c84af861afe47d Mon Sep 17 00:00:00 2001 From: "Matteo Nastasi (mop)" Date: Tue, 15 Dec 2015 13:06:00 +0100 Subject: [PATCH] add globals checker --- TODO.txt | 2 +- bin/get_globals.sh | 17 ++++++++++++++++ sql/sql.d/900-anagr_devel.sql | 4 +++- web/Obj/brisk.conf-templ.pho | 1 + web/Obj/sac-a-push.phh | 37 +++++++++++++++++++++++++++++++++++ 5 files changed, 59 insertions(+), 2 deletions(-) create mode 100755 bin/get_globals.sh diff --git a/TODO.txt b/TODO.txt index 1a94fbb..486d33e 100644 --- a/TODO.txt +++ b/TODO.txt @@ -5,7 +5,7 @@ ------+ DONE - Not sequence of 3 same chars DONE . check server side with test - - Global vars checker + DONE - Global vars checker - usermgmt: add user delete DONE - 10002 message when already clicked diff --git a/bin/get_globals.sh b/bin/get_globals.sh new file mode 100755 index 0000000..f235dfb --- /dev/null +++ b/bin/get_globals.sh @@ -0,0 +1,17 @@ +#!/bin/bash +glob="$(grep '$G_' $(find -type f -name '*.ph*') | sed 's/\$G_/\n\$G_/g' | grep '^\$G_' | sed 's/[^\$a-zA-Z0-9_].*//g' | sort | uniq | sed 's/\$//g' )" + +li="" +for i in $glob ; do + if [ $(echo "${li}, '$i'," | wc -c) -gt 80 ]; then + echo $li + li="" + fi + if [ "$li" = "" ]; then + li="'${i}', " + else + li="${li} '${i}'," + fi +done + + diff --git a/sql/sql.d/900-anagr_devel.sql b/sql/sql.d/900-anagr_devel.sql index d1a5def..9ed830e 100644 --- a/sql/sql.d/900-anagr_devel.sql +++ b/sql/sql.d/900-anagr_devel.sql @@ -41,5 +41,7 @@ DELETE FROM #PFX#users WHERE code = 10112; INSERT INTO #PFX#users (code, login, pass, email, type, guar_code) VALUES (10112, 'sino', md5('sino'), 'sino@pluto.com', CAST (X'00010000' as integer), 10103); DELETE FROM #PFX#users WHERE code = 10113; INSERT INTO #PFX#users (code, login, pass, email, type, guar_code) VALUES (10113, 'doub', md5('boub'), 'doub@pluto.com', CAST (X'00010000' as integer), 10103); +DELETE FROM #PFX#users WHERE code = 10114; +INSERT INTO #PFX#users (code, login, pass, email, type, guar_code) VALUES (10114, 'selfguar', md5('self'), 'self@pluto.com', CAST (X'00010000' as integer), 10103); -ALTER SEQUENCE #PFX#users_code_seq RESTART WITH 10114; +ALTER SEQUENCE #PFX#users_code_seq RESTART WITH 10115; diff --git a/web/Obj/brisk.conf-templ.pho b/web/Obj/brisk.conf-templ.pho index 8d4858c..837e4ed 100644 --- a/web/Obj/brisk.conf-templ.pho +++ b/web/Obj/brisk.conf-templ.pho @@ -17,6 +17,7 @@ else { // 26 hours between 2 successive registration from this area $G_selfreg_mask = 0xfffff000; $G_selfreg_tout = 93600; +$G_notguar_code = 10114; // G_dbasetype value can be "pgsql" or "file" $G_dbasetype="pgsql"; diff --git a/web/Obj/sac-a-push.phh b/web/Obj/sac-a-push.phh index 62eb860..619d0b2 100644 --- a/web/Obj/sac-a-push.phh +++ b/web/Obj/sac-a-push.phh @@ -30,6 +30,22 @@ define('DIRECT_ST_WRITE', 2); declare(ticks = 1); +/* this list is created with bin/get_globals.sh */ +$_globals_list = array( +'G_admin_mail', 'G_alarm_passwd', 'G_all_points', 'G_ban_list', 'G_base', +'G_black_list', 'G_brisk_version', 'G_btrace_pref_sub', 'G_cloud_smasher', +'G_crypt_key', 'G_dbasetype', 'G_dbauth', 'G_dbpfx', 'G_doc_path', +'G_domain', 'G_donors_all', 'G_donors_cur', 'G_is_local', 'G_lang', 'G_lng', +'G_mail_seed', 'G_notguar_code', 'G_PG_cons', 'G_PG_cons_n', 'G_PG_vow', +'G_PG_vow_n', 'G_poll_entries', 'G_poll_name', 'G_poll_title', +'G_provider_proxy', 'G_proxy_white_list', 'G_room_about', 'G_room_help', +'G_room_passwdhowto', 'G_room_roadmap', 'G_room_whysupport', +'G_selfreg_mask', 'G_selfreg_tout', 'G_shutdown', 'G_sidebanner', +'G_sidebanner_idx', 'G_splash_content', 'G_splash_contents', +'G_splash_cont_idx', 'G_splash_h', 'G_splash_idx', 'G_splash_interval', +'G_splash_timeout', 'G_splash_w', 'G_topbanner', 'G_tos_dthard', +'G_tos_dtsoft', 'G_tos_fname', 'G_tos_idx', 'G_tos_vers', 'G_webbase'); + function global_dump() { GLOBAL $G_alarm_passwd, $G_ban_list, $G_black_list, $G_btrace_pref_sub, $G_dbauth; @@ -629,6 +645,18 @@ class Sac_a_push { $this->app->users_cleanup(); } + function check_globals() + { + GLOBAL $_globals_list; + foreach ($_globals_list as $g) { + if (!array_search($g, $GLOBALS) || !isset($GLOBALS[$g])) { + error_log(sprintf("Global [%s] not declared", $g)); + return FALSE; + } + } + return TRUE; + } + function run() { GLOBAL $DOCUMENT_ROOT, $HTTP_HOST; @@ -645,6 +673,11 @@ class Sac_a_push { GLOBAL $G_with_topbanner; GLOBAL $G_tos_vers, $G_tos_fname, $G_tos_dtsoft, $G_tos_dthard, $G_tos_idx, $G_doc_path; + if (!$this->check_globals()) { + fprintf(STDERR, "Take a look to the phplog file, GLOBALS missing!\n"); + sleep(10); + } + if ($this->main_loop) { return (FALSE); } @@ -816,6 +849,10 @@ class Sac_a_push { $this->reload(FALSE, $G_provider_proxy); $this->app->reload(FALSE, $G_ban_list, $G_black_list, $G_cloud_smasher); + if (!$this->check_globals()) { + fprintf(STDERR, "Take a look to the phplog file, GLOBALS missing!\n"); + sleep(10); + } global_dump(); } else if ($line == "shutdown" || $line == "sd") { -- 2.17.1