Skip to content

Commit 2dfcd5d

Browse files
authoredApr 27, 2022
Merge pull request accuknox#460 from ErenYeager713/dev
added sqlite driver
2 parents f046f9a + 1021bf7 commit 2dfcd5d

14 files changed

+1068
-17
lines changed
 

‎src/conf/local-file.yaml

+1
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ database:
3232
user: root
3333
password: password
3434
dbname: accuknox
35+
sqlite-db-path: ./accuknox.db
3536
table-network-log: network_log
3637
table-network-policy: network_policy
3738
table-system-log: system_log

‎src/conf/local.yaml

+1
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ database:
3030
user: root
3131
password: password
3232
dbname: accuknox
33+
sqlite-db-path: ./accuknox.db
3334
table-network-log: network_log
3435
table-network-policy: network_policy
3536
table-system-log: system_log

‎src/config/configManager.go

+1
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ func LoadConfigDB() types.ConfigDB {
5757
cfgDB.DBName = viper.GetString("database.dbname")
5858

5959
cfgDB.DBHost = viper.GetString("database.host")
60+
cfgDB.SQLiteDBPath = viper.GetString("database.sqlite-db-path")
6061
/*
6162
fix for #405
6263
dbAddr, err := net.LookupIP(cfgDB.DBHost)

‎src/go.mod

+1
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ require (
1414
github.com/go-sql-driver/mysql v1.5.0
1515
github.com/google/go-cmp v0.5.5
1616
github.com/kubearmor/KubeArmor/protobuf v0.0.0-20220310101419-a9af4bd8b9f5
17+
github.com/mattn/go-sqlite3 v1.14.12
1718
github.com/robfig/cron v1.2.0
1819
github.com/rs/zerolog v1.25.0
1920
github.com/spf13/viper v1.7.1

‎src/go.sum

+2
Original file line numberDiff line numberDiff line change
@@ -592,6 +592,8 @@ github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hd
592592
github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU=
593593
github.com/mattn/go-shellwords v1.0.3/go.mod h1:3xCvwCdWdlDJUrvuMn7Wuy9eWs4pE8vqg+NOMyg4B2o=
594594
github.com/mattn/go-shellwords v1.0.10/go.mod h1:EZzvwXDESEeg03EKmM+RmDnNOPKG4lLtQsUlTZDWQ8Y=
595+
github.com/mattn/go-sqlite3 v1.14.12 h1:TJ1bhYJPV44phC+IMu1u2K/i5RriLTPe+yc68XDJ1Z0=
596+
github.com/mattn/go-sqlite3 v1.14.12/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU=
595597
github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0=
596598
github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4=
597599
github.com/mdlayher/arp v0.0.0-20190313224443-98a83c8a2717/go.mod h1:eOj1DDj3NAZ6yv+WafaKzY37MFZ58TdfIhQ+8nQbiis=

‎src/libs/common.go

+1
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,7 @@ func SetDefaultConfig() {
104104
viper.SetDefault("database.dbname", "accuknox")
105105
viper.SetDefault("database.host", "127.0.0.1")
106106
viper.SetDefault("database.port", "3306")
107+
viper.SetDefault("database.sqlite-db-path","./accuknox.db")
107108
viper.SetDefault("database.table-network-policy", "network_policy")
108109
viper.SetDefault("database.table-system-policy", "system_policy")
109110

‎src/libs/dbHandler.go

+77-13
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,13 @@ func GetNetworkPolicies(cfg types.ConfigDB, cluster, namespace, status, nwtype,
2626
return results
2727
}
2828
results = docs
29-
}
29+
} else if cfg.DBDriver == "sqlite3" {
30+
docs, err := GetNetworkPoliciesFromSQLite(cfg, cluster, namespace, status)
31+
if err != nil {
32+
return results
33+
}
34+
results = docs
35+
}
3036

3137
return results
3238
}
@@ -40,7 +46,13 @@ func GetNetworkPoliciesBySelector(cfg types.ConfigDB, cluster, namespace, status
4046
return nil, err
4147
}
4248
results = docs
43-
} else {
49+
} else if cfg.DBDriver == "sqlite3" {
50+
docs, err := GetNetworkPoliciesFromSQLite(cfg, cluster, namespace, status)
51+
if err != nil {
52+
return nil, err
53+
}
54+
results = docs
55+
} else {
4456
return results, nil
4557
}
4658

@@ -68,15 +80,24 @@ func UpdateOutdatedNetworkPolicy(cfg types.ConfigDB, outdatedPolicy string, late
6880
if err := UpdateOutdatedNetworkPolicyFromMySQL(cfg, outdatedPolicy, latestPolicy); err != nil {
6981
log.Error().Msg(err.Error())
7082
}
71-
}
83+
} else if cfg.DBDriver == "sqlite3" {
84+
if err := UpdateOutdatedNetworkPolicyFromSQLite(cfg, outdatedPolicy, latestPolicy); err != nil {
85+
log.Error().Msg(err.Error())
86+
}
87+
}
7288
}
7389

7490
func InsertNetworkPolicies(cfg types.ConfigDB, policies []types.KnoxNetworkPolicy) {
7591
if cfg.DBDriver == "mysql" {
7692
if err := InsertNetworkPoliciesToMySQL(cfg, policies); err != nil {
7793
log.Error().Msg(err.Error())
7894
}
79-
}
95+
} else if cfg.DBDriver == "sqlite3" {
96+
if err := InsertNetworkPoliciesToSQLite(cfg, policies); err != nil {
97+
log.Error().Msg(err.Error())
98+
}
99+
}
100+
80101
}
81102

82103
// ================ //
@@ -102,7 +123,11 @@ func UpdateOutdatedSystemPolicy(cfg types.ConfigDB, outdatedPolicy string, lates
102123
if err := UpdateOutdatedNetworkPolicyFromMySQL(cfg, outdatedPolicy, latestPolicy); err != nil {
103124
log.Error().Msg(err.Error())
104125
}
105-
}
126+
} else if cfg.DBDriver == "sqlite3" {
127+
if err := UpdateOutdatedNetworkPolicyFromSQLite(cfg, outdatedPolicy, latestPolicy); err != nil {
128+
log.Error().Msg(err.Error())
129+
}
130+
}
106131
}
107132

108133
func GetSystemPolicies(cfg types.ConfigDB, namespace, status string) []types.KnoxSystemPolicy {
@@ -114,7 +139,13 @@ func GetSystemPolicies(cfg types.ConfigDB, namespace, status string) []types.Kno
114139
return results
115140
}
116141
results = docs
117-
}
142+
} else if cfg.DBDriver == "sqlite3" {
143+
docs, err := GetSystemPoliciesFromSQLite(cfg, namespace, status)
144+
if err != nil {
145+
return results
146+
}
147+
results = docs
148+
}
118149

119150
return results
120151
}
@@ -124,15 +155,24 @@ func InsertSystemPolicies(cfg types.ConfigDB, policies []types.KnoxSystemPolicy)
124155
if err := InsertSystemPoliciesToMySQL(cfg, policies); err != nil {
125156
log.Error().Msg(err.Error())
126157
}
127-
}
158+
} else if cfg.DBDriver == "sqlite3" {
159+
if err := InsertSystemPoliciesToSQLite(cfg, policies); err != nil {
160+
log.Error().Msg(err.Error())
161+
}
162+
}
128163
}
129164

130165
func UpdateSystemPolicy(cfg types.ConfigDB, policy types.KnoxSystemPolicy) {
131166
if cfg.DBDriver == "mysql" {
132167
if err := UpdateSystemPolicyToMySQL(cfg, policy); err != nil {
133168
log.Error().Msg(err.Error())
134169
}
135-
}
170+
} else if cfg.DBDriver == "sqlite3" {
171+
if err := UpdateSystemPolicyToSQLite(cfg, policy); err != nil {
172+
log.Error().Msg(err.Error())
173+
}
174+
}
175+
136176
}
137177

138178
func GetWorkloadProcessFileSet(cfg types.ConfigDB, wpfs types.WorkloadProcessFileSet) (map[types.WorkloadProcessFileSet][]string, types.PolicyNameMap, error) {
@@ -142,21 +182,31 @@ func GetWorkloadProcessFileSet(cfg types.ConfigDB, wpfs types.WorkloadProcessFil
142182
log.Error().Msg(err.Error())
143183
}
144184
return res, pnMap, err
145-
}
185+
} else if cfg.DBDriver == "sqlite3" {
186+
res, pnMap, err := GetWorkloadProcessFileSetSQLite(cfg, wpfs)
187+
if err != nil {
188+
log.Error().Msg(err.Error())
189+
}
190+
return res, pnMap, err
191+
}
146192
return nil, nil, errors.New("no db driver")
147193
}
148194

149195
func InsertWorkloadProcessFileSet(cfg types.ConfigDB, wpfs types.WorkloadProcessFileSet, fs []string) error {
150196
if cfg.DBDriver == "mysql" {
151197
return InsertWorkloadProcessFileSetMySQL(cfg, wpfs, fs)
152-
}
198+
} else if cfg.DBDriver == "sqlite3" {
199+
return InsertWorkloadProcessFileSetSQLite(cfg, wpfs, fs)
200+
}
153201
return errors.New("no db driver")
154202
}
155203

156204
func ClearWPFSDb(cfg types.ConfigDB, wpfs types.WorkloadProcessFileSet, duration int64) error {
157205
if cfg.DBDriver == "mysql" {
158206
return ClearWPFSDbMySQL(cfg, wpfs, duration)
159-
}
207+
} else if cfg.DBDriver == "sqlite3" {
208+
return ClearWPFSDbSQLite(cfg, wpfs, duration)
209+
}
160210
return errors.New("no db driver")
161211
}
162212

@@ -169,7 +219,11 @@ func ClearDBTables(cfg types.ConfigDB) {
169219
if err := ClearDBTablesMySQL(cfg); err != nil {
170220
log.Error().Msg(err.Error())
171221
}
172-
}
222+
} else if cfg.DBDriver == "sqlite3" {
223+
if err := ClearDBTablesSQLite(cfg); err != nil {
224+
log.Error().Msg(err.Error())
225+
}
226+
}
173227
}
174228

175229
func ClearNetworkDBTable(cfg types.ConfigDB) {
@@ -191,5 +245,15 @@ func CreateTablesIfNotExist(cfg types.ConfigDB) {
191245
if err := CreateTableWorkLoadProcessFileSetMySQL(cfg); err != nil {
192246
log.Error().Msg(err.Error())
193247
}
194-
}
248+
} else if cfg.DBDriver == "sqlite3" {
249+
if err := CreateTableNetworkPolicySQLite(cfg); err != nil {
250+
log.Error().Msg(err.Error())
251+
}
252+
if err := CreateTableSystemPolicySQLite(cfg); err != nil {
253+
log.Error().Msg(err.Error())
254+
}
255+
if err := CreateTableWorkLoadProcessFileSetSQLite(cfg); err != nil {
256+
log.Error().Msg(err.Error())
257+
}
258+
}
195259
}

‎src/libs/dbHandler_test.go

+43
Original file line numberDiff line numberDiff line change
@@ -98,3 +98,46 @@ func TestInsertNetworkPolicies(t *testing.T) {
9898
t.Errorf(Unmet+"%s", err)
9999
}
100100
}
101+
102+
func TestInsertNetworkPoliciesSQLite(t *testing.T) {
103+
// prepare mock sqlite
104+
_, mock := NewMock()
105+
106+
policy := types.KnoxNetworkPolicy{}
107+
108+
specPtr := &policy.Spec
109+
spec, _ := json.Marshal(specPtr)
110+
111+
flowIDsPrt := &policy.FlowIDs
112+
flowID, _ := json.Marshal(flowIDsPrt)
113+
114+
prep := mock.ExpectPrepare("INSERT INTO network_policy")
115+
prep.ExpectExec().
116+
WithArgs(
117+
"", // str
118+
"kind", // str
119+
flowID, // []byte
120+
"", // str
121+
"", // str
122+
"", // str
123+
"", // str
124+
"", // str
125+
"", // str
126+
"", // str
127+
spec, // []byte
128+
0, // int
129+
).WillReturnResult(sqlmock.NewResult(0, 1))
130+
131+
nfe := []types.KnoxNetworkPolicy{
132+
types.KnoxNetworkPolicy{
133+
Kind: "kind",
134+
},
135+
}
136+
137+
err := InsertNetworkPoliciesToSQLite(types.ConfigDB{DBDriver: "sqlite3"}, nfe)
138+
assert.NoError(t, err)
139+
140+
if err := mock.ExpectationsWereMet(); err != nil {
141+
t.Errorf(Unmet+"%s", err)
142+
}
143+
}

0 commit comments

Comments
 (0)
Please sign in to comment.