From 6b5ec52e28b1c48405f37edf6463f5b62d41d6b5 Mon Sep 17 00:00:00 2001
From: ljaqueme <ljaqueme@opentext.com>
Date: Tue, 11 Jun 2019 12:27:39 -0600
Subject: [PATCH 1/4] make it docker compliance

---
 server/Dockerfile.d4-server                   | 29 +++++++++++++++++++
 server/docker-compose.yml                     | 27 +++++++++++++++++
 server/server.py                              | 10 +++----
 server/web/Flask_server.py                    |  8 ++---
 server/workers/workers_1/file_compressor.py   |  8 ++---
 server/workers/workers_1/worker.py            |  8 ++---
 server/workers/workers_1/workers_manager.py   |  6 ++--
 server/workers/workers_2/file_compressor.py   |  8 ++---
 .../meta_types_modules/MetaTypesDefault.py    |  8 ++---
 server/workers/workers_2/worker.py            |  8 ++---
 server/workers/workers_2/workers_manager.py   |  6 ++--
 server/workers/workers_4/worker.py            |  4 +--
 server/workers/workers_4/workers_manager.py   |  6 ++--
 server/workers/workers_8/worker.py            |  8 ++---
 server/workers/workers_8/workers_manager.py   |  6 ++--
 15 files changed, 103 insertions(+), 47 deletions(-)
 create mode 100644 server/Dockerfile.d4-server
 create mode 100644 server/docker-compose.yml

diff --git a/server/Dockerfile.d4-server b/server/Dockerfile.d4-server
new file mode 100644
index 0000000..6f946b8
--- /dev/null
+++ b/server/Dockerfile.d4-server
@@ -0,0 +1,29 @@
+FROM python:3
+
+WORKDIR /usr/src/d4-server
+
+#RUN git clone https://github.com/D4-project/d4-core.git
+RUN git clone https://github.com/trolldbois/d4-core.git
+RUN mv d4-core
+
+# that doesn't work on windows due to linefeeds
+# COPY . .
+
+ENV D4_HOME=/usr/src/d4-server
+RUN pip install --no-cache-dir -r requirement.txt
+
+# move to tls proxy ?
+#WORKDIR /usr/src/d4-server/gen_cert
+#RUN ./gen_root.sh
+#RUN ./gen_cert.sh
+
+# setup a lots of files
+#WORKDIR /usr/src/d4-server/web
+#RUN ./update_web.sh
+
+
+#WORKDIR /usr/src/d4-server
+
+#ENTRYPOINT ["python", "server.py", "-v", "10"]
+
+CMD bash -l
\ No newline at end of file
diff --git a/server/docker-compose.yml b/server/docker-compose.yml
new file mode 100644
index 0000000..d71b8a8
--- /dev/null
+++ b/server/docker-compose.yml
@@ -0,0 +1,27 @@
+version: "3"
+services:
+  redis-stream:
+    image: redis
+    expose:
+      - 6379
+  redis-metadata:
+    image: redis
+    expose:
+      - 6380
+  web:
+    build:
+      context: .
+      dockerfile: Dockerfile.d4-server
+    image: d4-server:latest
+    #build: ./Dockerfile.d4-server
+    depends_on:
+          - redis-stream
+          - redis-metadata
+    environment:
+      - D4_REDIS_STREAM_HOST=redis
+      - D4_REDIS_STREAM_PORT=6379
+      - D4_REDIS_METADATA_HOST=redis
+      - D4_REDIS_METADATA_PORT=6380
+    ports:
+      - "80:80"
+
diff --git a/server/server.py b/server/server.py
index 178b5e1..4cd04fa 100755
--- a/server/server.py
+++ b/server/server.py
@@ -21,7 +21,7 @@ from twisted.internet.protocol import Protocol
 from twisted.protocols.policies import TimeoutMixin
 
 hmac_reset = bytearray(32)
-hmac_key = b'private key to change'
+hmac_key = os.getenv('D4_HMAC_KEY', b'private key to change')
 
 accepted_type = [1, 2, 4, 8, 254]
 accepted_extended_type = ['ja3-jl']
@@ -33,11 +33,11 @@ header_size = 62
 data_default_size_limit = 1000000
 default_max_entries_by_stream = 10000
 
-host_redis_stream = "localhost"
-port_redis_stream = 6379
+host_redis_stream = os.getenv('D4_REDIS_STREAM_HOST', "localhost")
+port_redis_stream = int(os.getenv('D4_REDIS_STREAM_PORT', 6379))
 
-host_redis_metadata = "localhost"
-port_redis_metadata= 6380
+host_redis_metadata = os.getenv('D4_REDIS_METADATA_HOST', "localhost")
+port_redis_metadata = int(os.getenv('D4_REDIS_METADATA_PORT', 6380))
 
 redis_server_stream = redis.StrictRedis(
                     host=host_redis_stream,
diff --git a/server/web/Flask_server.py b/server/web/Flask_server.py
index ae8a0a9..81a07b7 100755
--- a/server/web/Flask_server.py
+++ b/server/web/Flask_server.py
@@ -21,8 +21,8 @@ baseUrl = ''
 if baseUrl != '':
     baseUrl = '/'+baseUrl
 
-host_redis_stream = "localhost"
-port_redis_stream = 6379
+host_redis_stream = os.getenv('D4_REDIS_STREAM_HOST', "localhost")
+port_redis_stream = int(os.getenv('D4_REDIS_STREAM_PORT', 6379))
 
 default_max_entries_by_stream = 10000
 analyzer_list_max_default_size = 10000
@@ -50,8 +50,8 @@ redis_server_stream = redis.StrictRedis(
                     db=0,
                     decode_responses=True)
 
-host_redis_metadata = "localhost"
-port_redis_metadata= 6380
+host_redis_metadata = os.getenv('D4_REDIS_METADATA_HOST', "localhost")
+port_redis_metadata = int(os.getenv('D4_REDIS_METADATA_PORT', 6380))
 
 redis_server_metadata = redis.StrictRedis(
                     host=host_redis_metadata,
diff --git a/server/workers/workers_1/file_compressor.py b/server/workers/workers_1/file_compressor.py
index 3406566..cf812bc 100755
--- a/server/workers/workers_1/file_compressor.py
+++ b/server/workers/workers_1/file_compressor.py
@@ -46,11 +46,11 @@ def compress_file(file_full_path, session_uuid,i=0):
             redis_server_analyzer.ltrim('analyzer:{}:{}'.format(type, analyzer_uuid), 0, analyser_queue_max_size)
 
 
-host_redis_stream = "localhost"
-port_redis_stream = 6379
+host_redis_stream = os.getenv('D4_REDIS_STREAM_HOST', "localhost")
+port_redis_stream = int(os.getenv('D4_REDIS_STREAM_PORT', 6379))
 
-host_redis_metadata = "localhost"
-port_redis_metadata = 6380
+host_redis_metadata = os.getenv('D4_REDIS_METADATA_HOST', "localhost")
+port_redis_metadata = int(os.getenv('D4_REDIS_METADATA_PORT', 6380))
 
 redis_server_stream = redis.StrictRedis(
                     host=host_redis_stream,
diff --git a/server/workers/workers_1/worker.py b/server/workers/workers_1/worker.py
index a643ed5..0994924 100755
--- a/server/workers/workers_1/worker.py
+++ b/server/workers/workers_1/worker.py
@@ -46,11 +46,11 @@ def compress_file(file_full_path, i=0):
                 analyser_queue_max_size = analyzer_list_max_default_size
             redis_server_analyzer.ltrim('analyzer:{}:{}'.format(type, analyzer_uuid), 0, analyser_queue_max_size)
 
-host_redis_stream = "localhost"
-port_redis_stream = 6379
+host_redis_stream = os.getenv('D4_REDIS_STREAM_HOST', "localhost")
+port_redis_stream = int(os.getenv('D4_REDIS_STREAM_PORT', 6379))
 
-host_redis_metadata = "localhost"
-port_redis_metadata = 6380
+host_redis_metadata = os.getenv('D4_REDIS_METADATA_HOST', "localhost")
+port_redis_metadata = int(os.getenv('D4_REDIS_METADATA_PORT', 6380))
 
 redis_server_stream = redis.StrictRedis(
                     host=host_redis_stream,
diff --git a/server/workers/workers_1/workers_manager.py b/server/workers/workers_1/workers_manager.py
index 15a87ad..0e90289 100755
--- a/server/workers/workers_1/workers_manager.py
+++ b/server/workers/workers_1/workers_manager.py
@@ -6,8 +6,8 @@ import time
 import redis
 import subprocess
 
-host_redis_stream = "localhost"
-port_redis_stream = 6379
+host_redis_stream = os.getenv('D4_REDIS_STREAM_HOST', "localhost")
+port_redis_stream = int(os.getenv('D4_REDIS_STREAM_PORT', 6379))
 
 redis_server_stream = redis.StrictRedis(
                     host=host_redis_stream,
@@ -18,7 +18,7 @@ type = 1
 try:
     redis_server_stream.ping()
 except redis.exceptions.ConnectionError:
-    print('Error: Redis server {}:{}, ConnectionError'.format(host_redis, port_redis))
+    print('Error: Redis server {}:{}, ConnectionError'.format(host_redis_stream, port_redis_stream))
     sys.exit(1)
 
 if __name__ == "__main__":
diff --git a/server/workers/workers_2/file_compressor.py b/server/workers/workers_2/file_compressor.py
index 3406566..cf812bc 100755
--- a/server/workers/workers_2/file_compressor.py
+++ b/server/workers/workers_2/file_compressor.py
@@ -46,11 +46,11 @@ def compress_file(file_full_path, session_uuid,i=0):
             redis_server_analyzer.ltrim('analyzer:{}:{}'.format(type, analyzer_uuid), 0, analyser_queue_max_size)
 
 
-host_redis_stream = "localhost"
-port_redis_stream = 6379
+host_redis_stream = os.getenv('D4_REDIS_STREAM_HOST', "localhost")
+port_redis_stream = int(os.getenv('D4_REDIS_STREAM_PORT', 6379))
 
-host_redis_metadata = "localhost"
-port_redis_metadata = 6380
+host_redis_metadata = os.getenv('D4_REDIS_METADATA_HOST', "localhost")
+port_redis_metadata = int(os.getenv('D4_REDIS_METADATA_PORT', 6380))
 
 redis_server_stream = redis.StrictRedis(
                     host=host_redis_stream,
diff --git a/server/workers/workers_2/meta_types_modules/MetaTypesDefault.py b/server/workers/workers_2/meta_types_modules/MetaTypesDefault.py
index 9a540f6..d0a1451 100755
--- a/server/workers/workers_2/meta_types_modules/MetaTypesDefault.py
+++ b/server/workers/workers_2/meta_types_modules/MetaTypesDefault.py
@@ -16,16 +16,16 @@ ROTATION_SAVE_CYCLE = 300 # seconds
 MAX_BUFFER_LENGTH = 100000
 TYPE = 254
 
-host_redis_stream = "localhost"
-port_redis_stream = 6379
+host_redis_stream = os.getenv('D4_REDIS_STREAM_HOST', "localhost")
+port_redis_stream = int(os.getenv('D4_REDIS_STREAM_PORT', 6379))
 
 redis_server_stream = redis.StrictRedis(
                     host=host_redis_stream,
                     port=port_redis_stream,
                     db=0)
 
-host_redis_metadata = "localhost"
-port_redis_metadata = 6380
+host_redis_metadata = os.getenv('D4_REDIS_METADATA_HOST', "localhost")
+port_redis_metadata = int(os.getenv('D4_REDIS_METADATA_PORT', 6380))
 
 redis_server_metadata = redis.StrictRedis(
                     host=host_redis_metadata,
diff --git a/server/workers/workers_2/worker.py b/server/workers/workers_2/worker.py
index 14f2745..18b1b5f 100755
--- a/server/workers/workers_2/worker.py
+++ b/server/workers/workers_2/worker.py
@@ -10,16 +10,16 @@ import datetime
 
 from meta_types_modules import MetaTypesDefault
 
-host_redis_stream = "localhost"
-port_redis_stream = 6379
+host_redis_stream = os.getenv('D4_REDIS_STREAM_HOST', "localhost")
+port_redis_stream = int(os.getenv('D4_REDIS_STREAM_PORT', 6379))
 
 redis_server_stream = redis.StrictRedis(
                     host=host_redis_stream,
                     port=port_redis_stream,
                     db=0)
 
-host_redis_metadata = "localhost"
-port_redis_metadata = 6380
+host_redis_metadata = os.getenv('D4_REDIS_METADATA_HOST', "localhost")
+port_redis_metadata = int(os.getenv('D4_REDIS_METADATA_PORT', 6380))
 
 redis_server_metadata = redis.StrictRedis(
                     host=host_redis_metadata,
diff --git a/server/workers/workers_2/workers_manager.py b/server/workers/workers_2/workers_manager.py
index d66b873..92b9a08 100755
--- a/server/workers/workers_2/workers_manager.py
+++ b/server/workers/workers_2/workers_manager.py
@@ -6,8 +6,8 @@ import time
 import redis
 import subprocess
 
-host_redis_stream = "localhost"
-port_redis_stream = 6379
+host_redis_stream = os.getenv('D4_REDIS_STREAM_HOST', "localhost")
+port_redis_stream = int(os.getenv('D4_REDIS_STREAM_PORT', 6379))
 
 redis_server_stream = redis.StrictRedis(
                     host=host_redis_stream,
@@ -18,7 +18,7 @@ type = 2
 try:
     redis_server_stream.ping()
 except redis.exceptions.ConnectionError:
-    print('Error: Redis server {}:{}, ConnectionError'.format(host_redis, port_redis))
+    print('Error: Redis server {}:{}, ConnectionError'.format(host_redis_stream, port_redis_stream))
     sys.exit(1)
 
 if __name__ == "__main__":
diff --git a/server/workers/workers_4/worker.py b/server/workers/workers_4/worker.py
index 2e044c8..5384459 100755
--- a/server/workers/workers_4/worker.py
+++ b/server/workers/workers_4/worker.py
@@ -12,8 +12,8 @@ def data_incorrect_format(session_uuid):
     print('Incorrect format')
     sys.exit(1)
 
-host_redis_stream = "localhost"
-port_redis_stream = 6379
+host_redis_stream = os.getenv('D4_REDIS_STREAM_HOST', "localhost")
+port_redis_stream = int(os.getenv('D4_REDIS_STREAM_PORT', 6379))
 
 redis_server_stream = redis.StrictRedis(
                     host=host_redis_stream,
diff --git a/server/workers/workers_4/workers_manager.py b/server/workers/workers_4/workers_manager.py
index 9c1d7e4..ddbbd7d 100755
--- a/server/workers/workers_4/workers_manager.py
+++ b/server/workers/workers_4/workers_manager.py
@@ -6,8 +6,8 @@ import time
 import redis
 import subprocess
 
-host_redis_stream = "localhost"
-port_redis_stream = 6379
+host_redis_stream = os.getenv('D4_REDIS_STREAM_HOST', "localhost")
+port_redis_stream = int(os.getenv('D4_REDIS_STREAM_PORT', 6379))
 
 redis_server_stream = redis.StrictRedis(
                     host=host_redis_stream,
@@ -18,7 +18,7 @@ type = 4
 try:
     redis_server_stream.ping()
 except redis.exceptions.ConnectionError:
-    print('Error: Redis server {}:{}, ConnectionError'.format(host_redis, port_redis))
+    print('Error: Redis server {}:{}, ConnectionError'.format(host_redis_stream, port_redis_stream))
     sys.exit(1)
 
 if __name__ == "__main__":
diff --git a/server/workers/workers_8/worker.py b/server/workers/workers_8/worker.py
index 07a406e..8103b11 100755
--- a/server/workers/workers_8/worker.py
+++ b/server/workers/workers_8/worker.py
@@ -14,16 +14,16 @@ def data_incorrect_format(session_uuid):
     print('Incorrect format')
     sys.exit(1)
 
-host_redis_stream = "localhost"
-port_redis_stream = 6379
+host_redis_stream = os.getenv('D4_REDIS_STREAM_HOST', "localhost")
+port_redis_stream = int(os.getenv('D4_REDIS_STREAM_PORT', 6379))
 
 redis_server_stream = redis.StrictRedis(
                     host=host_redis_stream,
                     port=port_redis_stream,
                     db=0)
 
-host_redis_metadata = "localhost"
-port_redis_metadata = 6380
+host_redis_metadata = os.getenv('D4_REDIS_METADATA_HOST', "localhost")
+port_redis_metadata = int(os.getenv('D4_REDIS_METADATA_PORT', 6380))
 
 redis_server_metadata = redis.StrictRedis(
                     host=host_redis_metadata,
diff --git a/server/workers/workers_8/workers_manager.py b/server/workers/workers_8/workers_manager.py
index c1e64d9..8b99c50 100755
--- a/server/workers/workers_8/workers_manager.py
+++ b/server/workers/workers_8/workers_manager.py
@@ -6,8 +6,8 @@ import time
 import redis
 import subprocess
 
-host_redis_stream = "localhost"
-port_redis_stream = 6379
+host_redis_stream = os.getenv('D4_REDIS_STREAM_HOST', "localhost")
+port_redis_stream = int(os.getenv('D4_REDIS_STREAM_PORT', 6379))
 
 redis_server_stream = redis.StrictRedis(
                     host=host_redis_stream,
@@ -18,7 +18,7 @@ type = 8
 try:
     redis_server_stream.ping()
 except redis.exceptions.ConnectionError:
-    print('Error: Redis server {}:{}, ConnectionError'.format(host_redis, port_redis))
+    print('Error: Redis server {}:{}, ConnectionError'.format(host_redis_stream, port_redis_stream))
     sys.exit(1)
 
 if __name__ == "__main__":

From c6f21f0b5fa23817e374ffa2096da457e77ddaa9 Mon Sep 17 00:00:00 2001
From: ljaqueme <ljaqueme@opentext.com>
Date: Tue, 11 Jun 2019 13:49:56 -0600
Subject: [PATCH 2/4] that work

---
 server/Dockerfile.d4-server | 33 ++++++++++++----------
 server/docker-compose.yml   | 55 +++++++++++++++++++++++++++++++------
 2 files changed, 65 insertions(+), 23 deletions(-)

diff --git a/server/Dockerfile.d4-server b/server/Dockerfile.d4-server
index 6f946b8..ee2d389 100644
--- a/server/Dockerfile.d4-server
+++ b/server/Dockerfile.d4-server
@@ -1,29 +1,34 @@
 FROM python:3
 
-WORKDIR /usr/src/d4-server
 
-#RUN git clone https://github.com/D4-project/d4-core.git
-RUN git clone https://github.com/trolldbois/d4-core.git
-RUN mv d4-core
-
-# that doesn't work on windows due to linefeeds
+# that doesn't work on windows docker due to linefeeds
+# WORKDIR /usr/src/d4-server
 # COPY . .
 
+## alternate solution
+# RUN git clone https://github.com/D4-project/d4-core.git
+WORKDIR /usr/src/tmp
+RUN git clone https://github.com/trolldbois/d4-core.git
+RUN mv d4-core/server/ /usr/src/d4-server
+WORKDIR /usr/src/d4-server
+
 ENV D4_HOME=/usr/src/d4-server
 RUN pip install --no-cache-dir -r requirement.txt
 
 # move to tls proxy ?
-#WORKDIR /usr/src/d4-server/gen_cert
-#RUN ./gen_root.sh
-#RUN ./gen_cert.sh
+WORKDIR /usr/src/d4-server/gen_cert
+RUN ./gen_root.sh
+RUN ./gen_cert.sh
 
 # setup a lots of files
-#WORKDIR /usr/src/d4-server/web
-#RUN ./update_web.sh
+WORKDIR /usr/src/d4-server/web
+RUN ./update_web.sh
 
+WORKDIR /usr/src/d4-server
 
-#WORKDIR /usr/src/d4-server
+# configure
+RUN cp configs/server.conf.sample configs/server.conf
 
-#ENTRYPOINT ["python", "server.py", "-v", "10"]
+ENTRYPOINT ["python", "server.py", "-v", "10"]
 
-CMD bash -l
\ No newline at end of file
+# CMD bash -l
\ No newline at end of file
diff --git a/server/docker-compose.yml b/server/docker-compose.yml
index d71b8a8..2d1e30b 100644
--- a/server/docker-compose.yml
+++ b/server/docker-compose.yml
@@ -2,26 +2,63 @@ version: "3"
 services:
   redis-stream:
     image: redis
-    expose:
-      - 6379
+    entrypoint:
+      - redis-server
+      - --port 6379
   redis-metadata:
     image: redis
-    expose:
-      - 6380
-  web:
+    entrypoint:
+      - redis-server
+      - --port 6380
+  d4-server:
     build:
       context: .
       dockerfile: Dockerfile.d4-server
     image: d4-server:latest
-    #build: ./Dockerfile.d4-server
     depends_on:
           - redis-stream
           - redis-metadata
     environment:
-      - D4_REDIS_STREAM_HOST=redis
+      - D4_REDIS_STREAM_HOST=redis-stream
       - D4_REDIS_STREAM_PORT=6379
-      - D4_REDIS_METADATA_HOST=redis
+      - D4_REDIS_METADATA_HOST=redis-metadata
       - D4_REDIS_METADATA_PORT=6380
     ports:
-      - "80:80"
+      - "4443:4443"
+#  d4-worker_1:
+#    build:
+#      context: .
+#      dockerfile: Dockerfile.d4-server
+#    image: d4-server:latest
+#    depends_on:
+#          - redis-stream
+#          - redis-metadata
+#    environment:
+#      - D4_REDIS_STREAM_HOST=redis-stream
+#      - D4_REDIS_STREAM_PORT=6379
+#      - D4_REDIS_METADATA_HOST=redis-metadata
+#      - D4_REDIS_METADATA_PORT=6380
+#    entrypoint:
+#      - bash
+#      - -c
+#      - "cd workers/workers_1; ./workers_manager.py; read x"
+  d4-web:
+    build:
+      context: .
+      dockerfile: Dockerfile.d4-server
+    image: d4-server:latest
+    depends_on:
+          - redis-stream
+          - redis-metadata
+    environment:
+      - D4_REDIS_STREAM_HOST=redis-stream
+      - D4_REDIS_STREAM_PORT=6379
+      - D4_REDIS_METADATA_HOST=redis-metadata
+      - D4_REDIS_METADATA_PORT=6380
+    entrypoint:
+      - bash
+      - -c
+      - "cd web; ./Flask_server.py; read x"
+    ports:
+      - "8080:7000"
 

From 91500ba460a69e4e2a78056bf1603b053c344fe0 Mon Sep 17 00:00:00 2001
From: ljaqueme <ljaqueme@opentext.com>
Date: Tue, 11 Jun 2019 16:37:11 -0600
Subject: [PATCH 3/4] that works

---
 server/Dockerfile.analyzer-d4-passivedns |  15 +++
 server/Dockerfile.d4-server              |   5 +-
 server/docker-compose.yml                | 148 ++++++++++++++++++-----
 3 files changed, 139 insertions(+), 29 deletions(-)
 create mode 100644 server/Dockerfile.analyzer-d4-passivedns

diff --git a/server/Dockerfile.analyzer-d4-passivedns b/server/Dockerfile.analyzer-d4-passivedns
new file mode 100644
index 0000000..5c37916
--- /dev/null
+++ b/server/Dockerfile.analyzer-d4-passivedns
@@ -0,0 +1,15 @@
+FROM python:3
+
+WORKDIR /usr/src/
+# RUN git clone https://github.com/D4-project/analyzer-d4-passivedns.git
+RUN git clone https://github.com/trolldbois/analyzer-d4-passivedns.git
+WORKDIR /usr/src/analyzer-d4-passivedns
+
+# FIXME typo in requirements.txt filename
+RUN pip install --no-cache-dir -r requirements
+WORKDIR /usr/src/analyzer-d4-passivedns/bin
+
+# should be a config
+# RUN cat /usr/src/analyzer-d4-passivedns/etc/analyzer.conf.sample | sed "s/127.0.0.1/redis-metadata/g" > /usr/src/analyzer-d4-passivedns/etc/analyzer.conf
+# ignore the config and use ENV variables.
+RUN cp ../etc/analyzer.conf.sample ../etc/analyzer.conf
diff --git a/server/Dockerfile.d4-server b/server/Dockerfile.d4-server
index ee2d389..b2824a6 100644
--- a/server/Dockerfile.d4-server
+++ b/server/Dockerfile.d4-server
@@ -26,9 +26,12 @@ RUN ./update_web.sh
 
 WORKDIR /usr/src/d4-server
 
-# configure
+# Should be using configs instead. but not supported until docker 17.06+
 RUN cp configs/server.conf.sample configs/server.conf
 
+# workers need tcpdump
+RUN apt-get update && apt-get install -y tcpdump
+
 ENTRYPOINT ["python", "server.py", "-v", "10"]
 
 # CMD bash -l
\ No newline at end of file
diff --git a/server/docker-compose.yml b/server/docker-compose.yml
index 2d1e30b..c4d7b88 100644
--- a/server/docker-compose.yml
+++ b/server/docker-compose.yml
@@ -1,15 +1,20 @@
+# Should be using configs but not supported until docker 17.06+
+# https://www.d4-project.org/2019/05/28/passive-dns-tutorial.html
+
 version: "3"
 services:
   redis-stream:
     image: redis
-    entrypoint:
-      - redis-server
-      - --port 6379
+    command: redis-server --port 6379
+
   redis-metadata:
     image: redis
-    entrypoint:
-      - redis-server
-      - --port 6380
+    command: redis-server --port 6380
+
+  redis-analyzer:
+    image: redis
+    command: redis-server --port 6400
+
   d4-server:
     build:
       context: .
@@ -25,23 +30,75 @@ services:
       - D4_REDIS_METADATA_PORT=6380
     ports:
       - "4443:4443"
-#  d4-worker_1:
-#    build:
-#      context: .
-#      dockerfile: Dockerfile.d4-server
-#    image: d4-server:latest
-#    depends_on:
-#          - redis-stream
-#          - redis-metadata
-#    environment:
-#      - D4_REDIS_STREAM_HOST=redis-stream
-#      - D4_REDIS_STREAM_PORT=6379
-#      - D4_REDIS_METADATA_HOST=redis-metadata
-#      - D4_REDIS_METADATA_PORT=6380
-#    entrypoint:
-#      - bash
-#      - -c
-#      - "cd workers/workers_1; ./workers_manager.py; read x"
+
+  d4-worker_1:
+    build:
+      context: .
+      dockerfile: Dockerfile.d4-server
+    image: d4-server:latest
+    depends_on:
+          - redis-stream
+          - redis-metadata
+    environment:
+      - D4_REDIS_STREAM_HOST=redis-stream
+      - D4_REDIS_STREAM_PORT=6379
+      - D4_REDIS_METADATA_HOST=redis-metadata
+      - D4_REDIS_METADATA_PORT=6380
+    entrypoint: bash -c "cd workers/workers_1; ./workers_manager.py; read x"
+    volumes:
+       - d4-data:/usr/src/d4-server/data
+
+  d4-worker_2:
+    build:
+      context: .
+      dockerfile: Dockerfile.d4-server
+    image: d4-server:latest
+    depends_on:
+          - redis-stream
+          - redis-metadata
+    environment:
+      - D4_REDIS_STREAM_HOST=redis-stream
+      - D4_REDIS_STREAM_PORT=6379
+      - D4_REDIS_METADATA_HOST=redis-metadata
+      - D4_REDIS_METADATA_PORT=6380
+    entrypoint: bash -c "cd workers/workers_2; ./workers_manager.py; read x"
+    volumes:
+       - d4-data:/usr/src/d4-server/data
+
+  d4-worker_4:
+    build:
+      context: .
+      dockerfile: Dockerfile.d4-server
+    image: d4-server:latest
+    depends_on:
+          - redis-stream
+          - redis-metadata
+    environment:
+      - D4_REDIS_STREAM_HOST=redis-stream
+      - D4_REDIS_STREAM_PORT=6379
+      - D4_REDIS_METADATA_HOST=redis-metadata
+      - D4_REDIS_METADATA_PORT=6380
+    entrypoint: bash -c "cd workers/workers_4; ./workers_manager.py; read x"
+    volumes:
+       - d4-data:/usr/src/d4-server/data
+
+  d4-worker_8:
+    build:
+      context: .
+      dockerfile: Dockerfile.d4-server
+    image: d4-server:latest
+    depends_on:
+          - redis-stream
+          - redis-metadata
+    environment:
+      - D4_REDIS_STREAM_HOST=redis-stream
+      - D4_REDIS_STREAM_PORT=6379
+      - D4_REDIS_METADATA_HOST=redis-metadata
+      - D4_REDIS_METADATA_PORT=6380
+    entrypoint: bash -c "cd workers/workers_8; ./workers_manager.py; read x"
+    volumes:
+       - d4-data:/usr/src/d4-server/data
+
   d4-web:
     build:
       context: .
@@ -55,10 +112,45 @@ services:
       - D4_REDIS_STREAM_PORT=6379
       - D4_REDIS_METADATA_HOST=redis-metadata
       - D4_REDIS_METADATA_PORT=6380
-    entrypoint:
-      - bash
-      - -c
-      - "cd web; ./Flask_server.py; read x"
+    entrypoint: bash -c "cd web; ./Flask_server.py; read x"
     ports:
-      - "8080:7000"
+      - "7000:7000"
+    volumes:
+       - d4-data:/usr/src/d4-server/data
 
+  d4-analyzer-passivedns-cof:
+    build:
+      context: .
+      dockerfile: Dockerfile.analyzer-d4-passivedns
+    image: analyzer-d4-passivedns:latest
+    depends_on:
+          - redis-metadata
+          - redis-analyzer
+    environment:
+      - D4_ANALYZER_REDIS_HOST=redis-analyzer
+      - D4_ANALYZER_REDIS_PORT=6400
+      - D4_REDIS_METADATA_HOST=redis-metadata
+      - D4_REDIS_METADATA_PORT=6380
+      - DEBUG=true
+    entrypoint: bash -c "python ./pdns-cof-server.py; read x"
+    ports:
+      - "8400:8400"
+
+  d4-analyzer-passivedns-ingestion:
+    build:
+      context: .
+      dockerfile: Dockerfile.analyzer-d4-passivedns
+    image: analyzer-d4-passivedns:latest
+    depends_on:
+          - redis-metadata
+          - redis-analyzer
+    environment:
+      - D4_ANALYZER_REDIS_HOST=redis-analyzer
+      - D4_ANALYZER_REDIS_PORT=6400
+      - D4_REDIS_METADATA_HOST=redis-metadata
+      - D4_REDIS_METADATA_PORT=6380
+      - DEBUG=true
+    entrypoint: bash -c "python ./pdns-ingestion.py; read x"
+
+volumes:
+  d4-data:

From acb20a769bebb5044dc6020d4ae33a5a1f5460b5 Mon Sep 17 00:00:00 2001
From: ljaqueme <ljaqueme@opentext.com>
Date: Tue, 11 Jun 2019 16:41:31 -0600
Subject: [PATCH 4/4] use d4 github. Will works if pull request is accepted and
 Environmental variables allowed to control REDIS servers config

---
 server/Dockerfile.analyzer-d4-passivedns | 4 ++--
 server/Dockerfile.d4-server              | 4 ++--
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/server/Dockerfile.analyzer-d4-passivedns b/server/Dockerfile.analyzer-d4-passivedns
index 5c37916..4041c57 100644
--- a/server/Dockerfile.analyzer-d4-passivedns
+++ b/server/Dockerfile.analyzer-d4-passivedns
@@ -1,8 +1,8 @@
 FROM python:3
 
 WORKDIR /usr/src/
-# RUN git clone https://github.com/D4-project/analyzer-d4-passivedns.git
-RUN git clone https://github.com/trolldbois/analyzer-d4-passivedns.git
+RUN git clone https://github.com/D4-project/analyzer-d4-passivedns.git
+# RUN git clone https://github.com/trolldbois/analyzer-d4-passivedns.git
 WORKDIR /usr/src/analyzer-d4-passivedns
 
 # FIXME typo in requirements.txt filename
diff --git a/server/Dockerfile.d4-server b/server/Dockerfile.d4-server
index b2824a6..b5e2ae3 100644
--- a/server/Dockerfile.d4-server
+++ b/server/Dockerfile.d4-server
@@ -6,9 +6,9 @@ FROM python:3
 # COPY . .
 
 ## alternate solution
-# RUN git clone https://github.com/D4-project/d4-core.git
 WORKDIR /usr/src/tmp
-RUN git clone https://github.com/trolldbois/d4-core.git
+# RUN git clone https://github.com/trolldbois/d4-core.git
+RUN git clone https://github.com/D4-project/d4-core.git
 RUN mv d4-core/server/ /usr/src/d4-server
 WORKDIR /usr/src/d4-server