goto bad;
xmlDocSetRootElement(doc, root);
- node = xmlNewTextChild(root, NULL, XCAST("version"), XCAST(openconnect_version_str));
+ node = xmlNewTextChild(root, NULL, XCAST("version"),
+ XCAST(vpninfo->version_string ? : openconnect_version_str));
if (!node)
goto bad;
if (!xmlNewProp(node, XCAST("who"), XCAST("vpn")))
{
if (vpninfo->mobile_platform_version) {
buf_append(buf, "X-AnyConnect-Identifier-ClientVersion: %s\r\n",
- openconnect_version_str);
+ vpninfo->version_string ? : openconnect_version_str);
buf_append(buf, "X-AnyConnect-Identifier-Platform: %s\r\n",
vpninfo->platname);
buf_append(buf, "X-AnyConnect-Identifier-PlatformVersion: %s\r\n",
lib.setReportedOS("win");
lib.setLogLevel(lib.PRG_DEBUG);
+ lib.setVersionString("2.2.0133");
//lib.setTokenMode(LibOpenConnect.OC_TOKEN_MODE_STOKEN, null);
String csd_wrapper = "./csd-" + lib.getProtocol() + ".sh";
if (new File(csd_wrapper).exists()) {
public synchronized native int setHTTPProxy(String proxy);
public synchronized native void setXMLSHA1(String hash);
public synchronized native void setHostname(String hostname);
+ public synchronized native void setVersionString(String version);
public synchronized native void setUrlpath(String urlpath);
public synchronized native void setLocalName(String localName);
public synchronized native void setCAFile(String caFile);
SET_STRING_END();
}
+JNIEXPORT void JNICALL Java_org_infradead_libopenconnect_LibOpenConnect_setVersionString(
+ JNIEnv *jenv, jobject jobj, jstring jarg)
+{
+ SET_STRING_START()
+ openconnect_set_version_string(ctx->vpninfo, arg);
+ SET_STRING_END();
+}
+
JNIEXPORT void JNICALL Java_org_infradead_libopenconnect_LibOpenConnect_setUrlpath(
JNIEnv *jenv, jobject jobj, jstring jarg)
{
openconnect_free_supported_protocols;
openconnect_has_tss2_blob_support;
openconnect_set_key_password;
+ openconnect_set_version_string;
} OPENCONNECT_5_4;
OPENCONNECT_PRIVATE {
return 0;
}
+int openconnect_set_version_string(struct openconnect_info *vpninfo,
+ const char *version_string)
+{
+ STRDUP(vpninfo->version_string, version_string);
+
+ return 0;
+}
+
void free_optlist(struct oc_vpn_option *opt)
{
struct oc_vpn_option *next;
OPT_LOCAL_HOSTNAME,
OPT_PROTOCOL,
OPT_PASSTOS,
+ OPT_VERSION,
};
#ifdef __sun__
OPTION("resolve", 1, OPT_RESOLVE),
OPTION("key-password-from-fsid", 0, OPT_KEY_PASSWORD_FROM_FSID),
OPTION("useragent", 1, OPT_USERAGENT),
+ OPTION("version-string", 1, OPT_VERSION),
OPTION("local-hostname", 1, OPT_LOCAL_HOSTNAME),
OPTION("disable-ipv6", 0, OPT_DISABLE_IPV6),
OPTION("no-proxy", 0, OPT_NO_PROXY),
printf(" --useragent=STRING %s\n", _("HTTP header User-Agent: field"));
printf(" --local-hostname=STRING %s\n", _("Local hostname to advertise to server"));
printf(" --os=STRING %s\n", _("OS type (linux,linux-64,win,...) to report"));
+ printf(" --version-string=STRING %s\n", _("reported version string during authentication"));
+ printf(" (%s %s)\n", _("default:"), openconnect_version_str);
#ifndef _WIN32
printf("\n%s:\n", _("Trojan binary (CSD) execution"));
free(vpninfo->useragent);
vpninfo->useragent = dup_config_arg();
break;
+ case OPT_VERSION:
+ free(vpninfo->version_string);
+ vpninfo->version_string = dup_config_arg();
+ break;
case OPT_LOCAL_HOSTNAME:
openconnect_set_localname(vpninfo, config_arg);
break;
int is_dyndns; /* Attempt to redo DNS lookup on each CSTP reconnect */
char *useragent;
+ char *version_string;
const char *quit_reason;
.OP \-\-resolve host:ip
.OP \-\-servercert sha1
.OP \-\-useragent string
+.OP \-\-version\-string string
.OP \-\-local-hostname string
.OP \-\-os string
.B [https://]\fIserver\fB[:\fIport\fB][/\fIgroup\fB]
as 'User\-Agent:' field value in HTTP header.
(e.g. \-\-useragent 'Cisco AnyConnect VPN Agent for Windows 2.2.0133')
.TP
+.B \-\-version\-string=STRING
+Use
+.I STRING
+as the software version reported to the head end.
+(e.g. \-\-version\-string '2.2.0133')
+.TP
.B \-\-local-hostname=STRING
Use
.I STRING
/*
* API version 5.5:
+ * - add openconnect_set_version_string()
* - add openconnect_set_key_password()
* - Add openconnect_has_tss2_blob_support()
* - Add openconnect_get_supported_protocols()
trojan binary. */
int openconnect_set_reported_os(struct openconnect_info *, const char *os);
+int openconnect_set_version_string(struct openconnect_info *vpninfo,
+ const char *version_string);
int openconnect_set_mobile_info(struct openconnect_info *vpninfo,
const char *mobile_platform_version,
const char *mobile_device_type,