This commit is contained in:
AB
2022-03-16 14:14:35 +03:00
parent c6ed1f5f55
commit 205f6faef7
2 changed files with 13 additions and 5 deletions

11
bot.py
View File

@ -5,6 +5,7 @@
import logging
import os
import sys
import configparser
from telegram import InlineKeyboardButton, InlineKeyboardMarkup, Update
from telegram.ext import Updater, MessageHandler, CommandHandler, filters, CallbackQueryHandler, CallbackContext
from gen import add_peer as wg_add_peer
@ -22,6 +23,11 @@ admin = os.environ.get('TG_ADMIN')
if not token or not admin:
log.error("Env var TG_TOKEN or TG_ADMIN aren't set.")
sys.exit(1)
wpm_config = configparser.ConfigParser()
if wpm_config.read('wpm.conf'):
config = wpm_config['Interface'].get('config', 'wg0')
else:
config = "wg0"
def _help(update, context):
update.message.reply_text('<b>Help:</b>\n <b>*</b> /add <i>peer name</i>\n <b>*</b> /del <i>peer name</i>\n <b>*</b> /list [<i>peer name</i>]', parse_mode='HTML', disable_web_page_preview=True)
@ -48,7 +54,7 @@ def list_peers(update, context):
peer_name = "_".join(update.message.text.split()[1:])
try:
update.message.reply_photo(
open(f'/etc/wireguard/clients/{peer_name}-qr.png', 'rb'), filename=f'{peer_name} QR.png', quote=True, caption=open(f'/etc/wireguard/clients/{peer_name}.conf', 'r').read())
open(f'/etc/wireguard/clients_{config}/{peer_name}-qr.png', 'rb'), filename=f'{peer_name} QR.png', quote=True, caption=open(f'/etc/wireguard/clients_{config}/{peer_name}.conf', 'r').read())
except:
update.message.reply_text("Wrong client name.")
@ -70,7 +76,8 @@ def add_peer(update, context):
peer_name = "_".join(update.message.text.split()[1:])
log.info("Creating peer %s", peer_name)
wg_add_peer(peer_name)
update.message.reply_photo(open(f'/etc/wireguard/clients/{peer_name}-qr.png', 'rb'), filename=f'{peer_name} QR.png', quote=True, caption=open(f'/etc/wireguard/clients/{peer_name}.conf', 'r').read())
update.message.reply_photo(open(f'/etc/wireguard/clients_{config}/{peer_name}-qr.png', 'rb'), filename=f'{peer_name} QR.png', quote=True, caption=open(f'/etc/wireguard/clients_{config}/{peer_name}.conf', 'r').read())
update.message.reply_document(open(f'/etc/wireguard/clients_{config}/{peer_name}.conf', 'rb'))
def error(update, context):
update.message.reply_text("Something went wrong...")

7
gen.py
View File

@ -36,8 +36,9 @@ peer_name = args.peer
del_name = args.delete
is_update = args.update
wpm_config = configparser.ConfigParser()
client_dir = f"client_{args.config}"
client_dir = f"/etc/wireguard/clients_{args.config}"
if not path.isdir(client_dir):
log.info("Creating clients directory %s", client_dir)
mkdir(client_dir)
if wpm_config.read('wpm.conf'):
ips = wpm_config['Interface'].get('allowed_ips', '0.0.0.0/0')
@ -92,7 +93,7 @@ class Peer:
def gen_config(self, helper):
"""Generate peer config"""
filename = f"/etc/wireguard/{client_dir}/{self.comment.replace(' ', '_')}"
filename = f"{client_dir}/{self.comment.replace(' ', '_')}"
_wg = wgconfig.WGConfig(f"{filename}.conf")
_wg.initialize_file()
_wg.add_attr(None, 'Address', self.allowed_ips)
@ -105,7 +106,7 @@ class Peer:
_wg.write_file()
system(f'qrencode -r {filename}.conf -o {filename}-qr.png')
system(f'qrencode -t ansiutf8 -r {filename}.conf -o {filename}-qr.txt')
log.info(f"Updated config for {self.comment}")
log.info(f"Updated config for {filename}")
class Helper: