6
6
"fmt"
7
7
"io"
8
8
"os"
9
+ "path"
9
10
"strconv"
10
11
"strings"
11
12
@@ -68,7 +69,15 @@ func paser_low(database string, table string) (map[string]*bptree.Tree, []string
68
69
}
69
70
70
71
//types_parsed = strings.Split(string(types), "|")
71
- data_parsed = strings .Split (string (data ), "|" )
72
+ //解密部分
73
+ var cn = make (chan string )
74
+ go DecryptAES (string (data ), plainText , cn )
75
+ var o_cn = <- cn
76
+ if o_cn == "" {
77
+ return trees , data_parsed , log .ALL_ERR ("Decode failed" )
78
+ }
79
+
80
+ data_parsed = strings .Split (o_cn , "|" )
72
81
//解析头 为每个头创建树
73
82
74
83
for i := 0 ; i < len (data_parsed ); i ++ {
@@ -81,14 +90,22 @@ func paser_low(database string, table string) (map[string]*bptree.Tree, []string
81
90
for {
82
91
//读取下一行
83
92
var data_line , _ , err_tr = table_reader .ReadLine ()
93
+
84
94
if err_tr != nil {
85
95
if err_tr == io .EOF {
86
96
log .STDLOG ("Read table finish" , table )
87
97
break
88
98
}
89
99
}
90
100
91
- var data_parsed_line []string = strings .Split (string (data_line ), "|" )
101
+ var cn = make (chan string )
102
+ go DecryptAES (string (data_line ), plainText , cn )
103
+ var o_cn = <- cn
104
+ if o_cn == "" {
105
+ return trees , data_parsed , log .ALL_ERR ("Decode failed" )
106
+ }
107
+
108
+ var data_parsed_line []string = strings .Split (o_cn , "|" )
92
109
//fmt.Printf("len(trees): %v\n", len(trees))
93
110
//fmt.Printf("len(data_parsed_line): %v\n", len(data_parsed_line))
94
111
//fmt.Printf("len(data_parsed): %v\n", len(data_parsed))
@@ -130,19 +147,34 @@ func match(database string, table string, condition map[string]any, usage string
130
147
defer table_file .Close ()
131
148
132
149
var reader = bufio .NewReader (table_file )
133
- //空读取第一行
150
+ //读取第一行
134
151
var keys , _ , err_key = reader .ReadLine ()
135
152
if err_key != nil {
136
153
return table_path , end_target , keys_parsed , types_parsed , tree , log .ALL_ATA_ERR ("Read data type failed" , usage )
137
154
}
138
- keys_parsed = strings .Split (string (keys ), "|" )
155
+
156
+ var cn = make (chan string )
157
+ go DecryptAES (string (keys ), plainText , cn )
158
+ var o_cn = <- cn
159
+ if o_cn == "" {
160
+ return table_path , end_target , keys_parsed , types_parsed , tree , log .ALL_ATA_ERR ("Decode data failed" , usage )
161
+ }
162
+
163
+ keys_parsed = strings .Split (o_cn , "|" )
139
164
//读取第二行获取数据类型
140
165
//这里支持的有string int float boolean string[]
141
166
var types , _ , err_rd = reader .ReadLine ()
142
167
if err_rd != nil {
143
168
return table_path , end_target , keys_parsed , types_parsed , tree , log .ALL_ATA_ERR ("Read data type failed" , usage )
144
169
}
145
- types_parsed = strings .Split (string (types ), "|" )
170
+
171
+ var cn2 = make (chan string )
172
+ go DecryptAES (string (types ), plainText , cn2 )
173
+ var o_cn2 = <- cn2
174
+ if o_cn2 == "" {
175
+ return table_path , end_target , keys_parsed , types_parsed , tree , log .ALL_ATA_ERR ("Decode data failed" , usage )
176
+ }
177
+ types_parsed = strings .Split (o_cn2 , "|" )
146
178
147
179
if len (keys_parsed ) == 0 || len (types_parsed ) == 0 {
148
180
return table_path , end_target , keys_parsed , types_parsed , tree , log .ALL_ATA_ERR ("Zero kyes or types" , usage )
@@ -418,7 +450,15 @@ func Insert(database string, table string, data []string) error {
418
450
if err_rd != nil {
419
451
return log .ALL_ERR ("Read data type failed" )
420
452
}
421
- var types_parsed = strings .Split (string (types ), "|" )
453
+
454
+ var cn3 = make (chan string )
455
+ go DecryptAES (string (types ), plainText , cn3 )
456
+ var o_cn3 = <- cn3
457
+ if o_cn3 == "" {
458
+ return log .ALL_ERR ("Decode data failed" )
459
+ }
460
+
461
+ var types_parsed = strings .Split (o_cn3 , "|" )
422
462
//现在构造新的字符串插入到文件末尾
423
463
var input []string
424
464
var index int = 0
@@ -477,7 +517,13 @@ func Insert(database string, table string, data []string) error {
477
517
}
478
518
defer w_table_file .Close ()
479
519
var writer = bufio .NewWriter (w_table_file )
480
- writer .WriteString (strings .Join (input , "|" ) + "\n " )
520
+ var cn = make (chan string )
521
+ go EncryptAES (strings .Join (input , "|" ), plainText , cn )
522
+ var o_cn = <- cn
523
+ if o_cn == "" {
524
+ return log .ALL_ERR ("Encode failed" )
525
+ }
526
+ writer .WriteString (o_cn + "\n " )
481
527
return writer .Flush ()
482
528
}
483
529
@@ -515,9 +561,21 @@ func Update(database string, table string, condition map[string]any, data map[st
515
561
//用缓冲区我只能说性能更下一层楼
516
562
var writer = bufio .NewWriter (file )
517
563
//先把头和数据类型读进去
518
- writer .WriteString (strings .Join (keys_parsed , "|" ) + "\n " )
564
+ var cn = make (chan string )
565
+ go EncryptAES (strings .Join (keys_parsed , "|" ), plainText , cn )
566
+ var o_cn = <- cn
567
+ if o_cn == "" {
568
+ return log .ALL_ERR ("Encode failed" )
569
+ }
570
+ writer .WriteString (o_cn + "\n " )
519
571
//fmt.Printf("keys_parsed: %v\n", keys_parsed)
520
- writer .WriteString (strings .Join (types_parsed , "|" ) + "\n " )
572
+ var cn2 = make (chan string )
573
+ go EncryptAES (strings .Join (types_parsed , "|" ), plainText , cn2 )
574
+ var o_cn2 = <- cn2
575
+ if o_cn2 == "" {
576
+ return log .ALL_ERR ("Encode failed" )
577
+ }
578
+ writer .WriteString (o_cn2 + "\n " )
521
579
var line_index int = 0
522
580
for _ , index := range end_target {
523
581
var result []string
@@ -604,7 +662,13 @@ func Update(database string, table string, condition map[string]any, data map[st
604
662
//推进ReadLine函数
605
663
if line_index == index {
606
664
//对应行 则写入不同数据
607
- writer .WriteString (strings .Join (result , "|" ) + "\n " )
665
+ var cn = make (chan string )
666
+ go EncryptAES (strings .Join (result , "|" ), plainText , cn )
667
+ var o_cn = <- cn
668
+ if o_cn == "" {
669
+ return log .ALL_ERR ("Encode failed" )
670
+ }
671
+ writer .WriteString (o_cn + "\n " )
608
672
//补上空读一行
609
673
reader .ReadLine ()
610
674
line_index ++
@@ -672,8 +736,21 @@ func Delete(database string, table string, condition map[string]any, is_arc bool
672
736
//用缓冲区我只能说性能更下一层楼
673
737
var writer = bufio .NewWriter (file )
674
738
//先把头和数据类型读进去
675
- writer .WriteString (strings .Join (keys_parsed , "|" ) + "\n " )
676
- writer .WriteString (strings .Join (types_parsed , "|" ) + "\n " )
739
+ var cn = make (chan string )
740
+ go EncryptAES (strings .Join (keys_parsed , "|" ), plainText , cn )
741
+ var o_cn = <- cn
742
+ if o_cn == "" {
743
+ return log .ALL_ERR ("Encode failed" )
744
+ }
745
+ writer .WriteString (o_cn + "\n " )
746
+ //fmt.Printf("keys_parsed: %v\n", keys_parsed)
747
+ var cn2 = make (chan string )
748
+ go EncryptAES (strings .Join (types_parsed , "|" ), plainText , cn2 )
749
+ var o_cn2 = <- cn2
750
+ if o_cn2 == "" {
751
+ return log .ALL_ERR ("Encode failed" )
752
+ }
753
+ writer .WriteString (o_cn2 + "\n " )
677
754
678
755
var line_index int = 0
679
756
for _ , index := range end_target {
@@ -782,8 +859,7 @@ func Create_Database(database string, user string) error {
782
859
if se_err_r != nil {
783
860
return log .Runtime_log_err (& err.DatabaseError {Msg : "Can't select from permission when create database" })
784
861
}
785
- var getss_r []string
786
- getss_r = (strings .Split (gets_r [0 ][0 ], "," ))
862
+ var getss_r = (strings .Split (gets_r [0 ][0 ], "," ))
787
863
var data_r = make (map [string ]any )
788
864
data_r ["permits" ] = strings .Join (append (getss_r , database + ".*" ), "," )
789
865
Get_Access ("information_schema" , "permission" )
@@ -880,7 +956,7 @@ func Create_Table_No_Map(user string, database string, table string, head []stri
880
956
}
881
957
882
958
var cn = make (chan bool )
883
- go PermissionCheck (user , database ,cn )
959
+ go PermissionCheck (user , database , cn )
884
960
//true说明允许创建表
885
961
if ! <- cn {
886
962
return & err.DatabaseError {Msg : "Permission delined when create table" }
@@ -893,7 +969,8 @@ func Create_Table_No_Map(user string, database string, table string, head []stri
893
969
// 请确保调用该函数时head长度为2的倍数
894
970
func create_table_User_No_Map (database string , table string , head []string ) error {
895
971
//传入应该有表头
896
- var table_path = fmt .Sprintf ("./db/%s/%s.table" , database , table )
972
+
973
+ var table_path = path .Join ("db" , database , table + ".table" ) //fmt.Sprintf("./db/%s/%s.table", database, table)
897
974
if len (head ) == 0 {
898
975
return log .ALL_ERR ("Empty table head" )
899
976
}
@@ -925,11 +1002,25 @@ func create_table_User_No_Map(database string, table string, head []string) erro
925
1002
types = append (types , head [i + 1 ])
926
1003
}
927
1004
928
- fmt .Printf ("heads: %v\n " , heads )
929
- fmt .Printf ("types: %v\n " , types )
1005
+ //fmt.Printf("heads: %v\n", heads)
1006
+ //fmt.Printf("types: %v\n", types)
1007
+ //先把头和数据类型读进去
1008
+ var cn = make (chan string )
1009
+ go EncryptAES (strings .Join (heads , "|" ), plainText , cn )
1010
+ var o_cn = <- cn
1011
+ if o_cn == "" {
1012
+ return log .ALL_ERR ("Encode failed" )
1013
+ }
1014
+ //fmt.Printf("keys_parsed: %v\n", keys_parsed)
1015
+ var cn2 = make (chan string )
1016
+ go EncryptAES (strings .Join (types , "|" ), plainText , cn2 )
1017
+ var o_cn2 = <- cn2
1018
+ if o_cn2 == "" {
1019
+ return log .ALL_ERR ("Encode failed" )
1020
+ }
930
1021
931
- var heads_output = strings . Join ( heads , "|" ) + "\n "
932
- var types_output = strings . Join ( types , "|" ) + "\n "
1022
+ var heads_output = o_cn + "\n "
1023
+ var types_output = o_cn2 + "\n "
933
1024
//写入文件
934
1025
var _ , err_r = writer .WriteString (heads_output )
935
1026
if err_r != nil {
@@ -953,7 +1044,7 @@ func Create_Table(user string, database string, table string, head map[string]st
953
1044
}
954
1045
955
1046
var cn = make (chan bool )
956
- go PermissionCheck (user , database ,cn )
1047
+ go PermissionCheck (user , database , cn )
957
1048
//true说明允许创建表
958
1049
if ! <- cn {
959
1050
return & err.DatabaseError {Msg : "Permission delined when create table" }
@@ -996,11 +1087,24 @@ func create_table_User(database string, table string, head map[string]string) er
996
1087
types = append (types , value )
997
1088
}
998
1089
999
- fmt .Printf ("heads: %v\n " , heads )
1000
- fmt .Printf ("types: %v\n " , types )
1090
+ //fmt.Printf("heads: %v\n", heads)
1091
+ //fmt.Printf("types: %v\n", types)
1092
+ var cn = make (chan string )
1093
+ go EncryptAES (strings .Join (heads , "|" ), plainText , cn )
1094
+ var o_cn = <- cn
1095
+ if o_cn == "" {
1096
+ return log .ALL_ERR ("Encode failed" )
1097
+ }
1098
+ //fmt.Printf("keys_parsed: %v\n", keys_parsed)
1099
+ var cn2 = make (chan string )
1100
+ go EncryptAES (strings .Join (types , "|" ), plainText , cn2 )
1101
+ var o_cn2 = <- cn2
1102
+ if o_cn2 == "" {
1103
+ return log .ALL_ERR ("Encode failed" )
1104
+ }
1001
1105
1002
- var heads_output = strings . Join ( heads , "|" ) + "\n "
1003
- var types_output = strings . Join ( types , "|" ) + "\n "
1106
+ var heads_output = o_cn + "\n "
1107
+ var types_output = o_cn2 + "\n "
1004
1108
//写入文件
1005
1109
var _ , err_r = writer .WriteString (heads_output )
1006
1110
if err_r != nil {
@@ -1043,8 +1147,14 @@ func GetAllTypes(database string, table string) ([]string, error) {
1043
1147
if err_rd != nil {
1044
1148
return types_parsed , log .ALL_ERR ("Read data type failed" )
1045
1149
}
1150
+ var cn = make (chan string )
1151
+ go DecryptAES (string (types ), plainText , cn )
1152
+ var o_cn = <- cn
1153
+ if o_cn == "" {
1154
+ return types_parsed , log .ALL_ERR ("Encode failed" )
1155
+ }
1046
1156
1047
- types_parsed = strings .Split (string ( types ) , "|" )
1157
+ types_parsed = strings .Split (o_cn , "|" )
1048
1158
return types_parsed , nil
1049
1159
}
1050
1160
@@ -1070,11 +1180,18 @@ func GetAllKeys(database string, table string) ([]string, error) {
1070
1180
1071
1181
var reader = bufio .NewReader (table_file )
1072
1182
1073
- var types , _ , err_rd = reader .ReadLine ()
1183
+ var keys , _ , err_rd = reader .ReadLine ()
1074
1184
if err_rd != nil {
1075
1185
return keys_parsed , log .ALL_ERR ("Read keys failed" )
1076
1186
}
1077
1187
1078
- keys_parsed = strings .Split (string (types ), "|" )
1188
+ var cn = make (chan string )
1189
+ go DecryptAES (string (keys ), plainText , cn )
1190
+ var o_cn = <- cn
1191
+ if o_cn == "" {
1192
+ return keys_parsed , log .ALL_ERR ("Encode failed" )
1193
+ }
1194
+
1195
+ keys_parsed = strings .Split (o_cn , "|" )
1079
1196
return keys_parsed , nil
1080
1197
}
0 commit comments