From de44d07f0ea2d9a22f01a2522b5fd16208dcad94 Mon Sep 17 00:00:00 2001 From: Pea Nut <peanut2@systemli.org> Date: Wed, 16 Oct 2024 10:55:29 +0200 Subject: [PATCH] Add introducer to storage before using it when supplied via env --- pkg/vpn/menshen/init.go | 33 +++++++++++++++++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) diff --git a/pkg/vpn/menshen/init.go b/pkg/vpn/menshen/init.go index 6d727cb9..f7354fea 100644 --- a/pkg/vpn/menshen/init.go +++ b/pkg/vpn/menshen/init.go @@ -7,6 +7,7 @@ import ( "0xacab.org/leap/bitmask-core/models" "0xacab.org/leap/bitmask-core/pkg/bootstrap" + "0xacab.org/leap/bitmask-core/pkg/storage" "0xacab.org/leap/bitmask-vpn/pkg/config" "0xacab.org/leap/bitmask-vpn/pkg/snowflake" @@ -49,6 +50,34 @@ func New() (*Menshen, error) { // experimental introducer if introURL := os.Getenv("LEAP_INTRODUCER_URL"); introURL != "" { + + log.Info(). + Str("introducerURL", introURL). + Msg("Using introducer from env LEAP_INTRODUCER_URL") + + store, err := storage.GetStorage() + if err != nil { + log.Fatal(). + Err(err). + Str("introducerURL", introURL). + Msg("Could to get storage") + } + + // check if introducer exists in database, if not add it + _, err = store.GetIntroducerByURL(introURL) + if err != nil { + err = store.AddIntroducer(introURL) + if err != nil { + log.Fatal(). + Err(err). + Str("introducerURL", introURL). + Msg("Failed to add introducer to storage") + } else { + log.Info().Msg("Added introducer to database") + } + } else { + log.Info().Msg("Found introducer in database") + } cfg.Introducer = introURL } @@ -75,7 +104,7 @@ func New() (*Menshen, error) { // "--persisst-key" without additional value // Currently, there is no caching implemented func (m *Menshen) GetOpenvpnArgs() ([]string, error) { - log.Trace().Msg("Getting OpenVPN arguments") + log.Trace().Msg("Getting OpenVPN arguments from menshen") service, err := m.api.GetService() if err != nil { @@ -118,7 +147,7 @@ func (m *Menshen) GetOpenvpnArgs() ([]string, error) { // Asks menshen for valid client credentials (certificate + key) // Currently, there is no caching implemented func (m *Menshen) GetPemCertificate() ([]byte, error) { - log.Trace().Msg("Getting OpenVPN client certificate") + log.Trace().Msg("Getting OpenVPN client certificate from menshen") cert, err := m.api.GetOpenVPNCert() if err != nil { return []byte{}, err -- GitLab