From 2e4bf336ca3d6f578013707860ccd6c52fc84975 Mon Sep 17 00:00:00 2001 From: CentOS Sources Date: Wed, 26 May 2021 08:09:38 +0000 Subject: [PATCH] import bacula-9.0.6-6.el8 --- .bacula.metadata | 1 + .gitignore | 1 + SOURCES/README.Redhat | 84 ++ SOURCES/bacula-5.2.13-logwatch.patch | 9 + SOURCES/bacula-7.0.4-autoconf.patch | 35 + SOURCES/bacula-9.0.0-non-free-code.patch | 680 +++++++++ SOURCES/bacula-9.0.0-queryfile.patch | 39 + SOURCES/bacula-9.0.0-seg-fault.patch | 21 + SOURCES/bacula-9.0.2-desktop.patch | 39 + SOURCES/bacula-9.0.4-sqlite-priv.patch | 9 + SOURCES/bacula-9.0.6-bat-build.patch | 39 + SOURCES/bacula-9.0.6-openssl.patch | 43 + SOURCES/bacula-9.0.6-qt5-support.patch | 12 + SOURCES/bacula-9.0.6-tray-monitor-task.patch | 33 + ...bacula-9.0.6-use-crypto-from-openssl.patch | 303 ++++ SOURCES/bacula-dir.init | 115 ++ SOURCES/bacula-dir.service | 13 + SOURCES/bacula-dir.sysconfig | 9 + SOURCES/bacula-fd.init | 113 ++ SOURCES/bacula-fd.service | 14 + SOURCES/bacula-fd.sysconfig | 21 + SOURCES/bacula-sd.init | 115 ++ SOURCES/bacula-sd.service | 13 + SOURCES/bacula-sd.sysconfig | 9 + SOURCES/bacula-tray-monitor.png | Bin 0 -> 407 bytes SOURCES/bacula.logrotate | 9 + SOURCES/quickstart_mysql.txt | 55 + SOURCES/quickstart_postgresql.txt | 57 + SOURCES/quickstart_sqlite3.txt | 52 + SPECS/bacula.spec | 1254 +++++++++++++++++ 30 files changed, 3197 insertions(+) create mode 100644 .bacula.metadata create mode 100644 .gitignore create mode 100644 SOURCES/README.Redhat create mode 100644 SOURCES/bacula-5.2.13-logwatch.patch create mode 100644 SOURCES/bacula-7.0.4-autoconf.patch create mode 100644 SOURCES/bacula-9.0.0-non-free-code.patch create mode 100644 SOURCES/bacula-9.0.0-queryfile.patch create mode 100644 SOURCES/bacula-9.0.0-seg-fault.patch create mode 100644 SOURCES/bacula-9.0.2-desktop.patch create mode 100644 SOURCES/bacula-9.0.4-sqlite-priv.patch create mode 100644 SOURCES/bacula-9.0.6-bat-build.patch create mode 100644 SOURCES/bacula-9.0.6-openssl.patch create mode 100644 SOURCES/bacula-9.0.6-qt5-support.patch create mode 100644 SOURCES/bacula-9.0.6-tray-monitor-task.patch create mode 100644 SOURCES/bacula-9.0.6-use-crypto-from-openssl.patch create mode 100644 SOURCES/bacula-dir.init create mode 100644 SOURCES/bacula-dir.service create mode 100644 SOURCES/bacula-dir.sysconfig create mode 100644 SOURCES/bacula-fd.init create mode 100644 SOURCES/bacula-fd.service create mode 100644 SOURCES/bacula-fd.sysconfig create mode 100644 SOURCES/bacula-sd.init create mode 100644 SOURCES/bacula-sd.service create mode 100644 SOURCES/bacula-sd.sysconfig create mode 100644 SOURCES/bacula-tray-monitor.png create mode 100644 SOURCES/bacula.logrotate create mode 100644 SOURCES/quickstart_mysql.txt create mode 100644 SOURCES/quickstart_postgresql.txt create mode 100644 SOURCES/quickstart_sqlite3.txt create mode 100644 SPECS/bacula.spec diff --git a/.bacula.metadata b/.bacula.metadata new file mode 100644 index 0000000..afcb189 --- /dev/null +++ b/.bacula.metadata @@ -0,0 +1 @@ +207a56be12130d5a4505305045deb04e50b36938 SOURCES/bacula-9.0.6.tar.gz diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..7de5edb --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +SOURCES/bacula-9.0.6.tar.gz diff --git a/SOURCES/README.Redhat b/SOURCES/README.Redhat new file mode 100644 index 0000000..a6b9ca2 --- /dev/null +++ b/SOURCES/README.Redhat @@ -0,0 +1,84 @@ +======== Features + +- Standard components: director, storage, client, docs, bconsole. +- Graphical components: bat, bacula-tray-monitor (where supported). +- Tab completion for bconsole. +- Nagios plugin. +- HTML/PDF docs. +- Quick start guides. +- File Daemon bpipe-fd plugin. +- POSIX.1e capabilities for File Daemon. +- Systemd for Fedora and RHEL 7+. +- SysV init scripts for RHEL 5/6. +- GZIP/LZO compression. +- Static uid/gid of 133 (see "setup" package). +- No usermode / fedora-usermgmt stuff in the console packages. +- Docs no longer an arch specific subpackage. +- SQL libraries needed only by Director and Storage daemons. +- SQL backend management through the alternatives system. + +======== Quick start + +Please look at the following files for a quick start with the various database +backends: + +- quickstart_mysql.txt +- quickstart_postgresql.txt +- quickstart_sqlite3.txt + +======== PostgreSQL, MySQL and SQLite databases + +Bacula director supports different databases backends, if you want to switch +away from the default PostgreSQL one you need to change the "libbaccats" (the +catalogue library) symlink to the real library. + +To change to a different backend, issue the following command: + +# alternatives --config libbaccats.so + +There are 3 programs which provide 'libbaccats.so'. + + Selection Command +----------------------------------------------- + 1 /usr/lib64/libbaccats-mysql.so + 2 /usr/lib64/libbaccats-sqlite3.so +*+ 3 /usr/lib64/libbaccats-postgresql.so + +Enter to keep the current selection[+], or type selection number: 1 + +There is NO need to edit any part in the Bacula Director configuration; for the +purposes of the database creation steps, the bacula-dir.conf configuration file +can be left at their default values. + +======== Switiching between PostgreSQL, MySQL and SQLite backends + +To switch the configured backend to another one, follow the above procedure. +Again, there's no need to edit the Bacula Director configuration file; the +catalog resource can be left as is. + +Importing and exporting data between the various database formats is up to the +user. If the database will be re-initialized from scratch, follow the quick +start guides mentioned above. + +======== Upgrading from old Redhat releases + +When upgrading from old Redhat releases, the "bacula-libs-sql" package takes +care of making the appropriate selection for the database backend based on what +was previously configured on the old system. + +The default permissions in the "/etc/bacula" folder have changed; please perform +the following commands for restoring the permissions for the correct operation +of the daemons. + +# chown -R root:root /etc/bacula +# chmod 755 /etc/bacula +# chmod 640 /etc/bacula/* +# chgrp bacula /etc/bacula/bacula-dir.conf /etc/bacula/query.sql + +All the files that are part of the Director configuration (included with @) must +of course have the same permissions as the main configuration file. + +======== Documentation + +To see all the available documentation in both HTML and PDF formats, please +install the "bacula-docs" package. diff --git a/SOURCES/bacula-5.2.13-logwatch.patch b/SOURCES/bacula-5.2.13-logwatch.patch new file mode 100644 index 0000000..410893b --- /dev/null +++ b/SOURCES/bacula-5.2.13-logwatch.patch @@ -0,0 +1,9 @@ +diff --git a/scripts/logwatch/logfile.bacula.conf.in b/scripts/logwatch/logfile.bacula.conf.in +index 22b6e98..5d257ca 100644 +--- a/scripts/logwatch/logfile.bacula.conf.in ++++ b/scripts/logwatch/logfile.bacula.conf.in +@@ -1,3 +1,3 @@ + # What actual file? Defaults to LogPath if not absolute path.... +-LogFile = @logdir@/bacula.log ++LogFile = @logdir@/*.log + diff --git a/SOURCES/bacula-7.0.4-autoconf.patch b/SOURCES/bacula-7.0.4-autoconf.patch new file mode 100644 index 0000000..0cfe4c8 --- /dev/null +++ b/SOURCES/bacula-7.0.4-autoconf.patch @@ -0,0 +1,35 @@ +diff -Naur bacula-7.0.4.old/autoconf/ltmain.sh bacula-7.0.4/autoconf/ltmain.sh +--- bacula-7.0.4.old/autoconf/ltmain.sh 2014-07-24 17:43:23.085243360 +0200 ++++ bacula-7.0.4/autoconf/ltmain.sh 2014-07-24 17:45:12.505330842 +0200 +@@ -2429,6 +2429,7 @@ + -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries + -shared only do dynamic linking of libtool libraries + -shrext SUFFIX override the standard shared library file extension ++ -soname SONAME override the standard shared object name + -static do not do any dynamic linking of uninstalled libtool libraries + -static-libtool-libs + do not do any dynamic linking of libtool libraries +@@ -5434,6 +5435,11 @@ + prev= + continue + ;; ++ soname) ++ soname_spec="$arg" ++ prev= ++ continue ++ ;; + weak) + func_append weak_libs " $arg" + prev= +@@ -5754,6 +5760,11 @@ + continue + ;; + ++ -soname) ++ prev=soname ++ continue ++ ;; ++ + -static | -static-libtool-libs) + # The effects of -static are defined in a previous loop. + # We used to do the same as -all-static on platforms that diff --git a/SOURCES/bacula-9.0.0-non-free-code.patch b/SOURCES/bacula-9.0.0-non-free-code.patch new file mode 100644 index 0000000..402a954 --- /dev/null +++ b/SOURCES/bacula-9.0.0-non-free-code.patch @@ -0,0 +1,680 @@ +diff -Naur bacula-9.0.0.old/src/lib/lib.h bacula-9.0.0/src/lib/lib.h +--- bacula-9.0.0.old/src/lib/lib.h 2017-07-10 08:52:38.928834471 +0200 ++++ bacula-9.0.0/src/lib/lib.h 2017-07-10 09:06:14.956314468 +0200 +@@ -53,7 +53,6 @@ + #include "fnmatch.h" + #endif + #include "md5.h" +-#include "sha1.h" + #include "tree.h" + #include "watchdog.h" + #include "btimers.h" +diff -Naur bacula-9.0.0.old/src/lib/Makefile.in bacula-9.0.0/src/lib/Makefile.in +--- bacula-9.0.0.old/src/lib/Makefile.in 2017-07-10 08:52:38.928834471 +0200 ++++ bacula-9.0.0/src/lib/Makefile.in 2017-07-10 09:06:49.445973039 +0200 +@@ -38,7 +38,7 @@ + flist.h fnmatch.h guid_to_name.h htable.h lex.h \ + lib.h lz4.h md5.h mem_pool.h message.h \ + openssl.h parse_conf.h plugins.h protos.h queue.h rblist.h \ +- runscript.h rwlock.h serial.h sellist.h sha1.h sha2.h \ ++ runscript.h rwlock.h serial.h sellist.h sha2.h \ + smartall.h status.h tls.h tree.h var.h \ + watchdog.h workq.h ini.h \ + lockmgr.h devlock.h output.h bwlimit.h +@@ -52,7 +52,7 @@ + guid_to_name.c hmac.c jcr.c lex.c lz4.c alist.c dlist.c \ + md5.c message.c mem_pool.c openssl.c \ + plugins.c priv.c queue.c bregex.c \ +- runscript.c rwlock.c scan.c sellist.c serial.c sha1.c sha2.c \ ++ runscript.c rwlock.c scan.c sellist.c serial.c sha2.c \ + signal.c smartall.c rblist.c tls.c tree.c \ + util.c var.c watchdog.c workq.c btimers.c \ + worker.c flist.c \ +@@ -218,13 +218,6 @@ + $(RMF) md5.o + $(CXX) $(DEFS) $(DEBUG) -c $(CPPFLAGS) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) md5.c + +-sha1sum: Makefile sha1.o +- $(RMF) sha1.o +- $(CXX) -DSHA1_SUM $(DEFS) $(DEBUG) -c $(CPPFLAGS) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) sha1.c +- $(LIBTOOL_LINK) $(CXX) $(LDFLAGS) -L. -o $@ sha1.o $(DLIB) -lbac -lm $(LIBS) $(OPENSSL_LIBS) +- $(RMF) sha1.o +- $(CXX) $(DEFS) $(DEBUG) -c $(CPPFLAGS) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) sha1.c +- + bsnprintf: Makefile bsnprintf.o + $(RMF) bsnprintf.o + $(CXX) -DTEST_PROGRAM $(DEFS) $(DEBUG) -c $(CPPFLAGS) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) bsnprintf.c +@@ -274,7 +267,7 @@ + + clean: libtool-clean + @$(RMF) core a.out *.o *.bak *.tex *.pdf *~ *.intpro *.extpro 1 2 3 +- @$(RMF) rwlock_test md5sum sha1sum ++ @$(RMF) rwlock_test md5sum + + realclean: clean + @$(RMF) tags +diff -Naur bacula-9.0.0.old/src/lib/sha1.c bacula-9.0.0/src/lib/sha1.c +--- bacula-9.0.0.old/src/lib/sha1.c 2017-07-10 08:52:38.929834490 +0200 ++++ bacula-9.0.0/src/lib/sha1.c 1970-01-01 01:00:00.000000000 +0100 +@@ -1,510 +0,0 @@ +-/* +- * sha1.c +- * +- * Description: +- * This file implements the Secure Hashing Algorithm 1 as +- * defined in FIPS PUB 180-1 published April 17, 1995. +- * +- * The SHA-1, produces a 160-bit message digest for a given +- * data stream. It should take about 2**n steps to find a +- * message with the same digest as a given message and +- * 2**(n/2) to find any two messages with the same digest, +- * when n is the digest size in bits. Therefore, this +- * algorithm can serve as a means of providing a +- * "fingerprint" for a message. +- * +- * Portability Issues: +- * SHA-1 is defined in terms of 32-bit "words". This code +- * uses (included via "sha1.h" to define 32 and 8 +- * bit unsigned integer types. If your C compiler does not +- * support 32 bit unsigned integers, this code is not +- * appropriate. +- * +- * Caveats: +- * SHA-1 is designed to work with messages less than 2^64 bits +- * long. Although SHA-1 allows a message digest to be generated +- * for messages of any number of bits less than 2^64, this +- * implementation only works with messages with a length that is +- * a multiple of the size of an 8-bit character. +- * +- * See sha1.h for copyright +- */ +- +-#include "sha1.h" +- +-/* +- * Define the SHA1 circular left shift macro +- */ +-#define SHA1CircularShift(bits,word) \ +- (((word) << (bits)) | ((word) >> (32-(bits)))) +- +-/* Local Function Prototyptes */ +-static void SHA1PadMessage(SHA1Context *); +-static void SHA1ProcessMessageBlock(SHA1Context *); +- +-/* +- * SHA1Init +- * +- * Description: +- * This function will initialize the SHA1Context in preparation +- * for computing a new SHA1 message digest. +- * +- * Parameters: +- * context: [in/out] +- * The context to reset. +- * +- * Returns: +- * sha Error Code. +- * +- */ +-int SHA1Init(SHA1Context *context) +-{ +- if (!context) +- { +- return shaNull; +- } +- +- context->Length_Low = 0; +- context->Length_High = 0; +- context->Message_Block_Index = 0; +- +- context->Intermediate_Hash[0] = 0x67452301; +- context->Intermediate_Hash[1] = 0xEFCDAB89; +- context->Intermediate_Hash[2] = 0x98BADCFE; +- context->Intermediate_Hash[3] = 0x10325476; +- context->Intermediate_Hash[4] = 0xC3D2E1F0; +- +- context->Computed = 0; +- context->Corrupted = 0; +- +- return shaSuccess; +-} +- +-/* +- * SHA1Final +- * +- * Description: +- * This function will return the 160-bit message digest into the +- * Message_Digest array provided by the caller. +- * NOTE: The first octet of hash is stored in the 0th element, +- * the last octet of hash in the 19th element. +- * +- * Parameters: +- * context: [in/out] +- * The context to use to calculate the SHA-1 hash. +- * Message_Digest: [out] +- * Where the digest is returned. +- * +- * Returns: +- * sha Error Code. +- * +- */ +-int SHA1Final(SHA1Context *context, +- uint8_t Message_Digest[SHA1HashSize]) +-{ +- int i; +- +- if (!context || !Message_Digest) { +- return shaNull; +- } +- +- if (context->Corrupted) { +- return context->Corrupted; +- } +- +- if (!context->Computed) { +- SHA1PadMessage(context); +- for(i=0; i<64; ++i) { +- /* message may be sensitive, clear it out */ +- context->Message_Block[i] = 0; +- } +- context->Length_Low = 0; /* and clear length */ +- context->Length_High = 0; +- context->Computed = 1; +- +- } +- +- for(i = 0; i < SHA1HashSize; ++i) { +- Message_Digest[i] = context->Intermediate_Hash[i>>2] +- >> 8 * ( 3 - ( i & 0x03 ) ); +- } +- +- return shaSuccess; +-} +- +-/* +- * SHA1Update +- * +- * Description: +- * This function accepts an array of octets as the next portion +- * of the message. +- * +- * Parameters: +- * context: [in/out] +- * The SHA context to update +- * message_array: [in] +- * An array of characters representing the next portion of +- * the message. +- * length: [in] +- * The length of the message in message_array +- * +- * Returns: +- * sha Error Code. +- * +- */ +-int SHA1Update(SHA1Context *context, +- const uint8_t *message_array, +- unsigned length) +-{ +- if (!length) { +- return shaSuccess; +- } +- +- if (!context || !message_array) { +- return shaNull; +- } +- +- if (context->Computed) { +- context->Corrupted = shaStateError; +- +- return shaStateError; +- } +- +- if (context->Corrupted) { +- return context->Corrupted; +- } +- while(length-- && !context->Corrupted) { +- context->Message_Block[context->Message_Block_Index++] = +- (*message_array & 0xFF); +- +- context->Length_Low += 8; +- if (context->Length_Low == 0) { +- context->Length_High++; +- if (context->Length_High == 0) { +- /* Message is too long */ +- context->Corrupted = 1; +- } +- } +- +- if (context->Message_Block_Index == 64) { +- SHA1ProcessMessageBlock(context); +- } +- +- message_array++; +- } +- +- return shaSuccess; +-} +- +-/* +- * SHA1ProcessMessageBlock +- * +- * Description: +- * This function will process the next 512 bits of the message +- * stored in the Message_Block array. +- * +- * Parameters: +- * None. +- * +- * Returns: +- * Nothing. +- * +- * Comments: +- +- * Many of the variable names in this code, especially the +- * single character names, were used because those were the +- * names used in the publication. +- * +- * +- */ +-static void SHA1ProcessMessageBlock(SHA1Context *context) +-{ +- const uint32_t K[] = { /* Constants defined in SHA-1 */ +- 0x5A827999, +- 0x6ED9EBA1, +- 0x8F1BBCDC, +- 0xCA62C1D6 +- }; +- int t; /* Loop counter */ +- uint32_t temp; /* Temporary word value */ +- uint32_t W[80]; /* Word sequence */ +- uint32_t A, B, C, D, E; /* Word buffers */ +- +- /* +- * Initialize the first 16 words in the array W +- */ +- for(t = 0; t < 16; t++) { +- W[t] = context->Message_Block[t * 4] << 24; +- W[t] |= context->Message_Block[t * 4 + 1] << 16; +- W[t] |= context->Message_Block[t * 4 + 2] << 8; +- W[t] |= context->Message_Block[t * 4 + 3]; +- } +- +- for(t = 16; t < 80; t++) { +- W[t] = SHA1CircularShift(1,W[t-3] ^ W[t-8] ^ W[t-14] ^ W[t-16]); +- } +- +- A = context->Intermediate_Hash[0]; +- B = context->Intermediate_Hash[1]; +- C = context->Intermediate_Hash[2]; +- D = context->Intermediate_Hash[3]; +- E = context->Intermediate_Hash[4]; +- +- for(t = 0; t < 20; t++) { +- temp = SHA1CircularShift(5,A) + +- ((B & C) | ((~B) & D)) + E + W[t] + K[0]; +- E = D; +- D = C; +- C = SHA1CircularShift(30,B); +- +- B = A; +- A = temp; +- } +- +- for(t = 20; t < 40; t++) { +- temp = SHA1CircularShift(5,A) + (B ^ C ^ D) + E + W[t] + K[1]; +- E = D; +- D = C; +- C = SHA1CircularShift(30,B); +- B = A; +- A = temp; +- } +- +- for(t = 40; t < 60; t++) { +- temp = SHA1CircularShift(5,A) + +- ((B & C) | (B & D) | (C & D)) + E + W[t] + K[2]; +- E = D; +- D = C; +- C = SHA1CircularShift(30,B); +- B = A; +- A = temp; +- } +- +- for(t = 60; t < 80; t++) { +- temp = SHA1CircularShift(5,A) + (B ^ C ^ D) + E + W[t] + K[3]; +- E = D; +- D = C; +- C = SHA1CircularShift(30,B); +- B = A; +- A = temp; +- } +- +- context->Intermediate_Hash[0] += A; +- context->Intermediate_Hash[1] += B; +- context->Intermediate_Hash[2] += C; +- context->Intermediate_Hash[3] += D; +- context->Intermediate_Hash[4] += E; +- +- context->Message_Block_Index = 0; +-} +- +-/* +- * SHA1PadMessage +- * +- +- * Description: +- * According to the standard, the message must be padded to an even +- * 512 bits. The first padding bit must be a '1'. The last 64 +- * bits represent the length of the original message. All bits in +- * between should be 0. This function will pad the message +- * according to those rules by filling the Message_Block array +- * accordingly. It will also call the ProcessMessageBlock function +- * provided appropriately. When it returns, it can be assumed that +- * the message digest has been computed. +- * +- * Parameters: +- * context: [in/out] +- * The context to pad +- * ProcessMessageBlock: [in] +- * The appropriate SHA*ProcessMessageBlock function +- * Returns: +- * Nothing. +- * +- */ +- +-static void SHA1PadMessage(SHA1Context *context) +-{ +- /* +- * Check to see if the current message block is too small to hold +- * the initial padding bits and length. If so, we will pad the +- * block, process it, and then continue padding into a second +- * block. +- */ +- if (context->Message_Block_Index > 55) { +- context->Message_Block[context->Message_Block_Index++] = 0x80; +- while(context->Message_Block_Index < 64) { +- context->Message_Block[context->Message_Block_Index++] = 0; +- } +- +- SHA1ProcessMessageBlock(context); +- +- while(context->Message_Block_Index < 56) { +- context->Message_Block[context->Message_Block_Index++] = 0; +- } +- } else { +- context->Message_Block[context->Message_Block_Index++] = 0x80; +- while(context->Message_Block_Index < 56) { +- +- context->Message_Block[context->Message_Block_Index++] = 0; +- } +- } +- +- /* +- * Store the message length as the last 8 octets +- */ +- context->Message_Block[56] = context->Length_High >> 24; +- context->Message_Block[57] = context->Length_High >> 16; +- context->Message_Block[58] = context->Length_High >> 8; +- context->Message_Block[59] = context->Length_High; +- context->Message_Block[60] = context->Length_Low >> 24; +- context->Message_Block[61] = context->Length_Low >> 16; +- context->Message_Block[62] = context->Length_Low >> 8; +- context->Message_Block[63] = context->Length_Low; +- +- SHA1ProcessMessageBlock(context); +-} +- +-#ifdef TEST_DRIVER +- +-/* +- * sha1test.c +- * +- * Description: +- * This file will exercise the SHA-1 code performing the three +- * tests documented in FIPS PUB 180-1 plus one which calls +- * SHA1Input with an exact multiple of 512 bits, plus a few +- * error test checks. +- * +- * Portability Issues: +- * None. +- * +- */ +- +-#include +-#include +-#include +-#include "sha1.h" +- +-/* +- * Define patterns for testing +- */ +-#define TEST1 "abc" +-#define TEST2a "abcdbcdecdefdefgefghfghighijhi" +- +-#define TEST2b "jkijkljklmklmnlmnomnopnopq" +-#define TEST2 TEST2a TEST2b +-#define TEST3 "a" +-#define TEST4a "01234567012345670123456701234567" +-#define TEST4b "01234567012345670123456701234567" +- /* an exact multiple of 512 bits */ +-#define TEST4 TEST4a TEST4b +-char *testarray[4] = +-{ +- TEST1, +- TEST2, +- TEST3, +- TEST4 +-}; +-long int repeatcount[4] = { 1, 1, 1000000, 10 }; +-char *resultarray[4] = +-{ +- "A9 99 3E 36 47 06 81 6A BA 3E 25 71 78 50 C2 6C 9C D0 D8 9D", +- "84 98 3E 44 1C 3B D2 6E BA AE 4A A1 F9 51 29 E5 E5 46 70 F1", +- "34 AA 97 3C D4 C4 DA A4 F6 1E EB 2B DB AD 27 31 65 34 01 6F", +- "DE A3 56 A2 CD DD 90 C7 A7 EC ED C5 EB B5 63 93 4F 46 04 52" +-}; +- +-int main() +-{ +- SHA1Context sha; +- int i, j, err; +- uint8_t Message_Digest[20]; +- +- /* +- * Perform SHA-1 tests +- */ +- for(j = 0; j < 4; ++j) { +- printf( "\nTest %d: %d, '%s'\n", +- j+1, +- repeatcount[j], +- testarray[j]); +- +- err = SHA1Init(&sha); +- if (err) { +- fprintf(stderr, "SHA1Reset Error %d.\n", err ); +- break; /* out of for j loop */ +- } +- +- for(i = 0; i < repeatcount[j]; ++i) { +- +- err = SHA1Input(&sha, +- (const unsigned char *) testarray[j], +- strlen(testarray[j])); +- if (err) { +- fprintf(stderr, "SHA1Input Error %d.\n", err ); +- break; /* out of for i loop */ +- } +- } +- +- err = SHA1Final(&sha, Message_Digest); +- if (err) { +- fprintf(stderr, +- "SHA1Result Error %d, could not compute message digest.\n", +- err ); +- } +- else +- { +- printf("\t"); +- for(i = 0; i < 20 ; ++i) { +- printf("%02X ", Message_Digest[i]); +- } +- printf("\n"); +- } +- printf("Should match:\n"); +- printf("\t%s\n", resultarray[j]); +- } +- +- /* Test some error returns */ +- err = SHA1Input(&sha,(const unsigned char *) testarray[1], 1); +- printf ("\nError %d. Should be %d.\n", err, shaStateError ); +- err = SHA1Init(0); +- printf ("\nError %d. Should be %d.\n", err, shaNull ); +- return 0; +-} +- +-#endif /* TEST_DRIVER */ +- +-#ifdef SHA1_SUM +-/* +- * Reads a single ASCII file and prints the HEX sha1 sum. +- */ +-#include +-int main(int argc, char *argv[]) +-{ +- FILE *fd; +- SHA1Context ctx; +- char buf[5000]; +- char signature[25]; +- +- if (argc < 1) { +- printf("Must have filename\n"); +- exit(1); +- } +- fd = fopen(argv[1], "rb"); +- if (!fd) { +- berrno be; +- printf("Could not open %s: ERR=%s\n", argv[1], be.bstrerror(errno)); +- exit(1); +- } +- SHA1Init(&ctx); +- while (fgets(buf, sizeof(buf), fd)) { +- SHA1Update(&ctx, (unsigned char *)buf, strlen(buf)); +- } +- SHA1Final(&ctx, (unsigned char *)signature); +- for (int i=0; i < 20; i++) { +- printf("%02x", signature[i]& 0xFF); +- } +- printf(" %s\n", argv[1]); +- fclose(fd); +-} +-#endif +diff -Naur bacula-9.0.0.old/src/lib/sha1.h bacula-9.0.0/src/lib/sha1.h +--- bacula-9.0.0.old/src/lib/sha1.h 2017-07-10 08:52:38.928834471 +0200 ++++ bacula-9.0.0/src/lib/sha1.h 1970-01-01 01:00:00.000000000 +0100 +@@ -1,107 +0,0 @@ +-/* +- * sha1.h +- * +- * Description: +- * This is the header file for code which implements the Secure +- * Hashing Algorithm 1 as defined in FIPS PUB 180-1 published +- * April 17, 1995. +- * +- * Many of the variable names in this code, especially the +- * single character names, were used because those were the names +- * used in the publication. +- * +- * Please read the file sha1.c for more information. +- * +- * Full Copyright Statement +- * +- * Copyright (C) The Internet Society (2001). All Rights Reserved. +- * +- * This document and translations of it may be copied and furnished to +- * others, and derivative works that comment on or otherwise explain it +- * or assist in its implementation may be prepared, copied, published +- * and distributed, in whole or in part, without restriction of any +- * kind, provided that the above copyright notice and this paragraph are +- * included on all such copies and derivative works. However, this +- * document itself may not be modified in any way, such as by removing +- * the copyright notice or references to the Internet Society or other +- * Internet organizations, except as needed for the purpose of +- * developing Internet standards in which case the procedures for +- * copyrights defined in the Internet Standards process must be +- * followed, or as required to translate it into languages other than +- * English. +- * +- * The limited permissions granted above are perpetual and will not be +- * revoked by the Internet Society or its successors or assigns. +- * +- * This document and the information contained herein is provided on an +- * "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING +- * TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING +- * BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION +- * HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF +- * MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. +- * +- * Acknowledgement +- * +- * Funding for the RFC Editor function is currently provided by the +- * Internet Society. +- * +- */ +- +-#ifndef _SHA1_H_ +-#define _SHA1_H_ +- +-#include "bacula.h" +- +-/* +- * If you do not have the ISO standard stdint.h header file, then you +- * must typdef the following: +- * name meaning +- * uint32_t unsigned 32 bit integer +- * uint8_t unsigned 8 bit integer (i.e., unsigned char) +- * int32_t integer of 32 bits +- * +- */ +- +-#ifndef _SHA_enum_ +-#define _SHA_enum_ +-enum +-{ +- shaSuccess = 0, +- shaNull, /* Null pointer parameter */ +- shaInputTooLong, /* input data too long */ +- shaStateError /* called Input after Result */ +-}; +-#endif +-#define SHA1HashSize 20 +- +-/* +- * This structure will hold context information for the SHA-1 +- * hashing operation +- */ +-typedef struct SHA1Context +-{ +- uint32_t Intermediate_Hash[SHA1HashSize/4]; /* Message Digest */ +- +- uint32_t Length_Low; /* Message length in bits */ +- uint32_t Length_High; /* Message length in bits */ +- +- /* Index into message block array */ +- int32_t Message_Block_Index; +- uint8_t Message_Block[64]; /* 512-bit message blocks */ +- +- int Computed; /* Is the digest computed? */ +- int Corrupted; /* Is the message digest corrupted? */ +-} SHA1Context; +- +-/* +- * Function Prototypes +- */ +- +-int SHA1Init(SHA1Context *); +-int SHA1Update(SHA1Context *, +- const uint8_t *, +- unsigned int); +-int SHA1Final(SHA1Context *, +- uint8_t Message_Digest[SHA1HashSize]); +- +-#endif diff --git a/SOURCES/bacula-9.0.0-queryfile.patch b/SOURCES/bacula-9.0.0-queryfile.patch new file mode 100644 index 0000000..35d89a3 --- /dev/null +++ b/SOURCES/bacula-9.0.0-queryfile.patch @@ -0,0 +1,39 @@ +diff -Naur bacula-9.0.0.old/src/dird/bacula-dir.conf.in bacula-9.0.0/src/dird/bacula-dir.conf.in +--- bacula-9.0.0.old/src/dird/bacula-dir.conf.in 2017-07-10 08:52:38.930834509 +0200 ++++ bacula-9.0.0/src/dird/bacula-dir.conf.in 2017-07-10 08:53:11.189444548 +0200 +@@ -18,7 +18,7 @@ + Director { # define myself + Name = @basename@-dir + DIRport = @dir_port@ # where we listen for UA connections +- QueryFile = "@scriptdir@/query.sql" ++ QueryFile = "@sysconfdir@/query.sql" + WorkingDirectory = "@working_dir@" + PidDirectory = "@piddir@" + Maximum Concurrent Jobs = 20 +diff -Naur bacula-9.0.0.old/src/dird/Makefile.in bacula-9.0.0/src/dird/Makefile.in +--- bacula-9.0.0.old/src/dird/Makefile.in 2017-07-10 08:52:38.930834509 +0200 ++++ bacula-9.0.0/src/dird/Makefile.in 2017-07-10 08:54:24.363828341 +0200 +@@ -124,11 +124,11 @@ + @if test "x${dir_group}" != "x" -a "x${DESTDIR}" = "x" ; then \ + chgrp -f ${dir_group} ${DESTDIR}${sysconfdir}/$$destconf ; \ + fi +- @if test -f ${DESTDIR}${scriptdir}/query.sql; then \ ++ @if test -f ${DESTDIR}${sysconfdir}/query.sql; then \ + echo " ==> Saving existing query.sql to query.sql.old"; \ +- $(MV) -f ${DESTDIR}${scriptdir}/query.sql ${DESTDIR}${scriptdir}/query.sql.old; \ ++ $(MV) -f ${DESTDIR}${sysconfdir}/query.sql ${DESTDIR}${sysconfdir}/query.sql.old; \ + fi +- ${INSTALL_DATA} query.sql ${DESTDIR}${scriptdir}/query.sql ++ ${INSTALL_DATA} query.sql ${DESTDIR}${sysconfdir}/query.sql + @if test -f static-bacula-dir; then \ + $(LIBTOOL_INSTALL) $(INSTALL_PROGRAM) static-bacula-dir $(DESTDIR)$(sbindir)/static-bacula-dir; \ + fi +@@ -137,7 +137,7 @@ + uninstall: + (cd $(DESTDIR)$(sbindir); $(RMF) bacula-dir bdirjson) + (cd $(DESTDIR)$(sysconfdir); $(RMF) bacula-dir.conf bacula-dir.conf.new) +- (cd $(DESTDIR)$(scriptdir); $(RMF) query.sql) ++ (cd $(DESTDIR)$(sysconfdir); $(RMF) query.sql) + + + diff --git a/SOURCES/bacula-9.0.0-seg-fault.patch b/SOURCES/bacula-9.0.0-seg-fault.patch new file mode 100644 index 0000000..fcf6920 --- /dev/null +++ b/SOURCES/bacula-9.0.0-seg-fault.patch @@ -0,0 +1,21 @@ +diff -Naur bacula-9.0.0.old/src/lib/message.c bacula-9.0.0/src/lib/message.c +--- bacula-9.0.0.old/src/lib/message.c 2017-07-10 08:52:38.928834471 +0200 ++++ bacula-9.0.0/src/lib/message.c 2017-07-10 09:04:34.923403834 +0200 +@@ -28,6 +28,7 @@ + * + */ + ++#include + #include "bacula.h" + #include "jcr.h" + +@@ -1367,7 +1368,8 @@ + + if (type == M_ABORT) { + char *p = 0; +- p[0] = 0; /* generate segmentation violation */ ++ // p[0] = 0; /* generate segmentation violation */ ++ assert(p!=NULL); + } + if (type == M_ERROR_TERM) { + exit(1); diff --git a/SOURCES/bacula-9.0.2-desktop.patch b/SOURCES/bacula-9.0.2-desktop.patch new file mode 100644 index 0000000..611e12b --- /dev/null +++ b/SOURCES/bacula-9.0.2-desktop.patch @@ -0,0 +1,39 @@ +diff -Naur bacula-9.0.2.old/scripts/bacula-tray-monitor.desktop.in bacula-9.0.2/scripts/bacula-tray-monitor.desktop.in +--- bacula-9.0.2.old/scripts/bacula-tray-monitor.desktop.in 2017-07-24 15:22:19.884540422 +0200 ++++ bacula-9.0.2/scripts/bacula-tray-monitor.desktop.in 2017-07-24 15:37:02.175038149 +0200 +@@ -1,10 +1,9 @@ + [Desktop Entry] + Name=Bacula Monitor + Comment=Notification Tray Monitor +-Icon=/usr/share/pixmaps/bacula-tray-monitor.xpm ++Icon=/usr/share/pixmaps/bacula-tray-monitor.png + Exec=@sbindir@/bacula-tray-monitor -c @sysconfdir@/tray-monitor.conf + Terminal=false + Type=Application +-Encoding=UTF-8 + X-Desktop-File-Install-Version=0.3 +-Categories=System;Application;Utility;X-Red-Hat-Base; ++Categories=Utility; +diff -Naur bacula-9.0.2.old/scripts/bat.desktop.in bacula-9.0.2/scripts/bat.desktop.in +--- bacula-9.0.2.old/scripts/bat.desktop.in 2017-07-24 15:22:19.884540422 +0200 ++++ bacula-9.0.2/scripts/bat.desktop.in 2017-07-24 15:36:22.753301014 +0200 +@@ -5,7 +5,6 @@ + Exec=@sbindir@/bat -c @sysconfdir@/bat.conf + Terminal=false + Type=Application +-Encoding=UTF-8 + StartupNotify=true + X-Desktop-File-Install-Version=0.3 +-Categories=System;Application;Utility;X-Red-Hat-Base; ++Categories=Utility; +diff -Naur bacula-9.0.2.old/scripts/Makefile.in bacula-9.0.2/scripts/Makefile.in +--- bacula-9.0.2.old/scripts/Makefile.in 2017-07-24 15:22:19.884540422 +0200 ++++ bacula-9.0.2/scripts/Makefile.in 2017-07-24 15:25:03.829605989 +0200 +@@ -67,7 +67,6 @@ + $(MV) -f ${DESTDIR}${scriptdir}/baculabackupreport ${DESTDIR}${scriptdir}/baculabackupreport.old; \ + fi + $(INSTALL_SCRIPT) baculabackupreport $(DESTDIR)$(scriptdir)/baculabackupreport +- $(INSTALL_SCRIPT) bacula-tray-monitor.desktop $(DESTDIR)$(scriptdir)/bacula-tray-monitor.desktop + chmod 0644 $(DESTDIR)$(scriptdir)/btraceback.gdb \ + $(DESTDIR)$(scriptdir)/btraceback.dbx \ + $(DESTDIR)$(scriptdir)/btraceback.mdb diff --git a/SOURCES/bacula-9.0.4-sqlite-priv.patch b/SOURCES/bacula-9.0.4-sqlite-priv.patch new file mode 100644 index 0000000..11d41a7 --- /dev/null +++ b/SOURCES/bacula-9.0.4-sqlite-priv.patch @@ -0,0 +1,9 @@ +diff -Naur bacula-9.0.4.old/src/cats/make_sqlite3_tables.in bacula-9.0.4/src/cats/make_sqlite3_tables.in +--- bacula-9.0.4.old/src/cats/make_sqlite3_tables.in 2017-09-15 13:38:22.717599355 +0200 ++++ bacula-9.0.4/src/cats/make_sqlite3_tables.in 2017-09-15 13:38:36.414851879 +0200 +@@ -481,4 +481,5 @@ + echo "" + + chmod 640 ${db_name}.db ++chown bacula:bacula ${db_name}.db + exit 0 diff --git a/SOURCES/bacula-9.0.6-bat-build.patch b/SOURCES/bacula-9.0.6-bat-build.patch new file mode 100644 index 0000000..9c22e76 --- /dev/null +++ b/SOURCES/bacula-9.0.6-bat-build.patch @@ -0,0 +1,39 @@ +diff -Naur bacula-9.0.6.old/src/qt-console/bat.pro.in bacula-9.0.6/src/qt-console/bat.pro.in +--- bacula-9.0.6.old/src/qt-console/bat.pro.in 2017-12-07 15:44:44.737173178 +0100 ++++ bacula-9.0.6/src/qt-console/bat.pro.in 2017-12-07 15:44:55.118366334 +0100 +@@ -6,7 +6,7 @@ + # + # !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + # +-CONFIG += qt debug @QWT@ ++CONFIG += qt release @QWT@ + + + greaterThan(QT_MAJOR_VERSION, 4): QT += widgets +@@ -15,7 +15,7 @@ + bins.files = bat + confs.path = /$(DESTDIR)@sysconfdir@ + confs.commands = ./install_conf_file +-help.path = /$(DESTDIR)@docdir@ ++help.path = /$(DESTDIR)@htmldir@ + help.files = help/*.html images/status.png images/mail-message-new.png + + datarootdir = @datarootdir@ +diff -Naur bacula-9.0.6.old/src/qt-console/main.cpp bacula-9.0.6/src/qt-console/main.cpp +--- bacula-9.0.6.old/src/qt-console/main.cpp 2017-12-07 15:44:44.742173271 +0100 ++++ bacula-9.0.6/src/qt-console/main.cpp 2017-12-07 15:44:55.119366353 +0100 +@@ -29,11 +29,11 @@ + #include + + /* +- * We need Qt version 4.8.4 or later to be able to comple correctly ++ * We need Qt version 4.6.2 or later to be able to comple correctly + */ +-#if QT_VERSION < 0x040804 ++#if QT_VERSION < 0x040602 + #error "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" +-#error "You need Qt version 4.8.4 or later to build Bat" ++#error "You need Qt version 4.6.2 or later to build Bat" + #error "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" + #endif + diff --git a/SOURCES/bacula-9.0.6-openssl.patch b/SOURCES/bacula-9.0.6-openssl.patch new file mode 100644 index 0000000..33bf7d9 --- /dev/null +++ b/SOURCES/bacula-9.0.6-openssl.patch @@ -0,0 +1,43 @@ +diff -Naur bacula-9.0.6.old/src/lib/crypto.c bacula-9.0.6/src/lib/crypto.c +--- bacula-9.0.6.old/src/lib/crypto.c 2017-12-07 15:42:03.771178189 +0100 ++++ bacula-9.0.6/src/lib/crypto.c 2017-12-07 15:42:25.300578772 +0100 +@@ -42,7 +42,7 @@ + * For OpenSSL version 1.x, EVP_PKEY_encrypt no longer + * exists. It was not an official API. + */ +-#ifdef HAVE_OPENSSLv1 ++#if (OPENSSL_VERSION_NUMBER >= 0x10000000L) + #define EVP_PKEY_encrypt EVP_PKEY_encrypt_old + #define EVP_PKEY_decrypt EVP_PKEY_decrypt_old + #endif +diff -Naur bacula-9.0.6.old/src/lib/tls.c bacula-9.0.6/src/lib/tls.c +--- bacula-9.0.6.old/src/lib/tls.c 2017-12-07 15:42:03.770178170 +0100 ++++ bacula-9.0.6/src/lib/tls.c 2017-12-07 15:42:26.891608376 +0100 +@@ -47,9 +47,6 @@ + + #include "openssl-compat.h" + +-/* No anonymous ciphers, no <128 bit ciphers, no export ciphers, no MD5 ciphers */ +-#define TLS_DEFAULT_CIPHERS "ALL:!ADH:!LOW:!EXP:!MD5:@STRENGTH" +- + /* TLS Context Structure */ + struct TLS_Context { + SSL_CTX *openssl; +@@ -206,7 +203,7 @@ + SSL_CTX_set_options(ctx->openssl, SSL_OP_SINGLE_DH_USE); + } + +- if (SSL_CTX_set_cipher_list(ctx->openssl, TLS_DEFAULT_CIPHERS) != 1) { ++ if (SSL_CTX_set_cipher_list(ctx->openssl, "PROFILE=SYSTEM") != 1) { + Jmsg0(NULL, M_ERROR, 0, + _("Error setting cipher list, no valid ciphers available\n")); + goto err; +@@ -328,7 +325,7 @@ + extname = OBJ_nid2sn(OBJ_obj2nid(X509_EXTENSION_get_object(ext))); + + if (strcmp(extname, "subjectAltName") == 0) { +-#ifdef HAVE_OPENSSLv1 ++#if (OPENSSL_VERSION_NUMBER >= 0x10000000L) + const X509V3_EXT_METHOD *method; + #else + X509V3_EXT_METHOD *method; diff --git a/SOURCES/bacula-9.0.6-qt5-support.patch b/SOURCES/bacula-9.0.6-qt5-support.patch new file mode 100644 index 0000000..179918c --- /dev/null +++ b/SOURCES/bacula-9.0.6-qt5-support.patch @@ -0,0 +1,12 @@ +diff -urNp old/src/qt-console/pages.h new/src/qt-console/pages.h +--- old/src/qt-console/pages.h 2017-11-21 18:37:16.000000000 +0100 ++++ new/src/qt-console/pages.h 2018-02-06 12:37:04.490297821 +0100 +@@ -21,7 +21,7 @@ + /* + * Dirk Bartley, March 2007 + */ +- ++#include + #if QT_VERSION >= 0x050000 + #include + #else diff --git a/SOURCES/bacula-9.0.6-tray-monitor-task.patch b/SOURCES/bacula-9.0.6-tray-monitor-task.patch new file mode 100644 index 0000000..8eaf9c0 --- /dev/null +++ b/SOURCES/bacula-9.0.6-tray-monitor-task.patch @@ -0,0 +1,33 @@ +--- bacula-9.0.6.old/src/qt-console/tray-monitor/task.cpp 2018-01-28 15:19:14.055587280 -0600 ++++ bacula-9.0.6/src/qt-console/tray-monitor/task.cpp 2018-01-28 15:18:55.151599308 -0600 +@@ -992,15 +992,15 @@ + } + + /* cache the file set */ +- res->bs->fsend(".bvfs_update jobid=%s\n", jobs.toUtf8()); ++ res->bs->fsend(".bvfs_update jobid=%s\n", bstrdup(jobs.toUtf8()) ); + while (get_next_line(res)) { + Dmsg2(dbglvl, "<- %d %s\n", res->bs->msglen, curline); + } + + if (pathid == 0) { +- res->bs->fsend(".bvfs_lsdirs jobid=%s path=\"\"\n", jobs.toUtf8()); ++ res->bs->fsend(".bvfs_lsdirs jobid=%s path=\"\"\n", bstrdup(jobs.toUtf8())); + } else { +- res->bs->fsend(".bvfs_lsdirs jobid=%s pathid=%lld\n", jobs.toUtf8(), pathid); ++ res->bs->fsend(".bvfs_lsdirs jobid=%s pathid=%lld\n", bstrdup(jobs.toUtf8()), pathid); + } + + while (get_next_line(res)) { +@@ -1024,9 +1024,9 @@ + + /* then, request files */ + if (pathid == 0) { +- res->bs->fsend(".bvfs_lsfiles jobid=%s path=\"\"\n", jobs.toUtf8()); ++ res->bs->fsend(".bvfs_lsfiles jobid=%s path=\"\"\n", bstrdup(jobs.toUtf8())); + } else { +- res->bs->fsend(".bvfs_lsfiles jobid=%s pathid=%lld\n", jobs.toUtf8(), pathid); ++ res->bs->fsend(".bvfs_lsfiles jobid=%s pathid=%lld\n", bstrdup(jobs.toUtf8()), pathid); + } + + while (get_next_line(res)) { diff --git a/SOURCES/bacula-9.0.6-use-crypto-from-openssl.patch b/SOURCES/bacula-9.0.6-use-crypto-from-openssl.patch new file mode 100644 index 0000000..5f40438 --- /dev/null +++ b/SOURCES/bacula-9.0.6-use-crypto-from-openssl.patch @@ -0,0 +1,303 @@ +Author: Vaclav Dolezal +Date: Mon Aug 12 14:51:39 2019 +0200 + + Use functions from OpenSSL for HMAC, MD5 and random bytes + +diff --git a/bacula/src/dird/dird_conf.c b/bacula/src/dird/dird_conf.c +index 02fae0bab..dff241356 100644 +--- a/bacula/src/dird/dird_conf.c ++++ b/bacula/src/dird/dird_conf.c +@@ -42,6 +42,10 @@ + #include "bacula.h" + #include "dird.h" + ++#if HAVE_OPENSSL ++# include ++#endif ++ + /* Define the first and last resource ID record + * types. Note, these should be unique for each + * daemon though not a requirement. +@@ -1645,6 +1649,11 @@ void free_resource(RES *rres, int type) + free(res->res_fs.exclude_items); + } + res->res_fs.num_excludes = 0; ++#if HAVE_OPENSSL ++ EVP_MD_CTX_free(res->res_fs.md5c); ++ res->res_fs.md5c = NULL; ++ res->res_fs.have_MD5 = false; ++#endif + break; + case R_POOL: + if (res->res_pool.pool_type) { +diff --git a/bacula/src/dird/dird_conf.h b/bacula/src/dird/dird_conf.h +index 5174a7a14..4e910c5bd 100644 +--- a/bacula/src/dird/dird_conf.h ++++ b/bacula/src/dird/dird_conf.h +@@ -24,6 +24,10 @@ + + /* NOTE: #includes at the end of this file */ + ++#if HAVE_OPENSSL ++# include ++#endif ++ + /* + * Resource codes -- they must be sequential for indexing + */ +@@ -591,7 +595,11 @@ public: + INCEXE **exclude_items; + int32_t num_excludes; + bool have_MD5; /* set if MD5 initialized */ ++#if HAVE_OPENSSL ++ EVP_MD_CTX *md5c; /* MD5 of include/exclude */ ++#else + struct MD5Context md5c; /* MD5 of include/exclude */ ++#endif + char MD5[30]; /* base 64 representation of MD5 */ + bool ignore_fs_changes; /* Don't force Full if FS changed */ + bool enable_vss; /* Enable Volume Shadow Copy */ +diff --git a/bacula/src/dird/inc_conf.c b/bacula/src/dird/inc_conf.c +index 3f4fbf55e..64b422242 100644 +--- a/bacula/src/dird/inc_conf.c ++++ b/bacula/src/dird/inc_conf.c +@@ -32,6 +32,10 @@ + #include + #endif + ++#if HAVE_OPENSSL ++# include ++#endif ++ + /* Forward referenced subroutines */ + + void store_inc(LEX *lc, RES_ITEM *item, int index, int pass); +@@ -354,7 +358,17 @@ static void store_newinc(LEX *lc, RES_ITEM *item, int index, int pass) + bool options; + + if (!res_all.res_fs.have_MD5) { ++#if HAVE_OPENSSL ++ res_all.res_fs.md5c = EVP_MD_CTX_new(); ++ if (!res_all.res_fs.md5c ++ || !EVP_DigestInit_ex(res_all.res_fs.md5c, EVP_md5(), NULL) ++ ) { ++ Emsg1(M_ERROR_TERM, 0, "MD5 computation failed: %s\n", ++ ERR_reason_error_string(ERR_peek_last_error())); ++ } ++#else + MD5Init(&res_all.res_fs.md5c); ++#endif + res_all.res_fs.have_MD5 = true; + } + memset(&res_incexe, 0, sizeof(INCEXE)); +@@ -620,7 +634,13 @@ static void store_fname(LEX *lc, RES_ITEM2 *item, int index, int pass, bool excl + } + case T_QUOTED_STRING: + if (res_all.res_fs.have_MD5) { ++#if HAVE_OPENSSL ++ if (!EVP_DigestUpdate(res_all.res_fs.md5c, (void *)lc->str, (size_t) lc->str_len)) ++ Emsg1(M_ERROR_TERM, 0, "MD5 computation failed: %s\n", ++ ERR_reason_error_string(ERR_peek_last_error())); ++#else + MD5Update(&res_all.res_fs.md5c, (unsigned char *)lc->str, lc->str_len); ++#endif + } + incexe = &res_incexe; + if (incexe->name_list.size() == 0) { +@@ -663,7 +683,13 @@ static void store_plugin_name(LEX *lc, RES_ITEM2 *item, int index, int pass, boo + } + case T_QUOTED_STRING: + if (res_all.res_fs.have_MD5) { ++#if HAVE_OPENSSL ++ if (!EVP_DigestUpdate(res_all.res_fs.md5c, (void *)lc->str, (size_t) lc->str_len)) ++ Emsg1(M_ERROR_TERM, 0, "MD5 computation failed: %s\n", ++ ERR_reason_error_string(ERR_peek_last_error())); ++#else + MD5Update(&res_all.res_fs.md5c, (unsigned char *)lc->str, lc->str_len); ++#endif + } + incexe = &res_incexe; + if (incexe->plugin_list.size() == 0) { +diff --git a/bacula/src/dird/job.c b/bacula/src/dird/job.c +index b5b39c7d5..7d69f0157 100644 +--- a/bacula/src/dird/job.c ++++ b/bacula/src/dird/job.c +@@ -25,6 +25,10 @@ + #include "bacula.h" + #include "dird.h" + ++#if HAVE_OPENSSL ++# include ++#endif ++ + /* Forward referenced subroutines */ + static void *job_thread(void *arg); + static void job_monitor_watchdog(watchdog_t *self); +@@ -1308,10 +1312,27 @@ bool get_or_create_fileset_record(JCR *jcr) + memset(&fsr, 0, sizeof(FILESET_DBR)); + bstrncpy(fsr.FileSet, jcr->fileset->hdr.name, sizeof(fsr.FileSet)); + if (jcr->fileset->have_MD5) { ++#if HAVE_OPENSSL ++ EVP_MD_CTX *mdctx = EVP_MD_CTX_new(); ++ if (!mdctx) ++ Emsg1(M_ERROR_TERM, 0, "MD5 computation failed: %s\n", ++ ERR_reason_error_string(ERR_peek_last_error())); ++#else + struct MD5Context md5c; ++#endif + unsigned char digest[MD5HashSize]; ++#if HAVE_OPENSSL ++ if (!EVP_MD_CTX_copy_ex(mdctx, jcr->fileset->md5c) ++ || !EVP_DigestFinal_ex(mdctx, digest, NULL) ++ ) { ++ Emsg1(M_ERROR_TERM, 0, "MD5 computation failed: %s\n", ++ ERR_reason_error_string(ERR_peek_last_error())); ++ } ++ EVP_MD_CTX_free(mdctx); ++#else + memcpy(&md5c, &jcr->fileset->md5c, sizeof(md5c)); + MD5Final(digest, &md5c); ++#endif + /* + * Keep the flag (last arg) set to false otherwise old FileSets will + * get new MD5 sums and the user will get Full backups on everything +diff --git a/bacula/src/lib/hmac.c b/bacula/src/lib/hmac.c +index a8d5e3dc0..dc3b78383 100644 +--- a/bacula/src/lib/hmac.c ++++ b/bacula/src/lib/hmac.c +@@ -26,6 +26,10 @@ + */ + #include "bacula.h" + ++#if HAVE_OPENSSL ++# include ++#endif ++ + #define PAD_LEN 64 /* PAD length */ + #define SIG_LEN MD5HashSize /* MD5 digest length */ + +@@ -36,6 +40,19 @@ hmac_md5( + uint8_t* key, /* pointer to authentication key */ + int key_len, /* length of authentication key */ + uint8_t *hmac) /* returned hmac-md5 */ ++#if HAVE_OPENSSL ++{ ++ if (!HMAC( ++ EVP_md5(), ++ key, key_len, ++ text, text_len, ++ hmac, NULL ++ )) { ++ Emsg0(M_ERROR_TERM, 0, "HMAC computation failed\n"); ++ } ++ ++} ++#else + { + MD5Context md5c; + uint8_t k_ipad[PAD_LEN]; /* inner padding - key XORd with ipad */ +@@ -90,6 +107,7 @@ hmac_md5( + MD5Update(&md5c, hmac, SIG_LEN); /* hash inner hash */ + MD5Final(hmac, &md5c); /* store results */ + } ++#endif + /* + Test Vectors (Trailing '\0' of a character string not included in test): + +diff --git a/bacula/src/lib/parse_conf.c b/bacula/src/lib/parse_conf.c +index cb3573fbd..3f3f93fdc 100644 +--- a/bacula/src/lib/parse_conf.c ++++ b/bacula/src/lib/parse_conf.c +@@ -59,6 +59,10 @@ + #define MAX_PATH 1024 + #endif + ++#if HAVE_OPENSSL ++# include ++#endif ++ + /* + * Define the Union of all the common resource structure definitions. + */ +@@ -538,7 +542,11 @@ void store_dir(LEX *lc, RES_ITEM *item, int index, int pass) + void store_password(LEX *lc, RES_ITEM *item, int index, int pass) + { + unsigned int i, j; ++#if HAVE_OPENSSL ++ EVP_MD_CTX *mdctx = NULL; ++#else + struct MD5Context md5c; ++#endif + unsigned char digest[CRYPTO_DIGEST_MD5_SIZE]; + char sig[100]; + +@@ -548,9 +556,21 @@ void store_password(LEX *lc, RES_ITEM *item, int index, int pass) + } else { + lex_get_token(lc, T_STRING); + if (pass == 1) { ++#if HAVE_OPENSSL ++ mdctx = EVP_MD_CTX_new(); ++ if (!mdctx ++ || !EVP_DigestInit_ex(mdctx, EVP_md5(), NULL) ++ || !EVP_DigestUpdate(mdctx, (const void *) lc->str, (size_t) lc->str_len) ++ || !EVP_DigestFinal_ex(mdctx, digest, NULL) ++ ) { ++ Emsg1(M_ERROR_TERM, 0, "MD5 computation failed: %s\n", ++ ERR_reason_error_string(ERR_peek_last_error())); ++ } ++#else + MD5Init(&md5c); + MD5Update(&md5c, (unsigned char *) (lc->str), lc->str_len); + MD5Final(digest, &md5c); ++#endif + for (i = j = 0; i < sizeof(digest); i++) { + sprintf(&sig[j], "%02x", digest[i]); + j += 2; +diff --git a/bacula/src/lib/util.c b/bacula/src/lib/util.c +index 2c425aa4c..e82b907d8 100644 +--- a/bacula/src/lib/util.c ++++ b/bacula/src/lib/util.c +@@ -707,6 +707,35 @@ int do_shell_expansion(char *name, int name_len) + from SpeakFreely by John Walker */ + + void make_session_key(char *key, char *seed, int mode) ++#if HAVE_OPENSSL ++{ ++ int j, k; ++ unsigned char buf[16]; ++ ++ (void) seed; ++ ++ if (!RAND_bytes(buf, sizeof(buf))) ++ Emsg1(M_ERROR_TERM, 0, "Random bytes generation failed: %s\n", ++ ERR_reason_error_string(ERR_peek_last_error())); ++ ++ if (mode) { ++ for (j = k = 0; j < 16; j++) { ++ unsigned char rb = buf[j]; ++ ++#define Rad16(x) ((x) + 'A') ++ key[k++] = Rad16((rb >> 4) & 0xF); ++ key[k++] = Rad16(rb & 0xF); ++#undef Rad16 ++ if (j & 1) { ++ key[k++] = '-'; ++ } ++ } ++ key[--k] = 0; ++ } else { ++ memcpy(key, buf, sizeof(buf)); ++ } ++} ++#else + { + int j, k; + struct MD5Context md5c; +@@ -790,6 +819,7 @@ void make_session_key(char *key, char *seed, int mode) + } + } + #undef nextrand ++#endif + + void encode_session_key(char *encode, char *session, char *key, int maxlen) + { diff --git a/SOURCES/bacula-dir.init b/SOURCES/bacula-dir.init new file mode 100644 index 0000000..b5fa74a --- /dev/null +++ b/SOURCES/bacula-dir.init @@ -0,0 +1,115 @@ +#!/bin/sh +# +# bacula-dir Takes care of starting and stopping the Bacula Director. +# +# chkconfig: - 80 20 +# description: The Bacula Director is the daemon responsible for all the logic \ +# regarding the backup infrastructure: database, file retention, \ +# tape indexing, scheduling. + +### BEGIN INIT INFO +# Required-Start: $local_fs $network +# Required-Stop: $local_fs $network +# Default-Start: 3 4 5 +# Default-Stop: 0 1 2 6 +# Short-Description: Bacula Director Daemon. +# Description: The Bacula Director is the daemon responsible for all the logic +# regarding the backup infrastructure: database, file retention, +# tape indexing, scheduling. +### END INIT INFO + +# Source function library. +. /etc/rc.d/init.d/functions + +exec="/usr/sbin/bacula-dir" +prog="bacula-dir" +CONFIG="/etc/bacula/bacula-dir.conf" +OPTS="-c $CONFIG" + +[ -e /etc/sysconfig/$prog ] && . /etc/sysconfig/$prog + +lockfile=/var/lock/subsys/$prog + +if [ "$DIR_USER" != '' ]; then + OPTS="$OPTS -u $DIR_USER" +fi + +if [ "$DIR_GROUP" != '' ]; then + OPTS="$OPTS -g $DIR_GROUP" +fi + +start() { + [ -x $exec ] || exit 5 + [ -f $config ] || exit 6 + echo -n $"Starting $prog: " + daemon $prog $OPTS + retval=$? + echo + [ $retval -eq 0 ] && touch $lockfile + return $retval +} + +stop() { + echo -n $"Stopping $prog: " + killproc $prog + retval=$? + echo + [ $retval -eq 0 ] && rm -f $lockfile + return $retval +} + +restart() { + stop + sleep 1 + start +} + +reload() { + restart +} + +force_reload() { + restart +} + +rh_status() { + # run checks to determine if the service is running or use generic status + status $prog +} + +rh_status_q() { + rh_status >/dev/null 2>&1 +} + + +case "$1" in + start) + rh_status_q && exit 0 + $1 + ;; + stop) + rh_status_q || exit 0 + $1 + ;; + restart) + $1 + ;; + reload) + rh_status_q || exit 7 + $1 + ;; + force-reload) + force_reload + ;; + status) + rh_status + ;; + condrestart|try-restart) + rh_status_q || exit 0 + restart + ;; + *) + echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload}" + exit 2 +esac +exit $? diff --git a/SOURCES/bacula-dir.service b/SOURCES/bacula-dir.service new file mode 100644 index 0000000..ab34487 --- /dev/null +++ b/SOURCES/bacula-dir.service @@ -0,0 +1,13 @@ +[Unit] +Description=Bacula-Director, the Backup-server +Documentation=man:bacula-dir(8) +After=network.target nss-lookup.target + +[Service] +Environment=CONFIG=/etc/bacula/bacula-dir.conf +EnvironmentFile=-/etc/sysconfig/bacula-dir +ExecStart=/usr/sbin/bacula-dir -f $OPTS -c $CONFIG -u $DIR_USER -g $DIR_GROUP +Restart=on-failure + +[Install] +WantedBy=multi-user.target diff --git a/SOURCES/bacula-dir.sysconfig b/SOURCES/bacula-dir.sysconfig new file mode 100644 index 0000000..4250591 --- /dev/null +++ b/SOURCES/bacula-dir.sysconfig @@ -0,0 +1,9 @@ +# User and group for bacula director +# If no user is set bacula will run as root + +DIR_USER=bacula +DIR_GROUP=bacula + +# Useful for debugging +# +# OPTS="-d 200" diff --git a/SOURCES/bacula-fd.init b/SOURCES/bacula-fd.init new file mode 100644 index 0000000..0c1b503 --- /dev/null +++ b/SOURCES/bacula-fd.init @@ -0,0 +1,113 @@ +#!/bin/sh +# +# bacula-fd Takes care of starting and stopping the Bacula File Daemon. +# +# chkconfig: - 80 20 +# description: The Bacula File Daemon is the daemon responsible for backing up \ +# data on the system. + +### BEGIN INIT INFO +# Required-Start: $local_fs $network +# Required-Stop: $local_fs $network +# Default-Start: 3 4 5 +# Default-Stop: 0 1 2 6 +# Short-Description: Bacula File Daemon. +# Description: The Bacula File Daemon is the daemon responsible for backing up +# data on the system. +### END INIT INFO + +# Source function library. +. /etc/rc.d/init.d/functions + +exec="/usr/sbin/bacula-fd" +prog="bacula-fd" +CONFIG="/etc/bacula/bacula-fd.conf" +OPTS="-c $CONFIG" + +[ -e /etc/sysconfig/$prog ] && . /etc/sysconfig/$prog + +lockfile=/var/lock/subsys/$prog + +if [ "$FD_USER" != '' ]; then + OPTS="$OPTS -u $FD_USER" +fi + +if [ "$FD_GROUP" != '' ]; then + OPTS="$OPTS -g $FD_GROUP" +fi + +start() { + [ -x $exec ] || exit 5 + [ -f $config ] || exit 6 + echo -n $"Starting $prog: " + daemon $prog $OPTS + retval=$? + echo + [ $retval -eq 0 ] && touch $lockfile + return $retval +} + +stop() { + echo -n $"Stopping $prog: " + killproc $prog + retval=$? + echo + [ $retval -eq 0 ] && rm -f $lockfile + return $retval +} + +restart() { + stop + sleep 1 + start +} + +reload() { + restart +} + +force_reload() { + restart +} + +rh_status() { + # run checks to determine if the service is running or use generic status + status $prog +} + +rh_status_q() { + rh_status >/dev/null 2>&1 +} + + +case "$1" in + start) + rh_status_q && exit 0 + $1 + ;; + stop) + rh_status_q || exit 0 + $1 + ;; + restart) + $1 + ;; + reload) + rh_status_q || exit 7 + $1 + ;; + force-reload) + force_reload + ;; + status) + rh_status + ;; + condrestart|try-restart) + rh_status_q || exit 0 + restart + ;; + *) + echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload}" + exit 2 +esac +exit $? diff --git a/SOURCES/bacula-fd.service b/SOURCES/bacula-fd.service new file mode 100644 index 0000000..043f06d --- /dev/null +++ b/SOURCES/bacula-fd.service @@ -0,0 +1,14 @@ +[Unit] +Description=Bacula-FileDaemon, a Backup-client +Documentation=man:bacula-fd(8) +After=network.target nss-lookup.target + +[Service] +Environment=CONFIG=/etc/bacula/bacula-fd.conf +EnvironmentFile=-/etc/sysconfig/bacula-fd +ExecStart=/usr/sbin/bacula-fd -f $OPTS -c $CONFIG -u $FD_USER -g $FD_GROUP +IOSchedulingClass=idle +Restart=on-failure + +[Install] +WantedBy=multi-user.target diff --git a/SOURCES/bacula-fd.sysconfig b/SOURCES/bacula-fd.sysconfig new file mode 100644 index 0000000..09cae26 --- /dev/null +++ b/SOURCES/bacula-fd.sysconfig @@ -0,0 +1,21 @@ +# User and group for bacula client +# If no user is set bacula will run as root + +FD_USER=root +FD_GROUP=root + +# Useful for debugging +# +# OPTS="-d 200" + + +# Set the following options if you want to run bacula-fd with ReadAll +# capabilities after UID/GID switch. +# +# This allows the File Daemon to keep root read but drop write permission. +# This, however, has the side effect of disabling backups of extended +# attributes because this requires super user privileges. +# +# OPTS="-k" +# FD_USER="bacula" +# FD_GROUP="bacula" diff --git a/SOURCES/bacula-sd.init b/SOURCES/bacula-sd.init new file mode 100644 index 0000000..409bc32 --- /dev/null +++ b/SOURCES/bacula-sd.init @@ -0,0 +1,115 @@ +#!/bin/sh +# +# bacula-sd Takes care of starting and stopping the Bacula Storage Daemon. +# +# chkconfig: - 80 20 +# description: The Bacula Storage Daemon is the daemon responsible for saving \ +# backed up data on the various File Daemon to the appropriate \ +# storage devices. + +### BEGIN INIT INFO +# Required-Start: $local_fs $network +# Required-Stop: $local_fs $network +# Default-Start: 3 4 5 +# Default-Stop: 0 1 2 6 +# Short-Description: Bacula Storage Daemon. +# Description: The Bacula Storage Daemon is the daemon responsible for saving +# backed up data on the various File Daemon to the appropriate +# storage devices. +### END INIT INFO + +# Source function library. +. /etc/init.d/functions + +exec="/usr/sbin/bacula-sd" +prog="bacula-sd" +CONFIG="/etc/bacula/bacula-sd.conf" +OPTS="-c $CONFIG" + +[ -e /etc/sysconfig/$prog ] && . /etc/sysconfig/$prog + +lockfile=/var/lock/subsys/$prog + +if [ "$SD_USER" != '' ]; then + OPTS="$OPTS -u $SD_USER" +fi + +if [ "$SD_GROUP" != '' ]; then + OPTS="$OPTS -g $SD_GROUP" +fi + +start() { + [ -x $exec ] || exit 5 + [ -f $config ] || exit 6 + echo -n $"Starting $prog: " + daemon $prog $OPTS + retval=$? + echo + [ $retval -eq 0 ] && touch $lockfile + return $retval +} + +stop() { + echo -n $"Stopping $prog: " + killproc $prog + retval=$? + echo + [ $retval -eq 0 ] && rm -f $lockfile + return $retval +} + +restart() { + stop + sleep 2 + start +} + +reload() { + restart +} + +force_reload() { + restart +} + +rh_status() { + # run checks to determine if the service is running or use generic status + status $prog +} + +rh_status_q() { + rh_status >/dev/null 2>&1 +} + + +case "$1" in + start) + rh_status_q && exit 0 + $1 + ;; + stop) + rh_status_q || exit 0 + $1 + ;; + restart) + $1 + ;; + reload) + rh_status_q || exit 7 + $1 + ;; + force-reload) + force_reload + ;; + status) + rh_status + ;; + condrestart|try-restart) + rh_status_q || exit 0 + restart + ;; + *) + echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload}" + exit 2 +esac +exit $? diff --git a/SOURCES/bacula-sd.service b/SOURCES/bacula-sd.service new file mode 100644 index 0000000..1f4ca64 --- /dev/null +++ b/SOURCES/bacula-sd.service @@ -0,0 +1,13 @@ +[Unit] +Description=Bacula-StorageDaemon, the storage-server +Documentation=man:bacula-sd(8) +After=network.target nss-lookup.target + +[Service] +Environment=CONFIG=/etc/bacula/bacula-sd.conf +EnvironmentFile=-/etc/sysconfig/bacula-sd +ExecStart=/usr/sbin/bacula-sd -f $OPTS -c $CONFIG -u $SD_USER -g $SD_GROUP +Restart=on-failure + +[Install] +WantedBy=multi-user.target diff --git a/SOURCES/bacula-sd.sysconfig b/SOURCES/bacula-sd.sysconfig new file mode 100644 index 0000000..d3c5c48 --- /dev/null +++ b/SOURCES/bacula-sd.sysconfig @@ -0,0 +1,9 @@ +# Users for bacula storage +# If no user is set bacula will run as root + +SD_USER=bacula +SD_GROUP=tape + +# Useful for debugging +# +# OPTS="-d 200" diff --git a/SOURCES/bacula-tray-monitor.png b/SOURCES/bacula-tray-monitor.png new file mode 100644 index 0000000000000000000000000000000000000000..7f4e37ed345942a2a4c04dac006309fdad63f3ca GIT binary patch literal 407 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfvmUKs7M+SzC{oH>NSwWJ?9znhg z3{`3j3=J&|48MRv4KElNN(~qoUL`OvSj}Ky5HFasE6@fgAsXNl;tHgJ;J|?c4Ilty z{s)5KWfzYEnT#bte!&b5&u*lFI7!~_E^LWuJ8FR(_7YEDSN4b8e4KJR`Q1KZK%pW} z7sn8d^T`Pk8VVgOEDbeoswxT`A_7ig0W4aAM+6+$4msF1oe+~q7I!dW)>@F0vxY@+ z0TUk&kDCCK(t<+*QU`d{5}4L3TzDp-se-Y@*dQk`sIV}wNnl4zms&y(508VL3sakd zzVRYfBd-~P!rlz=k!qP<4(pc!ZC5REjVMV;EJ?LWE=mPb3`Pcq=DLQ4x`rkp1{PMv s2395}+6IPJ1_obWE!~QuAvZrIGp!Q0hL-KJoIni>p00i_>zopr02aM$= 27 || 0%{?rhel} >= 8 +BuildRequires: perl-interpreter +%else +BuildRequires: perl +%endif + +%if 0%{?fedora} || 0%{?rhel} >= 7 +BuildRequires: systemd +%endif + +%description +Bacula is a set of programs that allow you to manage the backup, recovery, and +verification of computer data across a network of different computers. It is +based on a client/server architecture and is efficient and relatively easy to +use, while offering many advanced storage management features that make it easy +to find and recover lost or damaged files. + +%package libs +Summary: Bacula libraries +Obsoletes: bacula-sysconfdir <= 2.4 + +%description libs +Bacula is a set of programs that allow you to manage the backup, +recovery, and verification of computer data across a network of +different computers. It is based on a client/server architecture. + +This package contains basic Bacula libraries, which are used by all +Bacula programs. + +%package libs-sql +Summary: Bacula SQL libraries +Obsoletes: bacula-libs-mysql <= 5.0.3 +Obsoletes: bacula-libs-sqlite <= 5.0.3 +Obsoletes: bacula-libs-postgresql <= 5.0.3 +Provides: bacula-libs-mysql = %{version}-%{release} +Provides: bacula-libs-sqlite = %{version}-%{release} +Provides: bacula-libs-postgresql = %{version}-%{release} + +%description libs-sql +Bacula is a set of programs that allow you to manage the backup, recovery, and +verification of computer data across a network of different computers. It is +based on a client/server architecture. + +This package contains the SQL Bacula libraries, which are used by Director and +Storage daemons. You have to select your preferred catalog library through the +alternatives system. + +%package common +Summary: Common Bacula files +Obsoletes: bacula-sysconfdir <= 2.4 +Provides: group(%username) = %uid +Provides: user(%username) = %uid +Requires: bacula-libs%{?_isa} = %{version}-%{release} +Requires(pre): shadow-utils +Requires(postun): shadow-utils + +%description common +Bacula is a set of programs that allow you to manage the backup, recovery, and +verification of computer data across a network of different computers. It is +based on a client/server architecture. + +This package contains files common to all Bacula daemons. + +%package director +Summary: Bacula Director files +Requires: bacula-common%{?_isa} = %{version}-%{release} +Requires: bacula-libs%{?_isa} = %{version}-%{release} +Requires: bacula-libs-sql%{?_isa} = %{version}-%{release} +# Director backends merged into core. +Provides: bacula-director-common = %{version}-%{release} +Obsoletes: bacula-director-common < 5.2.3-5 +Provides: bacula-director-mysql = %{version}-%{release} +Obsoletes: bacula-director-mysql < 5.2.3-5 +Provides: bacula-director-sqlite = %{version}-%{release} +Obsoletes: bacula-director-sqlite < 5.2.3-5 +Provides: bacula-director-postgresql = %{version}-%{release} +Obsoletes: bacula-director-postgresql < 5.2.3-5 + +%if 0%{?fedora} || 0%{?rhel} >= 7 +Requires(post): systemd +Requires(preun): systemd +Requires(postun): systemd +%endif + +%if 0%{?rhel} == 6 +Requires(post): /sbin/chkconfig +Requires(preun): /sbin/chkconfig +Requires(preun): /sbin/service +Requires(postun): /sbin/service +%endif + +%description director +Bacula is a set of programs that allow you to manage the backup, recovery, and +verification of computer data across a network of different computers. It is +based on a client/server architecture. + +This package contains the director files. + +%package logwatch +Summary: Bacula Director logwatch scripts +BuildArch: noarch +Requires: bacula-director = %{version}-%{release} +Requires: logwatch + +%description logwatch +Bacula is a set of programs that allow you to manage the backup, recovery, and +verification of computer data across a network of different computers. It is +based on a client/server architecture. + +This package contains logwatch scripts for Bacula Director. + +%package storage +Summary: Bacula storage daemon files +Requires: bacula-common%{?_isa} = %{version}-%{release} +Requires: bacula-libs%{?_isa} = %{version}-%{release} +Requires: bacula-libs-sql%{?_isa} = %{version}-%{release} +Requires: mt-st +Requires: mtx +# Storage backends merged into core. +Provides: bacula-storage-common = %{version}-%{release} +Obsoletes: bacula-storage-common < 5.2.2-2 +Provides: bacula-storage-mysql = %{version}-%{release} +Obsoletes: bacula-storage-mysql < 5.2.0 +Provides: bacula-storage-sqlite = %{version}-%{release} +Obsoletes: bacula-storage-sqlite < 5.2.0 +Provides: bacula-storage-postgresql = %{version}-%{release} +Obsoletes: bacula-storage-postgresql < 5.2.0 + +%if 0%{?fedora} || 0%{?rhel} >= 7 +Requires(post): systemd +Requires(preun): systemd +Requires(postun): systemd +%endif + +%if 0%{?rhel} == 6 +Requires(post): /sbin/chkconfig +Requires(preun): /sbin/chkconfig +Requires(preun): /sbin/service +Requires(postun): /sbin/service +%endif + +%description storage +Bacula is a set of programs that allow you to manage the backup, recovery, and +verification of computer data across a network of different computers. It is +based on a client/server architecture. + +This package contains the storage daemon, the daemon responsible for writing +the data received from the clients onto tape drives or other mass storage +devices. + +%package client +Summary: Bacula backup client +Requires: bacula-common%{?_isa} = %{version}-%{release} +Requires: bacula-libs%{?_isa} = %{version}-%{release} + +%if 0%{?fedora} || 0%{?rhel} >= 7 +Requires(post): systemd +Requires(preun): systemd +Requires(postun): systemd +%endif + +%if 0%{?rhel} == 6 +Requires(post): /sbin/chkconfig +Requires(preun): /sbin/chkconfig +Requires(preun): /sbin/service +Requires(postun): /sbin/service +%endif + +%description client +Bacula is a set of programs that allow you to manage the backup, recovery, and +verification of computer data across a network of different computers. It is +based on a client/server architecture. + +This package contains the bacula client, the daemon running on the system to be +backed up. + +%package console +Summary: Bacula management console +Obsoletes: bacula-console-gnome <= 2.4 +Obsoletes: bacula-console-wxwidgets <= 5.0.3 +Requires: bacula-libs%{?_isa} = %{version}-%{release} + +%description console +Bacula is a set of programs that allow you to manage the backup, recovery, and +verification of computer data across a network of different computers. It is +based on a client/server architecture. + +This package contains the command-line management console for the bacula backup +system. + +%package console-bat +Summary: Bacula bat console +Requires: bacula-libs%{?_isa} = %{version}-%{release} +Requires: dejavu-lgc-sans-fonts + +%description console-bat +Bacula is a set of programs that allow you to manage the backup, recovery, and +verification of computer data across a network of different computers. It is +based on a client/server architecture. + +This package contains the bat version of the bacula management console. + +%package traymonitor +Summary: Bacula system tray monitor +Requires: bacula-libs%{?_isa} = %{version}-%{release} +Requires: dejavu-lgc-sans-fonts + +%description traymonitor +Bacula is a set of programs that allow you to manage the backup, recovery, and +verification of computer data across a network of different computers. It is +based on a client/server architecture. + +This package contains the Gnome and KDE compatible tray monitor to monitor your +bacula server. + +%package devel +Summary: Bacula development files +Requires: bacula-libs%{?_isa} = %{version}-%{release} +Requires: bacula-libs-sql%{?_isa} = %{version}-%{release} + +%description devel +Bacula is a set of programs that allow you to manage the backup, recovery, and +verification of computer data across a network of different computers. It is +based on a client/server architecture. + +This development package contains static libraries and header files. + +%prep +%setup -q +%patch1 -p1 +%patch2 -p1 +%patch3 -p1 +%patch4 -p1 +%patch5 -p1 +%patch6 -p1 +%patch7 -p1 +%patch8 -p1 +%patch9 -p1 +%patch10 -p1 +%patch11 -p1 +%patch12 -p2 + +cp %{SOURCE2} %{SOURCE3} %{SOURCE4} %{SOURCE5} . + +# Remove execution permissions from files we're packaging as docs later on +find updatedb -type f | xargs chmod -x + +%build +export CFLAGS="$RPM_OPT_FLAGS -I%{_includedir}/ncurses" +export CPPFLAGS="$RPM_OPT_FLAGS -I%{_includedir}/ncurses" +export PATH="$PATH:%{_qt5_bindir}" +%configure \ + --disable-conio \ + --disable-rpath \ + --docdir=%{_datadir}/bacula \ + --enable-bat \ + --enable-batch-insert \ + --enable-build-dird \ + --enable-build-stored \ + --enable-includes \ + --enable-largefile \ + --enable-readline \ + --enable-smartalloc \ + --sysconfdir=%{_sysconfdir}/bacula \ + --with-basename=bacula \ + --with-bsrdir=%{_localstatedir}/spool/bacula \ + --with-dir-password=@@DIR_PASSWORD@@ \ + --with-fd-password=@@FD_PASSWORD@@ \ + --with-hostname=localhost \ + --with-logdir=%{_localstatedir}/log/bacula \ + --with-mon-dir-password=@@MON_DIR_PASSWORD@@ \ + --with-mon-fd-password=@@MON_FD_PASSWORD@@ \ + --with-mon-sd-password=@@MON_SD_PASSWORD@@ \ + --with-mysql \ + --with-openssl \ + --with-pid-dir=%{_localstatedir}/run \ + --with-plugindir=%{_libdir}/bacula \ + --with-postgresql \ + --with-scriptdir=%{_libexecdir}/bacula \ + --with-sd-password=@@SD_PASSWORD@@ \ + --with-smtp-host=localhost \ + --with-sqlite3 \ + --with-subsys-dir=%{_localstatedir}/lock/subsys \ + --with-working-dir=%{_localstatedir}/spool/bacula \ + --with-x + +# Remove RPATH +sed -i 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|g' libtool +sed -i 's|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|g' libtool + +make %{?_smp_mflags} + +pushd src/qt-console/tray-monitor + %{?qmake_qt5}%{!?qmake_qt5:qmake-qt5} tray-monitor.pro + make %{?_smp_mflags} + cp -f .libs/bacula-tray-monitor . +popd + +%install +%make_install + +# Remove catalogue backend symlinks +rm -f %{buildroot}%{_libdir}/libbaccats.so +rm -f %{buildroot}%{_libdir}/libbaccats-%{version}.so + +# Bat +install -p -m 644 -D src/qt-console/images/bat_icon.png %{buildroot}%{_datadir}/pixmaps/bat_icon.png +install -p -m 644 -D scripts/bat.desktop %{buildroot}%{_datadir}/applications/bat.desktop + +# QT Tray monitor +install -p -m 755 -D src/qt-console/tray-monitor/bacula-tray-monitor %{buildroot}%{_sbindir}/bacula-tray-monitor +install -p -m 644 -D src/qt-console/tray-monitor/tray-monitor.conf %{buildroot}%{_sysconfdir}/bacula/tray-monitor.conf +install -p -m 644 -D manpages/bacula-tray-monitor.1 %{buildroot}%{_mandir}/man1/bacula-tray-monitor.1 +install -p -m 644 -D %{SOURCE19} %{buildroot}%{_datadir}/pixmaps/bacula-tray-monitor.png +install -p -m 644 -D scripts/bacula-tray-monitor.desktop %{buildroot}%{_datadir}/applications/bacula-tray-monitor.desktop + +# Logrotate +mkdir -p %{buildroot}%{_localstatedir}/log/bacula +install -p -m 644 -D %{SOURCE6} %{buildroot}%{_sysconfdir}/logrotate.d/bacula + +# Logwatch +install -p -m 755 -D scripts/logwatch/bacula %{buildroot}%{_sysconfdir}/logwatch/scripts/services/bacula +install -p -m 755 -D scripts/logwatch/applybaculadate %{buildroot}%{_sysconfdir}/logwatch/scripts/shared/applybaculadate +install -p -m 644 -D scripts/logwatch/logfile.bacula.conf %{buildroot}%{_sysconfdir}/logwatch/conf/logfiles/bacula.conf +install -p -m 644 -D scripts/logwatch/services.bacula.conf %{buildroot}%{_sysconfdir}/logwatch/conf/services/bacula.conf + +%if 0%{?fedora} || 0%{?rhel} >= 7 +# Systemd unit files +mkdir -p %{buildroot}%{_unitdir} +install -p -m 644 -D %{SOURCE10} %{buildroot}%{_unitdir}/bacula-fd.service +install -p -m 644 -D %{SOURCE11} %{buildroot}%{_unitdir}/bacula-dir.service +install -p -m 644 -D %{SOURCE12} %{buildroot}%{_unitdir}/bacula-sd.service +%else +# Initscripts +install -p -m 755 -D %{SOURCE7} %{buildroot}%{_initrddir}/bacula-fd +install -p -m 755 -D %{SOURCE8} %{buildroot}%{_initrddir}/bacula-dir +install -p -m 755 -D %{SOURCE9} %{buildroot}%{_initrddir}/bacula-sd +%endif + +# Sysconfig +install -p -m 644 -D %{SOURCE15} %{buildroot}%{_sysconfdir}/sysconfig/bacula-fd +install -p -m 644 -D %{SOURCE16} %{buildroot}%{_sysconfdir}/sysconfig/bacula-dir +install -p -m 644 -D %{SOURCE17} %{buildroot}%{_sysconfdir}/sysconfig/bacula-sd + +# Spool directory +mkdir -p %{buildroot}%{_localstatedir}/spool/bacula + +# Remove stuff we do not need +rm -f %{buildroot}%{_libexecdir}/bacula/{bacula,bacula-ctl-*,startmysql,stopmysql,bconsole,make_catalog_backup} +rm -f %{buildroot}%{_sbindir}/bacula +rm -f %{buildroot}%{_mandir}/man8/bacula.8.gz +rm -f %{buildroot}%{_libdir}/*.la +rm -f %{buildroot}%{_datadir}/bacula/{ChangeLog,INSTALL,LICENSE*,README,ReleaseNotes,VERIFYING,technotes} + +# Fix up some perms so rpmlint does not complain too much +chmod 755 %{buildroot}%{_sbindir}/* +chmod 755 %{buildroot}%{_libdir}/bacula/* +chmod 755 %{buildroot}%{_libexecdir}/bacula/* +chmod 644 %{buildroot}%{_libexecdir}/bacula/btraceback.* + +%ldconfig_scriptlets libs + +%post libs-sql +/usr/sbin/alternatives --install %{_libdir}/libbaccats.so libbaccats.so %{_libdir}/libbaccats-mysql.so 50 +/usr/sbin/alternatives --install %{_libdir}/libbaccats.so libbaccats.so %{_libdir}/libbaccats-sqlite3.so 40 +/usr/sbin/alternatives --install %{_libdir}/libbaccats.so libbaccats.so %{_libdir}/libbaccats-postgresql.so 60 + +# Fix for automatic selection of backends during upgrades +if readlink /etc/alternatives/libbaccats.so | grep --silent mysql || \ + readlink /etc/alternatives/bacula-dir | grep --silent mysql || \ + readlink /etc/alternatives/bacula-sd | grep --silent mysql; then + /usr/sbin/alternatives --set libbaccats.so %{_libdir}/libbaccats-mysql.so +elif readlink /etc/alternatives/libbaccats.so | grep --silent sqlite || \ + readlink /etc/alternatives/bacula-dir | grep --silent sqlite || \ + readlink /etc/alternatives/bacula-sd | grep --silent sqlite; then + /usr/sbin/alternatives --set libbaccats.so %{_libdir}/libbaccats-sqlite3.so +else + /usr/sbin/alternatives --set libbaccats.so %{_libdir}/libbaccats-postgresql.so +fi +/sbin/ldconfig + +%preun libs-sql +if [ "$1" = 0 ]; then + /usr/sbin/alternatives --remove libbaccats.so %{_libdir}/libbaccats-mysql.so + /usr/sbin/alternatives --remove libbaccats.so %{_libdir}/libbaccats-sqlite3.so + /usr/sbin/alternatives --remove libbaccats.so %{_libdir}/libbaccats-postgresql.so +fi + +%postun libs-sql +/sbin/ldconfig +exit 0 + +%pre common +getent group %username >/dev/null || groupadd -g %uid -r %username &>/dev/null || : +getent passwd %username >/dev/null || useradd -u %uid -r -s /sbin/nologin \ + -d /var/spool/bacula -M -c 'Bacula Backup System' -g %username %username &>/dev/null || : +exit 0 + +%if 0%{?fedora} || 0%{?rhel} >= 7 + +%post client +%systemd_post %{name}-fd.service + +%preun client +%systemd_preun %{name}-fd.service + +%postun client +%systemd_postun_with_restart %{name}-fd.service + +%post director +%systemd_post %{name}-dir.service + +%preun director +%systemd_preun %{name}-dir.service + +%postun director +%systemd_postun_with_restart %{name}-dir.service + +%post storage +%systemd_post %{name}-sd.service + +%preun storage +%systemd_preun %{name}-sd.service + +%postun storage +%systemd_postun_with_restart %{name}-sd.service + +%endif + +%if 0%{?rhel} == 6 + +%post client +/sbin/chkconfig --add bacula-fd + +%preun client +if [ "$1" = 0 ]; then + /sbin/service bacula-fd stop >/dev/null 2>&1 || : + /sbin/chkconfig --del bacula-fd +fi + +%postun client +if [ "$1" -ge "1" ]; then + /sbin/service bacula-fd condrestart >/dev/null 2>&1 || : +fi + +%post director +/sbin/chkconfig --add bacula-dir + +%preun director +if [ "$1" = 0 ]; then + /sbin/service bacula-dir stop >/dev/null 2>&1 || : + /sbin/chkconfig --del bacula-dir +fi + +%postun director +if [ "$1" -ge "1" ]; then + /sbin/service bacula-dir condrestart >/dev/null 2>&1 || : +fi + +%post storage +/sbin/chkconfig --add bacula-sd + +%preun storage +if [ "$1" = 0 ]; then + /sbin/service bacula-sd stop >/dev/null 2>&1 || : + /sbin/chkconfig --del bacula-sd +fi + +%postun storage +if [ "$1" -ge "1" ]; then + /sbin/service bacula-sd condrestart >/dev/null 2>&1 || : +fi + +%endif + +%files libs +%license LICENSE +%doc AUTHORS ChangeLog SUPPORT ReleaseNotes LICENSE-FAQ LICENSE-FOSS +%{_libdir}/libbac-%{version}.so +%{_libdir}/libbaccfg-%{version}.so +%{_libdir}/libbacfind-%{version}.so +%{_libdir}/libbacsd-%{version}.so +%exclude %{_libdir}/libbaccats-%{version}.so + +%files libs-sql +%{_libdir}/libbaccats-mysql-%{version}.so +%{_libdir}/libbaccats-mysql.so +%{_libdir}/libbaccats-postgresql-%{version}.so +%{_libdir}/libbaccats-postgresql.so +%{_libdir}/libbaccats-sqlite3-%{version}.so +%{_libdir}/libbaccats-sqlite3.so +%{_libdir}/libbacsql-%{version}.so + +%files common +%doc README.Redhat quickstart_* +%config(noreplace) %{_sysconfdir}/logrotate.d/bacula +%dir %{_localstatedir}/log/bacula %attr(770, bacula, root) +%dir %{_localstatedir}/spool/bacula %attr(770, bacula, root) +%dir %{_libexecdir}/%{name} +%dir %{_sysconfdir}/%{name} %attr(755,root,root) +%{_libexecdir}/%{name}/btraceback.dbx +%{_libexecdir}/%{name}/btraceback.gdb +%{_libexecdir}/%{name}/bacula_config +%{_libexecdir}/%{name}/btraceback.mdb +%{_mandir}/man8/btraceback.8* +%{_sbindir}/btraceback + +%files director +%doc updatedb examples/sample-query.sql +%config(noreplace) %{_sysconfdir}/bacula/bacula-dir.conf %attr(640,root,bacula) +%config(noreplace) %{_sysconfdir}/bacula/query.sql %attr(640,root,bacula) +%config(noreplace) %{_sysconfdir}/sysconfig/bacula-dir +%{_libexecdir}/%{name}/baculabackupreport +%{_libexecdir}/%{name}/create_bacula_database +%{_libexecdir}/%{name}/delete_catalog_backup +%{_libexecdir}/%{name}/drop_bacula_database +%{_libexecdir}/%{name}/drop_bacula_tables +%{_libexecdir}/%{name}/grant_bacula_privileges +%{_libexecdir}/%{name}/make_bacula_tables +%{_libexecdir}/%{name}/make_catalog_backup.pl +%{_libexecdir}/%{name}/update_bacula_tables +%{_libexecdir}/%{name}/create_mysql_database +%{_libexecdir}/%{name}/drop_mysql_database +%{_libexecdir}/%{name}/drop_mysql_tables +%{_libexecdir}/%{name}/grant_mysql_privileges +%{_libexecdir}/%{name}/make_mysql_tables +%{_libexecdir}/%{name}/update_mysql_tables +%{_libexecdir}/%{name}/create_sqlite3_database +%{_libexecdir}/%{name}/drop_sqlite3_database +%{_libexecdir}/%{name}/drop_sqlite3_tables +%{_libexecdir}/%{name}/grant_sqlite3_privileges +%{_libexecdir}/%{name}/make_sqlite3_tables +%{_libexecdir}/%{name}/update_sqlite3_tables +%{_libexecdir}/%{name}/create_postgresql_database +%{_libexecdir}/%{name}/drop_postgresql_database +%{_libexecdir}/%{name}/drop_postgresql_tables +%{_libexecdir}/%{name}/grant_postgresql_privileges +%{_libexecdir}/%{name}/make_postgresql_tables +%{_libexecdir}/%{name}/update_postgresql_tables +%{_mandir}/man1/bsmtp.1* +%{_mandir}/man8/bacula-dir.8* +%{_mandir}/man8/bregex.8* +%{_mandir}/man8/bwild.8* +%{_mandir}/man8/dbcheck.8* +%{_sbindir}/bacula-dir +%{_sbindir}/bdirjson +%{_sbindir}/bregex +%{_sbindir}/bsmtp +%{_sbindir}/bwild +%{_sbindir}/dbcheck +%if 0%{?fedora} || 0%{?rhel} >= 7 +%{_unitdir}/bacula-dir.service +%else +%{_initrddir}/bacula-dir +%endif + +%files logwatch +%config(noreplace) %{_sysconfdir}/logwatch/conf/logfiles/bacula.conf +%config(noreplace) %{_sysconfdir}/logwatch/conf/services/bacula.conf +%{_sysconfdir}/logwatch/scripts/services/bacula +%{_sysconfdir}/logwatch/scripts/shared/applybaculadate + +%files storage +%config(noreplace) %{_sysconfdir}/bacula/bacula-sd.conf %attr(640,root,root) +%config(noreplace) %{_sysconfdir}/sysconfig/bacula-sd +%{_libexecdir}/%{name}/disk-changer +%{_libexecdir}/%{name}/mtx-changer +%{_libexecdir}/%{name}/mtx-changer.conf +%{_libexecdir}/%{name}/tapealert +%{_mandir}/man8/bacula-sd.8* +%{_mandir}/man8/bcopy.8* +%{_mandir}/man8/bextract.8* +%{_mandir}/man8/bls.8* +%{_mandir}/man8/bscan.8* +%{_mandir}/man8/btape.8* +%{_sbindir}/bacula-sd +%{_sbindir}/bcopy +%{_sbindir}/bextract +%{_sbindir}/bls +%{_sbindir}/bscan +%{_sbindir}/bsdjson +%{_sbindir}/btape +%if 0%{?fedora} || 0%{?rhel} >= 7 +%{_unitdir}/bacula-sd.service +%else +%{_initrddir}/bacula-sd +%endif + +%files client +%config(noreplace) %{_sysconfdir}/bacula/bacula-fd.conf %attr(640,root,root) +%config(noreplace) %{_sysconfdir}/sysconfig/bacula-fd +%{_mandir}/man8/bacula-fd.8* +%{_libdir}/bacula/bpipe-fd.so +%{_sbindir}/bacula-fd +%{_sbindir}/bfdjson +%if 0%{?fedora} || 0%{?rhel} >= 7 +%{_unitdir}/bacula-fd.service +%else +%{_initrddir}/bacula-fd +%endif + +%files console +%config(noreplace) %{_sysconfdir}/bacula/bconsole.conf %attr(640,root,root) +%{_mandir}/man8/bconsole.8* +%{_sbindir}/bconsole +%{_sbindir}/bbconsjson + +%files console-bat +%config(noreplace) %{_sysconfdir}/bacula/bat.conf %attr(640,root,root) +%{_datadir}/applications/bat.desktop +%{_datadir}/bacula/*.html +%{_datadir}/bacula/*.png +%{_datadir}/pixmaps/bat_icon.png +%{_mandir}/man1/bat.1* +%{_sbindir}/bat + +%files traymonitor +%config(noreplace) %{_sysconfdir}/bacula/tray-monitor.conf %attr(640,root,root) +%{_datadir}/applications/bacula-tray-monitor.desktop +%{_datadir}/pixmaps/bacula-tray-monitor.png +%{_mandir}/man1/bacula-tray-monitor.1* +%{_sbindir}/bacula-tray-monitor + +%files devel +%{_includedir}/bacula +%{_libdir}/libbac.so +%{_libdir}/libbaccfg.so +%{_libdir}/libbacfind.so +%{_libdir}/libbacsd.so +%{_libdir}/libbacsql.so + +%changelog +* Fri Jun 28 2019 Václav Doležal - 9.0.6-6 +- Fix error in postun and rpm -V + +* Fri Jun 28 2019 Václav Doležal - 9.0.6-5 +- use OpenSSL library instead of internal implementations of MD5 and HMAC (#1613068) + +* Thu Aug 16 2018 Václav Doležal - 9.0.6-4 +- remove Nagios plugin (#1616438) + +* Tue May 22 2018 Josef Ridky - 9.0.6-3 +- add missing file to library sub-package (#1580598) + +* Thu Apr 26 2018 Josef Ridky - 9.0.6-2 +- Fix directory permissions (#1569584) + +* Wed Apr 18 2018 Josef Ridky - 9.0.6-1 +- Update to 9.0.6 -> Supports OpenSSL 1.1 and Qt5 (#1542223) + +* Mon Apr 09 2018 Josef Ridky - 9.0.4-3 +- Resolves: #1565003 - remove ImageMagic dependency + +* Wed Mar 07 2018 Josef Ridky - 9.0.4-2 +- Add support for openssl (#1512577) +- Change build requirement form mysql-devel to mariadb-connector-c-devel (#1545413) + +* Fri Sep 15 2017 Simone Caronni - 9.0.4-1 +- Update to 9.0.4. + +* Thu Aug 10 2017 Josef Ridky - 9.0.3-1 +- New upstream release 9.0.3 (#1480230) + +* Wed Aug 02 2017 Fedora Release Engineering - 9.0.2-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild + +* Wed Jul 26 2017 Fedora Release Engineering - 9.0.2-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Mon Jul 24 2017 Simone Caronni - 9.0.2-1 +- Update to 9.0.2. +- Update patches. + +* Thu Jul 20 2017 Simone Caronni - 9.0.1-2 +- Add patch to allow compilation on MariaDB 10.2. +- Make only Fedora 27 require perl-interpreter. +- Adjust categories in desktop files for RHEL 7. + +* Tue Jul 18 2017 Simone Caronni - 9.0.1-1 +- Update to 9.0.1. + +* Tue Jul 11 2017 Simone Caronni - 9.0.0-2 +- Fix ppc64le build. +- Fix tray-monitor build. Use source file for tray monitor desktop entry. + +* Mon Jul 10 2017 Simone Caronni - 9.0.0-1 +- Update to 9.0.0, update all patches. +- Add new utitilies. +- Use source files for desktop and icon of bat. +- Temporarily disable tray-monitor build due to missing files in the source. +- Add fixes for rpmlint. + +* Wed Apr 05 2017 Simone Caronni - 7.4.7-2 +- Remove all RHEL/CentOS 5 compatibility. + +* Thu Mar 16 2017 Jon Ciesla - 7.4.7-1 +- Update to 7.4.7. + +* Sun Mar 12 2017 Simone Caronni - 7.4.6-1 +- Update to 7.4.6. + +* Wed Mar 08 2017 Simone Caronni - 7.4.5-2 +- Update README.Redhat document. + +* Wed Feb 08 2017 Simone Caronni - 7.4.5-1 +- Update to 7.4.5. +- Update patches. + +* Fri Jan 13 2017 Jon Ciesla - 7.4.4-3 +- Move to compat-openssl10 to fix FTBFS, BZ 1412924. + +* Thu Jan 12 2017 Igor Gnatenko - 7.4.4-2 +- Rebuild for readline 7.x + +* Wed Sep 21 2016 Jon Ciesla - 7.4.4-1 +- Update to 7.4.4. + +* Mon Jul 25 2016 Simone Caronni - 7.4.3-3 +- Add upstream patch to fix el5 i386 builds. + +* Wed Jul 20 2016 Simone Caronni - 7.4.3-2 +- Remove GCC 6+ workaround bug, reset to default distribution optimizations. + +* Tue Jul 19 2016 Jon Ciesla - 7.4.3-1 +- Update to 7.4.3. + +* Thu Jul 07 2016 Jon Ciesla - 7.4.2-1 +- Update to 7.4.2. + +* Tue Jul 05 2016 Simone Caronni - 7.4.1-2 +- Temporary workaround for GCC bug: http://bugs.bacula.org/view.php?id=2231 + +* Thu Jun 02 2016 Simone Caronni - 7.4.1-1 +- Update to 7.4.1. + +* Mon Feb 22 2016 Simone Caronni - 7.4.0-4 +- Fix FTBFS on rawhide (#1307338). + +* Wed Feb 03 2016 Fedora Release Engineering - 7.4.0-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + +* Mon Feb 01 2016 Rex Dieter - 7.4.0-2 +- use %%qmake_qt4 macro to ensure proper build flags + +* Mon Jan 25 2016 Simone Caronni - 7.4.0-1 +- Update to 7.4.0. +- Rebase patches, remove git patch. + +* Sun Dec 13 2015 Simone Caronni - 7.2.0-3 +- Re-add autoconf patch erraneously removed. + +* Fri Dec 11 2015 Simone Caronni - 7.2.0-2 +- Add fixes from upstream 7.2 branch. + +* Tue Sep 29 2015 Simone Caronni - 7.2.0-1 +- Update to 7.2.0. +- Remove bpluginfo(8). + +* Wed Jul 15 2015 Marcin Haba - 7.0.5-9 +- Use an external icon for tray monitor. +- Add gcc and gcc-c++ to build requires. + +* Wed Jun 17 2015 Fedora Release Engineering - 7.0.5-8 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild + +* Fri May 15 2015 Simone Caronni - 7.0.5-7 +- Split logwatch files in its own package. Logwatch should be installed + explicitly by an administrator, and not by defaul. Also, the current logwatch + package for RHEL 7 has a bug and can not be customized: + https://bugzilla.redhat.com/show_bug.cgi?id=1221903 + Thanks to Dimitri Maziuk for reporting. + +* Tue May 12 2015 Simone Caronni - 7.0.5-6 +- Require dejavu-lgc-sans-fonts for graphical programs. Fixes startup of bat on + headless servers without a desktop installed. + +* Sat May 02 2015 Kalev Lember - 7.0.5-5 +- Rebuilt for GCC 5 C++11 ABI change + +* Mon Mar 02 2015 Simone Caronni - 7.0.5-4 +- Fix tray-monitor packaging (again). + +* Tue Feb 24 2015 Simone Caronni - 7.0.5-3 +- Add license macro. + +* Fri Aug 15 2014 Fedora Release Engineering - 7.0.5-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild + +* Thu Jul 31 2014 Simone Caronni - 7.0.5-1 +- Update to 7.0.5. + +* Thu Jul 24 2014 Simone Caronni - 7.0.4-3 +- Remove RPM filters, add back patch inadvertently removed during 7.0 upstream + release. + +* Sat Jun 07 2014 Fedora Release Engineering - 7.0.4-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + +* Wed Jun 04 2014 Simone Caronni - 7.0.4-1 +- Update to 7.0.4. + +* Fri May 16 2014 Simone Caronni - 7.0.3-3 +- Add versioned library to alternatives system. + +* Fri May 16 2014 Simone Caronni - 7.0.3-2 +- Filter out libbaccats from auto generated Provides/Obsoletes and add note on + the libbaccats-x.x.x.so shared object name mess. + +* Thu May 15 2014 Simone Caronni - 7.0.3-1 +- Update to 7.0.3. + +* Thu Apr 24 2014 Simone Caronni - 7.0.2-2 +- Bug fixes from upstream. + +* Thu Apr 03 2014 Simone Caronni - 7.0.2-1 +- Update to 7.0.2, drop upstreamed patches. + +* Tue Apr 01 2014 Simone Caronni - 7.0.1-2 +- Add patch for Nagios plugin. +- Add missing requirement for Nagios plugin folder. + +* Tue Apr 01 2014 Simone Caronni - 7.0.1-1 +- Update to 7.0.1; remove Python. +- Drop git patch. + +* Sun Mar 30 2014 Simone Caronni - 7.0.0-3 +- Update git patch. +- Sort file sections. + +* Sun Mar 30 2014 Simone Caronni - 7.0.0-2 +- Backport changes from git for QT Tray monitor, Nagios plugin and configure + script. +- Removed upstream patches. + +* Sun Mar 30 2014 Simone Caronni - 7.0.0-1 +- Update to 7.0.0. +- Momentarily disable Nagios plugin and QT tray monitor as they don't build + anymore. + +* Tue Aug 06 2013 Simone Caronni - 5.2.13-17 +- Fix dependencies for devel subpackage. +- Explicitly declare dependency also on libs-sql subpackage where required, so + we can save one extra cpu cycle during the upgrade (...). +- Bat subpackage used to rely on files in %%_docdir for operation, move them + elsewhere. Fixes also Fedora 20 unversioned %%_docdir feature. +- Make sure any package combination results in installed license files. + +* Tue Aug 06 2013 Simone Caronni - 5.2.13-16 +- Remove Fedora 17 conditionals, distribution EOL. +- Remove systemd-sysv dependency as per new packaging guidelines. + +* Sat Aug 03 2013 Fedora Release Engineering - 5.2.13-15 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild + +* Wed Jul 17 2013 Petr Pisar - 5.2.13-14 +- Perl 5.18 rebuild + +* Mon Jul 15 2013 Petr Hracek - 5.2.13-13 +- make dependency of bacula packages on bacula-libs RHEL-7 rpmdiff (#881146) + +* Thu Jun 27 2013 Petr Hracek - 5.2.13-12 +- Correct systemd unitfiles permissions + +* Tue May 28 2013 Petr Hracek - 5.2.13-11 +- Fix for nonfree code (#967417) + +* Thu May 16 2013 Simone Caronni - 5.2.13-10 +- Add aarch64 patch (#925072). +- Add bpluginfo commmand. + +* Tue Apr 16 2013 Simone Caronni - 5.2.13-9 +- Systemd service files cleanup, thanks Michal Schmidt (#952334) + +* Mon Apr 08 2013 Petr Hracek - 5.2.13-8 +- Correcting options and man pages (#948837) + +* Mon Apr 08 2013 Petr Hracek - 5.2.13-7 +- include /var/log/bacula/*.log in logwatch (#924797) + +* Mon Mar 04 2013 Simone Caronni - 5.2.13-6 +- Add mt-st requirement to storage package; update quick start docs. + +* Tue Feb 26 2013 Simone Caronni - 5.2.13-5 +- Improve documentation. + +* Mon Feb 25 2013 Simone Caronni - 5.2.13-4 +- Fix director reload command. +- Adjust to 5.2.13 permission changes. + +* Fri Feb 22 2013 Simone Caronni - 5.2.13-3 +- Renamed README to README.Redhat. + +* Thu Feb 21 2013 Simone Caronni - 5.2.13-2 +- Removed bacula-checkconf stuff. +- Separated postgresql, sqlite3 and mysql how to from README. + +* Wed Feb 20 2013 Simone Caronni - 5.2.13-1 +- Update to 5.2.13, drop upstreamed patch. +- Remove Fedora 16 (EOL) checks. + +* Sun Feb 10 2013 Rahul Sundaram - 5.2.12-9 +- remove vendor tag from desktop file. https://fedorahosted.org/fpc/ticket/247 + +* Fri Feb 08 2013 Petr Hracek - 5.2.12-8 +- Fix: (#881146) syntax error in update_postgresql_tables_10_to_11.in + +* Mon Feb 04 2013 Petr Hracek - 5.2.12-7 +- Fix (#905309) e_msg: Process /usr/sbin/bat was killed by signal 11 (SIGSEGV) + +* Thu Jan 10 2013 Simone Caronni - 5.2.12-6 +- Added missing line in bacula-sd SysV init script. + +* Wed Jan 09 2013 Simone Caronni - 5.2.12-5 +- Move unversioned libraries into the devel package (#889244). + +* Wed Jan 09 2013 Simone Caronni - 5.2.12-4 +- Updated SysV init script according to Fedora template: + https://fedoraproject.org/wiki/Packaging:SysVInitScript + +* Wed Oct 17 2012 Simone Caronni - 5.2.12-3 +- Add sample-query.sql file to Director's docs. + +* Wed Oct 17 2012 Simone Caronni - 5.2.12-2 +- Fix fedpkg checks. Requires fedpkg > 1.10: + http://git.fedorahosted.org/cgit/fedpkg.git/commit/?id=11c46c06a3c9cc2f58d68aea964dd37dc028e349 +- Change systemd requirements as per new package guidelines. + +* Fri Sep 14 2012 Simone Caronni - 5.2.12-1 +- Update to 5.2.12, containing only patches from 5.2.11-4. + +* Fri Sep 14 2012 Simone Caronni - 5.2.11-4 +- Add a sleep timer for RHEL init scripts restart as Debian does. + Problems verified on the sd exiting too early on VMs and slow boxes. + +* Thu Sep 13 2012 Simone Caronni - 5.2.11-3 +- Introduce last minute critical patches. + +* Thu Sep 13 2012 Simone Caronni - 5.2.11-2 +- Do not remove user on common subpackage uninstall. + +* Tue Sep 11 2012 Simone Caronni - 5.2.11-1 +- Update to 5.2.11. +- Removed upstreamed patches. +- Updated bat patch. +- Removed useless docs. + +* Tue Sep 11 2012 Simone Caronni - 5.2.10-7 +- Add Fedora 18 systemd macros. +- Remove old distribution checks. + +* Wed Aug 29 2012 Simone Caronni - 5.2.10-6 +- Remove user definition during prep so they are not used during the install + phase (rhbz#852732). +- Enforce permissions in default config files. + +* Fri Jul 20 2012 Simone Caronni - 5.2.10-5 +- Removed make_catalog_backup bash script, leave only the default perl one (rhbz#456612,665498). + +* Wed Jul 18 2012 Fedora Release Engineering - 5.2.10-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Mon Jul 16 2012 Simone Caronni - 5.2.10-3 +- Updated log path patch (rhbz#837706). + +* Tue Jul 10 2012 Simone Caronni - 5.2.10-2 +- Add nss-lookup.target as required to service files (rhbz#838828). +- Fix bsmtp upstream bug sending mails to ipv4/ipv6 hosts. + +* Mon Jul 02 2012 Simone Caronni - 5.2.10-1 +- Update to 5.2.10. + +* Tue Jun 19 2012 Simone Caronni - 5.2.9-2 +- Remove _isa on BuildRequires. +- Remove useless code in SysV init scripts. + +* Tue Jun 12 2012 Simone Caronni - 5.2.9-1 +- Update to 5.2.9, remove termlib patch. + +* Mon Jun 11 2012 Simone Caronni - 5.2.8-2 +- Fix console build on RHEL 5. + +* Mon Jun 11 2012 Simone Caronni - 5.2.8-1 +- Update to 5.2.8. +- Removed upstram xattr patch. +- Added database backend detection to bacula-libs-sql for upgrades from + <= 5.0.3-28-fc16 and 5.2.6-1.fc17. + +* Fri Jun 08 2012 Simone Caronni - 5.2.7-4 +- Make a note about mt-st and mtx (bz#829888). +- Update README.Fedora with current information. +- Fix bacula-sd group on Fedora and RHEL >= 6 (bz#829509). + +* Wed Jun 06 2012 Simone Caronni - 5.2.7-3 +- Final xattr patch from upstream for bz#819158. +- Switch alternatives to point to the unversioned system libraries. + Pointed out by the closely related bug #829219. + +* Mon Jun 04 2012 Simone Caronni - 5.2.7-2 +- Remove python-devel test leftover. +- Updated bat build patch to add support for RHEL 6. + +* Mon Jun 04 2012 Simone Caronni - 5.2.7-1 +- Updated to 5.2.7, removed patches included upstream. +- Removed python-devel patch, fix included in python package. +- Replaced tabs with blanks in spec file (rpmlint). + +* Mon May 28 2012 Simone Caronni - 5.2.6-6 +- Even if pulled in by dependencies, re-add explict BR on systemd-units. +- Remove .gz suffix for man pages in file lists as per packaging guidelines. + +* Mon May 28 2012 Simone Caronni - 5.2.6-5 +- Patch for bug #819158. +- Updated hostname patch with official fix. +- Sorted all BuildRequires and removed useless systemd-units. + +* Wed May 23 2012 Simone Caronni - 5.2.6-4 +- Added python config workaround for Fedora 16. + +* Mon May 21 2012 Simone Caronni - 5.2.6-3 +- Removed _install, _mkdir and _make macro. +- Added _isa to BuildRequires. +- Removed lzo-devel option for RHEL 4 (EOL). + +* Fri Mar 16 2012 Simone Caronni - 5.2.6-2 +- Move libbaccats and libbacsql into bacula-libs-sql package so only + Director and Storage daemons pull in SQL dependencies: + http://old.nabble.com/Standalone-client-question-td33495990.html + +* Wed Feb 22 2012 Simone Caronni - 5.2.6-1 +- Update to 5.2.6. + +* Fri Feb 10 2012 Simone Caronni - 5.2.5-3 +- WX and gnome console should be upgraded from bconsole, not + libraries. + +* Mon Jan 30 2012 Simone Caronni - 5.2.5-2 +- License has changed to AGPLv3 in 5.0.3. Thanks Erinn. +- Fix ldconfig/alternatives symlinks on removal of packages and + upgrades from recent f15/f16 changes. + +* Thu Jan 26 2012 Simone Caronni - 5.2.5-1 +- Update to 5.2.5. +- Change the alternative library to the base shared object name + so the preference set is not lost when changing releases. + +* Mon Jan 23 2012 Simone Caronni - 5.2.4-4 +- Remove old BuildRequires for bacula-docs. + +* Fri Jan 20 2012 Simone Caronni - 5.2.4-3 +- Fix for rhbz#728693. + +* Fri Jan 20 2012 Simone Caronni - 5.2.4-2 +- Close bugs rhbz#708712, rhbz#556669, rhbz#726147 + +* Wed Jan 18 2012 Simone Caronni - 5.2.4-1 +- Update to 5.2.4, rework libbaccats installation as they have + fixed the soname library problem. + +* Thu Jan 12 2012 Simone Caronni - 5.2.3-8 +- Fix tray monitor desktop file. + +* Wed Jan 11 2012 Simone Caronni - 5.2.3-7 +- Split off bacula-docs subpackage. + +* Thu Jan 05 2012 Simone Caronni - 5.2.3-6 +- Make docs conditional at build for testing. +- Add devel subpackage. + +* Tue Jan 03 2012 Simone Caronni - 5.2.3-5 +- Trim changelog. +- Merge bacula-director backends and move libbacats alternatives + to bacula-libs. +- Move bscan to bacula-storage now that is dependent only on + bacula-libs. +- Added README.Fedora. + +* Tue Dec 20 2011 Simone Caronni - 5.2.3-4 +- Changing uid from 33 per previous discussion, static uid + already allocated is 133: + "cat /usr/share/doc/setup-2.8.36/uidgid | grep bacula" + +* Mon Dec 19 2011 Simone Caronni - 5.2.3-3 +- Remove fedora-usermgmt entirely, see thread at: + http://lists.fedoraproject.org/pipermail/packaging/2011-December/008034.html + +* Mon Dec 19 2011 Simone Caronni - 5.2.3-2 +- Remove leftover users when removing bacula-common. +- Allow building "--without fedora" to avoid RHEL dependency on EPEL: + http://fedoraproject.org/wiki/PackageUserCreation + +* Mon Dec 19 2011 Simone Caronni - 5.2.3-1 +- Updated to 5.2.3. +- Remove fedora-usermgmt from libs Requires section. + +* Sun Dec 11 2011 Simone Caronni - 5.2.2-11 +- Add bat html docs so the help button works. +- Minor packaging changes. +- Default permissions on bconsole and bat. +- Use localhost as default on config files instead of patching fake + example.com hostnames. +- Add QT tray monitor. + +* Sat Dec 10 2011 Simone Caronni - 5.2.2-10 +- Added patch for mysql 5.5.18 from Oliver Falk. + +* Wed Dec 07 2011 Simone Caronni - 5.2.2-9 +- Add sample-query.sql as config file. +- Small log changes. + +* Wed Dec 07 2011 Simone Caronni - 5.2.2-8 +- Fixed building on RHEL/CentOS 4. +- Split out libs package to remove dependency on bacula-common for + bconsole, bat and check_bacula. +- Fix typo in post scriptlet for director-sqlite. + +* Tue Dec 06 2011 Simone Caronni - 5.2.2-7 +- Added libcap for POSIX.1e capabilities in bacula-fd (5.0.0 feature). +- Allow systemd files to read options set in the sysconfig + configuration files like SysV scripts to enable capabilities. +- Set capabilities as optional for now. + +* Mon Dec 05 2011 Simone Caronni - 5.2.2-6 +- Removed leftover files and small rpmlint fixes. +- Additional file moves between packages. +- Enabled LZO compression (5.2.1 feature). + +* Mon Dec 05 2011 Simone Caronni - 5.2.2-5 +- Remove redundant user/group in service files. +- Reduce patching for what can be passed through configure. +- Remove dsolink patch, not needed anymore. + +* Fri Dec 02 2011 Simone Caronni - 5.2.2-4 +- Rename storage-common to storage and make it provide storage-common. +- Move bscan to director-common. +- Move storage scripts to storage. +- Add html docs. +- Install dummy catalogue library and mark it as ghost. + +* Thu Dec 01 2011 Simone Caronni - 5.2.2-3 +- Add missing conditional for bat in the build section. +- Make bat require qt4-devel on build (rhel 5 fix). +- Bumped requirement for qt >= 4.6.2 for 5.2.2. +- Renamed bacula-config.patch to bacula-5.2.2-config.patch as it + always changes. +- Fix installation of bat and check_bacula binaries. Enabling + libtool for bpipe-fd.so produces binaries under .libs. +- Removed fedora-usermgmt requirement for director-common. +- Removed examples from docs and make them "noarch". +- Fix bacula-console requirements. +- Fix nagios plugin summary. +- Removed checkconf functions from SysV init files and replace + the call with the script used in systemd service files. Make + the script available in all builds. +- Make docs NoArch where supported. + +* Thu Dec 1 2011 Tom Callaway - 5.2.2-2 +- resolve broken dependency issues + +* Tue Nov 29 2011 Tom Callaway - 5.2.2-1 +- Update to 5.2.2 +- minor spec cleanups, conditionalized support for systemd + +* Fri Nov 04 2011 Simone Caronni - 5.2.1-1 +- Updated to 5.2.1. +- Reworked and removed some patches for 5.2.1 codebase. +- Reworked bat installation. +- Removed sqlite2 support. +- Removed all the fancy database backend rebuilding. +- Disabled libtool for bpipe-fd.so. +- Passed plugins dir as libdir/bacula. +- Added sql libs to alternatives. +- Disabled traymonitor. +- Minor fixes to spec file, rpmlint fixes. +- Nagios patch for Enterprise FDs. +- Removed all gui/web stuff. +- Removed a lot of comments. +- Conditional on Fedora 11 / RHEL 6 for bat build. +- Obsolete bacula-sysconfdir. +- Removed bwxconsole.