Browse Source

Merge branch 'feat_use_tinyhttp' into 'develop'

Switch from express to tiny-http

See merge request dojo/samourai-dojo!227
umbrel
kenshin-samourai 4 years ago
parent
commit
a832a8700d
  1. 2
      accounts/api-helper.js
  2. 2
      accounts/headers-rest-api.js
  3. 4
      accounts/multiaddr-rest-api.js
  4. 8
      accounts/support-rest-api.js
  5. 4
      accounts/transactions-rest-api.js
  6. 8
      accounts/unspent-rest-api.js
  7. 4
      accounts/wallet-rest-api.js
  8. 8
      accounts/xpub-rest-api.js
  9. 10
      lib/http-server/http-server.js
  10. 3722
      package-lock.json
  11. 9
      package.json
  12. 5
      tracker/tracker-rest-api.js

2
accounts/api-helper.js

@ -109,7 +109,7 @@ class ApiHelper {
* Express middleware validating if entities params are well formed * Express middleware validating if entities params are well formed
* @param {object} req - http request object * @param {object} req - http request object
* @param {object} res - http response object * @param {object} res - http response object
* @param {function} next - next express middleware * @param {function} next - next tiny-http middleware
*/ */
validateEntitiesParams(req, res, next) { validateEntitiesParams(req, res, next) {
const params = this.checkEntitiesParams(req.query) ? req.query : req.body const params = this.checkEntitiesParams(req.query) ? req.query : req.body

2
accounts/headers-rest-api.js

@ -57,7 +57,7 @@ class HeadersRestApi {
* Validate request arguments * Validate request arguments
* @param {object} req - http request object * @param {object} req - http request object
* @param {object} res - http response object * @param {object} res - http response object
* @param {function} next - next express middleware * @param {function} next - next tiny-http middleware
*/ */
validateArgsGetHeader(req, res, next) { validateArgsGetHeader(req, res, next) {
const isValidHash = validator.isHash(req.params.hash, 'sha256') const isValidHash = validator.isHash(req.params.hash, 'sha256')

4
accounts/multiaddr-rest-api.js

@ -79,7 +79,7 @@ class MultiaddrRestApi {
} finally { } finally {
if (debugApi) { if (debugApi) {
const strParams = const strParams =
`${req.query.active ? req.query.active : ''} \ `${req.query.active ? req.query.active : ''} \
${req.query.new ? req.query.new : ''} \ ${req.query.new ? req.query.new : ''} \
${req.query.pubkey ? req.query.pubkey : ''} \ ${req.query.pubkey ? req.query.pubkey : ''} \
@ -120,7 +120,7 @@ class MultiaddrRestApi {
} finally { } finally {
if (debugApi) { if (debugApi) {
const strParams = const strParams =
`${req.body.active ? req.body.active : ''} \ `${req.body.active ? req.body.active : ''} \
${req.body.new ? req.body.new : ''} \ ${req.body.new ? req.body.new : ''} \
${req.body.pubkey ? req.body.pubkey : ''} \ ${req.body.pubkey ? req.body.pubkey : ''} \

8
accounts/support-rest-api.js

@ -336,7 +336,7 @@ class SupportRestApi {
* Validate arguments related to GET xpub info requests * Validate arguments related to GET xpub info requests
* @param {object} req - http request object * @param {object} req - http request object
* @param {object} res - http response object * @param {object} res - http response object
* @param {function} next - next express middleware * @param {function} next - next tiny-http middleware
*/ */
validateArgsGetXpubInfo(req, res, next) { validateArgsGetXpubInfo(req, res, next) {
const isValidXpub = validator.isAlphanumeric(req.params.xpub) const isValidXpub = validator.isAlphanumeric(req.params.xpub)
@ -353,7 +353,7 @@ class SupportRestApi {
* Validate arguments related to GET xpub rescan requests * Validate arguments related to GET xpub rescan requests
* @param {object} req - http request object * @param {object} req - http request object
* @param {object} res - http response object * @param {object} res - http response object
* @param {function} next - next express middleware * @param {function} next - next tiny-http middleware
*/ */
validateArgsGetXpubRescan(req, res, next) { validateArgsGetXpubRescan(req, res, next) {
const isValidXpub = validator.isAlphanumeric(req.params.xpub) const isValidXpub = validator.isAlphanumeric(req.params.xpub)
@ -371,7 +371,7 @@ class SupportRestApi {
* Validate arguments related to GET xpub delete requests * Validate arguments related to GET xpub delete requests
* @param {object} req - http request object * @param {object} req - http request object
* @param {object} res - http response object * @param {object} res - http response object
* @param {function} next - next express middleware * @param {function} next - next tiny-http middleware
*/ */
validateArgsGetXpubDelete(req, res, next) { validateArgsGetXpubDelete(req, res, next) {
const isValidXpub = validator.isAlphanumeric(req.params.xpub) const isValidXpub = validator.isAlphanumeric(req.params.xpub)
@ -388,7 +388,7 @@ class SupportRestApi {
* Validate arguments related to addresses requests * Validate arguments related to addresses requests
* @param {object} req - http request object * @param {object} req - http request object
* @param {object} res - http response object * @param {object} res - http response object
* @param {function} next - next express middleware * @param {function} next - next tiny-http middleware
*/ */
validateAddress(req, res, next) { validateAddress(req, res, next) {
const isValidAddress = validator.isAlphanumeric(req.params.addr) const isValidAddress = validator.isAlphanumeric(req.params.addr)

4
accounts/transactions-rest-api.js

@ -112,7 +112,7 @@ class TransactionsRestApi {
* Validate arguments of /tx requests * Validate arguments of /tx requests
* @param {object} req - http request object * @param {object} req - http request object
* @param {object} res - http response object * @param {object} res - http response object
* @param {function} next - next express middleware * @param {function} next - next tiny-http middleware
*/ */
validateArgsGetTransaction(req, res, next) { validateArgsGetTransaction(req, res, next) {
const isValidTxid = validator.isHash(req.params.txid, 'sha256') const isValidTxid = validator.isHash(req.params.txid, 'sha256')
@ -137,7 +137,7 @@ class TransactionsRestApi {
* Validate arguments of /txs requests * Validate arguments of /txs requests
* @param {object} req - http request object * @param {object} req - http request object
* @param {object} res - http response object * @param {object} res - http response object
* @param {function} next - next express middleware * @param {function} next - next tiny-http middleware
*/ */
validateArgsGetTransactions(req, res, next) { validateArgsGetTransactions(req, res, next) {
const isValidPage = const isValidPage =

8
accounts/unspent-rest-api.js

@ -40,7 +40,7 @@ class UnspentRestApi {
) )
this.httpServer.app.post( this.httpServer.app.post(
'/unspent', '/unspent',
urlencodedParser, urlencodedParser,
authMgr.checkAuthentication.bind(authMgr), authMgr.checkAuthentication.bind(authMgr),
apiHelper.validateEntitiesParams.bind(apiHelper), apiHelper.validateEntitiesParams.bind(apiHelper),
@ -79,7 +79,7 @@ class UnspentRestApi {
} finally { } finally {
if (debugApi) { if (debugApi) {
const strParams = const strParams =
`${req.query.active ? req.query.active : ''} \ `${req.query.active ? req.query.active : ''} \
${req.query.new ? req.query.new : ''} \ ${req.query.new ? req.query.new : ''} \
${req.query.pubkey ? req.query.pubkey : ''} \ ${req.query.pubkey ? req.query.pubkey : ''} \
@ -120,7 +120,7 @@ class UnspentRestApi {
} finally { } finally {
if (debugApi) { if (debugApi) {
const strParams = const strParams =
`${req.body.active ? req.body.active : ''} \ `${req.body.active ? req.body.active : ''} \
${req.body.new ? req.body.new : ''} \ ${req.body.new ? req.body.new : ''} \
${req.body.pubkey ? req.body.pubkey : ''} \ ${req.body.pubkey ? req.body.pubkey : ''} \
@ -134,4 +134,4 @@ class UnspentRestApi {
} }
module.exports = UnspentRestApi module.exports = UnspentRestApi

4
accounts/wallet-rest-api.js

@ -78,7 +78,7 @@ class WalletRestApi {
} finally { } finally {
if (debugApi) { if (debugApi) {
const strParams = const strParams =
`${req.query.active ? req.query.active : ''} \ `${req.query.active ? req.query.active : ''} \
${req.query.new ? req.query.new : ''} \ ${req.query.new ? req.query.new : ''} \
${req.query.pubkey ? req.query.pubkey : ''} \ ${req.query.pubkey ? req.query.pubkey : ''} \
@ -119,7 +119,7 @@ class WalletRestApi {
} finally { } finally {
if (debugApi) { if (debugApi) {
const strParams = const strParams =
`${req.body.active ? req.body.active : ''} \ `${req.body.active ? req.body.active : ''} \
${req.body.new ? req.body.new : ''} \ ${req.body.new ? req.body.new : ''} \
${req.body.pubkey ? req.body.pubkey : ''} \ ${req.body.pubkey ? req.body.pubkey : ''} \

8
accounts/xpub-rest-api.js

@ -404,7 +404,7 @@ class XPubRestApi {
* Validate arguments of postXpub requests * Validate arguments of postXpub requests
* @param {object} req - http request object * @param {object} req - http request object
* @param {object} res - http response object * @param {object} res - http response object
* @param {function} next - next express middleware * @param {function} next - next tiny-http middleware
*/ */
validateArgsPostXpub(req, res, next) { validateArgsPostXpub(req, res, next) {
const isValidXpub = validator.isAlphanumeric(req.body.xpub) const isValidXpub = validator.isAlphanumeric(req.body.xpub)
@ -436,7 +436,7 @@ class XPubRestApi {
* Validate arguments of getXpub requests * Validate arguments of getXpub requests
* @param {object} req - http request object * @param {object} req - http request object
* @param {object} res - http response object * @param {object} res - http response object
* @param {function} next - next express middleware * @param {function} next - next tiny-http middleware
*/ */
validateArgsGetXpub(req, res, next) { validateArgsGetXpub(req, res, next) {
const isValidXpub = validator.isAlphanumeric(req.params.xpub) const isValidXpub = validator.isAlphanumeric(req.params.xpub)
@ -456,7 +456,7 @@ class XPubRestApi {
* Validate arguments of postLockXpub requests * Validate arguments of postLockXpub requests
* @param {object} req - http request object * @param {object} req - http request object
* @param {object} res - http response object * @param {object} res - http response object
* @param {function} next - next express middleware * @param {function} next - next tiny-http middleware
*/ */
validateArgsPostLockXpub(req, res, next) { validateArgsPostLockXpub(req, res, next) {
const isValidXpub = validator.isAlphanumeric(req.params.xpub) const isValidXpub = validator.isAlphanumeric(req.params.xpub)
@ -480,7 +480,7 @@ class XPubRestApi {
* Validate arguments of deleteXpub requests * Validate arguments of deleteXpub requests
* @param {object} req - http request object * @param {object} req - http request object
* @param {object} res - http response object * @param {object} res - http response object
* @param {function} next - next express middleware * @param {function} next - next tiny-http middleware
*/ */
validateArgsDeleteXpub(req, res, next) { validateArgsDeleteXpub(req, res, next) {
const isValidXpub = validator.isAlphanumeric(req.params.xpub) const isValidXpub = validator.isAlphanumeric(req.params.xpub)

10
lib/http-server/http-server.js

@ -4,8 +4,8 @@
*/ */
'use strict' 'use strict'
const fs = require('fs') const { App } = require('@tinyhttp/app')
const express = require('express') const sirv = require('sirv')
const helmet = require('helmet') const helmet = require('helmet')
const Logger = require('../logger') const Logger = require('../logger')
const errors = require('../errors'); const errors = require('../errors');
@ -29,12 +29,12 @@ class HttpServer {
// Listening server instance // Listening server instance
this.server = null this.server = null
// Initialize the express app // Initialize the tiny-http app
this.app = express() this.app = new App();
this.app.set('trust proxy', 'loopback') this.app.set('trust proxy', 'loopback')
// Middlewares for json responses and requests logging // Middlewares for json responses and requests logging
this.app.use('/static', express.static('../static')); this.app.use('/static', sirv('../static'));
this.app.use(HttpServer.setJSONResponse) this.app.use(HttpServer.setJSONResponse)
this.app.use(HttpServer.requestLogger) this.app.use(HttpServer.requestLogger)
this.app.use(HttpServer.setCrossOrigin) this.app.use(HttpServer.setCrossOrigin)

3722
package-lock.json

File diff suppressed because it is too large

9
package.json

@ -14,22 +14,23 @@
"license": "AGPL-3.0-only", "license": "AGPL-3.0-only",
"homepage": "https://code.samourai.io/dojo/samourai-dojo", "homepage": "https://code.samourai.io/dojo/samourai-dojo",
"dependencies": { "dependencies": {
"@tinyhttp/app": "1.3.3",
"async-sema": "2.1.2", "async-sema": "2.1.2",
"axios": "0.21.1", "axios": "0.21.1",
"bip39": "2.4.0", "bip39": "2.4.0",
"bitcoind-rpc-client": "0.3.1", "bitcoind-rpc-client": "0.3.1",
"bitcoinjs-lib": "5.1.4", "bitcoinjs-lib": "5.1.4",
"bitcoinjs-message": "1.0.1", "bitcoinjs-message": "1.0.1",
"body-parser": "1.18.3", "body-parser": "1.19.0",
"express": "4.16.3",
"express-jwt": "5.3.1",
"helmet": "3.23.3", "helmet": "3.23.3",
"lodash": "4.17.19", "jsonwebtoken": "8.5.1",
"lodash": "4.17.21",
"lru-cache": "4.0.2", "lru-cache": "4.0.2",
"minimist": "1.2.3", "minimist": "1.2.3",
"mysql": "2.16.0", "mysql": "2.16.0",
"passport": "0.4.0", "passport": "0.4.0",
"passport-localapikey-update": "0.6.0", "passport-localapikey-update": "0.6.0",
"sirv": "1.0.11",
"socks-proxy-agent": "4.0.1", "socks-proxy-agent": "4.0.1",
"validator": "10.8.0", "validator": "10.8.0",
"websocket": "1.0.28", "websocket": "1.0.28",

5
tracker/tracker-rest-api.js

@ -4,10 +4,7 @@
*/ */
'use strict' 'use strict'
const qs = require('querystring')
const validator = require('validator') const validator = require('validator')
const bodyParser = require('body-parser')
const Logger = require('../lib/logger')
const errors = require('../lib/errors') const errors = require('../lib/errors')
const authMgr = require('../lib/auth/authorizations-manager') const authMgr = require('../lib/auth/authorizations-manager')
const HttpServer = require('../lib/http-server/http-server') const HttpServer = require('../lib/http-server/http-server')
@ -29,8 +26,6 @@ class TrackerRestApi {
this.httpServer = httpServer this.httpServer = httpServer
this.tracker = tracker this.tracker = tracker
const urlencodedParser = bodyParser.urlencoded({ extended: true })
// Establish routes. Proxy server strips /pushtx // Establish routes. Proxy server strips /pushtx
this.httpServer.app.get( this.httpServer.app.get(
`/${keys.prefixes.support}/rescan`, `/${keys.prefixes.support}/rescan`,

Loading…
Cancel
Save