ТРЕТЬЯ ВЕРСИЯ... ИЛИ ВЕРСИЯ ДВА ОДИН... Я НЕ ЕБУ

penis
B4D_US3R 1 year ago
parent 8a6509f0a9
commit 3af2599c7c

3
.gitignore vendored

@ -153,4 +153,5 @@ cython_debug/
#.idea/
# Output Directory
output
output
temp

@ -0,0 +1,13 @@
import os
from zipfile import ZipFile
def create_zip(client):
if "output" not in os.listdir():
os.mkdir("output")
with ZipFile(f"output{os.sep}{client}.zip", "w") as output_zip:
os.chdir("temp")
for file in os.listdir():
output_zip.write(f"{file}")
os.remove(f"{file}")
os.chdir("..")
os.rmdir("temp")

@ -3,22 +3,16 @@ import paramiko
from time import sleep
def gen_certs(client, ip):
if "output" not in os.listdir():
os.mkdir("output")
if "temp" not in os.listdir():
os.mkdir("temp")
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)
_, stdout, _ = ssh_client.exec_command(f"EASYRSA_BATCH=1 EASYRSA_PKI=/etc/openvpn/pki easyrsa build-client-full {client} nopass")
stdout.read()
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")
scp_client.get(f"/etc/openvpn/pki/private/{client}.key", f"temp/{client}.key")
scp_client.get(f"/etc/openvpn/pki/issued/{client}.crt", f"temp/{client}.crt")
scp_client.get(f"/etc/openvpn/pki/ca.crt", f"temp/ca.crt")
scp_client.get(f"/etc/openvpn/keys/ta.key", f"temp/ta.key")

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

@ -1,6 +1,7 @@
from flask import Flask, redirect, request, render_template
from gentemp import gen_config
from gencerts import gen_certs
from createzip import create_zip
app = Flask(__name__)
@ -12,6 +13,7 @@ def index():
def gen():
gen_certs(str(request.form["client"]), str(request.form["ip"]))
gen_config(request.form["client"], request.form["ip"])
create_zip(request.form["client"])
return redirect("/")
if __name__ == "__main__":

Loading…
Cancel
Save