commit
d3d8ad5ec6
|
@ -63,6 +63,7 @@ int32_t tscInitRpc(const char *user, const char *secret, void** pDnodeConn) {
|
||||||
rpcInit.user = (char*)user;
|
rpcInit.user = (char*)user;
|
||||||
rpcInit.idleTime = 2000;
|
rpcInit.idleTime = 2000;
|
||||||
rpcInit.ckey = "key";
|
rpcInit.ckey = "key";
|
||||||
|
rpcInit.spi = 1;
|
||||||
rpcInit.secret = secretEncrypt;
|
rpcInit.secret = secretEncrypt;
|
||||||
|
|
||||||
*pDnodeConn = rpcOpen(&rpcInit);
|
*pDnodeConn = rpcOpen(&rpcInit);
|
||||||
|
|
|
@ -52,7 +52,8 @@ int32_t dnodeInitServer() {
|
||||||
dnodeProcessReqMsgFp[TSDB_MSG_TYPE_DM_CONFIG_VNODE] = mgmtProcessReqMsgFromDnode;
|
dnodeProcessReqMsgFp[TSDB_MSG_TYPE_DM_CONFIG_VNODE] = mgmtProcessReqMsgFromDnode;
|
||||||
dnodeProcessReqMsgFp[TSDB_MSG_TYPE_DM_GRANT] = mgmtProcessReqMsgFromDnode;
|
dnodeProcessReqMsgFp[TSDB_MSG_TYPE_DM_GRANT] = mgmtProcessReqMsgFromDnode;
|
||||||
dnodeProcessReqMsgFp[TSDB_MSG_TYPE_DM_STATUS] = mgmtProcessReqMsgFromDnode;
|
dnodeProcessReqMsgFp[TSDB_MSG_TYPE_DM_STATUS] = mgmtProcessReqMsgFromDnode;
|
||||||
|
dnodeProcessReqMsgFp[TSDB_MSG_TYPE_DM_AUTH] = mgmtProcessReqMsgFromDnode;
|
||||||
|
|
||||||
SRpcInit rpcInit;
|
SRpcInit rpcInit;
|
||||||
memset(&rpcInit, 0, sizeof(rpcInit));
|
memset(&rpcInit, 0, sizeof(rpcInit));
|
||||||
rpcInit.localPort = tsDnodeDnodePort;
|
rpcInit.localPort = tsDnodeDnodePort;
|
||||||
|
@ -163,3 +164,9 @@ void dnodeAddClientRspHandle(uint8_t msgType, void (*fp)(SRpcMsg *rpcMsg)) {
|
||||||
void dnodeSendMsgToDnode(SRpcIpSet *ipSet, SRpcMsg *rpcMsg) {
|
void dnodeSendMsgToDnode(SRpcIpSet *ipSet, SRpcMsg *rpcMsg) {
|
||||||
rpcSendRequest(tsDnodeClientRpc, ipSet, rpcMsg);
|
rpcSendRequest(tsDnodeClientRpc, ipSet, rpcMsg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void dnodeSendMsgToDnodeRecv(SRpcMsg *rpcMsg, SRpcMsg *rpcRsp) {
|
||||||
|
SRpcIpSet ipSet = {0};
|
||||||
|
dnodeGetMnodeDnodeIpSet(&ipSet);
|
||||||
|
rpcSendRecv(tsDnodeClientRpc, &ipSet, rpcMsg, rpcRsp);
|
||||||
|
}
|
||||||
|
|
|
@ -21,6 +21,7 @@
|
||||||
#include "trpc.h"
|
#include "trpc.h"
|
||||||
#include "tglobal.h"
|
#include "tglobal.h"
|
||||||
#include "http.h"
|
#include "http.h"
|
||||||
|
#include "mnode.h"
|
||||||
#include "dnode.h"
|
#include "dnode.h"
|
||||||
#include "dnodeInt.h"
|
#include "dnodeInt.h"
|
||||||
#include "dnodeVRead.h"
|
#include "dnodeVRead.h"
|
||||||
|
@ -138,7 +139,34 @@ void dnodeProcessMsgFromShell(SRpcMsg *pMsg, SRpcIpSet *pIpSet) {
|
||||||
}
|
}
|
||||||
|
|
||||||
static int dnodeRetrieveUserAuthInfo(char *user, char *spi, char *encrypt, char *secret, char *ckey) {
|
static int dnodeRetrieveUserAuthInfo(char *user, char *spi, char *encrypt, char *secret, char *ckey) {
|
||||||
return TSDB_CODE_SUCCESS;
|
int code = mgmtRetriveAuth(user, spi, encrypt, secret, ckey);
|
||||||
|
if (code != TSDB_CODE_NOT_READY) return code;
|
||||||
|
|
||||||
|
SDMAuthMsg *pMsg = rpcMallocCont(sizeof(SDMAuthMsg));
|
||||||
|
strcpy(pMsg->user, user);
|
||||||
|
|
||||||
|
SRpcMsg rpcMsg = {0};
|
||||||
|
rpcMsg.pCont = pMsg;
|
||||||
|
rpcMsg.contLen = sizeof(SDMAuthMsg);
|
||||||
|
rpcMsg.msgType = TSDB_MSG_TYPE_DM_AUTH;
|
||||||
|
|
||||||
|
dTrace("user:%s, send auth msg to mnode", user);
|
||||||
|
SRpcMsg rpcRsp = {0};
|
||||||
|
dnodeSendMsgToDnodeRecv(&rpcMsg, &rpcRsp);
|
||||||
|
|
||||||
|
if (rpcRsp.code != 0) {
|
||||||
|
dError("user:%s, auth msg received from mnode, error:%s", user, tstrerror(rpcRsp.code));
|
||||||
|
} else {
|
||||||
|
dTrace("user:%s, auth msg received from mnode", user);
|
||||||
|
SDMAuthRsp *pRsp = rpcRsp.pCont;
|
||||||
|
memcpy(secret, pRsp->secret, TSDB_KEY_LEN);
|
||||||
|
memcpy(ckey, pRsp->ckey, TSDB_KEY_LEN);
|
||||||
|
*spi = pRsp->spi;
|
||||||
|
*encrypt = pRsp->encrypt;
|
||||||
|
}
|
||||||
|
|
||||||
|
rpcFreeCont(rpcRsp.pCont);
|
||||||
|
return rpcRsp.code;
|
||||||
}
|
}
|
||||||
|
|
||||||
SDnodeStatisInfo dnodeGetStatisInfo() {
|
SDnodeStatisInfo dnodeGetStatisInfo() {
|
||||||
|
|
|
@ -52,6 +52,7 @@ int32_t dnodeGetDnodeId();
|
||||||
void dnodeAddClientRspHandle(uint8_t msgType, void (*fp)(SRpcMsg *rpcMsg));
|
void dnodeAddClientRspHandle(uint8_t msgType, void (*fp)(SRpcMsg *rpcMsg));
|
||||||
void dnodeAddServerMsgHandle(uint8_t msgType, void (*fp)(SRpcMsg *rpcMsg));
|
void dnodeAddServerMsgHandle(uint8_t msgType, void (*fp)(SRpcMsg *rpcMsg));
|
||||||
void dnodeSendMsgToDnode(SRpcIpSet *ipSet, SRpcMsg *rpcMsg);
|
void dnodeSendMsgToDnode(SRpcIpSet *ipSet, SRpcMsg *rpcMsg);
|
||||||
|
void dnodeSendMsgToDnodeRecv(SRpcMsg *rpcMsg, SRpcMsg *rpcRsp);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,8 +26,10 @@ void mgmtCleanUpSystem();
|
||||||
void mgmtStopSystem();
|
void mgmtStopSystem();
|
||||||
void sdbUpdateSync();
|
void sdbUpdateSync();
|
||||||
|
|
||||||
void mgmtProcessMsgFromShell(SRpcMsg *rpcMsg);
|
int32_t mgmtRetriveAuth(char *user, char *spi, char *encrypt, char *secret, char *ckey);
|
||||||
void mgmtProcessReqMsgFromDnode(SRpcMsg *rpcMsg);
|
void mgmtProcessMsgFromShell(SRpcMsg *rpcMsg);
|
||||||
|
void mgmtProcessReqMsgFromDnode(SRpcMsg *rpcMsg);
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
|
|
@ -100,6 +100,7 @@ TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_DM_CONFIG_TABLE, "config-table" )
|
||||||
TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_DM_CONFIG_VNODE, "config-vnode" )
|
TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_DM_CONFIG_VNODE, "config-vnode" )
|
||||||
TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_DM_STATUS, "status" )
|
TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_DM_STATUS, "status" )
|
||||||
TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_DM_GRANT, "grant" )
|
TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_DM_GRANT, "grant" )
|
||||||
|
TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_DM_AUTH, "auth" )
|
||||||
TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_DUMMY12, "dummy12" )
|
TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_DUMMY12, "dummy12" )
|
||||||
TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_DUMMY13, "dummy13" )
|
TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_DUMMY13, "dummy13" )
|
||||||
TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_DUMMY14, "dummy14" )
|
TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_DUMMY14, "dummy14" )
|
||||||
|
@ -737,6 +738,14 @@ typedef struct {
|
||||||
char tableId[TSDB_TABLE_ID_LEN + 1];
|
char tableId[TSDB_TABLE_ID_LEN + 1];
|
||||||
} SMDAlterStreamMsg;
|
} SMDAlterStreamMsg;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
char user[TSDB_USER_LEN + 1];
|
||||||
|
char spi;
|
||||||
|
char encrypt;
|
||||||
|
char secret[TSDB_KEY_LEN + 1];
|
||||||
|
char ckey[TSDB_KEY_LEN + 1];
|
||||||
|
} SDMAuthMsg, SDMAuthRsp;
|
||||||
|
|
||||||
#pragma pack(pop)
|
#pragma pack(pop)
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
|
|
@ -41,7 +41,6 @@
|
||||||
typedef int32_t (*SShowMetaFp)(STableMetaMsg *pMeta, SShowObj *pShow, void *pConn);
|
typedef int32_t (*SShowMetaFp)(STableMetaMsg *pMeta, SShowObj *pShow, void *pConn);
|
||||||
typedef int32_t (*SShowRetrieveFp)(SShowObj *pShow, char *data, int32_t rows, void *pConn);
|
typedef int32_t (*SShowRetrieveFp)(SShowObj *pShow, char *data, int32_t rows, void *pConn);
|
||||||
|
|
||||||
//static int mgmtShellRetriveAuth(char *user, char *spi, char *encrypt, char *secret, char *ckey);
|
|
||||||
static bool mgmtCheckMsgReadOnly(SQueuedMsg *pMsg);
|
static bool mgmtCheckMsgReadOnly(SQueuedMsg *pMsg);
|
||||||
static void mgmtProcessUnSupportMsg(SRpcMsg *rpcMsg);
|
static void mgmtProcessUnSupportMsg(SRpcMsg *rpcMsg);
|
||||||
static void mgmtProcessShowMsg(SQueuedMsg *queuedMsg);
|
static void mgmtProcessShowMsg(SQueuedMsg *queuedMsg);
|
||||||
|
@ -343,29 +342,6 @@ static void mgmtProcessHeartBeatMsg(SQueuedMsg *pMsg) {
|
||||||
rpcSendResponse(&rpcRsp);
|
rpcSendResponse(&rpcRsp);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
static int mgmtShellRetriveAuth(char *user, char *spi, char *encrypt, char *secret, char *ckey) {
|
|
||||||
*spi = 1;
|
|
||||||
*encrypt = 0;
|
|
||||||
*ckey = 0;
|
|
||||||
|
|
||||||
if (!sdbIsMaster()) {
|
|
||||||
*secret = 0;
|
|
||||||
return TSDB_CODE_NOT_READY;
|
|
||||||
}
|
|
||||||
|
|
||||||
SUserObj *pUser = mgmtGetUser(user);
|
|
||||||
if (pUser == NULL) {
|
|
||||||
*secret = 0;
|
|
||||||
return TSDB_CODE_INVALID_USER;
|
|
||||||
} else {
|
|
||||||
memcpy(secret, pUser->pass, TSDB_KEY_LEN);
|
|
||||||
mgmtDecUserRef(pUser);
|
|
||||||
return TSDB_CODE_SUCCESS;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
static void mgmtProcessConnectMsg(SQueuedMsg *pMsg) {
|
static void mgmtProcessConnectMsg(SQueuedMsg *pMsg) {
|
||||||
SRpcMsg rpcRsp = {.handle = pMsg->thandle, .pCont = NULL, .contLen = 0, .code = 0, .msgType = 0};
|
SRpcMsg rpcRsp = {.handle = pMsg->thandle, .pCont = NULL, .contLen = 0, .code = 0, .msgType = 0};
|
||||||
SCMConnectMsg *pConnectMsg = pMsg->pCont;
|
SCMConnectMsg *pConnectMsg = pMsg->pCont;
|
||||||
|
|
|
@ -37,6 +37,7 @@ static int32_t mgmtRetrieveUsers(SShowObj *pShow, char *data, int32_t rows, void
|
||||||
static void mgmtProcessCreateUserMsg(SQueuedMsg *pMsg);
|
static void mgmtProcessCreateUserMsg(SQueuedMsg *pMsg);
|
||||||
static void mgmtProcessAlterUserMsg(SQueuedMsg *pMsg);
|
static void mgmtProcessAlterUserMsg(SQueuedMsg *pMsg);
|
||||||
static void mgmtProcessDropUserMsg(SQueuedMsg *pMsg);
|
static void mgmtProcessDropUserMsg(SQueuedMsg *pMsg);
|
||||||
|
static void mgmtProcessAuthMsg(SRpcMsg *rpcMsg);
|
||||||
|
|
||||||
static int32_t mgmtUserActionDestroy(SSdbOper *pOper) {
|
static int32_t mgmtUserActionDestroy(SSdbOper *pOper) {
|
||||||
tfree(pOper->pObj);
|
tfree(pOper->pObj);
|
||||||
|
@ -140,7 +141,8 @@ int32_t mgmtInitUsers() {
|
||||||
mgmtAddShellMsgHandle(TSDB_MSG_TYPE_CM_DROP_USER, mgmtProcessDropUserMsg);
|
mgmtAddShellMsgHandle(TSDB_MSG_TYPE_CM_DROP_USER, mgmtProcessDropUserMsg);
|
||||||
mgmtAddShellShowMetaHandle(TSDB_MGMT_TABLE_USER, mgmtGetUserMeta);
|
mgmtAddShellShowMetaHandle(TSDB_MGMT_TABLE_USER, mgmtGetUserMeta);
|
||||||
mgmtAddShellShowRetrieveHandle(TSDB_MGMT_TABLE_USER, mgmtRetrieveUsers);
|
mgmtAddShellShowRetrieveHandle(TSDB_MGMT_TABLE_USER, mgmtRetrieveUsers);
|
||||||
|
dnodeAddServerMsgHandle(TSDB_MSG_TYPE_DM_AUTH, mgmtProcessAuthMsg);
|
||||||
|
|
||||||
mTrace("table:%s, hash is created", tableDesc.tableName);
|
mTrace("table:%s, hash is created", tableDesc.tableName);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -529,3 +531,40 @@ void mgmtDropAllUsers(SAcctObj *pAcct) {
|
||||||
|
|
||||||
mTrace("acct:%s, all users:%d is dropped from sdb", pAcct->user, numOfUsers);
|
mTrace("acct:%s, all users:%d is dropped from sdb", pAcct->user, numOfUsers);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int32_t mgmtRetriveAuth(char *user, char *spi, char *encrypt, char *secret, char *ckey) {
|
||||||
|
if (!sdbIsMaster()) {
|
||||||
|
*secret = 0;
|
||||||
|
mTrace("user:%s, failed to auth user, reason:%s", user, tstrerror(TSDB_CODE_NOT_READY));
|
||||||
|
return TSDB_CODE_NOT_READY;
|
||||||
|
}
|
||||||
|
|
||||||
|
SUserObj *pUser = mgmtGetUser(user);
|
||||||
|
if (pUser == NULL) {
|
||||||
|
*secret = 0;
|
||||||
|
mError("user:%s, failed to auth user, reason:%s", user, tstrerror(TSDB_CODE_INVALID_USER));
|
||||||
|
return TSDB_CODE_INVALID_USER;
|
||||||
|
} else {
|
||||||
|
*spi = 1;
|
||||||
|
*encrypt = 0;
|
||||||
|
*ckey = 0;
|
||||||
|
|
||||||
|
memcpy(secret, pUser->pass, TSDB_KEY_LEN);
|
||||||
|
mgmtDecUserRef(pUser);
|
||||||
|
mTrace("user:%s, auth info is returned", user);
|
||||||
|
return TSDB_CODE_SUCCESS;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void mgmtProcessAuthMsg(SRpcMsg *rpcMsg) {
|
||||||
|
SRpcMsg rpcRsp = {.handle = rpcMsg->handle, .pCont = NULL, .contLen = 0, .code = 0, .msgType = 0};
|
||||||
|
|
||||||
|
SDMAuthMsg *pAuthMsg = rpcMsg->pCont;
|
||||||
|
SDMAuthRsp *pAuthRsp = rpcMallocCont(sizeof(SDMAuthRsp));
|
||||||
|
|
||||||
|
rpcRsp.code = mgmtRetriveAuth(pAuthMsg->user, &pAuthRsp->spi, &pAuthRsp->encrypt, pAuthRsp->secret, pAuthRsp->ckey);
|
||||||
|
rpcRsp.pCont = pAuthRsp;
|
||||||
|
rpcRsp.contLen = sizeof(SDMAuthRsp);
|
||||||
|
|
||||||
|
rpcSendResponse(&rpcRsp);
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue