GUACAMOLE-175: Split logging between guacd and libguacd.
This commit is contained in:
parent
d7a604c8b2
commit
45adc63597
@ -30,6 +30,7 @@ noinst_HEADERS = \
|
|||||||
conf-file.h \
|
conf-file.h \
|
||||||
conf-parse.h \
|
conf-parse.h \
|
||||||
connection.h \
|
connection.h \
|
||||||
|
log.h \
|
||||||
move-fd.h \
|
move-fd.h \
|
||||||
proc.h \
|
proc.h \
|
||||||
proc-map.h
|
proc-map.h
|
||||||
@ -40,6 +41,7 @@ guacd_SOURCES = \
|
|||||||
conf-parse.c \
|
conf-parse.c \
|
||||||
connection.c \
|
connection.c \
|
||||||
daemon.c \
|
daemon.c \
|
||||||
|
log.c \
|
||||||
move-fd.c \
|
move-fd.c \
|
||||||
proc.c \
|
proc.c \
|
||||||
proc-map.c
|
proc-map.c
|
||||||
|
@ -22,9 +22,9 @@
|
|||||||
#include "connection.h"
|
#include "connection.h"
|
||||||
#include "log.h"
|
#include "log.h"
|
||||||
#include "move-fd.h"
|
#include "move-fd.h"
|
||||||
|
#include "libguacd/user.h"
|
||||||
#include "proc.h"
|
#include "proc.h"
|
||||||
#include "proc-map.h"
|
#include "proc-map.h"
|
||||||
#include "user.h"
|
|
||||||
|
|
||||||
#include <guacamole/client.h>
|
#include <guacamole/client.h>
|
||||||
#include <guacamole/error.h>
|
#include <guacamole/error.h>
|
||||||
@ -36,7 +36,7 @@
|
|||||||
|
|
||||||
#ifdef ENABLE_SSL
|
#ifdef ENABLE_SSL
|
||||||
#include <openssl/ssl.h>
|
#include <openssl/ssl.h>
|
||||||
#include "socket-ssl.h"
|
#include "libguacd/socket-ssl.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
|
@ -22,9 +22,9 @@
|
|||||||
#include "connection.h"
|
#include "connection.h"
|
||||||
#include "conf-args.h"
|
#include "conf-args.h"
|
||||||
#include "conf-file.h"
|
#include "conf-file.h"
|
||||||
|
#include "libguacd/user.h"
|
||||||
#include "log.h"
|
#include "log.h"
|
||||||
#include "proc-map.h"
|
#include "proc-map.h"
|
||||||
#include "user.h"
|
|
||||||
|
|
||||||
#ifdef ENABLE_SSL
|
#ifdef ENABLE_SSL
|
||||||
#include <openssl/ssl.h>
|
#include <openssl/ssl.h>
|
||||||
|
143
src/guacd/log.c
Normal file
143
src/guacd/log.c
Normal file
@ -0,0 +1,143 @@
|
|||||||
|
/*
|
||||||
|
* Licensed to the Apache Software Foundation (ASF) under one
|
||||||
|
* or more contributor license agreements. See the NOTICE file
|
||||||
|
* distributed with this work for additional information
|
||||||
|
* regarding copyright ownership. The ASF licenses this file
|
||||||
|
* to you under the Apache License, Version 2.0 (the
|
||||||
|
* "License"); you may not use this file except in compliance
|
||||||
|
* with the License. You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing,
|
||||||
|
* software distributed under the License is distributed on an
|
||||||
|
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
* KIND, either express or implied. See the License for the
|
||||||
|
* specific language governing permissions and limitations
|
||||||
|
* under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "config.h"
|
||||||
|
#include "log.h"
|
||||||
|
|
||||||
|
#include <guacamole/client.h>
|
||||||
|
#include <guacamole/error.h>
|
||||||
|
|
||||||
|
#include <stdarg.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <syslog.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
|
||||||
|
int guacd_log_level = GUAC_LOG_INFO;
|
||||||
|
|
||||||
|
void vguacd_log(guac_client_log_level level, const char* format,
|
||||||
|
va_list args) {
|
||||||
|
|
||||||
|
const char* priority_name;
|
||||||
|
int priority;
|
||||||
|
|
||||||
|
char message[2048];
|
||||||
|
|
||||||
|
/* Don't bother if the log level is too high */
|
||||||
|
if (level > guacd_log_level)
|
||||||
|
return;
|
||||||
|
|
||||||
|
/* Copy log message into buffer */
|
||||||
|
vsnprintf(message, sizeof(message), format, args);
|
||||||
|
|
||||||
|
/* Convert log level to syslog priority */
|
||||||
|
switch (level) {
|
||||||
|
|
||||||
|
/* Error log level */
|
||||||
|
case GUAC_LOG_ERROR:
|
||||||
|
priority = LOG_ERR;
|
||||||
|
priority_name = "ERROR";
|
||||||
|
break;
|
||||||
|
|
||||||
|
/* Warning log level */
|
||||||
|
case GUAC_LOG_WARNING:
|
||||||
|
priority = LOG_WARNING;
|
||||||
|
priority_name = "WARNING";
|
||||||
|
break;
|
||||||
|
|
||||||
|
/* Informational log level */
|
||||||
|
case GUAC_LOG_INFO:
|
||||||
|
priority = LOG_INFO;
|
||||||
|
priority_name = "INFO";
|
||||||
|
break;
|
||||||
|
|
||||||
|
/* Debug log level */
|
||||||
|
case GUAC_LOG_DEBUG:
|
||||||
|
priority = LOG_DEBUG;
|
||||||
|
priority_name = "DEBUG";
|
||||||
|
break;
|
||||||
|
|
||||||
|
/* Any unknown/undefined log level */
|
||||||
|
default:
|
||||||
|
priority = LOG_INFO;
|
||||||
|
priority_name = "UNKNOWN";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Log to syslog */
|
||||||
|
syslog(priority, "%s", message);
|
||||||
|
|
||||||
|
/* Log to STDERR */
|
||||||
|
fprintf(stderr, GUACD_LOG_NAME "[%i]: %s:\t%s\n",
|
||||||
|
getpid(), priority_name, message);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void guacd_log(guac_client_log_level level, const char* format, ...) {
|
||||||
|
va_list args;
|
||||||
|
va_start(args, format);
|
||||||
|
vguacd_log(level, format, args);
|
||||||
|
va_end(args);
|
||||||
|
}
|
||||||
|
|
||||||
|
void guacd_client_log(guac_client* client, guac_client_log_level level,
|
||||||
|
const char* format, va_list args) {
|
||||||
|
vguacd_log(level, format, args);
|
||||||
|
}
|
||||||
|
|
||||||
|
void guacd_log_guac_error(guac_client_log_level level, const char* message) {
|
||||||
|
|
||||||
|
if (guac_error != GUAC_STATUS_SUCCESS) {
|
||||||
|
|
||||||
|
/* If error message provided, include in log */
|
||||||
|
if (guac_error_message != NULL)
|
||||||
|
guacd_log(level, "%s: %s",
|
||||||
|
message,
|
||||||
|
guac_error_message);
|
||||||
|
|
||||||
|
/* Otherwise just log with standard status string */
|
||||||
|
else
|
||||||
|
guacd_log(level, "%s: %s",
|
||||||
|
message,
|
||||||
|
guac_status_string(guac_error));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Just log message if no status code */
|
||||||
|
else
|
||||||
|
guacd_log(level, "%s", message);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void guacd_log_handshake_failure() {
|
||||||
|
|
||||||
|
if (guac_error == GUAC_STATUS_CLOSED)
|
||||||
|
guacd_log(GUAC_LOG_INFO,
|
||||||
|
"Guacamole connection closed during handshake");
|
||||||
|
else if (guac_error == GUAC_STATUS_PROTOCOL_ERROR)
|
||||||
|
guacd_log(GUAC_LOG_ERROR,
|
||||||
|
"Guacamole protocol violation. Perhaps the version of "
|
||||||
|
"guacamole-client is incompatible with this version of "
|
||||||
|
"guacd?");
|
||||||
|
else
|
||||||
|
guacd_log(GUAC_LOG_WARNING,
|
||||||
|
"Guacamole handshake failed: %s",
|
||||||
|
guac_status_string(guac_error));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -62,14 +62,6 @@ void guacd_client_log(guac_client* client, guac_client_log_level level,
|
|||||||
*/
|
*/
|
||||||
void guacd_log_guac_error(guac_client_log_level level, const char* message);
|
void guacd_log_guac_error(guac_client_log_level level, const char* message);
|
||||||
|
|
||||||
/**
|
|
||||||
* Prints an error message using the logging facilities of the given client,
|
|
||||||
* automatically including any information present in guac_error. This function
|
|
||||||
* accepts parameters identically to printf.
|
|
||||||
*/
|
|
||||||
void guacd_client_log_guac_error(guac_client* client,
|
|
||||||
guac_client_log_level level, const char* message);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Logs a reasonable explanatory message regarding handshake failure based on
|
* Logs a reasonable explanatory message regarding handshake failure based on
|
||||||
* the current value of guac_error.
|
* the current value of guac_error.
|
@ -19,9 +19,9 @@
|
|||||||
|
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
#include "common/list.h"
|
#include "common/list.h"
|
||||||
|
#include "libguacd/user.h"
|
||||||
#include "proc.h"
|
#include "proc.h"
|
||||||
#include "proc-map.h"
|
#include "proc-map.h"
|
||||||
#include "user.h"
|
|
||||||
|
|
||||||
#include <guacamole/client.h>
|
#include <guacamole/client.h>
|
||||||
|
|
||||||
|
@ -23,8 +23,8 @@
|
|||||||
|
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
#include "common/list.h"
|
#include "common/list.h"
|
||||||
|
#include "libguacd/user.h"
|
||||||
#include "proc.h"
|
#include "proc.h"
|
||||||
#include "user.h"
|
|
||||||
|
|
||||||
#include <guacamole/client.h>
|
#include <guacamole/client.h>
|
||||||
|
|
||||||
|
@ -19,11 +19,11 @@
|
|||||||
|
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
|
|
||||||
|
#include "libguacd/user.h"
|
||||||
#include "log.h"
|
#include "log.h"
|
||||||
#include "move-fd.h"
|
#include "move-fd.h"
|
||||||
#include "proc.h"
|
#include "proc.h"
|
||||||
#include "proc-map.h"
|
#include "proc-map.h"
|
||||||
#include "user.h"
|
|
||||||
|
|
||||||
#include <guacamole/client.h>
|
#include <guacamole/client.h>
|
||||||
#include <guacamole/error.h>
|
#include <guacamole/error.h>
|
||||||
|
@ -21,9 +21,9 @@ AUTOMAKE_OPTIONS = foreign
|
|||||||
|
|
||||||
noinst_LTLIBRARIES = libguacd.la
|
noinst_LTLIBRARIES = libguacd.la
|
||||||
|
|
||||||
noinst_HEADERS = \
|
noinst_HEADERS = \
|
||||||
log.h \
|
libguacd/log.h \
|
||||||
user.h
|
libguacd/user.h
|
||||||
|
|
||||||
libguacd_la_SOURCES = \
|
libguacd_la_SOURCES = \
|
||||||
log.c \
|
log.c \
|
||||||
@ -44,7 +44,7 @@ libguacd_la_LDFLAGS = \
|
|||||||
|
|
||||||
# SSL support
|
# SSL support
|
||||||
if ENABLE_SSL
|
if ENABLE_SSL
|
||||||
noinst_HEADERS += socket-ssl.h
|
noinst_HEADERS += libguacd/socket-ssl.h
|
||||||
libguacd_la_SOURCES += socket-ssl.c
|
libguacd_la_SOURCES += socket-ssl.c
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
36
src/libguacd/libguacd/log.h
Normal file
36
src/libguacd/libguacd/log.h
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
/*
|
||||||
|
* Licensed to the Apache Software Foundation (ASF) under one
|
||||||
|
* or more contributor license agreements. See the NOTICE file
|
||||||
|
* distributed with this work for additional information
|
||||||
|
* regarding copyright ownership. The ASF licenses this file
|
||||||
|
* to you under the Apache License, Version 2.0 (the
|
||||||
|
* "License"); you may not use this file except in compliance
|
||||||
|
* with the License. You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing,
|
||||||
|
* software distributed under the License is distributed on an
|
||||||
|
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
* KIND, either express or implied. See the License for the
|
||||||
|
* specific language governing permissions and limitations
|
||||||
|
* under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef LIBGUACD_LOG_H
|
||||||
|
#define LIBGUACD_LOG_H
|
||||||
|
|
||||||
|
#include "config.h"
|
||||||
|
|
||||||
|
#include <guacamole/client.h>
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Prints an error message using the logging facilities of the given client,
|
||||||
|
* automatically including any information present in guac_error. This function
|
||||||
|
* accepts parameters identically to printf.
|
||||||
|
*/
|
||||||
|
void guacd_client_log_guac_error(guac_client* client,
|
||||||
|
guac_client_log_level level, const char* message);
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
@ -18,8 +18,8 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
#ifndef _GUACD_USER_H
|
#ifndef LIBGUACD_USER_H
|
||||||
#define _GUACD_USER_H
|
#define LIBGUACD_USER_H
|
||||||
|
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
|
|
@ -18,7 +18,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
#include "log.h"
|
#include "libguacd/log.h"
|
||||||
|
|
||||||
#include <guacamole/client.h>
|
#include <guacamole/client.h>
|
||||||
#include <guacamole/error.h>
|
#include <guacamole/error.h>
|
||||||
@ -28,102 +28,6 @@
|
|||||||
#include <syslog.h>
|
#include <syslog.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
|
||||||
int guacd_log_level = GUAC_LOG_INFO;
|
|
||||||
|
|
||||||
void vguacd_log(guac_client_log_level level, const char* format,
|
|
||||||
va_list args) {
|
|
||||||
|
|
||||||
const char* priority_name;
|
|
||||||
int priority;
|
|
||||||
|
|
||||||
char message[2048];
|
|
||||||
|
|
||||||
/* Don't bother if the log level is too high */
|
|
||||||
if (level > guacd_log_level)
|
|
||||||
return;
|
|
||||||
|
|
||||||
/* Copy log message into buffer */
|
|
||||||
vsnprintf(message, sizeof(message), format, args);
|
|
||||||
|
|
||||||
/* Convert log level to syslog priority */
|
|
||||||
switch (level) {
|
|
||||||
|
|
||||||
/* Error log level */
|
|
||||||
case GUAC_LOG_ERROR:
|
|
||||||
priority = LOG_ERR;
|
|
||||||
priority_name = "ERROR";
|
|
||||||
break;
|
|
||||||
|
|
||||||
/* Warning log level */
|
|
||||||
case GUAC_LOG_WARNING:
|
|
||||||
priority = LOG_WARNING;
|
|
||||||
priority_name = "WARNING";
|
|
||||||
break;
|
|
||||||
|
|
||||||
/* Informational log level */
|
|
||||||
case GUAC_LOG_INFO:
|
|
||||||
priority = LOG_INFO;
|
|
||||||
priority_name = "INFO";
|
|
||||||
break;
|
|
||||||
|
|
||||||
/* Debug log level */
|
|
||||||
case GUAC_LOG_DEBUG:
|
|
||||||
priority = LOG_DEBUG;
|
|
||||||
priority_name = "DEBUG";
|
|
||||||
break;
|
|
||||||
|
|
||||||
/* Any unknown/undefined log level */
|
|
||||||
default:
|
|
||||||
priority = LOG_INFO;
|
|
||||||
priority_name = "UNKNOWN";
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Log to syslog */
|
|
||||||
syslog(priority, "%s", message);
|
|
||||||
|
|
||||||
/* Log to STDERR */
|
|
||||||
fprintf(stderr, GUACD_LOG_NAME "[%i]: %s:\t%s\n",
|
|
||||||
getpid(), priority_name, message);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
void guacd_log(guac_client_log_level level, const char* format, ...) {
|
|
||||||
va_list args;
|
|
||||||
va_start(args, format);
|
|
||||||
vguacd_log(level, format, args);
|
|
||||||
va_end(args);
|
|
||||||
}
|
|
||||||
|
|
||||||
void guacd_client_log(guac_client* client, guac_client_log_level level,
|
|
||||||
const char* format, va_list args) {
|
|
||||||
vguacd_log(level, format, args);
|
|
||||||
}
|
|
||||||
|
|
||||||
void guacd_log_guac_error(guac_client_log_level level, const char* message) {
|
|
||||||
|
|
||||||
if (guac_error != GUAC_STATUS_SUCCESS) {
|
|
||||||
|
|
||||||
/* If error message provided, include in log */
|
|
||||||
if (guac_error_message != NULL)
|
|
||||||
guacd_log(level, "%s: %s",
|
|
||||||
message,
|
|
||||||
guac_error_message);
|
|
||||||
|
|
||||||
/* Otherwise just log with standard status string */
|
|
||||||
else
|
|
||||||
guacd_log(level, "%s: %s",
|
|
||||||
message,
|
|
||||||
guac_status_string(guac_error));
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Just log message if no status code */
|
|
||||||
else
|
|
||||||
guacd_log(level, "%s", message);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
void guacd_client_log_guac_error(guac_client* client,
|
void guacd_client_log_guac_error(guac_client* client,
|
||||||
guac_client_log_level level, const char* message) {
|
guac_client_log_level level, const char* message) {
|
||||||
|
|
||||||
@ -149,20 +53,3 @@ void guacd_client_log_guac_error(guac_client* client,
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void guacd_log_handshake_failure() {
|
|
||||||
|
|
||||||
if (guac_error == GUAC_STATUS_CLOSED)
|
|
||||||
guacd_log(GUAC_LOG_INFO,
|
|
||||||
"Guacamole connection closed during handshake");
|
|
||||||
else if (guac_error == GUAC_STATUS_PROTOCOL_ERROR)
|
|
||||||
guacd_log(GUAC_LOG_ERROR,
|
|
||||||
"Guacamole protocol violation. Perhaps the version of "
|
|
||||||
"guacamole-client is incompatible with this version of "
|
|
||||||
"guacd?");
|
|
||||||
else
|
|
||||||
guacd_log(GUAC_LOG_WARNING,
|
|
||||||
"Guacamole handshake failed: %s",
|
|
||||||
guac_status_string(guac_error));
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
@ -19,7 +19,7 @@
|
|||||||
|
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
|
|
||||||
#include "socket-ssl.h"
|
#include "libguacd/socket-ssl.h"
|
||||||
|
|
||||||
#include <poll.h>
|
#include <poll.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
@ -19,8 +19,8 @@
|
|||||||
|
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
|
|
||||||
#include "log.h"
|
#include "libguacd/log.h"
|
||||||
#include "user.h"
|
#include "libguacd/user.h"
|
||||||
|
|
||||||
#include <guacamole/client.h>
|
#include <guacamole/client.h>
|
||||||
#include <guacamole/error.h>
|
#include <guacamole/error.h>
|
||||||
|
Loading…
Reference in New Issue
Block a user