server

package
v0.0.5 Latest Latest
Warning

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

Go to latest
Published: Mar 10, 2025 License: Apache-2.0 Imports: 37 Imported by: 0

Documentation

Overview

Package server provides the server subcommand.

Index

Constants

This section is empty.

Variables

View Source
var Command = &cobra.Command{
	Use:   "server",
	Short: "Start the RUN-DSP server",
	Long: `Starts the RUN-DSP connector, which then connects to the provider and will start
				serving dataspace requests`,
	PersistentPreRunE: func(cmd *cobra.Command, args []string) error {
		_, err := url.Parse(viper.GetString(dspExternalURL))
		if err != nil {
			return fmt.Errorf("Invalid external URL: %w", err)
		}
		err = cfg.CheckListenPort(viper.GetString(dspAddress), viper.GetInt(dspPort))
		if err != nil {
			return err
		}

		err = cfg.CheckConnectAddr(viper.GetString(providerAddress))
		if err != nil {
			return err
		}

		if !viper.GetBool(providerInsecure) {
			err = cfg.CheckFilesExist(
				viper.GetString(providerCACert),
				viper.GetString(providerClientCert),
				viper.GetString(providerClientCertKey),
			)
			if err != nil {
				return err
			}
		}

		if viper.GetBool(contractServiceEnabled) {
			err = cfg.CheckConnectAddr(viper.GetString(contractServiceAddress))
			if err != nil {
				return err
			}

			if !viper.GetBool(contractServiceInsecure) {
				err = cfg.CheckFilesExist(
					viper.GetString(contractServiceCACert),
					viper.GetString(contractServiceClientCert),
					viper.GetString(contractServiceClientCertKey),
				)
				if err != nil {
					return err
				}
			}
		}

		err = cfg.CheckListenPort(viper.GetString(controlAddr), viper.GetInt(controlPort))
		if err != nil {
			return err
		}
		if !viper.GetBool(controlInsecure) {
			err = cfg.CheckFilesExist(
				viper.GetString(controlCert),
				viper.GetString(controlCertKey),
			)
			if err != nil {
				return err
			}
			if viper.GetBool(controlVerifyClientCertificates) {
				err = cfg.CheckFilesExist(viper.GetString(controlClientCACert))
				if err != nil {
					return err
				}
			}
		}

		switch viper.GetString(persistenceBackend) {
		case "badger":
			mem := viper.GetBool(persistenceBadgerMemory)
			path := viper.GetString(persistenceBadgerDBPath)
			if mem && path != "" {
				return fmt.Errorf("in-memory database is mutually exclusive with a database path")
			}
		default:
			return fmt.Errorf("invalid persistence backend")
		}

		return nil
	},
	RunE: func(cmd *cobra.Command, args []string) error {
		u, err := url.Parse(viper.GetString(dspExternalURL))
		if err != nil {
			panic(err.Error())
		}
		c := command{
			ListenAddr:      viper.GetString(dspAddress),
			Port:            viper.GetInt(dspPort),
			ExternalURL:     u,
			ProviderAddress: viper.GetString(providerAddress),
			ProviderTLSConfig: tlsConfig{
				Insecure:      viper.GetBool(providerInsecure),
				CACert:        viper.GetString(providerCACert),
				ClientCert:    viper.GetString(providerClientCert),
				ClientCertKey: viper.GetString(providerClientCertKey),
			},
			ContractServiceEnabled: viper.GetBool(contractServiceEnabled),
			ContractServiceAddress: viper.GetString(contractServiceAddress),
			ContractServiceTLSConfig: tlsConfig{
				Insecure:      viper.GetBool(contractServiceInsecure),
				CACert:        viper.GetString(contractServiceCACert),
				ClientCert:    viper.GetString(contractServiceClientCert),
				ClientCertKey: viper.GetString(contractServiceClientCertKey),
			},
			ControlListenAddr:               viper.GetString(controlAddr),
			ControlPort:                     viper.GetInt(controlPort),
			ControlInsecure:                 viper.GetBool(controlInsecure),
			ControlCert:                     viper.GetString(controlCert),
			ControlCertKey:                  viper.GetString(controlCertKey),
			ControlVerifyClientCertificates: viper.GetBool(controlVerifyClientCertificates),
			ControlClientCACert:             viper.GetString(controlClientCACert),
			PersistenceBackend:              viper.GetString(persistenceBackend),
			BadgerMemoryDB:                  viper.GetBool(persistenceBadgerMemory),
			BadgerDBPath:                    viper.GetString(persistenceBadgerDBPath),
		}
		ctx, ok := viper.Get("initCTX").(context.Context)
		if !ok {
			return fmt.Errorf("couldn't fetch initial context")
		}
		return c.Run(ctx)
	},
}

Command validates the configuration and then runs the server.

Functions

This section is empty.

Types

This section is empty.

Jump to

Keyboard shortcuts

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