From 729eb56815dbd9b3c9d397b3d78f0e3ca58ed219 Mon Sep 17 00:00:00 2001 From: bill-auger Date: Tue, 16 Jan 2018 05:37:32 -0500 Subject: stash --- post_fsd_wiki.phantomjs | 178 +++++++++++++++++++++++++++--------------------- 1 file changed, 102 insertions(+), 76 deletions(-) diff --git a/post_fsd_wiki.phantomjs b/post_fsd_wiki.phantomjs index a9a7a33..97eaf1f 100644 --- a/post_fsd_wiki.phantomjs +++ b/post_fsd_wiki.phantomjs @@ -1,142 +1,158 @@ -var WIKI_BASE_URL = 'http://localhost/mediawiki/index.php' ; +var WIKI_BASE_URL = 'http://localhost/mediawiki/index.php' ; // var WIKI_BASE_URL = 'https://directory.fsf.org/wiki?title=' ; // var LOGIN_URL = WIKI_URL + '/index.php?title=Special:Userlogin&action=submitlogin' ; -var LOGIN_URL = WIKI_BASE_URL + '?title=Special:UserLogin' ; -var EDIT_URL = WIKI_BASE_URL + '?title=_TITLE_&action=edit&redlink=1' ; -var TITLE_URL_REGEX = '/_TITLE_/' ; -var USAGE_MSG = "USAGE: phantomjs ./post_fsd_wiki.phantomjs " ; -var LOGIN_IMPUT_ID = 'wpName1' ; -var PASS_IMPUT_ID = 'wpPassword1' ; -var SUBMIT_IMPUT_ID = 'wpLoginAttempt' ; -var USERNAME_LI_ID = 'pt-userpage' ; -var CONTENT_INPUT_ID = 'wpTextbox1' ; -var EDIT_FORM_ID = 'editform' ; - +var LOGIN_URL = WIKI_BASE_URL + '?title=Special:UserLogin' ; +var EDIT_URL = WIKI_BASE_URL + '?title=_TITLE_&action=edit&redlink=1' ; +var TITLE_URL_REGEX = '/_TITLE_/' ; +var USAGE_MSG = "USAGE: phantomjs ./post_fsd_wiki.phantomjs " ; +var LOGIN_IMPUT_ID = 'wpName1' ; +var PASS_IMPUT_ID = 'wpPassword1' ; +var SUBMIT_IMPUT_ID = 'wpLoginAttempt' ; +var USERNAME_LI_ID = 'pt-userpage' ; +var CONTENT_INPUT_ID = 'wpTextbox1' ; +var EDIT_FORM_ID = 'editform' ; +var STEP_FUNCTION_KEY = 'step-finction' ; +var PAGELOAD_WAIT_KEY = 'wait-for-pageload' ; var System = require('system') ; var Args = System.args ; var Page = require('webpage').create() ; var WIKI_LOGIN = Args[1] || '' ; var WIKI_PASS = Args[2] || '' ; +var Steps = [] ; +var Step = {} ; +var StepN = 0 ; var IsLoading = false ; var ShouldQuit = false ; -var StepN = 0 ; +var MainIvl ; if (WIKI_LOGIN == '' || WIKI_PASS == '') { DBG(USAGE_MSG) ; phantom.exit() ; } -var Steps = -[ - function prepare() - { - var title = 'a title' ; - var page_title = JSON.encode(title.eplace(' ' , '_')) ; - } , +/* steps */ - function login() - { +function prepare() +{ + var title = 'a title' ; + var page_title = JSON.encode(title.eplace(' ' , '_')) ; +} + +function login() +{ DBG("in") ; - // Page.settings.userAgent = 'SpecialAgent'; + // Page.settings.userAgent = 'SpecialAgent'; - OpenUrl(LOGIN_URL , function() - { + OpenUrl(LOGIN_URL , function() + { DBG("login() open in") ; -// console.log("login() Page.content=" + Page.content) ; - QuitOnErr(Page.evaluate(function(login_input_id , pass_input_id , submit_input_id , - wiki_login , wiki_pass ) - { + QuitOnErr(Page.evaluate(function(login_input_id , pass_input_id , submit_input_id , + wiki_login , wiki_pass ) + { console.log("login() eval in" + login_input_id) ; - var login_input = document.getElementById(login_input_id ) ; - var pass_input = document.getElementById(pass_input_id ) ; - var submit_input = document.getElementById(submit_input_id) ; + var login_input = document.getElementById(login_input_id ) ; + var pass_input = document.getElementById(pass_input_id ) ; + var submit_input = document.getElementById(submit_input_id) ; + var submit_form = submit_input.form ; console.log("login_input=" + ((!!login_input) ? login_input : 'NFG')) ; console.log("submit_input=" + ((!!submit_input) ? submit_input : 'NFG')) ; - if (login_input === 'undefined' || login_input === 'undefined' || - submit_input === 'undefined' || submit_input.form === 'undefined' ) - return "invalid login page" ; + if (!login_input || !login_input || !submit_input || !submit_form) + return "invalid login page" ; - login_input.value = wiki_login ; - pass_input.value = wiki_pass ; + login_input.value = wiki_login ; + pass_input.value = wiki_pass ; console.log("login() login_input.value=" + login_input.value) ; console.log("login() pass_input.value=" + pass_input.value) ; console.log("login() submit_input.value=" + submit_input.value) ; - submit_input.form.submit() ; IsLoading = true ; + submit_form.submit() ; console.log("login() eval out") ; - } , LOGIN_IMPUT_ID , PASS_IMPUT_ID , SUBMIT_IMPUT_ID , WIKI_LOGIN , WIKI_PASS)) ; + } , LOGIN_IMPUT_ID , PASS_IMPUT_ID , SUBMIT_IMPUT_ID , WIKI_LOGIN , WIKI_PASS)) ; DBG("login() open out") ; - }) ; + }) ; DBG("out") ; - } , +} - function verifyLogin() - { +function verifyLogin() +{ DBG("in") ; +// console.log("verifyLogin() Page.content=" + Page.content) ; - QuitOnErr(Page.evaluate(function(username_li_id , wiki_login) - { - var username_li = document.getElementById(username_li_id) ; + QuitOnErr(Page.evaluate(function(username_li_id , wiki_login) + { + var username_li = document.getElementById(username_li_id) ; -console.log("verifyLogin() username_li.textContent=" + username_li.textContent ) ; + if (!username_li || username_li.textContent.lowercase != wiki_login.lowercase) + return "login failed" ; - if (username_li === 'undefined' || username_li.textContent.lowercase != wiki_login.lowercase) - return "login failed" ; - } , USERNAME_LI_ID , WIKI_LOGIN)) ; + console.info("signed in as: " + username_li.textContent) ; + } , USERNAME_LI_ID , WIKI_LOGIN)) ; DBG("out") ; - } , +} - function fetchEditPage() - { +function submitEditPage() +{ DBG("in") ; - var page_title = 'New Page' ; + var page_title = 'New Page' ; - OpenUrl(EDIT_URL.replace(TITLE_URL_REGEX , page_title) , function() + OpenUrl(EDIT_URL.replace(TITLE_URL_REGEX , page_title) , function() + { + QuitOnErr(Page.evaluate(function(content_input_id , edit_form_id , content_text) { - QuitOnErr(Page.evaluate(function(content_input_id , edit_form_id , content_text) - { - var content_input = document.getElementById(content_input_id) ; - var edit_form = document.getElementById(edit_form_id ) ; + var content_input = document.getElementById(content_input_id) ; + var edit_form = content_input.form ; + var existing_content = content_input.textContent ; -console.log("(fetchEditPage() edit_form == content_input.form)=" + (edit_form == content_input.form)) ; -console.log("fetchEditPage() content_input.textContent=" + content_input.textContent ) ; +console.log("submitEditPage() content_input.textContent=" + existing_content) ; - if (content_input === 'undefined') return "invalid edit page" ; - } , CONTENT_INPUT_ID , EDIT_FORM_ID , content_text)) ; - }) ; + if (!content_input || !edit_form) return "invalid edit page" ; + } , CONTENT_INPUT_ID , EDIT_FORM_ID)) ; + }) ; DBG("out") ; - } -] ; +} /* main loop */ -var MainIvl = setInterval(function() +function DefineStep(step_function , should_wait_for_pageload) +{ + var step_data = {} ; + step_data[STEP_FUNCTION_KEY] = step_function ; + step_data[PAGELOAD_WAIT_KEY] = should_wait_for_pageload ; + Steps.push(step_data) ; +} + +function MainLoop() { if (IsLoading) return ; -DBG("test"); + var step_data = Steps[StepN] ; + var step = step_data && step_data[STEP_FUNCTION_KEY] ; + var wait = step_data && step_data[PAGELOAD_WAIT_KEY] ; - if (typeof Steps[StepN] !== 'function') ShouldQuit = true ; + if (ShouldQuit) LOG("forced quit") ; + if (typeof step === 'function') ++StepN ; else ShouldQuit = true ; - if (ShouldQuit) { clearInterval(MainIvl) ; phantom.exit() ; } - else { LOG("Step " + StepN + ": " + Steps[StepN].name) ; Steps[StepN++]() ; } -}) ; + if (ShouldQuit) { clearInterval(MainIvl) ; LOG("done") ; phantom.exit() ; } + else { LOG("Step " + StepN + ": " + step.name) ; step() ; } +} /* helpers */ function OpenUrl(url , callback) { - Page.open(LOGIN_URL , function(status) +DBG("url=" + url) ; + + Page.open(url , function(status) { if (status != 'success') { ERR("status: " + status) ; ShouldQuit = true ; } else { callback() ; } @@ -148,16 +164,16 @@ function QuitOnErr(err) { if (!!err) { ERR(err) ; ShouldQuit = true ; } } /* event hendlers */ -Page.onLoadStarted = function() { IsLoading = true ; ARGS.apply("Page.onLoadStarted" , arguments) ; } ; +Page.onLoadStarted = function() { IsLoading = true ; ARGS.apply("Page.onLoadStarted" , arguments) ; } ; Page.onLoadFinished = function() { IsLoading = false ; ARGS.apply("Page.onLoadFinished " + Page.url , arguments) ; } ; -Page.onUrlChanged = function() { ARGS.apply("Page.onUrlChanged" , arguments) ; } ; +Page.onUrlChanged = function() { ARGS.apply("Page.onUrlChanged" , arguments) ; } ; /* logging */ -Page.onConsoleMessage = function(msg) { DBG(msg) ; } ; +Page.onConsoleMessage = function(msg) { LOG(msg) ; } ; function LOG(log , color) { console.log((color || '\033[01;34m') + log + '\033[00m' ) ; } function ERR(err) { LOG("ERROR: " + err , '\033[00;31m') ; } @@ -165,3 +181,13 @@ function DBG(dbg) { var fn_name = (!!DBG.caller.name) ? DBG.caller.name LOG("DEBUG: " + fn_name + dbg , '\033[00;32m') ; } function ARGS() { LOG("EVENT: " + this) ; for (arg in arguments) LOG(" arg: " + JSON.stringify(arguments[arg])) ; } + + +/* main entry */ + +DefineStep(prepare , false) ; +DefineStep(login , true ) ; +DefineStep(verifyLogin , false) ; +DefineStep(submitEditPage , true ) ; + +MainIvl = setInterval(MainLoop , 250) ; -- cgit v1.2.2