import urllib.request
import ssl
+# In order to run this, you will need to build tncc_preload.so (from
+# https://github.com/russdill/ncsvc-socks-wrapper) and place it in this
+# directory.
+#
+# Very old versions of the TNCC Java binary expect to find files in
+# ~/.juniper_networks instead of ~/.pulse_secure
+TNCC_DIRECTORY = "~/.pulse_secure"
+
ssl._create_default_https_context = ssl._create_unverified_context
class Tncc:
print('WARNING: no IcedTea Java web plugin JAR found at %s' % self.plugin_jar, file=sys.stderr)
self.plugin_jar = None
self.user_agent = 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1'
-
+
def tncc_init(self):
class_names = ('net.juniper.tnc.NARPlatform.linux.LinuxHttpNAR',
'net.juniper.tnc.HttpNAR.HttpNAR')
self.class_name = None
- self.tncc_jar = os.path.expanduser('~/.juniper_networks/tncc.jar')
+ self.tncc_jar = os.path.expanduser(os.path.join(TNCC_DIRECTORY, 'tncc.jar'))
try:
if zipfile.ZipFile(self.tncc_jar, 'r').testzip() is not None:
raise Exception()
except:
print('Downloading tncc.jar...')
- os.makedirs(os.path.expanduser('~/.juniper_networks'), exist_ok=True)
+ os.makedirs(os.path.expanduser(TNCC_DIRECTORY), exist_ok=True)
urllib.request.urlretrieve('https://' + self.vpn_host
+ '/dana-cached/hc/tncc.jar', self.tncc_jar)
raise Exception('Could not find class name for', self.tncc_jar)
self.tncc_preload = \
- os.path.expanduser('~/.juniper_networks/tncc_preload.so')
+ os.path.expanduser(os.path.join(TNCC_DIRECTORY, 'tncc_preload.so'))
if not os.path.isfile(self.tncc_preload):
print('WARNING: no tncc_preload found at %s' % self.tncc_preload, file=sys.stderr)
self.tncc_preload = None
], env={'LD_PRELOAD': self.tncc_preload} if self.tncc_preload else {})
-
+
if __name__ == "__main__":
if len(sys.argv) <= 1:
print("Usage: %s [vpn-host]" % sys.argv[0])
raise SystemExit(1)
-
+
tncc = Tncc(sys.argv[1])
tncc.tncc_init()
tncc.tncc_start()