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: