From bd94152cdd7c1322e6b97e6c49f4f83e635d0798 Mon Sep 17 00:00:00 2001 From: deacix Date: Sun, 19 Mar 2017 00:53:35 +0100 Subject: [PATCH] supervisord implemented --- .gitignore | 3 +- docker/Dockerfile | 33 +- docker/Dockerfile~ | 36 -- docker/docker-compose.yml | 6 + docker/settings.json | 737 +++++++++++++++++++------------------- docker/supervisord.conf | 19 + docker/twister.conf | 3 + 7 files changed, 415 insertions(+), 422 deletions(-) delete mode 100644 docker/Dockerfile~ create mode 100644 docker/docker-compose.yml create mode 100644 docker/supervisord.conf create mode 100644 docker/twister.conf diff --git a/.gitignore b/.gitignore index af53e14..0ab5928 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ /build-buffer -node_modules \ No newline at end of file +node_modules +.idea diff --git a/docker/Dockerfile b/docker/Dockerfile index 586f513..6531efb 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -2,35 +2,44 @@ # Dockerfile for building Twister peer-to-peer micro-blogging # -FROM ubuntu:14.04 +FROM ubuntu:14.04 -# Install twister-core +WORKDIR /opt +USER root RUN apt-get update -RUN apt-get install -y git autoconf libtool build-essential libboost-all-dev libssl-dev libdb++-dev libminiupnpc-dev && apt-get clean +RUN apt-get install -y git autoconf libtool build-essential libboost-all-dev libssl-dev libdb++-dev libminiupnpc-dev \ + supervisor nodejs nodejs-legacy npm && \ + apt-get clean + RUN git clone https://github.com/miguelfreitas/twister-core.git RUN cd twister-core && \ ./bootstrap.sh && \ make -RUN mkdir ~/.twister -RUN echo -e "rpcuser=user\nrpcpassword=pwd\nhtmldir=~/twister-react" > ~/.twister/twister.conf -RUN chmod 600 ~/.twister/twister.conf - RUN git clone https://github.com/Tschaul/twister-react.git RUN git clone https://github.com/Tschaul/twister-lib-js.git RUN git clone https://github.com/digital-dreamer/twister-proxy.git -RUN apt-get install -y nodejs nodejs-legacy npm - RUN npm install -g browserify react-tools RUN cd twister-lib-js \ npm install -RUN cd twister-react \ npm install \ npm run pull-lib-and-build +RUN cd twister-proxy && npm install -RUN cd twister-proxy \ npm install +RUN mv twister-react/index.html twister-react/home.html COPY settings.json twister-proxy/ -CMD cd twister-core \ ./twisterd & \ cd ../twister-proxy \ node twister-proxy.js & +RUN mkdir -p /root/.twister +COPY twister.conf /root/.twister/twister.conf +RUN chmod 600 /root/.twister/twister.conf + +COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf + +VOLUME ["/root/.twister"] + +CMD ["/usr/bin/supervisord"] +ENTRYPOINT [] + +EXPOSE 80 \ No newline at end of file diff --git a/docker/Dockerfile~ b/docker/Dockerfile~ deleted file mode 100644 index d67b0f8..0000000 --- a/docker/Dockerfile~ +++ /dev/null @@ -1,36 +0,0 @@ -# -# Dockerfile for building Twister peer-to-peer micro-blogging -# - -FROM ubuntu:14.04 - -# Install twister-core - -RUN apt-get update -RUN apt-get install -y git autoconf libtool build-essential libboost-all-dev libssl-dev libdb++-dev libminiupnpc-dev && apt-get clean -RUN git clone https://github.com/miguelfreitas/twister-core.git -RUN cd twister-core && \ - ./bootstrap.sh && \ - make - -RUN mkdir ~/.twister -RUN echo -e "rpcuser=user\nrpcpassword=pwd\nhtmldir=~/twister-react" > ~/.twister/twister.conf -RUN chmod 600 ~/.twister/twister.conf - -RUN git clone https://github.com/Tschaul/twister-react.git -RUN git clone https://github.com/Tschaul/twister-lib-js.git -RUN git clone https://github.com/digital-dreamer/twister-proxy.git - -RUN apt-get install -y nodejs nodejs-legacy npm - -RUN npm install -g browserify react-tools - -RUN cd twister-lib-js \ npm install - -RUN cd twister-react \ npm install \ npm run pull-lib-and-build - -RUN cd twister-proxy \ npm install - -COPY settings.json twister-proxy/ - - diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml new file mode 100644 index 0000000..44d3091 --- /dev/null +++ b/docker/docker-compose.yml @@ -0,0 +1,6 @@ +version: "2" +services: + twister: + build: . + ports: + - 80 \ No newline at end of file diff --git a/docker/settings.json b/docker/settings.json index e619e72..543f89d 100644 --- a/docker/settings.json +++ b/docker/settings.json @@ -1,377 +1,368 @@ { - "Server": - { - "ssl_key_file": "/etc/letsencrypt/live/example.com/privkey.pem", - "ssl_certificate_file": "/etc/letsencrypt/live/example.com/cert.pem", - "ssl_chain_file": "/etc/letsencrypt/live/example.com/chain.pem", - "ssl_fullchain_file": "/etc/letsencrypt/live/example.com/fullchain.pem", - "enable_https": true, - - "https_port": 443, - "http_port": 0 - }, - - "RPC": - { - "host": "localhost", - "port": 28332, - "user": "user", - "password": "pwd" - }, + "Server": { + "ssl_key_file": "insert/path/to/your/server-key-file", + "ssl_certificate_file": "insert/path/to/your/ssl-certificate", + "enable_https": false, - "CallLimits": - [ - { - "name": "getbestblockhash", - "maxPerMinute": null, - "maxPerMinutePerIP": null - }, - { - "name": "getinfo", - "maxPerMinute": 999, - "maxPerMinutePerIP": 999 - }, - { - "name": "listwalletusers", - "maxPerMinute": null, - "maxPerMinutePerIP": null - }, - { - "name": "getblock", - "maxPerMinute": null, - "maxPerMinutePerIP": null - }, - { - "name": "dhtget", - "maxPerMinute": 99999, - "maxPerMinutePerIP": 99999 - }, - { - "name": "listusernamespartial", - "maxPerMinute": 99999, - "maxPerMinutePerIP": 99999 - }, - { - "name": "gettrendinghashtags", - "maxPerMinute": 99999, - "maxPerMinutePerIP": 99999 - }, - { - "name": "stop", - "maxPerMinute": 0, - "maxPerMinutePerIP": null - }, - { - "name": "getblockcount", - "maxPerMinute": 0, - "maxPerMinutePerIP": null - }, - { - "name": "getconnectioncount", - "maxPerMinute": 0, - "maxPerMinutePerIP": null - }, - { - "name": "getpeerinfo", - "maxPerMinute": 0, - "maxPerMinutePerIP": null - }, - { - "name": "addnode", - "maxPerMinute": 0, - "maxPerMinutePerIP": null - }, - { - "name": "adddnsseed", - "maxPerMinute": 0, - "maxPerMinutePerIP": null - }, - { - "name": "getaddednodeinfo", - "maxPerMinute": 0, - "maxPerMinutePerIP": null - }, - { - "name": "getdifficulty", - "maxPerMinute": 0, - "maxPerMinutePerIP": null - }, - { - "name": "getgenerate", - "maxPerMinute": 0, - "maxPerMinutePerIP": null - }, - { - "name": "setgenerate", - "maxPerMinute": 0, - "maxPerMinutePerIP": null - }, - { - "name": "gethashespersec", - "maxPerMinute": 0, - "maxPerMinutePerIP": null - }, - { - "name": "getmininginfo", - "maxPerMinute": 0, - "maxPerMinutePerIP": null - }, - { - "name": "createwalletuser", - "maxPerMinute": 0, - "maxPerMinutePerIP": null - }, - { - "name": "backupwallet", - "maxPerMinute": 0, - "maxPerMinutePerIP": null - }, - { - "name": "walletpassphrase", - "maxPerMinute": 0, - "maxPerMinutePerIP": null - }, - { - "name": "walletpassphrasechange", - "maxPerMinute": 0, - "maxPerMinutePerIP": null - }, - { - "name": "walletlock", - "maxPerMinute": 0, - "maxPerMinutePerIP": null - }, - { - "name": "encryptwallet", - "maxPerMinute": 0, - "maxPerMinutePerIP": null - }, - { - "name": "getrawmempool", - "maxPerMinute": 0, - "maxPerMinutePerIP": null - }, - { - "name": "getblockhash", - "maxPerMinute": 0, - "maxPerMinutePerIP": null - }, - { - "name": "gettransaction", - "maxPerMinute": 0, - "maxPerMinutePerIP": null - }, - { - "name": "listtransactions", - "maxPerMinute": 0, - "maxPerMinutePerIP": null - }, - { - "name": "signmessage", - "maxPerMinute": 0, - "maxPerMinutePerIP": null - }, - { - "name": "verifymessage", - "maxPerMinute": 0, - "maxPerMinutePerIP": null - }, - { - "name": "getwork", - "maxPerMinute": 0, - "maxPerMinutePerIP": null - }, - { - "name": "getblocktemplate", - "maxPerMinute": 0, - "maxPerMinutePerIP": null - }, - { - "name": "submitblock", - "maxPerMinute": 0, - "maxPerMinutePerIP": null - }, - { - "name": "listsinceblock", - "maxPerMinute": 0, - "maxPerMinutePerIP": null - }, - { - "name": "dumpprivkey", - "maxPerMinute": 0, - "maxPerMinutePerIP": null - }, - { - "name": "dumppubkey", - "maxPerMinute": 99999, - "maxPerMinutePerIP": 99999 - }, - { - "name": "testvector", - "maxPerMinute": 0, - "maxPerMinutePerIP": null - }, - { - "name": "dumpwallet", - "maxPerMinute": 0, - "maxPerMinutePerIP": null - }, - { - "name": "importprivkey", - "maxPerMinute": 0, - "maxPerMinutePerIP": null - }, - { - "name": "importwallet", - "maxPerMinute": 0, - "maxPerMinutePerIP": null - }, - { - "name": "getrawtransaction", - "maxPerMinute": 0, - "maxPerMinutePerIP": null - }, - { - "name": "createrawtransaction", - "maxPerMinute": 0, - "maxPerMinutePerIP": null - }, - { - "name": "decoderawtransaction", - "maxPerMinute": 0, - "maxPerMinutePerIP": null - }, - { - "name": "sendrawtransaction", - "maxPerMinute": 0, - "maxPerMinutePerIP": null - }, - { - "name": "sendnewusertransaction", - "maxPerMinute": 0, - "maxPerMinutePerIP": null - }, - { - "name": "verifychain", - "maxPerMinute": 0, - "maxPerMinutePerIP": null - }, - { - "name": "getlastsoftcheckpoint", - "maxPerMinute": 0, - "maxPerMinutePerIP": null - }, - { - "name": "dhtput", - "maxPerMinute": 0, - "maxPerMinutePerIP": null - }, - { - "name": "dhtputraw", - "maxPerMinute": 999, - "maxPerMinutePerIP": 999 - }, - { - "name": "newpostmsg", - "maxPerMinute": 0, - "maxPerMinutePerIP": null - }, - { - "name": "newpostraw", - "maxPerMinute": 999, - "maxPerMinutePerIP": 999 - }, - { - "name": "newdirectmsg", - "maxPerMinute": 0, - "maxPerMinutePerIP": null - }, - { - "name": "newrtmsg", - "maxPerMinute": 0, - "maxPerMinutePerIP": null - }, - { - "name": "getposts", - "maxPerMinute": 99999, - "maxPerMinutePerIP": 99999 - }, - { - "name": "getdirectmsgs", - "maxPerMinute": 0, - "maxPerMinutePerIP": null - }, - { - "name": "getmentions", - "maxPerMinute": 0, - "maxPerMinutePerIP": null - }, - { - "name": "setspammsg", - "maxPerMinute": 0, - "maxPerMinutePerIP": null - }, - { - "name": "getspammsg", - "maxPerMinute": 0, - "maxPerMinutePerIP": null - }, - { - "name": "follow", - "maxPerMinute": 99999, - "maxPerMinutePerIP": 99999 - }, - { - "name": "unfollow", - "maxPerMinute": 0, - "maxPerMinutePerIP": null - }, - { - "name": "getfollowing", - "maxPerMinute": 0, - "maxPerMinutePerIP": null - }, - { - "name": "getlasthave", - "maxPerMinute": 99999, - "maxPerMinutePerIP": 99999 - }, - { - "name": "getnumpieces", - "maxPerMinute": 0, - "maxPerMinutePerIP": null - }, - { - "name": "rescandirectmsgs", - "maxPerMinute": 0, - "maxPerMinutePerIP": null - }, - { - "name": "recheckusertorrent", - "maxPerMinute": 0, - "maxPerMinutePerIP": null - }, - { - "name": "getspamposts", - "maxPerMinute": 99999, - "maxPerMinutePerIP": 99999 - }, - { - "name": "torrentstatus", - "maxPerMinute": 0, - "maxPerMinutePerIP": null - }, - { - "name": "search", - "maxPerMinute": 0, - "maxPerMinutePerIP": null - } - ], - - "LogAsAttackThreshold": - { - "callsOverLimits": 30, - "invalidRequests": 30, - "forbiddenCalls": 30 + "https_port": 443, + "http_port": 80 + }, + "RPC": { + "host": "localhost", + "port": 28332, + "user": "user", + "password": "pwd" + }, + "CallLimits": [ + { + "name": "getbestblockhash", + "maxPerMinute": null, + "maxPerMinutePerIP": null + }, + { + "name": "getinfo", + "maxPerMinute": 999, + "maxPerMinutePerIP": 999 + }, + { + "name": "listwalletusers", + "maxPerMinute": null, + "maxPerMinutePerIP": null + }, + { + "name": "getblock", + "maxPerMinute": null, + "maxPerMinutePerIP": null + }, + { + "name": "dhtget", + "maxPerMinute": 99999, + "maxPerMinutePerIP": 99999 + }, + { + "name": "listusernamespartial", + "maxPerMinute": 99999, + "maxPerMinutePerIP": 99999 + }, + { + "name": "gettrendinghashtags", + "maxPerMinute": 99999, + "maxPerMinutePerIP": 99999 + }, + { + "name": "stop", + "maxPerMinute": 0, + "maxPerMinutePerIP": null + }, + { + "name": "getblockcount", + "maxPerMinute": 0, + "maxPerMinutePerIP": null + }, + { + "name": "getconnectioncount", + "maxPerMinute": 0, + "maxPerMinutePerIP": null + }, + { + "name": "getpeerinfo", + "maxPerMinute": 0, + "maxPerMinutePerIP": null + }, + { + "name": "addnode", + "maxPerMinute": 0, + "maxPerMinutePerIP": null + }, + { + "name": "adddnsseed", + "maxPerMinute": 0, + "maxPerMinutePerIP": null + }, + { + "name": "getaddednodeinfo", + "maxPerMinute": 0, + "maxPerMinutePerIP": null + }, + { + "name": "getdifficulty", + "maxPerMinute": 0, + "maxPerMinutePerIP": null + }, + { + "name": "getgenerate", + "maxPerMinute": 0, + "maxPerMinutePerIP": null + }, + { + "name": "setgenerate", + "maxPerMinute": 0, + "maxPerMinutePerIP": null + }, + { + "name": "gethashespersec", + "maxPerMinute": 0, + "maxPerMinutePerIP": null + }, + { + "name": "getmininginfo", + "maxPerMinute": 0, + "maxPerMinutePerIP": null + }, + { + "name": "createwalletuser", + "maxPerMinute": 0, + "maxPerMinutePerIP": null + }, + { + "name": "backupwallet", + "maxPerMinute": 0, + "maxPerMinutePerIP": null + }, + { + "name": "walletpassphrase", + "maxPerMinute": 0, + "maxPerMinutePerIP": null + }, + { + "name": "walletpassphrasechange", + "maxPerMinute": 0, + "maxPerMinutePerIP": null + }, + { + "name": "walletlock", + "maxPerMinute": 0, + "maxPerMinutePerIP": null + }, + { + "name": "encryptwallet", + "maxPerMinute": 0, + "maxPerMinutePerIP": null + }, + { + "name": "getrawmempool", + "maxPerMinute": 0, + "maxPerMinutePerIP": null + }, + { + "name": "getblockhash", + "maxPerMinute": 0, + "maxPerMinutePerIP": null + }, + { + "name": "gettransaction", + "maxPerMinute": 0, + "maxPerMinutePerIP": null + }, + { + "name": "listtransactions", + "maxPerMinute": 0, + "maxPerMinutePerIP": null + }, + { + "name": "signmessage", + "maxPerMinute": 0, + "maxPerMinutePerIP": null + }, + { + "name": "verifymessage", + "maxPerMinute": 0, + "maxPerMinutePerIP": null + }, + { + "name": "getwork", + "maxPerMinute": 0, + "maxPerMinutePerIP": null + }, + { + "name": "getblocktemplate", + "maxPerMinute": 0, + "maxPerMinutePerIP": null + }, + { + "name": "submitblock", + "maxPerMinute": 0, + "maxPerMinutePerIP": null + }, + { + "name": "listsinceblock", + "maxPerMinute": 0, + "maxPerMinutePerIP": null + }, + { + "name": "dumpprivkey", + "maxPerMinute": 0, + "maxPerMinutePerIP": null + }, + { + "name": "dumppubkey", + "maxPerMinute": 99999, + "maxPerMinutePerIP": 99999 + }, + { + "name": "testvector", + "maxPerMinute": 0, + "maxPerMinutePerIP": null + }, + { + "name": "dumpwallet", + "maxPerMinute": 0, + "maxPerMinutePerIP": null + }, + { + "name": "importprivkey", + "maxPerMinute": 0, + "maxPerMinutePerIP": null + }, + { + "name": "importwallet", + "maxPerMinute": 0, + "maxPerMinutePerIP": null + }, + { + "name": "getrawtransaction", + "maxPerMinute": 0, + "maxPerMinutePerIP": null + }, + { + "name": "createrawtransaction", + "maxPerMinute": 0, + "maxPerMinutePerIP": null + }, + { + "name": "decoderawtransaction", + "maxPerMinute": 0, + "maxPerMinutePerIP": null + }, + { + "name": "sendrawtransaction", + "maxPerMinute": 0, + "maxPerMinutePerIP": null + }, + { + "name": "sendnewusertransaction", + "maxPerMinute": 0, + "maxPerMinutePerIP": null + }, + { + "name": "verifychain", + "maxPerMinute": 0, + "maxPerMinutePerIP": null + }, + { + "name": "getlastsoftcheckpoint", + "maxPerMinute": 0, + "maxPerMinutePerIP": null + }, + { + "name": "dhtput", + "maxPerMinute": 0, + "maxPerMinutePerIP": null + }, + { + "name": "dhtputraw", + "maxPerMinute": 999, + "maxPerMinutePerIP": 999 + }, + { + "name": "newpostmsg", + "maxPerMinute": 0, + "maxPerMinutePerIP": null + }, + { + "name": "newpostraw", + "maxPerMinute": 999, + "maxPerMinutePerIP": 999 + }, + { + "name": "newdirectmsg", + "maxPerMinute": 0, + "maxPerMinutePerIP": null + }, + { + "name": "newrtmsg", + "maxPerMinute": 0, + "maxPerMinutePerIP": null + }, + { + "name": "getposts", + "maxPerMinute": 99999, + "maxPerMinutePerIP": 99999 + }, + { + "name": "getdirectmsgs", + "maxPerMinute": 0, + "maxPerMinutePerIP": null + }, + { + "name": "getmentions", + "maxPerMinute": 0, + "maxPerMinutePerIP": null + }, + { + "name": "setspammsg", + "maxPerMinute": 0, + "maxPerMinutePerIP": null + }, + { + "name": "getspammsg", + "maxPerMinute": 0, + "maxPerMinutePerIP": null + }, + { + "name": "follow", + "maxPerMinute": 99999, + "maxPerMinutePerIP": 99999 + }, + { + "name": "unfollow", + "maxPerMinute": 0, + "maxPerMinutePerIP": null + }, + { + "name": "getfollowing", + "maxPerMinute": 0, + "maxPerMinutePerIP": null + }, + { + "name": "getlasthave", + "maxPerMinute": 99999, + "maxPerMinutePerIP": 99999 + }, + { + "name": "getnumpieces", + "maxPerMinute": 0, + "maxPerMinutePerIP": null + }, + { + "name": "rescandirectmsgs", + "maxPerMinute": 0, + "maxPerMinutePerIP": null + }, + { + "name": "recheckusertorrent", + "maxPerMinute": 0, + "maxPerMinutePerIP": null + }, + { + "name": "getspamposts", + "maxPerMinute": 99999, + "maxPerMinutePerIP": 99999 + }, + { + "name": "torrentstatus", + "maxPerMinute": 0, + "maxPerMinutePerIP": null + }, + { + "name": "search", + "maxPerMinute": 0, + "maxPerMinutePerIP": null } + ], + "LogAsAttackThreshold": { + "callsOverLimits": 30, + "invalidRequests": 30, + "forbiddenCalls": 30 + } } \ No newline at end of file diff --git a/docker/supervisord.conf b/docker/supervisord.conf new file mode 100644 index 0000000..6d3e2a7 --- /dev/null +++ b/docker/supervisord.conf @@ -0,0 +1,19 @@ +[supervisord] +nodaemon=true + +[program:twisterd] +command=/opt/twister-core/twisterd +user=root +redirect_stderr=true +stdout_logfile=/dev/fd/1 +stdout_logfile_maxbytes=0 +priority=1 + +[program:twister-proxy] +command=node twister-proxy.js +user=root +directory=/opt/twister-proxy +redirect_stderr=true +stdout_logfile=/dev/fd/1 +stdout_logfile_maxbytes=0 +priority=2 \ No newline at end of file diff --git a/docker/twister.conf b/docker/twister.conf new file mode 100644 index 0000000..0d041e1 --- /dev/null +++ b/docker/twister.conf @@ -0,0 +1,3 @@ +rpcuser=user +rpcpassword=pwd +htmldir=/opt/twister-react \ No newline at end of file