VPN Plugins
Jump to navigation
Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
As of 3.0.2, VPN plugins are stored in:
- /usr/lib/vpn/agents (VPNC and Cisco AnyConnect that ship with the device)
- /media/cryptofs/apps/usr/palm/vpnframework/agents (extra such as the PPTP plugin in the App Catalog)
They have the following structure (VPNC used as an example):
- /usr/lib/vpn/agents/vpnc/ (root directory)
- vpn-plugin-info.json
- library (e.g. libVpncAgent.so)
- other ancillary files (callback scripts, etc)
- plugins/ (does NOT seem to be necessary - VPNC plugin does not have this directory)
- plugin files (apparently only as necessary by the plugin library)
vpn-plugin-info.json
{ "title": "VPNC", "id": "com.palm.vpnc", "version": "0.5.1", "vendor": "Palm, Inc.", "type": ["IPSec"], "plugin": "libVpncAgent.so" }
Library
From objdump, it looks like the only symbols in common between every plugin are:
initVpnAgent cleanupVpnAgent bannerSent gLocalizedStrList
In addition to the expected symbols from GCC. And that's it. Signatures for these functions do not seem to be documented anywhere, and I suspect gLocalizedStrList is just an array which may not be required by PmVpnDaemon. No idea about bannerSent.
There are also calls to apparently-undocumented functions such as PmLogGetContext and PmLogPrint_. The VPNC and PPTP plugins link to:
root@HPTouchPad:/usr/lib/vpn/agents/vpnc# ldd libVpncAgent.so /usr/lib/libgoodabort.so (0x2aac1000) /usr/lib/libmemcpy.so (0x2aaca000) libpthread.so.0 => /lib/libpthread.so.0 (0x2aadb000) libglib-2.0.so.0 => /usr/lib/libglib-2.0.so.0 (0x2aafb000) libcjson.so => /usr/lib/libcjson.so (0x2abdb000) libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x2abe9000) libc.so.6 => /lib/libc.so.6 (0x2abfc000) /lib/ld-linux.so.3 (0x54aaa000) librt.so.1 => /lib/librt.so.1 (0x2ad3c000)
and the AnyConnect plugin links to:
root@HPTouchPad:/usr/lib/vpn/agents/ciscoanyconnect# ldd libVpnAcAgent.so /usr/lib/libgoodabort.so (0x2abf8000) /usr/lib/libmemcpy.so (0x2ac01000) libpthread.so.0 => /lib/libpthread.so.0 (0x2ac12000) libglib-2.0.so.0 => /usr/lib/libglib-2.0.so.0 (0x2ac32000) libxml2.so.2 => /usr/lib/libxml2.so.2 (0x2ad12000) libcurl.so.4 => /usr/lib/libcurl.so.4 (0x2ae32000) libz.so.1 => /usr/lib/libz.so.1 (0x2ae83000) libssl.so.0.9.8 => /usr/lib/libssl.so.0.9.8 (0x2ae9f000) libcrypto.so.0.9.8 => /usr/lib/libcrypto.so.0.9.8 (0x2aee5000) libcjson.so => /usr/lib/libcjson.so (0x2b028000) libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x2b036000) libc.so.6 => /lib/libc.so.6 (0x2b049000) /lib/ld-linux.so.3 (0x54aaa000) librt.so.1 => /lib/librt.so.1 (0x2b189000) libdl.so.2 => /lib/libdl.so.2 (0x2b199000) libm.so.6 => /lib/libm.so.6 (0x2b1a6000) libWebOsProxy.so => /usr/lib/libWebOsProxy.so (0x2b21f000) libcares.so.2 => /usr/lib/libcares.so.2 (0x2b22b000) libpbnjson_cpp.so => /usr/lib/libpbnjson_cpp.so (0x2b240000) libglibmm-2.4.so.1 => /usr/lib/libglibmm-2.4.so.1 (0x2b25a000) libpbnjson_c.so => /usr/lib/libpbnjson_c.so (0x2b2a5000) libyajl.so.1 => /usr/lib/libyajl.so.1 (0x2b2bf000) libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x2b2cd000) libsigc-2.0.so.0 => /usr/lib/libsigc-2.0.so.0 (0x2b3a6000) libgobject-2.0.so.0 => /usr/lib/libgobject-2.0.so.0 (0x2b3b2000) libgmodule-2.0.so.0 => /usr/lib/libgmodule-2.0.so.0 (0x2b3f6000)
So I'm not sure where those functions reside.
ls-monitor dump
Time Prot Type Serial Sender Destination Method Payload 4177.473 [PRV] call 405 com.palm.luna-1785-active (/var/run/ls2/SjYfQK) com.palm.vpn (/var/run/ls2/aCzZVa) com.palm.app.vpn 1117 //getAgents «{"$activity": {"activityId": 404}}» 4177.493 [PRV] return 405 com.palm.vpn (/var/run/ls2/aCzZVa) com.palm.luna-1785-active (/var/run/ls2/SjYfQK) «{ "vpnAgents": [ { "vpnAgentGuid": "com.palm.vpnc", "vpnAgentLabel": "VPNC", "vpnAgentTechnology": [ "IPSec" ] }, { "vpnAgentGuid": "com.palm.anyconnectagent", "vpnAgentLabel": "Cisco AnyConnect", "vpnAgentIcon": "\/usr\/lib\/vpn\/agents\/ciscoanyconnect\/icons\/cisco-small.png", "vpnAgentTechnology": [ "ssl" ] } ], "returnValue": true }» 4191.613 [PRV] call 406 com.palm.luna-1785-active (/var/run/ls2/SjYfQK) com.palm.vpn (/var/run/ls2/aCzZVa) com.palm.app.vpn 1117 //getConnectionDetails «{"$activity": {"activityId": 404}}» 4191.613 [PRV] return 406 com.palm.vpn (/var/run/ls2/aCzZVa) com.palm.luna-1785-active (/var/run/ls2/SjYfQK) «{ "state": "disconnected", "returnValue": true }» 4191.613 [PRV] call 407 com.palm.luna-1785-active (/var/run/ls2/SjYfQK) com.palm.vpn (/var/run/ls2/aCzZVa) com.palm.app.vpn 1117 //connect «{"vpnHost": "test", "vpnAgentGuid": "com.palm.vpnc", "$activity": {"activityId": 404}}» 4191.613 [PRV] call 408 com.palm.luna-1785-active (/var/run/ls2/SjYfQK) com.palm.vpn (/var/run/ls2/aCzZVa) /com/palm/luna/private/cancel «{"token":406}» 4192.008 [PRV] call 56 com.palm.vpn (/var/run/ls2/aCzZVa) com.palm.applicationManager (/var/run/ls2/UjRKPX) (null) //open «{ "id": "com.palm.app.vpn", "params": { "vpnAgentGuid": "com.palm.vpnc", "vpnMsgType": "credentials", "vpnHost": "test", "vpnFormFields": [ { "id": "vpnUserId", "label": "Username", "visible": true, "type": "textfield", "value": "" }, { "id": "vpnPassword", "label": "Password", "visible": true, "type": "passwordfield", "value": "" }, { "id": "vpnGroupId", "label": "Group ID", "visible": true, "type": "textfield", "value": "" }, { "id": "vpnGroupSecret", "label": "Group Secret", "visible": true, "type": "passwordfield", "value": "" }, { "id": "vpnDomain", "label": "Domain", "visible": true, "type": "textfield", "value": "" }, { "id": "vpnDeadPeerDetection", "label": "Dead Peer Detection", "visible": true, "type": "checkbox", "value": "true", "trueValue": "true", "falseValue": "false" }, { "id": "vpnEncryptionMethod", "label": "Encryption Method", "visible": true, "type": "listselector", "value": "Secure", "options": [ { "label": "Secure", "value": "Secure" }, { "label": "Weak", "value": "Weak" }, { "label": "None", "value": "None" } ] }, { "id": "vpnNatTraversal", "label": "NAT Traversal", "visible": true, "type": "listselector", "value": "NAT-T (auto-detect)", "options": [ { "label": "Cisco-UDP", "value": "Cisco-UDP" }, { "label": "NAT-T (always)", "value": "NAT-T (always)" }, { "label": "NAT-T (auto-detect)", "value": "NAT-T (auto-detect)" }, { "label": "Disabled", "value": "Disabled" } ] } ] } }» 4192.057 [PRV] return 56 com.palm.applicationManager (/var/run/ls2/UjRKPX) com.palm.vpn (/var/run/ls2/aCzZVa) «{ "processId": "success", "returnValue": true }» 4192.093 [PRV] call 409 com.palm.luna-1785-active (/var/run/ls2/SjYfQK) com.palm.vpn (/var/run/ls2/aCzZVa) /com/palm/luna/private/cancel «{"token":407}» 4192.095 [PRV] return 407 com.palm.vpn (/var/run/ls2/aCzZVa) com.palm.luna-1785-active (/var/run/ls2/SjYfQK) «{ "returnValue": false, "errorCode": -7, "errorText": "Need User Authentication Value" }»