@@ -10,7 +10,11 @@ const tslog = require("tslog");
10
10
const connsola = new tslog . Logger ( ) ;
11
11
const MarkdownIt = require ( "markdown-it" ) ;
12
12
const { raw } = require ( "body-parser" ) ;
13
- const md = new MarkdownIt ( ) ;
13
+ const md = new MarkdownIt ( {
14
+ html : true ,
15
+ linkify : true ,
16
+ typographer : true ,
17
+ } ) ;
14
18
const Axios = require ( "axios" ) ;
15
19
const pjson = require ( "./package.json" ) ;
16
20
class logging {
@@ -163,6 +167,10 @@ async function ReturnPage(id, currenturl) {
163
167
case "external" :
164
168
rawpagecontent = ( await Axios . default . get ( pagemeta . content . url ) . then ( ) ) . data ;
165
169
break ;
170
+ case "external-direct" :
171
+ return ( await Axios . default . get ( pagemeta . content . url ) . then ( ) ) . data ;
172
+ case "redirect" :
173
+ return ( { do : "relocation" , url : pagemeta . content . url } ) ;
166
174
default :
167
175
rawpagecontent = fs . readFileSync (
168
176
path . join ( __dirname , "/site/pages/" , pagemeta . content . path ) ,
@@ -243,7 +251,30 @@ Also see: https://github.com/strawmelonjuice/CynthiaCMS-JS/blob/main/README.MD
243
251
// console.log(page);
244
252
return page ;
245
253
}
246
-
254
+ async function CynthiaRespond ( id , req , res ) {
255
+ let anyerrors = true ;
256
+ try {
257
+ const cynspon = await ReturnPage ( id , req . url ) ;
258
+ if ( typeof cynspon !== "object" ) {
259
+ res . send ( cynspon ) ;
260
+ anyerrors = false ;
261
+ } else {
262
+ if ( cynspon . do === "relocation" ) {
263
+ res . redirect ( 302 , cynspon . url ) ;
264
+ console . log ( `Redirecting '${ req . url } ' to '${ cynspon . url } '.` ) ;
265
+ anyerrors = false ;
266
+ }
267
+ }
268
+ } catch {
269
+ anyerrors = true ;
270
+ }
271
+ if ( anyerrors ) {
272
+ tell . log ( 0 , "500" , `[GET] ➡️❌ "${ req . url } "` ) ;
273
+ res . send ( 500 ) ;
274
+ } else {
275
+ tell . log ( 0 , "200" , `[GET] ➡️✔️ "${ req . url } "` ) ;
276
+ }
277
+ }
247
278
const app = express ( ) ;
248
279
app . get ( "/" , async ( req , res ) => {
249
280
let pid = "" ;
@@ -253,44 +284,15 @@ app.get("/", async (req, res) => {
253
284
if ( typeof req . query . post !== "undefined" ) pid = req . query . post ;
254
285
if ( typeof req . query . id !== "undefined" ) pid = req . query . id ;
255
286
if ( pid !== "" ) {
256
- try {
257
- res . send ( await ReturnPage ( pid , req . url ) ) ;
258
- } catch {
259
- anyerrors = true ;
260
- }
261
- if ( anyerrors ) {
262
- tell . warn ( `[GET] ➡️❌ "${ req . url } ~ ${ pid } "` ) ;
263
- } else {
264
- tell . log ( 0 , "OK" , `[GET] ➡️✔️ "${ req . url } ~ ${ pid } "` ) ;
265
- }
287
+ CynthiaRespond ( pid , req , res ) ;
266
288
} else {
267
- try {
268
- res . send ( await ReturnPage ( "root" , "/" ) ) ;
269
- } catch {
270
- anyerrors = true ;
271
- }
272
- if ( anyerrors ) {
273
- tell . warn ( `[GET] ➡️❌ "${ req . url } "` ) ;
274
- } else {
275
- tell . log ( 0 , "OK" , `[GET] ➡️✔️ "${ req . url } "` ) ;
276
- }
289
+ CynthiaRespond ( "root" , req , res ) ;
277
290
}
278
291
} ) ;
279
292
280
293
app . get ( "/p/:id" , async ( req , res ) => {
281
- let anyerrors = false ;
282
294
const id = req . params . id ;
283
- try {
284
- res . send ( await ReturnPage ( id , `/p/${ id } ` ) ) ;
285
- anyerrors = false ;
286
- } catch {
287
- anyerrors = true ;
288
- }
289
- if ( anyerrors ) {
290
- tell . warn ( `[GET] ➡️❌ "${ req . url } "` ) ;
291
- } else {
292
- tell . log ( 0 , "OK" , `[GET] ➡️✔️ "${ req . url } "` ) ;
293
- }
295
+ CynthiaRespond ( id , req , res ) ;
294
296
} ) ;
295
297
app . use ( "/assets" , express . static ( path . join ( __dirname , "/site/assets/" ) ) ) ;
296
298
app . use (
0 commit comments