This repository has been archived by the owner on Nov 30, 2017. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 16
/
factory.go
94 lines (75 loc) · 2.37 KB
/
factory.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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
/*
Copyright IBM Corp. 2016 All Rights Reserved.
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 server
import (
"fmt"
"github.com/cloudflare/cfssl/certdb"
"github.com/cloudflare/cfssl/log"
"github.com/hyperledger/fabric-cop/cli/server/dbutil"
"github.com/hyperledger/fabric-cop/cli/server/ldap"
"github.com/jmoiron/sqlx"
)
// InitUserRegistry is the factory method for the user registry.
// If LDAP is configured, then LDAP is used for the user registry;
// otherwise, the CFSSL DB which is used for the certificates table is used.
func InitUserRegistry(cfg *Config) error {
log.Debug("Initialize User Registry")
var err error
if cfg.LDAP != nil {
// LDAP is being used for the user registry
userRegistry, err = ldap.NewClient(cfg.LDAP)
if err != nil {
return err
}
} else {
// The database is being used for the user registry
var exists bool
switch cfg.DBdriver {
case "sqlite3":
db, exists, err = dbutil.NewUserRegistrySQLLite3(cfg.DataSource)
if err != nil {
return err
}
case "postgres":
db, exists, err = dbutil.NewUserRegistryPostgres(cfg.DataSource, &cfg.TLSConf.DBClient)
if err != nil {
return err
}
case "mysql":
db, exists, err = dbutil.NewUserRegistryMySQL(cfg.DataSource, &cfg.TLSConf.DBClient)
if err != nil {
return err
}
default:
return fmt.Errorf("invalid 'DBDriver' in config file: %s", cfg.DBdriver)
}
dbAccessor := new(Accessor)
dbAccessor.SetDB(db)
userRegistry = dbAccessor
// If the DB doesn't exist, bootstrap the DB
if !exists {
err := bootstrapDB()
if err != nil {
return err
}
}
}
return nil
}
// InitCertificateAccessor extends CFSSL database APIs for Certificates table
func InitCertificateAccessor(db *sqlx.DB) certdb.Accessor {
log.Debug("Initialize Certificate Accessor")
certDBAccess := NewCertDBAccessor(db)
certDBAccessor = certDBAccess
return certDBAccess
}