1
1
require ( "dotenv" ) . config ( ) ;
2
- const VERSION = "1.4.4 " ;
2
+ const VERSION = "1.4.5 " ;
3
3
4
4
const express = require ( "express" ) ;
5
5
const schedule = require ( "node-schedule" ) ;
6
6
const ChildProcess = require ( "child_process" ) ;
7
7
const fs = require ( "fs" ) ;
8
- const app = express ( ) ;
9
8
const dayjs = require ( "dayjs" ) ;
10
9
const crypto = require ( "node:crypto" ) ;
11
10
const bodyParser = require ( "body-parser" ) ;
@@ -97,23 +96,6 @@ else hbwgConfig.header = "x-forwarded-for";
97
96
// 定时
98
97
const rule = new schedule . RecurrenceRule ( ) ;
99
98
100
- // 允许跨域
101
- app . all ( "*" , function ( req , res , next ) {
102
- res . header ( "Access-Control-Allow-Origin" , "*" ) ;
103
- res . header (
104
- "Access-Control-Allow-Headers" ,
105
- "Content-Type,Content-Length, Authorization, Accept,X-Requested-With"
106
- ) ;
107
- res . header ( "Access-Control-Allow-Methods" , "PUT,POST,GET,DELETE,OPTIONS" ) ;
108
- res . header ( "Access-Control-Allow-Credentials" , "true" ) ;
109
- if ( req . method === "OPTIONS" ) res . send ( 200 ) ;
110
- else next ( ) ;
111
- } ) ;
112
-
113
- // allow read message from post
114
- app . use ( bodyParser . urlencoded ( { extended : false } ) ) ;
115
- app . use ( bodyParser . json ( ) ) ;
116
-
117
99
// Derived function
118
100
module . exports = {
119
101
getback,
@@ -181,21 +163,6 @@ else
181
163
hbwgConfig . packageurl =
182
164
"https://registry.npmjs.com/hestudio-bingwallpaper-get/latest" ;
183
165
184
- if ( hbwgConfig . getupdate !== false ) {
185
- const requestOptions = {
186
- method : "GET" ,
187
- redirect : "follow" ,
188
- } ;
189
- function AfterGetVersion ( src ) {
190
- hbwgConfig . version = src . version ;
191
- if ( hbwgConfig . version !== VERSION )
192
- logwarn ( `New Version! ${ hbwgConfig . version } is ready.` ) ;
193
- }
194
- fetch ( hbwgConfig . packageurl , requestOptions )
195
- . then ( ( response ) => response . json ( ) )
196
- . then ( ( result ) => AfterGetVersion ( result ) ) ;
197
- }
198
-
199
166
if (
200
167
typeof hbwgConfig . external === "object" &&
201
168
hbwgConfig . external . refreshtime
@@ -217,70 +184,63 @@ if (
217
184
hbwgConfig . refreshtask = hbwgConfig . external . refreshtask ;
218
185
}
219
186
220
- const cacheimg = async ( ) => {
221
- /**
222
- *
223
- * @param {object } bingsrc
224
- */
225
- const download = async ( bingsrc ) => {
226
- hbwgConfig . bingsrc = bingsrc ;
227
- const url = hbwgConfig . host + bingsrc . images [ 0 ] . url ;
228
- await fetch ( url , {
229
- method : "GET" ,
230
- } ) . then ( async ( response ) => {
231
- await response . arrayBuffer ( ) . then ( async ( buffer ) => {
232
- await ( hbwgConfig . image = Buffer . from ( buffer ) ) ;
233
- } ) ;
234
- } ) ;
235
- hbwgConfig . copyright = String ( bingsrc . images [ 0 ] . copyright ) ;
236
- hbwgConfig . copyrightlink = String ( bingsrc . images [ 0 ] . copyrightlink ) ;
237
- hbwgConfig . title = String ( bingsrc . images [ 0 ] . title ) ;
238
- if ( typeof hbwgConfig . refreshtask === "function" ) {
187
+ function cacheimg ( ) {
188
+ if ( typeof hbwgConfig . refreshtask === "function" ) {
189
+ try {
239
190
logwarn ( "task is running..." ) ;
240
191
hbwgConfig . refreshtask ( ) ;
241
192
logwarn ( "task is finish." ) ;
193
+ } catch ( e ) {
194
+ logerr ( `refreshtask: ${ e } ` ) ;
242
195
}
243
- await logback ( "Refresh Successfully!" ) ;
244
- } ;
245
- const requestOptions = {
246
- method : "GET" ,
247
- redirect : "follow" ,
248
- } ;
249
- await fetch ( hbwgConfig . api , requestOptions )
250
- . then ( ( response ) => response . json ( ) )
251
- . then ( ( result ) => download ( result ) ) ;
252
- } ;
253
-
254
- // eslint-disable-next-line no-unused-vars
255
- const job = schedule . scheduleJob ( rule , async function ( ) {
196
+ }
256
197
if ( hbwgConfig . getupdate !== false ) {
257
198
const requestOptions = {
258
199
method : "GET" ,
259
200
redirect : "follow" ,
260
201
} ;
261
202
function AfterGetVersion ( src ) {
262
203
hbwgConfig . version = src . version ;
263
- if ( hbwgConfig . version !== VERSION ) {
204
+ if ( hbwgConfig . version !== VERSION )
264
205
logwarn ( `New Version! ${ hbwgConfig . version } is ready.` ) ;
265
- }
266
206
}
267
207
fetch ( hbwgConfig . packageurl , requestOptions )
268
208
. then ( ( response ) => response . json ( ) )
269
- . then ( ( result ) => AfterGetVersion ( result ) ) ;
209
+ . then ( ( result ) => AfterGetVersion ( result ) )
210
+ . catch ( ( error ) => logerr ( `getupdate: ${ error } ` ) ) ;
270
211
}
271
- cacheimg ( ) ;
272
- } ) ;
212
+ fetch ( hbwgConfig . api , {
213
+ method : "GET" ,
214
+ redirect : "follow" ,
215
+ } )
216
+ . then ( ( response ) => response . json ( ) )
217
+ . then ( ( result ) => {
218
+ hbwgConfig . bingsrc = result ;
219
+ const url = hbwgConfig . host + result . images [ 0 ] . url ;
220
+ fetch ( url , {
221
+ method : "GET" ,
222
+ } )
223
+ . then ( ( response ) => {
224
+ response . arrayBuffer ( ) . then ( async ( buffer ) => {
225
+ await ( hbwgConfig . image = Buffer . from ( buffer ) ) ;
226
+ } ) ;
227
+ } )
228
+ . catch ( ( error ) => logerr ( `api.getimage: ${ error } ` ) ) ;
229
+ hbwgConfig . copyright = String ( result . images [ 0 ] . copyright ) ;
230
+ hbwgConfig . copyrightlink = String ( result . images [ 0 ] . copyrightlink ) ;
231
+ hbwgConfig . title = String ( result . images [ 0 ] . title ) ;
232
+ } )
233
+ . catch ( ( error ) => logerr ( `source.bingsrc: ${ error } ` ) ) ;
234
+
235
+ logback ( "Refresh Successfully!" ) ;
236
+ }
273
237
274
238
cacheimg ( ) ;
275
239
276
- // Load configuration file
277
- if (
278
- typeof hbwgConfig . external === "object" &&
279
- hbwgConfig . external . beforestart
280
- ) {
281
- logback ( "Initialization configuration has been imported." ) ;
282
- hbwgConfig . external . beforestart ( app , getback , postback , logback , logerr ) ;
283
- }
240
+ // eslint-disable-next-line no-unused-vars
241
+ const job = schedule . scheduleJob ( rule , async function ( ) {
242
+ cacheimg ( ) ;
243
+ } ) ;
284
244
285
245
// api default configuration
286
246
hbwgConfig . apiconfig = {
@@ -351,14 +311,6 @@ if (
351
311
hbwgConfig . robots = `User-agent: *
352
312
Disallow: /` ;
353
313
}
354
- if ( hbwgConfig . robots !== false ) {
355
- app . get ( "/robots.txt" , ( req , res ) => {
356
- res . setHeader ( "Content-Type" , "text/plain" ) ;
357
- const ip = req . headers [ hbwgConfig . header ] || req . connection . remoteAddress ;
358
- res . send ( hbwgConfig . robots ) ;
359
- getback ( ip , "/robots.txt" ) ;
360
- } ) ;
361
- }
362
314
363
315
if (
364
316
typeof hbwgConfig . external === "object" &&
@@ -369,6 +321,29 @@ if (
369
321
}
370
322
371
323
// 主程序
324
+ const app = express ( ) ;
325
+ app . use ( bodyParser . urlencoded ( { extended : false } ) ) ;
326
+ app . use ( bodyParser . json ( ) ) ;
327
+ app . all ( "*" , function ( req , res , next ) {
328
+ res . header ( "Access-Control-Allow-Origin" , "*" ) ;
329
+ res . header (
330
+ "Access-Control-Allow-Headers" ,
331
+ "Content-Type,Content-Length, Authorization, Accept,X-Requested-With"
332
+ ) ;
333
+ res . header ( "Access-Control-Allow-Methods" , "PUT,POST,GET,DELETE,OPTIONS" ) ;
334
+ res . header ( "Access-Control-Allow-Credentials" , "true" ) ;
335
+ if ( req . method === "OPTIONS" ) res . send ( 200 ) ;
336
+ else next ( ) ;
337
+ } ) ;
338
+
339
+ if (
340
+ typeof hbwgConfig . external === "object" &&
341
+ hbwgConfig . external . beforestart
342
+ ) {
343
+ logback ( "Initialization configuration has been imported." ) ;
344
+ hbwgConfig . external . beforestart ( app , getback , postback , logback , logerr ) ;
345
+ }
346
+
372
347
app . get ( "/" , ( req , res ) => {
373
348
const ip = req . headers [ hbwgConfig . header ] || req . connection . remoteAddress ;
374
349
if ( typeof hbwgConfig . rootprogram === "function" ) {
@@ -380,6 +355,15 @@ app.get("/", (req, res) => {
380
355
getback ( ip , "/" ) ;
381
356
} ) ;
382
357
358
+ if ( hbwgConfig . robots !== false ) {
359
+ app . get ( "/robots.txt" , ( req , res ) => {
360
+ res . setHeader ( "Content-Type" , "text/plain" ) ;
361
+ const ip = req . headers [ hbwgConfig . header ] || req . connection . remoteAddress ;
362
+ res . send ( hbwgConfig . robots ) ;
363
+ getback ( ip , "/robots.txt" ) ;
364
+ } ) ;
365
+ }
366
+
383
367
if ( hbwgConfig . apiconfig . getimage ) {
384
368
app . get ( hbwgConfig . apiconfig . getimage , ( req , res ) => {
385
369
const ip = req . headers [ hbwgConfig . header ] || req . connection . remoteAddress ;
@@ -574,8 +558,13 @@ if (hbwgConfig.apiconfig.debug.url) {
574
558
// delete external cache
575
559
hbwgConfig . external = undefined ;
576
560
577
- app . listen ( hbwgConfig . port , ( ) => {
578
- logback (
579
- `heStudio BingWallpaper Get is running on localhost:${ hbwgConfig . port } `
580
- ) ;
581
- } ) ;
561
+ app
562
+ . listen ( hbwgConfig . port , ( ) => {
563
+ logback (
564
+ `heStudio BingWallpaper Get is running on localhost:${ hbwgConfig . port } `
565
+ ) ;
566
+ } )
567
+ . on ( "error" , ( err ) => {
568
+ logerr ( `server: ${ err } ` ) ;
569
+ process . exit ( 1 ) ;
570
+ } ) ;
0 commit comments