From 2742637a08edf9b591025b4af8676fd72c22c974 Mon Sep 17 00:00:00 2001 From: "guoming.qin" Date: Thu, 29 Mar 2018 16:59:21 +0800 Subject: [PATCH 1/4] redis_support_auth --- bin/conf/zimg.lua | 12 +++++--- src/main.c | 75 ++++++++++++++++++++++++++++++++++++++++------- src/zcommon.h | 2 ++ 3 files changed, 75 insertions(+), 14 deletions(-) diff --git a/bin/conf/zimg.lua b/bin/conf/zimg.lua index 89cd780..15cb94a 100644 --- a/bin/conf/zimg.lua +++ b/bin/conf/zimg.lua @@ -52,7 +52,7 @@ LOG_INFO 6 Information LOG_DEBUG 7 DEBUG message ]] --输出log级别 -log_level = 6 +log_level = 7 --输出log路径 log_name = pwd .. '/log/zimg.log' @@ -85,7 +85,7 @@ quality = 75 --value 2 is for memcached protocol storage like beansdb; --value 3 is for redis protocol storage like SSDB. --存储后端类型,1为本地存储,2为memcached协议后端如beansdb,3为redis协议后端如SSDB -mode = 1 +mode = 3 --save_new value: 0.don't save any 1.save all 2.only save types in lua script --新文件是否存储,0为不存储,1为全都存储,2为只存储lua脚本产生的新图 save_new = 1 @@ -106,9 +106,13 @@ beansdb_port = 7900 --mode[3]: ssdb mode --SSDB服务器IP -ssdb_ip = '127.0.0.1' +ssdb_ip = 'redis1.5upay.lan' --SSDB服务器端口 -ssdb_port = 8888 +ssdb_port = 6379 +-- +ssdb_passwd = 'GOft2zRX6' +-- +ssdb_index = 6 --lua conf functions --部分与配置有关的函数在lua中实现,对性能影响不大 diff --git a/src/main.c b/src/main.c index c097a5e..7a4fc28 100644 --- a/src/main.c +++ b/src/main.c @@ -60,6 +60,7 @@ static int load_conf(const char *conf); static void sighandler(int signal, siginfo_t *siginfo, void *arg); void init_thread(evhtp_t *htp, evthr_t *thread, void *arg); int main(int argc, char **argv); +redisContext * createRedisContext(); evbase_t *evbase; @@ -69,6 +70,42 @@ extern const struct luaL_Reg loglib[]; const char *conf_file = NULL; pthread_key_t gLuaStateKey = 0; +/** + * @brief support redis auth and select index + */ + +redisContext * createRedisContext(){ + redisContext* c = redisConnect(settings.ssdb_ip, settings.ssdb_port); + if (c->err) { + redisFree(c); + LOG_PRINT(LOG_DEBUG, "Connect to ssdb server faile"); + } else { + LOG_PRINT(LOG_DEBUG, "Connect to ssdb server Success"); + if (strcmp(settings.ssdb_passwd,"") > 0) { + redisReply *reply; + reply = redisCommand(c, "AUTH %s", settings.ssdb_passwd); + if (reply->type == REDIS_REPLY_ERROR) { + LOG_PRINT(LOG_ERROR, "ssdb auth faile"); + } + else { + LOG_PRINT(LOG_DEBUG, "ssdb auth Success"); + if (settings.ssdb_index > 0) { + reply = redisCommand(c, "SELECT %d", settings.ssdb_index); + if (reply->type == REDIS_REPLY_ERROR) { + LOG_PRINT(LOG_DEBUG, "ssdb select faile"); + } + else { + LOG_PRINT(LOG_DEBUG, "ssdb select %d",settings.ssdb_index); + } + } + } + } + } + return c; +} + + + /** * @brief close lua_State in thread local storage. */ @@ -132,6 +169,8 @@ static void settings_init(void) { settings.beansdb_port = 7905; str_lcpy(settings.ssdb_ip, "127.0.0.1", sizeof(settings.ssdb_ip)); settings.ssdb_port = 6379; + memset(settings.ssdb_passwd,'\0',sizeof(settings.ssdb_passwd)); + settings.ssdb_index=0; multipart_parser_settings *callbacks = (multipart_parser_settings *)malloc(sizeof(multipart_parser_settings)); memset(callbacks, 0, sizeof(multipart_parser_settings)); //callbacks->on_header_field = on_header_field; @@ -349,6 +388,16 @@ static int load_conf(const char *conf) { settings.ssdb_port = (int)lua_tonumber(L, -1); lua_pop(L, 1); + lua_getglobal(L, "ssdb_passwd"); + if (lua_isstring(L, -1)) + str_lcpy(settings.ssdb_passwd, lua_tostring(L, -1), sizeof(settings.ssdb_passwd)); + lua_pop(L, 1); + + lua_getglobal(L, "ssdb_index"); + if (lua_isnumber(L, -1)) + settings.ssdb_index = (int)lua_tonumber(L, -1); + lua_pop(L, 1); + //settings.L = L; lua_close(L); @@ -419,7 +468,8 @@ void init_thread(evhtp_t *htp, evthr_t *thread, void *arg) { memcached_server_list_free(servers); } else if (settings.mode == 3) { thr_args->beansdb_conn = NULL; - redisContext* c = redisConnect(settings.ssdb_ip, settings.ssdb_port); + redisContext* c = createRedisContext(); + //redisContext* c = redisConnect(settings.ssdb_ip, settings.ssdb_port); if (c->err) { redisFree(c); LOG_PRINT(LOG_DEBUG, "Connect to ssdb server faile"); @@ -565,15 +615,20 @@ int main(int argc, char **argv) { } memcached_free(beans); } else if (settings.mode == 3) { - redisContext* c = redisConnect(settings.ssdb_ip, settings.ssdb_port); - if (c->err) { - redisFree(c); - LOG_PRINT(LOG_DEBUG, "Connect to ssdb server faile"); - fprintf(stderr, "SSDB[%s:%d] Connect Failed!\n", settings.ssdb_ip, settings.ssdb_port); - return -1; - } else { - LOG_PRINT(LOG_DEBUG, "Connect to ssdb server Success"); - } + + redisContext* c = createRedisContext(); + if (c == NULL || c->err) { + return -1; + } +// redisContext* c = redisConnect(settings.ssdb_ip, settings.ssdb_port); +// if (c->err) { +// redisFree(c); +// LOG_PRINT(LOG_DEBUG, "Connect to ssdb server faile"); +// fprintf(stderr, "SSDB[%s:%d] Connect Failed!\n", settings.ssdb_ip, settings.ssdb_port); +// return -1; +// } else { +// LOG_PRINT(LOG_DEBUG, "Connect to ssdb server Success"); +// } } //init magickwand diff --git a/src/zcommon.h b/src/zcommon.h index a8709fe..e3e5118 100644 --- a/src/zcommon.h +++ b/src/zcommon.h @@ -105,6 +105,8 @@ struct setting { int beansdb_port; char ssdb_ip[128]; int ssdb_port; + char ssdb_passwd[256]; + int ssdb_index; multipart_parser_settings *mp_set; int (*get_img)(zimg_req_t *, evhtp_request_t *); int (*info_img)(evhtp_request_t *, thr_arg_t *, char *); From d84d99412e8c17d50fc442fcaf1d046e6ee47913 Mon Sep 17 00:00:00 2001 From: "guoming.qin" Date: Thu, 29 Mar 2018 17:08:00 +0800 Subject: [PATCH 2/4] set default settings --- bin/conf/zimg.lua | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/bin/conf/zimg.lua b/bin/conf/zimg.lua index 15cb94a..4036d4b 100644 --- a/bin/conf/zimg.lua +++ b/bin/conf/zimg.lua @@ -52,7 +52,7 @@ LOG_INFO 6 Information LOG_DEBUG 7 DEBUG message ]] --输出log级别 -log_level = 7 +log_level = 6 --输出log路径 log_name = pwd .. '/log/zimg.log' @@ -85,7 +85,7 @@ quality = 75 --value 2 is for memcached protocol storage like beansdb; --value 3 is for redis protocol storage like SSDB. --存储后端类型,1为本地存储,2为memcached协议后端如beansdb,3为redis协议后端如SSDB -mode = 3 +mode = 1 --save_new value: 0.don't save any 1.save all 2.only save types in lua script --新文件是否存储,0为不存储,1为全都存储,2为只存储lua脚本产生的新图 save_new = 1 @@ -106,13 +106,13 @@ beansdb_port = 7900 --mode[3]: ssdb mode --SSDB服务器IP -ssdb_ip = 'redis1.5upay.lan' +ssdb_ip = '127.0.0.1' --SSDB服务器端口 -ssdb_port = 6379 +ssdb_port = 8888 -- -ssdb_passwd = 'GOft2zRX6' +ssdb_passwd = '' -- -ssdb_index = 6 +ssdb_index = 0 --lua conf functions --部分与配置有关的函数在lua中实现,对性能影响不大 From 40cf7e3411f739d00bee55478d485612e7f09030 Mon Sep 17 00:00:00 2001 From: "guoming.qin" Date: Thu, 29 Mar 2018 17:10:15 +0800 Subject: [PATCH 3/4] set default conf --- bin/conf/zimg.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/conf/zimg.lua b/bin/conf/zimg.lua index 4036d4b..9d0eae1 100644 --- a/bin/conf/zimg.lua +++ b/bin/conf/zimg.lua @@ -52,7 +52,7 @@ LOG_INFO 6 Information LOG_DEBUG 7 DEBUG message ]] --输出log级别 -log_level = 6 +log_level = 6 --输出log路径 log_name = pwd .. '/log/zimg.log' From 6e3034198dc6f8084c58195dd5373893a577d0e2 Mon Sep 17 00:00:00 2001 From: "guoming.qin" Date: Thu, 29 Mar 2018 17:20:49 +0800 Subject: [PATCH 4/4] set default conf --- bin/conf/zimg.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bin/conf/zimg.lua b/bin/conf/zimg.lua index 9d0eae1..cf5e975 100644 --- a/bin/conf/zimg.lua +++ b/bin/conf/zimg.lua @@ -109,9 +109,9 @@ beansdb_port = 7900 ssdb_ip = '127.0.0.1' --SSDB服务器端口 ssdb_port = 8888 --- +--授权密码 ssdb_passwd = '' --- +--数据库索引 ssdb_index = 0 --lua conf functions