diff --git a/nginx/nginx.conf b/nginx/nginx.conf index 70781b9..65b2aa3 100644 --- a/nginx/nginx.conf +++ b/nginx/nginx.conf @@ -1,9 +1,9 @@ -worker_processes 4; -worker_rlimit_nofile 400000; +worker_processes 6; +worker_rlimit_nofile 800000; worker_shutdown_timeout 10; events { - worker_connections 500000; # Default: 1024 + worker_connections 700000; # Default: 1024 } http { @@ -21,9 +21,16 @@ http { types { text/csv csv; } + # keepalive settings + keepalive_requests 10; + keepalive_timeout 5; + proxy_http_version 1.1; + proxy_set_header Connection ""; upstream backend_GET { ip_hash; + + keepalive 5; #server localhost:4441; #server localhost:4442; #server localhost:4443; @@ -32,7 +39,7 @@ http { #server localhost:4446; #server localhost:4447; #server localhost:4448; - server 10.0.0.4:4441; + server 10.0.0.4:4441; #server 10.0.0.3:4441; server 10.0.0.3:4442; @@ -40,8 +47,11 @@ http { server 10.0.0.5:4441; server 10.0.0.5:4442; - #server 10.0.0.6:4441; - #server 10.0.0.6:4442; + server 10.0.0.6:4441; + server 10.0.0.6:4442; + + #server 10.0.0.8:4441; + #server 10.0.0.8:4442; #server 134.209.69.251:80 backup; @@ -60,8 +70,8 @@ http { upstream backend_db { server 10.0.0.4:4441; #server 10.0.0.3:4441; - #server 10.0.0.4; - } + #server 10.0.0.4; + } upstream backend_db_dl { server 10.0.0.4; @@ -109,7 +119,7 @@ http { #proxy_pass https://sbtest.etcinit.com/; } - #access_log /etc/nginx/logs/requests.log no_ip; + #access_log /etc/nginx/logs/requests.log no_ip buffer=64k; location /api/skipSegments { #return 200 "[]"; @@ -120,11 +130,11 @@ http { #access_log /etc/nginx/logs/download.log no_ip; gzip on; if ($request_method = POST) { - access_log /etc/nginx/logs/submissions.log user_agent; + access_log /etc/nginx/logs/submissions.log user_agent buffer=64k; } #proxy_read_timeout 6s; - #proxy_next_upstream error timeout http_500 http_502; + #proxy_next_upstream error timeout http_500 http_502; } location /api/getTopUsers { @@ -135,7 +145,7 @@ http { location /api/getTotalStats { proxy_pass http://backend_GET; - proxy_cache CACHEZONE; + proxy_cache CACHEZONE; proxy_cache_valid 20m; #return 200 ""; } @@ -145,15 +155,15 @@ http { } location /download/ { - #access_log /etc/nginx/logs/download.log no_ip; + #access_log /etc/nginx/logs/download.log no_ip buffer=64k; gzip on; - proxy_cache CACHEZONE; + proxy_cache CACHEZONE; proxy_cache_valid 20m; #gzip_types text/csv; #gzip_comp_level 1; proxy_pass http://backend_db; - #alias /home/sbadmin/sponsor/docker/database-export/; + #alias /home/sbadmin/sponsor/docker/database-export/; #return 307 https://cdnsponsor.ajay.app$request_uri; } location /database { @@ -196,15 +206,7 @@ http { ssl_certificate_key /etc/letsencrypt/live/sponsor.ajay.app-0001/privkey.pem; # managed by Certbot include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot - - - - - - - - -} + } server { server_name cdnsponsor.ajay.app; @@ -228,11 +230,7 @@ http { ssl_certificate_key /etc/letsencrypt/live/sponsor.ajay.app-0001/privkey.pem; # managed by Certbot include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot - - - - -} + } server { access_log off; @@ -281,9 +279,5 @@ http { ssl_certificate_key /etc/letsencrypt/live/sponsor.ajay.app-0001/privkey.pem; # managed by Certbot include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot - - - - -} + } } diff --git a/src/routes/getSearchSegments.ts b/src/routes/getSearchSegments.ts index cbfb1f7..3d5e467 100644 --- a/src/routes/getSearchSegments.ts +++ b/src/routes/getSearchSegments.ts @@ -109,7 +109,7 @@ function filterSegments(segments: DBSegment[], page: number, filters: Record filters.maxViews) || (!filters.locked && segment.locked) || (!filters.hidden && segment.hidden) - || (!filters.ignored && (segment.hidden || segment.shadowHidden)) + || (!filters.ignored && ((segment.votes <= -2) || segment.hidden || segment.shadowHidden)) || (filters.categories.length > 0 && !filters.categories.includes(segment.category))) // return false if any of the conditions are met // return true if none of the conditions are met diff --git a/src/routes/setUsername.ts b/src/routes/setUsername.ts index e31328c..81e5a54 100644 --- a/src/routes/setUsername.ts +++ b/src/routes/setUsername.ts @@ -70,7 +70,11 @@ export async function setUsername(req: Request, res: Response): Promise { assert.strictEqual(res.status, 200); const data = res.data; const segments = data.segments; - assert.strictEqual(data.segmentCount, 3); + assert.strictEqual(data.segmentCount, 2); assert.strictEqual(data.page, 0); assert.strictEqual(segments[0].UUID, "search-normal"); - assert.strictEqual(segments[1].UUID, "search-downvote"); - assert.strictEqual(segments[2].UUID, "search-locked"); + assert.strictEqual(segments[1].UUID, "search-locked"); done(); }) .catch(err => done(err)); diff --git a/test/cases/setUsername.ts b/test/cases/setUsername.ts index 89af032..39a518b 100644 --- a/test/cases/setUsername.ts +++ b/test/cases/setUsername.ts @@ -20,6 +20,7 @@ const user06PrivateUserID = "setUsername_06"; const username06 = "Username 06"; const user07PrivateUserID = "setUsername_07"; const username07 = "Username 07"; +const user08PrivateUserID = "setUsername_08"; async function addUsername(userID: string, userName: string, locked = 0) { await db.prepare("run", 'INSERT INTO "userNames" ("userID", "userName", "locked") VALUES(?, ?, ?)', [userID, userName, locked]); @@ -231,4 +232,14 @@ describe("setUsername", () => { }) .catch((err) => done(err)); }); + + it("Should delete row if new username is same as publicID", (done) => { + const publicID = getHash(user08PrivateUserID); + postSetUserName(getHash(user08PrivateUserID), publicID) + .then(async () => { + const usernameInfo = await getUsernameInfo(getHash(user08PrivateUserID)); + assert.strictEqual(usernameInfo, null); + done(); + }); + }); });