Skip to content

Commit 2886919

Browse files
authored
Apply newer DB rules for latest MongoDB (#1980)
Post #1825 #1977 #1975 Auto-merge *(pretested)*
1 parent cb3f383 commit 2886919

File tree

2 files changed

+19
-26
lines changed

2 files changed

+19
-26
lines changed

models/script.js

+1-10
Original file line numberDiff line numberDiff line change
@@ -56,19 +56,10 @@ scriptSchema.index({
5656
author: 1,
5757
_description: 1,
5858
_about: 1,
59+
'meta.UserScript.match.value': 1,
5960
'meta.UserScript.include.value': 1
6061
});
6162

62-
scriptSchema.index({
63-
isLib: 1,
64-
name: 1,
65-
author: 1,
66-
_description: 1,
67-
_about: 1,
68-
'meta.UserScript.match.value': 1
69-
});
70-
71-
7263
/*
7364
* Direct access indexed
7465
*/

routes.js

+18-16
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ var installCapLimiter = rateLimit({
5353
expireTimeMs: waitInstallCapMin * 60 * 1000 // n minutes for mongo store
5454
})),
5555
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
5757
handler: function (aReq, aRes, aNext, aOptions) {
5858
var cmd = null;
5959

@@ -81,7 +81,7 @@ var installCapLimiter = rateLimit({
8181
} else if (aReq.rateLimit.current < aReq.rateLimit.limit + 15) {
8282
aRes.header('Retry-After', waitInstallCapMin * 60 + (isDev ? fudgeSec : fudgeMin));
8383
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) {
8585
aRes.header('Retry-After', waitInstallCapMin * 60 + (isDev ? fudgeSec : fudgeMin));
8686
aRes.status(429).send();
8787
} else {
@@ -321,7 +321,7 @@ var listCapLimiter = rateLimit({
321321
} else if (aReq.rateLimit.current < aReq.rateLimit.limit + 15) {
322322
aRes.header('Retry-After', waitListCapMin * 60 + (isDev ? fudgeSec : fudgeMin));
323323
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) {
325325
aRes.header('Retry-After', waitListCapMin * 60 + (isDev ? fudgeSec : fudgeMin));
326326
aRes.status(429).send();
327327
} else {
@@ -390,6 +390,8 @@ var listRateLimiter = rateLimit({
390390
}
391391
});
392392

393+
var list1Limiter = lockdown ? listCapLimiter : listRateLimiter;
394+
var list2Limiter = lockdown ? listRateLimiter : listCapLimiter;
393395

394396
module.exports = function (aApp) {
395397
//--- Middleware
@@ -412,11 +414,11 @@ module.exports = function (aApp) {
412414
aApp.route('/logout').get(main.logout);
413415

414416
// User routes
415-
aApp.route('/users').get(listRateLimiter, listCapLimiter, user.userListPage);
417+
aApp.route('/users').get(list1Limiter, list2Limiter, user.userListPage);
416418
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);
420422

421423
aApp.route('/users/:username/github/repos').get(authentication.validateUser, user.userGitHubRepoListPage);
422424
aApp.route('/users/:username/github/repo').get(authentication.validateUser, user.userGitHubRepoPage);
@@ -435,7 +437,7 @@ module.exports = function (aApp) {
435437
aApp.route('/api/user/session/destroyOne').post(apiCapLimiter, authentication.validateUser, user.destroyOne);
436438

437439
// 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);
439441
aApp.route('/user/add/scripts/new').get(authentication.validateUser, script.new(user.editScript)).post(authentication.validateUser, script.new(user.submitSource));
440442
aApp.route('/user/add/scripts/upload').post(authentication.validateUser, user.uploadScript);
441443
aApp.route('/user/add/lib').get(authentication.validateUser, user.newLibraryPage);
@@ -470,9 +472,9 @@ module.exports = function (aApp) {
470472
aApp.route('/src/:type(scripts|libs)/:username/:scriptname').get(install1Limiter, install2Limiter, scriptStorage.unlockScript, scriptStorage.sendScript);
471473

472474
// 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);
474476
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);
476478
aApp.route('/:type(scripts|libs)/:username/:scriptname/issues/:topic/:action(close|reopen)').get(authentication.validateUser, issue.changeStatus);
477479

478480
// Admin routes
@@ -505,16 +507,16 @@ module.exports = function (aApp) {
505507
aApp.route(/^\/remove\/(users|scripts|libs)\/((.+?)(?:\/(.+))?)$/).post(authentication.validateUser, remove.rm);
506508

507509
// 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);
510512
aApp.route('/group').get(function (aReq, aRes) { aRes.redirect('/groups'); });
511513
aApp.route('/api/group/search/:term/:addTerm?').get(group.search);
512514

513515
// Discussion routes
514516
// 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);
518520
aApp.route('/:p(forum)?/:category(announcements|corner|garage|discuss)/new').get(authentication.validateUser, discussion.newTopic).post(authentication.validateUser, discussion.createTopic);
519521
// dupe
520522
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) {
523525
aApp.route('/about/:document?').get(document.view);
524526

525527
// Home route
526-
aApp.route('/').get(listRateLimiter, listCapLimiter, main.home);
528+
aApp.route('/').get(list1Limiter, list2Limiter, main.home);
527529

528530
// Misc API
529531
aApp.route('/api').head(function (aReq, aRes, aNext) {

0 commit comments

Comments
 (0)