ВТОРАЯ ВЕРСИЯ НАХУЙ

penis
B4D_US3R 1 year ago
parent dd0794945d
commit 8a6509f0a9

2
.gitignore vendored

@ -152,3 +152,5 @@ cython_debug/
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
#.idea/
# Output Directory
output

@ -0,0 +1,24 @@
import os
import paramiko
from time import sleep
def gen_certs(client, ip):
if "output" not in os.listdir():
os.mkdir("output")
priv_key = paramiko.RSAKey.from_private_key_file(f"{os.environ['USERPROFILE']}{os.sep}.ssh{os.sep}id_rsa")
with paramiko.SSHClient() as ssh_client:
ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh_client.connect(hostname=f"{ip}", username="root", pkey=priv_key)
ssh_client.exec_command(f"EASYRSA_BATCH=1 EASYRSA_PKI=/etc/openvpn/pki easyrsa build-client-full {client} nopass")
#Мой юный друг, наверняка у тебя возник вопрос "А нахуя тут sleep?" Отвечаю
#Скрипт выполняется быстрее команды, отправленной на сервер, поэтому при попытке (АХАХАХАХАХ ПОПЫТ) скачать файл скрипт его не находит
#Наверняка следующий вопрос "А нет ли более изящнного решения?" Отвечаю
#Не ебу, если знаешь - напиши мне
sleep(2)
with ssh_client.open_sftp() as scp_client:
#Ну и конечно же будет вопрос "А не будет ли мешанины из конфигов и в чем тогда прикол твоей проги если нужно будет тратить время на поиск сертификатов и конфига к клиенту?" Отвечаю
#Вот это всё говно потом будет сохранятся в папку temp, а там уже архивироваться и отправляться в output в zip архиве (ЗИП ФАЙЛ кстати). Почему сразу нормально не сделать? Не ебу, спроси у Flask какого хуя он падает
scp_client.get(f"/etc/openvpn/pki/private/{client}.key", f"output/{client}.key")
scp_client.get(f"/etc/openvpn/pki/issued/{client}.crt", f"output/{client}.crt")
scp_client.get(f"/etc/openvpn/pki/ca.crt", f"output/ca.crt")
scp_client.get(f"/etc/openvpn/keys/ta.key", f"output/ta.key")

@ -1,11 +1,15 @@
from string import Template
import os
def gen_config(client, ip):
if "output" not in os.listdir():
os.mkdir("output")
text = ""
with open("input/config", "r") as input_file:
for line in input_file.readlines():
text+=line
config = Template(text)
with open("output/{}.ovpn".format(client), "w") as output_file:
with open(f"output/{client}.ovpn", "w") as output_file:
output_file.write(config.substitute(ip=ip, client=client))

@ -8,7 +8,7 @@ user openvpn
group openvpn
persist-key
persist-tun
ca ca.cert
ca ca.crt
cert $client.crt
key $client.key
remote-cert-tls server

@ -1,5 +1,6 @@
from flask import Flask, redirect, request, render_template
from gentemp import gen_config
from gencerts import gen_certs
app = Flask(__name__)
@ -9,5 +10,9 @@ def index():
@app.route("/gen", methods=["POST"])
def gen():
gen_certs(str(request.form["client"]), str(request.form["ip"]))
gen_config(request.form["client"], request.form["ip"])
return redirect("/")
return redirect("/")
if __name__ == "__main__":
app.run(port=9999, debug=True)
Loading…
Cancel
Save