initial commit
This commit is contained in:
commit
f2f6ddbe9b
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
||||||
|
node_modules
|
105
app.js
Executable file
105
app.js
Executable file
|
@ -0,0 +1,105 @@
|
||||||
|
var url = require('url'),
|
||||||
|
querystring = require('querystring'),
|
||||||
|
http = require('http'),
|
||||||
|
scraper = require('scraper');
|
||||||
|
|
||||||
|
var hotspots = {
|
||||||
|
cartel: {
|
||||||
|
check: function ($) {
|
||||||
|
if ($("title").html().toLowerCase().indexOf("cartel") != -1) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
},
|
||||||
|
credentials: {
|
||||||
|
auth_user: "cartel",
|
||||||
|
auth_pass: "cartel",
|
||||||
|
redirurl: "http://google.com/",
|
||||||
|
accept: "Continue"
|
||||||
|
},
|
||||||
|
postOptions: {
|
||||||
|
path: "/"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
function checkForRedirect () {
|
||||||
|
var checkOptions = {
|
||||||
|
host: "s3.amazonaws.com",
|
||||||
|
path: "/brianshaler/status.json",
|
||||||
|
method: "GET"
|
||||||
|
};
|
||||||
|
http.request(checkOptions, isThisARedirect).on('error', onError).end();
|
||||||
|
}
|
||||||
|
|
||||||
|
function isThisARedirect (res) {
|
||||||
|
if (res.statusCode == 301 || res.statusCode == 302) {
|
||||||
|
console.log("Redirect? HOW SUSPICIOUS.");
|
||||||
|
redirecting(res);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function redirecting (res) {
|
||||||
|
var _url = url.parse(res.headers.location);
|
||||||
|
|
||||||
|
console.log("Scrape: "+res.headers.location);
|
||||||
|
scraper(res.headers.location, function(err, $) {
|
||||||
|
if (err) {throw err}
|
||||||
|
var found = false;
|
||||||
|
for (var k in hotspots) {
|
||||||
|
if (!found && hotspots[k].check($)) {
|
||||||
|
console.log(k.toUpperCase()+" WANTS YOU TO LOG IN");
|
||||||
|
connectToNetwork(hotspots[k].credentials, mergeObjects(_url, hotspots[k].postOptions));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
console.log("Unrecognized login form");
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function connectToNetwork (loginFormData, loginFormOptions) {
|
||||||
|
|
||||||
|
loginFormData = querystring.stringify(loginFormData);
|
||||||
|
|
||||||
|
loginFormOptions.method = "POST",
|
||||||
|
loginFormOptions.headers = {
|
||||||
|
'Content-Type': 'application/x-www-form-urlencoded',
|
||||||
|
'Content-Length': loginFormData.length
|
||||||
|
};
|
||||||
|
|
||||||
|
// Set up the request
|
||||||
|
var post_req = http.request(loginFormOptions, function(res) {
|
||||||
|
res.setEncoding('utf8');
|
||||||
|
res.on('data', function (chunk) {
|
||||||
|
//console.log('Response: ' + chunk);
|
||||||
|
});
|
||||||
|
res.on('error', onError);
|
||||||
|
res.on('close', function () {
|
||||||
|
console.log("Logged in!");
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
post_req.on('error', onError);
|
||||||
|
|
||||||
|
// post the data
|
||||||
|
post_req.write(loginFormData);
|
||||||
|
post_req.end();
|
||||||
|
}
|
||||||
|
|
||||||
|
function onError (e) {
|
||||||
|
console.log(e);
|
||||||
|
}
|
||||||
|
|
||||||
|
function mergeObjects (obj1, obj2) {
|
||||||
|
obj = {};
|
||||||
|
for (k in obj1) {
|
||||||
|
obj[k] = obj1[k];
|
||||||
|
}
|
||||||
|
for (k in obj2) {
|
||||||
|
obj[k] = obj2[k];
|
||||||
|
}
|
||||||
|
return obj;
|
||||||
|
}
|
||||||
|
|
||||||
|
setInterval(checkForRedirect, 10000);
|
||||||
|
checkForRedirect();
|
7
package.json
Normal file
7
package.json
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
{
|
||||||
|
"name": "cartel",
|
||||||
|
"version": "0.0.1",
|
||||||
|
"dependencies" : {
|
||||||
|
"scraper" : "0.0.9"
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user