Skip to content

Commit e41a087

Browse files
author
Ayanami
committed
Added configurable user-agent for axios
Will use `mempool/v${backendInfo.getBackendInfo().version}` for default
1 parent 9d5bbf1 commit e41a087

File tree

6 files changed

+33
-3
lines changed

6 files changed

+33
-3
lines changed

Diff for: backend/mempool-config.sample.json

+1
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
"EXTERNAL_ASSETS": [],
1919
"EXTERNAL_MAX_RETRY": 10,
2020
"EXTERNAL_RETRY_INTERVAL": 60,
21+
"USER_AGENT": "mempool",
2122
"STDOUT_LOG_MIN_PRIORITY": "debug"
2223
},
2324
"CORE_RPC": {

Diff for: backend/src/api/bisq/bisq.ts

+11-1
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import { BisqBlocks, BisqBlock, BisqTransaction, BisqStats, BisqTrade } from './
88
import { Common } from '../common';
99
import { BlockExtended } from '../../mempool.interfaces';
1010
import { StaticPool } from 'node-worker-threads-pool';
11+
import backendInfo from '../backend-info';
1112
import logger from '../../logger';
1213

1314
class Bisq {
@@ -148,13 +149,22 @@ class Bisq {
148149
}
149150
private async updatePrice() {
150151
type axiosOptions = {
152+
headers: {
153+
'User-Agent': string
154+
};
155+
timeout: number;
151156
httpAgent?: http.Agent;
152157
httpsAgent?: https.Agent;
153158
}
154159
const setDelay = (secs: number = 1): Promise<void> => new Promise(resolve => setTimeout(() => resolve(), secs * 1000));
155160
const BISQ_URL = (config.SOCKS5PROXY.ENABLED === true) && (config.SOCKS5PROXY.USE_ONION === true) ? config.PRICE_DATA_SERVER.BISQ_ONION : config.PRICE_DATA_SERVER.BISQ_URL;
156161
const isHTTP = (new URL(BISQ_URL).protocol.split(':')[0] === 'http') ? true : false;
157-
const axiosOptions: axiosOptions = {};
162+
const axiosOptions: axiosOptions = {
163+
headers: {
164+
'User-Agent': (config.MEMPOOL.USER_AGENT === 'mempool') ? `mempool/v${backendInfo.getBackendInfo().version}` : `${config.MEMPOOL.USER_AGENT}`
165+
},
166+
timeout: config.SOCKS5PROXY.ENABLED ? 30000 : 10000
167+
};
158168
let retry = 0;
159169

160170
if (config.SOCKS5PROXY.ENABLED) {

Diff for: backend/src/api/fiat-conversion.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ class FiatConversion {
5555
const isHTTP = (new URL(fiatConversionUrl).protocol.split(':')[0] === 'http') ? true : false;
5656
const axiosOptions: axiosOptions = {
5757
headers: {
58-
'User-Agent': `mempool/v${backendInfo.getBackendInfo().version}`
58+
'User-Agent': (config.MEMPOOL.USER_AGENT === 'mempool') ? `mempool/v${backendInfo.getBackendInfo().version}` : `${config.MEMPOOL.USER_AGENT}`
5959
},
6060
timeout: config.SOCKS5PROXY.ENABLED ? 30000 : 10000
6161
};

Diff for: backend/src/config.ts

+2
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ interface IConfig {
2020
EXTERNAL_ASSETS: string[];
2121
EXTERNAL_MAX_RETRY: number;
2222
EXTERNAL_RETRY_INTERVAL: number;
23+
USER_AGENT: string;
2324
STDOUT_LOG_MIN_PRIORITY: 'emerg' | 'alert' | 'crit' | 'err' | 'warn' | 'notice' | 'info' | 'debug';
2425
};
2526
ESPLORA: {
@@ -108,6 +109,7 @@ const defaults: IConfig = {
108109
'EXTERNAL_ASSETS': [],
109110
'EXTERNAL_MAX_RETRY': 10,
110111
'EXTERNAL_RETRY_INTERVAL': 60,
112+
'USER_AGENT': 'mempool',
111113
'STDOUT_LOG_MIN_PRIORITY': 'debug',
112114
},
113115
'ESPLORA': {

Diff for: backend/src/sync-assets.ts

+7
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import axios, { AxiosResponse } from 'axios';
22
import * as fs from 'fs';
33
import config from './config';
4+
import backendInfo from './api/backend-info';
45
import logger from './logger';
56
import { SocksProxyAgent } from 'socks-proxy-agent';
67

@@ -42,6 +43,9 @@ class SyncAssets {
4243

4344
logger.info(`Downloading external asset ${fileName} over the Tor network...`);
4445
return axios.get(url, {
46+
headers: {
47+
'User-Agent': (config.MEMPOOL.USER_AGENT === 'mempool') ? `mempool/v${backendInfo.getBackendInfo().version}` : `${config.MEMPOOL.USER_AGENT}`
48+
},
4549
httpAgent: agent,
4650
httpsAgent: agent,
4751
responseType: 'stream',
@@ -57,6 +61,9 @@ class SyncAssets {
5761
} else {
5862
logger.info(`Downloading external asset ${fileName} over clearnet...`);
5963
return axios.get(url, {
64+
headers: {
65+
'User-Agent': (config.MEMPOOL.USER_AGENT === 'mempool') ? `mempool/v${backendInfo.getBackendInfo().version}` : `${config.MEMPOOL.USER_AGENT}`
66+
},
6067
responseType: 'stream',
6168
timeout: 30000
6269
}).then(function (response) {

Diff for: backend/src/tasks/pools-updater.ts

+11-1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import axios, { AxiosResponse } from 'axios';
22
import poolsParser from '../api/pools-parser';
33
import config from '../config';
44
import DB from '../database';
5+
import backendInfo from '../api/backend-info';
56
import logger from '../logger';
67
import { SocksProxyAgent } from 'socks-proxy-agent';
78
import * as https from 'https';
@@ -113,10 +114,19 @@ class PoolsUpdater {
113114
*/
114115
private async query(path): Promise<object | undefined> {
115116
type axiosOptions = {
117+
headers: {
118+
'User-Agent': string
119+
};
120+
timeout: number;
116121
httpsAgent?: https.Agent;
117122
}
118123
const setDelay = (secs: number = 1): Promise<void> => new Promise(resolve => setTimeout(() => resolve(), secs * 1000));
119-
const axiosOptions: axiosOptions = {};
124+
const axiosOptions: axiosOptions = {
125+
headers: {
126+
'User-Agent': (config.MEMPOOL.USER_AGENT === 'mempool') ? `mempool/v${backendInfo.getBackendInfo().version}` : `${config.MEMPOOL.USER_AGENT}`
127+
},
128+
timeout: config.SOCKS5PROXY.ENABLED ? 30000 : 10000
129+
};
120130
let retry = 0;
121131

122132
if (config.SOCKS5PROXY.ENABLED) {

0 commit comments

Comments
 (0)