added support for optional peer attributes, added __main__

This commit is contained in:
k4yt3x 2021-05-21 21:37:28 +00:00
parent 6673a6d2f6
commit 559a51393b
3 changed files with 32 additions and 7 deletions

14
wg_meshconf/__main__.py Normal file
View File

@ -0,0 +1,14 @@
#!/usr/bin/python3
# -*- coding: utf-8 -*-
"""
Name: wg-meshconf __main__
Creator: K4YT3X
Date Created: May 21, 2021
Last Modified: May 21, 2021
"""
from .wg_meshconf import main
# launch the main function if it is not imported as a package
if __name__ == "__main__":
main()

View File

@ -60,6 +60,10 @@ PEER_ATTRIBUTES = [
"PersistentKeepalive", "PersistentKeepalive",
] ]
PEER_OPTIONAL_ATTRIBUTES = [
"PersistentKeepalive",
]
class DatabaseManager: class DatabaseManager:
def __init__(self, database_path: pathlib.Path): def __init__(self, database_path: pathlib.Path):
@ -95,6 +99,7 @@ class DatabaseManager:
Endpoint: str = None, Endpoint: str = None,
AllowedIPs: list = None, AllowedIPs: list = None,
ListenPort: int = None, ListenPort: int = None,
PersistentKeepalive: int = None,
FwMark: str = None, FwMark: str = None,
PrivateKey: str = None, PrivateKey: str = None,
DNS: str = None, DNS: str = None,
@ -133,6 +138,7 @@ class DatabaseManager:
Endpoint: str = None, Endpoint: str = None,
AllowedIPs: list = None, AllowedIPs: list = None,
ListenPort: int = None, ListenPort: int = None,
PersistentKeepalive: int = None,
FwMark: str = None, FwMark: str = None,
PrivateKey: str = None, PrivateKey: str = None,
DNS: str = None, DNS: str = None,
@ -303,3 +309,9 @@ class DatabaseManager:
else: else:
allowed_ips = ", ".join(database["peers"][p]["Address"]) allowed_ips = ", ".join(database["peers"][p]["Address"])
config.write("AllowedIPs = {}\n".format(allowed_ips)) config.write("AllowedIPs = {}\n".format(allowed_ips))
for key in PEER_OPTIONAL_ATTRIBUTES:
if database["peers"][p].get(key) is not None:
config.write(
"{} = {}\n".format(key, database["peers"][p][key])
)

View File

@ -4,7 +4,7 @@
Name: wg-meshconf Name: wg-meshconf
Creator: K4YT3X Creator: K4YT3X
Date Created: July 19, 2020 Date Created: July 19, 2020
Last Modified: January 12, 2021 Last Modified: May 21, 2021
Licensed under the GNU General Public License Version 3 (GNU GPL v3), Licensed under the GNU General Public License Version 3 (GNU GPL v3),
available at: https://www.gnu.org/licenses/gpl-3.0.txt available at: https://www.gnu.org/licenses/gpl-3.0.txt
@ -52,6 +52,7 @@ def parse_arguments():
) )
addpeer.add_argument("--privatekey", help="private key of server interface") addpeer.add_argument("--privatekey", help="private key of server interface")
addpeer.add_argument("--listenport", help="port to listen on", default=51820) addpeer.add_argument("--listenport", help="port to listen on", default=51820)
addpeer.add_argument("--persistentkeepalive", help="set persistent keepalive interval")
addpeer.add_argument("--fwmark", help="fwmark for outgoing packets") addpeer.add_argument("--fwmark", help="fwmark for outgoing packets")
addpeer.add_argument("--dns", help="server interface DNS servers") addpeer.add_argument("--dns", help="server interface DNS servers")
addpeer.add_argument("--mtu", help="server interface MTU") addpeer.add_argument("--mtu", help="server interface MTU")
@ -77,6 +78,7 @@ def parse_arguments():
) )
updatepeer.add_argument("--privatekey", help="private key of server interface") updatepeer.add_argument("--privatekey", help="private key of server interface")
updatepeer.add_argument("--listenport", help="port to listen on") updatepeer.add_argument("--listenport", help="port to listen on")
updatepeer.add_argument("--persistentkeepalive", help="set persistent keepalive interval")
updatepeer.add_argument("--fwmark", help="fwmark for outgoing packets") updatepeer.add_argument("--fwmark", help="fwmark for outgoing packets")
updatepeer.add_argument("--dns", help="server interface DNS servers") updatepeer.add_argument("--dns", help="server interface DNS servers")
updatepeer.add_argument("--mtu", help="server interface MTU") updatepeer.add_argument("--mtu", help="server interface MTU")
@ -129,7 +131,7 @@ def parse_arguments():
"--output", "--output",
help="configuration file output directory", help="configuration file output directory",
type=pathlib.Path, type=pathlib.Path,
default=pathlib.Path(__file__).parent.absolute() / "output", default=pathlib.Path.cwd() / "output",
) )
return parser.parse_args() return parser.parse_args()
@ -149,6 +151,7 @@ def main():
args.endpoint, args.endpoint,
args.allowedips, args.allowedips,
args.listenport, args.listenport,
args.persistentkeepalive,
args.fwmark, args.fwmark,
args.privatekey, args.privatekey,
args.dns, args.dns,
@ -168,6 +171,7 @@ def main():
args.endpoint, args.endpoint,
args.allowedips, args.allowedips,
args.listenport, args.listenport,
args.persistentkeepalive,
args.fwmark, args.fwmark,
args.privatekey, args.privatekey,
args.dns, args.dns,
@ -195,8 +199,3 @@ def main():
"No command specified\nUse wg-meshconf --help to see available commands", "No command specified\nUse wg-meshconf --help to see available commands",
file=sys.stderr, file=sys.stderr,
) )
# launch the main function if it is not imported as a package
if __name__ == "__main__":
main()