###############################################################################
# Copyright (C) 2020 Simon Adlem, G7RZU <g7rzu@gb7fr.org.uk>  
#
#   This program is free software; you can redistribute it and/or modify
#   it under the terms of the GNU General Public License as published by
#   the Free Software Foundation; either version 3 of the License, or
#   (at your option) any later version.
#
#   This program is distributed in the hope that it will be useful,
#   but WITHOUT ANY WARRANTY; without even the implied warranty of
#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#   GNU General Public License for more details.
#
#   You should have received a copy of the GNU General Public License
#   along with this program; if not, write to the Free Software Foundation,
#   Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
###############################################################################
version: '2.1'
services:
    freedmr:
        container_name: freedmr
        depends_on:
            - ipv6nat
        volumes:
            - '/etc/freedmr/freedmr.cfg:/opt/freedmr/freedmr.cfg'
            - '/var/log/freedmr/freedmr.log:/opt/freedmr/freedmr.log'
            - '/etc/freedmr/rules.py:/opt/freedmr/rules.py'
            #Write JSON files outside of container
            - '/etc/freedmr/json/talkgroup_ids.json:/opt/freedmr/talkgroup_ids.json'
            - '/etc/freedmr/json/subscriber_ids.json:/opt/freedmr/subscriber_ids.json'
            - '/etc/freedmr/json/peer_ids.json:/opt/freedmr/peer_ids.json'
        ports:
            - '62031:62031/udp'
            #Change the below to inlude ports used for your OBP(s)
            - '62041:62041/udp'
            - '4321:4321/tcp'
        image: 'hacknix/freedmr:development-latest'
        restart: "unless-stopped"
        networks:
           app_net:
             ipv4_address: 172.16.238.10
             ipv6_address: fd2a:70b6:9f54:29b6::10
        #Control parameters inside container
        environment:
            #IPV6 support 
            - FDPROXY_IPV6=1
            #Display connection stats in log
            - FDPROXY_STATS=1
            #Display conneting client info in log
            - FDPROXY_CLIENTINFO=1
            #Debug HBP session in log (lots of data!!)
            - FDPROXY_DEBUG=0
            #Override proxy external port
            #- FDPROXY_LISTENPORT=62031
        read_only: "true"

    ipv6nat:
        container_name: ipv6nat
        image: 'robbertkl/ipv6nat'
        volumes:
            - '/var/run/docker.sock:/var/run/docker.sock:ro'
            - '/lib/modules:/lib/modules:ro'
        privileged: "true"
        network_mode: "host"
        restart: "unless-stopped"
    
    freedmrmon:
        container_name: freedmrmon
        depends_on:
            - freedmr
        volumes:
            #This should be kept to a manageable size from
            #cron or logrotate outisde of the container.
            - '/var/log/freeDMRmonitor/lastheard.log:/opt/FreeDMRmonitor/log/lastheard.log'
            - '/var/log/freeDMRmonitor/hbmon.log:/opt/FreeDMRmonitor/log/hbmon.log'
            #Write JSON files outside of container
            - '/etc/freedmr/json/talkgroup_ids.json:/opt/FreeDMRmonitor/talkgroup_ids.json'
            - '/etc/freedmr/json/subscriber_ids.json:/opt/FreeDMRmonitor/subscriber_ids.json'
            - '/etc/freedmr/json/peer_ids.json:/opt/FreeDMRmonitor/peer_ids.json'

        #Override config file
        #    - '/etc/freedmr/config.py:/opt/FreeDMRmonitor/config.py'
        ports:
            - '9000:9000/tcp'
        image: 'hacknix/freedmrmonitor:latest'
        restart: "unless-stopped"
        networks:
           app_net:
             ipv4_address: 172.16.238.20
             ipv6_address: fd2a:70b6:9f54:29b6::20
     
    freedmrmonpache:
        container_name: freedmrmonapache
        depends_on:
             - freedmrmon
        #Use to override html files
        #And images
        #volumes:
        #    - '/var/www/html/:/var/www/html/'
        #    - '/var/www/html/images/:/var/www/html/images/'
        ports:
            - '80:80/tcp'
        image: hacknix/freedmrmonitor-apache:latest
        restart: "unless-stopped"
        networks:
           app_net:
             ipv4_address: 172.16.238.30
             ipv6_address: fd2a:70b6:9f54:29b6::30

networks:
  app_net:
    enable_ipv6: true
    driver: bridge
    ipam:
      driver: default
      config:
        - subnet: 172.16.238.0/24
          gateway: 172.16.238.1
        - subnet: fd2a:70b6:9f54:29b6::/64
          gateway: fd2a:70b6:9f54:29b6::1
