@@ -424,6 +424,43 @@ site.get(
424424 }
425425) ;
426426
427+ site . $shortLinkList = site . connectCollection ( 'shortLinkList' ) ;
428+ site . shortLinkList = [ ] ;
429+ site . $shortLinkList . findMany ( { } , ( err , docs ) => {
430+ if ( ! err && docs ) {
431+ site . shortLinkList = docs ;
432+ }
433+ } ) ;
434+ site . onGET ( '/s/create' , ( req , res ) => {
435+ let shortLink = {
436+ guid : site . md5 ( new Date ( ) . getTime ( ) . toString ( ) + Math . random ( ) . toString ( ) ) ,
437+ url : req . query . url || 'https://social-browser.com' ,
438+ step : parseInt ( req . query . step || 0 ) ,
439+ maxStep : parseInt ( req . query . maxstep || 4 ) ,
440+ timeout : parseInt ( req . query . timeout || 30 ) ,
441+ } ;
442+ site . $shortLinkList . add ( shortLink , ( err , doc ) => {
443+ if ( ! err && doc ) {
444+ site . shortLinkList . push ( doc ) ;
445+ res . end ( 'https://' + req . host + '/s/' + doc . guid ) ;
446+ }
447+ } ) ;
448+ } ) ;
449+ site . onGET ( '/s/:guid' , ( req , res ) => {
450+ req . session . shortLink = site . shortLinkList . find ( ( s ) => s . guid == req . params . guid ) || {
451+ guid : req . params . guid ,
452+ url : req . query . url || 'https://social-browser.com/download/' + site . md5 ( req . params . guid ) ,
453+ step : 0 ,
454+ maxStep : 4 ,
455+ timeout : 30 ,
456+ } ;
457+
458+ req . session . $save ( ) ;
459+
460+ req . params . guid = 'random' ;
461+ site . callRoute ( '/article/:guid' , req , res ) ;
462+ } ) ;
463+
427464site . get (
428465 {
429466 name : [ '/article/:guid/:title' , '/torrent/:guid/:title' , '/article/:guid' , '/a/:guid' , '/torrent/:guid' ] ,
@@ -512,6 +549,17 @@ site.get(
512549 }
513550 options . latestList = site . getLatestArticles ( article ) ;
514551 options . topNews = site . getTopArticles ( options . filter , article . category ) ;
552+ if ( req . session . shortLink ) {
553+ req . session . shortLink . step ++ ;
554+ if ( req . session . shortLink . step > req . session . shortLink . maxStep ) {
555+ res . redirect ( req . session . shortLink . url ) ;
556+ req . session . shortLink = null ;
557+ req . session . $save ( ) ;
558+ return ;
559+ }
560+ req . session . $save ( ) ;
561+ options . shortLink = req . session . shortLink ;
562+ }
515563
516564 res . render ( 'theme1/article.html' , options , {
517565 parser : 'html css js' ,
0 commit comments