Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
Types ¶
type AzurePublishMode ¶
type AzurePublishMode string
AzurePublishMode defines the publish-mode type.
const ( AzurePublishModeTopic AzurePublishMode = "topic" AzurePublishModeQueue AzurePublishMode = "queue" )
Publish modes.
type Config ¶
type Config struct {
General struct {
LogLevel int `mapstructure:"log_level"`
LogToSyslog bool `mapstructure:"log_to_syslog"`
PasswordHashIterations int `mapstructure:"password_hash_iterations"`
GRPCDefaultResolverScheme string `mapstructure:"grpc_default_resolver_scheme"`
} `mapstructure:"general"`
PostgreSQL struct {
DSN string `mapstructure:"dsn"`
Automigrate bool
MaxOpenConnections int `mapstructure:"max_open_connections"`
MaxIdleConnections int `mapstructure:"max_idle_connections"`
} `mapstructure:"postgresql"`
Redis struct {
URL string `mapstructure:"url"` // deprecated
Servers []string `mapstructure:"servers"`
Cluster bool `mapstructure:"cluster"`
MasterName string `mapstructure:"master_name"`
PoolSize int `mapstructure:"pool_size"`
Password string `mapstructure:"password"`
Database int `mapstructure:"database"`
TLSEnabled bool `mapstructure:"tls_enabled"`
KeyPrefix string `mapstructure:"key_prefix"`
} `mapstructure:"redis"`
ApplicationServer struct {
ID string `mapstructure:"id"`
UserAuthentication struct {
OpenIDConnect struct {
Enabled bool `mapstructure:"enabled"`
RegistrationEnabled bool `mapstructure:"registration_enabled"`
RegistrationCallbackURL string `mapstructure:"registration_callback_url"`
ProviderURL string `mapstructure:"provider_url"`
ClientID string `mapstructure:"client_id"`
ClientSecret string `mapstructure:"client_secret"`
RedirectURL string `mapstructure:"redirect_url"`
LogoutURL string `mapstructure:"logout_url"`
LoginLabel string `mapstructure:"login_label"`
UseUserInfo bool `mapstructure:"use_userinfo"`
AssumeEmailVerified bool `mapstructure:"assume_email_verified"`
} `mapstructure:"openid_connect"`
} `mapstructure:"user_authentication"`
Codec struct {
JS struct {
MaxExecutionTime time.Duration `mapstructure:"max_execution_time"`
} `mapstructure:"js"`
} `mapstructure:"codec"`
Integration struct {
Marshaler string `mapstructure:"marshaler"`
Backend string `mapstructure:"backend"` // deprecated
Enabled []string `mapstructure:"enabled"`
AWSSNS IntegrationAWSSNSConfig `mapstructure:"aws_sns"`
AzureServiceBus IntegrationAzureConfig `mapstructure:"azure_service_bus"`
MQTT IntegrationMQTTConfig `mapstructure:"mqtt"`
GCPPubSub IntegrationGCPConfig `mapstructure:"gcp_pub_sub"`
Kafka IntegrationKafkaConfig `mapstructure:"kafka"`
PostgreSQL IntegrationPostgreSQLConfig `mapstructure:"postgresql"`
AMQP IntegrationAMQPConfig `mapstructure:"amqp"`
} `mapstructure:"integration"`
API struct {
Bind string
CACert string `mapstructure:"ca_cert"`
TLSCert string `mapstructure:"tls_cert"`
TLSKey string `mapstructure:"tls_key"`
PublicHost string `mapstructure:"public_host"`
} `mapstructure:"api"`
ExternalAPI struct {
Bind string
TLSCert string `mapstructure:"tls_cert"`
TLSKey string `mapstructure:"tls_key"`
JWTSecret string `mapstructure:"jwt_secret"`
CORSAllowOrigin string `mapstructure:"cors_allow_origin"`
} `mapstructure:"external_api"`
Branding struct {
Footer string
Registration string
} `mapstructure:"branding"`
} `mapstructure:"application_server"`
JoinServer struct {
Bind string
CACert string `mapstructure:"ca_cert"`
TLSCert string `mapstructure:"tls_cert"`
TLSKey string `mapstructure:"tls_key"`
KEK struct {
ASKEKLabel string `mapstructure:"as_kek_label"`
Set []struct {
Label string `mapstructure:"label"`
KEK string `mapstructure:"kek"`
}
} `mapstructure:"kek"`
} `mapstructure:"join_server"`
Metrics struct {
Timezone string `mapstructure:"timezone"`
Redis struct {
AggregationIntervals []string `mapstructure:"aggregation_intervals"`
MinuteAggregationTTL time.Duration `mapstructure:"minute_aggregation_ttl"`
HourAggregationTTL time.Duration `mapstructure:"hour_aggregation_ttl"`
DayAggregationTTL time.Duration `mapstructure:"day_aggregation_ttl"`
MonthAggregationTTL time.Duration `mapstructure:"month_aggregation_ttl"`
} `mapstructure:"redis"`
Prometheus struct {
EndpointEnabled bool `mapstructure:"endpoint_enabled"`
Bind string `mapstructure:"bind"`
APITimingHistogram bool `mapstructure:"api_timing_histogram"`
} `mapstructure:"prometheus"`
} `mapstructure:"metrics"`
Monitoring struct {
Bind string `mapstructure:"bind"`
PrometheusEndpoint bool `mapstructure:"prometheus_endpoint"`
PrometheusAPITimingHistogram bool `mapstructure:"prometheus_api_timing_histogram"`
HealthcheckEndpoint bool `mapstructure:"healthcheck_endpoint"`
PerDeviceEventLogMaxHistory int64 `mapstructure:"per_device_event_log_max_history"`
} `mapstructure:"monitoring"`
}
Config defines the configuration structure.
var C Config
C holds the global configuration.
type IntegrationAMQPConfig ¶
type IntegrationAMQPConfig struct {
URL string `mapstructure:"url"`
EventRoutingKeyTemplate string `mapstructure:"event_routing_key_template"`
}
IntegrationAMQPConfig holds the AMQP integration configuration.
type IntegrationAWSSNSConfig ¶
type IntegrationAWSSNSConfig struct {
Marshaler string `mapstructure:"marshaler" json:"marshaler"`
AWSRegion string `mapstructure:"aws_region" json:"region"`
AWSAccessKeyID string `mapstructure:"aws_access_key_id" json:"accessKeyID"`
AWSSecretAccessKey string `mapstructure:"aws_secret_access_key" json:"secretAccessKey"`
TopicARN string `mapstructure:"topic_arn" json:"topicARN"`
}
IntegrationAWSSNSConfig holds the AWS SNS integration configuration.
type IntegrationAzureConfig ¶
type IntegrationAzureConfig struct {
Marshaler string `mapstructure:"marshaler" json:"marshaler"`
ConnectionString string `mapstructure:"connection_string" json:"connectionString"`
PublishMode AzurePublishMode `mapstructure:"publish_mode" json:"-"`
PublishName string `mapstructure:"publish_name" json:"publishName"`
}
IntegrationAzureConfig holds the Azure Service-Bus integration configuration.
type IntegrationGCPConfig ¶
type IntegrationGCPConfig struct {
Marshaler string `mapstructure:"marshaler" json:"marshaler"`
CredentialsFile string `mapstructure:"credentials_file" json:"-"`
CredentialsFileBytes []byte `mapstructure:"-" json:"credentialsFile"`
ProjectID string `mapstructure:"project_id" json:"projectID"`
TopicName string `mapstructure:"topic_name" json:"topicName"`
}
IntegrationGCPConfig holds the GCP Pub/Sub integration configuration.
type IntegrationKafkaConfig ¶
type IntegrationKafkaConfig struct {
Brokers []string `mapstructure:"brokers"`
TLS bool `mapstructure:"tls"`
Topic string `mapstructure:"topic"`
EventKeyTemplate string `mapstructure:"event_key_template"`
Username string `mapstructure:"username"`
Password string `mapstructure:"password"`
Mechanism string `mapstructure:"mechanism"`
Algorithm string `mapstructure:"algorithm"`
}
IntegrationKafkaConfig holds the Kafka integration configuration.
type IntegrationMQTTClientConfig ¶
type IntegrationMQTTClientConfig struct {
CACert string `mapstructure:"ca_cert"`
CAKey string `mapstructure:"ca_key"`
ClientCertLifetime time.Duration `mapstructure:"client_cert_lifetime"`
}
IntegrationMQTTClientConfig holds the additional client config.
type IntegrationMQTTConfig ¶
type IntegrationMQTTConfig struct {
Client IntegrationMQTTClientConfig `mapstructure:"client"`
Server string `mapstructure:"server"`
Username string `mapstructure:"username"`
Password string `mapstructure:"password"`
MaxReconnectInterval time.Duration `mapstructure:"max_reconnect_interval"`
QOS uint8 `mapstructure:"qos"`
CleanSession bool `mapstructure:"clean_session"`
ClientID string `mapstructure:"client_id"`
CACert string `mapstructure:"ca_cert"`
TLSCert string `mapstructure:"tls_cert"`
TLSKey string `mapstructure:"tls_key"`
EventTopicTemplate string `mapstructure:"event_topic_template"`
CommandTopicTemplate string `mapstructure:"command_topic_template"`
RetainEvents bool `mapstructure:"retain_events"`
// For backards compatibility
UplinkTopicTemplate string `mapstructure:"uplink_topic_template"`
DownlinkTopicTemplate string `mapstructure:"downlink_topic_template"`
JoinTopicTemplate string `mapstructure:"join_topic_template"`
AckTopicTemplate string `mapstructure:"ack_topic_template"`
ErrorTopicTemplate string `mapstructure:"error_topic_template"`
StatusTopicTemplate string `mapstructure:"status_topic_template"`
LocationTopicTemplate string `mapstructure:"location_topic_template"`
TxAckTopicTemplate string `mapstructure:"tx_ack_topic_template"`
IntegrationTopicTemplate string `mapstructure:"integration_topic_template"`
UplinkRetainedMessage bool `mapstructure:"uplink_retained_message"`
JoinRetainedMessage bool `mapstructure:"join_retained_message"`
AckRetainedMessage bool `mapstructure:"ack_retained_message"`
ErrorRetainedMessage bool `mapstructure:"error_retained_message"`
StatusRetainedMessage bool `mapstructure:"status_retained_message"`
LocationRetainedMessage bool `mapstructure:"location_retained_message"`
TxAckRetainedMessage bool `mapstructure:"tx_ack_retained_message"`
IntegrationRetainedMessage bool `mapstructure:"integration_retained_message"`
}
IntegrationMQTTConfig holds the configuration for the MQTT integration.
type IntegrationPostgreSQLConfig ¶
type IntegrationPostgreSQLConfig struct {
DSN string `json:"dsn"`
MaxOpenConnections int `mapstructure:"max_open_connections"`
MaxIdleConnections int `mapstructure:"max_idle_connections"`
}
IntegrationPostgreSQLConfig holds the PostgreSQL integration configuration.