GUACAMOLE-351: Merge add "-v" parameter

This commit is contained in:
Nick Couchman 2018-02-07 22:35:42 -05:00
commit 329cc9ee48
9 changed files with 107 additions and 50 deletions

View File

@ -26,6 +26,7 @@ man_MANS = \
man/guacd.conf.5 man/guacd.conf.5
noinst_HEADERS = \ noinst_HEADERS = \
conf.h \
conf-args.h \ conf-args.h \
conf-file.h \ conf-file.h \
conf-parse.h \ conf-parse.h \

View File

@ -19,8 +19,8 @@
#include "config.h" #include "config.h"
#include "conf.h"
#include "conf-args.h" #include "conf-args.h"
#include "conf-file.h"
#include "conf-parse.h" #include "conf-parse.h"
#include <getopt.h> #include <getopt.h>
@ -32,7 +32,7 @@ int guacd_conf_parse_args(guacd_config* config, int argc, char** argv) {
/* Parse arguments */ /* Parse arguments */
int opt; int opt;
while ((opt = getopt(argc, argv, "l:b:p:L:C:K:f")) != -1) { while ((opt = getopt(argc, argv, "l:b:p:L:C:K:fv")) != -1) {
/* -l: Bind port */ /* -l: Bind port */
if (opt == 'l') { if (opt == 'l') {
@ -51,6 +51,11 @@ int guacd_conf_parse_args(guacd_config* config, int argc, char** argv) {
config->foreground = 1; config->foreground = 1;
} }
/* -v: Print version and exit */
else if (opt == 'v') {
config->print_version = 1;
}
/* -p: PID file */ /* -p: PID file */
else if (opt == 'p') { else if (opt == 'p') {
free(config->pidfile); free(config->pidfile);
@ -105,7 +110,8 @@ int guacd_conf_parse_args(guacd_config* config, int argc, char** argv) {
" [-C CERTIFICATE_FILE]" " [-C CERTIFICATE_FILE]"
" [-K PEM_FILE]" " [-K PEM_FILE]"
#endif #endif
" [-f]\n", argv[0]); " [-f]"
" [-v]\n", argv[0]);
return 1; return 1;
} }

View File

@ -22,7 +22,7 @@
#include "config.h" #include "config.h"
#include "conf-file.h" #include "conf.h"
/** /**
* Parses the given arguments into the given configuration. Zero is returned on * Parses the given arguments into the given configuration. Zero is returned on

View File

@ -19,6 +19,7 @@
#include "config.h" #include "config.h"
#include "conf.h"
#include "conf-file.h" #include "conf-file.h"
#include "conf-parse.h" #include "conf-parse.h"
@ -179,6 +180,7 @@ guacd_config* guacd_conf_load() {
conf->bind_port = strdup("4822"); conf->bind_port = strdup("4822");
conf->pidfile = NULL; conf->pidfile = NULL;
conf->foreground = 0; conf->foreground = 0;
conf->print_version = 0;
conf->max_log_level = GUAC_LOG_INFO; conf->max_log_level = GUAC_LOG_INFO;
#ifdef ENABLE_SSL #ifdef ENABLE_SSL

View File

@ -22,51 +22,7 @@
#include "config.h" #include "config.h"
#include <guacamole/client.h> #include "conf.h"
/**
* The contents of a guacd configuration file.
*/
typedef struct guacd_config {
/**
* The host to bind on.
*/
char* bind_host;
/**
* The port to bind on.
*/
char* bind_port;
/**
* The file to write the PID in, if any.
*/
char* pidfile;
/**
* Whether guacd should run in the foreground.
*/
int foreground;
#ifdef ENABLE_SSL
/**
* SSL certificate file.
*/
char* cert_file;
/**
* SSL private key file.
*/
char* key_file;
#endif
/**
* The maximum log level to be logged by guacd.
*/
guac_client_log_level max_log_level;
} guacd_config;
/** /**
* Reads the given file descriptor, parsing its contents into the guacd_config. * Reads the given file descriptor, parsing its contents into the guacd_config.

View File

@ -19,6 +19,7 @@
#include "config.h" #include "config.h"
#include "conf.h"
#include "conf-parse.h" #include "conf-parse.h"
#include <guacamole/client.h> #include <guacamole/client.h>

77
src/guacd/conf.h Normal file
View File

@ -0,0 +1,77 @@
/*
* 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 GUACD_CONF_H
#define GUACD_CONF_H
#include "config.h"
#include <guacamole/client.h>
/**
* The contents of a guacd configuration file.
*/
typedef struct guacd_config {
/**
* The host to bind on.
*/
char* bind_host;
/**
* The port to bind on.
*/
char* bind_port;
/**
* The file to write the PID in, if any.
*/
char* pidfile;
/**
* Whether guacd should run in the foreground.
*/
int foreground;
/**
* Whether guacd should simply print its version information and exit.
*/
int print_version;
#ifdef ENABLE_SSL
/**
* SSL certificate file.
*/
char* cert_file;
/**
* SSL private key file.
*/
char* key_file;
#endif
/**
* The maximum log level to be logged by guacd.
*/
guac_client_log_level max_log_level;
} guacd_config;
#endif

View File

@ -19,9 +19,10 @@
#include "config.h" #include "config.h"
#include "connection.h" #include "conf.h"
#include "conf-args.h" #include "conf-args.h"
#include "conf-file.h" #include "conf-file.h"
#include "connection.h"
#include "log.h" #include "log.h"
#include "proc-map.h" #include "proc-map.h"
@ -279,6 +280,13 @@ int main(int argc, char* argv[]) {
if (config == NULL || guacd_conf_parse_args(config, argc, argv)) if (config == NULL || guacd_conf_parse_args(config, argc, argv))
exit(EXIT_FAILURE); exit(EXIT_FAILURE);
/* If requested, simply print version and exit, without initializing the
* logging system, etc. */
if (config->print_version) {
printf("Guacamole proxy daemon (guacd) version " VERSION "\n");
exit(EXIT_SUCCESS);
}
/* Init logging as early as possible */ /* Init logging as early as possible */
guacd_log_level = config->max_log_level; guacd_log_level = config->max_log_level;
openlog(GUACD_LOG_NAME, LOG_PID, LOG_DAEMON); openlog(GUACD_LOG_NAME, LOG_PID, LOG_DAEMON);

View File

@ -30,6 +30,7 @@ guacd \- Guacamole proxy daemon
[\fB-C\fR \fICERTIFICATE FILE\fR] [\fB-C\fR \fICERTIFICATE FILE\fR]
[\fB-K\fR \fIKEY FILE\fR] [\fB-K\fR \fIKEY FILE\fR]
[\fB-f\fR] [\fB-f\fR]
[\fB-v\fR]
. .
.SH DESCRIPTION .SH DESCRIPTION
.B guacd .B guacd
@ -80,6 +81,11 @@ Causes
.B guacd .B guacd
to run in the foreground, rather than automatically forking into the to run in the foreground, rather than automatically forking into the
background. background.
.TP
\fB\-v\fR
Causes
.B guacd
to simply print its version information and exit.
. .
.SH SSL/TLS OPTIONS .SH SSL/TLS OPTIONS
If libssl was present at the time If libssl was present at the time