Gerrit fill user and pass

On page of gerrit, JIRA and bugzilla login, fill username and password, and click OK.

სკრიპტის ინსტალაცია?
ავტორის შემოთავაზებული სკრიპტი

შეიძლება მოგეწონოს Goto-login on gerrit.

სკრიპტის ინსტალაცია
// ==UserScript==
// @name Gerrit fill user and pass
// @name:zh-CN   gerrit自动填写用户名和密码
// @namespace    https://greasyfork.org/en/scripts/468104-gerrit-fill-user-and-pass
// @description  On page of gerrit, JIRA and bugzilla login, fill username and password, and click OK.
// @description:zh-CN 在gerrit、JIRA和bugzilla登录页面填写用户名和密码并点击完成。
// @license      Apache-2.0. And not welcomed to be modified or used by, or, if possible, redistributed to people who discriminate against people based on race, gender or sexual orientation.
// @author       Allen Tse
// @version      2.2
// @include      SetYourUrl4GerritJiraBugzilla
// @grant GM.getValue
// @grant GM.setValue
// @run-at document-end
// ==/UserScript==

/* jshint esversion: 8 */ //for async()

function run() {
  var svr=chkEles();
  console.log('server='+svr);
  if (svr=='') {
    return;
  }
//
(async () => {
  var usrname=await GM.getValue('usrname', '');
  var passwd=await GM.getValue('passwd', '');

  if (!usrname || usrname.toString()=='') {
    usrname=prompt('user name', '');
    if (!usrname || usrname.toString()=='') {
      return;
    }
    GM.setValue('usrname', usrname);
  }
  if (!passwd || passwd.toString()=='') {
    passwd=prompt('password', '');
    if (!passwd || passwd.toString()=='') {
      return;
    }
    GM.setValue('passwd', passwd);
  }
  console.log("passwd,usrname="+passwd.toString()+","+usrname.toString());

  switch (svr) {
    case 'gerrit':
      filgerrit(usrname, passwd);
      break;
    case 'jira':
      filjira(usrname, passwd);
      break;
    case 'bugzilla':
      filbz(usrname, passwd);
  }
})();
}

function gerrit_getUsr() {
  return document.getElementById('f_user');
}
function gerrit_getPass() {
  return document.getElementById('f_pass');
}
function gerrit_getBut() {
    return document.getElementById('b_signin');
}
function gerrit_getFrm() {
    return document.getElementById('login_form');
}

function jira_getUsr() {
  return document.getElementById('login-form-username');
}
function jira_getPass() {
  return document.getElementById('login-form-password');
}
function jira_getBut() {
  return document.getElementById('login');
}
function jira_getFrm() {
  return document.getElementById('login-form');
}

function bz_getUsr() {
  return document.getElementById('Bugzilla_login_top');
}
function bz_getPass() {
  return document.getElementById('Bugzilla_password_top');
}
function bz_getBut() {
  return null;
}
function bz_getFrm() {
  return document.getElementById('mini_login_top');
}

function chkEles() {
  var ret='';
  var meta = document.getElementsByTagName("meta");
  if (meta) {
    for (let mt1 of meta) {
      var val = mt1.name;
      if (!val) {
        continue;
      }
      switch (val) {
        case 'application-name':  //JIRA
          val = mt1.content;
          if (!val) {
            break;
          }
          switch (val) {
            case 'JIRA':
              ret='jira';
          }
          break;
        case 'description': //Gerrit
          val = mt1.content;
          if (!val) {
            break;
          }
          switch (val) {
            case 'Gerrit Code Review':
              ret='gerrit';
          }
      }
      if (ret!='') {
        break;
      }
    }
  }
  if (ret=='') {
    if (document.getElementById('gerrit_body')) {
      ret='gerrit';
    } else if (document.getElementById('bugzilla-body')) {
      ret='bugzilla';
    }
  }
  var ele1;
  switch (ret) {
    case 'gerrit':
      if (gerrit_getUsr() && gerrit_getPass() &&
      (gerrit_getBut() || gerrit_getFrm())) {
        ele1=document.getElementById('error_message');
        if (ele1) {
          console.log('gerrit error');
          ret='';
        }
      } else {
        console.log('gerrit missing elements');
        ret='';
      }
      break;
    case 'jira':
      if (jira_getUsr() && jira_getPass() &&
      (jira_getBut() || jira_getFrm())) {
        ele1=document.getElementsByClassName('aui-message error');
        if (ele1 && ele1.length > 0) {
          console.log('jira error');
          ret='';
        }
      } else {
        console.log('jira missing elements');
        ret='';
      }
      break;
    case 'bugzilla':
      if (bz_getUsr() && bz_getPass() &&
      (bz_getBut() || bz_getFrm())) {
      } else {
        console.log('bugzilla missing elements');
        ret='';
      }
  }
  return ret;
}

function filgerrit(usrname, passwd) {
  var ele1=gerrit_getUsr();
  if (ele1) {
    ele1.value = usrname;
    ele1=gerrit_getPass();
    if (ele1) {
      ele1.value = passwd;
      ele1=gerrit_getBut();
      if (ele1) {
        ele1.click();
      } else {
        ele1=gerrit_getFrm();
        if (ele1) {
          ele1.submit();
        }
      }
    }
  }
}

function filjira(usrname, passwd) {
  var ele1=jira_getUsr();
  if (ele1) {
    ele1.value = usrname;
    ele1=jira_getPass();
    if (ele1) {
      ele1.value = passwd;
      ele1=jira_getBut();
      if (ele1) {
        ele1.click();
      } else {
        ele1=jira_getFrm();
        if (ele1) {
          ele1.submit();
        }
      }
    }
  }
}

function filjira(usrname, passwd) {
  var ele1=jira_getUsr();
  if (ele1) {
    ele1.value = usrname;
    ele1=jira_getPass();
    if (ele1) {
      ele1.value = passwd;
      ele1=jira_getBut();
      if (ele1) {
        ele1.click();
      } else {
        ele1=jira_getFrm();
        if (ele1) {
          ele1.submit();
        }
      }
    }
  }
}

function filbz(usrname, passwd) {
  var ele1=bz_getUsr();
  if (ele1) {
    ele1.value = usrname;
    ele1=bz_getPass();
    if (ele1) {
      ele1.value = passwd;
      ele1=bz_getBut();
      if (ele1) {
        ele1.click();
      } else {
        ele1=bz_getFrm();
        if (ele1) {
          ele1.submit();
        }
      }
    }
  }
}

// in case the document is already rendered
if (document.readyState!='loading') run();
// modern browsers
else if (document.addEventListener) document.addEventListener('DOMContentLoaded', run);
// IE <= 8
else document.attachEvent('onreadystatechange', function(){
    if (document.readyState=='complete') run();
});