From 6b2e8bbbaf0a6fdba3c4cad826b58db984aace48 Mon Sep 17 00:00:00 2001 From: Andreas Gnau Date: Sat, 23 May 2020 22:54:43 +0200 Subject: [PATCH] nx: Implement logout Signed-off-by: Andreas Gnau --- nx.c | 30 ++++++++++++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/nx.c b/nx.c index acc68c49..b637a3ba 100644 --- a/nx.c +++ b/nx.c @@ -390,6 +390,32 @@ out: int nx_bye(struct openconnect_info *vpninfo, const char *reason) { - // TODO: implement - return -EINVAL; + int ret = 0; + char *resp_buf = NULL; + struct oc_text_buf *request_body = NULL; + /* close tunnel */ + openconnect_close_https(vpninfo, 0); + + request_body = buf_alloc(); + if (!request_body) { + ret = buf_error(request_body); + goto out; + } + append_opt(request_body, "userLogout", "1"); + vpninfo->urlpath = strdup("cgi-bin/userLogout"); + ret = do_https_request(vpninfo, "POST", "application/x-www-form-urlencoded", request_body, &resp_buf, 0); + free(vpninfo->urlpath); + vpninfo->urlpath = NULL; + printf("ret=%d\n", ret); + if (ret < 0) + vpn_progress(vpninfo, PRG_ERR, _("Logout failed.\n")); + else { + ret = 0; + vpn_progress(vpninfo, PRG_INFO, _("Logout successful.\n")); + } + +out: + free(resp_buf); + free(request_body); + return ret; } -- 2.49.0