feat: 优化代码

This commit is contained in:
lyz05
2022-11-09 20:52:12 +08:00
parent 6ac462ae2c
commit 3b3e4e6b46
6 changed files with 29 additions and 42 deletions

1
app.js
View File

@@ -18,6 +18,7 @@ const app = express();
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');
app.set('trust proxy', true)
app.use(logger('dev'));
app.use(express.json());

View File

@@ -6,6 +6,7 @@ const cookie = require('cookie');
const {filesize} = require('filesize');
const moment = require('moment');
const axios = require('axios');
const leancloud = require('../utils/leancloud')
function getscheme(req) {
return req.headers['x-forwarded-proto'] || req.protocol;
@@ -45,6 +46,12 @@ async function updateDatabase() {
// TODO TG代理 日志生成
router.get('/', async function (req, res, next) {
const database = await updateDatabase();
leancloud.add('SubAccess',{
ip: req.ip,
ua: req.headers['user-agent'],
user: req.query.user,
ctype: req.query.ctype
})
if (req.query.user) {
const userinfo = database.user[req.query.user]
if (userinfo) {

View File

@@ -26,6 +26,7 @@ function Tencentvideo() {
}
console.log('vid:', vid)
let res = await axios.get(url);
//TODO 腾讯视频标题获取
const $ = whacko.load(res.data, null, false);
this.title = $("title")[0].children[0].data;
try {

View File

@@ -10,14 +10,7 @@ function getscheme(req) {
return req.headers['x-forwarded-proto'] || req.protocol;
}
function getClientIp(req) {
return req.headers['x-forwarded-for'] ||
req.connection.remoteAddress ||
req.socket.remoteAddress ||
req.connection.socket.remoteAddress;
}
async function build_response(url,req) {
async function build_response(url, req) {
try {
await axios.get(url)
} catch (e) {
@@ -38,7 +31,9 @@ async function build_response(url,req) {
ret = await fc.work(url)
} catch (e) {
console.log(e)
leancloud.danmakuErrorAdd({ip: getClientIp(req), url: url, err: e})
let err = JSON.stringify(e, Object.getOwnPropertyNames(e))
err = JSON.parse(err)
leancloud.add('DanmakuError', {ip: req.ip, url, err})
return {msg: '弹幕解析过程中程序报错退出,请等待管理员修复!或者换条链接试试!'}
}
return ret
@@ -46,7 +41,7 @@ async function build_response(url,req) {
/* GET home page. */
router.get('/', async function (req, res, next) {
leancloud.danmakuAccessAdd({ip: getClientIp(req), url: req.query.url, ua: req.headers['user-agent']})
leancloud.add('DanmakuAccess', {remoteIP: req.ip, url: req.query.url, UA: req.headers['user-agent']})
//检查是否包含URL参数
if (!req.query.url) {
const urls = [mgtv.example_urls[0], bilibili.example_urls[0], tencentvideo.example_urls[0], youku.example_urls[0], iqiyi.example_urls[0]];
@@ -55,7 +50,7 @@ router.get('/', async function (req, res, next) {
} else {
const url = req.query.url;
const download = (req.query.download === 'on');
const ret = await build_response(url,req)
const ret = await build_response(url, req)
memory() //显示内存使用量
if (ret.msg !== 'ok') {
res.status(403).send(ret.msg)

View File

@@ -4,16 +4,9 @@ const libqqwry = require('lib-qqwry');
const dns = require('dns');
const qqwry = libqqwry(); //初始化IP库解析器
function getClientIp(req) {
return req.headers['x-forwarded-for'] ||
req.connection.remoteAddress ||
req.socket.remoteAddress ||
req.connection.socket.remoteAddress;
}
/* GET home page. */
router.get('/', function (req, res, next) {
let ip = req.query.name || getClientIp(req);
let ip = req.query.name || req.ip;
dns.lookup(ip, (err, address, family) => {
let ipL;
if (err) {

View File

@@ -9,17 +9,6 @@ AV.init({
serverURL: "https://dbvunek8.lc-cn-e1-shared.com"
});
function danmakuAccessAdd(obj) {
const {ip, url, ua} = obj;
const DanmakuAccessObject = AV.Object.extend('DanmakuAccess');
const record = new DanmakuAccessObject();
record.set('remoteIP', ip);
record.set('url', url);
record.set('UA', ua);
record.save().then()
}
function currentDay() {
const date = new Date();
const start = new Date(date.setHours(0, 0, 0, 0))
@@ -50,20 +39,21 @@ async function danmakuQuery(date) {
return await query.count()
}
function danmakuErrorAdd(obj) {
let {ip, url, err} = obj;
const DanmakuErrorObject = AV.Object.extend('DanmakuError');
const record = new DanmakuErrorObject();
record.set('remoteIP', ip);
record.set('url', url);
//TODO: 转换成object
err = JSON.stringify(err, Object.getOwnPropertyNames(err))
err = JSON.parse(err)
record.set('err', err);
record.save().then()
//TODO 订阅access.log
function add(className,obj) {
const classInstance = AV.Object.extend(className);
const record = new classInstance();
for (const key of Object.keys(obj)){
record.set(key, obj[key]);
}
record.save().then((obj) => {
// 成功保存之后,执行其他逻辑
console.log(`${className}添加一条记录。objectId${obj.id}`);
});
}
module.exports = {danmakuAccessAdd, danmakuQuery, currentDay, currentMonth, lastDay, danmakuErrorAdd};
module.exports = {danmakuQuery, currentDay, currentMonth, lastDay, add};
if (!module.parent) {
}