forked from TrueCloudLab/frostfs-s3-gw
612 lines
16 KiB
Go
612 lines
16 KiB
Go
|
/*
|
||
|
* MinIO Cloud Storage, (C) 2019 MinIO, Inc.
|
||
|
*
|
||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||
|
* you may not use this file except in compliance with the License.
|
||
|
* You may obtain a copy of the License at
|
||
|
*
|
||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||
|
*
|
||
|
* Unless required by applicable law or agreed to in writing, software
|
||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
|
* See the License for the specific language governing permissions and
|
||
|
* limitations under the License.
|
||
|
*/
|
||
|
|
||
|
package notify
|
||
|
|
||
|
import (
|
||
|
"github.com/minio/minio/cmd/config"
|
||
|
"github.com/minio/minio/pkg/event/target"
|
||
|
)
|
||
|
|
||
|
const (
|
||
|
formatComment = `'namespace' reflects current bucket/object list and 'access' reflects a journal of object operations, defaults to 'namespace'`
|
||
|
queueDirComment = `staging dir for undelivered messages e.g. '/home/events'`
|
||
|
queueLimitComment = `maximum limit for undelivered messages, defaults to '100000'`
|
||
|
)
|
||
|
|
||
|
// Help template inputs for all notification targets
|
||
|
var (
|
||
|
HelpWebhook = config.HelpKVS{
|
||
|
config.HelpKV{
|
||
|
Key: target.WebhookEndpoint,
|
||
|
Description: "webhook server endpoint e.g. http://localhost:8080/minio/events",
|
||
|
Type: "url",
|
||
|
},
|
||
|
config.HelpKV{
|
||
|
Key: target.WebhookAuthToken,
|
||
|
Description: "opaque string or JWT authorization token",
|
||
|
Optional: true,
|
||
|
Type: "string",
|
||
|
},
|
||
|
config.HelpKV{
|
||
|
Key: target.WebhookQueueDir,
|
||
|
Description: queueDirComment,
|
||
|
Optional: true,
|
||
|
Type: "path",
|
||
|
},
|
||
|
config.HelpKV{
|
||
|
Key: target.WebhookQueueLimit,
|
||
|
Description: queueLimitComment,
|
||
|
Optional: true,
|
||
|
Type: "number",
|
||
|
},
|
||
|
config.HelpKV{
|
||
|
Key: config.Comment,
|
||
|
Description: config.DefaultComment,
|
||
|
Optional: true,
|
||
|
Type: "sentence",
|
||
|
},
|
||
|
config.HelpKV{
|
||
|
Key: target.WebhookClientCert,
|
||
|
Description: "client cert for Webhook mTLS auth",
|
||
|
Optional: true,
|
||
|
Type: "string",
|
||
|
},
|
||
|
config.HelpKV{
|
||
|
Key: target.WebhookClientKey,
|
||
|
Description: "client cert key for Webhook mTLS auth",
|
||
|
Optional: true,
|
||
|
Type: "string",
|
||
|
},
|
||
|
}
|
||
|
|
||
|
HelpAMQP = config.HelpKVS{
|
||
|
config.HelpKV{
|
||
|
Key: target.AmqpURL,
|
||
|
Description: "AMQP server endpoint e.g. `amqp://myuser:mypassword@localhost:5672`",
|
||
|
Type: "url",
|
||
|
},
|
||
|
config.HelpKV{
|
||
|
Key: target.AmqpExchange,
|
||
|
Description: "name of the AMQP exchange",
|
||
|
Optional: true,
|
||
|
Type: "string",
|
||
|
},
|
||
|
config.HelpKV{
|
||
|
Key: target.AmqpExchangeType,
|
||
|
Description: "AMQP exchange type",
|
||
|
Optional: true,
|
||
|
Type: "string",
|
||
|
},
|
||
|
config.HelpKV{
|
||
|
Key: target.AmqpRoutingKey,
|
||
|
Description: "routing key for publishing",
|
||
|
Optional: true,
|
||
|
Type: "string",
|
||
|
},
|
||
|
config.HelpKV{
|
||
|
Key: target.AmqpMandatory,
|
||
|
Description: "quietly ignore undelivered messages when set to 'off', default is 'on'",
|
||
|
Optional: true,
|
||
|
Type: "on|off",
|
||
|
},
|
||
|
config.HelpKV{
|
||
|
Key: target.AmqpDurable,
|
||
|
Description: "persist queue across broker restarts when set to 'on', default is 'off'",
|
||
|
Optional: true,
|
||
|
Type: "on|off",
|
||
|
},
|
||
|
config.HelpKV{
|
||
|
Key: target.AmqpNoWait,
|
||
|
Description: "non-blocking message delivery when set to 'on', default is 'off'",
|
||
|
Optional: true,
|
||
|
Type: "on|off",
|
||
|
},
|
||
|
config.HelpKV{
|
||
|
Key: target.AmqpInternal,
|
||
|
Description: "set to 'on' for exchange to be not used directly by publishers, but only when bound to other exchanges",
|
||
|
Optional: true,
|
||
|
Type: "on|off",
|
||
|
},
|
||
|
config.HelpKV{
|
||
|
Key: target.AmqpAutoDeleted,
|
||
|
Description: "auto delete queue when set to 'on', when there are no consumers",
|
||
|
Optional: true,
|
||
|
Type: "on|off",
|
||
|
},
|
||
|
config.HelpKV{
|
||
|
Key: target.AmqpDeliveryMode,
|
||
|
Description: "set to '1' for non-persistent or '2' for persistent queue",
|
||
|
Optional: true,
|
||
|
Type: "number",
|
||
|
},
|
||
|
config.HelpKV{
|
||
|
Key: target.AmqpQueueDir,
|
||
|
Description: queueDirComment,
|
||
|
Optional: true,
|
||
|
Type: "path",
|
||
|
},
|
||
|
config.HelpKV{
|
||
|
Key: target.AmqpQueueLimit,
|
||
|
Description: queueLimitComment,
|
||
|
Optional: true,
|
||
|
Type: "number",
|
||
|
},
|
||
|
config.HelpKV{
|
||
|
Key: config.Comment,
|
||
|
Description: config.DefaultComment,
|
||
|
Optional: true,
|
||
|
Type: "sentence",
|
||
|
},
|
||
|
}
|
||
|
|
||
|
HelpKafka = config.HelpKVS{
|
||
|
config.HelpKV{
|
||
|
Key: target.KafkaBrokers,
|
||
|
Description: "comma separated list of Kafka broker addresses",
|
||
|
Type: "csv",
|
||
|
},
|
||
|
config.HelpKV{
|
||
|
Key: target.KafkaTopic,
|
||
|
Description: "Kafka topic used for bucket notifications",
|
||
|
Optional: true,
|
||
|
Type: "string",
|
||
|
},
|
||
|
config.HelpKV{
|
||
|
Key: target.KafkaSASLUsername,
|
||
|
Description: "username for SASL/PLAIN or SASL/SCRAM authentication",
|
||
|
Optional: true,
|
||
|
Type: "string",
|
||
|
},
|
||
|
config.HelpKV{
|
||
|
Key: target.KafkaSASLPassword,
|
||
|
Description: "password for SASL/PLAIN or SASL/SCRAM authentication",
|
||
|
Optional: true,
|
||
|
Type: "string",
|
||
|
},
|
||
|
config.HelpKV{
|
||
|
Key: target.KafkaSASLMechanism,
|
||
|
Description: "sasl authentication mechanism, default 'plain'",
|
||
|
Optional: true,
|
||
|
Type: "string",
|
||
|
},
|
||
|
config.HelpKV{
|
||
|
Key: target.KafkaTLSClientAuth,
|
||
|
Description: "clientAuth determines the Kafka server's policy for TLS client auth",
|
||
|
Optional: true,
|
||
|
Type: "string",
|
||
|
},
|
||
|
config.HelpKV{
|
||
|
Key: target.KafkaSASL,
|
||
|
Description: "set to 'on' to enable SASL authentication",
|
||
|
Optional: true,
|
||
|
Type: "on|off",
|
||
|
},
|
||
|
config.HelpKV{
|
||
|
Key: target.KafkaTLS,
|
||
|
Description: "set to 'on' to enable TLS",
|
||
|
Optional: true,
|
||
|
Type: "on|off",
|
||
|
},
|
||
|
config.HelpKV{
|
||
|
Key: target.KafkaTLSSkipVerify,
|
||
|
Description: `trust server TLS without verification, defaults to "on" (verify)`,
|
||
|
Optional: true,
|
||
|
Type: "on|off",
|
||
|
},
|
||
|
config.HelpKV{
|
||
|
Key: target.KafkaClientTLSCert,
|
||
|
Description: "path to client certificate for mTLS auth",
|
||
|
Optional: true,
|
||
|
Type: "path",
|
||
|
},
|
||
|
config.HelpKV{
|
||
|
Key: target.KafkaClientTLSKey,
|
||
|
Description: "path to client key for mTLS auth",
|
||
|
Optional: true,
|
||
|
Type: "path",
|
||
|
},
|
||
|
config.HelpKV{
|
||
|
Key: target.KafkaQueueDir,
|
||
|
Description: queueDirComment,
|
||
|
Optional: true,
|
||
|
Type: "path",
|
||
|
},
|
||
|
config.HelpKV{
|
||
|
Key: target.KafkaQueueLimit,
|
||
|
Description: queueLimitComment,
|
||
|
Optional: true,
|
||
|
Type: "number",
|
||
|
},
|
||
|
config.HelpKV{
|
||
|
Key: target.KafkaVersion,
|
||
|
Description: "specify the version of the Kafka cluster",
|
||
|
Optional: true,
|
||
|
Type: "string",
|
||
|
},
|
||
|
config.HelpKV{
|
||
|
Key: config.Comment,
|
||
|
Description: config.DefaultComment,
|
||
|
Optional: true,
|
||
|
Type: "sentence",
|
||
|
},
|
||
|
}
|
||
|
|
||
|
HelpMQTT = config.HelpKVS{
|
||
|
config.HelpKV{
|
||
|
Key: target.MqttBroker,
|
||
|
Description: "MQTT server endpoint e.g. `tcp://localhost:1883`",
|
||
|
Type: "uri",
|
||
|
},
|
||
|
config.HelpKV{
|
||
|
Key: target.MqttTopic,
|
||
|
Description: "name of the MQTT topic to publish",
|
||
|
Type: "string",
|
||
|
},
|
||
|
config.HelpKV{
|
||
|
Key: target.MqttUsername,
|
||
|
Description: "MQTT username",
|
||
|
Optional: true,
|
||
|
Type: "string",
|
||
|
},
|
||
|
config.HelpKV{
|
||
|
Key: target.MqttPassword,
|
||
|
Description: "MQTT password",
|
||
|
Optional: true,
|
||
|
Type: "string",
|
||
|
},
|
||
|
config.HelpKV{
|
||
|
Key: target.MqttQoS,
|
||
|
Description: "set the quality of service priority, defaults to '0'",
|
||
|
Optional: true,
|
||
|
Type: "number",
|
||
|
},
|
||
|
config.HelpKV{
|
||
|
Key: target.MqttKeepAliveInterval,
|
||
|
Description: "keep-alive interval for MQTT connections in s,m,h,d",
|
||
|
Optional: true,
|
||
|
Type: "duration",
|
||
|
},
|
||
|
config.HelpKV{
|
||
|
Key: target.MqttReconnectInterval,
|
||
|
Description: "reconnect interval for MQTT connections in s,m,h,d",
|
||
|
Optional: true,
|
||
|
Type: "duration",
|
||
|
},
|
||
|
config.HelpKV{
|
||
|
Key: target.MqttQueueDir,
|
||
|
Description: queueDirComment,
|
||
|
Optional: true,
|
||
|
Type: "path",
|
||
|
},
|
||
|
config.HelpKV{
|
||
|
Key: target.MqttQueueLimit,
|
||
|
Description: queueLimitComment,
|
||
|
Optional: true,
|
||
|
Type: "number",
|
||
|
},
|
||
|
config.HelpKV{
|
||
|
Key: config.Comment,
|
||
|
Description: config.DefaultComment,
|
||
|
Optional: true,
|
||
|
Type: "sentence",
|
||
|
},
|
||
|
}
|
||
|
|
||
|
HelpPostgres = config.HelpKVS{
|
||
|
config.HelpKV{
|
||
|
Key: target.PostgresConnectionString,
|
||
|
Description: `Postgres server connection-string e.g. "host=localhost port=5432 dbname=minio_events user=postgres password=password sslmode=disable"`,
|
||
|
Type: "string",
|
||
|
},
|
||
|
config.HelpKV{
|
||
|
Key: target.PostgresTable,
|
||
|
Description: "DB table name to store/update events, table is auto-created",
|
||
|
Type: "string",
|
||
|
},
|
||
|
config.HelpKV{
|
||
|
Key: target.PostgresFormat,
|
||
|
Description: formatComment,
|
||
|
Type: "namespace*|access",
|
||
|
},
|
||
|
config.HelpKV{
|
||
|
Key: target.PostgresQueueDir,
|
||
|
Description: queueDirComment,
|
||
|
Optional: true,
|
||
|
Type: "path",
|
||
|
},
|
||
|
config.HelpKV{
|
||
|
Key: target.PostgresQueueLimit,
|
||
|
Description: queueLimitComment,
|
||
|
Optional: true,
|
||
|
Type: "number",
|
||
|
},
|
||
|
config.HelpKV{
|
||
|
Key: config.Comment,
|
||
|
Description: config.DefaultComment,
|
||
|
Optional: true,
|
||
|
Type: "sentence",
|
||
|
},
|
||
|
}
|
||
|
|
||
|
HelpMySQL = config.HelpKVS{
|
||
|
config.HelpKV{
|
||
|
Key: target.MySQLDSNString,
|
||
|
Description: `MySQL data-source-name connection string e.g. "<user>:<password>@tcp(<host>:<port>)/<database>"`,
|
||
|
Optional: true,
|
||
|
Type: "string",
|
||
|
},
|
||
|
config.HelpKV{
|
||
|
Key: target.MySQLTable,
|
||
|
Description: "DB table name to store/update events, table is auto-created",
|
||
|
Type: "string",
|
||
|
},
|
||
|
config.HelpKV{
|
||
|
Key: target.MySQLFormat,
|
||
|
Description: formatComment,
|
||
|
Type: "namespace*|access",
|
||
|
},
|
||
|
config.HelpKV{
|
||
|
Key: target.MySQLQueueDir,
|
||
|
Description: queueDirComment,
|
||
|
Optional: true,
|
||
|
Type: "path",
|
||
|
},
|
||
|
config.HelpKV{
|
||
|
Key: target.MySQLQueueLimit,
|
||
|
Description: queueLimitComment,
|
||
|
Optional: true,
|
||
|
Type: "number",
|
||
|
},
|
||
|
config.HelpKV{
|
||
|
Key: config.Comment,
|
||
|
Description: config.DefaultComment,
|
||
|
Optional: true,
|
||
|
Type: "sentence",
|
||
|
},
|
||
|
}
|
||
|
|
||
|
HelpNATS = config.HelpKVS{
|
||
|
config.HelpKV{
|
||
|
Key: target.NATSAddress,
|
||
|
Description: "NATS server address e.g. '0.0.0.0:4222'",
|
||
|
Type: "address",
|
||
|
},
|
||
|
config.HelpKV{
|
||
|
Key: target.NATSSubject,
|
||
|
Description: "NATS subscription subject",
|
||
|
Type: "string",
|
||
|
},
|
||
|
config.HelpKV{
|
||
|
Key: target.NATSUsername,
|
||
|
Description: "NATS username",
|
||
|
Optional: true,
|
||
|
Type: "string",
|
||
|
},
|
||
|
config.HelpKV{
|
||
|
Key: target.NATSPassword,
|
||
|
Description: "NATS password",
|
||
|
Optional: true,
|
||
|
Type: "string",
|
||
|
},
|
||
|
config.HelpKV{
|
||
|
Key: target.NATSToken,
|
||
|
Description: "NATS token",
|
||
|
Optional: true,
|
||
|
Type: "string",
|
||
|
},
|
||
|
config.HelpKV{
|
||
|
Key: target.NATSTLS,
|
||
|
Description: "set to 'on' to enable TLS",
|
||
|
Optional: true,
|
||
|
Type: "on|off",
|
||
|
},
|
||
|
config.HelpKV{
|
||
|
Key: target.NATSTLSSkipVerify,
|
||
|
Description: `trust server TLS without verification, defaults to "on" (verify)`,
|
||
|
Optional: true,
|
||
|
Type: "on|off",
|
||
|
},
|
||
|
config.HelpKV{
|
||
|
Key: target.NATSPingInterval,
|
||
|
Description: "client ping commands interval in s,m,h,d. Disabled by default",
|
||
|
Optional: true,
|
||
|
Type: "duration",
|
||
|
},
|
||
|
config.HelpKV{
|
||
|
Key: target.NATSStreaming,
|
||
|
Description: "set to 'on', to use streaming NATS server",
|
||
|
Optional: true,
|
||
|
Type: "on|off",
|
||
|
},
|
||
|
config.HelpKV{
|
||
|
Key: target.NATSStreamingAsync,
|
||
|
Description: "set to 'on', to enable asynchronous publish",
|
||
|
Optional: true,
|
||
|
Type: "on|off",
|
||
|
},
|
||
|
config.HelpKV{
|
||
|
Key: target.NATSStreamingMaxPubAcksInFlight,
|
||
|
Description: "number of messages to publish without waiting for ACKs",
|
||
|
Optional: true,
|
||
|
Type: "number",
|
||
|
},
|
||
|
config.HelpKV{
|
||
|
Key: target.NATSStreamingClusterID,
|
||
|
Description: "unique ID for NATS streaming cluster",
|
||
|
Optional: true,
|
||
|
Type: "string",
|
||
|
},
|
||
|
config.HelpKV{
|
||
|
Key: target.NATSCertAuthority,
|
||
|
Description: "path to certificate chain of the target NATS server",
|
||
|
Optional: true,
|
||
|
Type: "string",
|
||
|
},
|
||
|
config.HelpKV{
|
||
|
Key: target.NATSClientCert,
|
||
|
Description: "client cert for NATS mTLS auth",
|
||
|
Optional: true,
|
||
|
Type: "string",
|
||
|
},
|
||
|
config.HelpKV{
|
||
|
Key: target.NATSClientKey,
|
||
|
Description: "client cert key for NATS mTLS auth",
|
||
|
Optional: true,
|
||
|
Type: "string",
|
||
|
},
|
||
|
config.HelpKV{
|
||
|
Key: target.NATSQueueDir,
|
||
|
Description: queueDirComment,
|
||
|
Optional: true,
|
||
|
Type: "path",
|
||
|
},
|
||
|
config.HelpKV{
|
||
|
Key: target.NATSQueueLimit,
|
||
|
Description: queueLimitComment,
|
||
|
Optional: true,
|
||
|
Type: "number",
|
||
|
},
|
||
|
config.HelpKV{
|
||
|
Key: config.Comment,
|
||
|
Description: config.DefaultComment,
|
||
|
Optional: true,
|
||
|
Type: "sentence",
|
||
|
},
|
||
|
}
|
||
|
|
||
|
HelpNSQ = config.HelpKVS{
|
||
|
config.HelpKV{
|
||
|
Key: target.NSQAddress,
|
||
|
Description: "NSQ server address e.g. '127.0.0.1:4150'",
|
||
|
Type: "address",
|
||
|
},
|
||
|
config.HelpKV{
|
||
|
Key: target.NSQTopic,
|
||
|
Description: "NSQ topic",
|
||
|
Type: "string",
|
||
|
},
|
||
|
config.HelpKV{
|
||
|
Key: target.NSQTLS,
|
||
|
Description: "set to 'on' to enable TLS",
|
||
|
Optional: true,
|
||
|
Type: "on|off",
|
||
|
},
|
||
|
config.HelpKV{
|
||
|
Key: target.NSQTLSSkipVerify,
|
||
|
Description: `trust server TLS without verification, defaults to "on" (verify)`,
|
||
|
Optional: true,
|
||
|
Type: "on|off",
|
||
|
},
|
||
|
config.HelpKV{
|
||
|
Key: target.NSQQueueDir,
|
||
|
Description: queueDirComment,
|
||
|
Optional: true,
|
||
|
Type: "path",
|
||
|
},
|
||
|
config.HelpKV{
|
||
|
Key: target.NSQQueueLimit,
|
||
|
Description: queueLimitComment,
|
||
|
Optional: true,
|
||
|
Type: "number",
|
||
|
},
|
||
|
config.HelpKV{
|
||
|
Key: config.Comment,
|
||
|
Description: config.DefaultComment,
|
||
|
Optional: true,
|
||
|
Type: "sentence",
|
||
|
},
|
||
|
}
|
||
|
|
||
|
HelpES = config.HelpKVS{
|
||
|
config.HelpKV{
|
||
|
Key: target.ElasticURL,
|
||
|
Description: "Elasticsearch server's address, with optional authentication info",
|
||
|
Type: "url",
|
||
|
},
|
||
|
config.HelpKV{
|
||
|
Key: target.ElasticIndex,
|
||
|
Description: `Elasticsearch index to store/update events, index is auto-created`,
|
||
|
Type: "string",
|
||
|
},
|
||
|
config.HelpKV{
|
||
|
Key: target.ElasticFormat,
|
||
|
Description: formatComment,
|
||
|
Type: "namespace*|access",
|
||
|
},
|
||
|
config.HelpKV{
|
||
|
Key: target.ElasticQueueDir,
|
||
|
Description: queueDirComment,
|
||
|
Optional: true,
|
||
|
Type: "path",
|
||
|
},
|
||
|
config.HelpKV{
|
||
|
Key: target.ElasticQueueLimit,
|
||
|
Description: queueLimitComment,
|
||
|
Optional: true,
|
||
|
Type: "number",
|
||
|
},
|
||
|
config.HelpKV{
|
||
|
Key: config.Comment,
|
||
|
Description: config.DefaultComment,
|
||
|
Optional: true,
|
||
|
Type: "sentence",
|
||
|
},
|
||
|
}
|
||
|
|
||
|
HelpRedis = config.HelpKVS{
|
||
|
config.HelpKV{
|
||
|
Key: target.RedisAddress,
|
||
|
Description: "Redis server's address. For example: `localhost:6379`",
|
||
|
Type: "address",
|
||
|
},
|
||
|
config.HelpKV{
|
||
|
Key: target.RedisKey,
|
||
|
Description: "Redis key to store/update events, key is auto-created",
|
||
|
Type: "string",
|
||
|
},
|
||
|
config.HelpKV{
|
||
|
Key: target.RedisFormat,
|
||
|
Description: formatComment,
|
||
|
Type: "namespace*|access",
|
||
|
},
|
||
|
config.HelpKV{
|
||
|
Key: target.RedisPassword,
|
||
|
Description: "Redis server password",
|
||
|
Optional: true,
|
||
|
Type: "string",
|
||
|
},
|
||
|
config.HelpKV{
|
||
|
Key: target.RedisQueueDir,
|
||
|
Description: queueDirComment,
|
||
|
Optional: true,
|
||
|
Type: "path",
|
||
|
},
|
||
|
config.HelpKV{
|
||
|
Key: target.RedisQueueLimit,
|
||
|
Description: queueLimitComment,
|
||
|
Optional: true,
|
||
|
Type: "number",
|
||
|
},
|
||
|
config.HelpKV{
|
||
|
Key: config.Comment,
|
||
|
Description: config.DefaultComment,
|
||
|
Optional: true,
|
||
|
Type: "sentence",
|
||
|
},
|
||
|
}
|
||
|
)
|