forked from neo4j-drivers/gobolt
-
Notifications
You must be signed in to change notification settings - Fork 0
/
config.go
60 lines (55 loc) · 1.8 KB
/
config.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
/*
* Copyright (c) 2002-2018 "Neo4j,"
* Neo4j Sweden AB [http://neo4j.com]
*
* This file is part of Neo4j.
*
* 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 gobolt
import (
"bytes"
"crypto/x509"
"encoding/pem"
"time"
)
// Config holds the available configurations options applicable to the connector
type Config struct {
Encryption bool
TLSCertificates []*x509.Certificate
TLSSkipVerify bool
TLSSkipVerifyHostname bool
MaxPoolSize int
MaxConnLifetime time.Duration
ConnAcquisitionTimeout time.Duration
SockConnectTimeout time.Duration
SockKeepalive bool
ConnectorErrorFactory func(state, code int, codeText, context, description string) ConnectorError
DatabaseErrorFactory func(classification, code, message string) DatabaseError
GenericErrorFactory func(format string, args ...interface{}) GenericError
Log Logging
AddressResolver URLAddressResolver
ValueHandlers []ValueHandler
}
func pemEncodeCerts(certs []*x509.Certificate) (*bytes.Buffer, error) {
if len(certs) == 0 {
return nil, nil
}
var buf = &bytes.Buffer{}
for _, cert := range certs {
if err := pem.Encode(buf, &pem.Block{Type: "CERTIFICATE", Bytes: cert.Raw}); err != nil {
return nil, err
}
}
return buf, nil
}