mirror of
https://github.com/danbulant/bakalari.js
synced 2026-06-20 23:21:15 +00:00
Nahrání API
This commit is contained in:
parent
6474444d53
commit
e91f911d9c
1 changed files with 77 additions and 0 deletions
77
index.js
Normal file
77
index.js
Normal file
|
|
@ -0,0 +1,77 @@
|
|||
const got = require("got");
|
||||
const parser = require('fast-xml-parser');
|
||||
const crypto = require("crypto");
|
||||
|
||||
class Api {
|
||||
name = "";
|
||||
pswd = "";
|
||||
salt = "";
|
||||
token = null;
|
||||
domain = "";
|
||||
|
||||
genToken() {
|
||||
const shasum = crypto.createHash("sha512");
|
||||
const shasum2 = crypto.createHash("sha512");
|
||||
shasum2.update(this.salt + this.pswd, "utf-8");
|
||||
var hashedPassword = shasum2.digest("base64");
|
||||
|
||||
function dateToYMD(date) { //https://stackoverflow.com/a/43365158
|
||||
var d = date.getDate();
|
||||
var m = date.getMonth() + 1; //Month from 0 to 11
|
||||
var y = date.getFullYear();
|
||||
return '' + y + '' + (m <= 9 ? '0' + m : m) + '' + (d <= 9 ? '0' + d : d);
|
||||
}
|
||||
|
||||
var tokenString = "*login*";
|
||||
tokenString += this.name;
|
||||
tokenString += "*pwd*";
|
||||
tokenString += hashedPassword;
|
||||
tokenString += "*sgn*ANDR";
|
||||
tokenString += dateToYMD(new Date());
|
||||
|
||||
shasum.update(tokenString, "utf-8");
|
||||
var token = shasum.digest("base64");
|
||||
token = token.replace(/[\\|\/]/gi, "_")
|
||||
.replace(/\+/gi, "-");
|
||||
|
||||
this.token = token;
|
||||
}
|
||||
|
||||
setName(name){
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
async verifyName(){
|
||||
var res = await got(`https://${this.domain}/login.aspx?gethx=${this.name}`);
|
||||
try {
|
||||
var r = parser.parse(res.body);
|
||||
if(r.results.res == 1)return r.results;
|
||||
} catch(e){
|
||||
console.error(e);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
async genSalt(){
|
||||
var res = await this.verifyName();
|
||||
if(!res) return false;
|
||||
|
||||
this.salt = res.salt + res.ikod + res.typ;
|
||||
return true;
|
||||
}
|
||||
|
||||
setPassword(pswd){
|
||||
this.pswd = pswd;
|
||||
}
|
||||
|
||||
setDomain(dom){
|
||||
this.domain = dom;
|
||||
}
|
||||
|
||||
async request(pm){
|
||||
var res = await got(`https://${this.domain}/login.aspx?hx=${this.token}&pm=${pm}`);
|
||||
return parser.parse(res.body);
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = Api;
|
||||
Loading…
Reference in a new issue