@@ -53,7 +53,7 @@ var installCapLimiter = rateLimit({
53
53
expireTimeMs : waitInstallCapMin * 60 * 1000 // n minutes for mongo store
54
54
} ) ) ,
55
55
windowMs : waitInstallCapMin * 60 * 1000 , // n minutes for all stores
56
- max : 50 , // limit each IP to n requests per windowMs for memory store or expireTimeMs for mongo store
56
+ max : 75 , // limit each IP to n requests per windowMs for memory store or expireTimeMs for mongo store
57
57
handler : function ( aReq , aRes , aNext , aOptions ) {
58
58
var cmd = null ;
59
59
@@ -81,7 +81,7 @@ var installCapLimiter = rateLimit({
81
81
} else if ( aReq . rateLimit . current < aReq . rateLimit . limit + 15 ) {
82
82
aRes . header ( 'Retry-After' , waitInstallCapMin * 60 + ( isDev ? fudgeSec : fudgeMin ) ) ;
83
83
aRes . status ( 429 ) . send ( 'Too many requests. Please try again later' ) ;
84
- } else if ( aReq . rateLimit . current < aReq . rateLimit . limit + 20 ) {
84
+ } else if ( aReq . rateLimit . current < aReq . rateLimit . limit + 25 ) {
85
85
aRes . header ( 'Retry-After' , waitInstallCapMin * 60 + ( isDev ? fudgeSec : fudgeMin ) ) ;
86
86
aRes . status ( 429 ) . send ( ) ;
87
87
} else {
@@ -321,7 +321,7 @@ var listCapLimiter = rateLimit({
321
321
} else if ( aReq . rateLimit . current < aReq . rateLimit . limit + 15 ) {
322
322
aRes . header ( 'Retry-After' , waitListCapMin * 60 + ( isDev ? fudgeSec : fudgeMin ) ) ;
323
323
aRes . status ( 429 ) . send ( 'Too many requests. Please try again later' ) ;
324
- } else if ( aReq . rateLimit . current < aReq . rateLimit . limit + 20 ) {
324
+ } else if ( aReq . rateLimit . current < aReq . rateLimit . limit + 25 ) {
325
325
aRes . header ( 'Retry-After' , waitListCapMin * 60 + ( isDev ? fudgeSec : fudgeMin ) ) ;
326
326
aRes . status ( 429 ) . send ( ) ;
327
327
} else {
@@ -390,6 +390,8 @@ var listRateLimiter = rateLimit({
390
390
}
391
391
} ) ;
392
392
393
+ var list1Limiter = lockdown ? listCapLimiter : listRateLimiter ;
394
+ var list2Limiter = lockdown ? listRateLimiter : listCapLimiter ;
393
395
394
396
module . exports = function ( aApp ) {
395
397
//--- Middleware
@@ -412,11 +414,11 @@ module.exports = function (aApp) {
412
414
aApp . route ( '/logout' ) . get ( main . logout ) ;
413
415
414
416
// User routes
415
- aApp . route ( '/users' ) . get ( listRateLimiter , listCapLimiter , user . userListPage ) ;
417
+ aApp . route ( '/users' ) . get ( list1Limiter , list2Limiter , user . userListPage ) ;
416
418
aApp . route ( '/users/:username' ) . get ( user . view ) ;
417
- aApp . route ( '/users/:username/scripts' ) . get ( listRateLimiter , listCapLimiter , user . userScriptListPage ) ;
418
- aApp . route ( '/users/:username/syncs' ) . get ( listRateLimiter , listCapLimiter , user . userSyncListPage ) ;
419
- aApp . route ( '/users/:username/comments' ) . get ( listRateLimiter , listCapLimiter , user . userCommentListPage ) ;
419
+ aApp . route ( '/users/:username/scripts' ) . get ( list1Limiter , list2Limiter , user . userScriptListPage ) ;
420
+ aApp . route ( '/users/:username/syncs' ) . get ( list1Limiter , list2Limiter , user . userSyncListPage ) ;
421
+ aApp . route ( '/users/:username/comments' ) . get ( list1Limiter , list2Limiter , user . userCommentListPage ) ;
420
422
421
423
aApp . route ( '/users/:username/github/repos' ) . get ( authentication . validateUser , user . userGitHubRepoListPage ) ;
422
424
aApp . route ( '/users/:username/github/repo' ) . get ( authentication . validateUser , user . userGitHubRepoPage ) ;
@@ -435,7 +437,7 @@ module.exports = function (aApp) {
435
437
aApp . route ( '/api/user/session/destroyOne' ) . post ( apiCapLimiter , authentication . validateUser , user . destroyOne ) ;
436
438
437
439
// Adding script/library routes
438
- aApp . route ( '/user/add/scripts' ) . get ( listRateLimiter , listCapLimiter , authentication . validateUser , user . newScriptPage ) ;
440
+ aApp . route ( '/user/add/scripts' ) . get ( list1Limiter , list2Limiter , authentication . validateUser , user . newScriptPage ) ;
439
441
aApp . route ( '/user/add/scripts/new' ) . get ( authentication . validateUser , script . new ( user . editScript ) ) . post ( authentication . validateUser , script . new ( user . submitSource ) ) ;
440
442
aApp . route ( '/user/add/scripts/upload' ) . post ( authentication . validateUser , user . uploadScript ) ;
441
443
aApp . route ( '/user/add/lib' ) . get ( authentication . validateUser , user . newLibraryPage ) ;
@@ -470,9 +472,9 @@ module.exports = function (aApp) {
470
472
aApp . route ( '/src/:type(scripts|libs)/:username/:scriptname' ) . get ( install1Limiter , install2Limiter , scriptStorage . unlockScript , scriptStorage . sendScript ) ;
471
473
472
474
// Issues routes
473
- aApp . route ( '/:type(scripts|libs)/:username/:scriptname/issues/:open(open|closed|all)?' ) . get ( listRateLimiter , listCapLimiter , issue . list ) ;
475
+ aApp . route ( '/:type(scripts|libs)/:username/:scriptname/issues/:open(open|closed|all)?' ) . get ( list1Limiter , list2Limiter , issue . list ) ;
474
476
aApp . route ( '/:type(scripts|libs)/:username/:scriptname/issue/new' ) . get ( authentication . validateUser , issue . open ) . post ( authentication . validateUser , issue . open ) ;
475
- aApp . route ( '/:type(scripts|libs)/:username/:scriptname/issues/:topic' ) . get ( listRateLimiter , listCapLimiter , issue . view ) . post ( authentication . validateUser , issue . comment ) ;
477
+ aApp . route ( '/:type(scripts|libs)/:username/:scriptname/issues/:topic' ) . get ( list1Limiter , list2Limiter , issue . view ) . post ( authentication . validateUser , issue . comment ) ;
476
478
aApp . route ( '/:type(scripts|libs)/:username/:scriptname/issues/:topic/:action(close|reopen)' ) . get ( authentication . validateUser , issue . changeStatus ) ;
477
479
478
480
// Admin routes
@@ -505,16 +507,16 @@ module.exports = function (aApp) {
505
507
aApp . route ( / ^ \/ r e m o v e \/ ( u s e r s | s c r i p t s | l i b s ) \/ ( ( .+ ?) (?: \/ ( .+ ) ) ? ) $ / ) . post ( authentication . validateUser , remove . rm ) ;
506
508
507
509
// Group routes
508
- aApp . route ( '/groups' ) . get ( listRateLimiter , listCapLimiter , group . list ) ;
509
- aApp . route ( '/group/:groupname' ) . get ( listRateLimiter , listCapLimiter , group . view ) ;
510
+ aApp . route ( '/groups' ) . get ( list1Limiter , list2Limiter , group . list ) ;
511
+ aApp . route ( '/group/:groupname' ) . get ( list1Limiter , list2Limiter , group . view ) ;
510
512
aApp . route ( '/group' ) . get ( function ( aReq , aRes ) { aRes . redirect ( '/groups' ) ; } ) ;
511
513
aApp . route ( '/api/group/search/:term/:addTerm?' ) . get ( group . search ) ;
512
514
513
515
// Discussion routes
514
516
// TODO: Update templates for new discussion routes
515
- aApp . route ( '/forum' ) . get ( listRateLimiter , listCapLimiter , discussion . categoryListPage ) ;
516
- aApp . route ( '/:p(forum)?/:category(announcements|corner|garage|discuss|issues|all)' ) . get ( listRateLimiter , listCapLimiter , discussion . list ) ;
517
- aApp . route ( '/:p(forum)?/:category(announcements|corner|garage|discuss)/:topic' ) . get ( listRateLimiter , listCapLimiter , discussion . show ) . post ( authentication . validateUser , discussion . createComment ) ;
517
+ aApp . route ( '/forum' ) . get ( list1Limiter , list2Limiter , discussion . categoryListPage ) ;
518
+ aApp . route ( '/:p(forum)?/:category(announcements|corner|garage|discuss|issues|all)' ) . get ( list1Limiter , list2Limiter , discussion . list ) ;
519
+ aApp . route ( '/:p(forum)?/:category(announcements|corner|garage|discuss)/:topic' ) . get ( list1Limiter , list2Limiter , discussion . show ) . post ( authentication . validateUser , discussion . createComment ) ;
518
520
aApp . route ( '/:p(forum)?/:category(announcements|corner|garage|discuss)/new' ) . get ( authentication . validateUser , discussion . newTopic ) . post ( authentication . validateUser , discussion . createTopic ) ;
519
521
// dupe
520
522
aApp . route ( '/post/:category(announcements|corner|garage|discuss)' ) . get ( authentication . validateUser , discussion . newTopic ) . post ( authentication . validateUser , discussion . createTopic ) ;
@@ -523,7 +525,7 @@ module.exports = function (aApp) {
523
525
aApp . route ( '/about/:document?' ) . get ( document . view ) ;
524
526
525
527
// Home route
526
- aApp . route ( '/' ) . get ( listRateLimiter , listCapLimiter , main . home ) ;
528
+ aApp . route ( '/' ) . get ( list1Limiter , list2Limiter , main . home ) ;
527
529
528
530
// Misc API
529
531
aApp . route ( '/api' ) . head ( function ( aReq , aRes , aNext ) {
0 commit comments