diff --git a/include/common/tglobal.h b/include/common/tglobal.h index 17ed732af8..95b7591263 100644 --- a/include/common/tglobal.h +++ b/include/common/tglobal.h @@ -257,8 +257,10 @@ extern bool tsExperimental; int32_t taosCreateLog(const char *logname, int32_t logFileNum, const char *cfgDir, const char **envCmd, const char *envFile, char *apolloUrl, SArray *pArgs, bool tsc); +int32_t taosReadDataFolder(const char *cfgDir, const char **envCmd, + const char *envFile, char *apolloUrl, SArray *pArgs); int32_t taosInitCfg(const char *cfgDir, const char **envCmd, const char *envFile, char *apolloUrl, SArray *pArgs, - bool tsc, bool isDumpCfg); + bool tsc); void taosCleanupCfg(); int32_t taosCfgDynamicOptions(SConfig *pCfg, const char *name, bool forServer); diff --git a/source/client/src/clientEnv.c b/source/client/src/clientEnv.c index 036cf0420a..439103e5c4 100644 --- a/source/client/src/clientEnv.c +++ b/source/client/src/clientEnv.c @@ -725,7 +725,7 @@ void taos_init_imp(void) { return; } - if (taosInitCfg(configDir, NULL, NULL, NULL, NULL, 1, true) != 0) { + if (taosInitCfg(configDir, NULL, NULL, NULL, NULL, 1) != 0) { tscInitRes = -1; return; } diff --git a/source/common/src/tglobal.c b/source/common/src/tglobal.c index 650a639964..e4c268302f 100644 --- a/source/common/src/tglobal.c +++ b/source/common/src/tglobal.c @@ -1377,6 +1377,35 @@ int32_t taosCreateLog(const char *logname, int32_t logFileNum, const char *cfgDi return 0; } +int32_t taosReadDataFolder(const char *cfgDir, const char **envCmd, + const char *envFile, char *apolloUrl, SArray *pArgs) { + if (tsCfg == NULL) osDefaultInit(); + + SConfig *pCfg = cfgInit(); + if (pCfg == NULL) return -1; + + if (cfgAddDir(pCfg, "dataDir", tsDataDir, CFG_SCOPE_SERVER, CFG_DYN_NONE) != 0) return -1; + if (cfgAddInt32(pCfg, "dDebugFlag", dDebugFlag, 0, 255, CFG_SCOPE_SERVER, CFG_DYN_SERVER) != 0) return -1; + + if (taosLoadCfg(pCfg, envCmd, cfgDir, envFile, apolloUrl) != 0) { + printf("failed to load cfg since %s", terrstr()); + cfgCleanup(pCfg); + return -1; + } + + if (cfgLoadFromArray(pCfg, pArgs) != 0) { + printf("failed to load cfg from array since %s", terrstr()); + cfgCleanup(pCfg); + return -1; + } + + tstrncpy(tsDataDir, cfgGetItem(pCfg, "dataDir")->str, PATH_MAX); + dDebugFlag = cfgGetItem(pCfg, "dDebugFlag")->i32; + + cfgCleanup(pCfg); + return 0; +} + static int32_t taosCheckGlobalCfg() { uint32_t ipv4 = taosGetIpv4FromFqdn(tsLocalFqdn); if (ipv4 == 0xffffffff) { @@ -1394,7 +1423,7 @@ static int32_t taosCheckGlobalCfg() { } int32_t taosInitCfg(const char *cfgDir, const char **envCmd, const char *envFile, char *apolloUrl, SArray *pArgs, - bool tsc, bool isDumpCfg) { + bool tsc) { if (tsCfg != NULL) return 0; tsCfg = cfgInit(); @@ -1441,7 +1470,7 @@ int32_t taosInitCfg(const char *cfgDir, const char **envCmd, const char *envFile taosSetAllDebugFlag(tsCfg, cfgGetItem(tsCfg, "debugFlag")->i32); - if(isDumpCfg) cfgDumpCfg(tsCfg, tsc, false); + cfgDumpCfg(tsCfg, tsc, false); if (taosCheckGlobalCfg() != 0) { return -1; diff --git a/source/dnode/mgmt/exe/dmMain.c b/source/dnode/mgmt/exe/dmMain.c index f7fcd7697f..76b0565402 100644 --- a/source/dnode/mgmt/exe/dmMain.c +++ b/source/dnode/mgmt/exe/dmMain.c @@ -205,11 +205,11 @@ static int32_t dmParseArgs(int32_t argc, char const *argv[]) { if(i < argc - 1) { int32_t len = strlen(argv[++i]); if (len < ENCRYPT_KEY_LEN_MIN) { - printf("Error: Encrypt key should be at least %d characters\n", ENCRYPT_KEY_LEN_MIN); + printf("ERROR: Encrypt key should be at least %d characters\n", ENCRYPT_KEY_LEN_MIN); return -1; } if (len > ENCRYPT_KEY_LEN) { - printf("Error: Encrypt key overflow, it should be at most %d characters\n", ENCRYPT_KEY_LEN); + printf("ERROR: Encrypt key overflow, it should be at most %d characters\n", ENCRYPT_KEY_LEN); return -1; } tstrncpy(global.encryptKey, argv[i], ENCRYPT_KEY_LEN); @@ -371,6 +371,22 @@ int mainWindows(int argc, char **argv) { printf("memory dbg enabled\n"); } #endif + if(global.generateCode) { + bool toLogFile = false; + if(taosReadDataFolder(configDir, global.envCmd, global.envFile, global.apolloUrl, global.pArgs) != 0){ + encryptError("failed to generate encrypt code since taosd is running, please stop it first"); + return -1; + }; + + if(dmCheckRunning(tsDataDir) == NULL) { + encryptError("failed to generate encrypt code since taosd is running, please stop it first"); + return -1; + } + int ret = dmUpdateEncryptKey(global.encryptKey, toLogFile); + taosCloseLog(); + taosCleanupArgs(); + return ret; + } if (dmInitLog() != 0) { printf("failed to start since init log error\n"); @@ -380,28 +396,13 @@ int mainWindows(int argc, char **argv) { dmPrintArgs(argc, argv); - bool isDumpCfg = true; - if(global.generateCode) { - isDumpCfg = false; - } - if (taosInitCfg(configDir, global.envCmd, global.envFile, global.apolloUrl, global.pArgs, 0, isDumpCfg) != 0) { + if (taosInitCfg(configDir, global.envCmd, global.envFile, global.apolloUrl, global.pArgs, 0) != 0) { dError("failed to start since read config error"); taosCloseLog(); taosCleanupArgs(); return -1; } - if(global.generateCode) { - if(dmCheckRunning(tsDataDir) == NULL) { - dError("failed to generate encrypt code since taosd is running, please stop it first"); - return -1; - } - int ret = dmUpdateEncryptKey(global.encryptKey); - taosCloseLog(); - taosCleanupArgs(); - return ret; - } - if(dmGetEncryptKey() != 0){ dError("failed to start since failed to get encrypt key"); taosCloseLog(); diff --git a/source/dnode/mgmt/mgmt_dnode/src/dmHandle.c b/source/dnode/mgmt/mgmt_dnode/src/dmHandle.c index 3ec080fb21..800f7f7864 100644 --- a/source/dnode/mgmt/mgmt_dnode/src/dmHandle.c +++ b/source/dnode/mgmt/mgmt_dnode/src/dmHandle.c @@ -220,7 +220,7 @@ int32_t dmProcessCreateEncryptKeyReq(SDnodeMgmt *pMgmt, SRpcMsg *pMsg) { goto _exit; } - code = dmUpdateEncryptKey(cfgReq.value); + code = dmUpdateEncryptKey(cfgReq.value, true); if (code == 0) { tsEncryptionKeyChksum = taosCalcChecksum(0, cfgReq.value, strlen(cfgReq.value)); tsEncryptionKeyStat = ENCRYPT_KEY_STAT_LOADED; diff --git a/source/dnode/mgmt/node_util/inc/dmUtil.h b/source/dnode/mgmt/node_util/inc/dmUtil.h index 9fdd5e50ed..aea3286d76 100644 --- a/source/dnode/mgmt/node_util/inc/dmUtil.h +++ b/source/dnode/mgmt/node_util/inc/dmUtil.h @@ -53,6 +53,36 @@ extern "C" { #define dDebug(...) { if (dDebugFlag & DEBUG_DEBUG) { taosPrintLog("DND ", DEBUG_DEBUG, dDebugFlag, __VA_ARGS__); }} #define dTrace(...) { if (dDebugFlag & DEBUG_TRACE) { taosPrintLog("DND ", DEBUG_TRACE, dDebugFlag, __VA_ARGS__); }} +#define encryptDebug(...) { \ + if (toLogFile) { \ + if (dDebugFlag & DEBUG_DEBUG) {taosPrintLog("DND ", DEBUG_DEBUG, dDebugFlag, __VA_ARGS__);} \ + } else { \ + /*if (dDebugFlag & DEBUG_DEBUG) {taosPrintLog("DND ", DEBUG_SCREEN, dDebugFlag, __VA_ARGS__);}*/ \ + if (dDebugFlag & DEBUG_DEBUG) {printf(__VA_ARGS__); printf("\n");} \ + } \ +} + +#define encryptInfo(...) { \ + if (toLogFile) { \ + taosPrintLog("DND ", DEBUG_INFO, 255, __VA_ARGS__); \ + } else { \ + /*if (dDebugFlag & DEBUG_DEBUG) {taosPrintLog("DND ", DEBUG_SCREEN, dDebugFlag, __VA_ARGS__);}*/ \ + printf(__VA_ARGS__); \ + printf("\n"); \ + } \ +} + +#define encryptError(...) { \ + if (toLogFile) { \ + taosPrintLog("DND ERROR ", DEBUG_ERROR, 255, __VA_ARGS__); \ + }\ + else{ \ + /*taosPrintLog("DND ", DEBUG_SCREEN, 255, __VA_ARGS__); */\ + printf("ERROR: " __VA_ARGS__); \ + printf("\n"); \ + }\ +} + #define dGFatal(param, ...) {if (dDebugFlag & DEBUG_FATAL) { char buf[40] = {0}; TRACE_TO_STR(trace, buf); dFatal(param ", gtid:%s", __VA_ARGS__, buf);}} #define dGError(param, ...) {if (dDebugFlag & DEBUG_ERROR) { char buf[40] = {0}; TRACE_TO_STR(trace, buf); dError(param ", gtid:%s", __VA_ARGS__, buf);}} #define dGWarn(param, ...) {if (dDebugFlag & DEBUG_WARN) { char buf[40] = {0}; TRACE_TO_STR(trace, buf); dWarn(param ", gtid:%s", __VA_ARGS__, buf);}} @@ -194,7 +224,7 @@ void dmSetMnodeEpSet(SDnodeData *pData, SEpSet *pEpSet); bool dmUpdateDnodeInfo(void *pData, int32_t *dnodeId, int64_t *clusterId, char *fqdn, uint16_t *port); void dmRemoveDnodePairs(SDnodeData *pData); void dmGetDnodeEp(void *pData, int32_t dnodeId, char *pEp, char *pFqdn, uint16_t *pPort); -int32_t dmUpdateEncryptKey(char *key); +int32_t dmUpdateEncryptKey(char *key, bool toLogFile); int32_t dmGetEncryptKey(); #ifdef __cplusplus } diff --git a/source/dnode/mgmt/node_util/src/dmFile.c b/source/dnode/mgmt/node_util/src/dmFile.c index e2c52cfb7e..752abb83a2 100644 --- a/source/dnode/mgmt/node_util/src/dmFile.c +++ b/source/dnode/mgmt/node_util/src/dmFile.c @@ -186,7 +186,7 @@ TdFilePtr dmCheckRunning(const char *dataDir) { extern int32_t generateEncryptCode(const char *key, const char *machineId, char **encryptCode); -static int32_t dmWriteCheckCodeFile(char* file, char* realfile, char* key){ +static int32_t dmWriteCheckCodeFile(char* file, char* realfile, char* key, bool toLogFile){ TdFilePtr pFile = NULL; char *result = NULL; int32_t code = -1; @@ -211,7 +211,8 @@ static int32_t dmWriteCheckCodeFile(char* file, char* realfile, char* key){ taosCloseFile(&pFile); if (taosRenameFile(file, realfile) != 0) goto _OVER; - dInfo("succeed to write checkCode file:%s", realfile); + encryptDebug("succeed to write checkCode file:%s", realfile); + code = 0; _OVER: if(pFile != NULL) taosCloseFile(&pFile); @@ -220,7 +221,7 @@ _OVER: return code; } -static int32_t dmWriteEncryptCodeFile(char* file, char* realfile, char* encryptCode){ +static int32_t dmWriteEncryptCodeFile(char* file, char* realfile, char* encryptCode, bool toLogFile){ TdFilePtr pFile = NULL; int32_t code = -1; @@ -234,7 +235,7 @@ static int32_t dmWriteEncryptCodeFile(char* file, char* realfile, char* encryptC taosCloseFile(&pFile); if (taosRenameFile(file, realfile) != 0) goto _OVER; - dInfo("succeed to write encryptCode file:%s", realfile); + encryptDebug("succeed to write encryptCode file:%s", realfile); code = 0; _OVER: @@ -243,7 +244,7 @@ _OVER: return code; } -static int32_t dmCompareEncryptKey(char* file, char* key){ +static int32_t dmCompareEncryptKey(char* file, char* key, bool toLogFile){ char *content = NULL; int64_t size = 0; TdFilePtr pFile = NULL; @@ -253,13 +254,13 @@ static int32_t dmCompareEncryptKey(char* file, char* key){ pFile = taosOpenFile(file, TD_FILE_READ); if (pFile == NULL) { terrno = TAOS_SYSTEM_ERROR(errno); - dError("failed to open dnode file:%s since %s", file, terrstr()); + encryptError("failed to open dnode file:%s since %s", file, terrstr()); goto _OVER; } if (taosFStatFile(pFile, &size, NULL) < 0) { terrno = TAOS_SYSTEM_ERROR(errno); - dError("failed to fstat dnode file:%s since %s", file, terrstr()); + encryptError("failed to fstat dnode file:%s since %s", file, terrstr()); goto _OVER; } @@ -271,11 +272,11 @@ static int32_t dmCompareEncryptKey(char* file, char* key){ if (taosReadFile(pFile, content, size) != size) { terrno = TAOS_SYSTEM_ERROR(errno); - dError("failed to read dnode file:%s since %s", file, terrstr()); + encryptError("failed to read dnode file:%s since %s", file, terrstr()); goto _OVER; } - dInfo("succeed to read checkCode file:%s", file); + encryptDebug("succeed to read checkCode file:%s", file); int len = ENCRYPTED_LEN(size); result = taosMemoryMalloc(len); @@ -290,11 +291,11 @@ static int32_t dmCompareEncryptKey(char* file, char* key){ if(strcmp(opts.result, DM_KEY_INDICATOR) != 0) { terrno = TSDB_CODE_DNODE_ENCRYPTKEY_CHANGED; - dError("failed to compare decrypted result"); + encryptError("failed to compare decrypted result"); goto _OVER; } - dInfo("succeed to compare checkCode file:%s", file); + encryptDebug("succeed to compare checkCode file:%s", file); code = 0; _OVER: if(result != NULL) taosMemoryFree(result); @@ -304,7 +305,7 @@ _OVER: return code; } -int32_t dmUpdateEncryptKey(char *key) { +int32_t dmUpdateEncryptKey(char *key, bool toLogFile) { #ifdef TD_ENTERPRISE int32_t code = -1; char *machineId = NULL; @@ -328,12 +329,12 @@ int32_t dmUpdateEncryptKey(char *key) { if (taosMkDir(folder) != 0) { terrno = TAOS_SYSTEM_ERROR(errno); - dError("failed to create dir:%s since %s", folder, terrstr()); + encryptError("failed to create dir:%s since %s", folder, terrstr()); goto _OVER; } if(taosCheckExistFile(realCheckFile)){ - if(dmCompareEncryptKey(realCheckFile, key) != 0){ + if(dmCompareEncryptKey(realCheckFile, key, toLogFile) != 0){ goto _OVER; } } @@ -347,21 +348,23 @@ int32_t dmUpdateEncryptKey(char *key) { goto _OVER; } - if(dmWriteEncryptCodeFile(encryptFile, realEncryptFile, encryptCode) != 0){ + if(dmWriteEncryptCodeFile(encryptFile, realEncryptFile, encryptCode, toLogFile) != 0){ goto _OVER; } - if(dmWriteCheckCodeFile(checkFile, realCheckFile, key) != 0){ + if(dmWriteCheckCodeFile(checkFile, realCheckFile, key, toLogFile) != 0){ goto _OVER; } + encryptInfo("Succeed to update encrypt key\n"); + code = 0; _OVER: taosMemoryFree(encryptCode); taosMemoryFree(machineId); if (code != 0) { if (terrno == 0) terrno = TAOS_SYSTEM_ERROR(errno); - dError("failed to update encrypt key since %s", terrstr()); + encryptError("failed to update encrypt key since %s", terrstr()); } return code; #else @@ -453,7 +456,7 @@ int32_t dmGetEncryptKey(){ goto _OVER; } - if(dmCompareEncryptKey(checkFile, encryptKey) != 0){ + if(dmCompareEncryptKey(checkFile, encryptKey, true) != 0){ goto _OVER; } diff --git a/source/libs/function/src/udfd.c b/source/libs/function/src/udfd.c index e2ea6c1374..2a5e594ba3 100644 --- a/source/libs/function/src/udfd.c +++ b/source/libs/function/src/udfd.c @@ -1424,7 +1424,7 @@ int main(int argc, char *argv[]) { printf("failed to start since init log error\n"); } - if (taosInitCfg(configDir, NULL, NULL, NULL, NULL, 0, true) != 0) { + if (taosInitCfg(configDir, NULL, NULL, NULL, NULL, 0) != 0) { fnError("failed to start since read config error"); return -2; } diff --git a/source/libs/function/test/runUdf.c b/source/libs/function/test/runUdf.c index eef6cdc3d3..aa8b88b738 100644 --- a/source/libs/function/test/runUdf.c +++ b/source/libs/function/test/runUdf.c @@ -127,7 +127,7 @@ int aggregateFuncTest() { int main(int argc, char *argv[]) { parseArgs(argc, argv); initLog(); - if (taosInitCfg(configDir, NULL, NULL, NULL, NULL, 0, true) != 0) { + if (taosInitCfg(configDir, NULL, NULL, NULL, NULL, 0) != 0) { fnError("failed to start since read config error"); return -1; } diff --git a/utils/tsim/src/simSystem.c b/utils/tsim/src/simSystem.c index 645cf0e6fe..dcf5d6ab12 100644 --- a/utils/tsim/src/simSystem.c +++ b/utils/tsim/src/simSystem.c @@ -28,7 +28,7 @@ extern bool simExecSuccess; int32_t simInitCfg() { taosCreateLog("simlog", 1, configDir, NULL, NULL, NULL, NULL, 1); - taosInitCfg(configDir, NULL, NULL, NULL, NULL, 1, true); + taosInitCfg(configDir, NULL, NULL, NULL, NULL, 1); SConfig *pCfg = taosGetCfg(); tstrncpy(simScriptDir, cfgGetItem(pCfg, "scriptDir")->str, PATH_MAX);