NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript== // @name openuserjs.org Autologin // @description Login and redirect to last viewed page // @namespace openuserjs.org // @license MIT // @version 14.2 // @match https://openuserjs.org/* // @exclude /^https?:\/\/openuserjs\.org\/auth\/.*$ // @grant GM_setValue // @grant GM_getValue // @grant GM.setValue // @grant GM.getValue // @require https://greasemonkey.github.io/gm4-polyfill/gm4-polyfill.js // @require https://cdn.jsdelivr.net/gh/Joe12387/detectIncognito@1.3.0/dist/es5/detectIncognito.min.js // @icon https://www.google.com/s2/favicons?sz=64&domain=openuserjs.org // @sandbox JavaScript // ==/UserScript== /* global GM, detectIncognito */ /* jshint asi: true, esversion: 8 */ (function () { 'use strict' function sleep (t) { return new Promise(resolve => setTimeout(resolve, t)) } const main = () => { GM.getValue('username', false).then(function (username) { if (username && !document.getElementById('clearAutoLogin')) { const li = document.createElement('li') li.setAttribute('id', 'clearAutoLogin') li.innerHTML = '<a href="#forget" title="Forget autologin"><span class="visible-xs-inline">Forget autologin</span><i class="fa fa-chain-broken"></i></a>' document.querySelector('.navbar-nav').insertBefore(li, document.querySelector('.navbar-nav li:last-child')) li.addEventListener('click', async function () { if (window.confirm('Forget autologin?')) { await GM.setValue('username', false) window.alert('Your autologin username has been deleted.') } }) } if (document.title.indexOf('503 ') === 0) { // We're busy right now. Try again later. } else if (document.location.href.match(/^https?:\/\/openuserjs\.org\/login\/?$/)) { if (username) { document.getElementsByName('username')[0].value = username document.getElementsByName('consent')[0].checked = true sleep(500).then(() => { document.getElementById('action').click() }) } else { const button = document.getElementById('action') button.addEventListener('click', async function (ev) { const inputs = document.getElementsByName('username') for (let j = 0; j < inputs.length; j++) { if (inputs[j].value) { await GM.setValue('username', inputs[j].value) return } } }) } } else if (username && document.getElementsByClassName('fa fa-sign-in') && document.getElementsByClassName('fa fa-sign-in')[0]) { sleep(500).then(() => { document.getElementsByClassName('fa fa-sign-in')[0].click() }) } }) } detectIncognito().then((result) => { if (!result.isPrivate) { main() } }).catch((e) => { console.error(e) main() }) })()