Advertisement
Guest User

Untitled

a guest
Oct 16th, 2016
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.53 KB | None | 0 0
  1. #!/usr/bin/python2.7
  2.  
  3. import subprocess
  4. import os
  5. import sys
  6. import getpass
  7. import sys
  8.  
  9. help = """
  10. vlangton - easy connection to the Langton vpn
  11.  
  12. Options:
  13.  
  14. vlangton connect: connect to the network
  15. vlangton disconnect: disconnect to the network
  16. vlangton status: check if connection is active
  17. vlangton config: configure vlangton with username and password
  18. vlangton unconfig: delete current configuration
  19. """
  20.  
  21. if os.geteuid() != 0:
  22. exit("vlangton must be root!")
  23.  
  24.  
  25. if len(sys.argv) > 1:
  26. if sys.argv[1] in ["disconnect", "stop"]:
  27. if os.path.isfile("/tmp/vlangtonlock"):
  28. print "Disconnecting from network..."
  29. subprocess.call(["kill", "-9", open("/tmp/vlangtonlock").read()])
  30. subprocess.call(["rm", "/tmp/vlangtonlock"])
  31. print "Done"
  32. else:
  33. print "vlangton is not running"
  34.  
  35. elif sys.argv[1] == "config":
  36. uname = raw_input("Enter new username: ")
  37. password = getpass.getpass("Enter password: ")
  38. password1 = getpass.getpass("Confirm password: ")
  39. if password == password1:
  40. open("/etc/vlangtonuname", "w").write(uname)
  41. open("/etc/vlangtonpasswd", "w").write(password)
  42. subprocess.call(["chown", "root:root", "/etc/vlangtonpasswd"])
  43. subprocess.call(["chmod", "700", "/etc/vlangtonpasswd"])
  44. else:
  45. print "Passwords do not match"
  46.  
  47. elif sys.argv[1] in ["connect", "start"]:
  48. if os.path.isfile("/tmp/vlangtonlock"):
  49. print "already running!"
  50. sys.exit(1)
  51.  
  52. if not os.path.isfile("/etc/vlangtonuname") or not os.path.isfile("/etc/vlangtonpasswd"):
  53. print "vlangton has not been configured yet. Please run vlangton config."
  54. sys.exit(1)
  55.  
  56. print "Connecting to the network..."
  57. print "What follows is output from openconnect"
  58.  
  59. username = open("/etc/vlangtonuname").read()
  60. password = open("/etc/vlangtonpasswd").read()
  61.  
  62. command = "openconnect --juniper -u " + username + " --passwd-on-stdin vpn.schools.kpsn.net/thelangton"
  63. try:
  64. p = subprocess.Popen(command.split(), stdin=subprocess.PIPE, stdout=subprocess.PIPE, shell=False, stderr=subprocess.PIPE, bufsize = 1)
  65. except:
  66. print "vlangton could not start openconnect. Is it installed? If not, run sudo apt install openconnect"
  67. sys.exit(1)
  68. p.stdin.write(password + "\n")
  69. p.stdin.flush()
  70. print "Openconnect process started on", p.pid
  71. while True:
  72. line = p.stdout.readline()
  73. sys.stdout.write(line)
  74. sys.stdout.flush()
  75. if "ESP session established with server" in line:
  76. print "Connected to the network :)"
  77. open("/tmp/vlangtonlock", "w").write(str(p.pid))
  78. break
  79. elif "failed" in line:
  80. print "Error on the langton end, probably incorrect credentials. Try reconfiguring with vlangton config"
  81. p.kill()
  82. sys.exit(1)
  83.  
  84. elif sys.argv[1] == "status":
  85. if os.path.isfile("/tmp/vlangtonlock"):
  86. print "vlangton is connected"
  87. print "openconnect is running on", open("/tmp/vlangtonlock").read()
  88. else:
  89. print "vlangton is not connected"
  90. print "To start a session, run vlangton start"
  91.  
  92. elif sys.argv[1] == "unconfig":
  93. print "Removing current configuration"
  94. subprocess.call(["rm", "/etc/vlangtonuname", "/etc/vlangtonpasswd"])
  95. print "Done."
  96.  
  97. else:
  98. print help
  99.  
  100. else:
  101. print help
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement