Index: /nodes/HybridHuub/wleiden.yaml
===================================================================
--- /nodes/HybridHuub/wleiden.yaml	(revision 10577)
+++ /nodes/HybridHuub/wleiden.yaml	(revision 10584)
@@ -15,6 +15,6 @@
 release   : "9.0-RELEASE"
 remote_access: "huubs.xs4all.nl:1022"
-service_ileiden: False
-service_proxy: True
+service_proxy_ileiden: False
+service_proxy_normal: True
 status    : "up"
 
Index: /nodes/HybridRick/wleiden.yaml
===================================================================
--- /nodes/HybridRick/wleiden.yaml	(revision 10577)
+++ /nodes/HybridRick/wleiden.yaml	(revision 10584)
@@ -15,6 +15,6 @@
 release   : "9.0-RELEASE"
 remote_access: "riff.vanderzwet.net:2022"
-service_ileiden: False
-service_proxy: True
+service_proxy_ileiden: True
+service_proxy_normal: True
 status    : "up"
 
Index: /tools/gformat.py
===================================================================
--- /tools/gformat.py	(revision 10577)
+++ /tools/gformat.py	(revision 10584)
@@ -47,5 +47,20 @@
     from yaml import Loader, Dumper
 
-from jinja2 import Template
+from jinja2 import Environment, Template
+def yesorno(value):
+  return "YES" if bool(value) else "NO"
+env = Environment()
+env.filters['yesorno'] = yesorno
+def render_template(datadump, template):
+  result = env.from_string(template).render(datadump)
+  # Make it look pretty to the naked eye, as jinja templates are not so
+  # friendly when it comes to whitespace formatting
+  ## Remove extra whitespace at end of line lstrip() style.
+  result = re.sub(r'\n[\ ]+','\n', result)
+  ## Include only a single newline between an definition and a comment
+  result = re.sub(r'(["\'])\n+([a-z]|\n#\n)',r'\1\n\2', result)
+  ## Remove extra newlines after single comment
+  result = re.sub(r'(#\n)\n+([a-z])',r'\1\2', result)
+  return result
 
 import logging
@@ -82,5 +97,5 @@
 
   # Use some boring defaults
-  datadump = { 'service_proxy' : False, 'service_ileiden' : False }
+  datadump = { 'service_proxy_normal' : False, 'service_proxy_ileiden' : False, 'service_accesspoint' : True }
   f = open(gfile, 'r')
   datadump.update(yaml.load(f,Loader=Loader))
@@ -450,7 +465,7 @@
   for host in get_hybridlist():
     hostdump = get_yaml(host)
-    if hostdump['service_ileiden']:
+    if hostdump['service_proxy_ileiden']:
       ileiden_proxies.append(hostdump)
-    if hostdump['service_proxy']:
+    if hostdump['service_proxy_normal']:
       normal_proxies.append(hostdump)
 
@@ -461,5 +476,5 @@
 
   output = generate_header("#");
-  output += Template("""\
+  output += render_template(datadump, """\
 hostname='{{ autogen_fqdn }}'
 location='{{ location }}'
@@ -500,51 +515,60 @@
 route_wleiden="-net 172.16.0.0/12 {{ internalroute }}"
 {% endif -%}
-{% endif -%}
-
-{% if nodetype == "Hybrid" %}
-#
-# Hybrid Configuration
-#
-captive_portal_interfaces="{{ autogen_dhcp_interfaces|default('none', true) }}"
-externalif="{{ externalif|default('vr0', true) }}"
-masterip="{{ masterip }}"
-
-pf_rules="/etc/pf.hybrid.conf"
-pf_flags_hybrid="-D ext_if=$externalif -D ext_if_net=$externalif:network -D captive_portal_interfaces=$captive_portal_interfaces -D masterip=$masterip"
-{% if service_ileiden -%}
-# Service iLeiden
-service_ileiden="yes"
-pf_flags="$pf_flags_hybrid -D publicnat=80,443"
-{% else -%}
-pf_flags="$pf_flags_hybrid -D publicnat=0"
-lvrouted_flags="$lvrouted_flags -z $list_ileiden_proxies"
-{% endif -%}
-
-{% if service_proxy %}
-# Service Proxy
-service_proxy="yes"
-tinyproxy_enable="yes"
-{% else -%}
-service_proxy="no"
-pen_wrapper_enable="yes"
-{% endif -%}
-
-{% if board == "ALIX2" %}
-# ''Fat'' configuration, board has 256MB RAM
-dnsmasq_enable="NO"
-named_enable="YES"
-dhcpd_enable="YES"
-{% endif -%}
-
-{% if gateway -%}
-defaultrouter="{{ gateway }}"
-{% endif -%}
-#
-# END Hybrid Configuration
-#
-{% endif -%}
-
-
-{% if nodetype == "CNode" %}
+
+{% elif nodetype == "Hybrid" %}
+  #
+  # Hybrid Configuration
+  #
+  captive_portal_interfaces="{{ autogen_dhcp_interfaces|default('none', true) }}"
+  externalif="{{ externalif|default('vr0', true) }}"
+  masterip="{{ masterip }}"
+  
+  # Defined services 
+  service_proxy_ileiden="{{ service_proxy_ileiden|yesorno }}"
+  service_proxy_normal="{{ service_proxy_normal|yesorno }}"
+  service_accesspoint="{{ service_accesspoint|yesorno }}"
+  #
+
+  {% if service_proxy_ileiden or service_proxy_normal %}
+    pf_rules="/etc/pf.hybrid.conf"
+    pf_flags="-D ext_if=$externalif -D ext_if_net=$externalif:network -D masterip=$masterip"
+   
+    {% if service_proxy_ileiden %}
+      pf_flags="$pf_flags -D publicnat=80,443"
+    {% else %}
+      pf_flags="$pf_flags -D publicnat=0"
+    {% endif %}
+
+    {% if service_proxy_normal %}
+      pf_flags="$pf_flags -D ext_if_default_route={{ gateway|default('127.127.127.127') }}"
+      lvrouted_flags="$lvrouted_flags -z $list_ileiden_proxies"
+    {% endif %}
+  {% else %}
+    pf_rules="/etc/pf.node.conf"
+  {% endif %}
+
+  {% if service_proxy_normal %}
+    tinyproxy_enable="yes"
+  {% else %}
+    pen_wrapper_enable="yes"
+  {% endif %}
+
+  {% if service_accesspoint %}
+    pf_flags="$pf_flags -D captive_portal_interfaces=$captive_portal_interfaces"
+  {% endif %}
+
+  {% if board == "ALIX2" %}
+    #
+    # ''Fat'' configuration, board has 256MB RAM
+    #
+    dnsmasq_enable="NO"
+    named_enable="YES"
+    dhcpd_enable="YES"
+  {% endif -%}
+
+  {% if service_proxy_ileiden and gateway %}
+    defaultrouter="{{ gateway }}"
+  {% endif %}
+{% elif nodetype == "CNode" %}
 #
 # NODE iLeiden Configuration
@@ -561,6 +585,9 @@
 lvrouted_flags="-u -s s00p3rs3kr3t -m 28 -z $list_ileiden_proxies"
 {% endif %}
-\n
-""").render(datadump)
+
+#
+# Interface definitions
+#\n
+""")
 
   # lo0 configuration:
@@ -688,5 +715,5 @@
   for host in get_hybridlist():
     hostdump = get_yaml(host)
-    if hostdump['service_proxy'] or hostdump['service_ileiden']:
+    if hostdump['service_proxy_ileiden'] or hostdump['service_proxy_normal']:
       datadump['autogen_edge_nameservers'] += "nameserver %(masterip)-15s # %(autogen_realname)s\n" % hostdump
 
@@ -698,5 +725,5 @@
 nameserver 127.0.0.1
 
-{% if service_proxy or service_ileiden or nodetype == 'Proxy' -%}
+{% if service_proxy_normal or service_proxy_ileiden or nodetype == 'Proxy' -%}
 nameserver 8.8.8.8   # Google Public NameServer
 nameserver 8.8.4.4   # Google Public NameServer
@@ -722,8 +749,8 @@
  - Hulp Node
 {% endif -%}
-{% if service_proxy -%}
+{% if service_proxy_normal -%}
  - Normal Proxy
 {% endif -%}
-{% if service_ileiden -%} 
+{% if service_proxy_ileiden -%} 
  - iLeiden Proxy
 {% endif %}
