diff --git a/raptorsmiface/libraptorsmiface.c b/raptorsmiface/libraptorsmiface.c index 6b0e0d0c..17a3d243 100644 --- a/raptorsmiface/libraptorsmiface.c +++ b/raptorsmiface/libraptorsmiface.c @@ -1,6 +1,21 @@ -// (c) 2012 Timothy Pearson -// (c) 2012 Raptor Engineering -// ALL RIGHTS RESERVED +/* + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + 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. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + + (c) 2012 Timothy Pearson + (c) 2012 Raptor Engineering +*/ #define _GNU_SOURCE @@ -19,8 +34,11 @@ #include #include +#define list_delete mysql_list_delete #include +#undef list_delete +#include "list.h" #include "libraptorsmiface.h" #define STATISTICS_SERVER_START_EVENT 0 @@ -29,10 +47,15 @@ #define STATISTICS_CONNECTION_STATUS_EVENT 3 #define STATISTICS_DISCONNECTION_EVENT 4 -//char *server = "localhost"; -char *server = "freyja.starlink.edu"; +#define RAPTORSMIFACE_CFG_DATABASE "Database" +#define RAPTORSMIFACE_CFG_DATABASE_SERVER "Server" +#define RAPTORSMIFACE_CFG_DATABASE_NAME "Database" +#define RAPTORSMIFACE_CFG_DATABASE_USER "User" +#define RAPTORSMIFACE_CFG_DATABASE_PASSWORD "Password" + +char *server = "localhost"; char *user = "remotelab"; -char *password = "rlpass123"; /* set me first */ +char *password = ""; char *database = "remotelab_sm"; void dprint(const char *fmt, ...) @@ -56,8 +79,73 @@ void dprint(const char *fmt, ...) va_end(argp); } +void raptorsmiface_config_read_database(int file, struct list* param_n, struct list* param_v) { + int i; + char* buf; + char* temp_buf; + + list_clear(param_v); + list_clear(param_n); + + file_read_section(file, RAPTORSMIFACE_CFG_DATABASE, param_n, param_v); + for (i = 0; i < param_n->count; i++) { + buf = (char*)list_get_item(param_n, i); + if (0 == g_strcasecmp(buf, RAPTORSMIFACE_CFG_DATABASE_SERVER)) { + server = g_strdup((char*)list_get_item(param_v, i)); + } + if (0 == g_strcasecmp(buf, RAPTORSMIFACE_CFG_DATABASE_NAME)) { + database = g_strdup((char*)list_get_item(param_v, i)); + } + if (0 == g_strcasecmp(buf, RAPTORSMIFACE_CFG_DATABASE_USER)) { + user = g_strdup((char*)list_get_item(param_v, i)); + } + if (0 == g_strcasecmp(buf, RAPTORSMIFACE_CFG_DATABASE_PASSWORD)) { + password = g_strdup((char*)list_get_item(param_v, i)); + } + } + + g_printf("raptorsmiface configuration:\r\n"); + g_printf("\tServer: %s\r\n", server); + g_printf("\tDatabase: %s\r\n", database); + g_printf("\tUser: %s\r\n", user); +} + +void read_ini_configuration() { + int fd; + struct list* sec; + struct list* param_n; + struct list* param_v; + + char cfg_file[256]; + g_snprintf(cfg_file, 255, "%s/xrdp.ini", XRDP_CFG_PATH); + + fd = g_file_open(cfg_file); + if (-1 == fd) { + dprint("[ERROR] Unable to open configuration file [%s]", cfg_file); + return; + } + + sec = list_create(); + sec->auto_free = 1; + file_read_sections(fd, sec); + param_n = list_create(); + param_n->auto_free = 1; + param_v = list_create(); + param_v->auto_free = 1; + + /* read database config */ + raptorsmiface_config_read_database(fd, param_n, param_v); + + /* cleanup */ + list_delete(sec); + list_delete(param_v); + list_delete(param_n); + g_file_close(fd); +} + MYSQL * connect_if_needed() { MYSQL *conn = mysql_init(NULL); + read_ini_configuration(); if (!mysql_real_connect(conn, server, user, password, database, 0, NULL, 0)) { dprint("[ERROR] MySQL connection FAILED [%s]\n\r", mysql_error(conn)); conn = 0; @@ -1016,4 +1104,4 @@ void raptor_sm_stats_report_server_stop(char* hostname) { } free(query); mysql_close(conn); -} \ No newline at end of file +} diff --git a/raptorsmiface/libraptorsmiface.h b/raptorsmiface/libraptorsmiface.h index 5d03b3e1..46aa1c9c 100644 --- a/raptorsmiface/libraptorsmiface.h +++ b/raptorsmiface/libraptorsmiface.h @@ -1,6 +1,21 @@ -// (c) 2012 Timothy Pearson -// (c) 2012 Raptor Engineering -// ALL RIGHTS RESERVED +/* + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + 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. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + + (c) 2012 Timothy Pearson + (c) 2012 Raptor Engineering +*/ #include @@ -46,4 +61,4 @@ void raptor_sm_run_remote_desktop(char* username, int display, char* executable void raptor_sm_terminate_server(char* username); char* raptor_sm_get_hostname_for_display(int display); void raptor_sm_stats_report_server_start(char* hostname); -void raptor_sm_stats_report_server_stop(char* hostname); \ No newline at end of file +void raptor_sm_stats_report_server_stop(char* hostname);