This commit is contained in:
Karl 2021-09-23 13:54:01 +00:00
parent d4a025fadd
commit bd5e0fd4f8
5 changed files with 164 additions and 88 deletions

View File

@ -2,18 +2,24 @@ const { getStreamsNew } = require('../routes/getStreams')
const { updateStreamData } = require('./updateStreams')
const { gotRequest } = require('./gotRequest')
const { decryptPassword } = require('./password')
const { getAllUserAccounts, getUserAccountsCheck } = require('./getUser')
const { setExpired } = require('./setExpired')
const { removeAccountFromDB, storeAccountToDB } = require('../lib/Accounts')
const axios = require('axios')
axios.defaults.timeout = 10000;
const { wrapper } = require('axios-cookiejar-support')
// import { wrapper } from 'axios-cookiejar-support';
const { CookieJar } = require('tough-cookie')
// import { CookieJar } from 'tough-cookie';
const jar = new CookieJar();
const client = wrapper(axios.create({ jar }));
// axios.defaults.timeout = 5000;
const delay = ms => new Promise(res => setTimeout(res, ms));
@ -101,63 +107,95 @@ async function userCheck(accountData) {
await Promise.all(urlList.map(async (url) => {
try {
const response = await axios.get(url)
// console.log(url)
const response = await axios({
method: 'GET',
headers: {
'Content-Type': 'application/json',
'User-Agent': 'PostmanRuntime/7.28.4',
'Accept': '*/*'
},
url: url,
})
console.log(url)
if (response.status == 200 && response.data !== "") {
try {
let data = response.data
if (data.user_info.auth) {
console.log(url)
updateAccounts(userAccounts, data, url)
return true
} else {
return true
return false
}
} catch (error) {
// return true
console.log(error)
return false
}
} else {
return true
return false
}
} catch {
// return true
} catch (error) {
console.log(error)
return false
}
}))
return true
})).then((values) => {
console.log(values)
if (values.includes(true)) {
let count = values.filter(function (value) {
return value === true;
}).length
let count2 = values.filter(function (value) {
return value === false;
}).length
console.log('true ' + count)
console.log('fail ' + count2)
t = count + count2
console.log(t)
endresponse = true
} else {
console.log('true ' + count)
console.log('fail ' + count2)
t = count + count2
console.log(t)
endresponse = false
}
});
return endresponse
}
async function newCheck() {
streamURLS = await getStreamsNew()
let userAccounts = await getAllUserAccounts()
userAccounts = userAccounts.map(async user => {
user.passwordDecryped = decryptPassword(user.password)
return user
})
for (let userAccount of userAccounts) {
if (userAccount.expiaryDate != 123 && Math.round(Date.now() / 1000) > userAccount.expiaryDate) {
setExpired(userAccount)
} else {
for (let streamURL of streamURLS) {
process.stdout.write('.')
let url = await buildURL(streamURL, userAccount.username, userAccount.passwordDecryped)
let t = await gotRequest(url)
let body = t.body
if (t.statusCode == 200 && body !== "") {
try {
body = JSON.parse(body)
if (body.user_info.auth) {
var date = new Date(body.user_info.exp_date * 1000).toLocaleDateString(undefined, { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' })
// process.stdout.write('\n')
console.log(`${userAccount.username} - ${userAccount.stream} - ${streamURL} - Expires ${date}.`)
await updateStreamData(userAccount, streamURL, body.user_info.exp_date)
break
}
} catch (error) {
}
}
}
}
}
}
// async function newCheck() {
// streamURLS = await getStreamsNew()
// let userAccounts = await getAllUserAccounts()
// userAccounts = userAccounts.map(async user => {
// user.passwordDecryped = decryptPassword(user.password)
// return user
// })
// for (let userAccount of userAccounts) {
// if (userAccount.expiaryDate != 123 && Math.round(Date.now() / 1000) > userAccount.expiaryDate) {
// setExpired(userAccount)
// } else {
// for (let streamURL of streamURLS) {
// process.stdout.write('.')
// let url = await buildURL(streamURL, userAccount.username, userAccount.passwordDecryped)
// let t = await gotRequest(url)
// let body = t.body
// if (t.statusCode == 200 && body !== "") {
// try {
// body = JSON.parse(body)
// if (body.user_info.auth) {
// var date = new Date(body.user_info.exp_date * 1000).toLocaleDateString(undefined, { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' })
// // process.stdout.write('\n')
// console.log(`${userAccount.username} - ${userAccount.stream} - ${streamURL} - Expires ${date}.`)
// await updateStreamData(userAccount, streamURL, body.user_info.exp_date)
// break
// }
// } catch (error) {
// }
// }
// }
// }
// }
// }
// async function updateAccountDNS(userAccount, streamURLS) {
@ -214,39 +252,39 @@ async function newCheck() {
async function singleCheck(accountData) {
streamURLS = await getStreamsNew()
let userAccounts = await getUserAccountsCheck(accountData.userId)
userAccounts = userAccounts.map(user => {
user.userId = accountData.userId
user.passwordDecryped = decryptPassword(user.password)
return user
})
userAccounts = userAccounts.filter(obj => {
return obj.username === accountData.username && obj.passwordDecryped === accountData.password && obj.stream === accountData.stream
})
// async function singleCheck(accountData) {
// streamURLS = await getStreamsNew()
// let userAccounts = await getUserAccountsCheck(accountData.userId)
// userAccounts = userAccounts.map(user => {
// user.userId = accountData.userId
// user.passwordDecryped = decryptPassword(user.password)
// return user
// })
// userAccounts = userAccounts.filter(obj => {
// return obj.username === accountData.username && obj.passwordDecryped === accountData.password && obj.stream === accountData.stream
// })
try {
for (let i = 0; i < userAccounts.length; ++i) {
const userAccount = userAccounts[i];
if (userAccount.expiaryDate != 123 && Math.round(Date.now() / 1000) > userAccount.expiaryDate) {
setExpired(userAccount)
} else {
await updateAccounts(userAccount, streamURLS)
}
}
console.log(Date.now())
return true
} catch (userAccount) {
console.log('notfoundincatch')
// console.error(error);
removeAccountFromDB({
"user": userAccount.username,
"stream": userAccount.stream,
"userId": accountData.userId
})
}
}
// try {
// for (let i = 0; i < userAccounts.length; ++i) {
// const userAccount = userAccounts[i];
// if (userAccount.expiaryDate != 123 && Math.round(Date.now() / 1000) > userAccount.expiaryDate) {
// setExpired(userAccount)
// } else {
// await updateAccounts(userAccount, streamURLS)
// }
// }
// console.log(Date.now())
// return true
// } catch (userAccount) {
// console.log('notfoundincatch')
// // console.error(error);
// removeAccountFromDB({
// "user": userAccount.username,
// "stream": userAccount.stream,
// "userId": accountData.userId
// })
// }
// }
async function singleAccountCheck(accountData) {
@ -292,8 +330,6 @@ async function singleAccountCheck(accountData) {
module.exports = {
newCheck,
singleCheck,
userCheck,
singleAccountCheck
}

49
package-lock.json generated
View File

@ -183,6 +183,14 @@
"follow-redirects": "^1.14.0"
}
},
"axios-cookiejar-support": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/axios-cookiejar-support/-/axios-cookiejar-support-2.0.0.tgz",
"integrity": "sha512-z3q8j0h051jkLtNRohfAXBTtFEMxWDTTADy8sb4cRl2g0Zmk1/613ioorV132FiSSIHjj3XQnG66ow77qHCrDg==",
"requires": {
"http-cookie-agent": "^1.0.0"
}
},
"babel-runtime": {
"version": "6.26.0",
"resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz",
@ -374,6 +382,11 @@
"resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
"integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA=="
},
"cookie": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz",
"integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA=="
},
"cookie-signature": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
@ -714,6 +727,15 @@
"resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz",
"integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ=="
},
"http-cookie-agent": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/http-cookie-agent/-/http-cookie-agent-1.0.1.tgz",
"integrity": "sha512-gde0TzbcynnVRYG38YKBOzJTIZat97FLBJCETHVhwBDe9A5WJS5iKwnHqj3Z+EerRwdADd05ukAT4JBt7XV4BA==",
"requires": {
"agent-base": "^6.0.2",
"cookie": "^0.4.1"
}
},
"http-errors": {
"version": "1.6.3",
"resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz",
@ -1170,6 +1192,17 @@
"tough-cookie": "~2.5.0",
"tunnel-agent": "^0.6.0",
"uuid": "^3.3.2"
},
"dependencies": {
"tough-cookie": {
"version": "2.5.0",
"resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz",
"integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==",
"requires": {
"psl": "^1.1.28",
"punycode": "^2.1.1"
}
}
}
},
"resolve-alpn": {
@ -1359,12 +1392,13 @@
}
},
"tough-cookie": {
"version": "2.5.0",
"resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz",
"integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==",
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz",
"integrity": "sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==",
"requires": {
"psl": "^1.1.28",
"punycode": "^2.1.1"
"psl": "^1.1.33",
"punycode": "^2.1.1",
"universalify": "^0.1.2"
}
},
"tunnel-agent": {
@ -1394,6 +1428,11 @@
"resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
"integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c="
},
"universalify": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
"integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg=="
},
"unpipe": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",

View File

@ -7,6 +7,7 @@
},
"dependencies": {
"axios": "^0.21.4",
"axios-cookiejar-support": "^2.0.0",
"bcrypt": "^5.0.0",
"cryptr": "^6.0.2",
"express": "~4.16.1",
@ -14,6 +15,7 @@
"got": "^11.8.1",
"http-errors": "~1.6.3",
"request": "^2.88.2",
"sync-mysql": "^3.0.1"
"sync-mysql": "^3.0.1",
"tough-cookie": "^4.0.0"
}
}

View File

@ -1,7 +1,7 @@
var express = require('express');
var router = express.Router();
const { removeAccountFromDB} = require('../lib/Accounts')
const { removeAccountFromDB } = require('../lib/Accounts')
const { getUserId } = require('../lib/getUser')
@ -13,7 +13,7 @@ router.post('/', async function (req, res, next) {
let result = await removeAccountFromDB(postData)
console.log(result)
if (result.affectedRows < 1) {
res.send('Adding account failed')
res.sendStatus(500)
} else {
res.send('Account ' + postData.username + ' Deleted from ' + userName)
}

View File

@ -1,7 +1,6 @@
var express = require('express');
var router = express.Router();
const { storeAccountToDB } = require('../lib/Accounts')
const { getUserId } = require('../lib/getUser')
const { userCheck } = require('../lib/checker')