initutil

package
v2.327.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 30, 2021 License: Apache-2.0, MIT Imports: 81 Imported by: 0

Documentation

Overview

Example (Flags)
package main

import (
	"context"
	"flag"
	"fmt"

	"moul.io/u"

	"berty.tech/berty/v2/go/internal/initutil"
)

func main() {
	// init manager
	ctx := context.Background()
	manager, err := initutil.New(ctx, nil)
	if err != nil {
		panic(err)
	}
	defer manager.Close(nil)

	// configure flags
	fmt.Println("before", u.JSON(manager.Node.GRPC))
	fs := flag.NewFlagSet("test", flag.ExitOnError)
	manager.SetupLocalProtocolServerFlags(fs)
	manager.SetupRemoteNodeFlags(fs)
	manager.SetupDefaultGRPCListenersFlags(fs)
	err = fs.Parse([]string{"-store.inmem", "-p2p.min-backoff=2m10s", "-node.remote-addr=1.2.3.4:5678"})
	if err != nil {
		panic(err)
	}
	fmt.Println("after ", u.JSON(manager.Node.GRPC))

}
Output:

before {}
after  {"RemoteAddr":"1.2.3.4:5678","Listeners":"/ip4/127.0.0.1/tcp/9091/grpc"}
Example (Noflags)
package main

import (
	"context"
	"flag"
	"fmt"

	"berty.tech/berty/v2/go/internal/initutil"
	"berty.tech/berty/v2/go/pkg/protocoltypes"
)

func main() {
	// init manager
	ctx := context.Background()
	manager, err := initutil.New(ctx, nil)
	if err != nil {
		panic(err)
	}
	defer manager.Close(nil)

	fs := flag.NewFlagSet("", flag.ExitOnError)
	manager.SetupLocalProtocolServerFlags(fs)
	manager.SetupRemoteNodeFlags(fs)
	fs.Parse([]string{})

	// configure manager without flags
	manager.Node.GRPC.Listeners = ""
	manager.Node.Protocol.DisableIPFSNetwork = true
	manager.Datastore.InMemory = true

	// start a local berty protocol server
	_, err = manager.GetLocalProtocolServer()
	if err != nil {
		panic(err)
	}

	// build a client for the previously created protocol server
	client, err := manager.GetProtocolClient()
	if err != nil {
		panic(err)
	}

	// retrieve config
	ret, err := client.InstanceGetConfiguration(ctx, &protocoltypes.InstanceGetConfiguration_Request{})
	if err != nil {
		panic(err)
	}

	// check that the reply is valid (cannot check hardcoded value, since it's random)
	fmt.Println(ret.AccountPK != nil)

}
Output:

true

Index

Examples

Constants

View Source
const (
	FlagNameP2PBootstrap                  = "p2p.bootstrap"
	FlagNameP2PDHT                        = "p2p.dht"
	FlagNameP2PMDNS                       = "p2p.mdns"
	FlagNameP2PStaticRelays               = "p2p.static-relays"
	FlagNameP2PRDVP                       = "p2p.rdvp"
	FlagNameP2PBLE                        = "p2p.ble"
	FlagNameP2PNearby                     = "p2p.nearby"
	FlagNameP2PMultipeerConnectivity      = "p2p.multipeer-connectivity"
	FlagNameTorMode                       = "tor.mode"
	FlagNameP2PTinderDiscover             = "p2p.tinder-discover"
	FlagNameP2PTinderDHTDriver            = "p2p.tinder-dht-driver"
	FlagNameP2PTinderRDVPDriver           = "p2p.tinder-rdvp-driver"
	FlagNameP2PDisableDiscoverAddrsFilter = "p2p.disc-disable-filter"

	FlagValueP2PDHTDisabled   = "none"
	FlagValueP2PDHTClient     = "client"
	FlagValueP2PDHTServer     = "server"
	FlagValueP2PDHTAuto       = "auto"
	FlagValueP2PDHTAutoServer = "autoserver"
)
View Source
const (
	KeywordDefault string = ":default:"
	KeywordNone    string = ":none:"
)
View Source
const (
	PerformancePreset = "performance"
	AnonymityPreset   = "anonymity"
	VolatilePreset    = "volatile"

	TorDisabled = "disabled"
	TorOptional = "optional"
	TorRequired = "required"
)

Variables

This section is empty.

Functions

func ReplaceGRPCLogger added in v2.211.1

func ReplaceGRPCLogger(l *zap.Logger)

Types

type Manager

type Manager struct {
	// Session contains metadata for the current running session.
	Session struct {
		// Kind is a string describing the context of the app.
		// When set, it is appended to the session-specific logging file.
		// It follows the following format: '${driver}.${package}.${command}'.
		// Examples:
		//   cli.daemon       -> `go run ./cmd/berty daemon`
		//   cli.mini         -> `go run ./cmd/berty mini`
		//   cli.rdvp         -> `go run ./cmd/rdvp`
		//   mobile.messenger -> Berty Messenger app using the bertybridge
		Kind string `json:"Kind,omitempty"`

		// ID is an auto-generated UUID that can be used by Tyber.
		ID string `json:"ID,omitempty"`
	} `json:"Session,omitempty"`
	Logging struct {
		DefaultLoggerStreams []logutil.Stream
		StderrFormat         string `json:"StderrFormat,omitempty"`
		StderrFilters        string `json:"StderrFilters,omitempty"`
		FilePath             string `json:"FilePath,omitempty"`
		FileFilters          string `json:"FileFilters,omitempty"`
		RingFilters          string `json:"RingFilters,omitempty"`
		RingSize             uint   `json:"RingSize,omitempty"`
		// contains filtered or unexported fields
	} `json:"Logging,omitempty"`
	Metrics struct {
		Listener string `json:"Listener,omitempty"`
		Pedantic bool   `json:"Pedantic,omitempty"`
		// contains filtered or unexported fields
	} `json:"Metrics,omitempty"`
	Datastore struct {
		Dir      string `json:"Dir,omitempty"`
		InMemory bool   `json:"InMemory,omitempty"`
		// contains filtered or unexported fields
	} `json:"Datastore,omitempty"`
	Node struct {
		Preset   string `json:"preset"`
		Protocol struct {
			SwarmListeners    string `json:"SwarmListeners,omitempty"`
			IPFSAPIListeners  string `json:"IPFSAPIListeners,omitempty"`
			IPFSWebUIListener string `json:"IPFSWebUIListener,omitempty"`
			Announce          string `json:"Announce,omitempty"`
			Bootstrap         string `json:"Bootstrap,omitempty"`
			DHT               string `json:"DHT,omitempty"`
			DHTRandomWalk     bool   `json:"DHTRandomWalk,omitempty"`
			NoAnnounce        string `json:"NoAnnounce,omitempty"`
			MDNS              bool   `json:"LocalDiscovery,omitempty"`
			TinderDiscover    bool   `json:"TinderDiscover,omitempty"`
			TinderDHTDriver   bool   `json:"TinderDHTDriver,omitempty"`
			TinderRDVPDriver  bool   `json:"TinderRDVPDriver,omitempty"`
			AutoRelay         bool   `json:"Relay,omitempty"`
			StaticRelays      string `json:"StaticRelays,omitempty"`
			LowWatermark      int    `json:"LowWatermark,omitempty"`
			HighWatermark     int    `json:"HighWatermark,omitempty"`
			Ble               struct {
				Enable bool                      `json:"Enable,omitempty"`
				Driver proximity.ProximityDriver `json:"Driver,omitempty"`
			}
			Nearby struct {
				Enable bool                      `json:"Enable,omitempty"`
				Driver proximity.ProximityDriver `json:"Driver,omitempty"`
			}
			MultipeerConnectivity bool          `json:"MultipeerConnectivity,omitempty"`
			MinBackoff            time.Duration `json:"MinBackoff,omitempty"`
			MaxBackoff            time.Duration `json:"MaxBackoff,omitempty"`
			DisableIPFSNetwork    bool          `json:"DisableIPFSNetwork,omitempty"`
			RdvpMaddrs            string        `json:"RdvpMaddrs,omitempty"`
			AuthSecret            string        `json:"AuthSecret,omitempty"`
			AuthPublicKey         string        `json:"AuthPublicKey,omitempty"`
			PollInterval          time.Duration `json:"PollInterval,omitempty"`
			Tor                   struct {
				Mode       string `json:"Mode,omitempty"`
				BinaryPath string `json:"BinaryPath,omitempty"`
			} `json:"Tor,omitempty"`
			PushPlatformToken      string        `json:"PushPlatformToken,omitempty"`
			DevicePushKeyPath      string        `json:"DevicePushKeyPath,omitempty"`
			ServiceInsecureMode    bool          `json:"ServiceInsecureMode,omitempty"`
			RendezvousRotationBase time.Duration `json:"RendezvousRotationBase,omitempty"`

			// internal
			DisableDiscoverFilterAddrs bool
			ServiceID                  string
			// contains filtered or unexported fields
		}
		Messenger struct {
			DisableGroupMonitor  bool   `json:"DisableGroupMonitor,omitempty"`
			DisplayName          string `json:"DisplayName,omitempty"`
			DisableNotifications bool   `json:"DisableNotifications,omitempty"`
			RebuildSqlite        bool   `json:"RebuildSqlite,omitempty"`
			MessengerSqliteOpts  string `json:"MessengerSqliteOpts,omitempty"`
			ExportPathToRestore  string `json:"ExportPathToRestore,omitempty"`
			// contains filtered or unexported fields
		}
		Replication struct {
			// contains filtered or unexported fields
		}
		GRPC struct {
			RemoteAddr string `json:"RemoteAddr,omitempty"`
			Listeners  string `json:"Listeners,omitempty"`
			// contains filtered or unexported fields
		} `json:"GRPC,omitempty"`
	} `json:"Node,omitempty"`
	InitTimeout time.Duration `json:"InitTimeout,omitempty"`
	// contains filtered or unexported fields
}

func New

func New(ctx context.Context, opts *ManagerOpts) (*Manager, error)

func (*Manager) AdvancedHelp added in v2.195.2

func (m *Manager) AdvancedHelp() string

func (*Manager) Close

func (m *Manager) Close(prog *progress.Progress) error

func (*Manager) DisableIPFSNetwork

func (m *Manager) DisableIPFSNetwork()

func (*Manager) GetContext

func (m *Manager) GetContext() context.Context

func (*Manager) GetDatastoreDir

func (m *Manager) GetDatastoreDir() (string, error)

func (*Manager) GetGRPCClientConn

func (m *Manager) GetGRPCClientConn() (*grpc.ClientConn, error)

func (*Manager) GetGRPCListeners added in v2.190.1

func (m *Manager) GetGRPCListeners() []grpcutil.Listener

func (*Manager) GetGRPCServer

func (m *Manager) GetGRPCServer() (*grpc.Server, *grpcgw.ServeMux, error)

func (*Manager) GetLifecycleManager added in v2.145.0

func (m *Manager) GetLifecycleManager() *lifecycle.Manager

func (*Manager) GetLocalIPFS added in v2.141.0

func (m *Manager) GetLocalIPFS() (ipfsutil.ExtendedCoreAPI, *ipfs_core.IpfsNode, error)

func (*Manager) GetLocalMessengerServer

func (m *Manager) GetLocalMessengerServer() (messengertypes.MessengerServiceServer, error)

func (*Manager) GetLocalProtocolServer

func (m *Manager) GetLocalProtocolServer() (bertyprotocol.Service, error)

func (*Manager) GetLogger

func (m *Manager) GetLogger() (*zap.Logger, error)

func (*Manager) GetMessengerClient

func (m *Manager) GetMessengerClient() (messengertypes.MessengerServiceClient, error)

func (*Manager) GetMessengerDB

func (m *Manager) GetMessengerDB() (*gorm.DB, error)

func (*Manager) GetMetricsRegistry added in v2.182.0

func (m *Manager) GetMetricsRegistry() (*prometheus.Registry, error)

func (*Manager) GetNotificationManager added in v2.190.1

func (m *Manager) GetNotificationManager() (notification.Manager, error)

func (*Manager) GetOrbitDB added in v2.141.0

func (m *Manager) GetOrbitDB() (*bertyprotocol.BertyOrbitDB, error)

func (*Manager) GetProtocolClient

func (m *Manager) GetProtocolClient() (protocoltypes.ProtocolServiceClient, error)

func (*Manager) GetRendezvousRotationBase added in v2.322.0

func (m *Manager) GetRendezvousRotationBase() (time.Duration, error)

func (*Manager) GetReplicationDB added in v2.311.2

func (m *Manager) GetReplicationDB() (*gorm.DB, error)

func (*Manager) GetRootDatastore

func (m *Manager) GetRootDatastore() (datastore.Batching, error)

func (*Manager) GetStorageKey added in v2.313.0

func (m *Manager) GetStorageKey() ([]byte, error)

func (*Manager) RunWorkers

func (m *Manager) RunWorkers() error

func (*Manager) SetBleDriver added in v2.260.0

func (m *Manager) SetBleDriver(d proximity.ProximityDriver)

Set the Java Android BLE driver

func (*Manager) SetDevicePushKeyPath added in v2.305.0

func (m *Manager) SetDevicePushKeyPath(keyPath string)

func (*Manager) SetLifecycleManager added in v2.190.1

func (m *Manager) SetLifecycleManager(manager *lifecycle.Manager)

func (*Manager) SetLogger added in v2.190.1

func (m *Manager) SetLogger(logger *zap.Logger)

func (*Manager) SetNBDriver added in v2.269.0

func (m *Manager) SetNBDriver(d proximity.ProximityDriver)

Set the Java Android Nearby driver

func (*Manager) SetNotificationManager added in v2.190.1

func (m *Manager) SetNotificationManager(manager notification.Manager)

func (*Manager) SetupDatastoreFlags

func (m *Manager) SetupDatastoreFlags(fs *flag.FlagSet)

func (*Manager) SetupDefaultGRPCListenersFlags added in v2.141.1

func (m *Manager) SetupDefaultGRPCListenersFlags(fs *flag.FlagSet)

func (*Manager) SetupEmptyGRPCListenersFlags added in v2.141.1

func (m *Manager) SetupEmptyGRPCListenersFlags(fs *flag.FlagSet)

func (*Manager) SetupInitTimeout added in v2.221.2

func (m *Manager) SetupInitTimeout(fs *flag.FlagSet)

func (*Manager) SetupLocalIPFSFlags added in v2.141.0

func (m *Manager) SetupLocalIPFSFlags(fs *flag.FlagSet)

func (*Manager) SetupLocalMessengerServerFlags

func (m *Manager) SetupLocalMessengerServerFlags(fs *flag.FlagSet)

func (*Manager) SetupLocalProtocolServerFlags

func (m *Manager) SetupLocalProtocolServerFlags(fs *flag.FlagSet)

func (*Manager) SetupLoggingFlags

func (m *Manager) SetupLoggingFlags(fs *flag.FlagSet)

func (*Manager) SetupMetricsFlags added in v2.182.0

func (m *Manager) SetupMetricsFlags(fs *flag.FlagSet)

func (*Manager) SetupNotificationManagerFlags added in v2.190.1

func (m *Manager) SetupNotificationManagerFlags(fs *flag.FlagSet)

func (*Manager) SetupPresetFlags added in v2.195.2

func (m *Manager) SetupPresetFlags(fs *flag.FlagSet)

func (*Manager) SetupProtocolAuth added in v2.154.0

func (m *Manager) SetupProtocolAuth(fs *flag.FlagSet)

func (*Manager) SetupRemoteNodeFlags

func (m *Manager) SetupRemoteNodeFlags(fs *flag.FlagSet)

type ManagerOpts added in v2.297.0

type ManagerOpts struct {
	DoNotSetDefaultDir   bool
	DefaultLoggerStreams []logutil.Stream
	NativeKeystore       accountutils.NativeKeystore
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL