Usabilility improvements:

- telnet_admin_ifaces disabled as currently not implemented
- telnet_stats_ifaces disabled as currently not implemented
- ProxySQL_Admin::get_variable() uses a safer version of strdup()
- default config file is, in order: proxysql.cnf , proxysql.cfg , /etc/proxysql.cnf , /etc/proxysql.cfg
- default datadir moved from /var/run/proxysql to current working directory

Minor bug fixes
pull/317/head
René Cannaò 11 years ago
parent 2b2454d8bd
commit 84c0964d64

@ -18,6 +18,14 @@
//#define MYSQL_THREAD_IMPLEMENTATION
char *s_strdup(char *s) {
char *ret=NULL;
if (s) {
ret=strdup(s);
}
return ret;
}
static volatile int load_main_=0;
static volatile bool nostart_=false;
@ -1349,8 +1357,10 @@ ProxySQL_Admin::ProxySQL_Admin() {
variables.admin_credentials=strdup("admin:admin");
variables.stats_credentials=strdup("stats:stats");
variables.mysql_ifaces=strdup("127.0.0.1:6032");
variables.telnet_admin_ifaces=strdup("127.0.0.1:6030");
variables.telnet_stats_ifaces=strdup("127.0.0.1:6031");
variables.telnet_admin_ifaces=NULL;
variables.telnet_stats_ifaces=NULL;
//variables.telnet_admin_ifaces=strdup("127.0.0.1:6030");
//variables.telnet_stats_ifaces=strdup("127.0.0.1:6031");
variables.refresh_interval=2000;
#ifdef DEBUG
variables.debug=GloVars.global.gdbg;
@ -1664,9 +1674,11 @@ void ProxySQL_Admin::flush_mysql_variables___database_to_runtime(SQLite3DB *db,
char *val=GloMTH->get_variable(r->fields[0]);
char q[1000];
if (val) {
proxy_error("Impossible to set variable %s with value \"%s\". Resetting to current \"%s\".\n", r->fields[0],r->fields[1], val);
sprintf(q,"INSERT OR REPLACE INTO global_variables VALUES(\"mysql-%s\",\"%s\")",r->fields[0],val);
db->execute(q);
if (strcmp(val,r->fields[1])) {
proxy_error("Impossible to set variable %s with value \"%s\". Resetting to current \"%s\".\n", r->fields[0],r->fields[1], val);
sprintf(q,"INSERT OR REPLACE INTO global_variables VALUES(\"mysql-%s\",\"%s\")",r->fields[0],val);
db->execute(q);
}
free(val);
} else {
proxy_error("Impossible to set not existing variable %s with value \"%s\". Deleting\n", r->fields[0],r->fields[1]);
@ -1750,11 +1762,11 @@ char **ProxySQL_Admin::get_variables_list() {
char * ProxySQL_Admin::get_variable(char *name) {
#define INTBUFSIZE 4096
char intbuf[INTBUFSIZE];
if (!strcasecmp(name,"admin_credentials")) return strdup(variables.admin_credentials);
if (!strcasecmp(name,"stats_credentials")) return strdup(variables.stats_credentials);
if (!strcasecmp(name,"mysql_ifaces")) return strdup(variables.mysql_ifaces);
if (!strcasecmp(name,"telnet_admin_ifaces")) return strdup(variables.telnet_admin_ifaces);
if (!strcasecmp(name,"telnet_stats_ifaces")) return strdup(variables.telnet_stats_ifaces);
if (!strcasecmp(name,"admin_credentials")) return s_strdup(variables.admin_credentials);
if (!strcasecmp(name,"stats_credentials")) return s_strdup(variables.stats_credentials);
if (!strcasecmp(name,"mysql_ifaces")) return s_strdup(variables.mysql_ifaces);
if (!strcasecmp(name,"telnet_admin_ifaces")) return s_strdup(variables.telnet_admin_ifaces);
if (!strcasecmp(name,"telnet_stats_ifaces")) return s_strdup(variables.telnet_stats_ifaces);
if (!strcasecmp(name,"refresh_interval")) {
sprintf(intbuf,"%d",variables.refresh_interval);
return strdup(intbuf);
@ -1869,7 +1881,8 @@ bool ProxySQL_Admin::set_variable(char *name, char *value) { // this is the pub
if (vallen) {
bool update_creds=false;
if ((variables.mysql_ifaces==NULL) || strcasecmp(variables.mysql_ifaces,value) ) update_creds=true;
free(variables.mysql_ifaces);
if (variables.mysql_ifaces)
free(variables.mysql_ifaces);
variables.mysql_ifaces=strdup(value);
if (update_creds && variables.mysql_ifaces) {
S_amll.update_ifaces(variables.mysql_ifaces, &S_amll.ifaces_mysql);
@ -1883,7 +1896,8 @@ bool ProxySQL_Admin::set_variable(char *name, char *value) { // this is the pub
if (vallen) {
bool update_creds=false;
if ((variables.telnet_admin_ifaces==NULL) || strcasecmp(variables.telnet_admin_ifaces,value) ) update_creds=true;
free(variables.telnet_admin_ifaces);
if (variables.telnet_admin_ifaces)
free(variables.telnet_admin_ifaces);
variables.telnet_admin_ifaces=strdup(value);
if (update_creds && variables.telnet_admin_ifaces) {
S_amll.update_ifaces(variables.telnet_admin_ifaces, &S_amll.ifaces_telnet_admin);
@ -1897,7 +1911,8 @@ bool ProxySQL_Admin::set_variable(char *name, char *value) { // this is the pub
if (vallen) {
bool update_creds=false;
if ((variables.telnet_stats_ifaces==NULL) || strcasecmp(variables.telnet_stats_ifaces,value) ) update_creds=true;
free(variables.telnet_stats_ifaces);
if (variables.telnet_stats_ifaces)
free(variables.telnet_stats_ifaces);
variables.telnet_stats_ifaces=strdup(value);
if (update_creds && variables.telnet_stats_ifaces) {
S_amll.update_ifaces(variables.telnet_stats_ifaces, &S_amll.ifaces_telnet_stats);

@ -135,9 +135,14 @@ void ProxySQL_GlobalVariables::process_opts_pre() {
if (config_file==NULL) {
config_file=(char *)"proxysql.cnf";
//if (!g_file_test(config_file,(GFileTest)(G_FILE_TEST_EXISTS|G_FILE_TEST_IS_REGULAR))) {
if (Proxy_file_regular(config_file)==false) {
config_file=(char *)"/etc/proxysql.cnf";
config_file=(char *)"proxysql.cfg";
if (Proxy_file_regular(config_file)==false) {
config_file=(char *)"/etc/proxysql.cnf";
if (Proxy_file_regular(config_file)==false) {
config_file=(char *)"/etc/proxysql.cfg";
}
}
}
}
#ifdef DEBUG

@ -657,8 +657,8 @@ void MySQL_Data_Stream::generate_compressed_packet() {
queueOUT.pkt.size=destLen1+destLen2+7+7;
queueOUT.pkt.ptr=l_alloc(queueOUT.pkt.size);
memcpy(queueOUT.pkt.ptr,dest1,destLen1+7);
memcpy(queueOUT.pkt.ptr+destLen1+7,dest2,destLen2+7);
memcpy((char *)queueOUT.pkt.ptr,dest1,destLen1+7);
memcpy((char *)queueOUT.pkt.ptr+destLen1+7,dest2,destLen2+7);
free(dest1);
free(dest2);
l_free(p2.size,p2.ptr);

@ -210,7 +210,7 @@ int main(int argc, const char * argv[]) {
if (GloVars.confFile->OpenFile(GloVars.config_file) == true) {
GloVars.configfile_open=true;
}
char *t=get_current_dir_name();
if (GloVars.__cmd_proxysql_datadir==NULL) {
// datadir was not specified , try to read config file
if (GloVars.configfile_open==true) {
@ -223,20 +223,21 @@ int main(int argc, const char * argv[]) {
if (rc==true) {
GloVars.datadir=strdup(datadir.c_str());
} else {
GloVars.datadir=(char *)"/var/run/proxysql";
GloVars.datadir=strdup(t);
}
} else {
// datadir was not specified in config file
GloVars.datadir=(char *)"/var/run/proxysql";
// datadir was not specified in config file
GloVars.datadir=strdup(t);
}
} else {
// config file not readable
GloVars.datadir=(char *)"/var/run/proxysql";
std::cerr << "[Warning]: Cannot open config file " << GloVars.config_file << ". Using default datadir " << GloVars.datadir << endl;
GloVars.datadir=strdup(t);
std::cerr << "[Warning]: Cannot open config file " << GloVars.config_file << ". Using default datadir in current working directory " << GloVars.datadir << endl;
}
} else {
GloVars.datadir=GloVars.__cmd_proxysql_datadir;
}
free(t);
GloVars.admindb=(char *)malloc(strlen(GloVars.datadir)+strlen((char *)"proxysql.db")+2);
sprintf(GloVars.admindb,"%s/%s",GloVars.datadir, (char *)"proxysql.db");

Loading…
Cancel
Save