TDengine/include/common/tgrant.h

113 lines
4.6 KiB
C
Raw Normal View History

2022-07-18 05:22:21 +00:00
/*
* Copyright (c) 2019 TAOS Data, Inc. <jhtao@taosdata.com>
*
* This program is free software: you can use, redistribute, and/or modify
* it under the terms of the GNU Affero General Public License, version 3
* or later ("AGPL"), as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef _TD_COMMON_GRANT_H_
#define _TD_COMMON_GRANT_H_
#ifdef __cplusplus
extern "C" {
#endif
#include "os.h"
2022-07-23 11:38:41 +00:00
#include "taoserror.h"
2023-12-08 10:07:17 +00:00
#include "tdef.h"
2022-07-18 05:22:21 +00:00
2023-05-06 12:38:50 +00:00
#ifndef GRANTS_COL_MAX_LEN
2023-05-11 03:45:38 +00:00
#define GRANTS_COL_MAX_LEN 196
2023-05-06 12:38:50 +00:00
#endif
2024-06-24 08:21:10 +00:00
#define GRANT_HEART_BEAT_MIN 2
#define GRANT_EXPIRE_VALUE (31556995201)
#define GRANT_ACTIVE_CODE "activeCode"
#define GRANT_FLAG_ALL (0x01)
#define GRANT_FLAG_AUDIT (0x02)
#define GRANT_FLAG_VIEW (0x04)
2023-09-23 23:52:27 +00:00
2022-07-18 05:22:21 +00:00
typedef enum {
TSDB_GRANT_ALL,
TSDB_GRANT_TIME,
TSDB_GRANT_USER,
TSDB_GRANT_DB,
TSDB_GRANT_TIMESERIES,
TSDB_GRANT_DNODE,
TSDB_GRANT_ACCT,
TSDB_GRANT_STORAGE,
TSDB_GRANT_SPEED,
TSDB_GRANT_QUERY_TIME,
TSDB_GRANT_CONNS,
TSDB_GRANT_STREAMS,
TSDB_GRANT_CPU_CORES,
2022-08-01 11:54:13 +00:00
TSDB_GRANT_STABLE,
TSDB_GRANT_TABLE,
2024-01-17 03:24:48 +00:00
TSDB_GRANT_SUBSCRIPTION,
2024-01-31 23:32:43 +00:00
TSDB_GRANT_AUDIT,
TSDB_GRANT_CSV,
2024-02-03 16:24:42 +00:00
TSDB_GRANT_VIEW,
2024-01-31 23:32:43 +00:00
TSDB_GRANT_MULTI_TIER,
TSDB_GRANT_BACKUP_RESTORE,
TSDB_GRANT_OBJECT_STORAGE,
TSDB_GRANT_ACTIVE_ACTIVE,
TSDB_GRANT_DUAL_REPLICA_HA,
TSDB_GRANT_DB_ENCRYPTION,
2022-07-18 05:22:21 +00:00
} EGrantType;
2024-04-27 20:47:00 +00:00
int32_t checkAndGetCryptKey(const char *encryptCode, const char *machineId, char **key);
int32_t generateEncryptCode(const char *key, const char *machineId, char **encryptCode);
int64_t grantRemain(EGrantType grant);
int32_t grantCheck(EGrantType grant);
int32_t grantCheckExpire(EGrantType grant);
2024-07-23 05:55:26 +00:00
int32_t tGetMachineId(char **result);
2022-07-18 05:22:21 +00:00
2024-01-31 08:09:06 +00:00
// #ifndef GRANTS_CFG
2023-05-11 05:03:21 +00:00
#ifdef TD_ENTERPRISE
2024-02-24 14:48:28 +00:00
#define GRANTS_SCHEMA \
static const SSysDbTableSchema grantsSchema[] = { \
2024-05-16 09:30:03 +00:00
{.name = "version", .bytes = 32 + VARSTR_HEADER_SIZE, .type = TSDB_DATA_TYPE_VARCHAR, .sysInfo = true}, \
2024-02-24 14:48:28 +00:00
{.name = "expire_time", .bytes = 19 + VARSTR_HEADER_SIZE, .type = TSDB_DATA_TYPE_VARCHAR, .sysInfo = true}, \
{.name = "service_time", .bytes = 19 + VARSTR_HEADER_SIZE, .type = TSDB_DATA_TYPE_VARCHAR, .sysInfo = true}, \
{.name = "expired", .bytes = 5 + VARSTR_HEADER_SIZE, .type = TSDB_DATA_TYPE_VARCHAR, .sysInfo = true}, \
{.name = "state", .bytes = 9 + VARSTR_HEADER_SIZE, .type = TSDB_DATA_TYPE_VARCHAR, .sysInfo = true}, \
{.name = "timeseries", .bytes = 21 + VARSTR_HEADER_SIZE, .type = TSDB_DATA_TYPE_VARCHAR, .sysInfo = true}, \
{.name = "dnodes", .bytes = 10 + VARSTR_HEADER_SIZE, .type = TSDB_DATA_TYPE_VARCHAR, .sysInfo = true}, \
2024-03-10 00:50:05 +00:00
{.name = "cpu_cores", .bytes = 13 + VARSTR_HEADER_SIZE, .type = TSDB_DATA_TYPE_VARCHAR, .sysInfo = true}, \
2022-10-13 03:09:43 +00:00
}
2023-05-11 05:03:21 +00:00
#else
2024-02-24 14:48:28 +00:00
#define GRANTS_SCHEMA \
static const SSysDbTableSchema grantsSchema[] = { \
2024-05-16 09:30:03 +00:00
{.name = "version", .bytes = 32 + VARSTR_HEADER_SIZE, .type = TSDB_DATA_TYPE_VARCHAR, .sysInfo = true}, \
2024-02-24 14:48:28 +00:00
{.name = "expire_time", .bytes = 19 + VARSTR_HEADER_SIZE, .type = TSDB_DATA_TYPE_VARCHAR, .sysInfo = true}, \
{.name = "service_time", .bytes = 19 + VARSTR_HEADER_SIZE, .type = TSDB_DATA_TYPE_VARCHAR, .sysInfo = true}, \
{.name = "expired", .bytes = 5 + VARSTR_HEADER_SIZE, .type = TSDB_DATA_TYPE_VARCHAR, .sysInfo = true}, \
{.name = "state", .bytes = 9 + VARSTR_HEADER_SIZE, .type = TSDB_DATA_TYPE_VARCHAR, .sysInfo = true}, \
{.name = "timeseries", .bytes = 21 + VARSTR_HEADER_SIZE, .type = TSDB_DATA_TYPE_VARCHAR, .sysInfo = true}, \
{.name = "dnodes", .bytes = 10 + VARSTR_HEADER_SIZE, .type = TSDB_DATA_TYPE_VARCHAR, .sysInfo = true}, \
2024-03-10 00:50:05 +00:00
{.name = "cpu_cores", .bytes = 13 + VARSTR_HEADER_SIZE, .type = TSDB_DATA_TYPE_VARCHAR, .sysInfo = true}, \
2023-05-11 05:03:21 +00:00
}
#endif
2024-01-31 08:09:06 +00:00
// #define GRANT_CFG_ADD
// #define GRANT_CFG_SET
// #define GRANT_CFG_GET
// #define GRANT_CFG_CHECK
// #define GRANT_CFG_SKIP
// #define GRANT_CFG_DECLARE
// #define GRANT_CFG_EXTERN
// #endif
2022-08-01 11:54:13 +00:00
2022-07-18 05:22:21 +00:00
#ifdef __cplusplus
}
#endif
#endif /*_TD_COMMON_GRANT_H_*/