X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=bacula%2Fsrc%2Fqt-console%2Fmain.cpp;h=b34b49755c276d7eaf8e3f14d3bb5cab8d436dd3;hb=00be6ada3459eedda80fd138f28d30783c7e2623;hp=1933a0b94989232ef0f8543a83a77bdcb19438ef;hpb=3133293fea4dacd73a386da2ddf776e06f2ad8ec;p=bacula%2Fbacula diff --git a/bacula/src/qt-console/main.cpp b/bacula/src/qt-console/main.cpp index 1933a0b949..b34b49755c 100644 --- a/bacula/src/qt-console/main.cpp +++ b/bacula/src/qt-console/main.cpp @@ -1,14 +1,14 @@ /* Bacula® - The Network Backup Solution - Copyright (C) 2007 Free Software Foundation Europe e.V. + Copyright (C) 2007-2009 Free Software Foundation Europe e.V. The main author of Bacula is Kern Sibbald, with contributions from many others, a complete list can be found in the file AUTHORS. This program is Free Software; you can redistribute it and/or modify it under the terms of version two of the GNU General Public - License as published by the Free Software Foundation plus additions - that are listed in the file LICENSE. + License as published by the Free Software Foundation and included + in the file LICENSE. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -20,58 +20,71 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - Bacula® is a registered trademark of John Walker. + Bacula® is a registered trademark of Kern Sibbald. The licensor of Bacula is the Free Software Foundation Europe (FSFE), Fiduciary Program, Sumatrastrasse 25, 8006 Zürich, Switzerland, email:ftf@fsfeurope.org. */ +/* + * Version $Id$ + * + * Main program for bat (qt-console) + * + * Kern Sibbald, January MMVII + * + */ -#include "mainwindow.h" -#include -#include "config.h" -#include "bacula.h" -#include "console_conf.h" -#include "jcr.h" +#include "bat.h" +#include +#include -/* Imported functions */ -int authenticate_director(JCR *jcr, DIRRES *director, CONRES *cons); +MainWin *mainWin; +QApplication *app; /* Forward referenced functions */ void terminate_console(int sig); static void usage(); static int check_resources(); -#define CONFIG_FILE "./qt-console.conf" /* default configuration file */ +extern bool parse_bat_config(CONFIG *config, const char *configfile, int exit_code); + +#define CONFIG_FILE "bat.conf" /* default configuration file */ /* Static variables */ +static CONFIG *config; static char *configfile = NULL; -MainWindow *mainWin; - int main(int argc, char *argv[]) { - int ch; + int rc; bool no_signals = true; bool test_config = false; - QApplication app(argc, argv); - app.setQuitOnLastWindowClosed(true); + app = new QApplication(argc, argv); + app->setQuitOnLastWindowClosed(true); + QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8")); + + QTranslator qtTranslator; + qtTranslator.load(QString("qt_") + QLocale::system().name()); + app->installTranslator(&qtTranslator); + + QTranslator batTranslator; + batTranslator.load(QString("bat_") + QLocale::system().name()); + app->installTranslator(&batTranslator); - mainWin = new MainWindow; - mainWin->show(); -#ifdef ENABLE_NLS +#ifdef xENABLE_NLS setlocale(LC_ALL, ""); bindtextdomain("bacula", LOCALEDIR); textdomain("bacula"); #endif init_stack_dump(); - my_name_is(argc, argv, "gnome-console"); + my_name_is(argc, argv, "bat"); init_msg(NULL, NULL); working_directory = "/tmp"; @@ -80,6 +93,8 @@ int main(int argc, char *argv[]) sigignore.sa_handler = SIG_IGN; sigfillset(&sigignore.sa_mask); sigaction(SIGPIPE, &sigignore, NULL); + sigaction(SIGUSR2, &sigignore, NULL); + while ((ch = getopt(argc, argv, "bc:d:r:st?")) != -1) { switch (ch) { @@ -121,12 +136,17 @@ int main(int argc, char *argv[]) usage(); } + OSDependentInit(); +#ifdef HAVE_WIN32 + WSA_Init(); /* Initialize Windows sockets */ +#endif + if (configfile == NULL) { configfile = bstrdup(CONFIG_FILE); } - parse_config(configfile); - set_text("Configuration read.\n"); + config = new_config_parser(); + parse_bat_config(config, configfile, M_ERROR_TERM); if (init_crypto() != 0) { Emsg0(M_ERROR_TERM, 0, _("Cryptography library initialization failed.\n")); @@ -136,12 +156,17 @@ int main(int argc, char *argv[]) Emsg1(M_ERROR_TERM, 0, _("Please correct configuration file: %s\n"), configfile); } - return app.exec(); + mainWin = new MainWin; + mainWin->show(); + + rc = app->exec(); +// sm_dump(false); + return rc; } -void terminate_console(int sig) +void terminate_console(int /*sig*/) { - (void)sig; /* avoid compiler complaints */ +// WSA_Cleanup(); /* TODO: check when we have to call it */ exit(0); } @@ -150,7 +175,7 @@ static void usage() fprintf(stderr, _( PROG_COPYRIGHT "\nVersion: %s (%s) %s %s %s\n\n" -"Usage: qt-console [-s] [-c config_file] [-d debug_level] [config_file]\n" +"Usage: bat [-s] [-c config_file] [-d debug_level] [config_file]\n" " -c set configuration file to file\n" " -dnn set debug level to nn\n" " -s no signals\n" @@ -161,26 +186,6 @@ PROG_COPYRIGHT exit(1); } -/* - * Call-back for reading a passphrase for an encrypted PEM file - * This function uses getpass(), which uses a static buffer and is NOT thread-safe. - */ -static int tls_pem_callback(char *buf, int size, const void *userdata) -{ -#ifdef HAVE_TLS - const char *prompt = (const char *) userdata; - char *passwd; - - passwd = getpass(prompt); - bstrncpy(buf, passwd, size); - return (strlen(buf)); -#else - buf[0] = 0; - return 0; -#endif -} - - /* * Make a quick check to see that we have all the * resources needed. @@ -190,6 +195,7 @@ static int check_resources() bool ok = true; DIRRES *director; int numdir; + bool tls_needed; LockRes(); @@ -206,8 +212,9 @@ static int check_resources() continue; } } + tls_needed = director->tls_enable || director->tls_authenticate; - if ((!director->tls_ca_certfile && !director->tls_ca_certdir) && director->tls_enable) { + if ((!director->tls_ca_certfile && !director->tls_ca_certdir) && tls_needed) { Emsg2(M_FATAL, 0, _("Neither \"TLS CA Certificate\"" " or \"TLS CA Certificate Dir\" are defined for Director \"%s\" in %s." " At least one CA certificate store is required.\n"), @@ -235,8 +242,9 @@ static int check_resources() continue; } } + tls_needed = cons->tls_enable || cons->tls_authenticate; - if ((!cons->tls_ca_certfile && !cons->tls_ca_certdir) && cons->tls_enable) { + if ((!cons->tls_ca_certfile && !cons->tls_ca_certdir) && tls_needed) { Emsg2(M_FATAL, 0, _("Neither \"TLS CA Certificate\"" " or \"TLS CA Certificate Dir\" are defined for Console \"%s\" in %s.\n"), cons->hdr.name, configfile);