mirror of
https://github.com/house-of-vanity/Wireguard-Peer-Manager.git
synced 2025-07-07 01:34:08 +00:00
Fix bugs
This commit is contained in:
2
bot.py
2
bot.py
@ -26,11 +26,11 @@ def add_peer(update, context):
|
|||||||
return False
|
return False
|
||||||
if len(update.message.text.split()) < 2:
|
if len(update.message.text.split()) < 2:
|
||||||
update.message.reply_text('Wrong usage.\n<b>Help:</b>\n <b>*</b> /add <i>peer name</i>', parse_mode='HTML', disable_web_page_preview=True)
|
update.message.reply_text('Wrong usage.\n<b>Help:</b>\n <b>*</b> /add <i>peer name</i>', parse_mode='HTML', disable_web_page_preview=True)
|
||||||
|
return False
|
||||||
log.info(update.message.chat.username)
|
log.info(update.message.chat.username)
|
||||||
peer_name = "_".join(update.message.text.split()[1:])
|
peer_name = "_".join(update.message.text.split()[1:])
|
||||||
log.info("Creating peer %s", peer_name)
|
log.info("Creating peer %s", peer_name)
|
||||||
wg_add_peer(peer_name)
|
wg_add_peer(peer_name)
|
||||||
update_configs()
|
|
||||||
update.message.reply_photo(open(f'clients/{peer_name}-qr.png', 'rb'), filename=f'{peer_name} QR.png', quote=True, caption=open(f'clients/{peer_name}.conf', 'r').read())
|
update.message.reply_photo(open(f'clients/{peer_name}-qr.png', 'rb'), filename=f'{peer_name} QR.png', quote=True, caption=open(f'clients/{peer_name}.conf', 'r').read())
|
||||||
|
|
||||||
|
|
||||||
|
20
gen.py
20
gen.py
@ -39,13 +39,13 @@ class Peer:
|
|||||||
else:
|
else:
|
||||||
self.priv_key = data[0].split(':')[1].strip()
|
self.priv_key = data[0].split(':')[1].strip()
|
||||||
self.comment = data[1].split(':')[1].strip()
|
self.comment = data[1].split(':')[1].strip()
|
||||||
self.managed = True
|
# self.managed = True
|
||||||
except:
|
except:
|
||||||
pass
|
pass
|
||||||
else:
|
else:
|
||||||
self.priv_key = self.generate_key()
|
self.priv_key = self.generate_key()
|
||||||
self.pub_key = self.public_key(self.priv_key)
|
self.pub_key = self.public_key(self.priv_key)
|
||||||
self.allowed_ips = allowed_ips
|
self.allowed_ips = allowed_ips if allowed_ips else Helper().next_ip
|
||||||
|
|
||||||
self.full_comment = "# priv_key: " + " ; ".join([self.priv_key, "comment: " + comment])
|
self.full_comment = "# priv_key: " + " ; ".join([self.priv_key, "comment: " + comment])
|
||||||
|
|
||||||
@ -68,7 +68,6 @@ class Peer:
|
|||||||
# return False
|
# return False
|
||||||
filename = f"clients/{self.comment.replace(' ', '_')}"
|
filename = f"clients/{self.comment.replace(' ', '_')}"
|
||||||
_wg = wgconfig.WGConfig(f"{filename}.conf")
|
_wg = wgconfig.WGConfig(f"{filename}.conf")
|
||||||
#_wg.initialize_file(f"# Autogenerated file \n# Comment: {self.comment}\n# Public key: {self.pub_key}\n")
|
|
||||||
_wg.initialize_file()
|
_wg.initialize_file()
|
||||||
_wg.add_attr(None, 'Address', self.allowed_ips)
|
_wg.add_attr(None, 'Address', self.allowed_ips)
|
||||||
_wg.add_attr(None, 'DNS', helper.dns)
|
_wg.add_attr(None, 'DNS', helper.dns)
|
||||||
@ -97,10 +96,12 @@ class Helper:
|
|||||||
|
|
||||||
@property
|
@property
|
||||||
def server_pub_key(self):
|
def server_pub_key(self):
|
||||||
|
"""Return server public key"""
|
||||||
return Peer().public_key(self.wg.interface['PrivateKey'])
|
return Peer().public_key(self.wg.interface['PrivateKey'])
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def peer_list(self):
|
def peer_list(self):
|
||||||
|
"""Return list of WG peers"""
|
||||||
peer_list = list()
|
peer_list = list()
|
||||||
for i, v in self.wg.peers.items():
|
for i, v in self.wg.peers.items():
|
||||||
peer_list.append(Peer(peer=v))
|
peer_list.append(Peer(peer=v))
|
||||||
@ -108,6 +109,7 @@ class Helper:
|
|||||||
|
|
||||||
@property
|
@property
|
||||||
def ip_list(self):
|
def ip_list(self):
|
||||||
|
"""Return list of IPs"""
|
||||||
ip_list = list()
|
ip_list = list()
|
||||||
ip_list.append(ipaddress.ip_address(Helper().wg.interface['Address'].split('/')[0]))
|
ip_list.append(ipaddress.ip_address(Helper().wg.interface['Address'].split('/')[0]))
|
||||||
for i, v in self.wg.peers.items():
|
for i, v in self.wg.peers.items():
|
||||||
@ -123,8 +125,14 @@ class Helper:
|
|||||||
ip_list.sort()
|
ip_list.sort()
|
||||||
return ip_list
|
return ip_list
|
||||||
|
|
||||||
|
@property
|
||||||
|
def next_ip(self):
|
||||||
|
"""Return next free IP"""
|
||||||
|
return self.ip_list[-1]+1
|
||||||
|
|
||||||
def add_client(self, comment):
|
|
||||||
|
def add_peer(self, comment):
|
||||||
|
"""Generate a new peer"""
|
||||||
cl = Peer(comment=comment)
|
cl = Peer(comment=comment)
|
||||||
self.wg.add_peer(cl.pub_key, cl.full_comment)
|
self.wg.add_peer(cl.pub_key, cl.full_comment)
|
||||||
self.wg.add_attr(cl.pub_key, 'AllowedIPs', f"{self.ip_list[-1]+1}/32")
|
self.wg.add_attr(cl.pub_key, 'AllowedIPs', f"{self.ip_list[-1]+1}/32")
|
||||||
@ -133,15 +141,15 @@ class Helper:
|
|||||||
def add_peer(peer_name):
|
def add_peer(peer_name):
|
||||||
print('Generate a new peer config.')
|
print('Generate a new peer config.')
|
||||||
helper = Helper()
|
helper = Helper()
|
||||||
helper.add_client(peer_name)
|
helper.add_peer(peer_name)
|
||||||
helper.wg.write_file()
|
helper.wg.write_file()
|
||||||
|
system('systemctl restart wg-quick@wg0.service')
|
||||||
|
|
||||||
def update_configs():
|
def update_configs():
|
||||||
print("Update all clients configs.")
|
print("Update all clients configs.")
|
||||||
helper = Helper()
|
helper = Helper()
|
||||||
for peer in helper.peer_list:
|
for peer in helper.peer_list:
|
||||||
peer.gen_config(Helper())
|
peer.gen_config(Helper())
|
||||||
system('systemctl restart wg-quick@wg0.service')
|
|
||||||
|
|
||||||
if not is_update and peer_name:
|
if not is_update and peer_name:
|
||||||
add_peer(peer_name)
|
add_peer(peer_name)
|
||||||
|
Reference in New Issue
Block a user