Skip to content

Instantly share code, notes, and snippets.

@malys
Created May 28, 2018 14:26
Show Gist options
  • Save malys/43d40f3e1e4791780cfd74b87baecf9f to your computer and use it in GitHub Desktop.
Save malys/43d40f3e1e4791780cfd74b87baecf9f to your computer and use it in GitHub Desktop.
[RH-SSO automatic download] automatic download on Redhat Portal#keycloak #rh-sso #download
// npm i -g casperjs
// casperjs.cmd --ssl-protocol=any D:\Developpement\old\autologon\rhsso.js smalnuit %PW% %VERSION% %PATCH% %EXPORT%\t.zip
var fs = require('fs');
var casper = require("casper").create({
verbose: false,
logLevel: "warning",
waitTimeout: 60000,
pageSettings: {
userAgent: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:23.0) Gecko/20130404 Firefox/23.0"
}
});
if (casper.cli.args.length === 0) {
casper
.echo("Usage: $ casperjs index.js 'mypassword'")
.exit(1);
}
const USER = casper.cli.args[0]
const PW = casper.cli.args[1]
const MAJOR_VERSION = casper.cli.args[2]
const VERSION = MAJOR_VERSION + '.' + casper.cli.args[3]
const EXPORT_PATH = casper.cli.args[4]
console.log(USER + " " + MAJOR_VERSION + " " + VERSION)
const PRODUCT = 'Red Hat Single Sign-On %VERSION% '
const DOWNLOAD_LIST = [ 'JavaScript Adapter'] //'Node.js Adapter',
const TYPE = ['distributions', 'patches']
var x = require('casper').selectXPath;
var url = 'https://access.redhat.com/jbossnetwork/restricted/listSoftware.html?product=core.service.rhsso&downloadType=distributions&version=' + MAJOR_VERSION
var result = []
casper.start(url)
.waitForSelector("form#kc-form-login input[name='username']",
function success() {
this.click("form#kc-form-login input[name='username']");
})
.waitForSelector("input[name='username']",
function success() {
this.sendKeys("input[name='username']", USER);
})
.waitForSelector("input[name='password']",
function success() {
this.sendKeys("input[name='password']", PW);
})
.waitForSelector("form#kc-form-login button#_eventId_submit",
function success() {
this.click("form#kc-form-login button#_eventId_submit");
})
.on('resource.received', function (resource) {
if (resource.stage !== 'end') return;
if (resource.url.indexOf('.zip') > -1) {
var t = resource.url.split('/');
var t2 = resource.url.split('-');
console.log("--------------> Download: " + t[t.length - 1] + " " + resource.url)
var output=EXPORT_PATH.replace("%FILE_NAME%",t[t.length - 1])
casper.download(resource.url, output);
result[t2[t2.length - 1]] = t[t.length - 1]
}
})
;
TYPE.forEach(function (typ) {
var version = MAJOR_VERSION + '.0'
if (typ == TYPE[1]) version = VERSION
DOWNLOAD_LIST.forEach(function (down) {
var tl = typ
var lversion = version
var d = PRODUCT.replace("%VERSION%", lversion) + down
var newUrl = 'https://access.redhat.com/jbossnetwork/restricted/listSoftware.html?product=core.service.rhsso&downloadType=' + tl + '&version=' + MAJOR_VERSION
casper.thenOpen(newUrl,
function error(m) {
var ld = d
var lt = newUrl
//console.log("-------------->Error1: " + ld + " " + lt)
},
function _onTimeout() {
var ld = d
var lt = newUrl
console.log("-------------->_onTimeout1: " + ld + " " + lt)
})
.waitForSelector(x("//a[text()[normalize-space() = '" + d + "']]"),
function success() {
var ld = d
this.click(x("//a[text()[normalize-space() = '" + ld + "']]"));
this.waitForSelector(x("//a[text()[normalize-space() = 'Download']]"),
function success() {
this.click(x("//a[text()[normalize-space() = 'Download']]"));
},
function error(m) {
var ld = d
var lt = newUrl
console.log("-------------->Error2: " + ld + " " + lt)
},
function _onTimeout() {
var ld = d
var lt = newUrl
console.log("-------------->_onTimeout2: " + ld + " " + lt)
})
.wait(1000, function () {
console.log(result)
})
;
},
function error(m) {
var ld = d
var lt = newUrl
console.log("-------------->Error3: " + ld + " " + lt)
},
function _onTimeout() {
var ld = d
var lt = newUrl
console.log("-------------->_onTimeout3: " + ld + " " + lt)
})
});
});
casper.run();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment