Merge branch 'enh/ipWhiteList' of https://github.com/taosdata/TDengine into enh/ipWhiteList
This commit is contained in:
parent
a7d4547a2d
commit
02f5f4f017
|
@ -39,6 +39,8 @@ static bool isIpRangeEqual(SIpV4Range *a, SIpV4Range *b);
|
||||||
|
|
||||||
void destroyIpWhiteTab(SHashObj *pIpWhiteTab);
|
void destroyIpWhiteTab(SHashObj *pIpWhiteTab);
|
||||||
|
|
||||||
|
#define MND_MAX_USE_HOST (TSDB_PRIVILEDGE_HOST_LEN / 24)
|
||||||
|
|
||||||
static int32_t mndCreateDefaultUsers(SMnode *pMnode);
|
static int32_t mndCreateDefaultUsers(SMnode *pMnode);
|
||||||
static SSdbRow *mndUserActionDecode(SSdbRaw *pRaw);
|
static SSdbRow *mndUserActionDecode(SSdbRaw *pRaw);
|
||||||
static int32_t mndUserActionInsert(SSdb *pSdb, SUserObj *pUser);
|
static int32_t mndUserActionInsert(SSdb *pSdb, SUserObj *pUser);
|
||||||
|
@ -66,6 +68,8 @@ typedef struct {
|
||||||
|
|
||||||
static SIpWhiteMgt ipWhiteMgt;
|
static SIpWhiteMgt ipWhiteMgt;
|
||||||
|
|
||||||
|
const static SIpV4Range defaultIpRange = {.ip = 16777343, .mask = 32};
|
||||||
|
|
||||||
void ipWhiteMgtInit() {
|
void ipWhiteMgtInit() {
|
||||||
ipWhiteMgt.pIpWhiteTab = taosHashInit(8, taosGetDefaultHashFunction(TSDB_DATA_TYPE_BINARY), 1, HASH_ENTRY_LOCK);
|
ipWhiteMgt.pIpWhiteTab = taosHashInit(8, taosGetDefaultHashFunction(TSDB_DATA_TYPE_BINARY), 1, HASH_ENTRY_LOCK);
|
||||||
ipWhiteMgt.ver = 0;
|
ipWhiteMgt.ver = 0;
|
||||||
|
@ -446,7 +450,6 @@ static int32_t ipRangeListToStr(SIpV4Range *range, int32_t num, char *buf) {
|
||||||
for (int i = 0; i < num; i++) {
|
for (int i = 0; i < num; i++) {
|
||||||
char tbuf[36] = {0};
|
char tbuf[36] = {0};
|
||||||
SIpV4Range *pRange = &range[i];
|
SIpV4Range *pRange = &range[i];
|
||||||
// if (isDefaultRange(pRange)) continue;
|
|
||||||
|
|
||||||
ipRangeToStr(&range[i], tbuf);
|
ipRangeToStr(&range[i], tbuf);
|
||||||
len += sprintf(buf + len, "%s,", tbuf);
|
len += sprintf(buf + len, "%s,", tbuf);
|
||||||
|
@ -1118,7 +1121,12 @@ static int32_t mndCreateUser(SMnode *pMnode, char *acct, SCreateUserReq *pCreate
|
||||||
userObj.pIpWhiteList = createDefaultIpWhiteList();
|
userObj.pIpWhiteList = createDefaultIpWhiteList();
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
SIpWhiteList *p = taosMemoryCalloc(1, sizeof(SIpWhiteList) + pCreate->numIpRanges * sizeof(SIpV4Range) + 1);
|
if (pCreate->numIpRanges > MND_MAX_USE_HOST) {
|
||||||
|
terrno = TSDB_CODE_MND_TOO_MANY_USER_HOST;
|
||||||
|
return terrno;
|
||||||
|
}
|
||||||
|
|
||||||
|
SIpWhiteList *p = taosMemoryCalloc(1, sizeof(SIpWhiteList) + (pCreate->numIpRanges + 1) * sizeof(SIpV4Range));
|
||||||
bool localHost = false;
|
bool localHost = false;
|
||||||
for (int i = 0; i < pCreate->numIpRanges; i++) {
|
for (int i = 0; i < pCreate->numIpRanges; i++) {
|
||||||
p->pIpRange[i].ip = pCreate->pIpRanges[i].ip;
|
p->pIpRange[i].ip = pCreate->pIpRanges[i].ip;
|
||||||
|
@ -1129,8 +1137,8 @@ static int32_t mndCreateUser(SMnode *pMnode, char *acct, SCreateUserReq *pCreate
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (localHost == false) {
|
if (localHost == false) {
|
||||||
p->pIpRange[pCreate->numIpRanges].ip = 16777343;
|
p->pIpRange[pCreate->numIpRanges].ip = defaultIpRange.ip;
|
||||||
p->pIpRange[pCreate->numIpRanges].mask = 32;
|
p->pIpRange[pCreate->numIpRanges].mask = defaultIpRange.mask;
|
||||||
p->num = pCreate->numIpRanges + 1;
|
p->num = pCreate->numIpRanges + 1;
|
||||||
} else {
|
} else {
|
||||||
p->num = pCreate->numIpRanges;
|
p->num = pCreate->numIpRanges;
|
||||||
|
@ -1704,7 +1712,7 @@ static int32_t mndProcessAlterUserReq(SRpcMsg *pReq) {
|
||||||
newUser.pIpWhiteList = pNew;
|
newUser.pIpWhiteList = pNew;
|
||||||
newUser.ipWhiteListVer = pUser->ipWhiteListVer + 1;
|
newUser.ipWhiteListVer = pUser->ipWhiteListVer + 1;
|
||||||
|
|
||||||
if (pNew->num >= TSDB_PRIVILEDGE_HOST_LEN / 24) {
|
if (pNew->num > MND_MAX_USE_HOST) {
|
||||||
terrno = TSDB_CODE_MND_TOO_MANY_USER_HOST;
|
terrno = TSDB_CODE_MND_TOO_MANY_USER_HOST;
|
||||||
code = terrno;
|
code = terrno;
|
||||||
goto _OVER;
|
goto _OVER;
|
||||||
|
|
Loading…
Reference in New Issue