diff options
Diffstat (limited to 'topics/deploy/uthsc-vpn.scm')
-rw-r--r-- | topics/deploy/uthsc-vpn.scm | 44 |
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) |