-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.js
185 lines (169 loc) · 27.4 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
"use strict";
/**
* Author: Giftina: https://github.com/Giftia/
* Lapelo,一个简单的随机图片服务端,随机返回一张程序所在目录下的图片,可用于在线随机壁纸服务。
* 本程序基于 MIT 协议开源,欢迎 Fork 和 Star
* Version: 0.0.1
*/
/**
* 本地日志配置
*/
const winston = require("winston");
const { format, transports } = require("winston");
const { printf } = format;
const colors = require("colors");
colors.setTheme({
alert: "inverse",
warn: "brightYellow",
error: "brightRed",
log: "brightGreen",
});
const myFormat = printf(({ level, message, timestamp }) => {
return `[${level}] [${timestamp}]: ${message}`;
});
// winston 日志配置
const LOG_LEVELS = {
levels: {
error: 0,
warn: 1,
info: 2,
http: 3,
verbose: 4,
debug: 5,
silly: 6,
},
colors: {
error: "red",
warn: "brightYellow",
info: "brightGreen",
http: "green",
verbose: "blue",
debug: "gray",
silly: "gray",
},
};
winston.addColors(LOG_LEVELS.colors);
const logger = winston.createLogger({
levels: LOG_LEVELS.levels,
format: winston.format.combine(
format.timestamp({ format: "YYYY-MM-DD HH:mm:ss.SSS" }),
format.errors({ stack: true }),
format.json(),
),
transports: [
new transports.Console({
format: winston.format.combine(winston.format.colorize(), myFormat),
}),
new transports.Http({
level: "warn",
}),
new winston.transports.File({
filename: "error.log",
level: "error",
}),
new winston.transports.File({
filename: "combined.log",
}),
],
});
console.log("\n一个简单的随机图片服务端,随机返回一张程序所在目录下的图片,可用于在线随机壁纸服务。\n".alert);
const fs = require("fs");
const express = require("express");
const compression = require("compression"); // 用于gzip压缩
const app = express();
app.use(compression()); // 对express所有路由启用gzip
const randomFile = require("select-random-file");
const path = require("path");
const imgFolder = "./";
const yaml = require("yaml");
const codeDesc = { "THE_BEAST": "img标签", 777: "原图" };
const yamlDesc = `# 图片返回模式:
# THE_BEAST - 返回base64后的img标签
# 777 - 返回图片本体
# 114514 - 返回json格式的地址
`;
// 错误捕获
process.on("uncaughtException", (err) => {
logger.error(err);
});
process.on("unhandledRejection", (err) => {
logger.error(err);
});
// 读取配置
let config = { code: 777, port: 23333 };
let settings;
if (!fs.existsSync("./config.yml")) {
logger.warn("没有找到配置文件,正在创建\n".warn);
// 生成默认配置文件,并在头部写入注释 yamlDesc
fs.writeFileSync("./config.yml", yaml.stringify(config));
const data = fs.readFileSync("./config.yml");
fs.writeFileSync("./config.yml", yamlDesc + data);
}
settings = yaml.parse(fs.readFileSync("./config.yml", "utf8"));
if (!Object.keys(codeDesc).includes(settings?.code.toString())) {
logger.warn(`配置文件中的 code 参数配置错误, code 只能是 ${Object.keys(codeDesc).join(" 或 ")} ,回落默认配置 777(${codeDesc[777]})\n`.warn);
} else {
config.code = settings.code;
};
if (!Number.isInteger(settings?.port) || settings?.port < 0 || settings?.port > 65535) {
logger.warn("配置文件中的 port 参数配置错误, port 只能是 0-65535 之间的整数,回落默认配置 23333\n".warn);
} else {
config.port = settings.port;
};
// 随机选择一张图片
let loopTimes = 0;
async function RandomLocalPicture() {
return new Promise((resolve, reject) => {
randomFile(imgFolder, async (err, file) => {
// 如果不是图片,则递归,重复最多100次
if (!file.match(/\.(jpg|jpeg|png|gif|bmp|webp|jfif)$/)) {
loopTimes++;
if (loopTimes >= 100) {
logger.info("这个文件夹中没有找到图片,或者是图片太少了,找不到图片,请更换文件夹试试");
resolve("");
return;
}
resolve(await RandomLocalPicture());
}
loopTimes = 0;
resolve(file);
});
});
}
// 返回base64后的img标签,如果没有找到图片,返回 base64NotFoundImg
async function getRandomBase64Img() {
const base64Img = await RandomLocalPicture()
.then((file) => {
if (!file) {
return base64NotFoundImg;
}
return `data:image/png;base64,${Buffer.from(fs.readFileSync
(imgFolder + file)).toString("base64")}`;
});
return base64Img;
}
app.get("/", async (req, res) => {
logger.info(`用户 ${req.ip.split("::ffff:")[1]} 请求图片`.log);
if (config.code === "THE_BEAST") {
res.send(`<img src="${await getRandomBase64Img()}" />`);
} else if (config.code === 777) {
const file = await RandomLocalPicture();
if (!file) {
res.send(`<img src="${base64NotFoundImg}" />`);
} else {
res.sendFile(path.join(process.cwd(), file));
}
} else {
res.send();
}
});
// 404
app.use((req, res) => {
res.status(404).redirect("/");
});
// 启动服务
app.listen(config.port, () => {
logger.info(`随机图片服务端启动于本机端口 ${config.port},图片返回模式为 ${config.code}(${codeDesc[config.code]})\n`.log);
});
// 借下阿b的404图:https://static.hdslb.com/error/very_sorry.png
const base64NotFoundImg = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA9QAAADTCAYAAABgOVuhAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA4ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTM4IDc5LjE1OTgyNCwgMjAxNi8wOS8xNC0wMTowOTowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo4YjAxNzYxYy1hY2VkLWJhNGItOTZkZC03OTVhODc5NWU0YTEiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6REZEM0NBQ0JGQjA3MTFFNjkzNERDRDc0N0NFOURDNzQiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6REZEM0NBQ0FGQjA3MTFFNjkzNERDRDc0N0NFOURDNzQiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTcgKE1hY2ludG9zaCkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDphODljZjc3NC0yOTRhLTQ0NDMtOWQ0Mi0wMDA5YjhlMDJmOGYiIHN0UmVmOmRvY3VtZW50SUQ9ImFkb2JlOmRvY2lkOnBob3Rvc2hvcDoyYTQwN2NiZS00MzVlLTExN2EtYjc4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";