Extend ungleich-cli to add create-vpn, delete-vpn
This commit is contained in:
parent
992bd6d11b
commit
2976e3a9fb
5 changed files with 121 additions and 15 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -1 +1,2 @@
|
|||
__pycache__/
|
||||
.vscode/
|
||||
|
|
18
Pipfile
18
Pipfile
|
@ -1,17 +1,15 @@
|
|||
[[source]]
|
||||
url = "https://pypi.python.org/simple"
|
||||
verify_ssl = true
|
||||
name = "pypi"
|
||||
|
||||
[packages]
|
||||
requests = "*"
|
||||
pyotp = "*"
|
||||
url = "https://pypi.org/simple"
|
||||
verify_ssl = true
|
||||
|
||||
[dev-packages]
|
||||
pep8 = "*"
|
||||
|
||||
[packages]
|
||||
pyotp = "*"
|
||||
requests = "*"
|
||||
apixu-python = {git = "https://github.com/apixu/apixu-python.git",ref = "master"}
|
||||
|
||||
[requires]
|
||||
python_version = "3.7"
|
||||
|
||||
[packages.apixu]
|
||||
git = "https://github.com/apixu/apixu-python.git"
|
||||
ref = "master"
|
||||
|
|
27
Pipfile.lock
generated
27
Pipfile.lock
generated
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"_meta": {
|
||||
"hash": {
|
||||
"sha256": "ca9c2522bf07f03d1588afe76e9f6fc73bc1efec20d4f155d82b709efaf14a56"
|
||||
"sha256": "b35d443f952246f5828abb12b75c9f9d02f03d016921244c04538216f0944693"
|
||||
},
|
||||
"pipfile-spec": 6,
|
||||
"requires": {
|
||||
|
@ -10,15 +10,15 @@
|
|||
"sources": [
|
||||
{
|
||||
"name": "pypi",
|
||||
"url": "https://pypi.python.org/simple",
|
||||
"url": "https://pypi.org/simple",
|
||||
"verify_ssl": true
|
||||
}
|
||||
]
|
||||
},
|
||||
"default": {
|
||||
"apixu": {
|
||||
"apixu-python": {
|
||||
"git": "https://github.com/apixu/apixu-python.git",
|
||||
"ref": "master"
|
||||
"ref": "4beb003c71c0213720e930350f46e5fa6af9ef12"
|
||||
},
|
||||
"certifi": {
|
||||
"hashes": [
|
||||
|
@ -41,6 +41,14 @@
|
|||
],
|
||||
"version": "==2.8"
|
||||
},
|
||||
"pyotp": {
|
||||
"hashes": [
|
||||
"sha256:1e3dc3d16919c4efac528d1dbecc17de1a97c4ecfdacb89d7726ed2c6645adff",
|
||||
"sha256:be0ffeabddaa5ee53e7204e7740da842d070cf69168247a3d0c08541b84de602"
|
||||
],
|
||||
"index": "pypi",
|
||||
"version": "==2.2.7"
|
||||
},
|
||||
"requests": {
|
||||
"hashes": [
|
||||
"sha256:11e007a8a2aa0323f5a921e9e6a2d7e4e67d9877e85773fba9ba6419025cbeb4",
|
||||
|
@ -57,5 +65,14 @@
|
|||
"version": "==1.25.3"
|
||||
}
|
||||
},
|
||||
"develop": {}
|
||||
"develop": {
|
||||
"pep8": {
|
||||
"hashes": [
|
||||
"sha256:b22cfae5db09833bb9bd7c8463b53e1a9c9b39f12e304a8d0bba729c501827ee",
|
||||
"sha256:fe249b52e20498e59e0b5c5256aa52ee99fc295b26ec9eaa85776ffdb9fe6374"
|
||||
],
|
||||
"index": "pypi",
|
||||
"version": "==1.7.1"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
3
ungleich
3
ungleich
|
@ -8,9 +8,11 @@ from ungleich_account import Account_Create
|
|||
from ungleich_weather import ungleichWeather
|
||||
from ungleich_ssh_key import SSHKey
|
||||
from ungleich_config import Ungleich_Config
|
||||
from ungleich_vpn import ungleichVPN
|
||||
|
||||
VERSION = "0.0.4"
|
||||
|
||||
|
||||
class ungleichCLI(object):
|
||||
def __init__(self):
|
||||
self._init_parser()
|
||||
|
@ -22,6 +24,7 @@ class ungleichCLI(object):
|
|||
config = Ungleich_Config(self.parser, self.parser_parents)
|
||||
SSHKey(self.parser, self.parser_parents)
|
||||
ungleichWeather(self.parser, self.parser_parents)
|
||||
ungleichVPN(self.parser, self.parser_parents)
|
||||
|
||||
def _init_parser(self):
|
||||
self.parser = {}
|
||||
|
|
87
ungleich_vpn.py
Normal file
87
ungleich_vpn.py
Normal file
|
@ -0,0 +1,87 @@
|
|||
import argparse
|
||||
import requests
|
||||
import json
|
||||
|
||||
|
||||
class ungleichVPN(object):
|
||||
def __init__(self, parser, parents):
|
||||
self.parser = parser
|
||||
|
||||
self.parser['vpn-create'] = self.parser['sub'].add_parser(
|
||||
'vpn-create',
|
||||
help="Create VPN",
|
||||
parents=[parents])
|
||||
|
||||
self.parser['vpn-delete'] = self.parser['sub'].add_parser(
|
||||
'vpn-delete',
|
||||
help="Delete VPN",
|
||||
parents=[parents])
|
||||
|
||||
self.parser['vpn-create'].set_defaults(func=ungleichVPN.create_vpn)
|
||||
self.parser['vpn-create'].add_argument("--server_url", required=True,
|
||||
dest="server_url")
|
||||
self.parser['vpn-create'].add_argument("--name", required=True,
|
||||
dest="name")
|
||||
self.parser['vpn-create'].add_argument("--realm", required=True,
|
||||
dest="realm")
|
||||
self.parser['vpn-create'].add_argument("--seed", required=True,
|
||||
dest="seed")
|
||||
|
||||
# email argument would be deleted once we can
|
||||
# get email from OTP
|
||||
self.parser['vpn-create'].add_argument("--email", required=True,
|
||||
dest="email")
|
||||
|
||||
self.parser['vpn-create'].add_argument("--public_key", required=True,
|
||||
dest="public_key")
|
||||
|
||||
self.parser['vpn-delete'].set_defaults(func=ungleichVPN.delete_vpn)
|
||||
self.parser['vpn-delete'].add_argument("--server_url", required=True,
|
||||
dest="server_url")
|
||||
self.parser['vpn-delete'].add_argument("--name", required=True,
|
||||
dest="name")
|
||||
self.parser['vpn-delete'].add_argument("--realm", required=True,
|
||||
dest="realm")
|
||||
self.parser['vpn-delete'].add_argument("--seed", required=True,
|
||||
dest="seed")
|
||||
|
||||
def create_vpn(args):
|
||||
try:
|
||||
# email argument from the below request would
|
||||
# be deleted once we can get email from OTP
|
||||
r = requests.post(args.server_url + "/create",
|
||||
data={'name': args.name,
|
||||
'realm': args.realm,
|
||||
'seed': args.seed,
|
||||
'email': args.email,
|
||||
'public_key': args.public_key
|
||||
})
|
||||
except e:
|
||||
print(e)
|
||||
return None
|
||||
if r.status_code == 200:
|
||||
response = r.content.decode("utf-8")
|
||||
with open("wg0.conf", "w") as f:
|
||||
f.write(response)
|
||||
print("""VPN successfully created. VPN Configuration \
|
||||
file is saved as wg0.conf""")
|
||||
|
||||
else:
|
||||
response = r.json()
|
||||
print(response.get("message"))
|
||||
|
||||
def delete_vpn(args):
|
||||
try:
|
||||
# email argument from the below request would
|
||||
# be deleted once we can get email from OTP
|
||||
r = requests.post(args.server_url + "/delete",
|
||||
data={'name': args.name,
|
||||
'realm': args.realm,
|
||||
'seed': args.seed
|
||||
})
|
||||
except e:
|
||||
print(e)
|
||||
return None
|
||||
|
||||
response = r.json()
|
||||
print(response.get("message"))
|
Loading…
Reference in a new issue