# vi: set sw=4 ts=4:
#
# Makefile for services of Aries.
#

-include ../path.mk
-include ../arch.mk
-include $(TOPDIR)/.config
-include $(TOPDIR)/Vars.mk

###########################################################################

MYNAME	:= "Aries/services"
MYMAKE	:= make V=$(V) DEBUG=$(DEBUG)
SERVICES:= INACTIVE DEVICE.LAYOUT DEVICE.TIME DEVICE.ACCOUNT LOGD HTTP LLD2 \
		   DEVICE.HOSTNAME
DIRS	:= INET INFSVCS HTTP LOG
OTHERFILES :=

###########################################################################
# ELBOX_ARIES_FEATURE_ROUTER_GATEWAY
ifeq ($(ELBOX_ARIES_FEATURE_ROUTER_GATEWAY),y)
DNSSVCS	:= DNS DNS4

SERVICES +=	BRIDGE LAN WAN NAT
SERVICES +=	ACL IPTABLES IPTDEFCHAIN IPTMASQ IPTVSVR IPTPFWD IPTPORTT IPTDMZ \
			IPTMACCTRL IPTURLCTRL IPTFIREWALL DDNS4.INF DHCPS4.INF \
			ROUTE.STATIC ROUTE.DESTNET ROUTE.DOMAIN ROUTE.IPUNNUMBERED
#DIRS	 +=	DHCPS IPTABLES DDNS FIREWALL
DIRS	 +=	DHCPS IPTABLES DDNS FIREWALL DHCPC
OTHERFILES += "_add_chains_to_pfwd.php"

# BRIDGE-1
SERVICES += INET.BRIDGE-1 INFSVCS.BRIDGE-1 HTTP.BRIDGE-1 IPT.BRIDGE-1 \
			UPNP.BRIDGE-1 DHCPS4.BRIDGE-1
# LAN-1
SERVICES += INET.LAN-1 INFSVCS.LAN-1 HTTP.LAN-1 IPT.LAN-1 DHCPS4.LAN-1 UPNP.LAN-1
DNSSVCS  +=	DNS4.LAN-1
# LAN-2
SERVICES += INET.LAN-2 INFSVCS.LAN-2 HTTP.LAN-2 IPT.LAN-2 DHCPS4.LAN-2 UPNP.LAN-2
DNSSVCS  +=	DNS4.LAN-2
# LAN-3
SERVICES += INET.LAN-3 INFSVCS.LAN-3 HTTP.LAN-3 DHCPS4.LAN-3 UPNP.LAN-3
DNSSVCS  +=	DNS4.LAN-3
# LAN-4
SERVICES += INET.LAN-4 INFSVCS.LAN-4 HTTP.LAN-4 DHCPS4.LAN-4 UPNP.LAN-4
DNSSVCS  +=	DNS4.LAN-4
# WAN-1
SERVICES += INET.WAN-1 INET.COMBO.WAN-1 INFSVCS.WAN-1 HTTP.WAN-1 IPT.WAN-1 \
			DDNS4.WAN-1 ICMP.WAN-1 RUNTIME.DDNS4.WAN-1
# WAN-2
SERVICES += INET.WAN-2 INFSVCS.WAN-2 HTTP.WAN-2 IPT.WAN-2 \
			DDNS4.WAN-2 ICMP.WAN-2
# WAN-3
SERVICES += INET.WAN-3 INFSVCS.WAN-3 HTTP.WAN-3 IPT.WAN-3 \
			DDNS4.WAN-3 ICMP.WAN-3
# WAN-4
SERVICES += INET.WAN-4 INFSVCS.WAN-4 HTTP.WAN-4 IPT.WAN-4
# NAT-1
SERVICES += VSVR.NAT-1 PFWD.NAT-1 PORTT.NAT-1 DMZ.NAT-1
# FORWARD
SERVICES += MACCTRL URLCTRL FIREWALL FIREWALL-2 FIREWALL-3
# PASSTHROUGH
SERVICES += DEVICE.PASSTHROUGH
# MULTICAST
SERVICES += MULTICAST
# SMS
SERVICES += SMS SMS.SEND
# BWC
ifeq ($(ELBOX_PROGS_PRIV_BWC),y)
SERVICES += BWC BWC.LAN-1 BWC.LAN-2 BWC.LAN-3 BWC.LAN-4 BWC.WAN-1 BWC.WAN-2 BWC.WAN-3 BWC.WAN-4
DIRS	 += BWC
else
# QOS
SERVICES += QOS
endif

# Backup WAN port (for 3G support)
ifeq ($(ELBOX_ARIES_USE_BACKUP_CONNECTION),y)
SERVICES += CHKCONN.WAN-1
DIRS	 += CHKCONN
endif
#NEAP : sam_pan 2010/3/22 add
ifeq ($(ELBOX_PROGS_PRIV_NEAPS_ARIES),y)
SERVICES += NEAP.LAN-1 NEAP.LAN-2 NEAP.LAN-3 NEAP.LAN-4 
DIRS     += NEAP
endif
# NetBIOS responder
ifeq ($(ELBOX_PROGS_PRIV_NETBIOS_ARIES),y)
SERVICES += NAMERESOLV.LAN-1 NAMERESOLV.LAN-2 NAMERESOLV.LAN-3 NAMERESOLV.LAN-4 
DIRS     += NAMERESOLV
endif
# LLMNR responder
ifeq ($(ELBOX_PROGS_PRIV_LLMNRESP),y)
SERVICES += NAMERESOLV.LAN-1 NAMERESOLV.LAN-2 NAMERESOLV.LAN-3 NAMERESOLV.LAN-4 
DIRS     += NAMERESOLV
endif
# NameResolv( it support Netbios and LLMNR both)
ifeq ($(ELBOX_PROGS_PRIV_NAMERESOLV),y)
SERVICES += NAMERESOLV.LAN-1 NAMERESOLV.LAN-2 NAMERESOLV.LAN-3 NAMERESOLV.LAN-4 
SERVICES += NAMERESOLV
DIRS     += NAMERESOLV
endif

# Startspeed (China ISP support)
ifeq ($(ELBOX_PROGS_PRIV_STARSPEED),y)
SERVICES += STARSPEED.WAN-1
endif
#SSH : sandy 2010/5/5 add
ifeq ($(ELBOX_PROGS_GPL_OPENSSH_5_5P1),y)
SERVICES += SSH4.BRIDGE-1
SERVICES += SSH4.LAN-1 SSH4.LAN-2 SSH4.LAN-3 SSH4.LAN-4
DIRS     += SSH
endif
ifeq ($(ELBOX_PROGS_GPL_SAMBA_3_0_24),y)
SERVICES += SAMBA
endif
#DYNAMIC ROUTE : sandy 2011/1/7 add
ifeq ($(ELBOX_PROGS_GPL_QUAGGA_UNIFIED),y)
SERVICES += ROUTE.DYNAMIC
endif
ifeq ($(ELBOX_PROGS_PRIV_USBMOUNT),y)
SERVICES += FDISK
endif

ifeq ($(ELBOX_USE_IPV6),y)
SERVICES += INET.CHILD.LAN-1 INET.CHILD.LAN-2 INET.CHILD.LAN-3 INET.CHILD.LAN-4 INET.CHILD.WAN-3
SERVICES +=	ACL6 IP6TABLES IP6TDEFCHAIN IP6TFIREWALL DHCPS6.INF
SERVICES += ROUTE6.STATIC
ifneq ($(ELBOX_PROGS_GPL_QUAGGA_UNIFIED),y)
SERVICES += ROUTE6.DYNAMIC
endif
# BRIDGE-1
#SERVICES += IP6T.BRIDGE-1
# LAN-1
SERVICES += IP6T.LAN-1 DHCPS6.LAN-1
DNSSVCS  +=	DNS6.LAN-1
# LAN-2
SERVICES += IP6T.LAN-2 DHCPS6.LAN-2
DNSSVCS  +=	DNS6.LAN-2
# LAN-3
SERVICES += IP6T.LAN-3 DHCPS6.LAN-3
DNSSVCS  +=	DNS6.LAN-3
# LAN-4
SERVICES += IP6T.LAN-4 DHCPS6.LAN-4
DNSSVCS  +=	DNS6.LAN-4
# WAN-1
SERVICES += IP6T.WAN-1
# WAN-2
SERVICES += IP6T.WAN-2
# WAN-3
SERVICES += IP6T.WAN-3
# WAN-4
#SERVICES += IP6T.WAN-4
SERVICES += IP6T.WAN-4 DHCPC6.WAN-4
# FORWARD
SERVICES += FIREWALL6
#SSH : sandy 2010/5/5 add
ifeq ($(ELBOX_PROGS_GPL_OPENSSH_5_5P1),y)
SERVICES += SSH6.LAN-1 SSH6.LAN-2 SSH6.LAN-3 SSH6.LAN-4
endif
# Sub-directory
DIRS += IP6TABLES
endif

# Replace the DNS services
ifeq ($(ELBOX_TEMPLATE_ARIES_UNIFIED_DNS),y)
SERVICES += DNS.INF
else
SERVICES += $(DNSSVCS)
DIRS	 += DNS
endif
endif

###########################################################################
# ELBOX_ARIES_FEATURE_BRIDGE_AP
ifeq ($(ELBOX_ARIES_FEATURE_BRIDGE_AP),y)
SERVICES +=	BRIDGE
# services for BRIDGE-1
SERVICES += INET.BRIDGE-1 INFSVCS.BRIDGE-1 HTTP.BRIDGE-1 IPT.BRIDGE-1 \
			UPNP.BRIDGE-1
#SSH : sandy 2010/5/5 add
ifeq ($(ELBOX_PROGS_GPL_OPENSSH_5_5P1),y)
SERVICES += SSH4.BRIDGE-1
DIRS     += SSH
endif
endif

###########################################################################
# Common modules

ifeq ($(ELBOX_TEMPLATE_ARIES_NET_SNMP_5_5),y)
SERVICES += SNMPD
endif

###########################################################################

# Mark feature file $(MarkFile,[file name],[Feature])
define MarkFile
@echo -e "Feature: \033[32m$(2)\033[0m is selected !"
$(Q)echo $(2) > $(TARGET)/etc/config/$(strip $(1))
endef

# Enable Linux User Management, this will replace the original DEVICE.ACCOUNT.
define EnableUserManagement
$(call MarkFile,usr,User Management)
@echo -e "   replacing DEVICE.ACCOUNT with DEVICE.USERMANAGEMENT !"
$(Q)cp DEVICE.USERMANAGEMENT.php $(TARGET)/etc/services/DEVICE.ACCOUNT.php
endef

all:

rootfs:
	@echo -e "\033[32mCreating rootfs for $(MYNAME) ...\033[0m"
	$(Q)[ -d $(TARGET)/etc/services ] || mkdir -p $(TARGET)/etc/services
	$(Q)[ -d $(TARGET)/etc/config ] || mkdir -p $(TARGET)/etc/config

install:
	@echo -e "\033[32mInstalling $(MYNAME) ...\033[0m"
	$(Q)for i in $(SERVICES); do cp $$i.php $(TARGET)/etc/services/.; done
	$(Q)for i in $(DIRS); do \
	if [ -f $$i/Makefile ]; then \
		$(MYMAKE) -C $$i install; \
	else \
		[ -d $(TARGET)/etc/services/$$i ] || mkdir -p $(TARGET)/etc/services/$$i ; \
		cp $$i/*.php $(TARGET)/etc/services/$$i/.; \
	fi \
	done
	$(Q)for i in $(OTHERFILES); do cp $$i $(TARGET)/etc/services/.; done
	$(if $(ELBOX_ARIES_USE_DANIELS_CONE_NAT),			$(call MarkFile,nat,Daniel\'s NAT),)
	$(if $(ELBOX_PROGS_PRIV_BWC),						$(call MarkFile,bwc,BWC),)
	$(if $(ELBOX_TEMPLATE_ARIES_ENABLE_USER_MANAGEMENT),$(call EnableUserManagement),)

clean:

.PHONY: all rootfs install clean
