Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/python2.7
- import subprocess
- import os
- import sys
- import getpass
- import sys
- help = """
- vlangton - easy connection to the Langton vpn
- Options:
- vlangton connect: connect to the network
- vlangton disconnect: disconnect to the network
- vlangton status: check if connection is active
- vlangton config: configure vlangton with username and password
- vlangton unconfig: delete current configuration
- """
- if os.geteuid() != 0:
- exit("vlangton must be root!")
- if len(sys.argv) > 1:
- if sys.argv[1] in ["disconnect", "stop"]:
- if os.path.isfile("/tmp/vlangtonlock"):
- print "Disconnecting from network..."
- subprocess.call(["kill", "-9", open("/tmp/vlangtonlock").read()])
- subprocess.call(["rm", "/tmp/vlangtonlock"])
- print "Done"
- else:
- print "vlangton is not running"
- elif sys.argv[1] == "config":
- uname = raw_input("Enter new username: ")
- password = getpass.getpass("Enter password: ")
- password1 = getpass.getpass("Confirm password: ")
- if password == password1:
- open("/etc/vlangtonuname", "w").write(uname)
- open("/etc/vlangtonpasswd", "w").write(password)
- subprocess.call(["chown", "root:root", "/etc/vlangtonpasswd"])
- subprocess.call(["chmod", "700", "/etc/vlangtonpasswd"])
- else:
- print "Passwords do not match"
- elif sys.argv[1] in ["connect", "start"]:
- if os.path.isfile("/tmp/vlangtonlock"):
- print "already running!"
- sys.exit(1)
- if not os.path.isfile("/etc/vlangtonuname") or not os.path.isfile("/etc/vlangtonpasswd"):
- print "vlangton has not been configured yet. Please run vlangton config."
- sys.exit(1)
- print "Connecting to the network..."
- print "What follows is output from openconnect"
- username = open("/etc/vlangtonuname").read()
- password = open("/etc/vlangtonpasswd").read()
- command = "openconnect --juniper -u " + username + " --passwd-on-stdin vpn.schools.kpsn.net/thelangton"
- try:
- p = subprocess.Popen(command.split(), stdin=subprocess.PIPE, stdout=subprocess.PIPE, shell=False, stderr=subprocess.PIPE, bufsize = 1)
- except:
- print "vlangton could not start openconnect. Is it installed? If not, run sudo apt install openconnect"
- sys.exit(1)
- p.stdin.write(password + "\n")
- p.stdin.flush()
- print "Openconnect process started on", p.pid
- while True:
- line = p.stdout.readline()
- sys.stdout.write(line)
- sys.stdout.flush()
- if "ESP session established with server" in line:
- print "Connected to the network :)"
- open("/tmp/vlangtonlock", "w").write(str(p.pid))
- break
- elif "failed" in line:
- print "Error on the langton end, probably incorrect credentials. Try reconfiguring with vlangton config"
- p.kill()
- sys.exit(1)
- elif sys.argv[1] == "status":
- if os.path.isfile("/tmp/vlangtonlock"):
- print "vlangton is connected"
- print "openconnect is running on", open("/tmp/vlangtonlock").read()
- else:
- print "vlangton is not connected"
- print "To start a session, run vlangton start"
- elif sys.argv[1] == "unconfig":
- print "Removing current configuration"
- subprocess.call(["rm", "/etc/vlangtonuname", "/etc/vlangtonpasswd"])
- print "Done."
- else:
- print help
- else:
- print help
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement