Dockerfile fix

This commit is contained in:
2023-03-10 02:16:28 -04:00
parent 001bebe75a
commit f02ec2cad2
12 changed files with 166 additions and 99 deletions

View File

@@ -1,20 +1,17 @@
{ {
"module": { "web": {
"issuers": ["accounts.bitdeals.org"], "issuers": ["accounts.bitdeals.org"],
"scopes": ["bitdeals"], "scopes": ["api","openid","profile","email"],
"client_id": "dm-bitdeals.org", "client_id": "web-bitdeals.org",
"client_secret": "", "client_secret": "4aJEJi3dsSypeUSRCah4gIIs",
"algorithm": "HS256", "algorithm": "HS256",
"auth_uri": "/oauth2/authorize", "auth_uri": "/oauth2/authorize",
"token_uri": "/oauth2/token", "token_uri": "/oauth2/token",
"redirect_uris": [ "redirect_uris": [
"http://localhost:4977/oauth2/code", "http://localhost:4999/oauth2/code",
"http://localhost:4999/dashboard/", "http://localhost:4999/oauth2/callback",
"https://oauthdebugger.com/debug" "https://oauthdebugger.com/debug",
], "https://auth.advancedrestclient.com/oauth-popup.html"
"javascript_origins": [
"http://localhost:4999",
"http://95.217.251.153:4999"
] ]
} }
} }

View File

@@ -1,4 +1,11 @@
{ {
"hosts": ["localhost:4999"], "hosts": ["localhost:4999"],
"root": "/etc/dm/www" "root": "/var/www/web",
"oauth2": {
"identifier": "/oauth/identifier",
"secret": "/oauth/secret",
"callback": "/",
"error": "/oauth/error",
"debug": "http://localhost:3000/"
}
} }

23
docker-compose.yml Normal file
View File

@@ -0,0 +1,23 @@
version: "3"
services:
bitdeals-module:
image: bitdeals/apostol-dm
environment:
- DM_TESTNET=0
- DM_BITCOIN=
- DM_FEE=0.1%
- |
DM_PGP_SEC=
-----BEGIN PGP PRIVATE KEY BLOCK-----
-----END PGP PRIVATE KEY BLOCK-----
volumes:
- dm:/etc/dm
ports:
- 4999:4999
- 80:80
volumes:
dm:

View File

@@ -12,7 +12,7 @@ FROM debian:bullseye AS updated-debian
SHELL ["/bin/bash", "-exo", "pipefail", "-c"] SHELL ["/bin/bash", "-exo", "pipefail", "-c"]
LABEL name="BitDeals Module" LABEL name="BitDeals Module"
EXPOSE 4999 80 EXPOSE 4999/tcp 80/tcp
## Debian update; install dependencies ## Debian update; install dependencies
ARG DEBIAN_FRONTEND=noninteractive ARG DEBIAN_FRONTEND=noninteractive
@@ -80,15 +80,16 @@ RUN su -l --shell /bin/bash $UNAME -c 'cd '$UHOME' ; \
./configure ; \ ./configure ; \
cd cmake-build-release ; \ cd cmake-build-release ; \
make' ; \ make' ; \
git config --global --add safe.directory $UHOME/apostol-dm ;\
cd $UHOME/apostol-dm/cmake-build-release ;\ cd $UHOME/apostol-dm/cmake-build-release ;\
make install make install
## Download "build" directory from web-dm repository ## Download "build" directory from web-build repository
RUN su -l --shell /bin/bash $UNAME -c 'cd '$UHOME' ; \ RUN su -l --shell /bin/bash $UNAME -c 'cd '$UHOME' ; \
mkdir web-dm ;\ mkdir web-build ;\
cd web-dm ;\ cd web-build ;\
git init ;\ git init ;\
git remote add -f origin https://git.bitdeals.org/private/web-dm/ ;\ git remote add -f origin https://git.bitdeals.org/private/web-build/ ;\
echo build >> .git/info/sparse-checkout ;\ echo build >> .git/info/sparse-checkout ;\
git pull origin master' git pull origin master'
@@ -104,7 +105,7 @@ COPY --from=development /usr/local/ /usr/local/
COPY --from=development /etc/dm/ /etc/dm/ COPY --from=development /etc/dm/ /etc/dm/
COPY --from=development /usr/sbin/dm /usr/sbin/dm COPY --from=development /usr/sbin/dm /usr/sbin/dm
COPY --from=development /etc/init.d/dm /etc/init.d/dm COPY --from=development /etc/init.d/dm /etc/init.d/dm
COPY --from=development --chown=www-data:www-data $UHOME/web-dm/build /var/www/web COPY --from=development --chown=www-data:www-data $UHOME/web-build/build /var/www/web
COPY --from=development --chown=$UNAME:$UNAME $UHOME/apostol-dm/docker/bitdeals-test.asc /etc/dm/bitdeals-test.asc COPY --from=development --chown=$UNAME:$UNAME $UHOME/apostol-dm/docker/bitdeals-test.asc /etc/dm/bitdeals-test.asc
#COPY --from=development --chown=$UNAME:$UNAME $UHOME/apostol-dm/docker/bitdeals.asc /etc/dm/bitdeals.asc #COPY --from=development --chown=$UNAME:$UNAME $UHOME/apostol-dm/docker/bitdeals.asc /etc/dm/bitdeals.asc
COPY --from=development $UHOME/apostol-dm/docker/entrypoint.sh /entrypoint.sh COPY --from=development $UHOME/apostol-dm/docker/entrypoint.sh /entrypoint.sh

View File

@@ -1,17 +1,16 @@
<img src="/private/apostol-dm/raw/branch/master/docker/screenshots/Authorization.png" width="23%"></img> <img src="/private/apostol-dm/raw/branch/master/docker/screenshots/Account_details.png" width="23%"></img> <img src="/private/apostol-dm/raw/branch/master/docker/screenshots/Deal_information.png" width="23%"></img> <img src="/private/apostol-dm/raw/branch/master/docker/screenshots/Create_deal.png" width="23%"></img>
# Intro # Intro
Deal Module (dm) - the Bitdeals daemon that provides a special interfaces for creating and modifying user accounts and deals. Deal Module (dm) - the Bitdeals daemon that provides a special interfaces for creating and modifying user accounts and deals.
# Running DM docker container # Running DM docker container
On first run the initialization script will create, if empty, a new bitcoin and PGP keys and start the daemon. On first run the initialization script will create (if it is empty), a new bitcoin and PGP keys and start the daemon.
`docker run -i -t --rm --mount src=bitdeals-conf,dest=/etc/dm -p 127.0.0.1:4999:4999 -p 127.0.0.1:80:80 bitdeals/apostol-dm`
Daemon settings which may specified by an environment variables are saved to the daemon config files on the Docker Volume. Daemon settings which may specified by an environment variables are saved to the daemon config files on the Docker Volume.
To use the BitDeals API you should register an user account on a BitDeals site and get a "client_id", "client_secret" at the account dashboard.
# Usage # Usage
Here are some example snippets to help you get started creating a container. Here are some example snippets to help you get started creating a container.
@@ -28,8 +27,8 @@ services:
- DM_BITCOIN=<address> - DM_BITCOIN=<address>
- DM_FEE=<0.1%> - DM_FEE=<0.1%>
- DM_PGP_PASSWORD=<password> - DM_PGP_PASSWORD=<password>
- DM_FORWEB=http://127.0.0.1:4999
- DM_WEBAUTH=0 - DM_WEBAUTH=0
- DM_LC_ALL=en_US.UTF-8
- | - |
DM_PGP_SEC= DM_PGP_SEC=
-----BEGIN PGP PRIVATE KEY BLOCK----- -----BEGIN PGP PRIVATE KEY BLOCK-----
@@ -39,8 +38,10 @@ services:
volumes: volumes:
- dm:/etc/dm - dm:/etc/dm
ports: ports:
- 4999:4999 - 127.0.0.1:4999:4999
- 80:80 - 80:80
volumes:
dm:
``` ```
## docker cli ## docker cli
@@ -51,12 +52,11 @@ docker run -d \
-e DM_BITCOIN=<address> \ -e DM_BITCOIN=<address> \
-e DM_FEE=0.1% \ -e DM_FEE=0.1% \
-e DM_PGP_SEC="$(gpg2 --armor --export-secret-key Account_URL)" \ -e DM_PGP_SEC="$(gpg2 --armor --export-secret-key Account_URL)" \
-e DM_PGP_PASSWORD=<pgp key password> \
-e DM_WEBAUTH=0 \ -e DM_WEBAUTH=0 \
-e DM_LC_ALL=en_US.UTF-8 \ -e DM_LC_ALL=en_US.UTF-8 \
-p 127.0.0.1:4999:4999 \ -p 127.0.0.1:4999:4999 \
-p 127.0.0.1:80:80 \ -p 127.0.0.1:80:80 \
-v ./dm/:/etc/dm \ -v /home/dm/:/etc/dm/ \
bitdeals/apostol-dm bitdeals/apostol-dm
``` ```
@@ -67,13 +67,14 @@ Container images are configured using parameters passed at runtime.
|Parameter|Function| |Parameter|Function|
|:--------|:-------| |:--------|:-------|
|-p 80|WebUI port TCP| |-p 80|WebUI port TCP|
|-p 4999|Module API port TCP [(API documentation)](https://bitbucket.org/bitdeals/apostol-dm)| |-p 4999|dm API port [(API documentation)](/private/apostol-dm/src/branch/master/doc/REST-API-ru.md)|
|-e DM_TESTNET=|Enable bitcoin testnet mode. Default: `0`| |-e DM_TESTNET=|Enable bitcoin testnet mode. Default: `0`|
|-e DM_BITCOIN=|User account bitcoin address. Will be created if empty.| |-e DM_BITCOIN=|User account bitcoin address. Will be created if empty.|
|-e DM_FEE=|User fee for created deals. You MUST indicate the sign “%” for a percentage of the deal amount or FIXED value in satoshi. Default: `0.1%`| |-e DM_FEE=|User fee for created deals. You MUST indicate the sign "%" for a percentage of the deal amount or FIXED value in satoshi. Default: `0.1%`|
|-e DM_PGP_SEC=|Variable with ASCII armored PGP user secret key. Will be created if empty (with Account_URL in the key details).| |-e DM_PGP_SEC=|Variable with ASCII armored PGP user secret key. Will be created if empty (with Account_URL in the key details).|
|-e DM_PGP_PASSWORD=|User PGP key password.| |-e DM_PGP_PASSWORD=|User PGP key password.|
|-e DM_WEBAUTH=|Enable web user interface authentication.| |-e DM_FORWEB=|dm host for dm Web app (the host should be accessable from your browser). Default: `http://127.0.0.1:4999`|
|-e DM_LC_ALL=|Set Deal Module locale.| |-e DM_WEBAUTH=|Enable Web app user interface authentication. Default: `0`|
|-e DM_ACCOUNT_URL=|Set Account_URL for a new account non-interactive registration. Format: http[s]://<host>[:<port>]| |-e DM_LC_ALL=|Set locale for dm. Default: `en_US.UTF-8`|
|-e DM_ACCOUNT_URL=|Set Account_URL for a new account registration. Format: `http[s]://<host>[:<port>]`|

View File

@@ -1,41 +1,56 @@
-----BEGIN PGP PUBLIC KEY BLOCK----- -----BEGIN PGP PUBLIC KEY BLOCK-----
mI0EXgvhAAEEAMfgNWd+bs3F02ktGv8aDN0ORvoaSQ/0stGek3HrLQvAQpl+wKsX mI0EXgvhAAEEAND2+o1erJQ0nZo3CygW5iqTG7DZHvK0jBysPAk5KEKJld5+wIxZ
IN2UmM2S/SvHGVToq9VQi383Fs9HSR8qK1D6DgYOPM95LmTVk7wkzfWIIJk6L50/ zTkukczM2iJ2aprqr4+v2owQ2FNmUgFUsOA/hdLFDsNXdpdvuiwe0fTRFeV9nNOB
smRCZzGA97fNMClqC39zAMQYo29mDmt5o9WDDpaoekDw49mwq/p6v3nPABEBAAG0 n6P1HowrfQLOaTScvpRy4ofe9Tp4ym/Vpm46DGgZcw1j7CFxSlITRnFrABEBAAG0
DUJpdERlYWxzLXRlc3SIzgQTAQoAOBYhBCZm9kMAZKZSw6u+89rDPk0/qkSTBQJe UUJpdGNvaW5fa2V5MiAoMDJkN2Y3ZWE1YmVkZmMyMjlkNzg5ZWNkNWFhYjc2NmZj
C+EAAhsDBQsJCAcCBhUKCQgLAgQWAgMBAh4BAheAAAoJENrDPk0/qkST2dED/juh YjllZTY5OTdhYmVmZTEzNGU3NDJiYzM5YzdkMmEyMGY2KYjOBBMBAgA4FiEELD0e
fexKCN7LMAYsYA0dnuNyZYkM51Bl2/F4ZqjjdLDzxkdD/x9hJ+tfLKKjkF+zhV/a 1FyzQjWnqlGAbV80KhwzZ5AFAl4L4QACGwMFCwkIBwIGFQoJCAsCBBYCAwECHgEC
80R17OCmOPbWrgg9kh9JgHlWc3ETZrK3rAB4NWOarbY1wabYrrlBjVAqXXbDDcW2 F4AACgkQbV80KhwzZ5BYEQQAvJD1W9EtaSINrAE7ZLRDz0AsY/SNBeLom5715Ij/
uXHZb49s+v3XiLIk3fnX4ICJ2T8rHQ1FoVhR5DqbtEJCTS0yY1g4eTl1OXlFaTNm qp3CN4ASm8i4uBScyi6li4GXWSFQEYcyxvwljKLlAxxEdEuvggXSYq6B9aZFCtsj
ZHFRZm5keDlGNk5kUjVIdjc5YWRkIChodHRwOi8vOTUuMjE3LjI1MS4xNTM6NDk3 fX0N4SuhCNA+IjAosMFCrgrYsPUO4TdMka0GqTk2BnGKQI7dtqnTTMHBA0q5T99L
NymIzgQTAQgAOBYhBCZm9kMAZKZSw6u+89rDPk0/qkSTBQJeC+EAAhsDBQsJCAcC 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
JpqcNKY= 61sTAIisar32KsZ3ZznwxprNND95pkiqY7m6CMqq7GugEzVDAkX6xMmBdhTnnZrd
=WxTf FWjoDnhoT1H/pHKAgcSPdhMqmfu+LehSmYscm01kICVfwprC/UpSUT4TE0fLmvmU
PjjJUk3nsxA9spFX5nG+ikX3A/4o8yy2JbBVmUDnECnplH1t1Za8bcJesUFX9r5b
uT5RmuPs7PvExjDpatyxmTGfLf2VFezW0iel2uIzIB15SLDGE+XyH67AWwaGwwYq
RSJ7FSF3kTSVJPTz9rut1pNzjdmXC3mRkdQEtvVgxlemWUWQNrI388/aeSKrdS4S
Pr9rf7iNBF4L4QABBACwCB2/LtySds0bZzWx6L1P4/j5cc//rBbHE4VCVjSUF7/A
NJRggRe6km7FA7SzCp13QLZXcDEIFsFCOUeYJoMgzcGH8U/ROD7JKR52/0sGUx50
A0RKJPTwDQ2QRtH2janKCIJF5+/9OwTCV3GJTceE1geUpMEs+vmkfBRQEI94HwAR
AQABiQFrBBgBAgAgFiEELD0e1FyzQjWnqlGAbV80KhwzZ5AFAl4L4QACGwIAvwkQ
bV80KhwzZ5C0IAQZAQIAHRYhBI6aB0C52AuWokiA7RwvPR0NE9+dBQJeC+EAAAoJ
EBwvPR0NE9+dcZwD/AsbWKRUdHegB/mSSmnc+AYFYDWyt7Hkx0NHUohXb+nhcj4J
R8ymhY0XoUHFtZlupF6iUneEqRTOpR+vIhPTQ1Dbe9ktV0dKLTmj5GaBGVLr6mrA
vqbmq+OGMTHjRJ/10hy5hKkxY5A2jcV66NE1JW0MCH7G0L2S4HQX28vjgBc1LrkE
AMPMSAHaB2mv9+dS9EZZ3QblpYoixLuRYaZyoDvCBNdAya79c4lHuo5UR+vR7PeO
PjPcBFX+R65ICoe+d11/4vLPeAnTy2OMgGzG5Xr9Z+8QGxqZ7vDyxv9BMu/JHhBE
73z1B5mF50gRcTwoSC6uy6kY5ostOxzADL9rsg+ZoapI
=nkLW
-----END PGP PUBLIC KEY BLOCK----- -----END PGP PUBLIC KEY BLOCK-----

View File

@@ -6,18 +6,22 @@
## And can generate a Bitcoing and PGP key filies at first start. ## And can generate a Bitcoing and PGP key filies at first start.
## ##
DM_TESTNET=${DM_TESTNET:-0} ## Web app requires the dmHost address should be accessable from your browser
DM_FORWEB=${DM_FORWEB:-http://127.0.0.1:4999}
DM_WEBAUTH=${DM_WEBAUTH:-0} DM_WEBAUTH=${DM_WEBAUTH:-0}
DM_TESTNET=${DM_TESTNET:-0}
## Daemon config files ## Daemon config files
DM_CONF_FILES=$(find /etc/dm/ -type f -name "*.conf" -not -name "default.conf") CONF_FILES=$(find /etc/dm/ -type f -name "*.conf" -not -name "default.conf")
BITDEALS_PGP_FILE="/etc/dm/bitdeals.asc" BITDEALS_PGP_FILE="/etc/dm/bitdeals.asc"
BITDEALS_TEST_PGP_FILE="/etc/dm/bitdeals-test.asc" BITDEALS_TEST_PGP_FILE="/etc/dm/bitdeals-test.asc"
PGP_SEC_FILE="/etc/dm/pgp.sec" PGP_SEC_FILE="/etc/dm/pgp.sec"
BX_CONF_FILE="/usr/local/etc/libbitcoin/bx.cfg" BX_CONF_FILE="/usr/local/etc/libbitcoin/bx.cfg"
DM_WEB_CONF_FILE="/var/www/web/config.js" WEB_CONF_FILE="/var/www/web/config.js"
WEB_CONF_SITES="/etc/dm/sites/default.json"
WEB_CONF_OAUTH="/etc/dm/oauth2/default.json"
#tput variable for color output #tput variable for log color output
export TERM=xterm export TERM=xterm
## Write a default variables to dm config ## Write a default variables to dm config
@@ -25,50 +29,58 @@ sed -i -e "/\[main\]/,/\[/ s/.*user=.*/user=$UNAME/" \
-e "/\[main\]/,/\[/ s/.*group=.*/group=$UNAME/" \ -e "/\[main\]/,/\[/ s/.*group=.*/group=$UNAME/" \
-e "/\[daemon\]/,/\[/ s/.*daemon=.*/daemon=false/" \ -e "/\[daemon\]/,/\[/ s/.*daemon=.*/daemon=false/" \
-e "/\[server\]/,/\[/ s/.*listen=.*/listen=0.0.0.0/" \ -e "/\[server\]/,/\[/ s/.*listen=.*/listen=0.0.0.0/" \
-e "/\[server\]/,/\[/ s/.*port=.*/port=4999/" $DM_CONF_FILES -e "/\[server\]/,/\[/ s/.*port=.*/port=4999/" $CONF_FILES
## Change dm Website config ## Change dm Website config
sed -i 's/dmHost:.*/dmHost: "http:\/\/0.0.0.0:4999",/' $DM_WEB_CONF_FILE sed -i "s|dmHost:.*|dmHost: \"$DM_FORWEB\",|" $WEB_CONF_FILE
if [ "$DM_WEBAUTH" = 1 -o "$DM_WEBAUTH" = true ]; then if [ "$DM_WEBAUTH" = 1 -o "$DM_WEBAUTH" = true ]; then
sed -i 's/confAuthorize:.*/confAuthorize: true,/' $DM_WEB_CONF_FILE sed -i 's/confAuthorize:.*/confAuthorize: true,/' $WEB_CONF_FILE
else else
sed -i 's/confAuthorize:.*/confAuthorize: false,/' $DM_WEB_CONF_FILE sed -i 's/confAuthorize:.*/confAuthorize: false,/' $WEB_CONF_FILE
fi fi
if [ "$DM_LC_ALL" = "ru_RU.UTF-8" ]; then if [ "$DM_LC_ALL" = "ru_RU.UTF-8" ]; then
sed -i 's/defaultLanguage:.*/defaultLanguage: "ru",/' $DM_WEB_CONF_FILE sed -i 's/defaultLanguage:.*/defaultLanguage: "ru",/' $WEB_CONF_FILE
else else
sed -i 's/defaultLanguage:.*/defaultLanguage: "en",/' $DM_WEB_CONF_FILE sed -i 's/defaultLanguage:.*/defaultLanguage: "en",/' $WEB_CONF_FILE
fi fi
[ "$DM_LC_ALL" ] && \ [ "$DM_LC_ALL" ] && \
export LC_ALL="$DM_LC_ALL" export LC_ALL="$DM_LC_ALL"
## Add DM_FORWEB to dm oauth config
if ! grep -q "$DM_FORWEB" $WEB_CONF_SITES; then
sed -i "/\"hosts\":/ s|]|, \"$(basename $DM_FORWEB)\"]|" $WEB_CONF_SITES
sed -i -e "/\"redirect_uris\":/ s|$|\n\t\"$DM_FORWEB/oauth2/callback\",|" \
-e "/\"redirect_uris\":/ s|$|\n\t\"$DM_FORWEB/oauth2/code\",|" $WEB_CONF_OAUTH
fi
## Write the PGP keys locations to dm config ## Write the PGP keys locations to dm config
sed -i "/\[pgp\]/,/\[/ s%^private=.*%private=$PGP_SEC_FILE%" $DM_CONF_FILES sed -i "/\[pgp\]/,/\[/ s%^private=.*%private=$PGP_SEC_FILE%" $CONF_FILES
if [ "$DM_TESTNET" = 1 -o "$DM_TESTNET" = true ]; then if [ "$DM_TESTNET" = 1 -o "$DM_TESTNET" = true ]; then
sed -i "/\[pgp\]/,/\[/ s%^public=.*%public=$BITDEALS_TEST_PGP_FILE%" $DM_CONF_FILES sed -i "/\[pgp\]/,/\[/ s%^public=.*%public=$BITDEALS_TEST_PGP_FILE%" $CONF_FILES
else else
sed -i "/\[pgp\]/,/\[/ s%^public=.*%public=$BITDEALS_PGP_FILE%" $DM_CONF_FILES sed -i "/\[pgp\]/,/\[/ s%^public=.*%public=$BITDEALS_PGP_FILE%" $CONF_FILES
fi fi
## Write a user variables to the daemon config files. ## Write a user variables to the daemon config files.
if [ "$DM_BITCOIN" ]; then if [ "$DM_BITCOIN" ]; then
sed -i "/\[module\]/,/\[/ s/^address=.*/address=$DM_BITCOIN/" $DM_CONF_FILES sed -i "/\[module\]/,/\[/ s/^address=.*/address=$DM_BITCOIN/" $CONF_FILES
fi fi
if [ "$DM_FEE" ]; then if [ "$DM_FEE" ]; then
sed -i "/\[module\]/,/\[/ s/^#\?fee=.*/fee=$DM_FEE/" $DM_CONF_FILES sed -i "/\[module\]/,/\[/ s/^#\?fee=.*/fee=$DM_FEE/" $CONF_FILES
fi fi
if [ "$DM_PGP_PASSWORD" ] ; then if [ "$DM_PGP_PASSWORD" ] ; then
#escaping the '/' in password line #escaping the '/' in password line for use it in `sed`
DM_PGP_PASSWORD="$(echo $DM_PGP_PASSWORD | sed 's/\//\\\//g')" DM_PGP_PASSWORD="$(echo $DM_PGP_PASSWORD | sed 's/\//\\\//g')"
sed -i "/\[pgp\]/,/\[/ s/^passphrase=.*/passphrase=$DM_PASSWORD/" $DM_CONF_FILES sed -i "/\[pgp\]/,/\[/ s/^passphrase=.*/passphrase=$DM_PGP_PASSWORD/" $CONF_FILES
fi fi
if [ "$DM_TESTNET" = 1 -o "$DM_TESTNET" = true ]; then if [ "$DM_TESTNET" = 1 -o "$DM_TESTNET" = true ]; then
sed -i "/\[main\]/,/\[/ s/.*testnet=.*/testnet=true/" $DM_CONF_FILES sed -i "/\[main\]/,/\[/ s/.*testnet=.*/testnet=true/" $CONF_FILES
else else
sed -i "/\[main\]/,/\[/ s/.*testnet=.*/testnet=false/" $DM_CONF_FILES sed -i "/\[main\]/,/\[/ s/.*testnet=.*/testnet=false/" $CONF_FILES
fi fi
if [ "$DM_BITDEALS_PGP" ]; then if [ "$DM_BITDEALS_PGP" ]; then
echo "$BITDEALS_PGP" > "$BITDEALS_PGP_FILE" echo "$BITDEALS_PGP" > "$BITDEALS_PGP_FILE"
@@ -90,7 +102,7 @@ then
#GNUPGHOME="$(mktemp -d)" ;# works for gpg2 #GNUPGHOME="$(mktemp -d)" ;# works for gpg2
gpg --faked-system-time $(TZ=UTC date --date=$(date +'%Y-%m-%d') +%s) \ gpg --faked-system-time $(TZ=UTC date --date=$(date +'%Y-%m-%d') +%s) \
--pinentry-mode loopback --passphrase "$DM_PGP_PASSWORD" \ --pinentry-mode loopback --passphrase "$DM_PGP_PASSWORD" \
--batch --gen-key 2>/dev/null <<-EOF --openpgp --batch --gen-key 2>/dev/null <<-EOF
Key-Type: RSA Key-Type: RSA
Key-Usage: cert,sign Key-Usage: cert,sign
Key-Length: 1024 Key-Length: 1024
@@ -120,7 +132,7 @@ if [ -f "$PGP_SEC_FILE" ]; then
chmod 600 "$PGP_SEC_FILE" chmod 600 "$PGP_SEC_FILE"
fi fi
## Setup testnet settings in libbitcoin-explorer config ## Setup testnet settings in libbitcoin-explorer config for new user bitcoin address generation
[ "$DM_TESTNET" = 1 -o "$DM_TESTNET" = true ] && \ [ "$DM_TESTNET" = 1 -o "$DM_TESTNET" = true ] && \
sed -i -e "/\[wallet\]/,/\[/ s/wif_version? =.*/wif_version = 239/" \ sed -i -e "/\[wallet\]/,/\[/ s/wif_version? =.*/wif_version = 239/" \
-e "/\[wallet\]/,/\[/ s/hd_public_version =.*/hd_public_version = 70617039/" \ -e "/\[wallet\]/,/\[/ s/hd_public_version =.*/hd_public_version = 70617039/" \
@@ -137,8 +149,8 @@ fi
-e "/#block_url = tcp:\/\/testnet.libbitcoin.net:19093/ s/^#//" \ -e "/#block_url = tcp:\/\/testnet.libbitcoin.net:19093/ s/^#//" \
-e "/#transaction_url = tcp:\/\/testnet.libbitcoin.net:19094/ s/^#//" "$BX_CONF_FILE" -e "/#transaction_url = tcp:\/\/testnet.libbitcoin.net:19094/ s/^#//" "$BX_CONF_FILE"
## Create new Bitcoin keys. If user address is empty. ## Create new Bitcoin keys. If user address (_DM_BITCOIN var) is empty.
_DM_BITCOIN="$(sed -n '/^[ \t]*\[module\]/,/\[/s/^[ \t]*address[ \t]*=[ \t]*//p' $DM_CONF_FILES)" _DM_BITCOIN="$(sed -n '/^[ \t]*\[module\]/,/\[/s/^[ \t]*address[ \t]*=[ \t]*//p' $CONF_FILES)"
if [ -z "$_DM_BITCOIN" ] if [ -z "$_DM_BITCOIN" ]
then then
@@ -152,16 +164,16 @@ then
PRIVKEYWIF="$(bx ec-to-wif $PRIVKEY)" PRIVKEYWIF="$(bx ec-to-wif $PRIVKEY)"
## Write the bitcoin address to the daemon config ## Write the bitcoin address to the daemon config
sed -i "/\[module\]/,/\[/ s/^address=.*/address=$BITCOIN/" $DM_CONF_FILES sed -i "/\[module\]/,/\[/ s/^address=.*/address=$BITCOIN/" $CONF_FILES
## Show bitcoin key ## Show bitcoin key
cat <<-EOF cat <<-EOF
Please backup this BITCOIN KEY:" Please backup this BITCOIN KEY:
Private key (raw form): $PRIVKEY" Private key (raw form): $PRIVKEY
Private key (WIF form): ${B}$PRIVKEYWIF${N}" Private key (WIF form): ${B}$PRIVKEYWIF${N}
Public key: $PUBKEY" Public key: $PUBKEY
Bitcoin address: $BITCOIN\n" Bitcoin address: $BITCOIN
EOF EOF
else else

View File

@@ -12,6 +12,17 @@ server {
root /var/www/web; root /var/www/web;
index index.html; index index.html;
try_files $uri $uri/ /index.html; try_files $uri $uri/ /index.html;
# location ^~ /api/ {
# proxy_pass http://127.0.0.1:4999;
# proxy_http_version 1.1;
# proxy_set_header Host $host;
# proxy_set_header Connection "close";
# proxy_set_header X-Forwarded-Proto $scheme;
# proxy_set_header X-Real-IP $remote_addr;
# proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# }
} }
} }

Binary file not shown.

After

Width:  |  Height:  |  Size: 244 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 73 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 168 KiB