master
Björn 4 years ago
parent 5a8b3500c3
commit bfa6c9e5ed

@ -0,0 +1 @@
require('./src/bootstrap.js')

201
package-lock.json generated

@ -4,6 +4,19 @@
"lockfileVersion": 1, "lockfileVersion": 1,
"requires": true, "requires": true,
"dependencies": { "dependencies": {
"@types/jsonwebtoken": {
"version": "8.5.0",
"resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-8.5.0.tgz",
"integrity": "sha512-9bVao7LvyorRGZCw0VmH/dr7Og+NdjYSsKAxB43OQoComFbBgsEpoR9JW6+qSq/ogwVBg8GI2MfAlk4SYI4OLg==",
"requires": {
"@types/node": "*"
}
},
"@types/node": {
"version": "14.14.22",
"resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.22.tgz",
"integrity": "sha512-g+f/qj/cNcqKkc3tFqlXOYjrmZA+jNBiDzbP3kH+B+otKFqAdPgVTGP1IeKRdMml/aE69as5S4FqtxAbl+LaMw=="
},
"abstract-logging": { "abstract-logging": {
"version": "2.0.1", "version": "2.0.1",
"resolved": "https://registry.npmjs.org/abstract-logging/-/abstract-logging-2.0.1.tgz", "resolved": "https://registry.npmjs.org/abstract-logging/-/abstract-logging-2.0.1.tgz",
@ -55,6 +68,11 @@
"concat-map": "0.0.1" "concat-map": "0.0.1"
} }
}, },
"buffer-equal-constant-time": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz",
"integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk="
},
"concat-map": { "concat-map": {
"version": "0.0.1", "version": "0.0.1",
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
@ -88,6 +106,19 @@
"resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
"integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA="
}, },
"dotenv": {
"version": "8.2.0",
"resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.2.0.tgz",
"integrity": "sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw=="
},
"ecdsa-sig-formatter": {
"version": "1.0.11",
"resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz",
"integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==",
"requires": {
"safe-buffer": "^5.0.1"
}
},
"ee-first": { "ee-first": {
"version": "1.1.1", "version": "1.1.1",
"resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
@ -143,6 +174,14 @@
"resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz", "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz",
"integrity": "sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA==" "integrity": "sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA=="
}, },
"fastfall": {
"version": "1.5.1",
"resolved": "https://registry.npmjs.org/fastfall/-/fastfall-1.5.1.tgz",
"integrity": "sha1-P+4DMxpJ0dObPN96XpzWb0dee5Q=",
"requires": {
"reusify": "^1.0.0"
}
},
"fastify": { "fastify": {
"version": "3.9.2", "version": "3.9.2",
"resolved": "https://registry.npmjs.org/fastify/-/fastify-3.9.2.tgz", "resolved": "https://registry.npmjs.org/fastify/-/fastify-3.9.2.tgz",
@ -166,11 +205,60 @@
"tiny-lru": "^7.0.0" "tiny-lru": "^7.0.0"
} }
}, },
"fastify-bearer-auth": {
"version": "5.0.2",
"resolved": "https://registry.npmjs.org/fastify-bearer-auth/-/fastify-bearer-auth-5.0.2.tgz",
"integrity": "sha512-0DCOvTZGVadvMzsErpMv5mlwJcHcQ4eVRdRyC4Y88lKmOszKpjndp/dIdM1rRKrsmatMDJ4RjkPMRq6Wm4JnGw==",
"requires": {
"fastify-plugin": "^2.0.0"
},
"dependencies": {
"fastify-plugin": {
"version": "2.3.4",
"resolved": "https://registry.npmjs.org/fastify-plugin/-/fastify-plugin-2.3.4.tgz",
"integrity": "sha512-I+Oaj6p9oiRozbam30sh39BiuiqBda7yK2nmSPVwDCfIBlKnT8YB3MY+pRQc2Fcd07bf6KPGklHJaQ2Qu81TYQ==",
"requires": {
"semver": "^7.3.2"
}
}
}
},
"fastify-error": { "fastify-error": {
"version": "0.2.0", "version": "0.2.0",
"resolved": "https://registry.npmjs.org/fastify-error/-/fastify-error-0.2.0.tgz", "resolved": "https://registry.npmjs.org/fastify-error/-/fastify-error-0.2.0.tgz",
"integrity": "sha512-zabxsBatj59ROG0fhP36zNdc5Q1/eYeH9oSF9uvfrurZf8/JKfrJbMcIGrLpLWcf89rS6L91RHWm20A/X85hcA==" "integrity": "sha512-zabxsBatj59ROG0fhP36zNdc5Q1/eYeH9oSF9uvfrurZf8/JKfrJbMcIGrLpLWcf89rS6L91RHWm20A/X85hcA=="
}, },
"fastify-jwt": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/fastify-jwt/-/fastify-jwt-2.3.0.tgz",
"integrity": "sha512-dRjkrfVpZnic1DxIjN8lyhL/KM/YQsLy6SeyPhKxRkTEJIjY3sViDqfhCUc812jSgbqM7Sx22BA7moqpmCtA3Q==",
"requires": {
"@types/jsonwebtoken": "^8.5.0",
"fastify-plugin": "^3.0.0",
"http-errors": "^1.8.0",
"jsonwebtoken": "^8.5.1",
"steed": "^1.1.3"
},
"dependencies": {
"http-errors": {
"version": "1.8.0",
"resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.0.tgz",
"integrity": "sha512-4I8r0C5JDhT5VkvI47QktDW75rNlGVsUf/8hzjCC/wkWI/jdTRmBb9aI7erSG82r1bjKY3F6k28WnsVxB1C73A==",
"requires": {
"depd": "~1.1.2",
"inherits": "2.0.4",
"setprototypeof": "1.2.0",
"statuses": ">= 1.5.0 < 2",
"toidentifier": "1.0.0"
}
},
"setprototypeof": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
"integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
}
}
},
"fastify-plugin": { "fastify-plugin": {
"version": "3.0.0", "version": "3.0.0",
"resolved": "https://registry.npmjs.org/fastify-plugin/-/fastify-plugin-3.0.0.tgz", "resolved": "https://registry.npmjs.org/fastify-plugin/-/fastify-plugin-3.0.0.tgz",
@ -192,6 +280,15 @@
"resolved": "https://registry.npmjs.org/fastify-warning/-/fastify-warning-0.2.0.tgz", "resolved": "https://registry.npmjs.org/fastify-warning/-/fastify-warning-0.2.0.tgz",
"integrity": "sha512-s1EQguBw/9qtc1p/WTY4eq9WMRIACkj+HTcOIK1in4MV5aFaQC9ZCIt0dJ7pr5bIf4lPpHvAtP2ywpTNgs7hqw==" "integrity": "sha512-s1EQguBw/9qtc1p/WTY4eq9WMRIACkj+HTcOIK1in4MV5aFaQC9ZCIt0dJ7pr5bIf4lPpHvAtP2ywpTNgs7hqw=="
}, },
"fastparallel": {
"version": "2.4.0",
"resolved": "https://registry.npmjs.org/fastparallel/-/fastparallel-2.4.0.tgz",
"integrity": "sha512-sacwQ7wwKlQXsa7TN24UvMBLZNLmVcPhmxccC9riFqb3N+fSczJL8eWdnZodZ/KijGVgNBBfvF/NeXER08uXnQ==",
"requires": {
"reusify": "^1.0.4",
"xtend": "^4.0.2"
}
},
"fastq": { "fastq": {
"version": "1.10.0", "version": "1.10.0",
"resolved": "https://registry.npmjs.org/fastq/-/fastq-1.10.0.tgz", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.10.0.tgz",
@ -200,6 +297,15 @@
"reusify": "^1.0.4" "reusify": "^1.0.4"
} }
}, },
"fastseries": {
"version": "1.7.2",
"resolved": "https://registry.npmjs.org/fastseries/-/fastseries-1.7.2.tgz",
"integrity": "sha1-0izhO5Qz3/M4jZHb1ri9qbIaD0s=",
"requires": {
"reusify": "^1.0.0",
"xtend": "^4.0.0"
}
},
"find-my-way": { "find-my-way": {
"version": "3.0.5", "version": "3.0.5",
"resolved": "https://registry.npmjs.org/find-my-way/-/find-my-way-3.0.5.tgz", "resolved": "https://registry.npmjs.org/find-my-way/-/find-my-way-3.0.5.tgz",
@ -279,6 +385,49 @@
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
"integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
}, },
"jsonwebtoken": {
"version": "8.5.1",
"resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz",
"integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==",
"requires": {
"jws": "^3.2.2",
"lodash.includes": "^4.3.0",
"lodash.isboolean": "^3.0.3",
"lodash.isinteger": "^4.0.4",
"lodash.isnumber": "^3.0.3",
"lodash.isplainobject": "^4.0.6",
"lodash.isstring": "^4.0.1",
"lodash.once": "^4.0.0",
"ms": "^2.1.1",
"semver": "^5.6.0"
},
"dependencies": {
"semver": {
"version": "5.7.1",
"resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
"integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
}
}
},
"jwa": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz",
"integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==",
"requires": {
"buffer-equal-constant-time": "1.0.1",
"ecdsa-sig-formatter": "1.0.11",
"safe-buffer": "^5.0.1"
}
},
"jws": {
"version": "3.2.2",
"resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz",
"integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==",
"requires": {
"jwa": "^1.4.1",
"safe-buffer": "^5.0.1"
}
},
"light-my-request": { "light-my-request": {
"version": "4.4.1", "version": "4.4.1",
"resolved": "https://registry.npmjs.org/light-my-request/-/light-my-request-4.4.1.tgz", "resolved": "https://registry.npmjs.org/light-my-request/-/light-my-request-4.4.1.tgz",
@ -291,6 +440,41 @@
"set-cookie-parser": "^2.4.1" "set-cookie-parser": "^2.4.1"
} }
}, },
"lodash.includes": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz",
"integrity": "sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8="
},
"lodash.isboolean": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz",
"integrity": "sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY="
},
"lodash.isinteger": {
"version": "4.0.4",
"resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz",
"integrity": "sha1-YZwK89A/iwTDH1iChAt3sRzWg0M="
},
"lodash.isnumber": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz",
"integrity": "sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w="
},
"lodash.isplainobject": {
"version": "4.0.6",
"resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
"integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs="
},
"lodash.isstring": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz",
"integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE="
},
"lodash.once": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz",
"integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w="
},
"lru-cache": { "lru-cache": {
"version": "6.0.0", "version": "6.0.0",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
@ -507,6 +691,18 @@
"resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
"integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow="
}, },
"steed": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/steed/-/steed-1.1.3.tgz",
"integrity": "sha1-8VJd1a2xLrIb90dJU3Zo1iW5q8U=",
"requires": {
"fastfall": "^1.5.0",
"fastparallel": "^2.2.0",
"fastq": "^1.3.0",
"fastseries": "^1.7.0",
"reusify": "^1.0.0"
}
},
"string-similarity": { "string-similarity": {
"version": "4.0.4", "version": "4.0.4",
"resolved": "https://registry.npmjs.org/string-similarity/-/string-similarity-4.0.4.tgz", "resolved": "https://registry.npmjs.org/string-similarity/-/string-similarity-4.0.4.tgz",
@ -548,6 +744,11 @@
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
}, },
"xtend": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
"integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ=="
},
"yallist": { "yallist": {
"version": "4.0.0", "version": "4.0.0",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",

@ -14,7 +14,10 @@
"author": "Björn Hase", "author": "Björn Hase",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"dotenv": "^8.2.0",
"fastify": "^3.9.2", "fastify": "^3.9.2",
"fastify-bearer-auth": "^5.0.2",
"fastify-jwt": "^2.3.0",
"fastify-static": "^3.3.1" "fastify-static": "^3.3.1"
} }
} }

@ -0,0 +1,16 @@
<!doctype html>
<html lang="en_EN">
<head>
<meta charset="utf-8">
<title>Tinkerforge Power</title>
<meta name="description" content="">
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body>
<h1>test<h1>
<script src="/js/index.js"></script>
</body>
</html>

@ -1,4 +1,5 @@
const schemas = require('../schemas/state.js') const schemas = require('../schemas/state.js')
const bearerAuthPlugin = require('fastify-bearer-auth')
/** /**
* *
@ -11,6 +12,8 @@ const schemas = require('../schemas/state.js')
module.exports = async function (fastify, opts) { module.exports = async function (fastify, opts) {
fastify.register(bearerAuthPlugin, process.env.TOKEN.split(','))
/** /**
* getting current status of switch * getting current status of switch
* *
@ -35,7 +38,7 @@ module.exports = async function (fastify, opts) {
* @param {object} reply * @param {object} reply
* @return {object} * @return {object}
*/ */
fastify.put('/state', schemas.postSchema, function(request, reply) { fastify.put('/state', schemas.putSchema, function(request, reply) {
reply reply
.code(200) .code(200)
.header('Content-Type', 'application/json; charset=utf-8') .header('Content-Type', 'application/json; charset=utf-8')

13
src/bootstrap.js vendored

@ -1,20 +1,27 @@
// .env file
const config = require('dotenv').config()
// logging
const fastify = require('fastify')({ const fastify = require('fastify')({
logger: true logger: true
}) })
// path for public
const path = require('path')
// adding files and plugins // adding files and plugins
fastify fastify
.register(require('./http/web.js')) .register(require('./http/web.js'))
.register(require('./api/state.js'), { 'prefix': '/api' }) .register(require('./api/state.js'), { 'prefix': '/api' })
.register(require('fastify-static'), { .register(require('fastify-static'), {
root: path.join(__dirname, 'public'), root: path.join(__dirname, '../public'),
prefix: '/public/ prefix: '/public/'
}) })
// let it rain // let it rain
const start = async () => { const start = async () => {
try { try {
await fastify.listen(3000) await fastify.listen(process.env.PORT)
fastify.log.info(`server listening on ${fastify.server.address().port}`) fastify.log.info(`server listening on ${fastify.server.address().port}`)
} catch (err) { } catch (err) {
fastify.log.error(err) fastify.log.error(err)

Loading…
Cancel
Save