master
大蒟蒻 4 years ago
parent db0fef1cde
commit 921ae66e6d

@ -5,35 +5,36 @@ import requests
from pathlib import Path from pathlib import Path
from wgconfig import WireGuardConfig, wg_showconf, wg_syncconf from wgconfig import WireGuardConfig, wg_showconf, wg_syncconf
def local_hash(ifname: str):
return hashlib.sha256(wg_showconf(ifname).encode()).hexdigest()
cfg = yaml.safe_load(Path(__file__).with_suffix(".conf").read_text()) cfg = yaml.safe_load(Path(__file__).with_suffix(".conf").read_text())
last_hash = "" last_hash = ""
last_local_hash = "" last_local_hash = ""
url = f"{cfg['url']}/hash/{cfg['remote_wg']}" url = f"{cfg['url']}/hash/{cfg['remote_wg']}"
urlpat2 = f"{cfg['url']}/peers/{cfg['remote_wg']}" urlpat2 = f"{cfg['url']}/peers/{cfg['remote_wg']}"
with requests.Session() as sess:
sess.verify = "ca.crt"
sess.cert = ("client1.crt", "client1.key")
while True: while True:
new_hash = requests.get( try:
url, new_hash = sess.get(url).text
cert=("client1.crt", "client1.key"), new_local_hash = local_hash(cfg["local_wg"])
verify="ca.crt",
).text
new_local_hash = hashlib.sha256(wg_showconf(
cfg["local_wg"]).encode()).hexdigest()
if last_hash != new_hash or last_local_hash != new_local_hash: if last_hash != new_hash or last_local_hash != new_local_hash:
print(f"update hash to {new_hash}") print(f"update hash to {new_hash}")
print(f"update local_hash to {new_local_hash}")
local_cfg = WireGuardConfig.get_from_interface(cfg["local_wg"]) local_cfg = WireGuardConfig.get_from_interface(cfg["local_wg"])
for peer in cfg["peers"]: for peer in cfg["peers"]:
if p := local_cfg.get_peer(peer): if p := local_cfg.get_peer(peer):
url2 = f"{urlpat2}/{peer}" url2 = f"{urlpat2}/{peer}"
res = requests.get( res = sess.get(url2).json()
url2,
cert=("client1.crt", "client1.key"),
verify="ca.crt",
).json()
p["Endpoint"] = res["Endpoint"] p["Endpoint"] = res["Endpoint"]
wg_syncconf(cfg["local_wg"], str(local_cfg)) wg_syncconf(cfg["local_wg"], str(local_cfg))
new_local_hash = hashlib.sha256(wg_showconf( new_local_hash = local_hash(cfg["local_wg"])
cfg["local_wg"]).encode()).hexdigest() print(f"update local_hash to {new_local_hash}")
last_hash = new_hash last_hash = new_hash
last_local_hash = new_local_hash last_local_hash = new_local_hash
except Exception as ex:
print(ex)
sleep(5) sleep(5)

Loading…
Cancel
Save