Skip to content
This repository has been archived by the owner on Dec 19, 2024. It is now read-only.

Commit

Permalink
OpenVPN: Remove parser
Browse files Browse the repository at this point in the history
It was previously needed as we had to replace some stuff in the config
IIRC. This is no longer needed, so instead of parsing and then
recombining the config, let's pass it around as a string
  • Loading branch information
jwijenbergh committed Oct 29, 2024
1 parent e2cc8ba commit 353c009
Show file tree
Hide file tree
Showing 5 changed files with 10 additions and 128 deletions.
11 changes: 4 additions & 7 deletions eduvpn/connection.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,6 @@
from enum import IntEnum
from typing import Any, Dict, List, Optional

from eduvpn.ovpn import Ovpn


class Token:
"""The class that represents oauth Tokens
Expand Down Expand Up @@ -172,14 +170,13 @@ def connect(self, callback):


class OpenVPNConnection(Connection):
def __init__(self, ovpn: Ovpn):
self.ovpn = ovpn
def __init__(self, config_str):
self.config_str = config_str
super().__init__()

@classmethod
def parse(cls, config_str: str) -> "OpenVPNConnection": # type: ignore
ovpn = Ovpn.parse(config_str)
return cls(ovpn=ovpn)
return cls(config_str=config_str)

def connect(
self,
Expand All @@ -191,7 +188,7 @@ def connect(
callback,
):
manager.start_openvpn_connection(
self.ovpn,
self.config_str,
default_gateway,
dns_search_domains,
callback=callback,
Expand Down
9 changes: 4 additions & 5 deletions eduvpn/nm.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,7 @@
from eduvpn_common.main import EduVPN, Jar
from gi.repository.Gio import Cancellable, Task # type: ignore

from eduvpn.ovpn import Ovpn
from eduvpn.storage import get_uuid, set_uuid, write_ovpn
from eduvpn.storage import get_uuid, set_uuid
from eduvpn.utils import run_in_background_thread, run_in_glib_thread
from eduvpn.variants import ApplicationVariant

Expand Down Expand Up @@ -348,15 +347,15 @@ def ovpn_import(self, target: Path) -> Optional["NM.Connection"]:
conn.normalize()
return conn

def import_ovpn(self, ovpn: Ovpn) -> "NM.SimpleConnection":
def import_ovpn(self, ovpn: str) -> "NM.SimpleConnection":
"""
Import the OVPN string into Network Manager.
"""
target_parent = Path(mkdtemp())
target = target_parent / f"{self.variant.name}.ovpn"
_logger.debug(f"Writing configuration to {target}")
with open(target, mode="w+t") as f:
ovpn.write(f)
f.write(ovpn)
connection = self.ovpn_import(target)
rmtree(target_parent)
return connection
Expand Down Expand Up @@ -401,7 +400,7 @@ def set_setting_ensure_permissions(self, con: "NM.SimpleConnection") -> "NM.Simp
con.add_setting(s_con)
return con

def start_openvpn_connection(self, ovpn: Ovpn, default_gateway, dns_search_domains, *, callback=None) -> None:
def start_openvpn_connection(self, ovpn: str, default_gateway, dns_search_domains, *, callback=None) -> None:
_logger.debug("writing ovpn configuration to Network Manager")
new_con = self.import_ovpn(ovpn)
s_ip4 = new_con.get_setting_ip4_config()
Expand Down
99 changes: 0 additions & 99 deletions eduvpn/ovpn.py

This file was deleted.

12 changes: 0 additions & 12 deletions eduvpn/storage.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@

from typing import Optional

from eduvpn.ovpn import Ovpn
from eduvpn.settings import CONFIG_DIR_MODE, CONFIG_PREFIX
from eduvpn.utils import get_logger

Expand Down Expand Up @@ -45,17 +44,6 @@ def set_setting(variant, what: str, value: str):
f.write(value)


def write_ovpn(ovpn: Ovpn, private_key: str, certificate: str, target: PathLike):
"""
Write the OVPN configuration file to target.
"""
logger.info(f"Writing configuration to {target}")
with open(target, mode="w+t") as f:
ovpn.write(f)
f.writelines(f"\n<key>\n{private_key}\n</key>\n")
f.writelines(f"\n<cert>\n{certificate}\n</cert>\n")


def get_uuid(variant) -> Optional[str]:
"""
Read the UUID of the last generated eduVPN Network Manager connection.
Expand Down
7 changes: 2 additions & 5 deletions tests/test_nm.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
from unittest import TestCase, skipIf

from eduvpn.nm import NMManager
from eduvpn.ovpn import Ovpn
from eduvpn.variants import EDUVPN
from tests.mock_config import mock_config

Expand All @@ -14,13 +13,11 @@ def test_nm_available(self):

def test_import_ovpn(self):
nm_manager = NMManager(EDUVPN, None)
ovpn = Ovpn.parse(mock_config)
nm_manager.import_ovpn(ovpn)
nm_manager.import_ovpn(mock_config)

def test_get_add_connection(self):
nm_manager = NMManager(EDUVPN, None)
ovpn = Ovpn.parse(mock_config)
simple_connection = nm_manager.import_ovpn(ovpn)
simple_connection = nm_manager.import_ovpn(mock_config)
nm_manager.add_connection(simple_connection)

def test_get_uuid(self):
Expand Down

0 comments on commit 353c009

Please sign in to comment.