Skip to content

Commit 9c259fc

Browse files
authored
Merge pull request #4 from jkyberneees/introducing-middlewares
Introducing middlewares
2 parents 7c42fa9 + ee6fd71 commit 9c259fc

File tree

6 files changed

+175
-7
lines changed

6 files changed

+175
-7
lines changed

Dockerfile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ COPY package.json .
77
COPY package-lock.json .
88
COPY index.js .
99
COPY server.js .
10+
COPY middlewares.js .
1011
COPY config ./config
1112
COPY dist ./dist
1213

README.md

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,3 +53,19 @@ Allowed `logsFormat` values are described at: https://www.npmjs.com/package/morg
5353

5454
## Cache support
5555
Caching is provided by the module: https://www.npmjs.com/package/http-cache-middleware
56+
57+
## Custom middlewares
58+
You can also introduce other features such as authentication, security protections, etc... by using custom middlewares.
59+
You can just replace the `middlewares.js` file by your own configuration.
60+
61+
Default:
62+
```js
63+
// custom middlewares set
64+
// this file is intended to be overwritten by final images
65+
const helmet = require('helmet')
66+
67+
module.exports = [
68+
helmet
69+
]
70+
```
71+
> Please note that the `helmet` middleware enabled by default. See more details here: https://www.npmjs.com/package/helmet

middlewares.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
// custom middlewares set
2+
// this file is intended to be overwritten by final images
3+
const helmet = require('helmet')
4+
5+
module.exports = [
6+
helmet
7+
]

package-lock.json

Lines changed: 136 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
{
22
"name": "restana-static",
3-
"version": "1.0.3",
4-
"description": " Efficiently serve static files using Node.js and Docker containers.",
3+
"version": "1.1.0",
4+
"description": "Efficiently serve static files using Node.js and Docker containers.",
55
"main": "index.js",
66
"scripts": {
77
"test": "mocha tests/*.test.js",
8-
"start": "node server.js"
8+
"start": "node index.js"
99
},
1010
"repository": {
1111
"type": "git",
@@ -26,6 +26,7 @@
2626
"homepage": "https://github.com/jkyberneees/restana-static#readme",
2727
"dependencies": {
2828
"config": "^3.3.1",
29+
"helmet": "^3.22.0",
2930
"http-cache-middleware": "^1.3.5",
3031
"morgan": "^1.10.0",
3132
"restana": "^4.3.4",

server.js

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ const files = require('serve-static')
33
const path = require('path')
44
const cache = require('http-cache-middleware')
55
const morgan = require('morgan')
6+
const middlewares = require('./middlewares')
67

78
module.exports = () => {
89
// configuration
@@ -19,7 +20,7 @@ module.exports = () => {
1920
'dist/'
2021
const port = PORT || config.get('port') ||
2122
3000
22-
const cacheEnabled = isCacheEnabled(CACHE_ENABLED, config)
23+
const cacheEnabled = isEnabled(CACHE_ENABLED, 'cacheEnabled', config)
2324
const cacheControlHeaderValue = CACHE_CONTROL_HEADER_VALUE || config.get('cacheControlHeaderValue') ||
2425
'public, no-cache, max-age=604800'
2526
const defaultFile = DEFALUT_FILE || config.get('defaultFile') ||
@@ -47,6 +48,13 @@ module.exports = () => {
4748

4849
return next()
4950
})
51+
52+
// supporting custom middlewares
53+
for (const middleware of middlewares) {
54+
server.use(middleware())
55+
}
56+
57+
// supporting cache
5058
if (cacheEnabled) {
5159
server.use(cache())
5260
}
@@ -58,11 +66,11 @@ module.exports = () => {
5866
}
5967
}
6068

61-
function isCacheEnabled (env, config) {
69+
function isEnabled (env, configKey, config) {
6270
if (env !== undefined) {
6371
if (env === 'true') return true
6472
else return false
6573
} else {
66-
return config.get('cacheEnabled') || true
74+
return config.get(configKey) || true
6775
}
6876
}

0 commit comments

Comments
 (0)