cfg

package
v0.3.4 Latest Latest
Warning

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

Go to latest
Published: Nov 15, 2023 License: Apache-2.0 Imports: 84 Imported by: 4

README

概述

提供grpc-kit微服务脚手架的通用配置规范,用于初始化框架所需的各个实例,仅允许"pkg/cfg"下的包直接引用"pkg/*"。

避免依赖以及通用性,"pkg/*"除"cfg"外,其他包必须可以独立给外部应用直接引用(非grpc-kit框架)。

术语约定

连接地址
参数 类型 说明 示例
host string 主机IPv4或IPv6地址 127.0.0.1
port int 主机端口号 6379
address string 不包含协议,由主机IP与端口组成 127.0.0.1:6379 或 [fe80::1%lo0]:53 或 unix socket
endpoints []string 由协议、IP、端口组成,多个通过逗号","分割 https://node1:2379,https://node2:2379,https://node3:2379
其他类型
参数 类型 说明 示例
driver string 配置支持的驱动 etcdv3、redis等
enable bool 是否开启这个功能 true、false

配置示例

# https://github.com/grpc-kit/cfg/blob/master/app-sample.yaml

# 基础服务配置
services:
  # 服务注册的前缀,全局统一
  root_path: service
  # 服务注册的空间,全局统一
  namespace: example
  # 服务的代码,设置后不可变更
  service_code: cmdb.v1.commons
  # 接口网关的地址
  api_endpoint: api.grpc-kit.com
  # 服务所监听的grpc地址(如未设置,自动监听在127.0.0.1的随机端口)
  grpc_address: 127.0.0.1:10081
  # 服务所监听的http地址(如未设置,则不开启gateway服务)
  http_address: 127.0.0.1:10080
  # 服务注册,外部网络可连接的grpc地址(一般等同于grpc-address)
  public_address: ""

# 服务注册配置
discover:
  driver: etcdv3
  heartbeat: 15
  endpoints:
    - http://127.0.0.1:2379
  #discover:
  #  tls:
  #    ca_file: /opt/certs/etcd-ca.pem
  #    cert_file: /opt/certs/etcd.pem
  #    key_file: /opt/certs/etcd-key.pem

# 认证鉴权配置
security:
  enable: true
  # 认证:谁在登录
  authentication:
    # 跳过认证的rpc方法
    insecure_rpcs:
      - SearchHosts
    oidc_provider:
      issuer: https://accounts.example.com
      config:
        # 必须验证token.aud是否与client_id相等
        client_id: example
        # 允许的签名算法类别
        supported_signing_algs:
          - RS256
        # 忽略token.aud与client_id的验证
        skip_client_id_check: true
        # 忽略token是否过期的验证
        skip_expiry_check: false
        # 忽略token issuer的验证
        skip_issuer_check: true
    http_users:
      - username: user1
        password: pass1
  # TODO; 鉴权:能做什么
  authorization:

# 关系数据配置
database:
  driver: postgres
  dbname: demo
  user: demo
  password: grpc-kit
  host: 127.0.0.1
  port: 5432
  sslmode: disable
  connect_timeout: 10

# 缓存服务配置
cachebuf:
  enable: true
  driver: redis
  address: 127.0.0.1:6379
  password: ""

# 日志调试配置
debugger:
  enable_pprof: true
  log_level: debug
  log_format: text

# 链路追踪配置
opentracing:
  enable: true
  host: 127.0.0.1
  port: 6831
  
# 事件通道配置
cloudevents:
  protocol: "kafka_sarama"
  kafka_sarama:
    topic: "uptime-test"
    brokers:
      - 127.0.0.1:19092
      - 127.0.0.1:29092
      - 127.0.0.1:39092
    config:
      net:
        tls:
          enable: false
        sasl:
          enable: true
          mechanism: "SCRAM-SHA-256"
          user: "uptime"
          password: "testkey"
      producer:
        required_acks: 1
        return:
          successes: false
          errors: true
      consumer:
        group:
          rebalance:
            strategy: range
        offsets:
          auto_commit:
            enable: true
            interval: 1s
      version: "2.4.0"

# 应用私有配置
independent:
  name: grpc-kit
注册地址说明

在services中所配置的public-address地址是grpc服务,与其他服务之间必须能正常通讯。如果在k8s环境下可考虑设置环境变量GRPC_KIT_PUHLIC_IP把POD IP传递,如:

...
spec:
  template:
    spec:
      containers:
      - args:
        - /opt/service
        - --config
        - /opt/config/app.toml
        env:
        - name: GRPC_KIT_PUHLIC_IP
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: status.podIP
...

Documentation

Overview

Package cfg 提供grpc-kit微服务脚手架的通用配置规范

Index

Constants

View Source
const (
	// AuthenticationTypeBasic 用于http basic认证
	AuthenticationTypeBasic = "basic"
	// AuthenticationTypeBearer 用于jwt认证
	AuthenticationTypeBearer = "bearer"
	// AuthenticationTypeNone 用于指明rpc未使用任何认证
	AuthenticationTypeNone = "none"
	// UsernameAnonymous 当未使用任何认证时的用户名
	UsernameAnonymous = "anonymous"
)
View Source
const (
	// HTTPHeaderRequestID 全局请求ID
	HTTPHeaderRequestID = "X-TR-REQUEST-ID"
	// HTTPHeaderHost 主机头
	HTTPHeaderHost = "Host"
	// HTTPHeaderEtag 文件内容签名
	HTTPHeaderEtag = "Etag"
)

公共标准的 HTTP 请求头名称

View Source
const (
	DatabaseDriverMysql      = "mysql"
	DatabaseDriverPostgresql = "postgres"
)
View Source
const (
	URLStyleAuto          = "auto"
	URLStylePath          = "path"
	URLStyleVirtualHosted = "virtual-hosted"
)
View Source
const (
	ProxyContextHeader proxyContextKey = iota
	ProxyContextURLStyle
)
View Source
const (
	CloudEventsProtocolKafkaSarama = "kafka_sarama"
)
View Source
const (
	// ScopeNameGRPCKit 用于该包产生链路、指标的权威名称
	ScopeNameGRPCKit = "github.com/grpc-kit/pkg"
)

Variables

View Source
var (
	ErrDatabaseNotInit          = errors.New("database not initialize")
	ErrDatabaseNotEnable        = errors.New("database not enable")
	ErrDatabaseNotSupportDriver = errors.New("database driver not support")
	ErrDatabaseParamsMust       = errors.New("database dbname username or password must")
)

SHA256 hash generator function for SCRAM conversation

SHA512 hash generator function for SCRAM conversation

Functions

func NewHTTPTransport added in v0.3.2

func NewHTTPTransport(config HTTPConfig) (*http.Transport, error)

NewHTTPTransport 创建默认的 http transport

func NewTLSConfig added in v0.3.2

func NewTLSConfig(t *TLSConfig) (*tls.Config, error)

NewTLSConfig 根据 tls 配置初始化 tls.Config 实例

Types

type Authentication

type Authentication struct {
	InsecureRPCs []string      `mapstructure:"insecure_rpcs"`
	OIDCProvider *OIDCProvider `mapstructure:"oidc_provider"`
	HTTPUsers    []*BasicAuth  `mapstructure:"http_users"`
}

Authentication 用于认证

type Authorization

type Authorization struct {
	AllowedGroups []string `mapstructure:"allowed_groups"`
}

Authorization 用于鉴权

type BasicAuth

type BasicAuth struct {
	Username string   `mapstructure:"username"`
	Password string   `mapstructure:"password"`
	Groups   []string `mapstructure:"groups"`
}

BasicAuth 用于HTTP基本认证的用户权限定义

type CachebufConfig

type CachebufConfig struct {
	Enable   bool   `mapstructure:"enable"`
	Driver   string `mapstructure:"driver"`
	Address  string `mapstructure:"address"`
	Password string `mapstructure:"password"`
}

CachebufConfig 缓存配置,区别于数据库配置,缓存的数据可以丢失

type CloudEventsConfig

type CloudEventsConfig struct {
	Protocol    string      `mapstructure:"protocol"`
	KafkaSarama KafkaSarama `mapstructure:"kafka_sarama"`
}

CloudEventsConfig cloudevents事件配置

type ConnectionPool

type ConnectionPool struct {
	MaxIdleTime  time.Duration `mapstructure:"max_idle_time"`
	MaxLifeTime  time.Duration `mapstructure:"max_life_time"`
	MaxIdleConns int           `mapstructure:"max_idle_conns"`
	MaxOpenConns int           `mapstructure:"max_open_conns"`
}

ConnectionPool 数据库连接池配置

type DatabaseConfig

type DatabaseConfig struct {
	Enable         bool           `mapstructure:"enable"`
	Driver         string         `mapstructure:"driver"`
	Username       string         `mapstructure:"username"`
	Password       string         `mapstructure:"password"`
	Protocol       string         `mapstructure:"protocol"`
	Address        string         `mapstructure:"address"`
	DBName         string         `mapstructure:"dbname"`
	Parameters     string         `mapstructure:"parameters"`
	ConnectionPool ConnectionPool `mapstructure:"connection_pool"`
	// contains filtered or unexported fields
}

DatabaseConfig 数据库设置,指关系数据库,数据不允许丢失,如postgres、mysql

type DebuggerConfig

type DebuggerConfig struct {
	EnablePprof bool   `mapstructure:"enable_pprof"`
	LogLevel    string `mapstructure:"log_level"`
	LogFormat   string `mapstructure:"log_format"`
}

DebuggerConfig 日志配置,用于设定服务启动后日志输出级别格式等

type DiscoverConfig

type DiscoverConfig struct {
	Driver    string     `mapstructure:"driver"`
	Endpoints []string   `mapstructure:"endpoints"`
	TLS       *TLSConfig `mapstructure:"tls" json:",omitempty"`
	Heartbeat int64      `mapstructure:"heartbeat"`
}

DiscoverConfig 服务注册,服务启动后如何汇报自身

type ExporterEnable added in v0.3.3

type ExporterEnable struct {
	OTLP       *bool `mapstructure:"otlp"`
	OTLPHTTP   *bool `mapstructure:"otlphttp"`
	Logging    *bool `mapstructure:"logging"`
	Prometheus *bool `mapstructure:"prometheus"`
}

ExporterEnable 配置是否启用特定 exporter

type ExportersConfig added in v0.3.3

type ExportersConfig struct {
	OTLPGRPC   *OTLPGRPCConfig `mapstructure:"otlp"`
	OTLPHTTP   *OTLPHTTPConfig `mapstructure:"otlphttp"`
	Prometheus *struct {
		MetricsURLPath string `mapstructure:"metrics_url_path"`
	}
	Logging *struct {
		PrettyPrint     bool   `mapstructure:"pretty_print"`
		MetricsFilePath string `mapstructure:"metrics_file_path"`
		TracesFilePath  string `mapstructure:"traces_file_path"`
	} `mapstructure:"logging"`
}

ExportersConfig 可观测遥感数据导出目标地址

type HTTPConfig added in v0.3.2

type HTTPConfig struct {
	// 允许你自定义 TLS 配置,以满足特定的需求,例如指定根证书、跳过证书验证、设置密码套件等
	TLSClientConfig TLSConfig `mapstructure:"tls_client_config" yaml:"tls_client_config"`

	// 可以控制在建立 TLS 握手过程中等待的最大时间,客户端和服务器之间进行密钥交换和协商加密参数等操作
	// 如果在指定的超时时间内未完成握手,客户端可以终止连接或采取其他处理方式
	TLSHandshakeTimeout time.Duration `mapstructure:"tls_handshake_timeout" yaml:"tls_handshake_timeout"`

	// HTTP 的 keep-alive 是一种机制,允许客户端在单个 TCP 连接上发送多个 HTTP 请求,而无需为每个请求都建立和关闭连接
	// 是否禁用 HTTP 的 keep-alive 功能,这样每个 HTTP 请求都会使用一个新的连接,意味着每次请求都需要建立和关闭连接
	DisableKeepAlives bool `mapstructure:"disable_keep_alives" yaml:"disable_keep_alives"`

	// 如果开启则请求中不会包含 "Accept-Encoding: gzip" 的请求头,即禁止了请求压缩,这意味着即使服务端返回的响应使用了gzip压缩,Transport也不会自动解压缩响应体
	DisableCompression bool `mapstructure:"disable_compression" yaml:"disable_compression"`

	// 可以控制在空闲连接池中保持的最大连接数,超过这个数量的空闲连接将被关闭
	// 通过使用 keep-alive 机制,客户端可以在多次请求之间重用已经建立的连接,以减少每次请求的连接建立和断开的开销
	MaxIdleConns int `mapstructure:"max_idle_conns" yaml:"max_idle_conns"`

	// 可以针对每个主机控制保持的最大空闲连接数,这可以使每个主机具有独立的连接池,而不是使用全局的连接池
	// 每个主机可以独立地管理和复用空闲连接,以优化连接的使用和性能
	MaxIdleConnsPerHost int `mapstructure:"max_idle_conns_per_host" yaml:"max_idle_conns_per_host"`

	// 用于可选地限制每个主机的总连接数,包括处于拨号、活动和空闲状态的连接
	MaxConnsPerHost int `mapstructure:"max_conns_per_host" yaml:"max_conns_per_host"`

	// 空闲连接的超时时间,指定空闲连接在关闭之前保持的最长时间
	IdleConnTimeout time.Duration `mapstructure:"idle_conn_timeout" yaml:"idle_conn_timeout"`

	// 客户端在发送请求后等待服务器响应头的时间,如果在指定的超时时间内未收到响应头,客户端可以终止连接或采取其他处理方式
	ResponseHeaderTimeout time.Duration `mapstructure:"response_header_timeout" yaml:"response_header_timeout"`

	// 用于在完全发送请求头后,等待服务器首次响应头的时间
	ExpectContinueTimeout time.Duration `mapstructure:"expect_continue_timeout" yaml:"expect_continue_timeout"`

	// 可以控制接收和处理服务器响应头的大小
	// 响应头中包含了诸如状态码、响应头字段等信息,如果服务器的响应头超过了指定的最大字节数,那么将会触发一个错误,导致请求失败
	MaxResponseHeaderBytes int64 `mapstructure:"max_response_header_bytes" yaml:"max_response_header_bytes"`

	// 用于控制写缓冲区大小,它是用于临时存储要发送到传输层的数据的内存区域
	// 通过使用写缓冲区可以减少实际的写操作次数,提高写入数据的效率,较大的写缓冲区可以在一次写操作中发送更多的数据,减少了频繁的系统调用和网络开销
	// 设置为 0,则会使用默认值(目前为4KB)
	WriteBufferSize int `mapstructure:"write_buffer_size" yaml:"write_buffer_size"`

	// 用于控制读缓冲区大小,它是用于临时存储从传输层读取的数据的内存区域
	// 通过使用读缓冲区可以减少实际的读操作次数,提高从传输层读取数据的效率,较大的读缓冲区可以一次性读取更多的数据,减少了频繁的系统调用和网络开销
	// 设置为 0,则会使用默认值(目前为4KB)
	ReadBufferSize int `mapstructure:"read_buffer_size" yaml:"read_buffer_size"`

	// 在配置了 Dial、DialTLS、DialContext 函数或 TLSClientConfig 时,会禁用 HTTP/2
	// 这时可以配置开启,也会尝试使用 HTTP/2 协议进行升级,不过仍然需要确保服务器支持 HTTP/2 协议才能成功升级
	ForceAttemptHTTP2 bool `mapstructure:"force_attempt_http2" yaml:"force_attempt_http2"`
}

HTTPConfig 用于控制客户端通过 http 协议连接服务端的一些能力

type IDTokenClaims

type IDTokenClaims struct {
	jwt.RegisteredClaims
	Email           string            `json:"email"`
	EmailVerified   bool              `json:"email_verified"`
	Groups          []string          `json:"groups"`
	FederatedClaims map[string]string `json:"federated_claims"`
	Tenant          string            `json:"tenant"`
}

IDTokenClaims 用于框架jwt的数据结构

type KafkaSarama

type KafkaSarama struct {
	Brokers []string     `mapstructure:"brokers"`
	Topic   string       `mapstructure:"topic"`
	Config  SaramaConfig `mapstructure:"config"`
}

KafkaSarama xx

type LocalConfig

type LocalConfig struct {
	Services    *ServicesConfig    `json:",omitempty"` // 基础服务配置
	Discover    *DiscoverConfig    `json:",omitempty"` // 服务注册配置
	Security    *SecurityConfig    `json:",omitempty"` // 认证鉴权配置
	Database    *DatabaseConfig    `json:",omitempty"` // 关系数据配置
	Cachebuf    *CachebufConfig    `json:",omitempty"` // 缓存服务配置
	Debugger    *DebuggerConfig    `json:",omitempty"` // 日志调试配置
	Objstore    *ObjstoreConfig    `json:",omitempty"` // 对象存储配置
	Observables *ObservablesConfig `json:",omitempty"` // 可观测性配置
	CloudEvents *CloudEventsConfig `json:",omitempty"` // 公共事件配置
	Independent interface{}        `json:",omitempty"` // 应用私有配置
	// contains filtered or unexported fields
}

LocalConfig 本地配置,全局微服务配置结构

func New

func New(v *viper.Viper) (*LocalConfig, error)

New 用于初始化获取全局配置实例

func (*LocalConfig) AuthenticationTypeFrom

func (c *LocalConfig) AuthenticationTypeFrom(ctx context.Context) (string, bool)

AuthenticationTypeFrom 用于获取当前会话的认证方式

func (*LocalConfig) Deregister

func (c *LocalConfig) Deregister() error

Deregister 用于撤销注册中心上的服务信息

func (*LocalConfig) GetClientDialOption

func (c *LocalConfig) GetClientDialOption(customOpts ...grpc.DialOption) []grpc.DialOption

GetClientDialOption 获取客户端连接的设置

func (*LocalConfig) GetClientStreamInterceptor

func (c *LocalConfig) GetClientStreamInterceptor() []grpc.StreamClientInterceptor

GetClientStreamInterceptor 获取客户端默认流拦截器

func (*LocalConfig) GetClientUnaryInterceptor

func (c *LocalConfig) GetClientUnaryInterceptor() []grpc.UnaryClientInterceptor

GetClientUnaryInterceptor 获取客户端默认一元拦截器

func (*LocalConfig) GetCloudEvents

func (c *LocalConfig) GetCloudEvents() (eventclient.Client, error)

GetCloudEvents 用于获取 cloudevents 连接客户端

func (*LocalConfig) GetDatabase

func (c *LocalConfig) GetDatabase() (*sql.DB, error)

GetDatabase 获取数据库实例

func (*LocalConfig) GetIndependent

func (c *LocalConfig) GetIndependent(t interface{}) error

GetIndependent 用于获取各个微服务独立的配置

func (*LocalConfig) GetLogger

func (c *LocalConfig) GetLogger() *logrus.Entry

GetLogger 用于获取全局日志

func (*LocalConfig) GetObjstoreBucket added in v0.3.2

func (c *LocalConfig) GetObjstoreBucket() (ObjstoreBucket, error)

GetObjstoreBucket 用于获取对象存储

func (*LocalConfig) GetObjstoreBucketReader added in v0.3.2

func (c *LocalConfig) GetObjstoreBucketReader() (ObjstoreBucketReader, error)

GetObjstoreBucketReader 用于获取对象存储

func (*LocalConfig) GetObjstoreMinioClient added in v0.3.2

func (c *LocalConfig) GetObjstoreMinioClient() (*minio.Client, error)

GetObjstoreMinioClient 获取内部 minio 客户端连接

func (*LocalConfig) GetRPCClient

func (c *LocalConfig) GetRPCClient() (*rpc.Client, error)

GetRPCClient 获取rpc客户端实例,TODO;(未完善,当前主要解耦框架模版)

func (*LocalConfig) GetRPCServer

func (c *LocalConfig) GetRPCServer() (*rpc.Server, error)

GetRPCServer 获取rpc服务端实例,TODO;(未完善,当前主要解耦框架模版)

func (*LocalConfig) GetServiceName

func (c *LocalConfig) GetServiceName() string

GetServiceName 用于获取微服务名称

func (*LocalConfig) GetStreamInterceptor

func (c *LocalConfig) GetStreamInterceptor(interceptors ...grpc.StreamServerInterceptor) grpc.ServerOption

GetStreamInterceptor xx

func (*LocalConfig) GetTraceID added in v0.3.3

func (c *LocalConfig) GetTraceID(ctx context.Context) string

GetTraceID 用于获取 opentelemetry 下的 trace id

func (*LocalConfig) GetUnaryInterceptor

func (c *LocalConfig) GetUnaryInterceptor(interceptors ...grpc.UnaryServerInterceptor) grpc.ServerOption

GetUnaryInterceptor 用于获取gRPC的一元拦截器

func (*LocalConfig) GroupsFrom

func (c *LocalConfig) GroupsFrom(ctx context.Context) ([]string, bool)

GroupsFrom 用于获取当前会话的用户组列表

func (*LocalConfig) HTTPHandler added in v0.3.3

func (c *LocalConfig) HTTPHandler(handler http.Handler) http.Handler

HTTPHandler 用于植入 otelhttp 链路跟踪中间件

func (*LocalConfig) HTTPHandlerFunc added in v0.3.3

func (c *LocalConfig) HTTPHandlerFunc(handler http.HandlerFunc) http.Handler

HTTPHandlerFunc 功能同 HTTPHandler

func (*LocalConfig) IDTokenFrom

func (c *LocalConfig) IDTokenFrom(ctx context.Context) (IDTokenClaims, bool)

IDTokenFrom 用于获取当前会话的IDToken

func (*LocalConfig) Init

func (c *LocalConfig) Init() error

Init 用于根据配置初始化各个实例,初始化需注意空指针判断

func (*LocalConfig) InitCloudEvents

func (c *LocalConfig) InitCloudEvents() error

InitCloudEvents 初始化 cloudevents 数据实例

func (*LocalConfig) InitDatabase

func (c *LocalConfig) InitDatabase() error

InitDatabase 用于初始化数据库

func (*LocalConfig) InitDebugger

func (c *LocalConfig) InitDebugger() error

InitDebugger 用于初始化日志实例

func (*LocalConfig) InitObjstore added in v0.3.2

func (c *LocalConfig) InitObjstore() error

InitObjstore 初始化对象存储

func (*LocalConfig) InitObservables added in v0.3.3

func (c *LocalConfig) InitObservables() error

InitObservables 初始化可观测性配置

func (*LocalConfig) InitOpentracing

func (c *LocalConfig) InitOpentracing() (interface{}, error)

InitOpentracing 初始化全局分布式链路追踪

func (*LocalConfig) InitPrometheus added in v0.3.3

func (c *LocalConfig) InitPrometheus() error

InitPrometheus 用于初始化可观测性

func (*LocalConfig) InitRPCConfig

func (c *LocalConfig) InitRPCConfig() error

InitRPCConfig 用于初始化rpc客户端、服务端配置

func (*LocalConfig) InitSecurity

func (c *LocalConfig) InitSecurity() error

InitSecurity 初始化认证

func (*LocalConfig) InitServices

func (c *LocalConfig) InitServices() error

InitServices 用于基础服务初始化配置检查

func (*LocalConfig) Register

Register 用于登记服务信息至注册中心

func (*LocalConfig) UsernameFrom

func (c *LocalConfig) UsernameFrom(ctx context.Context) (string, bool)

UsernameFrom 用于获取当前会话的用户名

func (*LocalConfig) WithAuthenticationType

func (c *LocalConfig) WithAuthenticationType(parent context.Context, authType string) context.Context

WithAuthenticationType 用于设置当前会话的认证方式

func (*LocalConfig) WithGroups

func (c *LocalConfig) WithGroups(parent context.Context, groups []string) context.Context

WithGroups 用于设置当前会话用户属于组

func (*LocalConfig) WithIDToken

func (c *LocalConfig) WithIDToken(parent context.Context, token IDTokenClaims) context.Context

WithIDToken 用于设置当前会话的IDToken

func (*LocalConfig) WithUsername

func (c *LocalConfig) WithUsername(parent context.Context, username string) context.Context

WithUsername 用于设置当前会话的用户名

type OIDCConfig

type OIDCConfig struct {
	ClientID             string   `mapstructure:"client_id"`
	SupportedSigningAlgs []string `mapstructure:"supported_signing_algs"`
	SkipClientIDCheck    bool     `mapstructure:"skip_client_id_check"`
	SkipExpiryCheck      bool     `mapstructure:"skip_expiry_check"`
	SkipIssuerCheck      bool     `mapstructure:"skip_issuer_check"`
	InsecureSkipVerify   bool     `mapstructure:"insecure_skip_verify"`
}

OIDCConfig 用于OIDC验证相关配置

type OIDCProvider

type OIDCProvider struct {
	Issuer string      `mapstructure:"issuer"`
	Config *OIDCConfig `mapstructure:"config"`
}

OIDCProvider 用于OIDC认证提供方配置

type OTLPGRPCConfig added in v0.3.3

type OTLPGRPCConfig struct {
	// 上报数据至服务端地址,如:http://localhost:4317
	Endpoint string            `mapstructure:"endpoint"`
	Headers  map[string]string `mapstructure:"headers"`
}

OTLPGRPCConfig 使用 otlp grpc 协议上报数据

type OTLPHTTPConfig added in v0.3.3

type OTLPHTTPConfig struct {
	// 上报数据至服务端地址,如:http://localhost:4318
	Endpoint string            `mapstructure:"endpoint"`
	Headers  map[string]string `mapstructure:"headers"`
	// 保持格式同
	// https://github.com/open-telemetry/opentelemetry-collector/blob/main/receiver/otlpreceiver/config.go
	TracesURLPath  string `mapstructure:"traces_url_path,omitempty"`
	MetricsURLPath string `mapstructure:"metrics_url_path,omitempty"`
	LogsURLPath    string `mapstructure:"logs_url_path,omitempty"`
}

OTLPHTTPConfig 使用 otlp http 协议上报数据

type ObjstoreAttributes added in v0.3.2

type ObjstoreAttributes struct {
	// ETag 对象文件内容的 md5 值
	ETag string `json:"etag"`

	// LastModified 对象文件最近被修改时间
	LastModified time.Time `json:"last_modified"`

	// Size 对象文件大小,单位 bytes
	Size int64 `json:"size"`

	// UserMetadata 用户额外定义该对象的元数据,以 "x-amz-meta-*" 请求头返回
	UserMetadata map[string]string `json:"user_metadata"`

	// UserTags 用户定义对象文件关联的标签
	UserTags map[string]string `json:"user_tags"`

	// VersionID 用于说明本次文件版本号
	VersionID string `json:"version_id"`
}

ObjstoreAttributes 对象属性信息,如:last_modified、etag 等

type ObjstoreBucket added in v0.3.2

type ObjstoreBucket interface {
	io.Closer
	ObjstoreBucketReader

	// Name 获取默认的 bucket 名称
	Name() string

	// Upload 用于上传对象到默认的 bucket 里
	Upload(ctx context.Context, objectKey string, r io.Reader) (ObjstoreAttributes, error)

	// Delete 用于删除对象在默认的 bucket 里
	Delete(ctx context.Context, objectKey string) error

	// CopyTo 用于拷贝对象在默认 bucket 里
	CopyTo(ctx context.Context, srcObjectKey, dstObjectKey string) (ObjstoreAttributes, error)
}

ObjstoreBucket 抽象化包装,以简化使用,读写操作权限

type ObjstoreBucketReader added in v0.3.2

type ObjstoreBucketReader interface {
	// Get 用于获取默认 bucket 的对象内容
	Get(ctx context.Context, objectKey string) (io.ReadCloser, ObjstoreAttributes, error)

	// Iter 用于遍历默认 bucket 里的对象文件
	Iter(ctx context.Context, dir string, f func(string) error) error

	// GetRange 用于获取默认 bucket 中对象指定位置的内容
	GetRange(ctx context.Context, objectKey string, start, end int64) (io.ReadCloser, ObjstoreAttributes, error)

	// Exists 用于判断默认 bucket 是否存在该对象
	Exists(ctx context.Context, objectKey string) (bool, error)

	// Attributes 用于获取默认 bucket 中对象的额外属性
	Attributes(ctx context.Context, objectKey string) (ObjstoreAttributes, error)

	// IsObjNotFoundErr 错误是否为查询的对象不存在
	IsObjNotFoundErr(err error) bool
}

ObjstoreBucketReader 抽象化包装,以简化使用,只读操作权限

type ObjstoreConfig added in v0.3.2

type ObjstoreConfig struct {
	Enable bool     `mapstructure:"enable"`
	Type   string   `mapstructure:"type"`
	Config S3Config `mapstructure:"config"`
	// contains filtered or unexported fields
}

ObjstoreConfig 对象存储相关配置

func (*ObjstoreConfig) BucketClient added in v0.3.2

func (o *ObjstoreConfig) BucketClient(logger *logrus.Entry) (ObjstoreBucket, error)

BucketClient 获取对象存储客户端实例

type ObservablesConfig added in v0.3.3

type ObservablesConfig struct {

	// 全局是否启动可观测性,默认启用
	Enable *bool `mapstructure:"enable"`

	// 首次初始化后配置默认值
	Telemetry *TelemetryConfig `mapstructure:"telemetry"`

	// 可观测性数据上报服务地址
	Exporters *ExportersConfig `mapstructure:"exporters"`
	// contains filtered or unexported fields
}

ObservablesConfig 用于客观性配置

type ProxyBucket added in v0.3.2

type ProxyBucket struct {
	// contains filtered or unexported fields
}

ProxyBucket xx

func (*ProxyBucket) Attributes added in v0.3.2

func (b *ProxyBucket) Attributes(ctx context.Context, objectKey string) (ObjstoreAttributes, error)

Attributes 用于获取默认 bucket 中对象的额外属性

func (*ProxyBucket) Close added in v0.3.2

func (b *ProxyBucket) Close() error

Close 释放资源

func (*ProxyBucket) CopyTo added in v0.3.2

func (b *ProxyBucket) CopyTo(ctx context.Context, srcObjectKey, dstObjectKey string) (ObjstoreAttributes, error)

CopyTo 用于拷贝对象在默认 bucket 里

func (*ProxyBucket) Delete added in v0.3.2

func (b *ProxyBucket) Delete(ctx context.Context, objectKey string) error

Delete 用于删除对象在默认的 bucket 里

func (*ProxyBucket) Exists added in v0.3.2

func (b *ProxyBucket) Exists(ctx context.Context, objectKey string) (bool, error)

Exists 用于判断默认 bucket 是否存在该对象

func (*ProxyBucket) Get added in v0.3.2

Get 用于获取默认 bucket 的对象内容

func (*ProxyBucket) GetRange added in v0.3.2

func (b *ProxyBucket) GetRange(ctx context.Context, objectKey string, start, end int64) (io.ReadCloser, ObjstoreAttributes, error)

GetRange 用于获取默认 bucket 中对象指定位置的内容

func (*ProxyBucket) IsObjNotFoundErr added in v0.3.2

func (b *ProxyBucket) IsObjNotFoundErr(err error) bool

IsObjNotFoundErr 错误是否为查询的对象不存在

func (*ProxyBucket) Iter added in v0.3.2

func (b *ProxyBucket) Iter(ctx context.Context, dir string, f func(string) error) error

Iter 用于遍历默认 bucket 里的对象文件

func (*ProxyBucket) Name added in v0.3.2

func (b *ProxyBucket) Name() string

Name 获取默认的 bucket 名称

func (*ProxyBucket) Upload added in v0.3.2

func (b *ProxyBucket) Upload(ctx context.Context, objectKey string, r io.Reader) (ObjstoreAttributes, error)

Upload 用于上传对象到默认的 bucket 里

type S3Bucket added in v0.3.2

type S3Bucket struct {
	// contains filtered or unexported fields
}

S3Bucket 用于实现 ObjstoreBucket 简化对象存储接口的使用

func (*S3Bucket) Attributes added in v0.3.2

func (b *S3Bucket) Attributes(ctx context.Context, objectkey string) (ObjstoreAttributes, error)

Attributes 用于获取默认 bucket 中对象的额外属性

func (*S3Bucket) Close added in v0.3.2

func (b *S3Bucket) Close() error

Close 释放资源

func (*S3Bucket) CopyTo added in v0.3.2

func (b *S3Bucket) CopyTo(ctx context.Context, srcObjectKey, dstObjectKey string) (ObjstoreAttributes, error)

CopyTo 用于拷贝同 bucket 下的对象文件,对象名不以 '/' 开头

func (*S3Bucket) Delete added in v0.3.2

func (b *S3Bucket) Delete(ctx context.Context, objectKey string) error

Delete 用于删除对象在默认的 bucket 里

func (*S3Bucket) Exists added in v0.3.2

func (b *S3Bucket) Exists(ctx context.Context, objectKey string) (bool, error)

Exists 用于判断默认 bucket 是否存在该对象Exists 用于判断默认 bucket 是否存在该对象

func (*S3Bucket) Get added in v0.3.2

func (b *S3Bucket) Get(ctx context.Context, objectKey string) (io.ReadCloser, ObjstoreAttributes, error)

Get 用于获取默认 bucket 的对象内容

func (*S3Bucket) GetRange added in v0.3.2

func (b *S3Bucket) GetRange(ctx context.Context, objectKey string, start, end int64) (io.ReadCloser, ObjstoreAttributes, error)

GetRange 用于获取默认 bucket 中对象指定位置的内容

func (*S3Bucket) IsObjNotFoundErr added in v0.3.2

func (b *S3Bucket) IsObjNotFoundErr(err error) bool

IsObjNotFoundErr 判断释放为对象不存在

func (*S3Bucket) Iter added in v0.3.2

func (b *S3Bucket) Iter(ctx context.Context, dir string, f func(string) error) error

Iter 用于遍历默认 bucket 里的对象

func (*S3Bucket) Name added in v0.3.2

func (b *S3Bucket) Name() string

Name 获取默认的 bucket 名称

func (*S3Bucket) Upload added in v0.3.2

func (b *S3Bucket) Upload(ctx context.Context, objectKey string, r io.Reader) (ObjstoreAttributes, error)

Upload 用于上传对象到默认的 bucket 里

type S3Config added in v0.3.2

type S3Config struct {
	Bucket             string            `mapstructure:"bucket" yaml:"bucket"`
	Endpoint           string            `mapstructure:"endpoint" yaml:"endpoint"`
	Region             string            `mapstructure:"region" yaml:"region"`
	AccessKey          string            `mapstructure:"access_key" yaml:"access_key"`
	Insecure           bool              `mapstructure:"insecure" yaml:"insecure"`
	SecretKey          string            `mapstructure:"secret_key" yaml:"secret_key"`
	SessionToken       string            `mapstructure:"session_token" yaml:"session_token"`
	PutUserMetadata    map[string]string `mapstructure:"put_user_metadata" yaml:"put_user_metadata"`
	PutUserTags        map[string]string `mapstructure:"put_user_tags" yaml:"put_user_tags"`
	HTTPConfig         HTTPConfig        `mapstructure:"http_config" yaml:"http_config"`
	SignatureVersion   string            `mapstructure:"signature_version" yaml:"signature_version"`
	ListObjectsVersion string            `mapstructure:"list_objects_version" yaml:"list_objects_version"`
	BucketLookupType   string            `mapstructure:"bucket_lookup_type" yaml:"bucket_lookup_type"`
	PartSize           uint64            `mapstructure:"part_size" yaml:"part_size"`
	SSEConfig          SSEConfig         `mapstructure:"sse_config" yaml:"sse_config"`
}

S3Config 对象存储 S3 的标准配置

type SSEConfig added in v0.3.2

type SSEConfig struct {
	Type                 string            `mapstructure:"type" yaml:"type"`
	KMSKeyID             string            `mapstructure:"kms_key_id" yaml:"kms_key_id"`
	KMSEncryptionContext map[string]string `mapstructure:"kms_encryption_context" yaml:"kms_encryption_context"`
	EncryptionKey        string            `mapstructure:"encryption_key" yaml:"encryption_key"`
}

SSEConfig 用于配置对象存储服务端加密 https://docs.aws.amazon.com/kms/latest/developerguide/services-s3.html#s3-encryption-context

type SaramaConfig

type SaramaConfig struct {
	Net struct {
		// 默认:5
		MaxOpenRequests int `mapstructure:"max_open_requests"`

		// 以下默认:30s
		DialTimeout  time.Duration `mapstructure:"dial_timeout"`
		ReadTimeout  time.Duration `mapstructure:"read_timeout"`
		WriteTimeout time.Duration `mapstructure:"write_timeout"`

		TLS struct {
			// 默认:false
			Enable bool `mapstructure:"enable"`
		} `mapstructure:"tls"`

		SASL struct {
			Enable    bool   `mapstructure:"enable"`
			Mechanism string `mapstructure:"mechanism"`
			User      string `mapstructure:"user"`
			Password  string `mapstructure:"password"`
		} `mapstructure:"sasl"`

		KeepAlive time.Duration `mapstructure:"keep_alive"`
	} `mapstructure:"net"`

	Metadata struct {
		// 获取元数据的策略
		Retry struct {
			// 当集群处于leader选举时最大重试次数,默认:3
			Max int `mapstructure:"max"`
			// 当集群处于leader选举重试的等扽时间,默认:250ms
			Backoff time.Duration `mapstructure:"backoff"`
		} `mapstructure:"retry"`

		// 后台与集群同步metadata的间隔,默认: 10m
		RefreshFrequency time.Duration `mapstructure:"refresh_frequency"`

		// 是否为所有topic维护元数据,默认: true
		Full bool `mapstructure:"full"`

		// 等待metadata响应的超时时间,默认禁用表示失败则继续重试
		// Net.[Dial|Read]Timeout * BrokerCount * (Metadata.Retry.Max + 1) + Metadata.Retry.Backoff * Metadata.Retry.Max
		Timeout time.Duration `mapstructure:"timeout"`

		// 如果提供的topic不存在是否允许自动创建(前提是集群配置可允许该操作),默认:true
		AllowAutoTopicCreation bool `mapstructure:"allow_auto_topic_creation"`
	} `mapstructure:"metadata"`

	// 生产者相关配置
	Producer struct {
		// 允许的最大消息大小,最好等于集群配置的:message.max.bytes,默认:1000000
		MaxMessageBytes int `mapstructure:"max_message_bytes"`

		// 消息生产被集群接收的策略,主要影响是否会丢消息与性能,默认:1
		// 设置为0: 生产者不等扽集群的响应,继续下一条
		// 设置为1: 生成者等待leader响应,然后在继续下一条
		// 设置为-1: 生产者必须等待所有"in-sync"副本响应完成,继续下一条,这个副本由: min.insync.replicas 决定
		RequiredAcks int16 `mapstructure:"required_acks"`

		// 生产者等扽响应的最长时间,当RequiredAcks设置大于1时才有效,等同于`request.timeout.ms`,默认:10s
		Timeout time.Duration `mapstructure:"timeout"`

		// 生产的消息使用的压缩算法,默认不压缩,默认:0
		Compression int8 `mapstructure:"compression"`

		// 压缩的等级,依赖具体压缩算法
		CompressionLevel int `mapstructure:"commpression_level"`

		// 如果启用,生产者将确保每个消息只写入一个副本。
		Idempotent bool `mapstructure:"idempotent"`

		// 消息响应成功或失败是否写入channel里,如果写入则必须被消费,否则可能出现死锁
		Return struct {
			// 成功的消息是否记录,默认:false
			Successes bool `mapstructure:"successes"`
			// 失败的消息是否记录,默认:true
			Errors bool `mapstructure:"errors"`
		} `mapstructure:"return"`

		// 生产者达到以下阈值时触发打包消息发送至集群
		Flush struct {
			// 最大值被 sarama.MaxRequestSiz 限制,值:100 * 1024 * 1024
			Bytes int `mapstructure:"bytes"`
			// 消息数量阈值,最大限制通过以下MaxMessages控制
			Messages int `mapstructure:"messages"`
			// 等待时间阈值
			Frequency time.Duration `mapstructure:"frequency"`
			// 在单一请求broker时允许的最大消息数,设置为0则不限制
			MaxMessages int `mapstructure:"max_messages"`
		} `mapstructure:"flush"`

		// 生产消息失败的重试策略
		Retry struct {
			// 最大重试次数,等同于jvm的:message.send.max.retries,默认:3
			Max int `mapstructure:"max"`
			// 重试失败之间等待间隔,等同于jvm的:retry.backoff.ms,默认值:100ms
			Backoff time.Duration `mapstructure:"backoff"`
		} `mapstructure:"retry"`
	} `mapstructure:"producer"`

	// 消费者相关配置
	Consumer struct {
		Group struct {
			Session struct {
				// 当broker端未收到消费者的心跳包,超过该时间间隔,则broker认为该消费者离线,将进行重均衡,默认:10s
				// 该值必须在broker配置`group.min.session.timeout.ms`与`group.max.session.timeout.ms`之间
				Timeout time.Duration `mapstructure:"timeout"`
			} `mapstructure:"session"`
			Heartbeat struct {
				// kafka协调者预期的心跳间隔,用于确保消费者session处于活跃状态,值必须小于session.timeout,默认:3s
				// 一般建议设置为session.timeout的3分之一
				Interval time.Duration `mapstructure:"interval"`
			} `mapstructure:"heartbeat"`
			Rebalance struct {
				// topic分区分配给消费者的策略,支持:range, roundrobin, sticky,默认:range
				// range: 标识使用范围分区分配策略的策略
				// roundrobin: 标识使用循环分区分配策略的策略
				// sticky: 标识使用粘性分区分配策略的策略
				Strategy string `mapstructure:"strategy"`
				// 重均衡开始后,消费者加入群组的最大允许时间,默认:60s
				Timeout time.Duration `mapstructure:"timeout"`

				Retry struct {
					// 最大重试次数,默认:4
					Max int `mapstructure:"max"`
					// 重试失败之间等待间隔,默认:2s
					Backoff time.Duration `mapstructure:"backoff"`
				} `mapstructure:"retry"`
			} `mapstructure:"rebalance"`
		} `mapstructure:"group"`

		// 读取分区失败的重试
		Retry struct {
			// 重试失败之间等待间隔,默认:2s
			Backoff time.Duration `mapstructure:"backoff"`
		} `mapstructure:"retry"`

		// 控制每个请求所拉取数据的大小,单位bytes
		Fetch struct {
			// 必须等待的最小消息大小,不要设置为0,等同于jvm `fetch.min.bytes`,默认:1
			Min int32 `mapstructure:"min"`
			// 每请求从broker获取的消息大小,默认:1MB
			// 尽量大于你消息的大部分大小,否则还要做额外的切割,等同于jvm `fetch.message.max.bytes`
			Default int32 `mapstructure:"default"`
			// 每请求可最大获取的消息大小,值为0表示不限制,等同于jvm `fetch.message.max.bytes`,默认:0
			Max int32 `mapstructure:"max"`
		} `mapstructure:"fetch"`

		// broker在等待消息达到 Consumer.Fetch.Min 大小的最大时间,不要设置为0,默认:250ms
		// 建议在 100-500ms,等同于jvm `fetch.wait.max.ms`
		MaxWaitTime time.Duration `mapstructure:"max_wait_time"`

		// 消费者为用户处理消息所需的最长时间,如果写入消息通道所需的时间超过此时间,则该分区将停止获取更多消息,直到可以再次继续。
		// 由于消息通道已缓冲,因此实际宽限时间为 (MaxProcessingTime * ChannelBufferSize),默认:100ms
		MaxProcessingTime time.Duration `mapstructure:"max_processing_time"`

		// 消息响应成功或失败是否写入channel里,如果写入则必须被消费,否则可能出现死锁
		Return struct {
			// 失败的消息是否记录,默认:false
			Errors bool `mapstructure:"errors"`
		} `mapstructure:"return"`

		// 控制如何提交消费offset
		Offsets struct {
			AutoCommit struct {
				// 是否自动更新,默认:true
				Enable bool `mapstructure:"enable"`
				// 自动更新频率,默认:1s
				Interval time.Duration `mapstructure:"interval"`
			} `mapstructure:"auto_commit"`

			// OffsetNewest=-1 代表访问 commit 位置的下一条消息
			// OffsetOldest=-2 消费者可以访问到的 topic 里的最早的消息
			Initial   int64         `mapstructure:"initial"`
			Retention time.Duration `mapstructure:"retention"`

			// 提交offset失败的重试
			Retry struct {
				// 最大重试次数,默认:3
				Max int `mapstructure:"max"`
			} `mapstructure:"retry"`
		} `mapstructure:"offsets"`

		// 消费隔离级别,ReadUncommitted 或 ReadCommitted,默认:ReadUncommitted
		// ReadUncommitted: 可以读取到未提交的数据(报错终止前的数据)
		// ReadCommitted: 生产者已提交的数据才能读取到
		IsolationLevel int8 `mapstructure:"isolation_level"`
	} `mapstructure:"consumer"`

	// 标识该消费者
	ClientID string `mapstructure:"client_id"`
	// 机柜标识,见 'broker.rack'
	RackID string `mapstructure:"rack_id"`
	// 默认:256
	ChannelBufferSize int    `mapstructure:"chnnel_buffer_size"`
	Version           string `mapstructure:"version"`
}

SaramaConfig 用于kafka客户端配置,结构等同于sarama类库 https://pkg.go.dev/github.com/Shopify/sarama#Config

func (*SaramaConfig) Parse

func (s *SaramaConfig) Parse() *sarama.Config

Parse 解析为 https://pkg.go.dev/github.com/Shopify/sarama#Config

type SecurityConfig

type SecurityConfig struct {
	Enable         bool            `mapstructure:"enable"`
	Authentication *Authentication `mapstructure:"authentication"`
	Authorization  *Authorization  `mapstructure:"authorization"`
	// contains filtered or unexported fields
}

SecurityConfig 安全配置,对接认证、鉴权

type ServicesConfig

type ServicesConfig struct {
	RootPath      string `mapstructure:"root_path"`
	Namespace     string `mapstructure:"namespace"`
	ServiceCode   string `mapstructure:"service_code"`
	APIEndpoint   string `mapstructure:"api_endpoint"`
	GRPCAddress   string `mapstructure:"grpc_address"`
	HTTPAddress   string `mapstructure:"http_address"`
	PublicAddress string `mapstructure:"public_address"`
}

ServicesConfig 基础服务配置,用于设定命名空间、注册的路径、监听的地址等

type TLSConfig

type TLSConfig struct {
	// 进行 TLS 握手时,客户端会检查服务器返回的证书中的主机名与客户端期望的主机名是否匹配
	// 如果设置了 ServerName,那么客户端会使用该字段的值来验证服务器证书的主机名
	// 如果设置了 InsecureSkipVerify 为 true,则跳过主机名验证
	ServerName string `mapstructure:"server_name" yaml:"server_name"`

	// 默认情况下,客户端会验证服务器的证书链和主机名,以确保建立安全的 TLS 连接,避免被中间人攻击
	InsecureSkipVerify bool `mapstructure:"insecure_skip_verify" yaml:"insecure_skip_verify"`

	// 最低支持的 tls 版本,取值范围:TLSv1 TLSv1.1 TLSv1.2 TLSv1.3
	MinVersion string `mapstructure:"min_version" yaml:"min_version"`
	// 最高支持的 tls 版本,取值范围:TLSv1 TLSv1.1 TLSv1.2 TLSv1.3
	MaxVersion string `mapstructure:"max_version" yaml:"max_version"`

	// 用于定义客户端在验证服务器证书时使用的根证书,一般在自签证书时使用
	CAFile string `mapstructure:"ca_file" yaml:"ca_file"`
	// 客户端证书公钥
	CertFile string `mapstructure:"cert_file" yaml:"cert_file"`
	// 客户端证书私钥
	KeyFile string `mapstructure:"key_file" yaml:"key_file"`
}

TLSConfig 用于配置客户端与服务端 tls 相关行为

type TelemetryConfig added in v0.3.3

type TelemetryConfig struct {
	Metrics *TelemetryMetric `mapstructure:"metrics"`
	Traces  *TelemetryTrace  `mapstructure:"traces"`
}

TelemetryConfig xx

type TelemetryMetric added in v0.3.3

type TelemetryMetric struct {
	// 为所有暴露的指标添加前缀
	Namespace string `mapstructure:"namespace"`
	// 性能数据上报频率,默认1分钟,单位:秒
	PushInterval int `mapstructure:"push_interval"`
	// 是否启用 Exporters 配置下的 otel otelhttp logging prometheus
	Exporters ExporterEnable `mapstructure:"exporter_enable"`
}

TelemetryMetric 性能指标个性配置

type TelemetryTrace added in v0.3.3

type TelemetryTrace struct {
	// 给定一个 0 至 1 之间的分数决定采样频率
	SampleRatio *float64 `mapstructure:"sample_ratio"`

	// 是否启用 Exporters 配置下的 otel otelhttp logging
	Exporters ExporterEnable `mapstructure:"exporter_enable"`

	// 记录特殊字段,默认不开启
	LogFields struct {
		HTTPRequest  bool `mapstructure:"http_request"`
		HTTPResponse bool `mapstructure:"http_response"`
	} `mapstructure:"log_fields"`

	// 过滤器,用于过滤不需要追踪的请求
	Filters []struct {
		Method  string `mapstructure:"method"`
		URLPath string `mapstructure:"url_path"`
	} `mapstructure:"filters"`
}

TelemetryTrace 链路跟踪个性配置

type URLStyle added in v0.3.2

type URLStyle string

URLStyle 对象存储访问的 url 风格类型 https://docs.aws.amazon.com/AmazonS3/latest/userguide/RESTAPI.html

type XDGSCRAMClient

type XDGSCRAMClient struct {
	*scram.Client
	*scram.ClientConversation
	scram.HashGeneratorFcn
}

XDGSCRAMClient struct to perform SCRAM conversation

func (*XDGSCRAMClient) Begin

func (x *XDGSCRAMClient) Begin(userName, password, authzID string) (err error)

Begin starts SCRAM conversation

func (*XDGSCRAMClient) Done

func (x *XDGSCRAMClient) Done() bool

Done completes SCRAM conversation

func (*XDGSCRAMClient) Step

func (x *XDGSCRAMClient) Step(challenge string) (response string, err error)

Step performs step in SCRAM conversation

Jump to

Keyboard shortcuts

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