Browse Source

Add endpoint to fetch Bitcoin price via Tor (#53)

0.2.7
Lounès Ksouri 4 years ago
committed by GitHub
parent
commit
63c1371709
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 2
      README.md
  2. 2
      app.js
  3. 1
      package.json
  4. 28
      routes/v1/external.js
  5. 2
      utils/const.js
  6. 19
      yarn.lock

2
README.md

@ -61,6 +61,8 @@ Set the following environment variables directly or by placing them in `.env` fi
| `UPDATE_SIGNAL_FILE` | Path to write the update signal file | `/signals/update` |
| `UPDATE_LOCK_FILE` | Path to the update lock file | `/statuses/update-in-progress` |
| `BACKUP_STATUS_FILE` | Path to backup status file | `/statuses/backup-status.json` |
| `TOR_PROXY_IP` | IP or domain where Tor proxy is listening | `192.168.0.1` |
| `TOR_PROXY_PORT` | Port where Tor proxy is listening | `9050` |
### Step 3. Run manager
```sh

2
app.js

@ -21,6 +21,7 @@ const logger = require('utils/logger.js');
const ping = require('routes/ping.js');
const account = require('routes/v1/account.js');
const system = require('routes/v1/system.js');
const external = require('routes/v1/external.js');
const app = express();
@ -40,6 +41,7 @@ app.use(morgan(logger.morganConfiguration));
app.use('/ping', ping);
app.use('/v1/account', account);
app.use('/v1/system', system);
app.use('/v1/external', external);
app.use(errorHandleMiddleware);
app.use((req, res) => {

1
package.json

@ -35,6 +35,7 @@
"passport-jwt": "^4.0.0",
"request-promise": "^4.2.2",
"semver": "^7.3.2",
"socks-proxy-agent": "^5.0.0",
"uuid": "^8.0.0",
"validator": "^13.0.0",
"winston": "^3.0.0-rc5",

28
routes/v1/external.js

@ -0,0 +1,28 @@
const express = require('express');
const router = express.Router();
const auth = require('middlewares/auth.js');
const constants = require('utils/const.js');
const safeHandler = require('utils/safeHandler');
const {SocksProxyAgent} = require('socks-proxy-agent');
const axios = require('axios');
const agent = new SocksProxyAgent(`socks5h://${constants.TOR_PROXY_IP}:${constants.TOR_PROXY_PORT}`);
router.get('/price', auth.jwt, safeHandler(async(req, res) => {
const response = await axios({
url: 'https://min-api.cryptocompare.com/data/price?fsym=BTC&tsyms=USD',
httpsAgent: agent,
method: 'GET'
});
if (response.data) {
return res.status(constants.STATUS_CODES.OK).json(response.data);
}
return res.status(constants.STATUS_CODES.BAD_GATEWAY).json();
}));
module.exports = router;

2
utils/const.js

@ -29,6 +29,8 @@ module.exports = {
UPDATE_SIGNAL_FILE: process.env.UPDATE_SIGNAL_FILE || '/signals/update',
UPDATE_LOCK_FILE: process.env.UPDATE_LOCK_FILE || '/statuses/update-in-progress',
BACKUP_STATUS_FILE: process.env.BACKUP_STATUS_FILE || '/statuses/backup-status.json',
TOR_PROXY_IP: process.env.TOR_PROXY_IP || '192.168.0.1',
TOR_PROXY_PORT: process.env.TOR_PROXY_PORT || 9050,
STATUS_CODES: {
ACCEPTED: 202,
BAD_GATEWAY: 502,

19
yarn.lock

@ -2681,7 +2681,7 @@ ip-regex@^2.0.0, ip-regex@^2.1.0:
resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9"
integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=
ip@1.1.5:
ip@1.1.5, ip@^1.1.5:
version "1.1.5"
resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a"
integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=
@ -5295,6 +5295,23 @@ socks-proxy-agent@^4.0.0:
agent-base "~4.2.1"
socks "~2.3.2"
socks-proxy-agent@^5.0.0:
version "5.0.0"
resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-5.0.0.tgz#7c0f364e7b1cf4a7a437e71253bed72e9004be60"
integrity sha512-lEpa1zsWCChxiynk+lCycKuC502RxDWLKJZoIhnxrWNjLSDGYRFflHA1/228VkRcnv9TIb8w98derGbpKxJRgA==
dependencies:
agent-base "6"
debug "4"
socks "^2.3.3"
socks@^2.3.3:
version "2.4.4"
resolved "https://registry.yarnpkg.com/socks/-/socks-2.4.4.tgz#f1a3382e7814ae28c97bb82a38bc1ac24b21cca2"
integrity sha512-7LmHN4IHj1Vpd/k8D872VGCHJ6yIVyeFkfIBExRmGPYQ/kdUkpdg9eKh9oOzYYYKQhuxavayJHTnmBG+EzluUA==
dependencies:
ip "^1.1.5"
smart-buffer "^4.1.0"
socks@~2.3.2:
version "2.3.3"
resolved "https://registry.yarnpkg.com/socks/-/socks-2.3.3.tgz#01129f0a5d534d2b897712ed8aceab7ee65d78e3"

Loading…
Cancel
Save