diff options
-rw-r--r-- | .bzrignore | 1 | ||||
-rw-r--r-- | sql/sql_acl.cc | 7 | ||||
-rw-r--r-- | tools/Makefile.am | 6 | ||||
-rw-r--r-- | tools/mysqlmanager.c (renamed from tools/mysqlmngd.c) | 124 |
4 files changed, 72 insertions, 66 deletions
diff --git a/.bzrignore b/.bzrignore index 55b991d8102..4011bf5ff5e 100644 --- a/.bzrignore +++ b/.bzrignore @@ -399,3 +399,4 @@ tools/mysys_priv.h vio/test-sslclient vio/test-sslserver vio/viotest-ssl +tools/mysqlmanager diff --git a/sql/sql_acl.cc b/sql/sql_acl.cc index 3d8304675a5..918999e2ace 100644 --- a/sql/sql_acl.cc +++ b/sql/sql_acl.cc @@ -61,7 +61,9 @@ public: uint hostname_length; char *user,*password; ulong salt[2]; +#ifdef HAVE_OPENSSL char *ssl_type, *ssl_cipher, *ssl_issuer, *ssl_subject; +#endif }; class ACL_DB :public ACL_ACCESS @@ -200,10 +202,12 @@ int acl_init(bool dont_read_acl_tables) update_hostname(&user.host,get_field(&mem, table,0)); user.user=get_field(&mem, table,1); user.password=get_field(&mem, table,2); +#ifdef HAVE_OPENSSL user.ssl_type=get_field(&mem, table,17); user.ssl_cipher=get_field(&mem, table,18); user.ssl_issuer=get_field(&mem, table,19); user.ssl_subject=get_field(&mem, table,20); +#endif if (user.password && (length=(uint) strlen(user.password)) == 8 && protocol_version == PROTOCOL_VERSION) { @@ -2416,6 +2420,7 @@ int mysql_show_grants(THD *thd,LEX_USER *lex_user) global.append(passd_buff); global.append('\''); } +#ifdef HAVE_OPENSSL /* SSL grant stuff */ DBUG_PRINT("info",("acl_user->ssl_type=%s",acl_user->ssl_type)); DBUG_PRINT("info",("acl_user->ssl_cipher=%s",acl_user->ssl_cipher)); @@ -2439,7 +2444,7 @@ int mysql_show_grants(THD *thd,LEX_USER *lex_user) } } } - +#endif if (want_access & GRANT_ACL) global.append(" WITH GRANT OPTION",18); thd->packet.length(0); diff --git a/tools/Makefile.am b/tools/Makefile.am index afb888c3a9a..1e1d8866b10 100644 --- a/tools/Makefile.am +++ b/tools/Makefile.am @@ -3,9 +3,9 @@ INCLUDES = -I$(srcdir)/../include $(openssl_includes) \ -I.. LIBS = @TOOLS_LIBS@ LDADD = @CLIENT_EXTRA_LDFLAGS@ ../libmysql_r/libmysqlclient_r.la -bin_PROGRAMS = mysqlmngd -mysqlmngd_SOURCES = mysqlmngd.c my_vsnprintf.c -#mysqltest_DEPENDENCIES= $(LIBRARIES) $(pkglib_LTLIBRARIES) +bin_PROGRAMS = mysqlmanager +mysqlmanager_SOURCES = mysqlmanager.c +mysqlmanager_DEPENDENCIES= $(LIBRARIES) $(pkglib_LTLIBRARIES) DEFS = -DUNDEF_THREADS_HACK # Don't update the files from bitkeeper diff --git a/tools/mysqlmngd.c b/tools/mysqlmanager.c index 6e95d033954..10c3f6065b0 100644 --- a/tools/mysqlmngd.c +++ b/tools/mysqlmanager.c @@ -57,7 +57,7 @@ #endif #ifndef MNGD_LOG_FILE -#define MNGD_LOG_FILE "/var/log/mysqlmngd.log" +#define MNGD_LOG_FILE "/var/log/mysqlmanager.log" #endif #ifndef MNGD_BACK_LOG @@ -68,22 +68,22 @@ #define MAX_USER_NAME 16 #endif -/* Variable naming convention - if starts with mngd_, either is set +/* Variable naming convention - if starts with manager_, either is set directly by the user, or used closely in ocnjunction with a variable set by the user */ -uint mngd_port = MNGD_PORT; +uint manager_port = MNGD_PORT; FILE* errfp; -const char* mngd_log_file = MNGD_LOG_FILE; +const char* manager_log_file = MNGD_LOG_FILE; pthread_mutex_t lock_log, lock_shutdown; -int mngd_sock = -1; -struct sockaddr_in mngd_addr; -ulong mngd_bind_addr = INADDR_ANY; -int mngd_back_log = MNGD_BACK_LOG; +int manager_sock = -1; +struct sockaddr_in manager_addr; +ulong manager_bind_addr = INADDR_ANY; +int manager_back_log = MNGD_BACK_LOG; int in_shutdown = 0, shutdown_requested=0; -const char* mngd_greeting = MNGD_GREETING; -uint mngd_max_cmd_len = MNGD_MAX_CMD_LEN; +const char* manager_greeting = MNGD_GREETING; +uint manager_max_cmd_len = MNGD_MAX_CMD_LEN; /* messages */ @@ -103,7 +103,7 @@ uint mngd_max_cmd_len = MNGD_MAX_CMD_LEN; #define PRIV_SHUTDOWN 1 -struct mngd_thd +struct manager_thd { Vio* vio; char user[MAX_USER_NAME]; @@ -112,25 +112,25 @@ struct mngd_thd int fatal,finished; }; -struct mngd_thd* mngd_thd_new(Vio* vio); -void mngd_thd_free(struct mngd_thd* thd); +struct manager_thd* manager_thd_new(Vio* vio); +void manager_thd_free(struct manager_thd* thd); -typedef int (*mngd_cmd_handler)(struct mngd_thd*,char*,char*); +typedef int (*manager_cmd_handler)(struct manager_thd*,char*,char*); -struct mngd_cmd +struct manager_cmd { const char* name; const char* help; - mngd_cmd_handler handler_func; + manager_cmd_handler handler_func; int len; }; -#define HANDLE_DECL(com) static int handle_ ## com (struct mngd_thd* thd,\ +#define HANDLE_DECL(com) static int handle_ ## com (struct manager_thd* thd,\ char* args_start,char* args_end) #define HANDLE_NOARG_DECL(com) static int handle_ ## com \ - (struct mngd_thd* thd, char* __attribute__((unused)) args_start,\ + (struct manager_thd* thd, char* __attribute__((unused)) args_start,\ char* __attribute__((unused)) args_end) @@ -139,7 +139,7 @@ HANDLE_NOARG_DECL(quit); HANDLE_NOARG_DECL(help); HANDLE_NOARG_DECL(shutdown); -struct mngd_cmd commands[] = +struct manager_cmd commands[] = { {"ping", "Check if this server is alive", handle_ping,4}, {"quit", "Finish session", handle_quit,4}, @@ -165,22 +165,22 @@ struct option long_options[] = static void die(const char* fmt,...); static void print_time(FILE* fp); static void clean_up(); -static struct mngd_cmd* lookup_cmd(char* s,int len); +static struct manager_cmd* lookup_cmd(char* s,int len); static void client_msg(Vio* vio,int err_code,const char* fmt,...); static void client_msg_pre(Vio* vio,int err_code,const char* fmt,...); static void client_msg_raw(Vio* vio,int err_code,int pre,const char* fmt, va_list args); -static int authenticate(struct mngd_thd* thd); -static char* read_line(struct mngd_thd* thd); /* returns pointer to end of +static int authenticate(struct manager_thd* thd); +static char* read_line(struct manager_thd* thd); /* returns pointer to end of line */ static pthread_handler_decl(process_connection,arg); -static int exec_line(struct mngd_thd* thd,char* buf,char* buf_end); +static int exec_line(struct manager_thd* thd,char* buf,char* buf_end); -static int exec_line(struct mngd_thd* thd,char* buf,char* buf_end) +static int exec_line(struct manager_thd* thd,char* buf,char* buf_end) { char* p=buf; - struct mngd_cmd* cmd; + struct manager_cmd* cmd; for (;p<buf_end && !isspace(*p);p++) *p=tolower(*p); if (!(cmd=lookup_cmd(buf,(int)(p-buf)))) @@ -193,9 +193,9 @@ static int exec_line(struct mngd_thd* thd,char* buf,char* buf_end) return cmd->handler_func(thd,p,buf_end); } -static struct mngd_cmd* lookup_cmd(char* s,int len) +static struct manager_cmd* lookup_cmd(char* s,int len) { - struct mngd_cmd* cmd = commands; + struct manager_cmd* cmd = commands; for (;cmd->name;cmd++) { if (cmd->len == len && !memcmp(cmd->name,s,len)) @@ -219,7 +219,7 @@ HANDLE_NOARG_DECL(quit) HANDLE_NOARG_DECL(help) { - struct mngd_cmd* cmd = commands; + struct manager_cmd* cmd = commands; Vio* vio = thd->vio; client_msg_pre(vio,MSG_INFO,"Available commands:"); for (;cmd->name;cmd++) @@ -238,10 +238,10 @@ HANDLE_NOARG_DECL(shutdown) return 0; } -static int authenticate(struct mngd_thd* thd) +static int authenticate(struct manager_thd* thd) { char* buf_end; - client_msg(thd->vio,MSG_INFO, mngd_greeting); + client_msg(thd->vio,MSG_INFO, manager_greeting); if (!(buf_end=read_line(thd))) return -1; client_msg(thd->vio,MSG_OK,"OK"); @@ -327,7 +327,7 @@ LOG_MSG_FUNC(debug,DEBUG) static pthread_handler_decl(process_connection,arg) { - struct mngd_thd* thd = (struct mngd_thd*)arg; + struct manager_thd* thd = (struct manager_thd*)arg; my_thread_init(); pthread_detach_this_thread(); for (;!thd->finished;) @@ -340,7 +340,7 @@ static pthread_handler_decl(process_connection,arg) break; } } - mngd_thd_free(thd); + manager_thd_free(thd); pthread_exit(0); } @@ -377,10 +377,10 @@ static void client_msg_pre(Vio* vio, int err_code, const char* fmt, ...) client_msg_raw(vio,err_code,1,fmt,args); } -static char* read_line(struct mngd_thd* thd) +static char* read_line(struct manager_thd* thd) { char* p=thd->cmd_buf; - char* buf_end = thd->cmd_buf + mngd_max_cmd_len; + char* buf_end = thd->cmd_buf + manager_max_cmd_len; int escaped = 0; for (;p<buf_end;) { @@ -422,13 +422,13 @@ static char* read_line(struct mngd_thd* thd) return 0; } -struct mngd_thd* mngd_thd_new(Vio* vio) +struct manager_thd* manager_thd_new(Vio* vio) { - struct mngd_thd* tmp; - if (!(tmp=(struct mngd_thd*)my_malloc(sizeof(*tmp)+mngd_max_cmd_len, + struct manager_thd* tmp; + if (!(tmp=(struct manager_thd*)my_malloc(sizeof(*tmp)+manager_max_cmd_len, MYF(0)))) { - log_err("Out of memory in mngd_thd_new"); + log_err("Out of memory in manager_thd_new"); return 0; } tmp->vio=vio; @@ -439,7 +439,7 @@ struct mngd_thd* mngd_thd_new(Vio* vio) return tmp; } -void mngd_thd_free(struct mngd_thd* thd) +void manager_thd_free(struct manager_thd* thd) { if (thd->vio) vio_close(thd->vio); @@ -457,8 +457,8 @@ static void clean_up() in_shutdown = 1; pthread_mutex_unlock(&lock_shutdown); log_info("Shutdown started"); - if (mngd_sock) - close(mngd_sock); + if (manager_sock) + close(manager_sock); log_info("Ended"); if (errfp != stderr) fclose(errfp); @@ -505,21 +505,21 @@ int parse_args(int argc, char **argv) DBUG_PUSH(optarg ? optarg : "d:t:O,/tmp/mysqlmgrd.trace"); break; case 'P': - mngd_port=atoi(optarg); + manager_port=atoi(optarg); break; case 'm': - mngd_max_cmd_len=atoi(optarg); + manager_max_cmd_len=atoi(optarg); break; case 'g': - mngd_greeting=optarg; + manager_greeting=optarg; case 'b': - mngd_bind_addr = inet_addr(optarg); + manager_bind_addr = inet_addr(optarg); break; case 'B': - mngd_back_log = atoi(optarg); + manager_back_log = atoi(optarg); break; case 'l': - mngd_log_file=optarg; + manager_log_file=optarg; break; case 'V': print_version(); @@ -539,16 +539,16 @@ int init_server() { int arg=1; log_info("Started"); - if ((mngd_sock=socket(PF_INET,SOCK_STREAM,0)) < 0) + if ((manager_sock=socket(PF_INET,SOCK_STREAM,0)) < 0) die("Could not create socket"); - bzero((char*)&mngd_addr, sizeof(mngd_addr)); - mngd_addr.sin_family = AF_INET; - mngd_addr.sin_addr.s_addr = mngd_bind_addr; - mngd_addr.sin_port = htons(mngd_port); - setsockopt(mngd_sock,SOL_SOCKET, SO_REUSEADDR,(char*)&arg,sizeof(arg)); - if (bind(mngd_sock,(struct sockaddr*)&mngd_addr, sizeof(mngd_addr)) < 0) + bzero((char*)&manager_addr, sizeof(manager_addr)); + manager_addr.sin_family = AF_INET; + manager_addr.sin_addr.s_addr = manager_bind_addr; + manager_addr.sin_port = htons(manager_port); + setsockopt(manager_sock,SOL_SOCKET, SO_REUSEADDR,(char*)&arg,sizeof(arg)); + if (bind(manager_sock,(struct sockaddr*)&manager_addr, sizeof(manager_addr)) < 0) die("Could not bind"); - if (listen(mngd_sock,mngd_back_log) < 0) + if (listen(manager_sock,manager_back_log) < 0) die("Could not listen"); return 0; @@ -557,14 +557,14 @@ int init_server() int run_server_loop() { pthread_t th; - struct mngd_thd *thd; + struct manager_thd *thd; int client_sock,len; Vio* vio; for (;!shutdown_requested;) { len=sizeof(struct sockaddr_in); - if ((client_sock=accept(mngd_sock,(struct sockaddr*)&mngd_addr,&len))<0) + if ((client_sock=accept(manager_sock,(struct sockaddr*)&manager_addr,&len))<0) { if (shutdown_requested) break; @@ -583,7 +583,7 @@ int run_server_loop() close(client_sock); continue; } - if (!(thd=mngd_thd_new(vio))) + if (!(thd=manager_thd_new(vio))) { log_err("Could not create thread object"); vio_close(vio); @@ -593,7 +593,7 @@ int run_server_loop() if (authenticate(thd)) { client_msg(vio,MSG_ACCESS, "Access denied"); - mngd_thd_free(thd); + manager_thd_free(thd); continue; } if (shutdown_requested) @@ -602,7 +602,7 @@ int run_server_loop() { client_msg(vio,MSG_INTERNAL_ERR,"Could not create thread, errno=%d", errno); - mngd_thd_free(thd); + manager_thd_free(thd); continue; } } @@ -612,8 +612,8 @@ int run_server_loop() FILE* open_log_stream() { FILE* fp; - if (!(fp=fopen(mngd_log_file,"a"))) - die("Could not open log file '%s'", mngd_log_file); + if (!(fp=fopen(manager_log_file,"a"))) + die("Could not open log file '%s'", manager_log_file); return fp; } |