Name
global.CredentialTestAjax
Description
Handles ajax requests for credential testing.
Script
var CredentialTestAjax = Class.create();
CredentialTestAjax.prototype = Object.extendsObject(AbstractAjaxProcessor, {
ajaxFunction_testCredential: function() {
var credential_data = this._decryptCredentialData(this.getParameter('sysparm_credential_data'));
var target = this.getParameter('sysparm_target');
var port = this.getParameter('sysparm_port');
var agent = this.getParameter('sysparm_agent');
var agent_sysId = this.getParameter('sysparm_agent_sysId');
session.getUser().setPreference('test_credential.target', target);
session.getUser().setPreference('test_credential.midserver_name', agent);
session.getUser().setPreference('test_credential.midserver_sysId', agent_sysId);
return SNC.CredentialTest.test(credential_data, target, port, agent);
},
ajaxFunction_testCredentialJdbc: function() {
var credential_data = this._decryptCredentialData(this.getParameter('sysparm_credential_data'));
var credential_id = this.getParameter('sysparm_credential_id');
var target = this.getParameter('sysparm_target');
var port = this.getParameter('sysparm_port');
var agent = this.getParameter('sysparm_agent');
var agent_sysId = this.getParameter('sysparm_agent_sysId');
var db_type = this.getParameter('sysparm_db_type');
var db_name = this.getParameter('sysparm_db_name');
var connection_url = this.getParameter('sysparm_connection_url');
var jdbc_driver = this.getParameter('sysparm_jdbc_driver');
var use_integrated_authentication = this.getParameter('sysparm_use_integrated_authentication');
if (!gs.nil(credential_id))
credential_data = this._getCredentialData(credential_id);
if (db_type == 'MSSQL' && use_integrated_authentication == "true")
credential_data = this._getIntegratedAuthCredentialData("jdbc");
session.getUser().setPreference('test_credential.target', target);
session.getUser().setPreference('test_credential.midserver_name', agent);
session.getUser().setPreference('test_credential.midserver_sysId', agent_sysId);
if (!db_type)
return SNC.CredentialTest.testCustomDBConnection(credential_data, target, port, agent, connection_url, jdbc_driver);
else
return SNC.CredentialTest.testJdbc(credential_data, target, port, agent, db_type, db_name);
},
ajaxFunction_testCredentialJms: function() {
var credential_data = this._decryptCredentialData(this.getParameter('sysparm_credential_data'));
var credential_id = this.getParameter('sysparm_credential_id');
var target = this.getParameter('sysparm_target');
var port = this.getParameter('sysparm_port');
var agent = this.getParameter('sysparm_agent');
var agent_sysId = this.getParameter('sysparm_agent_sysId');
var initial_context_factory = this.getParameter('sysparm_initial_context_factory');
if (!gs.nil(credential_id))
credential_data = this._getCredentialData(credential_id);
session.getUser().setPreference('test_credential.target', target);
session.getUser().setPreference('test_credential.midserver_name', agent);
session.getUser().setPreference('test_credential.midserver_sysId', agent_sysId);
return SNC.CredentialTest.testJms(credential_data, target, port, agent, initial_context_factory);
},
ajaxFunction_testCredentialAws: function() {
var credential_id = this.getParameter('sysparm_credential_id');
return new AWSCredentialTest(credential_id).run();
},
ajaxFunction_parseCredentialTestResult: function() {
var ecc_sys_id = this.getParameter('sysparm_ecc_sys_id');
var gr = new GlideRecord('ecc_queue');
if (ecc_sys_id)
gr.get('sys_id', ecc_sys_id);
var parser = new CredentialTestParser(gr.payload);
return parser.getResult();
},
ajaxFunction_checkProgress: function() {
var agent = this.getParameter('sysparm_agent');
if (JSUtil.notNil(agent)) {
// If MID Server is down, bail
var mid = MIDServer.getByName(agent);
if (!mid)
return GlideStringUtil.escapeHTML("error:Could not find MID Server: " + agent);
if (mid.status !== "Up")
return GlideStringUtil.escapeHTML("error:MID Server: " + agent + " is not up");
if (!JSUtil.toBoolean(mid.validated))
return GlideStringUtil.escapeHTML("error:MID Server: " + agent + " is not validated");
}
var ecc_sys_id = this.getParameter('sysparm_ecc_sys_id');
var ecc_gr = new GlideRecord('ecc_queue');
ecc_gr.addQuery('response_to', ecc_sys_id);
ecc_gr.query();
if (!ecc_gr.next())
return "processing";
return ecc_gr.sys_id;
},
_getCredentialData: function(credSysId){
var provider = new sn_cc.StandardCredentialsProvider();
var credential = provider.getCredentialByID(credSysId);
if (gs.nil(credential))
return "";
var credentialData = {};
credentialData["user_name"] = credential.getAttribute("user_name");
credentialData["password"] = credential.getAttribute("password");
credentialData["type"] = credential.getAttribute("type");
return JSON.stringify(credentialData);
},
_decryptCredentialData: function(credentialData) {
var encrypter = new GlideEncrypter();
var decCredDataObj = {};
var encCredDataObj = JSON.parse(credentialData);
for (var key in encCredDataObj) {
if (!encCredDataObj.hasOwnProperty(key))
continue;
var keyObj = encCredDataObj[key];
if (!keyObj || !keyObj.value)
continue;
if (keyObj.decrypt)
decCredDataObj[key] = encrypter.decrypt(keyObj.value);
else
decCredDataObj[key] = keyObj.value;
}
return JSON.stringify(decCredDataObj);
},
_getIntegratedAuthCredentialData: function(credType) {
var credentialData = {};
credentialData["type"] = credType;
credentialData["use_integrated_authentication"] = true;
return JSON.stringify(credentialData);
},
type: 'CredentialTestAjax'
});
Sys ID
1ae51c07c3230200d8d4bea192d3aedf