Add new module for integration

This commit is contained in:
Zoltán Papp
2024-04-02 19:07:12 +02:00
parent d9ced1b9c0
commit b7ec8396f0
14 changed files with 180 additions and 80 deletions
+84
View File
@@ -0,0 +1,84 @@
module github.com/netbirdio/netbird/integrations
go 1.21
require (
github.com/gorilla/mux v1.8.1
github.com/netbirdio/netbird v0.26.7
github.com/sirupsen/logrus v1.9.3
)
require (
cloud.google.com/go/compute v1.19.3 // indirect
cloud.google.com/go/compute/metadata v0.2.3 // indirect
github.com/BurntSushi/toml v1.2.1 // indirect
github.com/TheJumpCloud/jcapi-go v3.0.0+incompatible // indirect
github.com/XiaoMi/pegasus-go-client v0.0.0-20210427083443-f3b6b08bc4c2 // indirect
github.com/beorn7/perks v1.0.1 // indirect
github.com/bradfitz/gomemcache v0.0.0-20220106215444-fb4bf637b56d // indirect
github.com/c-robinson/iplib v1.0.3 // indirect
github.com/cenkalti/backoff/v4 v4.1.3 // indirect
github.com/cespare/xxhash/v2 v2.2.0 // indirect
github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect
github.com/eko/gocache/v3 v3.1.1 // indirect
github.com/go-logr/logr v1.2.3 // indirect
github.com/go-logr/stdr v1.2.2 // indirect
github.com/go-redis/redis/v8 v8.11.5 // indirect
github.com/golang-jwt/jwt v3.2.2+incompatible // indirect
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
github.com/golang/protobuf v1.5.3 // indirect
github.com/google/martian/v3 v3.0.0 // indirect
github.com/google/s2a-go v0.1.4 // indirect
github.com/google/uuid v1.6.0 // indirect
github.com/googleapis/enterprise-certificate-proxy v0.2.3 // indirect
github.com/googleapis/gax-go/v2 v2.10.0 // indirect
github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.0.2-0.20240212192251-757544f21357 // indirect
github.com/hashicorp/go-secure-stdlib/base62 v0.1.2 // indirect
github.com/hashicorp/go-uuid v1.0.2 // indirect
github.com/hashicorp/go-version v1.6.0 // indirect
github.com/jinzhu/inflection v1.0.0 // indirect
github.com/jinzhu/now v1.1.5 // indirect
github.com/kelseyhightower/envconfig v1.4.0 // indirect
github.com/mattn/go-sqlite3 v1.14.19 // indirect
github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect
github.com/miekg/dns v1.1.43 // indirect
github.com/okta/okta-sdk-golang/v2 v2.18.0 // indirect
github.com/oschwald/maxminddb-golang v1.12.0 // indirect
github.com/patrickmn/go-cache v2.1.0+incompatible // indirect
github.com/pegasus-kv/thrift v0.13.0 // indirect
github.com/prometheus/client_golang v1.14.0 // indirect
github.com/prometheus/client_model v0.3.0 // indirect
github.com/prometheus/common v0.37.0 // indirect
github.com/prometheus/procfs v0.8.0 // indirect
github.com/rs/xid v1.3.0 // indirect
github.com/spf13/cast v1.5.0 // indirect
go.opencensus.io v0.24.0 // indirect
go.opentelemetry.io/otel v1.11.1 // indirect
go.opentelemetry.io/otel/exporters/prometheus v0.33.0 // indirect
go.opentelemetry.io/otel/metric v0.33.0 // indirect
go.opentelemetry.io/otel/sdk v1.11.1 // indirect
go.opentelemetry.io/otel/sdk/metric v0.33.0 // indirect
go.opentelemetry.io/otel/trace v1.11.1 // indirect
goauthentik.io/api/v3 v3.2023051.3 // indirect
golang.org/x/crypto v0.18.0 // indirect
golang.org/x/exp v0.0.0-20230725093048-515e97ebf090 // indirect
golang.org/x/net v0.20.0 // indirect
golang.org/x/oauth2 v0.8.0 // indirect
golang.org/x/sync v0.3.0 // indirect
golang.org/x/sys v0.16.0 // indirect
golang.org/x/text v0.14.0 // indirect
golang.zx2c4.com/wireguard/wgctrl v0.0.0-20230429144221-925a1e7659e6 // indirect
golang.zx2c4.com/wireguard/windows v0.5.3 // indirect
google.golang.org/api v0.126.0 // indirect
google.golang.org/appengine v1.6.7 // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20230530153820-e85fd2cbaebc // indirect
google.golang.org/grpc v1.56.3 // indirect
google.golang.org/protobuf v1.31.0 // indirect
gopkg.in/natefinch/lumberjack.v2 v2.0.0 // indirect
gopkg.in/square/go-jose.v2 v2.6.0 // indirect
gopkg.in/tomb.v2 v2.0.0-20161208151619-d5d1b5820637 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
gorm.io/driver/sqlite v1.5.3 // indirect
gorm.io/gorm v1.25.4 // indirect
k8s.io/apimachinery v0.23.16 // indirect
)
+36
View File
@@ -0,0 +1,36 @@
package integrations
import (
"context"
"github.com/gorilla/mux"
log "github.com/sirupsen/logrus"
"github.com/netbirdio/netbird/management/server"
"github.com/netbirdio/netbird/management/server/activity"
"github.com/netbirdio/netbird/management/server/activity/sqlite"
"github.com/netbirdio/netbird/management/server/jwtclaims"
)
func RegisterHandlers(
ctx context.Context,
prefix string,
router *mux.Router,
accountManager server.AccountManager,
extractor *jwtclaims.ClaimsExtractor,
) (*mux.Router, error) {
return router, nil
}
func InitEventStore(dataDir string, key string) (activity.Store, string, error) {
var err error
if key == "" {
log.Debugf("generate new activity store encryption key")
key, err = sqlite.GenerateKey()
if err != nil {
return nil, "", err
}
}
store, err := sqlite.NewSQLiteStore(dataDir, key)
return store, key, err
}
+52
View File
@@ -0,0 +1,52 @@
package integrations
import (
"github.com/netbirdio/netbird/management/server/account"
"github.com/netbirdio/netbird/management/server/activity"
"github.com/netbirdio/netbird/management/server/group"
"github.com/netbirdio/netbird/management/server/peer"
"github.com/netbirdio/netbird/integrations/validator"
)
type IntegratedValidatorImpl struct {
}
func NewIntegratedValidator(activity.Store) (validator.IntegratedValidator, error) {
return &IntegratedValidatorImpl{}, nil
}
func (v *IntegratedValidatorImpl) ValidateExtraSettings(*account.ExtraSettings, *account.ExtraSettings, map[string]*peer.Peer, string, string) error {
return nil
}
func (v *IntegratedValidatorImpl) ValidatePeer(update *peer.Peer, _ *peer.Peer, _ string, _ string, _ string, _ []string, _ *account.ExtraSettings) (*peer.Peer, error) {
return update, nil
}
func (v *IntegratedValidatorImpl) PreparePeer(_ string, peer *peer.Peer, _ []string, _ *account.ExtraSettings) *peer.Peer {
return peer.Copy()
}
func (v *IntegratedValidatorImpl) IsNotValidPeer(_ string, _ *peer.Peer, _ []string, _ *account.ExtraSettings) (bool, bool) {
return false, false
}
func (v *IntegratedValidatorImpl) GetValidatedPeers(_ string, _ map[string]*group.Group, peers map[string]*peer.Peer, _ *account.ExtraSettings) (map[string]struct{}, error) {
validatedPeers := make(map[string]struct{})
for p := range peers {
validatedPeers[p] = struct{}{}
}
return validatedPeers, nil
}
func (v *IntegratedValidatorImpl) PeerDeleted(_, _ string) error {
return nil
}
func (v *IntegratedValidatorImpl) SetPeerInvalidationListener(_ func(accountID string)) {
}
func (v *IntegratedValidatorImpl) Stop() {
}
+18
View File
@@ -0,0 +1,18 @@
package validator
import (
"github.com/netbirdio/netbird/management/server/account"
"github.com/netbirdio/netbird/management/server/group"
"github.com/netbirdio/netbird/management/server/peer"
)
type IntegratedValidator interface {
ValidateExtraSettings(newExtraSettings *account.ExtraSettings, oldExtraSettings *account.ExtraSettings, peers map[string]*peer.Peer, userID string, accountID string) error
ValidatePeer(update *peer.Peer, peer *peer.Peer, userID string, accountID string, dnsDomain string, peersGroup []string, extraSettings *account.ExtraSettings) (*peer.Peer, error)
PreparePeer(accountID string, peer *peer.Peer, peersGroup []string, extraSettings *account.ExtraSettings) *peer.Peer
IsNotValidPeer(accountID string, peer *peer.Peer, peersGroup []string, extraSettings *account.ExtraSettings) (bool, bool)
GetValidatedPeers(accountID string, groups map[string]*group.Group, peers map[string]*peer.Peer, extraSettings *account.ExtraSettings) (map[string]struct{}, error)
PeerDeleted(accountID, peerID string) error
SetPeerInvalidationListener(fn func(accountID string))
Stop()
}