Merge branch 'pr214'

This commit is contained in:
Christoph Haas
2024-03-12 22:33:15 +01:00
17 changed files with 860 additions and 308 deletions
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -14,7 +14,7 @@
let WGPORTAL_SITE_COMPANY_NAME="WireGuard Portal";
</script>
<script src="/api/v0/config/frontend.js"></script>
<script type="module" crossorigin src="/app/assets/index-0ieWfcrp.js"></script>
<script type="module" crossorigin src="/app/assets/index--mSsjyvF.js"></script>
<link rel="stylesheet" crossorigin href="/app/assets/index-OMIWgeM9.css">
</head>
<body class="d-flex flex-column min-vh-100">
+3 -1
View File
@@ -4,11 +4,12 @@ import (
"context"
"errors"
"fmt"
"time"
"github.com/h44z/wg-portal/internal/config"
"github.com/h44z/wg-portal/internal/domain"
"github.com/sirupsen/logrus"
evbus "github.com/vardius/message-bus"
"time"
)
type App struct {
@@ -59,6 +60,7 @@ func New(cfg *config.Config, bus evbus.MessageBus, authenticator Authenticator,
}
func (a *App) Startup(ctx context.Context) error {
a.UserManager.StartBackgroundJobs(ctx)
a.StatisticsCollector.StartBackgroundJobs(ctx)
a.WireGuardManager.StartBackgroundJobs(ctx)
+12 -4
View File
@@ -4,11 +4,12 @@ import (
"context"
"errors"
"fmt"
"github.com/h44z/wg-portal/internal/app"
"math"
"sync"
"time"
"github.com/h44z/wg-portal/internal/app"
"github.com/h44z/wg-portal/internal"
"github.com/go-ldap/ldap/v3"
@@ -87,7 +88,9 @@ func (m Manager) NewUser(ctx context.Context, user *domain.User) error {
}
func (m Manager) StartBackgroundJobs(ctx context.Context) {
go m.runLdapSynchronizationService(ctx)
}
func (m Manager) GetUser(ctx context.Context, id domain.UserIdentifier) (*domain.User, error) {
@@ -322,7 +325,7 @@ func (m Manager) runLdapSynchronizationService(ctx context.Context) {
if !ldapCfg.Synchronize {
continue // sync disabled
}
//logrus.Tracef(&ldapCfg)
err := m.synchronizeLdapUsers(ctx, &ldapCfg)
if err != nil {
logrus.Errorf("failed to synchronize LDAP users for %s: %v", ldapCfg.ProviderName, err)
@@ -382,15 +385,20 @@ func (m Manager) updateLdapUsers(ctx context.Context, providerName string, rawUs
return fmt.Errorf("find error for user id %s: %w", user.Identifier, err)
}
tctx, cancel := context.WithTimeout(context.Background(), 30*time.Second)
defer cancel()
tctx = domain.SetUserInfo(tctx, domain.SystemAdminContextUserInfo())
if existingUser == nil {
err := m.NewUser(ctx, user)
err := m.NewUser(tctx, user)
if err != nil {
return fmt.Errorf("create error for user id %s: %w", user.Identifier, err)
}
}
if existingUser != nil && existingUser.Source == domain.UserSourceLdap && userChangedInLdap(existingUser, user) {
err := m.users.SaveUser(ctx, user.Identifier, func(u *domain.User) (*domain.User, error) {
err := m.users.SaveUser(tctx, user.Identifier, func(u *domain.User) (*domain.User, error) {
u.UpdatedAt = time.Now()
u.UpdatedBy = "ldap_sync"
u.Email = user.Email
+2 -1
View File
@@ -3,9 +3,10 @@ package internal
import (
"crypto/tls"
"fmt"
"github.com/sirupsen/logrus"
"os"
"github.com/sirupsen/logrus"
"github.com/go-ldap/ldap/v3"
"github.com/h44z/wg-portal/internal/config"
)