enhance: ip range white list to user

This commit is contained in:
slzhou 2023-08-24 15:54:10 +08:00
parent 588e453df7
commit b16470414a
7 changed files with 6176 additions and 4891 deletions

View File

@ -184,6 +184,8 @@ typedef enum _mgmt_table {
#define TSDB_ALTER_USER_REMOVE_WRITE_TABLE 0x10 #define TSDB_ALTER_USER_REMOVE_WRITE_TABLE 0x10
#define TSDB_ALTER_USER_ADD_ALL_TABLE 0x11 #define TSDB_ALTER_USER_ADD_ALL_TABLE 0x11
#define TSDB_ALTER_USER_REMOVE_ALL_TABLE 0x12 #define TSDB_ALTER_USER_REMOVE_ALL_TABLE 0x12
#define TSDB_ALTER_USER_ADD_WHITE_LIST 0x13
#define TSDB_ALTER_USER_DROP_WHITE_LIST 0x14
#define TSDB_ALTER_USER_PRIVILEGES 0x2 #define TSDB_ALTER_USER_PRIVILEGES 0x2

View File

@ -16,6 +16,7 @@
#ifndef _TD_COMMON_TOKEN_H_ #ifndef _TD_COMMON_TOKEN_H_
#define _TD_COMMON_TOKEN_H_ #define _TD_COMMON_TOKEN_H_
#define TK_OR 1 #define TK_OR 1
#define TK_AND 2 #define TK_AND 2
#define TK_UNION 3 #define TK_UNION 3
@ -48,315 +49,313 @@
#define TK_USERS 30 #define TK_USERS 30
#define TK_CONNS 31 #define TK_CONNS 31
#define TK_STATE 32 #define TK_STATE 32
#define TK_USER 33 #define TK_NK_COMMA 33
#define TK_ENABLE 34 #define TK_HOST 34
#define TK_NK_INTEGER 35 #define TK_USER 35
#define TK_SYSINFO 36 #define TK_ENABLE 36
#define TK_DROP 37 #define TK_NK_INTEGER 37
#define TK_GRANT 38 #define TK_SYSINFO 38
#define TK_ON 39 #define TK_ADD 39
#define TK_TO 40 #define TK_DROP 40
#define TK_REVOKE 41 #define TK_GRANT 41
#define TK_FROM 42 #define TK_ON 42
#define TK_SUBSCRIBE 43 #define TK_TO 43
#define TK_NK_COMMA 44 #define TK_REVOKE 44
#define TK_READ 45 #define TK_FROM 45
#define TK_WRITE 46 #define TK_SUBSCRIBE 46
#define TK_NK_DOT 47 #define TK_READ 47
#define TK_WITH 48 #define TK_WRITE 48
#define TK_DNODE 49 #define TK_NK_DOT 49
#define TK_PORT 50 #define TK_WITH 50
#define TK_DNODES 51 #define TK_DNODE 51
#define TK_RESTORE 52 #define TK_PORT 52
#define TK_NK_IPTOKEN 53 #define TK_DNODES 53
#define TK_FORCE 54 #define TK_RESTORE 54
#define TK_UNSAFE 55 #define TK_NK_IPTOKEN 55
#define TK_LOCAL 56 #define TK_FORCE 56
#define TK_QNODE 57 #define TK_UNSAFE 57
#define TK_BNODE 58 #define TK_LOCAL 58
#define TK_SNODE 59 #define TK_QNODE 59
#define TK_MNODE 60 #define TK_BNODE 60
#define TK_VNODE 61 #define TK_SNODE 61
#define TK_DATABASE 62 #define TK_MNODE 62
#define TK_USE 63 #define TK_VNODE 63
#define TK_FLUSH 64 #define TK_DATABASE 64
#define TK_TRIM 65 #define TK_USE 65
#define TK_COMPACT 66 #define TK_FLUSH 66
#define TK_IF 67 #define TK_TRIM 67
#define TK_NOT 68 #define TK_COMPACT 68
#define TK_EXISTS 69 #define TK_IF 69
#define TK_BUFFER 70 #define TK_NOT 70
#define TK_CACHEMODEL 71 #define TK_EXISTS 71
#define TK_CACHESIZE 72 #define TK_BUFFER 72
#define TK_COMP 73 #define TK_CACHEMODEL 73
#define TK_DURATION 74 #define TK_CACHESIZE 74
#define TK_NK_VARIABLE 75 #define TK_COMP 75
#define TK_MAXROWS 76 #define TK_DURATION 76
#define TK_MINROWS 77 #define TK_NK_VARIABLE 77
#define TK_KEEP 78 #define TK_MAXROWS 78
#define TK_PAGES 79 #define TK_MINROWS 79
#define TK_PAGESIZE 80 #define TK_KEEP 80
#define TK_TSDB_PAGESIZE 81 #define TK_PAGES 81
#define TK_PRECISION 82 #define TK_PAGESIZE 82
#define TK_REPLICA 83 #define TK_TSDB_PAGESIZE 83
#define TK_VGROUPS 84 #define TK_PRECISION 84
#define TK_SINGLE_STABLE 85 #define TK_REPLICA 85
#define TK_RETENTIONS 86 #define TK_VGROUPS 86
#define TK_SCHEMALESS 87 #define TK_SINGLE_STABLE 87
#define TK_WAL_LEVEL 88 #define TK_RETENTIONS 88
#define TK_WAL_FSYNC_PERIOD 89 #define TK_SCHEMALESS 89
#define TK_WAL_RETENTION_PERIOD 90 #define TK_WAL_LEVEL 90
#define TK_WAL_RETENTION_SIZE 91 #define TK_WAL_FSYNC_PERIOD 91
#define TK_WAL_ROLL_PERIOD 92 #define TK_WAL_RETENTION_PERIOD 92
#define TK_WAL_SEGMENT_SIZE 93 #define TK_WAL_RETENTION_SIZE 93
#define TK_STT_TRIGGER 94 #define TK_WAL_ROLL_PERIOD 94
#define TK_TABLE_PREFIX 95 #define TK_WAL_SEGMENT_SIZE 95
#define TK_TABLE_SUFFIX 96 #define TK_STT_TRIGGER 96
#define TK_NK_COLON 97 #define TK_TABLE_PREFIX 97
#define TK_MAX_SPEED 98 #define TK_TABLE_SUFFIX 98
#define TK_START 99 #define TK_NK_COLON 99
#define TK_TIMESTAMP 100 #define TK_MAX_SPEED 100
#define TK_END 101 #define TK_START 101
#define TK_TABLE 102 #define TK_TIMESTAMP 102
#define TK_NK_LP 103 #define TK_END 103
#define TK_NK_RP 104 #define TK_TABLE 104
#define TK_STABLE 105 #define TK_NK_LP 105
#define TK_ADD 106 #define TK_NK_RP 106
#define TK_COLUMN 107 #define TK_STABLE 107
#define TK_MODIFY 108 #define TK_COLUMN 108
#define TK_RENAME 109 #define TK_MODIFY 109
#define TK_TAG 110 #define TK_RENAME 110
#define TK_SET 111 #define TK_TAG 111
#define TK_NK_EQ 112 #define TK_SET 112
#define TK_USING 113 #define TK_NK_EQ 113
#define TK_TAGS 114 #define TK_USING 114
#define TK_COMMENT 115 #define TK_TAGS 115
#define TK_BOOL 116 #define TK_COMMENT 116
#define TK_TINYINT 117 #define TK_BOOL 117
#define TK_SMALLINT 118 #define TK_TINYINT 118
#define TK_INT 119 #define TK_SMALLINT 119
#define TK_INTEGER 120 #define TK_INT 120
#define TK_BIGINT 121 #define TK_INTEGER 121
#define TK_FLOAT 122 #define TK_BIGINT 122
#define TK_DOUBLE 123 #define TK_FLOAT 123
#define TK_BINARY 124 #define TK_DOUBLE 124
#define TK_NCHAR 125 #define TK_BINARY 125
#define TK_UNSIGNED 126 #define TK_NCHAR 126
#define TK_JSON 127 #define TK_UNSIGNED 127
#define TK_VARCHAR 128 #define TK_JSON 128
#define TK_MEDIUMBLOB 129 #define TK_VARCHAR 129
#define TK_BLOB 130 #define TK_MEDIUMBLOB 130
#define TK_VARBINARY 131 #define TK_BLOB 131
#define TK_GEOMETRY 132 #define TK_VARBINARY 132
#define TK_DECIMAL 133 #define TK_GEOMETRY 133
#define TK_MAX_DELAY 134 #define TK_DECIMAL 134
#define TK_WATERMARK 135 #define TK_MAX_DELAY 135
#define TK_ROLLUP 136 #define TK_WATERMARK 136
#define TK_TTL 137 #define TK_ROLLUP 137
#define TK_SMA 138 #define TK_TTL 138
#define TK_DELETE_MARK 139 #define TK_SMA 139
#define TK_FIRST 140 #define TK_DELETE_MARK 140
#define TK_LAST 141 #define TK_FIRST 141
#define TK_SHOW 142 #define TK_LAST 142
#define TK_PRIVILEGES 143 #define TK_SHOW 143
#define TK_DATABASES 144 #define TK_PRIVILEGES 144
#define TK_TABLES 145 #define TK_DATABASES 145
#define TK_STABLES 146 #define TK_TABLES 146
#define TK_MNODES 147 #define TK_STABLES 147
#define TK_QNODES 148 #define TK_MNODES 148
#define TK_FUNCTIONS 149 #define TK_QNODES 149
#define TK_INDEXES 150 #define TK_FUNCTIONS 150
#define TK_ACCOUNTS 151 #define TK_INDEXES 151
#define TK_APPS 152 #define TK_ACCOUNTS 152
#define TK_CONNECTIONS 153 #define TK_APPS 153
#define TK_LICENCES 154 #define TK_CONNECTIONS 154
#define TK_GRANTS 155 #define TK_LICENCES 155
#define TK_QUERIES 156 #define TK_GRANTS 156
#define TK_SCORES 157 #define TK_QUERIES 157
#define TK_TOPICS 158 #define TK_SCORES 158
#define TK_VARIABLES 159 #define TK_TOPICS 159
#define TK_CLUSTER 160 #define TK_VARIABLES 160
#define TK_BNODES 161 #define TK_CLUSTER 161
#define TK_SNODES 162 #define TK_BNODES 162
#define TK_TRANSACTIONS 163 #define TK_SNODES 163
#define TK_DISTRIBUTED 164 #define TK_TRANSACTIONS 164
#define TK_CONSUMERS 165 #define TK_DISTRIBUTED 165
#define TK_SUBSCRIPTIONS 166 #define TK_CONSUMERS 166
#define TK_VNODES 167 #define TK_SUBSCRIPTIONS 167
#define TK_ALIVE 168 #define TK_VNODES 168
#define TK_LIKE 169 #define TK_ALIVE 169
#define TK_TBNAME 170 #define TK_LIKE 170
#define TK_QTAGS 171 #define TK_TBNAME 171
#define TK_AS 172 #define TK_QTAGS 172
#define TK_INDEX 173 #define TK_AS 173
#define TK_FUNCTION 174 #define TK_INDEX 174
#define TK_INTERVAL 175 #define TK_FUNCTION 175
#define TK_COUNT 176 #define TK_INTERVAL 176
#define TK_LAST_ROW 177 #define TK_COUNT 177
#define TK_META 178 #define TK_LAST_ROW 178
#define TK_ONLY 179 #define TK_META 179
#define TK_TOPIC 180 #define TK_ONLY 180
#define TK_CONSUMER 181 #define TK_TOPIC 181
#define TK_GROUP 182 #define TK_CONSUMER 182
#define TK_DESC 183 #define TK_GROUP 183
#define TK_DESCRIBE 184 #define TK_DESC 184
#define TK_RESET 185 #define TK_DESCRIBE 185
#define TK_QUERY 186 #define TK_RESET 186
#define TK_CACHE 187 #define TK_QUERY 187
#define TK_EXPLAIN 188 #define TK_CACHE 188
#define TK_ANALYZE 189 #define TK_EXPLAIN 189
#define TK_VERBOSE 190 #define TK_ANALYZE 190
#define TK_NK_BOOL 191 #define TK_VERBOSE 191
#define TK_RATIO 192 #define TK_NK_BOOL 192
#define TK_NK_FLOAT 193 #define TK_RATIO 193
#define TK_OUTPUTTYPE 194 #define TK_NK_FLOAT 194
#define TK_AGGREGATE 195 #define TK_OUTPUTTYPE 195
#define TK_BUFSIZE 196 #define TK_AGGREGATE 196
#define TK_LANGUAGE 197 #define TK_BUFSIZE 197
#define TK_REPLACE 198 #define TK_LANGUAGE 198
#define TK_STREAM 199 #define TK_REPLACE 199
#define TK_INTO 200 #define TK_STREAM 200
#define TK_PAUSE 201 #define TK_INTO 201
#define TK_RESUME 202 #define TK_PAUSE 202
#define TK_TRIGGER 203 #define TK_RESUME 203
#define TK_AT_ONCE 204 #define TK_TRIGGER 204
#define TK_WINDOW_CLOSE 205 #define TK_AT_ONCE 205
#define TK_IGNORE 206 #define TK_WINDOW_CLOSE 206
#define TK_EXPIRED 207 #define TK_IGNORE 207
#define TK_FILL_HISTORY 208 #define TK_EXPIRED 208
#define TK_UPDATE 209 #define TK_FILL_HISTORY 209
#define TK_SUBTABLE 210 #define TK_UPDATE 210
#define TK_UNTREATED 211 #define TK_SUBTABLE 211
#define TK_KILL 212 #define TK_UNTREATED 212
#define TK_CONNECTION 213 #define TK_KILL 213
#define TK_TRANSACTION 214 #define TK_CONNECTION 214
#define TK_BALANCE 215 #define TK_TRANSACTION 215
#define TK_VGROUP 216 #define TK_BALANCE 216
#define TK_LEADER 217 #define TK_VGROUP 217
#define TK_MERGE 218 #define TK_LEADER 218
#define TK_REDISTRIBUTE 219 #define TK_MERGE 219
#define TK_SPLIT 220 #define TK_REDISTRIBUTE 220
#define TK_DELETE 221 #define TK_SPLIT 221
#define TK_INSERT 222 #define TK_DELETE 222
#define TK_NULL 223 #define TK_INSERT 223
#define TK_NK_QUESTION 224 #define TK_NULL 224
#define TK_NK_ARROW 225 #define TK_NK_QUESTION 225
#define TK_ROWTS 226 #define TK_NK_ARROW 226
#define TK_QSTART 227 #define TK_ROWTS 227
#define TK_QEND 228 #define TK_QSTART 228
#define TK_QDURATION 229 #define TK_QEND 229
#define TK_WSTART 230 #define TK_QDURATION 230
#define TK_WEND 231 #define TK_WSTART 231
#define TK_WDURATION 232 #define TK_WEND 232
#define TK_IROWTS 233 #define TK_WDURATION 233
#define TK_ISFILLED 234 #define TK_IROWTS 234
#define TK_CAST 235 #define TK_ISFILLED 235
#define TK_NOW 236 #define TK_CAST 236
#define TK_TODAY 237 #define TK_NOW 237
#define TK_TIMEZONE 238 #define TK_TODAY 238
#define TK_CLIENT_VERSION 239 #define TK_TIMEZONE 239
#define TK_SERVER_VERSION 240 #define TK_CLIENT_VERSION 240
#define TK_SERVER_STATUS 241 #define TK_SERVER_VERSION 241
#define TK_CURRENT_USER 242 #define TK_SERVER_STATUS 242
#define TK_CASE 243 #define TK_CURRENT_USER 243
#define TK_WHEN 244 #define TK_CASE 244
#define TK_THEN 245 #define TK_WHEN 245
#define TK_ELSE 246 #define TK_THEN 246
#define TK_BETWEEN 247 #define TK_ELSE 247
#define TK_IS 248 #define TK_BETWEEN 248
#define TK_NK_LT 249 #define TK_IS 249
#define TK_NK_GT 250 #define TK_NK_LT 250
#define TK_NK_LE 251 #define TK_NK_GT 251
#define TK_NK_GE 252 #define TK_NK_LE 252
#define TK_NK_NE 253 #define TK_NK_GE 253
#define TK_MATCH 254 #define TK_NK_NE 254
#define TK_NMATCH 255 #define TK_MATCH 255
#define TK_CONTAINS 256 #define TK_NMATCH 256
#define TK_IN 257 #define TK_CONTAINS 257
#define TK_JOIN 258 #define TK_IN 258
#define TK_INNER 259 #define TK_JOIN 259
#define TK_SELECT 260 #define TK_INNER 260
#define TK_NK_HINT 261 #define TK_SELECT 261
#define TK_DISTINCT 262 #define TK_NK_HINT 262
#define TK_WHERE 263 #define TK_DISTINCT 263
#define TK_PARTITION 264 #define TK_WHERE 264
#define TK_BY 265 #define TK_PARTITION 265
#define TK_SESSION 266 #define TK_BY 266
#define TK_STATE_WINDOW 267 #define TK_SESSION 267
#define TK_EVENT_WINDOW 268 #define TK_STATE_WINDOW 268
#define TK_SLIDING 269 #define TK_EVENT_WINDOW 269
#define TK_FILL 270 #define TK_SLIDING 270
#define TK_VALUE 271 #define TK_FILL 271
#define TK_VALUE_F 272 #define TK_VALUE 272
#define TK_NONE 273 #define TK_VALUE_F 273
#define TK_PREV 274 #define TK_NONE 274
#define TK_NULL_F 275 #define TK_PREV 275
#define TK_LINEAR 276 #define TK_NULL_F 276
#define TK_NEXT 277 #define TK_LINEAR 277
#define TK_HAVING 278 #define TK_NEXT 278
#define TK_RANGE 279 #define TK_HAVING 279
#define TK_EVERY 280 #define TK_RANGE 280
#define TK_ORDER 281 #define TK_EVERY 281
#define TK_SLIMIT 282 #define TK_ORDER 282
#define TK_SOFFSET 283 #define TK_SLIMIT 283
#define TK_LIMIT 284 #define TK_SOFFSET 284
#define TK_OFFSET 285 #define TK_LIMIT 285
#define TK_ASC 286 #define TK_OFFSET 286
#define TK_NULLS 287 #define TK_ASC 287
#define TK_ABORT 288 #define TK_NULLS 288
#define TK_AFTER 289 #define TK_ABORT 289
#define TK_ATTACH 290 #define TK_AFTER 290
#define TK_BEFORE 291 #define TK_ATTACH 291
#define TK_BEGIN 292 #define TK_BEFORE 292
#define TK_BITAND 293 #define TK_BEGIN 293
#define TK_BITNOT 294 #define TK_BITAND 294
#define TK_BITOR 295 #define TK_BITNOT 295
#define TK_BLOCKS 296 #define TK_BITOR 296
#define TK_CHANGE 297 #define TK_BLOCKS 297
#define TK_COMMA 298 #define TK_CHANGE 298
#define TK_CONCAT 299 #define TK_COMMA 299
#define TK_CONFLICT 300 #define TK_CONCAT 300
#define TK_COPY 301 #define TK_CONFLICT 301
#define TK_DEFERRED 302 #define TK_COPY 302
#define TK_DELIMITERS 303 #define TK_DEFERRED 303
#define TK_DETACH 304 #define TK_DELIMITERS 304
#define TK_DIVIDE 305 #define TK_DETACH 305
#define TK_DOT 306 #define TK_DIVIDE 306
#define TK_EACH 307 #define TK_DOT 307
#define TK_FAIL 308 #define TK_EACH 308
#define TK_FILE 309 #define TK_FAIL 309
#define TK_FOR 310 #define TK_FILE 310
#define TK_GLOB 311 #define TK_FOR 311
#define TK_ID 312 #define TK_GLOB 312
#define TK_IMMEDIATE 313 #define TK_ID 313
#define TK_IMPORT 314 #define TK_IMMEDIATE 314
#define TK_INITIALLY 315 #define TK_IMPORT 315
#define TK_INSTEAD 316 #define TK_INITIALLY 316
#define TK_ISNULL 317 #define TK_INSTEAD 317
#define TK_KEY 318 #define TK_ISNULL 318
#define TK_MODULES 319 #define TK_KEY 319
#define TK_NK_BITNOT 320 #define TK_MODULES 320
#define TK_NK_SEMI 321 #define TK_NK_BITNOT 321
#define TK_NOTNULL 322 #define TK_NK_SEMI 322
#define TK_OF 323 #define TK_NOTNULL 323
#define TK_PLUS 324 #define TK_OF 324
#define TK_PRIVILEGE 325 #define TK_PLUS 325
#define TK_RAISE 326 #define TK_PRIVILEGE 326
#define TK_RESTRICT 327 #define TK_RAISE 327
#define TK_ROW 328 #define TK_RESTRICT 328
#define TK_SEMI 329 #define TK_ROW 329
#define TK_STAR 330 #define TK_SEMI 330
#define TK_STATEMENT 331 #define TK_STAR 331
#define TK_STRICT 332 #define TK_STATEMENT 332
#define TK_STRING 333 #define TK_STRICT 333
#define TK_TIMES 334 #define TK_STRING 334
#define TK_VALUES 335 #define TK_TIMES 335
#define TK_VARIABLE 336 #define TK_VALUES 336
#define TK_VIEW 337 #define TK_VARIABLE 337
#define TK_WAL 338 #define TK_VIEW 338
#define TK_WAL 339
#define TK_NK_SPACE 600 #define TK_NK_SPACE 600

View File

@ -191,7 +191,8 @@ SNode* createShowDnodeVariablesStmt(SAstCreateContext* pCxt, SNode* pDnodeId, SN
SNode* createShowVnodesStmt(SAstCreateContext* pCxt, SNode* pDnodeId, SNode* pDnodeEndpoint); SNode* createShowVnodesStmt(SAstCreateContext* pCxt, SNode* pDnodeId, SNode* pDnodeEndpoint);
SNode* createShowTableTagsStmt(SAstCreateContext* pCxt, SNode* pTbName, SNode* pDbName, SNodeList* pTags); SNode* createShowTableTagsStmt(SAstCreateContext* pCxt, SNode* pTbName, SNode* pDbName, SNodeList* pTags);
SNode* createCreateUserStmt(SAstCreateContext* pCxt, SToken* pUserName, const SToken* pPassword, int8_t sysinfo); SNode* createCreateUserStmt(SAstCreateContext* pCxt, SToken* pUserName, const SToken* pPassword, int8_t sysinfo);
SNode* createAlterUserStmt(SAstCreateContext* pCxt, SToken* pUserName, int8_t alterType, const SToken* pVal); SNode* addCreateUserStmtWhiteList(SAstCreateContext* pCxt, SNode* pStmt, SNodeList* pIpRangesNodeList);
SNode* createAlterUserStmt(SAstCreateContext* pCxt, SToken* pUserName, int8_t alterType, void* pAlterInfo);
SNode* createDropUserStmt(SAstCreateContext* pCxt, SToken* pUserName); SNode* createDropUserStmt(SAstCreateContext* pCxt, SToken* pUserName);
SNode* createCreateDnodeStmt(SAstCreateContext* pCxt, const SToken* pFqdn, const SToken* pPort); SNode* createCreateDnodeStmt(SAstCreateContext* pCxt, const SToken* pFqdn, const SToken* pPort);
SNode* createDropDnodeStmt(SAstCreateContext* pCxt, const SToken* pDnode, bool force, bool unsafe); SNode* createDropDnodeStmt(SAstCreateContext* pCxt, const SToken* pDnode, bool force, bool unsafe);

View File

@ -81,11 +81,31 @@ alter_account_option ::= USERS literal.
alter_account_option ::= CONNS literal. { } alter_account_option ::= CONNS literal. { }
alter_account_option ::= STATE literal. { } alter_account_option ::= STATE literal. { }
%type ip_range_list { SNodeList* }
%destructor ip_range_list { nodesDestroyList($$); }
ip_range_list(A) ::= NK_STRING(B). { A = createNodeList(pCxt, createValueNode(pCxt, TSDB_DATA_TYPE_BINARY, &B)); }
ip_range_list(A) ::= ip_range_list(B) NK_COMMA NK_STRING(C). { A = addNodeToList(pCxt, B, createValueNode(pCxt, TSDB_DATA_TYPE_BINARY, &C)); }
%type white_list { SNodeList* }
%destructor white_list { nodesDestroyList($$); }
white_list(A) ::= HOST ip_range_list(B). { A = B; }
%type white_list_opt { SNodeList* }
%destructor white_list_opt { nodesDestroyList($$); }
white_list_opt(A) ::= . { A = NULL; }
white_list_opt(A) ::= white_list(B). { A = B; }
/************************************************ create/alter/drop user **********************************************/ /************************************************ create/alter/drop user **********************************************/
cmd ::= CREATE USER user_name(A) PASS NK_STRING(B) sysinfo_opt(C). { pCxt->pRootNode = createCreateUserStmt(pCxt, &A, &B, C); } cmd ::= CREATE USER user_name(A) PASS NK_STRING(B) sysinfo_opt(C)
white_list_opt(D). {
pCxt->pRootNode = createCreateUserStmt(pCxt, &A, &B, C);
addCreateUserStmtWhiteList(pCxt, pCxt->pRootNode, D);
}
cmd ::= ALTER USER user_name(A) PASS NK_STRING(B). { pCxt->pRootNode = createAlterUserStmt(pCxt, &A, TSDB_ALTER_USER_PASSWD, &B); } cmd ::= ALTER USER user_name(A) PASS NK_STRING(B). { pCxt->pRootNode = createAlterUserStmt(pCxt, &A, TSDB_ALTER_USER_PASSWD, &B); }
cmd ::= ALTER USER user_name(A) ENABLE NK_INTEGER(B). { pCxt->pRootNode = createAlterUserStmt(pCxt, &A, TSDB_ALTER_USER_ENABLE, &B); } cmd ::= ALTER USER user_name(A) ENABLE NK_INTEGER(B). { pCxt->pRootNode = createAlterUserStmt(pCxt, &A, TSDB_ALTER_USER_ENABLE, &B); }
cmd ::= ALTER USER user_name(A) SYSINFO NK_INTEGER(B). { pCxt->pRootNode = createAlterUserStmt(pCxt, &A, TSDB_ALTER_USER_SYSINFO, &B); } cmd ::= ALTER USER user_name(A) SYSINFO NK_INTEGER(B). { pCxt->pRootNode = createAlterUserStmt(pCxt, &A, TSDB_ALTER_USER_SYSINFO, &B); }
cmd ::= ALTER USER user_name(A) ADD white_list(B). { pCxt->pRootNode = createAlterUserStmt(pCxt, &A, TSDB_ALTER_USER_ADD_WHITE_LIST, B); }
cmd ::= ALTER USER user_name(A) DROP white_list(B). { pCxt->pRootNode = createAlterUserStmt(pCxt, &A, TSDB_ALTER_USER_DROP_WHITE_LIST, B); }
cmd ::= DROP USER user_name(A). { pCxt->pRootNode = createDropUserStmt(pCxt, &A); } cmd ::= DROP USER user_name(A). { pCxt->pRootNode = createDropUserStmt(pCxt, &A); }
%type sysinfo_opt { int8_t } %type sysinfo_opt { int8_t }

View File

@ -1663,7 +1663,21 @@ SNode* createCreateUserStmt(SAstCreateContext* pCxt, SToken* pUserName, const ST
return (SNode*)pStmt; return (SNode*)pStmt;
} }
SNode* createAlterUserStmt(SAstCreateContext* pCxt, SToken* pUserName, int8_t alterType, const SToken* pVal) { SNode* addCreateUserStmtWhiteList(SAstCreateContext* pCxt, SNode* pCreateUserStmt, SNodeList* pIpRangesNodeList) {
if (pIpRangesNodeList == NULL) {
return pCreateUserStmt;
}
SNode* pNode = NULL;
FOREACH(pNode, pIpRangesNodeList) {
char* pStr = NULL;
nodesNodeToString(pNode, false, &pStr, NULL);
printf("%s\n", pStr);
taosMemoryFree(pStr);
}
return pCreateUserStmt;
}
SNode* createAlterUserStmt(SAstCreateContext* pCxt, SToken* pUserName, int8_t alterType, void* pAlterInfo) {
CHECK_PARSER_STATUS(pCxt); CHECK_PARSER_STATUS(pCxt);
if (!checkUserName(pCxt, pUserName)) { if (!checkUserName(pCxt, pUserName)) {
return NULL; return NULL;
@ -1675,6 +1689,7 @@ SNode* createAlterUserStmt(SAstCreateContext* pCxt, SToken* pUserName, int8_t al
switch (alterType) { switch (alterType) {
case TSDB_ALTER_USER_PASSWD: { case TSDB_ALTER_USER_PASSWD: {
char password[TSDB_USET_PASSWORD_LEN] = {0}; char password[TSDB_USET_PASSWORD_LEN] = {0};
SToken* pVal = pAlterInfo;
if (!checkPassword(pCxt, pVal, password)) { if (!checkPassword(pCxt, pVal, password)) {
nodesDestroyNode((SNode*)pStmt); nodesDestroyNode((SNode*)pStmt);
return NULL; return NULL;
@ -1682,12 +1697,27 @@ SNode* createAlterUserStmt(SAstCreateContext* pCxt, SToken* pUserName, int8_t al
strcpy(pStmt->password, password); strcpy(pStmt->password, password);
break; break;
} }
case TSDB_ALTER_USER_ENABLE: case TSDB_ALTER_USER_ENABLE: {
SToken* pVal = pAlterInfo;
pStmt->enable = taosStr2Int8(pVal->z, NULL, 10); pStmt->enable = taosStr2Int8(pVal->z, NULL, 10);
break; break;
case TSDB_ALTER_USER_SYSINFO: }
case TSDB_ALTER_USER_SYSINFO: {
SToken* pVal = pAlterInfo;
pStmt->sysinfo = taosStr2Int8(pVal->z, NULL, 10); pStmt->sysinfo = taosStr2Int8(pVal->z, NULL, 10);
break; break;
}
case TSDB_ALTER_USER_ADD_WHITE_LIST:
case TSDB_ALTER_USER_DROP_WHITE_LIST: {
SNodeList* pIpRangesNodeList = pAlterInfo;
SNode* pNode = NULL;
FOREACH(pNode, pIpRangesNodeList) {
char* pStr = NULL;
nodesNodeToString(pNode, false, &pStr, NULL);
printf("%s\n", pStr);
taosMemoryFree(pStr);
}
}
default: default:
break; break;
} }

View File

@ -109,6 +109,7 @@ static SKeyword keywordTable[] = {
{"GRANTS", TK_GRANTS}, {"GRANTS", TK_GRANTS},
{"GROUP", TK_GROUP}, {"GROUP", TK_GROUP},
{"HAVING", TK_HAVING}, {"HAVING", TK_HAVING},
{"HOST", TK_HOST},
{"IF", TK_IF}, {"IF", TK_IF},
{"IGNORE", TK_IGNORE}, {"IGNORE", TK_IGNORE},
{"IMPORT", TK_IMPORT}, {"IMPORT", TK_IMPORT},

File diff suppressed because it is too large Load Diff