change how css gets loaded (it was more complicated that it needs too)

remove express-limiter (nginx does the ratelimiting)
This commit is contained in:
HF 2022-01-05 13:25:18 +01:00
parent ccb15826db
commit c2a141a6b7
9 changed files with 167 additions and 132 deletions

153
package-lock.json generated
View File

@ -19,7 +19,6 @@
"cors": "^2.8.4",
"etag": "^1.8.1",
"express": "^4.17.2",
"express-limiter": "^1.6.0",
"express-session": "^1.17.2",
"global": "^4.3.2",
"http-proxy-agent": "^5.0.0",
@ -81,6 +80,7 @@
"babel-plugin-transform-react-remove-prop-types": "^0.4.24",
"babel-plugin-ttag": "^1.7.30",
"clean-css": "^5.2.2",
"clean-css-loader": "^4.1.1",
"copy-webpack-plugin": "^10.2.0",
"css-loader": "^6.5.1",
"eslint": "^8.6.0",
@ -91,7 +91,6 @@
"eslint-plugin-react": "^7.28.0",
"generate-package-json-webpack-plugin": "^2.5.1",
"mkdirp": "^1.0.4",
"style-loader": "^3.3.1",
"ttag-cli": "^1.9.3",
"webpack": "^5.65.0",
"webpack-bundle-analyzer": "^4.5.0",
@ -3427,6 +3426,76 @@
"node": ">= 10.0"
}
},
"node_modules/clean-css-loader": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/clean-css-loader/-/clean-css-loader-4.1.1.tgz",
"integrity": "sha512-ipWsH2tIjBcMjB/hDFEPMYbTJYgewEqNJj6wAIfr1ZFme4r5O4WuUFdcVCym/t1sTOB+h0lQWPeUJOWq8cu1HQ==",
"dev": true,
"dependencies": {
"clean-css": "^5.0.0",
"loader-utils": "^2.0.0",
"schema-utils": "^3.0.0"
},
"engines": {
"node": ">= 10.0.0"
},
"peerDependencies": {
"webpack": ">=2.0.0"
},
"peerDependenciesMeta": {
"webpack": {
"optional": true
}
}
},
"node_modules/clean-css-loader/node_modules/ajv": {
"version": "6.12.6",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
"integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
"dev": true,
"dependencies": {
"fast-deep-equal": "^3.1.1",
"fast-json-stable-stringify": "^2.0.0",
"json-schema-traverse": "^0.4.1",
"uri-js": "^4.2.2"
},
"funding": {
"type": "github",
"url": "https://github.com/sponsors/epoberezkin"
}
},
"node_modules/clean-css-loader/node_modules/loader-utils": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz",
"integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==",
"dev": true,
"dependencies": {
"big.js": "^5.2.2",
"emojis-list": "^3.0.0",
"json5": "^2.1.2"
},
"engines": {
"node": ">=8.9.0"
}
},
"node_modules/clean-css-loader/node_modules/schema-utils": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz",
"integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==",
"dev": true,
"dependencies": {
"@types/json-schema": "^7.0.8",
"ajv": "^6.12.5",
"ajv-keywords": "^3.5.2"
},
"engines": {
"node": ">= 10.13.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/webpack"
}
},
"node_modules/clean-css/node_modules/source-map": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
@ -5069,11 +5138,6 @@
"node": ">= 0.10.0"
}
},
"node_modules/express-limiter": {
"version": "1.6.1",
"resolved": "https://registry.npmjs.org/express-limiter/-/express-limiter-1.6.1.tgz",
"integrity": "sha512-w/Xz/FIHuAOIVIUeHSe6g2rSYTqCSKA9WFLO2CxX15BzEAK+avp7HoYd7pu/M2tEp5E/to253+4x8vQ6WcTJkQ=="
},
"node_modules/express-session": {
"version": "1.17.2",
"resolved": "https://registry.npmjs.org/express-session/-/express-session-1.17.2.tgz",
@ -9576,22 +9640,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/style-loader": {
"version": "3.3.1",
"resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.1.tgz",
"integrity": "sha512-GPcQ+LDJbrcxHORTRes6Jy2sfvK2kS6hpSfI/fXhPt+spVzxF6LJ1dHLN9zIGmVaaP044YKaIatFaufENRiDoQ==",
"dev": true,
"engines": {
"node": ">= 12.13.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/webpack"
},
"peerDependencies": {
"webpack": "^5.0.0"
}
},
"node_modules/supports-color": {
"version": "5.5.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
@ -13332,6 +13380,53 @@
}
}
},
"clean-css-loader": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/clean-css-loader/-/clean-css-loader-4.1.1.tgz",
"integrity": "sha512-ipWsH2tIjBcMjB/hDFEPMYbTJYgewEqNJj6wAIfr1ZFme4r5O4WuUFdcVCym/t1sTOB+h0lQWPeUJOWq8cu1HQ==",
"dev": true,
"requires": {
"clean-css": "^5.0.0",
"loader-utils": "^2.0.0",
"schema-utils": "^3.0.0"
},
"dependencies": {
"ajv": {
"version": "6.12.6",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
"integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
"dev": true,
"requires": {
"fast-deep-equal": "^3.1.1",
"fast-json-stable-stringify": "^2.0.0",
"json-schema-traverse": "^0.4.1",
"uri-js": "^4.2.2"
}
},
"loader-utils": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz",
"integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==",
"dev": true,
"requires": {
"big.js": "^5.2.2",
"emojis-list": "^3.0.0",
"json5": "^2.1.2"
}
},
"schema-utils": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz",
"integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==",
"dev": true,
"requires": {
"@types/json-schema": "^7.0.8",
"ajv": "^6.12.5",
"ajv-keywords": "^3.5.2"
}
}
}
},
"cli-cursor": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz",
@ -14624,11 +14719,6 @@
}
}
},
"express-limiter": {
"version": "1.6.1",
"resolved": "https://registry.npmjs.org/express-limiter/-/express-limiter-1.6.1.tgz",
"integrity": "sha512-w/Xz/FIHuAOIVIUeHSe6g2rSYTqCSKA9WFLO2CxX15BzEAK+avp7HoYd7pu/M2tEp5E/to253+4x8vQ6WcTJkQ=="
},
"express-session": {
"version": "1.17.2",
"resolved": "https://registry.npmjs.org/express-session/-/express-session-1.17.2.tgz",
@ -17977,13 +18067,6 @@
"integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
"dev": true
},
"style-loader": {
"version": "3.3.1",
"resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.1.tgz",
"integrity": "sha512-GPcQ+LDJbrcxHORTRes6Jy2sfvK2kS6hpSfI/fXhPt+spVzxF6LJ1dHLN9zIGmVaaP044YKaIatFaufENRiDoQ==",
"dev": true,
"requires": {}
},
"supports-color": {
"version": "5.5.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",

View File

@ -10,15 +10,11 @@
"main": "server.js",
"scripts": {
"build": "babel-node scripts/build.js && npm run minify-css",
"build:dev": "npm run extract && npm run minify-css",
"build:dev": "webpack --env extract --config ./webpack.config.server.babel.js && webpack --env extract --env development --config ./webpack.config.client.babel.js && npm run minify-css",
"minify-css": "babel-node scripts/minifyCss.js",
"extract": "webpack --env extract --config ./webpack.config.server.babel.js && webpack --env extract --env development --config ./webpack.config.client.babel.js",
"babel-node": "cd $INIT_CWD && babel-node",
"lint": "cd $INIT_CWD && eslint --ext .jsx --ext .js",
"lint:src": "eslint --ext .jsx --ext .js src",
"lint:css": "stylelint \"src/**/*.{css,less,scss,sss}\"",
"lint:staged": "lint-staged",
"upgrade": "npm-check --update"
"lint:src": "eslint --ext .jsx --ext .js src"
},
"author": "HF <hf@example.com>",
"browserslist": [
@ -38,7 +34,6 @@
"cors": "^2.8.4",
"etag": "^1.8.1",
"express": "^4.17.2",
"express-limiter": "^1.6.0",
"express-session": "^1.17.2",
"global": "^4.3.2",
"http-proxy-agent": "^5.0.0",
@ -100,6 +95,7 @@
"babel-plugin-transform-react-remove-prop-types": "^0.4.24",
"babel-plugin-ttag": "^1.7.30",
"clean-css": "^5.2.2",
"clean-css-loader": "^4.1.1",
"copy-webpack-plugin": "^10.2.0",
"css-loader": "^6.5.1",
"eslint": "^8.6.0",
@ -110,7 +106,6 @@
"eslint-plugin-react": "^7.28.0",
"generate-package-json-webpack-plugin": "^2.5.1",
"mkdirp": "^1.0.4",
"style-loader": "^3.3.1",
"ttag-cli": "^1.9.3",
"webpack": "^5.65.0",
"webpack-bundle-analyzer": "^4.5.0",

View File

@ -3,8 +3,6 @@
// eslint-disable-next-line no-unused-vars
import fetch from 'isomorphic-fetch'; // TODO put in the beggining with webpack!
import './styles/font.css';
import onKeyPress from './controls/keypress';
import {
fetchMe,

View File

@ -7,17 +7,14 @@
*/
import express from 'express';
import expressLimiter from 'express-limiter';
import type { Request, Response } from 'express';
import bodyParser from 'body-parser';
import multer from 'multer';
import { getIPFromRequest } from '../utils/ip';
import redis from '../data/redis';
import session from '../core/session';
import passport from '../core/passport';
import { admintoolsLogger } from '../core/logger';
import { MINUTE } from '../core/constants';
import {
executeIPAction,
executeImageAction,
@ -30,8 +27,6 @@ import {
const router = express.Router();
const limiter = expressLimiter(router, redis);
/*
* multer middleware for getting POST parameters
@ -45,19 +40,6 @@ const upload = multer({
});
/*
* rate limiting to prevent bruteforce attacks
* TODO: do that with nginx
*/
router.use('/',
limiter({
lookup: 'headers.cf-connecting-ip',
total: 240,
expire: 5 * MINUTE,
skipHeaders: true,
}));
/*
* make sure User is logged in and mod or admin
*/

View File

@ -5,35 +5,18 @@
*/
import express from 'express';
import expressLimiter from 'express-limiter';
import bodyParser from 'body-parser';
import type { Request, Response } from 'express';
import redis from '../data/redis';
import logger from '../core/logger';
import getPasswordResetHtml from '../ssr-components/PasswordReset';
import { MINUTE } from '../core/constants';
import mailProvider from '../core/mail';
import { RegUser } from '../data/models';
const router = express.Router();
const limiter = expressLimiter(router, redis);
/*
* rate limiting to prevent bruteforce attacks
*/
router.use('/',
limiter({
lookup: 'headers.cf-connecting-ip',
total: 24,
expire: 5 * MINUTE,
skipHeaders: true,
}));
/*
* decode form data to req.body

View File

@ -1,3 +1,48 @@
/* --- fonts --- */
/* cyrillic-ext */
@font-face {
font-family: 'Montserrat';
font-style: normal;
font-weight: 400;
src: local('Montserrat Regular'), local('Montserrat-Regular'), url(https://fonts.gstatic.com/s/montserrat/v12/JTUSjIg1_i6t8kCHKm459WRhyzbi.woff2) format('woff2');
unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
font-family: 'Montserrat';
font-style: normal;
font-weight: 400;
src: local('Montserrat Regular'), local('Montserrat-Regular'), url(https://fonts.gstatic.com/s/montserrat/v12/JTUSjIg1_i6t8kCHKm459W1hyzbi.woff2) format('woff2');
unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* vietnamese */
@font-face {
font-family: 'Montserrat';
font-style: normal;
font-weight: 400;
src: local('Montserrat Regular'), local('Montserrat-Regular'), url(https://fonts.gstatic.com/s/montserrat/v12/JTUSjIg1_i6t8kCHKm459WZhyzbi.woff2) format('woff2');
unicode-range: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
font-family: 'Montserrat';
font-style: normal;
font-weight: 400;
src: local('Montserrat Regular'), local('Montserrat-Regular'), url(https://fonts.gstatic.com/s/montserrat/v12/JTUSjIg1_i6t8kCHKm459Wdhyzbi.woff2) format('woff2');
unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
font-family: 'Montserrat';
font-style: normal;
font-weight: 400;
src: local('Montserrat Regular'), local('Montserrat-Regular'), url(https://fonts.gstatic.com/s/montserrat/v12/JTUSjIg1_i6t8kCHKm459Wlhyw.woff2) format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/*-----------*/
body {
margin: 0;
font-family: 'Montserrat', sans-serif;

View File

@ -1,40 +0,0 @@
/* cyrillic-ext */
@font-face {
font-family: 'Montserrat';
font-style: normal;
font-weight: 400;
src: local('Montserrat Regular'), local('Montserrat-Regular'), url(https://fonts.gstatic.com/s/montserrat/v12/JTUSjIg1_i6t8kCHKm459WRhyzbi.woff2) format('woff2');
unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
font-family: 'Montserrat';
font-style: normal;
font-weight: 400;
src: local('Montserrat Regular'), local('Montserrat-Regular'), url(https://fonts.gstatic.com/s/montserrat/v12/JTUSjIg1_i6t8kCHKm459W1hyzbi.woff2) format('woff2');
unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* vietnamese */
@font-face {
font-family: 'Montserrat';
font-style: normal;
font-weight: 400;
src: local('Montserrat Regular'), local('Montserrat-Regular'), url(https://fonts.gstatic.com/s/montserrat/v12/JTUSjIg1_i6t8kCHKm459WZhyzbi.woff2) format('woff2');
unicode-range: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
font-family: 'Montserrat';
font-style: normal;
font-weight: 400;
src: local('Montserrat Regular'), local('Montserrat-Regular'), url(https://fonts.gstatic.com/s/montserrat/v12/JTUSjIg1_i6t8kCHKm459Wdhyzbi.woff2) format('woff2');
unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
font-family: 'Montserrat';
font-style: normal;
font-weight: 400;
src: local('Montserrat Regular'), local('Montserrat-Regular'), url(https://fonts.gstatic.com/s/montserrat/v12/JTUSjIg1_i6t8kCHKm459Wlhyw.woff2) format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

View File

@ -130,18 +130,6 @@ export function buildWebpackClientConfig(
plugins: babelPlugins,
},
},
{
test: /\.css/,
use: ['style-loader',
{
loader: 'css-loader',
options: {
sourceMap: development,
modules: false,
},
},
],
},
],
},

View File

@ -96,6 +96,7 @@ export default ({
modules: false,
},
},
'clean-css-loader',
],
},
{