Skip to content

Commit 2394e83

Browse files
committed
draft up
1 parent 1d15a5c commit 2394e83

File tree

10 files changed

+39
-32
lines changed

10 files changed

+39
-32
lines changed

config/linode/config.ini

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,4 @@ linode_auth_users = wagneja4
77
linode_image = linode/debian11
88
linode_dns_ttl = 120
99
linode_passwd_file = /opt/linode_ansible/become
10-
linode_wg_private_key_path = config/linode/linode_wg.key
10+
linode_wireguard_private_key = config/linode/linode_wg.key

config/linode/linode_wg.key

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
kACIzgLlHzl71QeK/TVmWN8puCbTaze57caQVBa+j0E=
1+
SJX/oiUrpFB7pbxDxq5p2eB6dujo0hfviQD4GtwmkF8=

config/linode/linode_wg.key.pub

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
g2q7pP6PiIMQGfPRL3EPHSKM5Y5ZwI0EhZfNFBqitys=
1+
bEQiHdBsvQqbMZ/Mb/8vt9/tnCpZJzj5rnhoGEjezDk=

config/wireguard/config.ini

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
[Wireguard]
2-
wireguard_template_dir = data
3-
wireguard_target_wg_conf = /home/user/hermes.conf #"/etc/wireguard/hermes.conf"
2+
wireguard_template = data/Wireguard.conf
43
wireguard_subnet = 10.0.0.0/27
54
wireguard_port = 55555
65
PersistentKeepalive = 60

data/Wireguard.conf

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,19 +16,16 @@ PrivateKey = {{ HOST.PrivateKey }}
1616
{%- if peer.USER_NAME | default(false) %}
1717
#Name = {{ peer.USER_NAME }}
1818
#ID={{ peer.USER_ID }}{% endif %}
19-
Endpoint = {{ MISC.Endpoint }}{% if MISC.ListenPort | default(false) %}:{{ MISC.ListenPort }} {%- endif %}
2019
PublicKey = {{ peer.PUB_KEY }}
2120
AllowedIPs = {{ peer.USER_WG_IP }}
22-
{% if MISC.PersistentKeepalive | default(false) -%} PersistentKeepalive = {{ MISC.PersistentKeepalive }} {%- endif %}
21+
PersistentKeepalive = 120
2322
{%- endmacro -%}
2423

2524
[Peer]
2625
#Name = Hermes
27-
Endpoint = {{ MISC.Endpoint }}{% if MISC.ListenPort | default(false) %}:{{ MISC.ListenPort }} {%- endif %}
2826
PublicKey = {{ HERMES.PUB_KEY }}
2927
AllowedIPs = {{ HERMES.USER_WG_IP }}
30-
{% if HERMES.PersistentKeepalive | default(false) -%} PersistentKeepalive = {{ HERMES.PersistentKeepalive }} {%- endif %}
31-
28+
PersistentKeepalive = 120
3229

3330
{%- for peer in PEERS -%}
3431
{{ peer_entry(peer) }}

src/Hermes/ansible.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,6 @@ def run_ansible(self):
7272
roles_path = self.ansible_roles,
7373
quiet = True,
7474
status_handler= status_handler)
75-
print("ansible run")
7675
# Runner.event_handler -> na progress
7776
# Runner.finished_callback -> na end
7877
except Exception as e:

src/Hermes/linode.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,13 +35,13 @@ def linode_init(self):
3535
self.linode_create_promise = None
3636

3737
try:
38-
with open(config_predir["linode_wg_private_key_path"], "r") as wg_key_fh:
39-
self.linode_wg_private_key = wg_key_fh.read()
38+
with open(config_predir["linode_wireguard_private_key"], "r") as wg_key_fh:
39+
self.linode_wireguard_private_key = wg_key_fh.read()
4040
except OSError as e:
4141
print(e)
4242
try:
43-
with open(config_predir["linode_wg_private_key_path"] + ".pub", "r") as wg_key_fh:
44-
self.linode_wg_public_key = wg_key_fh.read()
43+
with open(config_predir["linode_wireguard_private_key"] + ".pub", "r") as wg_key_fh:
44+
self.linode_wireguard_public_key = wg_key_fh.read()
4545
except OSError as e:
4646
print(e)
4747

src/Hermes/on_.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@ async def on_ready(self):
3535
self.stdout = self.get_channel(810599224718262304)
3636
self.guild = self.get_guild(716803899440234506)
3737
self.guild_snowflake = Object(716803899440234506)
38-
self.setup_paramiko()
3938
self.db_ready_future = self.ready_database()
4039
await self.db_ready_future
4140

src/Hermes/paramiko.py

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@ def paramiko_init(self):
1919
self.SFTP_CHANNEL = None
2020
self.ssh_key = None
2121
self.ssh_pub_key = None
22+
self.setup_paramiko()
23+
2224

2325

2426
def setup_paramiko(self):
@@ -59,7 +61,7 @@ def paramiko_try_user(self, user):
5961
str(self.linode_ip),
6062
port=self.ssh_port,
6163
username=user,
62-
pkey=self.ssh_key,
64+
key_filename=self.ssh_key,
6365
auth_timeout=self.ssh_auth_timeout,
6466
)
6567
except Exception as e:
@@ -69,12 +71,13 @@ def paramiko_try_user(self, user):
6971
return status
7072

7173
def paramiko_connect(self):
74+
self.update_linode_data()
7275
try:
7376
self.SSH_CLIENT.connect(
7477
str(self.linode_ip),
7578
port=self.ssh_port,
7679
username=self.ssh_username,
77-
pkey=self.ssh_key,
80+
key_filename=self.ssh_key_path,
7881
auth_timeout=self.ssh_auth_timeout,
7982
)
8083
except Exception as e:
@@ -83,19 +86,20 @@ def paramiko_connect(self):
8386
str(self.linode_ip),
8487
port=self.ssh_port,
8588
username='root',
86-
pkey=self.ssh_key,
89+
key_filename=self.ssh_key_path,
8790
auth_timeout=self.ssh_auth_timeout,
8891
)
8992
except Exception as e:
9093
self.logger.warn(f"Could not connect to {str(self.linode_ip)}")
9194
return False
92-
return True
95+
return self.SSH_CLIENT
9396

9497
def paramiko_open_sftp(self):
98+
self.update_linode_data()
9599
try:
96100
self.SFTP_CHANNEL = self.SSH_CLIENT.open_sftp()
97101
except Exception as e:
98102
self.logger.warn(f"Could not connect to {str(self.linode_ip)}")
99103
return False
100104
else:
101-
return True
105+
return self.SFTP_CHANNEL

src/Hermes/wireguard.py

Lines changed: 20 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
from os.path import basename, dirname
12
from time import time
23
from ipaddress import ip_network
34
import jinja2
@@ -19,8 +20,7 @@ def wireguard_init(self):
1920
sync_tree docstring
2021
"""
2122
config_predir = self.config["Wireguard"]
22-
self.wireguard_template_dir = config_predir["wireguard_template_dir"]
23-
self.wireguard_target_wg_conf = config_predir["wireguard_target_wg_conf"]
23+
self.wireguard_template = config_predir["wireguard_template"]
2424
self.wireguard_subnet = ip_network(config_predir["wireguard_subnet"])
2525
self.wireguard_port = config_predir.getint("wireguard_port")
2626
self.PersistentKeepalive = config_predir.getint("PersistentKeepalive")
@@ -64,7 +64,12 @@ async def update(self, interaction):
6464
"""
6565
sync_tree docstring
6666
"""
67-
self.update_wireguard_conf()
67+
if self.update_wireguard_conf():
68+
await interaction.followup.send(
69+
view=ActionOkV(label="Wireguard config updated"), ephemeral=True, silent=True)
70+
else:
71+
await interaction.followup.send(
72+
view=ActionOkV(label="Could not update wireguard config", succes=False), ephemeral=True, silent=True)
6873

6974
@app_commands.command()
7075
async def help(self, interaction):
@@ -183,31 +188,35 @@ async def generate_linode_wg_conf(self):
183188
"""
184189
sync_tree docstring
185190
"""
186-
fs_loader = jinja2.FileSystemLoader(self.wireguard_template_dir)
191+
fs_loader = jinja2.FileSystemLoader(dirname(self.wireguard_template))
187192
env = jinja2.Environment(loader=fs_loader)
188-
template = env.get_template("Wireguard.conf")
193+
template = env.get_template(basename(self.wireguard_template))
189194
wg_users = await self.read_wireguard_users()
190195

191-
host_config = {"Address": self.linode_ip, "PrivateKey": self.wireguard_private_key}
196+
host_config = {"Address": self.linode_ip, "PrivateKey": self.linode_wireguard_private_key}
192197

193198
misc = {"Endpoint": self.linode_ip, "ListenPort": self.wireguard_port}
194199

195200
hermes = {
196-
"PUB_KEY": self.wireguard_public_key,
201+
"PUB_KEY": self.linode_wireguard_private_key,
197202
"USER_WG_IP": list(self.wireguard_subnet.hosts())[0],
198203
"PersistentKeepalive": self.PersistentKeepalive,
199204
}
200205

201206
return template.render(HOST=host_config, HERMES=hermes, PEERS=wg_users, MISC=misc)
202-
207+
# todo: LINODE HAS FIRST ADRESS, NOT HERMES
203208
async def update_wireguard_conf(self): # raise errors
204209
"""
205210
sync_tree docstring
206211
"""
212+
self.SSH_CLIENT = self.paramiko_connect()
213+
self.SFTP_CHANNEL = self.paramiko_open_sftp()
214+
if not self.SSH_CLIENT or not self.SFTP_CHANNEL:
215+
return False
207216
with self.SSH_CLIENT, self.SFTP_CHANNEL:
208-
if not self.paramiko_connect() or not self.paramiko_open_sftp():
209-
return False
210-
with self.SFTP_CHANNEL.file(self.wireguard_target_wg_conf, mode="w") as fh:
217+
with self.SFTP_CHANNEL.file('/etc/wireguard/linode.conf', mode="w") as fh:
211218
wg_conf_string = await self.generate_linode_wg_conf()
212219
fh.write(wg_conf_string)
213220
return True
221+
return False
222+
#OnUCURuETqGGfeGNkYewSq5dsJd32WMIHz1nJPa0ZEw=

0 commit comments

Comments
 (0)