diff --git a/backend/src/__tests__/config.test.ts b/backend/src/__tests__/config.test.ts index 5717808dd..72533829b 100644 --- a/backend/src/__tests__/config.test.ts +++ b/backend/src/__tests__/config.test.ts @@ -106,6 +106,13 @@ describe('Mempool Backend Config', () => { BISQ_URL: 'https://bisq.markets/api', BISQ_ONION: 'http://bisqmktse2cabavbr2xjq7xw3h6g5ottemo5rolfcwt6aly6tp5fdryd.onion/api' }); + + expect(config.MAXMIND).toStrictEqual({ + ENABLED: true, + GEOLITE2_CITY: './backend/GeoIP/GeoLite2-City.mmdb', + GEOLITE2_ASN: './backend/GeoIP/GeoLite2-ASN.mmdb', + GEOIP2_ISP: '' + }); }); }); diff --git a/docker/README.md b/docker/README.md index 468d8069b..525ecb718 100644 --- a/docker/README.md +++ b/docker/README.md @@ -432,3 +432,26 @@ Corresponding `docker-compose.yml` overrides: CLIGHTNING_SOCKET: "" ... ``` + +
+ +`mempool-config.json`: +```json + "MAXMIND": { + "ENABLED": true, + "GEOLITE2_CITY": "/usr/local/share/GeoIP/GeoLite2-City.mmdb", + "GEOLITE2_ASN": "/usr/local/share/GeoIP/GeoLite2-ASN.mmdb", + "GEOIP2_ISP": "/usr/local/share/GeoIP/GeoIP2-ISP.mmdb" + } +``` + +Corresponding `docker-compose.yml` overrides: +```yaml + api: + environment: + MAXMIND_ENABLED: true, + MAXMIND_GEOLITE2_CITY: "/backend/GeoIP/GeoLite2-City.mmdb", + MAXMIND_GEOLITE2_ASN": "/backend/GeoIP/GeoLite2-ASN.mmdb", + MAXMIND_GEOIP2_ISP": "/backend/GeoIP/GeoIP2-ISP.mmdb" + ... +``` diff --git a/docker/backend/Dockerfile b/docker/backend/Dockerfile index 9be457bb2..fd5044c0f 100644 --- a/docker/backend/Dockerfile +++ b/docker/backend/Dockerfile @@ -17,6 +17,7 @@ WORKDIR /backend RUN chown 1000:1000 ./ COPY --from=builder --chown=1000:1000 /build/package ./package/ +COPY --from=builder --chown=1000:1000 /build/GeoIP ./GeoIP/ COPY --from=builder --chown=1000:1000 /build/mempool-config.json /build/start.sh /build/wait-for-it.sh ./ USER 1000 diff --git a/docker/backend/mempool-config.json b/docker/backend/mempool-config.json index 78a2c116b..1b3ac1837 100644 --- a/docker/backend/mempool-config.json +++ b/docker/backend/mempool-config.json @@ -107,5 +107,11 @@ "LIQUID_ONION": "__EXTERNAL_DATA_SERVER_LIQUID_ONION__", "BISQ_URL": "__EXTERNAL_DATA_SERVER_BISQ_URL__", "BISQ_ONION": "__EXTERNAL_DATA_SERVER_BISQ_ONION__" + }, + "MAXMIND": { + "ENABLED": __MAXMIND_ENABLED__, + "GEOLITE2_CITY": "__MAXMIND_GEOLITE2_CITY__", + "GEOLITE2_ASN": "__MAXMIND_GEOLITE2_ASN__", + "GEOIP2_ISP": "__MAXMIND_GEOIP2_ISP__" } -} \ No newline at end of file +} diff --git a/docker/backend/start.sh b/docker/backend/start.sh index ee5069386..fced20974 100755 --- a/docker/backend/start.sh +++ b/docker/backend/start.sh @@ -22,7 +22,6 @@ __MEMPOOL_EXTERNAL_MAX_RETRY__=${MEMPOOL_EXTERNAL_MAX_RETRY:=1} __MEMPOOL_EXTERNAL_RETRY_INTERVAL__=${MEMPOOL_EXTERNAL_RETRY_INTERVAL:=0} __MEMPOOL_USER_AGENT__=${MEMPOOL_USER_AGENT:=mempool} __MEMPOOL_STDOUT_LOG_MIN_PRIORITY__=${MEMPOOL_STDOUT_LOG_MIN_PRIORITY:=info} -__MEMPOOL_INDEXING_BLOCKS_AMOUNT__=${MEMPOOL_INDEXING_BLOCKS_AMOUNT:=false} __MEMPOOL_AUTOMATIC_BLOCK_REINDEXING__=${MEMPOOL_AUTOMATIC_BLOCK_REINDEXING:=false} __MEMPOOL_POOLS_JSON_URL__=${MEMPOOL_POOLS_JSON_URL:=https://raw.githubusercontent.com/mempool/mining-pools/master/pools-v2.json} __MEMPOOL_POOLS_JSON_TREE_URL__=${MEMPOOL_POOLS_JSON_TREE_URL:=https://api.github.com/repos/mempool/mining-pools/git/trees/master} @@ -112,6 +111,13 @@ __LND_REST_API_URL__=${LND_REST_API_URL:="https://localhost:8080"} # CLN __CLIGHTNING_SOCKET__=${CLIGHTNING_SOCKET:=""} +# MAXMIND +__MAXMIND_ENABLED__=${MAXMIND_ENABLED:=true} +__MAXMIND_GEOLITE2_CITY__=${MAXMIND_GEOLITE2_CITY:="/backend/GeoIP/GeoLite2-City.mmdb"} +__MAXMIND_GEOLITE2_ASN__=${MAXMIND_GEOLITE2_ASN:="/backend/GeoIP/GeoLite2-ASN.mmdb"} +__MAXMIND_GEOIP2_ISP__=${MAXMIND_GEOIP2_ISP:=""} + + mkdir -p "${__MEMPOOL_CACHE_DIR__}" sed -i "s/__MEMPOOL_NETWORK__/${__MEMPOOL_NETWORK__}/g" mempool-config.json @@ -135,7 +141,6 @@ sed -i "s!__MEMPOOL_EXTERNAL_MAX_RETRY__!${__MEMPOOL_EXTERNAL_MAX_RETRY__}!g" me sed -i "s!__MEMPOOL_EXTERNAL_RETRY_INTERVAL__!${__MEMPOOL_EXTERNAL_RETRY_INTERVAL__}!g" mempool-config.json sed -i "s!__MEMPOOL_USER_AGENT__!${__MEMPOOL_USER_AGENT__}!g" mempool-config.json sed -i "s/__MEMPOOL_STDOUT_LOG_MIN_PRIORITY__/${__MEMPOOL_STDOUT_LOG_MIN_PRIORITY__}/g" mempool-config.json -sed -i "s/__MEMPOOL_INDEXING_BLOCKS_AMOUNT__/${__MEMPOOL_INDEXING_BLOCKS_AMOUNT__}/g" mempool-config.json sed -i "s/__MEMPOOL_AUTOMATIC_BLOCK_REINDEXING__/${__MEMPOOL_AUTOMATIC_BLOCK_REINDEXING__}/g" mempool-config.json sed -i "s!__MEMPOOL_POOLS_JSON_URL__!${__MEMPOOL_POOLS_JSON_URL__}!g" mempool-config.json sed -i "s!__MEMPOOL_POOLS_JSON_TREE_URL__!${__MEMPOOL_POOLS_JSON_TREE_URL__}!g" mempool-config.json @@ -215,4 +220,11 @@ sed -i "s!__LND_REST_API_URL__!${__LND_REST_API_URL__}!g" mempool-config.json # CLN sed -i "s!__CLIGHTNING_SOCKET__!${__CLIGHTNING_SOCKET__}!g" mempool-config.json +# MAXMIND +sed -i "s!__MAXMIND_ENABLED__!${__MAXMIND_ENABLED__}!g" mempool-config.json +sed -i "s!__MAXMIND_GEOLITE2_CITY__!${__MAXMIND_GEOLITE2_CITY__}!g" mempool-config.json +sed -i "s!__MAXMIND_GEOLITE2_ASN__!${__MAXMIND_GEOLITE2_ASN__}!g" mempool-config.json +sed -i "s!__MAXMIND_GEOIP2_ISP__!${__MAXMIND_GEOIP2_ISP__}!g" mempool-config.json + + node /backend/package/index.js diff --git a/docker/init.sh b/docker/init.sh index 4eb06f0c1..ee9ac9542 100755 --- a/docker/init.sh +++ b/docker/init.sh @@ -3,6 +3,11 @@ #backend cp ./docker/backend/* ./backend/ +#geoip-data +mkdir -p ./backend/GeoIP/ +wget -O ./backend/GeoIP/GeoLite2-City.mmdb https://raw.githubusercontent.com/mempool/geoip-data/master/GeoLite2-City.mmdb +wget -O ./backend/GeoIP/GeoLite2-ASN.mmdb https://raw.githubusercontent.com/mempool/geoip-data/master/GeoLite2-ASN.mmdb + #frontend localhostIP="127.0.0.1" cp ./docker/frontend/* ./frontend