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
noinst_HEADERS = \
conf.h \
conf-args.h \
conf-file.h \
conf-parse.h \

View File

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

View File

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

View File

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

View File

@ -22,51 +22,7 @@
#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;
#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;
#include "conf.h"
/**
* Reads the given file descriptor, parsing its contents into the guacd_config.

View File

@ -19,6 +19,7 @@
#include "config.h"
#include "conf.h"
#include "conf-parse.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 "connection.h"
#include "conf.h"
#include "conf-args.h"
#include "conf-file.h"
#include "connection.h"
#include "log.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))
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 */
guacd_log_level = config->max_log_level;
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-K\fR \fIKEY FILE\fR]
[\fB-f\fR]
[\fB-v\fR]
.
.SH DESCRIPTION
.B guacd
@ -80,6 +81,11 @@ Causes
.B guacd
to run in the foreground, rather than automatically forking into the
background.
.TP
\fB\-v\fR
Causes
.B guacd
to simply print its version information and exit.
.
.SH SSL/TLS OPTIONS
If libssl was present at the time