diff options
Diffstat (limited to 'plugins/www/resources/js/www-js.js')
-rw-r--r-- | plugins/www/resources/js/www-js.js | 98 |
1 files changed, 98 insertions, 0 deletions
diff --git a/plugins/www/resources/js/www-js.js b/plugins/www/resources/js/www-js.js new file mode 100644 index 0000000..06980c9 --- /dev/null +++ b/plugins/www/resources/js/www-js.js @@ -0,0 +1,98 @@ +/* jshint esversion: 6 */ + +/** A quick function to find and fill login fields */ +function setLoginFields () { + const evt = new Event('change') + + const frames = window.frames + + let doc + let pswdField + let usrField + let formNode + let userFound = false + + if (frames.length !== 0) { + for (let i = 0; i < frames.length; i++) { + doc = frames[i].document + pswdField = doc.querySelectorAll('input[type=\'password\']') + if ((pswdField !== undefined) && (pswdField !== null)) { + break + } + } + if ((pswdField === undefined) || (pswdField === null)) { + /* What if we don't have login forms in the iFrame? -> window */ + doc = window.document + pswdField = doc.querySelectorAll('input[type=\'password\']') + } + } else { + doc = window.document + pswdField = doc.querySelectorAll('input[type=\'password\']') + } + + if (pswdField !== undefined) { + pswdField.forEach(function (pswdElement) { + if (pswdElement.getAttribute('autocomplete') !== 'new-password') { + pswdElement.value = 'PWDPLACEHOLDER' + } + + formNode = pswdElement.form + if (formNode !== null) { + console.debug('Form elements found') + usrField = formNode.querySelectorAll('input[type=\'text\']') + + usrField.forEach(function (usrElement) { + usrElement.value = 'USRPLACEHOLDER' + if (usrElement !== null) { + usrElement.dispatchEvent(evt) + userFound = true + } + }) + pswdElement.dispatchEvent(evt) + } + if (formNode === null || !userFound) { + console.debug('Form elements found') + console.debug('Inputs elements may be in other containers') + const inputs = doc.getElementsByTagName('input') + for (let i = 0; i < inputs.length; i += 1) { + console.debug('input type: ' + inputs[i].type) + switch (inputs[i].type) { + case 'new-password': + continue + case 'password': + continue + case 'hidden': + continue + case 'email': + inputs[i].value = 'USRPLACEHOLDER' + userFound = true + break + case 'text': + if (!userFound) { + inputs[i].value = 'USRPLACEHOLDER' + userFound = true + } + break + default: + console.debug('Tentativily add username if no userFound') + if (!userFound) { + inputs[i].value = 'USRPLACEHOLDER' + userFound = true + } + // code block + } + if (userFound) { + inputs[i].dispatchEvent(evt) + console.debug('Username field found and set(?)') + break + } + } + } + }) + } else { + console.debug('We already have a password') + + } +} + +setLoginFields() |