summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTimothy Pearson <kb9vqf@pearsoncomputing.net>2014-09-03 01:41:43 -0500
committerTimothy Pearson <kb9vqf@pearsoncomputing.net>2014-09-03 01:41:43 -0500
commit2a5e4eb5412f2ac4ea57dad07dbb8a271d13ccbc (patch)
treeaac9966fe127cb01b98d3a9c944648f01a7ccf61
parenta23666fa3ca9c24a065fd821bd334da71e01f40c (diff)
downloadxrdp-proprietary-2a5e4eb5412f2ac4ea57dad07dbb8a271d13ccbc.tar.gz
xrdp-proprietary-2a5e4eb5412f2ac4ea57dad07dbb8a271d13ccbc.zip
Download installation files from correct locations
Keep track of arbiter(s) in use per connection
-rw-r--r--raptorsmiface/libraptorsmiface.c113
-rw-r--r--raptorsmiface/libraptorsmiface.h2
-rwxr-xr-xxorg/X11R7.6/buildx.sh25
3 files changed, 120 insertions, 20 deletions
diff --git a/raptorsmiface/libraptorsmiface.c b/raptorsmiface/libraptorsmiface.c
index 2ad0f6e9..55e92948 100644
--- a/raptorsmiface/libraptorsmiface.c
+++ b/raptorsmiface/libraptorsmiface.c
@@ -41,23 +41,27 @@
#include "list.h"
#include "libraptorsmiface.h"
-#define STATISTICS_SERVER_START_EVENT 0
-#define STATISTICS_SERVER_STOP_EVENT 1
-#define STATISTICS_NEW_CONNECTION_EVENT 2
-#define STATISTICS_CONNECTION_STATUS_EVENT 3
-#define STATISTICS_DISCONNECTION_EVENT 4
-
-#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"
+#define STATISTICS_SERVER_START_EVENT 0
+#define STATISTICS_SERVER_STOP_EVENT 1
+#define STATISTICS_NEW_CONNECTION_EVENT 2
+#define STATISTICS_CONNECTION_STATUS_EVENT 3
+#define STATISTICS_DISCONNECTION_EVENT 4
+
+#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"
+
+#define RAPTORSMIFACE_CFG_DATABASE_SCHEMA_VERSION 1
char *server = NULL;
char *user = NULL;
char *password = NULL;
char *database = NULL;
+char *local_machine_fqdn = NULL;
+
void dprint(const char *fmt, ...)
{
va_list argp;
@@ -126,6 +130,10 @@ void read_ini_configuration() {
struct list* param_n;
struct list* param_v;
+ /* set global variables */
+ local_machine_fqdn = raptor_sm_get_local_machine_fqdn();
+
+ /* open configuration file */
char cfg_file[256];
g_snprintf(cfg_file, 255, "%s/xrdp.ini", XRDP_CFG_PATH);
@@ -160,6 +168,39 @@ MYSQL * connect_if_needed() {
dprint("[ERROR] MySQL connection FAILED [%s]\n\r", mysql_error(conn));
conn = 0;
}
+ else {
+ // Check schema version
+ char* query;
+ MYSQL_RES *res;
+ MYSQL_ROW row;
+ asprintf(&query, "SELECT value FROM dbschema WHERE skey='revision'");
+ if (mysql_query_internal(conn, query)) {
+ // Server error
+ free(query);
+ mysql_close(conn);
+ dprint("[ERROR] MySQL connection FAILED [%s]\n\r", mysql_error(conn));
+ conn = 0;
+ }
+ else {
+ free(query);
+ res = mysql_store_result(conn);
+ if ((row = mysql_fetch_row(res)) == NULL) {
+ dprint("[ERROR] Mandatory schema version key not found\n\r");
+ conn = 0;
+ }
+ else if (!row[0]) {
+ dprint("[ERROR] Mandatory schema version key not found\n\r");
+ conn = 0;
+ }
+ else {
+ int schema_version = atoi(row[0]);
+ if (schema_version != RAPTORSMIFACE_CFG_DATABASE_SCHEMA_VERSION) {
+ dprint("[ERROR] Schema version key mismatch (%d:%d)\n\r", schema_version, RAPTORSMIFACE_CFG_DATABASE_SCHEMA_VERSION);
+ conn = 0;
+ }
+ }
+ }
+ }
return conn;
}
@@ -285,10 +326,12 @@ char raptor_sm_deallocate_session(char* username) {
// Insert connection information into the statistics database
char* safe_servername = get_mysql_escaped_string(conn, hostname);
char* safe_username = get_mysql_escaped_string(conn, username);
+ char* safe_local_machine_fqdn = get_mysql_escaped_string(conn, local_machine_fqdn);
long long timestamp = time(NULL);
- asprintf(&query, "INSERT INTO statistics (timestamp, eventtypeid, servername, display, typeid, username) VALUES ('%lld', '%d', '%s', '%d', '%d', '%s')", timestamp, STATISTICS_DISCONNECTION_EVENT, safe_servername, display, -1, safe_username);
+ asprintf(&query, "INSERT INTO statistics (timestamp, eventtypeid, arbiter, servername, display, typeid, username) VALUES ('%lld', '%d', '%s', '%s', '%d', '%d', '%s')", timestamp, STATISTICS_DISCONNECTION_EVENT, safe_local_machine_fqdn, safe_servername, display, -1, safe_username);
free(safe_servername);
free(safe_username);
+ free(safe_local_machine_fqdn);
free(hostname);
if (mysql_query_internal(conn, query)) {
// Server error
@@ -409,7 +452,9 @@ char* raptor_sm_allocate_session(char* username) {
// Insert new information into the sessions database and set status to ALLOCATED
char* safe_servername = get_mysql_escaped_string(conn, bestserver);
char* safe_username = get_mysql_escaped_string(conn, username);
- asprintf(&query, "INSERT INTO sessions (username, servername, state) VALUES ('%s', '%s', '%d')", safe_username, safe_servername, SM_STATUS_ALLOCATED);
+ char* safe_local_machine_fqdn = get_mysql_escaped_string(conn, local_machine_fqdn);
+ asprintf(&query, "INSERT INTO sessions (username, arbiter, servername, state) VALUES ('%s', '%s', '%s', '%d')", safe_username, safe_local_machine_fqdn, safe_servername, SM_STATUS_ALLOCATED);
+ free(safe_local_machine_fqdn);
free(safe_servername);
free(safe_username);
if (mysql_query_internal(conn, query)) {
@@ -424,8 +469,10 @@ char* raptor_sm_allocate_session(char* username) {
// Insert connection information into the statistics database
char* safe_servername = get_mysql_escaped_string(conn, bestserver);
char* safe_username = get_mysql_escaped_string(conn, username);
+ char* safe_local_machine_fqdn = get_mysql_escaped_string(conn, local_machine_fqdn);
long long timestamp = time(NULL);
- asprintf(&query, "INSERT INTO statistics (timestamp, eventtypeid, servername, display, typeid, username) VALUES ('%lld', '%d', '%s', '%d', '%d', '%s')", timestamp, STATISTICS_NEW_CONNECTION_EVENT, safe_servername, -1, SM_STATUS_ALLOCATED, safe_username);
+ asprintf(&query, "INSERT INTO statistics (timestamp, eventtypeid, arbiter, servername, display, typeid, username) VALUES ('%lld', '%d', '%s', '%s', '%d', '%d', '%s')", timestamp, STATISTICS_NEW_CONNECTION_EVENT, safe_local_machine_fqdn, safe_servername, -1, SM_STATUS_ALLOCATED, safe_username);
+ free(safe_local_machine_fqdn);
free(safe_servername);
free(safe_username);
if (mysql_query_internal(conn, query)) {
@@ -455,6 +502,28 @@ char* raptor_sm_allocate_session(char* username) {
}
}
+char* raptor_sm_get_local_machine_fqdn() {
+ struct addrinfo hints, *res;
+ int err;
+
+ char hostname[1024];
+ hostname[1023] = '\0';
+ gethostname(hostname, 1023);
+
+ memset(&hints, 0, sizeof hints);
+ hints.ai_socktype = SOCK_STREAM;
+ hints.ai_family = AF_UNSPEC;
+ hints.ai_flags = AI_CANONNAME;
+
+ if ((err = getaddrinfo(hostname, NULL, &hints, &res)) != 0) {
+ return strdup("");
+ }
+
+ char* ret = strdup(res->ai_canonname);
+ freeaddrinfo(res);
+ return ret;
+}
+
char* raptor_sm_get_ip_for_hostname(char* hostname, char* error) {
struct addrinfo hints, *res;
struct in_addr addr;
@@ -868,10 +937,12 @@ int raptor_sm_server_started(char* username, pid_t pid, int display, char* dbfie
char* current_server = raptor_sm_get_hostname_for_display(display);
char* safe_servername = get_mysql_escaped_string(conn, current_server);
char* safe_username = get_mysql_escaped_string(conn, username);
+ char* safe_local_machine_fqdn = get_mysql_escaped_string(conn, local_machine_fqdn);
long long timestamp = time(NULL);
- asprintf(&query, "INSERT INTO statistics (timestamp, eventtypeid, servername, display, typeid, username) VALUES ('%lld', '%d', '%s', '%d', '%d', '%s')", timestamp, STATISTICS_CONNECTION_STATUS_EVENT, safe_servername, display, SM_STATUS_RUNNING, safe_username);
+ asprintf(&query, "INSERT INTO statistics (timestamp, eventtypeid, arbiter, servername, display, typeid, username) VALUES ('%lld', '%d', '%s', '%s', '%d', '%d', '%s')", timestamp, STATISTICS_CONNECTION_STATUS_EVENT, safe_local_machine_fqdn, safe_servername, display, SM_STATUS_RUNNING, safe_username);
free(safe_servername);
free(safe_username);
+ free(safe_local_machine_fqdn);
free(current_server);
if (mysql_query_internal(conn, query)) {
// Server error
@@ -1107,10 +1178,12 @@ char raptor_sm_set_session_state(int display, int state) {
char* username = raptor_sm_get_username_for_display_and_hostname(display, hostname);
char* safe_servername = get_mysql_escaped_string(conn, hostname);
char* safe_username = get_mysql_escaped_string(conn, username);
+ char* safe_local_machine_fqdn = get_mysql_escaped_string(conn, local_machine_fqdn);
long long timestamp = time(NULL);
- asprintf(&query, "INSERT INTO statistics (timestamp, eventtypeid, servername, display, typeid, username) VALUES ('%lld', '%d', '%s', '%d', '%d', '%s')", timestamp, STATISTICS_CONNECTION_STATUS_EVENT, safe_servername, display, state, safe_username);
+ asprintf(&query, "INSERT INTO statistics (timestamp, eventtypeid, arbiter, servername, display, typeid, username) VALUES ('%lld', '%d', '%s', '%s', '%d', '%d', '%s')", timestamp, STATISTICS_CONNECTION_STATUS_EVENT, safe_local_machine_fqdn, safe_servername, display, state, safe_username);
free(safe_servername);
free(safe_username);
+ free(safe_local_machine_fqdn);
free(hostname);
free(username);
if (mysql_query_internal(conn, query)) {
@@ -1161,9 +1234,11 @@ int raptor_sm_stats_report_server_start(char* hostname) {
// Insert information into the statistics database
char* safe_servername = get_mysql_escaped_string(conn, hostname);
+ char* safe_local_machine_fqdn = get_mysql_escaped_string(conn, local_machine_fqdn);
long long timestamp = time(NULL);
- asprintf(&query, "INSERT INTO statistics (timestamp, eventtypeid, servername, display, typeid) VALUES ('%lld', '%d', '%s', '%d', '%d')", timestamp, STATISTICS_SERVER_START_EVENT, safe_servername, -1, -1);
+ asprintf(&query, "INSERT INTO statistics (timestamp, eventtypeid, arbiter, servername, display, typeid) VALUES ('%lld', '%d', '%s', '%s', '%d', '%d')", timestamp, STATISTICS_SERVER_START_EVENT, safe_local_machine_fqdn, safe_servername, -1, -1);
free(safe_servername);
+ free(safe_local_machine_fqdn);
if (mysql_query_internal(conn, query)) {
// Server error
dprint("Unable to insert data into statistics database! [%s]\n\r", mysql_error(conn));
@@ -1186,9 +1261,11 @@ int raptor_sm_stats_report_server_stop(char* hostname) {
// Insert information into the statistics database
char* safe_servername = get_mysql_escaped_string(conn, hostname);
+ char* safe_local_machine_fqdn = get_mysql_escaped_string(conn, local_machine_fqdn);
long long timestamp = time(NULL);
- asprintf(&query, "INSERT INTO statistics (timestamp, eventtypeid, servername, display, typeid) VALUES ('%lld', '%d', '%s', '%d', '%d')", timestamp, STATISTICS_SERVER_STOP_EVENT, safe_servername, -1, -1);
+ asprintf(&query, "INSERT INTO statistics (timestamp, eventtypeid, arbiter, servername, display, typeid) VALUES ('%lld', '%d', '%s', '%s', '%d', '%d')", timestamp, STATISTICS_SERVER_STOP_EVENT, safe_local_machine_fqdn, safe_servername, -1, -1);
free(safe_servername);
+ free(safe_local_machine_fqdn);
if (mysql_query_internal(conn, query)) {
// Server error
dprint("Unable to insert data into statistics database! [%s]\n\r", mysql_error(conn));
diff --git a/raptorsmiface/libraptorsmiface.h b/raptorsmiface/libraptorsmiface.h
index 299d64ba..79e4c2e1 100644
--- a/raptorsmiface/libraptorsmiface.h
+++ b/raptorsmiface/libraptorsmiface.h
@@ -41,6 +41,8 @@ enum raptor_sm_status {
#define RAPTOR_SM_BASE_PULSEAUDIO_PORT 2000
#define RAPTOR_SM_MANAGEMENT_SERVER_IP_NETRANGE "10.0.0.0/8"
+char* raptor_sm_get_local_machine_fqdn();
+
char* raptor_sm_get_ip_for_hostname(char* hostname, char* err);
char* raptor_sm_get_hostname_for_username(char* username, bool create);
diff --git a/xorg/X11R7.6/buildx.sh b/xorg/X11R7.6/buildx.sh
index 279f72cb..4db5b8f9 100755
--- a/xorg/X11R7.6/buildx.sh
+++ b/xorg/X11R7.6/buildx.sh
@@ -34,7 +34,27 @@ download_file()
cd downloads
echo "downloading file $file"
- if [ "$file" = "pixman-0.15.20.tar.bz2" ]; then
+ wget -cq $download_url/$file
+ status=$?
+ cd ..
+ return $status
+
+ if [ "$file" = "libpthread-stubs-0.3.tar.bz2" ]; then
+ wget -cq http://xcb.freedesktop.org/dist/$file
+ status=$?
+ cd ..
+ return $status
+ elif [ "$file" = "libxcb-1.7.tar.bz2" ]; then
+ wget -cq http://xcb.freedesktop.org/dist/$file
+ status=$?
+ cd ..
+ return $status
+ elif [ "$file" = "xcb-proto-1.6.tar.bz2" ]; then
+ wget -cq http://xcb.freedesktop.org/dist/$file
+ status=$?
+ cd ..
+ return $status
+ elif [ "$file" = "pixman-0.15.20.tar.bz2" ]; then
wget -cq http://ftp.x.org/pub/individual/lib/$file
status=$?
cd ..
@@ -266,7 +286,8 @@ make_it()
data_file=x11_file_list.txt
# this is the default download location for most modules
-download_url=http://www.x.org/releases/X11R7.6/src/everything
+# download_url=http://www.x.org/releases/X11R7.6/src/everything
+download_url=http://server1.xrdp.org/xrdp/X11R7.6
num_modules=`cat $data_file | wc -l`
count=0