Merge pull request #23094 from taosdata/fix/fixIpWhitelistAddUser
fix ip white for all users
This commit is contained in:
commit
0f4e38faf7
|
@ -47,7 +47,7 @@ void mndUserFreeObj(SUserObj *pUser);
|
||||||
|
|
||||||
int64_t mndGetIpWhiteVer(SMnode *pMnode);
|
int64_t mndGetIpWhiteVer(SMnode *pMnode);
|
||||||
|
|
||||||
void mndUpdateIpWhite(SMnode *pMnode, char *user, char *fqdn, int8_t type, int8_t lock);
|
void mndUpdateIpWhiteForAllUser(SMnode *pMnode, char *user, char *fqdn, int8_t type, int8_t lock);
|
||||||
|
|
||||||
int32_t mndRefreshUserIpWhiteList(SMnode *pMnode);
|
int32_t mndRefreshUserIpWhiteList(SMnode *pMnode);
|
||||||
|
|
||||||
|
|
|
@ -147,7 +147,7 @@ static int32_t mndCreateDefaultDnode(SMnode *pMnode) {
|
||||||
|
|
||||||
if (mndTransPrepare(pMnode, pTrans) != 0) goto _OVER;
|
if (mndTransPrepare(pMnode, pTrans) != 0) goto _OVER;
|
||||||
code = 0;
|
code = 0;
|
||||||
mndUpdateIpWhite(pMnode, TSDB_DEFAULT_USER, dnodeObj.fqdn, IP_WHITE_ADD, 1);
|
mndUpdateIpWhiteForAllUser(pMnode, TSDB_DEFAULT_USER, dnodeObj.fqdn, IP_WHITE_ADD, 1);
|
||||||
|
|
||||||
_OVER:
|
_OVER:
|
||||||
mndTransDrop(pTrans);
|
mndTransDrop(pTrans);
|
||||||
|
@ -752,7 +752,7 @@ static int32_t mndCreateDnode(SMnode *pMnode, SRpcMsg *pReq, SCreateDnodeReq *pC
|
||||||
if (mndTransPrepare(pMnode, pTrans) != 0) goto _OVER;
|
if (mndTransPrepare(pMnode, pTrans) != 0) goto _OVER;
|
||||||
code = 0;
|
code = 0;
|
||||||
|
|
||||||
mndUpdateIpWhite(pMnode, TSDB_DEFAULT_USER, dnodeObj.fqdn, IP_WHITE_ADD, 1);
|
mndUpdateIpWhiteForAllUser(pMnode, TSDB_DEFAULT_USER, dnodeObj.fqdn, IP_WHITE_ADD, 1);
|
||||||
_OVER:
|
_OVER:
|
||||||
mndTransDrop(pTrans);
|
mndTransDrop(pTrans);
|
||||||
sdbFreeRaw(pRaw);
|
sdbFreeRaw(pRaw);
|
||||||
|
@ -1045,7 +1045,7 @@ static int32_t mndDropDnode(SMnode *pMnode, SRpcMsg *pReq, SDnodeObj *pDnode, SM
|
||||||
|
|
||||||
if (mndTransPrepare(pMnode, pTrans) != 0) goto _OVER;
|
if (mndTransPrepare(pMnode, pTrans) != 0) goto _OVER;
|
||||||
|
|
||||||
mndUpdateIpWhite(pMnode, TSDB_DEFAULT_USER, pDnode->fqdn, IP_WHITE_DROP, 1);
|
mndUpdateIpWhiteForAllUser(pMnode, TSDB_DEFAULT_USER, pDnode->fqdn, IP_WHITE_DROP, 1);
|
||||||
code = 0;
|
code = 0;
|
||||||
|
|
||||||
_OVER:
|
_OVER:
|
||||||
|
@ -1191,7 +1191,7 @@ static int32_t mndProcessConfigDnodeReq(SRpcMsg *pReq) {
|
||||||
|
|
||||||
strcpy(dcfgReq.config, "monitor");
|
strcpy(dcfgReq.config, "monitor");
|
||||||
snprintf(dcfgReq.value, TSDB_DNODE_VALUE_LEN, "%d", flag);
|
snprintf(dcfgReq.value, TSDB_DNODE_VALUE_LEN, "%d", flag);
|
||||||
} else if (strncasecmp(cfgReq.config, "ttlpushinterval", 14) == 0) {
|
} else if (strncasecmp(cfgReq.config, "ttlpushinterval", 14) == 0) {
|
||||||
int32_t optLen = strlen("ttlpushinterval");
|
int32_t optLen = strlen("ttlpushinterval");
|
||||||
int32_t flag = -1;
|
int32_t flag = -1;
|
||||||
int32_t code = mndMCfgGetValInt32(&cfgReq, optLen, &flag);
|
int32_t code = mndMCfgGetValInt32(&cfgReq, optLen, &flag);
|
||||||
|
|
|
@ -58,7 +58,7 @@ static int32_t mndRetrievePrivileges(SRpcMsg *pReq, SShowObj *pShow, SSDataBloc
|
||||||
static void mndCancelGetNextPrivileges(SMnode *pMnode, void *pIter);
|
static void mndCancelGetNextPrivileges(SMnode *pMnode, void *pIter);
|
||||||
SHashObj *mndFetchAllIpWhite(SMnode *pMnode);
|
SHashObj *mndFetchAllIpWhite(SMnode *pMnode);
|
||||||
static int32_t mndProcesSRetrieveIpWhiteReq(SRpcMsg *pReq);
|
static int32_t mndProcesSRetrieveIpWhiteReq(SRpcMsg *pReq);
|
||||||
bool mndUpdateIpWhiteImpl(SHashObj *pIpWhiteTab, char *user, char *fqdn, int8_t type);
|
bool mndUpdateIpWhiteImpl(SHashObj *pIpWhiteTab, char *user, char *fqdn, int8_t type);
|
||||||
|
|
||||||
void ipWhiteMgtUpdateAll(SMnode *pMnode);
|
void ipWhiteMgtUpdateAll(SMnode *pMnode);
|
||||||
typedef struct {
|
typedef struct {
|
||||||
|
@ -103,7 +103,8 @@ int32_t ipWhiteMgtUpdate(SMnode *pMnode, char *user, SIpWhiteList *pNew) {
|
||||||
|
|
||||||
for (int i = 0; i < taosArrayGetSize(fqdns); i++) {
|
for (int i = 0; i < taosArrayGetSize(fqdns); i++) {
|
||||||
char *fqdn = taosArrayGetP(fqdns, i);
|
char *fqdn = taosArrayGetP(fqdns, i);
|
||||||
mndUpdateIpWhiteImpl(ipWhiteMgt.pIpWhiteTab, TSDB_DEFAULT_USER, fqdn, IP_WHITE_ADD);
|
update |= mndUpdateIpWhiteImpl(ipWhiteMgt.pIpWhiteTab, TSDB_DEFAULT_USER, fqdn, IP_WHITE_ADD);
|
||||||
|
update |= mndUpdateIpWhiteImpl(ipWhiteMgt.pIpWhiteTab, user, fqdn, IP_WHITE_ADD);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int i = 0; i < taosArrayGetSize(fqdns); i++) {
|
for (int i = 0; i < taosArrayGetSize(fqdns); i++) {
|
||||||
|
@ -115,8 +116,7 @@ int32_t ipWhiteMgtUpdate(SMnode *pMnode, char *user, SIpWhiteList *pNew) {
|
||||||
// for (int i = 0; i < taosArrayGetSize(pUserNames); i++) {
|
// for (int i = 0; i < taosArrayGetSize(pUserNames); i++) {
|
||||||
// taosMemoryFree(taosArrayGetP(pUserNames, i));
|
// taosMemoryFree(taosArrayGetP(pUserNames, i));
|
||||||
// }
|
// }
|
||||||
//taosArrayDestroy(pUserNames);
|
// taosArrayDestroy(pUserNames);
|
||||||
|
|
||||||
|
|
||||||
if (update) ipWhiteMgt.ver++;
|
if (update) ipWhiteMgt.ver++;
|
||||||
|
|
||||||
|
@ -302,7 +302,7 @@ int32_t mndRefreshUserIpWhiteList(SMnode *pMnode) {
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
void mndUpdateIpWhite(SMnode *pMnode, char *user, char *fqdn, int8_t type, int8_t lock) {
|
void mndUpdateIpWhiteForAllUser(SMnode *pMnode, char *user, char *fqdn, int8_t type, int8_t lock) {
|
||||||
if (lock) {
|
if (lock) {
|
||||||
taosThreadRwlockWrlock(&ipWhiteMgt.rw);
|
taosThreadRwlockWrlock(&ipWhiteMgt.rw);
|
||||||
if (ipWhiteMgt.ver == 0) {
|
if (ipWhiteMgt.ver == 0) {
|
||||||
|
@ -313,6 +313,20 @@ void mndUpdateIpWhite(SMnode *pMnode, char *user, char *fqdn, int8_t type, int8_
|
||||||
}
|
}
|
||||||
|
|
||||||
bool update = mndUpdateIpWhiteImpl(ipWhiteMgt.pIpWhiteTab, user, fqdn, type);
|
bool update = mndUpdateIpWhiteImpl(ipWhiteMgt.pIpWhiteTab, user, fqdn, type);
|
||||||
|
|
||||||
|
void *pIter = taosHashIterate(ipWhiteMgt.pIpWhiteTab, NULL);
|
||||||
|
while (pIter) {
|
||||||
|
size_t klen = 0;
|
||||||
|
char *key = taosHashGetKey(pIter, &klen);
|
||||||
|
|
||||||
|
char *keyDup = taosMemoryCalloc(1, klen + 1);
|
||||||
|
memcpy(keyDup, key, klen);
|
||||||
|
update |= mndUpdateIpWhiteImpl(ipWhiteMgt.pIpWhiteTab, keyDup, fqdn, type);
|
||||||
|
taosMemoryFree(keyDup);
|
||||||
|
|
||||||
|
pIter = taosHashIterate(ipWhiteMgt.pIpWhiteTab, pIter);
|
||||||
|
}
|
||||||
|
|
||||||
if (update) ipWhiteMgt.ver++;
|
if (update) ipWhiteMgt.ver++;
|
||||||
|
|
||||||
if (lock) taosThreadRwlockUnlock(&ipWhiteMgt.rw);
|
if (lock) taosThreadRwlockUnlock(&ipWhiteMgt.rw);
|
||||||
|
|
Loading…
Reference in New Issue