From 865cba395223afaa263ff7581fb53ee509f36266 Mon Sep 17 00:00:00 2001
From: Eshenko Dmitriy <dmitriy.eshenko@vyos.io>
Date: Wed, 19 Aug 2020 00:37:00 +0300
Subject: anyconnect: T2036: add anyconnect VPN support

---
 data/templates/ocserv/ocserv_config.tmpl  | 82 +++++++++++++++++++++++++++++++
 data/templates/ocserv/ocserv_passwd.tmpl  |  6 +++
 data/templates/ocserv/radius_conf.tmpl    | 22 +++++++++
 data/templates/ocserv/radius_servers.tmpl |  7 +++
 4 files changed, 117 insertions(+)
 create mode 100644 data/templates/ocserv/ocserv_config.tmpl
 create mode 100644 data/templates/ocserv/ocserv_passwd.tmpl
 create mode 100644 data/templates/ocserv/radius_conf.tmpl
 create mode 100644 data/templates/ocserv/radius_servers.tmpl

(limited to 'data')

diff --git a/data/templates/ocserv/ocserv_config.tmpl b/data/templates/ocserv/ocserv_config.tmpl
new file mode 100644
index 000000000..6aaeff693
--- /dev/null
+++ b/data/templates/ocserv/ocserv_config.tmpl
@@ -0,0 +1,82 @@
+### generated by vpn_anyconnect.py ###
+
+tcp-port = {{ listen_ports.tcp }}
+udp-port = {{ listen_ports.udp }}
+
+run-as-user = nobody
+run-as-group = daemon
+
+{% if "radius" in authentication.mode %}
+auth = "radius [config=/run/ocserv/radiusclient.conf]"
+{% else %}
+auth = "plain[/run/ocserv/ocpasswd]"
+{% endif %}
+
+{% if ssl.cert_file %}
+server-cert = {{  ssl.cert_file }}
+{% endif %}
+
+{% if ssl.key_file %}
+server-key = {{  ssl.key_file }}
+{% endif %}
+
+{% if ssl.ca_cert_file %}
+ca-cert = {{  ssl.ca_cert_file }}
+{% endif %}
+
+socket-file = /run/ocserv/ocserv.socket
+occtl-socket-file = /run/ocserv/occtl.socket
+use-occtl = true
+isolate-workers = true
+keepalive = 300
+dpd = 60
+mobile-dpd = 300
+switch-to-tcp-timeout = 30
+tls-priorities = "NORMAL:%SERVER_PRECEDENCE:%COMPAT:-RSA:-VERS-SSL3.0:-ARCFOUR-128"
+auth-timeout = 240
+idle-timeout = 1200
+mobile-idle-timeout = 1800
+min-reauth-time = 3
+cookie-timeout = 300
+rekey-method = ssl
+try-mtu-discovery = true
+cisco-client-compat = true
+dtls-legacy = true
+
+
+# The name to use for the tun device
+device = sslvpn
+
+# An alternative way of specifying the network:
+{% if network_settings %}
+# DNS settings
+{%   if network_settings.name_server is string %}
+dns = {{ network_settings.name_server }}
+{%   else %}
+{%     for dns in network_settings.name_server %}
+dns = {{ dns }}
+{%     endfor %}
+{%   endif %}
+# IPv4 network pool
+{%   if network_settings.client_ip_settings %}
+{%     if network_settings.client_ip_settings.subnet %}
+ipv4-network = {{ network_settings.client_ip_settings.subnet }}
+{%     endif %}
+{%   endif %}
+# IPv6 network pool
+{%   if network_settings.client_ipv6_pool %}
+{%     if network_settings.client_ipv6_pool.prefix %}
+ipv6-network = {{ network_settings.client_ipv6_pool.prefix }}
+ipv6-subnet-prefix = {{ network_settings.client_ipv6_pool.mask }}
+{%     endif %}
+{%   endif %}
+{% endif %}
+
+{% if network_settings.push_route is string %}
+route = {{ network_settings.push_route }}
+{% else %}
+{%   for route in network_settings.push_route %}
+route = {{ route }}
+{%   endfor %}
+{% endif %}
+
diff --git a/data/templates/ocserv/ocserv_passwd.tmpl b/data/templates/ocserv/ocserv_passwd.tmpl
new file mode 100644
index 000000000..ffadb4860
--- /dev/null
+++ b/data/templates/ocserv/ocserv_passwd.tmpl
@@ -0,0 +1,6 @@
+#<username>:<group>:<hash>
+{% for user in username if username is defined %}
+{%   if not "disable" in username[user] %}
+{{ user }}:*:{{ username[user].hash }}
+{%   endif %}
+{% endfor %}
\ No newline at end of file
diff --git a/data/templates/ocserv/radius_conf.tmpl b/data/templates/ocserv/radius_conf.tmpl
new file mode 100644
index 000000000..2d19306a0
--- /dev/null
+++ b/data/templates/ocserv/radius_conf.tmpl
@@ -0,0 +1,22 @@
+### generated by cpn_anyconnect.py ###
+nas-identifier VyOS
+{% for srv in server %}
+{%   if not "disable" in server[srv] %}
+{%     if "port" in server[srv] %}
+authserver {{ srv }}:{{server[srv]["port"]}}
+{%     else %}
+authserver {{ srv }}
+{%     endif %}
+{%   endif %}
+{% endfor %}
+radius_timeout {{ timeout }}
+{% if source_address %}
+bindaddr {{ source_address }}
+{% else %}
+bindaddr *
+{% endif %}
+servers /run/ocserv/radius_servers  
+dictionary /etc/radcli/dictionary
+default_realm
+radius_retries 3
+#
\ No newline at end of file
diff --git a/data/templates/ocserv/radius_servers.tmpl b/data/templates/ocserv/radius_servers.tmpl
new file mode 100644
index 000000000..ba21fa074
--- /dev/null
+++ b/data/templates/ocserv/radius_servers.tmpl
@@ -0,0 +1,7 @@
+### generated by cpn_anyconnect.py ###
+# server	key
+{% for srv in server %}
+{%   if not "disable" in server[srv] %}
+{{ srv }}	{{ server[srv].key }}
+{%   endif %}
+{% endfor %}
-- 
cgit v1.2.3