app

package
v0.0.0-...-e06565c Latest Latest
Warning

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

Go to latest
Published: Jun 22, 2025 License: Apache-2.0 Imports: 4 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Config

type Config struct {
	// server
	ServerPort uint16 `envconfig:"SERVER_PORT" validate:"required"`
	ServerKey  string `envconfig:"SERVER_KEY" validate:"required"`

	// admin api enable
	AdminApiEnabled bool   `envconfig:"ADMIN_API_ENABLED" default:"false"`
	AdminApiKey     string `envconfig:"ADMIN_API_KEY"`

	// dify inner api
	InnerApiURL string `envconfig:"INNER_API_URL" validate:"required"`
	InnerApiKey string `envconfig:"INNER_API_KEY" validate:"required"`

	// storage config
	// https://github.com/langgenius/dify-cloud-kit/blob/main/oss/factory/factory.go
	PluginStorageType      string `envconfig:"PLUGIN_STORAGE_TYPE" validate:"required"`
	PluginStorageOSSBucket string `envconfig:"PLUGIN_STORAGE_OSS_BUCKET"`

	// aws s3
	S3UseAwsManagedIam bool   `envconfig:"S3_USE_AWS_MANAGED_IAM" default:"false"`
	S3UseAWS           bool   `envconfig:"S3_USE_AWS" default:"true"`
	S3Endpoint         string `envconfig:"S3_ENDPOINT"`
	S3UsePathStyle     bool   `envconfig:"S3_USE_PATH_STYLE" default:"true"`
	AWSAccessKey       string `envconfig:"AWS_ACCESS_KEY"`
	AWSSecretKey       string `envconfig:"AWS_SECRET_KEY"`
	AWSRegion          string `envconfig:"AWS_REGION"`

	// tencent cos
	TencentCOSSecretKey string `envconfig:"TENCENT_COS_SECRET_KEY"`
	TencentCOSSecretId  string `envconfig:"TENCENT_COS_SECRET_ID"`
	TencentCOSRegion    string `envconfig:"TENCENT_COS_REGION"`

	// azure blob
	AzureBlobStorageContainerName    string `envconfig:"AZURE_BLOB_STORAGE_CONTAINER_NAME"`
	AzureBlobStorageConnectionString string `envconfig:"AZURE_BLOB_STORAGE_CONNECTION_STRING"`

	// aliyun oss
	AliyunOSSRegion          string `envconfig:"ALIYUN_OSS_REGION"`
	AliyunOSSEndpoint        string `envconfig:"ALIYUN_OSS_ENDPOINT"`
	AliyunOSSAccessKeyID     string `envconfig:"ALIYUN_OSS_ACCESS_KEY_ID"`
	AliyunOSSAccessKeySecret string `envconfig:"ALIYUN_OSS_ACCESS_KEY_SECRET"`
	AliyunOSSAuthVersion     string `envconfig:"ALIYUN_OSS_AUTH_VERSION" default:"v4"`
	AliyunOSSPath            string `envconfig:"ALIYUN_OSS_PATH"`

	// google gcs
	GoogleCloudStorageCredentialsB64 string `envconfig:"GCS_CREDENTIALS"`

	// huawei obs
	HuaweiOBSAccessKey string `envconfig:"HUAWEI_OBS_ACCESS_KEY"`
	HuaweiOBSSecretKey string `envconfig:"HUAWEI_OBS_SECRET_KEY"`
	HuaweiOBSServer    string `envconfig:"HUAWEI_OBS_SERVER"`

	// volcengine tos
	VolcengineTOSEndpoint  string `envconfig:"VOLCENGINE_TOS_ENDPOINT"`
	VolcengineTOSAccessKey string `envconfig:"VOLCENGINE_TOS_ACCESS_KEY"`
	VolcengineTOSSecretKey string `envconfig:"VOLCENGINE_TOS_SECRET_KEY"`
	VolcengineTOSRegion    string `envconfig:"VOLCENGINE_TOS_REGION"`

	// local
	PluginStorageLocalRoot string `envconfig:"PLUGIN_STORAGE_LOCAL_ROOT"`

	// plugin remote installing
	PluginRemoteInstallingHost                string `envconfig:"PLUGIN_REMOTE_INSTALLING_HOST"`
	PluginRemoteInstallingPort                uint16 `envconfig:"PLUGIN_REMOTE_INSTALLING_PORT"`
	PluginRemoteInstallingEnabled             *bool  `envconfig:"PLUGIN_REMOTE_INSTALLING_ENABLED"`
	PluginRemoteInstallingMaxConn             int    `envconfig:"PLUGIN_REMOTE_INSTALLING_MAX_CONN"`
	PluginRemoteInstallingMaxSingleTenantConn int    `envconfig:"PLUGIN_REMOTE_INSTALLING_MAX_SINGLE_TENANT_CONN"`
	PluginRemoteInstallServerEventLoopNums    int    `envconfig:"PLUGIN_REMOTE_INSTALL_SERVER_EVENT_LOOP_NUMS"`

	// plugin endpoint
	PluginEndpointEnabled *bool `envconfig:"PLUGIN_ENDPOINT_ENABLED"`

	// storage
	PluginWorkingPath      string `envconfig:"PLUGIN_WORKING_PATH"` // where the plugin finally running
	PluginMediaCacheSize   uint16 `envconfig:"PLUGIN_MEDIA_CACHE_SIZE"`
	PluginMediaCachePath   string `envconfig:"PLUGIN_MEDIA_CACHE_PATH"`
	PluginInstalledPath    string `envconfig:"PLUGIN_INSTALLED_PATH" validate:"required"` // where the plugin finally installed
	PluginPackageCachePath string `envconfig:"PLUGIN_PACKAGE_CACHE_PATH"`                 // where plugin packages stored

	// request timeout
	PluginMaxExecutionTimeout int `envconfig:"PLUGIN_MAX_EXECUTION_TIMEOUT" validate:"required"`

	// local launching max concurrent
	PluginLocalLaunchingConcurrent int `envconfig:"PLUGIN_LOCAL_LAUNCHING_CONCURRENT" validate:"required"`

	// platform like local or aws lambda
	Platform PlatformType `envconfig:"PLATFORM" validate:"required"`

	// routine pool
	RoutinePoolSize int `envconfig:"ROUTINE_POOL_SIZE" validate:"required"`

	// redis
	RedisHost   string `envconfig:"REDIS_HOST" validate:"required"`
	RedisPort   uint16 `envconfig:"REDIS_PORT" validate:"required"`
	RedisPass   string `envconfig:"REDIS_PASSWORD"`
	RedisUser   string `envconfig:"REDIS_USERNAME"`
	RedisUseSsl bool   `envconfig:"REDIS_USE_SSL"`
	RedisDB     int    `envconfig:"REDIS_DB"`

	// redis sentinel
	RedisUseSentinel           bool    `envconfig:"REDIS_USE_SENTINEL"`
	RedisSentinels             string  `envconfig:"REDIS_SENTINELS"`
	RedisSentinelServiceName   string  `envconfig:"REDIS_SENTINEL_SERVICE_NAME"`
	RedisSentinelUsername      string  `envconfig:"REDIS_SENTINEL_USERNAME"`
	RedisSentinelPassword      string  `envconfig:"REDIS_SENTINEL_PASSWORD"`
	RedisSentinelSocketTimeout float64 `envconfig:"REDIS_SENTINEL_SOCKET_TIMEOUT"`

	// database
	DBType            string `envconfig:"DB_TYPE" default:"postgresql"`
	DBUsername        string `envconfig:"DB_USERNAME" validate:"required"`
	DBPassword        string `envconfig:"DB_PASSWORD" validate:"required"`
	DBHost            string `envconfig:"DB_HOST" validate:"required"`
	DBPort            uint16 `envconfig:"DB_PORT" validate:"required"`
	DBDatabase        string `envconfig:"DB_DATABASE" validate:"required"`
	DBDefaultDatabase string `envconfig:"DB_DEFAULT_DATABASE" validate:"required"`
	DBSslMode         string `envconfig:"DB_SSL_MODE" validate:"required,oneof=disable require"`

	// database connection pool settings
	DBMaxIdleConns    int    `envconfig:"DB_MAX_IDLE_CONNS" default:"10"`
	DBMaxOpenConns    int    `envconfig:"DB_MAX_OPEN_CONNS" default:"30"`
	DBConnMaxLifetime int    `envconfig:"DB_CONN_MAX_LIFETIME" default:"3600"`
	DBExtras          string `envconfig:"DB_EXTRAS"`
	DBCharset         string `envconfig:"DB_CHARSET"`

	// persistence storage
	PersistenceStoragePath    string `envconfig:"PERSISTENCE_STORAGE_PATH"`
	PersistenceStorageMaxSize int64  `envconfig:"PERSISTENCE_STORAGE_MAX_SIZE"`

	// force verifying signature for all plugins, not allowing install plugin not signed
	ForceVerifyingSignature *bool `envconfig:"FORCE_VERIFYING_SIGNATURE"`

	// enable or disable third-party signature verification for plugins
	ThirdPartySignatureVerificationEnabled bool `envconfig:"THIRD_PARTY_SIGNATURE_VERIFICATION_ENABLED"  default:"false"`
	// a comma-separated list of file paths to public keys in addition to the official public key for signature verification
	ThirdPartySignatureVerificationPublicKeys []string `envconfig:"THIRD_PARTY_SIGNATURE_VERIFICATION_PUBLIC_KEYS"  default:""`

	// lifetime state management
	LifetimeCollectionHeartbeatInterval int `envconfig:"LIFETIME_COLLECTION_HEARTBEAT_INTERVAL"  validate:"required"`
	LifetimeCollectionGCInterval        int `envconfig:"LIFETIME_COLLECTION_GC_INTERVAL" validate:"required"`
	LifetimeStateGCInterval             int `envconfig:"LIFETIME_STATE_GC_INTERVAL" validate:"required"`

	InvocationConnectionIdleTimeout int `envconfig:"INVOCATION_CONNECTION_IDLE_TIMEOUT" validate:"required"`

	PluginServerlessConnectorURL           *string `envconfig:"PLUGIN_SERVERLESS_CONNECTOR_URL"`
	PluginServerlessConnectorAPIKey        *string `envconfig:"PLUGIN_SERVERLESS_CONNECTOR_API_KEY"`
	PluginServerlessConnectorLaunchTimeout int     `envconfig:"PLUGIN_SERVERLESS_CONNECTOR_LAUNCH_TIMEOUT"`

	MaxPluginPackageSize            int64 `envconfig:"MAX_PLUGIN_PACKAGE_SIZE" validate:"required"`
	MaxBundlePackageSize            int64 `envconfig:"MAX_BUNDLE_PACKAGE_SIZE" validate:"required"`
	MaxServerlessTransactionTimeout int   `envconfig:"MAX_SERVERLESS_TRANSACTION_TIMEOUT"`

	PythonInterpreterPath     string `envconfig:"PYTHON_INTERPRETER_PATH"`
	UvPath                    string `envconfig:"UV_PATH"  default:""`
	PythonEnvInitTimeout      int    `envconfig:"PYTHON_ENV_INIT_TIMEOUT" validate:"required"`
	PythonCompileAllExtraArgs string `envconfig:"PYTHON_COMPILE_ALL_EXTRA_ARGS"`
	PipMirrorUrl              string `envconfig:"PIP_MIRROR_URL"`
	PipPreferBinary           *bool  `envconfig:"PIP_PREFER_BINARY"`
	PipVerbose                *bool  `envconfig:"PIP_VERBOSE"`
	PipExtraArgs              string `envconfig:"PIP_EXTRA_ARGS"`

	PluginStdioBufferSize    int `envconfig:"PLUGIN_STDIO_BUFFER_SIZE" default:"1024"`
	PluginStdioMaxBufferSize int `envconfig:"PLUGIN_STDIO_MAX_BUFFER_SIZE" default:"5242880"`

	DisplayClusterLog bool `envconfig:"DISPLAY_CLUSTER_LOG"`

	PPROFEnabled bool `envconfig:"PPROF_ENABLED"`

	SentryEnabled          bool    `envconfig:"SENTRY_ENABLED"`
	SentryDSN              string  `envconfig:"SENTRY_DSN"`
	SentryAttachStacktrace bool    `envconfig:"SENTRY_ATTACH_STACKTRACE"`
	SentryTracingEnabled   bool    `envconfig:"SENTRY_TRACING_ENABLED"`
	SentryTracesSampleRate float64 `envconfig:"SENTRY_TRACES_SAMPLE_RATE"`
	SentrySampleRate       float64 `envconfig:"SENTRY_SAMPLE_RATE"`

	// proxy settings
	HttpProxy  string `envconfig:"HTTP_PROXY"`
	HttpsProxy string `envconfig:"HTTPS_PROXY"`
	NoProxy    string `envconfig:"NO_PROXY"`

	// log settings
	HealthApiLogEnabled *bool `envconfig:"HEALTH_API_LOG_ENABLED"`

	// dify invocation write timeout in milliseconds
	InvocationWriteTimeout int64 `envconfig:"BACKWARDS_INVOCATION_WRITE_TIMEOUT" default:"5000"`
	// dify invocation read timeout in milliseconds
	InvocationReadTimeout int64 `envconfig:"BACKWARDS_INVOCATION_READ_TIMEOUT" default:"240000"`
}

func (*Config) SetDefault

func (config *Config) SetDefault()

func (*Config) Validate

func (c *Config) Validate() error

type PlatformType

type PlatformType string
const (
	PLATFORM_LOCAL      PlatformType = "local"
	PLATFORM_SERVERLESS PlatformType = "serverless"
)

Jump to

Keyboard shortcuts

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