Created
May 28, 2018 14:26
-
-
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
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// 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