diff --git a/internal/server/core.go b/internal/server/core.go index 5dffe49..a8aba5f 100644 --- a/internal/server/core.go +++ b/internal/server/core.go @@ -104,6 +104,9 @@ func (s *Server) Setup() error { if err := s.users.InitFromCurrentInterface(); err != nil { return errors.New("unable to initialize user manager") } + if err := s.RestoreWireGuardInterface(); err != nil { + return errors.New("unable to restore wirguard state") + } dir := s.getExecutableDirectory() rDir, _ := filepath.Abs(filepath.Dir(os.Args[0])) diff --git a/internal/server/helper.go b/internal/server/helper.go index 32d9b50..ce91e90 100644 --- a/internal/server/helper.go +++ b/internal/server/helper.go @@ -164,3 +164,17 @@ func (s *Server) DeleteUser(user User) error { return nil } + +func (s *Server) RestoreWireGuardInterface() error { + activeUsers := s.users.GetActiveUsers() + + for i := range activeUsers { + if activeUsers[i].Peer == nil { + if err := s.wg.AddPeer(activeUsers[i].GetPeerConfig()); err != nil { + return err + } + } + } + + return nil +}