/
sessionStore.go
108 lines (84 loc) · 2.47 KB
/
sessionStore.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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
// Copyright 2016 George S. Kong. All rights reserved.
// Use of this source code is governed by a license that can be found in the LICENSE.txt file.
package main
import (
"log"
"os"
"github.com/gkong/go-qweb/qsess"
"github.com/gkong/go-qweb/qsess/qscql"
"github.com/gkong/go-qweb/qsess/qsldb"
"github.com/gkong/go-qweb/qsess/qsmy"
"github.com/gkong/go-qweb/qsess/qspgx"
)
var qsStore *qsess.Store
// set up qsStore to contain a store of the specified database type
func sessSetup(dbt dbTypeEnum) {
dbSetup(dbt)
switch dbt {
case goleveldbDB:
gldbSessStore()
case cassandraDB:
cassandraSessStore()
case postgresqlDB:
postgresqlSessStore()
case mysqlDB:
mysqlSessStore()
case mapDB:
mapSessStore()
}
}
func sessParams() {
// doConfig has validated authtype, so we can ignore error return
qsStore.AuthType, _ = qsess.ParseAuthType(Config.Qsess.AuthType)
qsStore.MaxAgeSecs = Config.Qsess.MaxAgeSecs
qsStore.MinRefreshSecs = Config.Qsess.MinRefreshSecs
qsStore.CookieSecure = Config.Qsess.CookieSecure
qsStore.CookieHTTPOnly = Config.Qsess.CookieHTTPOnly
qsStore.NewSessData = newMySessData
}
func mapSessStore() {
var err error
qsStore, err = qsess.NewMapStore([]byte(Config.Qsess.EncryptKey))
if err != nil {
log.Fatalln("mapSessStore - NewMapStore failed - " + err.Error())
}
sessParams()
}
func gldbSessStore() {
var err error
qsStore, err = qsldb.NewGldbStore(gldb, istobs(Config.Goleveldb.SessKeyPrefix),
os.Stderr, []byte(Config.Qsess.EncryptKey))
if err != nil {
log.Fatalln("gldbSessStore - NewGldbStore failed - " + err.Error())
}
sessParams()
}
func cassandraSessStore() {
var err error
qsStore, err = qscql.NewCqlStore(cdb, Config.Cassandra.SessTableName,
Config.Cassandra.SessUIDIndex, Config.Cassandra.SessUIDToClient,
[]byte(Config.Qsess.EncryptKey))
if err != nil {
log.Fatalln("cassandraSessStore - NewCqlStore failed - " + err.Error())
}
sessParams()
}
func postgresqlSessStore() {
var err error
qsStore, err = qspgx.NewPgxStore(pdb, Config.Postgresql.SessTableName, os.Stderr,
[]byte(Config.Qsess.EncryptKey))
if err != nil {
log.Fatalln("postgresqlSessStore - NewPgxStore failed - " + err.Error())
}
sessParams()
}
func mysqlSessStore() {
var err error
qsStore, err = qsmy.NewMysqlStore(sdb, Config.Mysql.SessTableName,
Config.Mysql.SessDataColDef, Config.Mysql.SessUIDColDef,
[]byte(Config.Qsess.EncryptKey))
if err != nil {
log.Fatalln("mysqlSessStore - NewMysqlStore failed - " + err.Error())
}
sessParams()
}