/*
Bacula® - The Network Backup Solution
- Copyright (C) 2007-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
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.
*/
-#include <QApplication>
#include "bat.h"
+#include <QApplication>
+#include <QTranslator>
-bool commDebug = false;
MainWin *mainWin;
QApplication *app;
-
/* Forward referenced functions */
void terminate_console(int sig);
static void usage();
static int check_resources();
-#define CONFIG_FILE "./bat.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;
int main(int argc, char *argv[])
{
-
int ch;
bool no_signals = true;
bool test_config = false;
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);
-#ifdef ENABLE_NLS
+
+
+#ifdef xENABLE_NLS
setlocale(LC_ALL, "");
bindtextdomain("bacula", LOCALEDIR);
textdomain("bacula");
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) {
usage();
}
+ OSDependentInit();
+#ifdef HAVE_WIN32
+ WSA_Init(); /* Initialize Windows sockets */
+#endif
+
if (configfile == NULL) {
configfile = bstrdup(CONFIG_FILE);
}
- parse_config(configfile);
+ 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"));
return app->exec();
}
-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);
}
exit(1);
}
-#ifdef xxx
-/*
- * 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
-}
-#endif
-
-
/*
* Make a quick check to see that we have all the
* resources needed.
bool ok = true;
DIRRES *director;
int numdir;
+ bool tls_needed;
LockRes();
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"),
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);