summary refs log tree commit diff
path: root/topics/deploy/uthsc-vpn.scm
diff options
context:
space:
mode:
Diffstat (limited to 'topics/deploy/uthsc-vpn.scm')
-rw-r--r--topics/deploy/uthsc-vpn.scm44
1 files changed, 44 insertions, 0 deletions
diff --git a/topics/deploy/uthsc-vpn.scm b/topics/deploy/uthsc-vpn.scm
new file mode 100644
index 0000000..c714731
--- /dev/null
+++ b/topics/deploy/uthsc-vpn.scm
@@ -0,0 +1,44 @@
+(use-modules ((gnu packages guile-xyz) #:select (guile-ini guile-lib guile-smc))
+             ((gnu packages vpn) #:select (openconnect-sso vpn-slice))
+             (guix gexp))
+
+;; Put in the hosts you are interested in here.
+(define %hosts
+  (list "octopus01"
+        "tux01.genenetwork.org"))
+
+(define (ini-file name scm)
+  "Return a file-like object representing INI file with @var{name} and
+@var{scm} data."
+  (computed-file name
+                 (with-extensions (list guile-ini guile-lib guile-smc)
+                   #~(begin
+                       (use-modules (srfi srfi-26)
+                                    (ini))
+
+                       (call-with-output-file #$output
+                         (cut scm->ini #$scm #:port <>))))))
+
+(define uthsc-vpn
+  (with-imported-modules '((guix build utils))
+    #~(begin
+        (use-modules (guix build utils))
+
+        (setenv "OPENSSL_CONF"
+                #$(ini-file "openssl.cnf"
+                            #~'((#f
+                                 ("openssl_conf" . "openssl_init"))
+                                ("openssl_init"
+                                 ("ssl_conf" . "ssl_sect"))
+                                ("ssl_sect"
+                                 ("system_default" . "system_default_sect"))
+                                ("system_default_sect"
+                                 ("Options" . "UnsafeLegacyRenegotiation")))))
+        (invoke #$(file-append openconnect-sso "/bin/openconnect-sso")
+                "--server" "uthscvpn1.uthsc.edu"
+                "--authgroup" "UTHSC"
+                "--"
+                "--script" (string-join (cons #$(file-append vpn-slice "/bin/vpn-slice")
+                                              '#$%hosts))))))
+
+(program-file "uthsc-vpn" uthsc-vpn)