diff --git a/bot.py b/bot.py index 5b0fdf5..fc665f4 100755 --- a/bot.py +++ b/bot.py @@ -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('Help:\n * /add peer name\n * /del peer name\n * /list [peer name]', 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...") diff --git a/gen.py b/gen.py index b10c643..5684db6 100755 --- a/gen.py +++ b/gen.py @@ -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: