Commit 6017757b authored by Reinhard Tartler's avatar Reinhard Tartler

New upstream version 0.13~~git20190527.g039c4a12

parent 1b839d11
Box Backup, http://www.boxbackup.org/
Copyright (c) 2003-2015, Ben Summers and contributors.
All rights reserved.
The license of the code was changed on 23-Jan-2010 in order to meet the
Fedora Project's definition of Free Software, and therefore allow inclusion
in Fedora, Red Hat Linux and CentOS. This also solves a long-standing
incompatibility with the GNU Readline library that prevented us from
distributing Box Backup binaries compiled against that library. You can
review our discussions of the change in the mailing list archives at:
http://lists.boxbackup.org/pipermail/boxbackup/2010-January/000005.html
Note that this project uses mixed licensing. Different parts of the project
may be used and distributed under different licenses, as described below.
The two licenses used are "Box Backup GPL" and a BSD-style license.
For full details of the license, please read the included COPYING.txt file.
Unless stated otherwise in the file, all files in the following directories
fall under the "Box Backup GPL" license, described below:
bin/bbackupctl
bin/bbackupd
bin/bbackupobjdump
bin/bbackupquery
bin/bbstoreaccounts
bin/bbstored
bin/s3simulator
lib/backupclient
lib/backupstore
test/backupdiff
test/backupstore
test/backupstorefix
test/backupstorepatch
test/bbackupd
contrib/bbadmin
contrib/bbreporter
contrib/cygwin
contrib/debian
contrib/mac_osx
contrib/redhat
contrib/rpm
contrib/solaris
contrib/suse
contrib/windows
distribution/boxbackup
The "Box Backup GPL" license text may be found in the file
LICENSE-GPL.txt, or online at:
[https://www.boxbackup.org/svn/box/trunk/LICENSE-GPL.txt]
Unless stated otherwise in the file, all files in the following directories
are dual licensed under the BSD and GPL licenses. You may use and distribute
them providing that you comply EITHER with the terms of the BSD license,
OR the GPL license. It is not necessary to comply with both licenses,
only one.
lib/common
lib/compress
lib/crypto
lib/httpserver
lib/intercept
lib/raidfile
lib/server
lib/win32
test/basicserver
test/common
test/compress
test/crypto
test/httpserver
test/raidfile
test/win32
infrastructure
distribution
The dual license text may be found in the file
LICENSE-DUAL.txt, or online at:
[https://www.boxbackup.org/svn/box/trunk/LICENSE-DUAL.txt]
Box Backup, http://www.boxbackup.org/
Copyright (c) 2003-2015, Ben Summers and contributors.
All rights reserved.
The license of the code was changed on 23-Jan-2010 in order to meet the
Fedora Project's definition of Free Software, and therefore allow inclusion
in Fedora, Red Hat Linux and CentOS. This also solves a long-standing
incompatibility with the GNU Readline library that prevented us from
distributing Box Backup binaries compiled against that library. You can
review our discussions of the change in the mailing list archives at:
http://lists.boxbackup.org/pipermail/boxbackup/2010-January/000005.html
Note that this project uses mixed licensing. Different parts of the project
may be used and distributed under different licenses, as described below.
The two licenses used are "Box Backup GPL" and a BSD-style license.
For full details of the license, please read the included COPYING.txt file.
Unless stated otherwise in the file, all files in the following directories
fall under the "Box Backup GPL" license, described below:
bin/bbackupctl
bin/bbackupd
bin/bbackupobjdump
bin/bbackupquery
bin/bbstoreaccounts
bin/bbstored
bin/s3simulator
lib/backupclient
lib/backupstore
test/backupdiff
test/backupstore
test/backupstorefix
test/backupstorepatch
test/bbackupd
contrib/bbadmin
contrib/bbreporter
contrib/cygwin
contrib/debian
contrib/mac_osx
contrib/redhat
contrib/rpm
contrib/solaris
contrib/suse
contrib/windows
distribution/boxbackup
The "Box Backup GPL" license text may be found in the file
LICENSE-GPL.txt, or online at:
[https://www.boxbackup.org/svn/box/trunk/LICENSE-GPL.txt]
Unless stated otherwise in the file, all files in the following directories
are dual licensed under the BSD and GPL licenses. You may use and distribute
them providing that you comply EITHER with the terms of the BSD license,
OR the GPL license. It is not necessary to comply with both licenses,
only one.
lib/common
lib/compress
lib/crypto
lib/httpserver
lib/intercept
lib/raidfile
lib/server
lib/win32
test/basicserver
test/common
test/compress
test/crypto
test/httpserver
test/raidfile
test/win32
infrastructure
distribution
The dual license text may be found in the file
LICENSE-DUAL.txt, or online at:
[https://www.boxbackup.org/svn/box/trunk/LICENSE-DUAL.txt]
......@@ -169,7 +169,7 @@ if(!-f $private_key)
if(!-f $certificate_request)
{
die "Couldn't run openssl for CSR generation" unless
open(CSR,"|openssl req -new -key $private_key -sha1 -out $certificate_request");
open(CSR,"|openssl req -new -key $private_key -sha256 -out $certificate_request");
print CSR <<__E;
.
.
......@@ -317,6 +317,21 @@ NotifyScript = $notify_script
__E
if("@HAVE_SSL_CTX_SET_SECURITY_LEVEL@" eq "1")
{
print CONFIG <<__E;
# Box Backup compiled with support for SSLSecurityLevel
SSLSecurityLevel = 2
__E
}
else
{
print CONFIG <<__E;
# Box Backup compiled without support for SSLSecurityLevel
# SSLSecurityLevel = 2
__E
}
if($backup_mode eq 'lazy')
{
# lazy mode configuration
......
......@@ -364,7 +364,9 @@ int main(int argc, const char *argv[])
std::string certFile(conf.GetKeyValue("CertificateFile"));
std::string keyFile(conf.GetKeyValue("PrivateKeyFile"));
std::string caFile(conf.GetKeyValue("TrustedCAsFile"));
tlsContext.Initialise(false /* as client */, certFile.c_str(), keyFile.c_str(), caFile.c_str());
int ssl_security_level(conf.GetKeyValueInt("SSLSecurityLevel"));
tlsContext.Initialise(false /* as client */, certFile.c_str(), keyFile.c_str(),
caFile.c_str(), ssl_security_level);
// Initialise keys
BackupClientCryptoKeys_Setup(conf.GetKeyValue("KeysFile").c_str());
......
......@@ -122,7 +122,7 @@ sub cmd_init_create_root
# make CSR
die "Couldn't run openssl for CSR generation" unless
open(CSR,"|openssl req -new -key $key -sha1 -out $csr");
open(CSR,"|openssl req -new -key $key -sha256 -out $csr");
print CSR <<__E;
.
.
......@@ -140,7 +140,7 @@ __E
die "Certificate request wasn't created.\n" unless -f $csr;
# sign it to make a self-signed root CA key
if(system("openssl x509 -req -in $csr -sha1 -extensions v3_ca -signkey $key -out $cert -days $root_sign_period") != 0)
if(system("openssl x509 -req -in $csr -sha256 -extensions v3_ca -signkey $key -out $cert -days $root_sign_period") != 0)
{
die "Couldn't generate root certificate."
}
......@@ -201,7 +201,7 @@ __E
my $out_cert = "$cert_dir/clients/$acc"."-cert.pem";
# sign it!
if(system("openssl x509 -req -in $csr -sha1 -extensions usr_crt -CA $cert_dir/roots/clientCA.pem -CAkey $cert_dir/keys/clientRootKey.pem -out $out_cert -days $sign_period") != 0)
if(system("openssl x509 -req -in $csr -sha256 -extensions usr_crt -CA $cert_dir/roots/clientCA.pem -CAkey $cert_dir/keys/clientRootKey.pem -out $out_cert -days $sign_period") != 0)
{
die "Signing failed"
}
......@@ -257,7 +257,7 @@ __E
my $out_cert = "$cert_dir/servers/$common_name"."-cert.pem";
# sign it!
if(system("openssl x509 -req -in $csr -sha1 -extensions usr_crt -CA $cert_dir/roots/serverCA.pem -CAkey $cert_dir/keys/serverRootKey.pem -out $out_cert -days $sign_period") != 0)
if(system("openssl x509 -req -in $csr -sha256 -extensions usr_crt -CA $cert_dir/roots/serverCA.pem -CAkey $cert_dir/keys/serverRootKey.pem -out $out_cert -days $sign_period") != 0)
{
die "Signing failed"
}
......
......@@ -202,11 +202,24 @@ Server
CertificateFile = $certificate
PrivateKeyFile = $private_key
TrustedCAsFile = $ca_root_cert
}
__E
if("@HAVE_SSL_CTX_SET_SECURITY_LEVEL@" eq "1")
{
print CONFIG <<__E;
# Box Backup compiled with support for SSLSecurityLevel
SSLSecurityLevel = 2
__E
}
else
{
print CONFIG <<__E;
# Box Backup compiled without support for SSLSecurityLevel
# SSLSecurityLevel = 2
__E
}
print CONFIG "}\n";
close CONFIG;
# explain to the user what they need to do next
......
service.exe -i -S GigaLock
echo off
ping 192.168.254.254 -n 5 -w 1000 > nul
service.exe -i -S GigaLock
echo off
ping 192.168.254.254 -n 5 -w 1000 > nul
control.exe terminate
echo off
ping 192.168.254.254 -n 5 -w 1000 > nul
control.exe terminate
echo off
ping 192.168.254.254 -n 5 -w 1000 > nul
@ECHO OFF
: o=old, d=deleted, s=size info, t=timestamp, r=recursive
set Queryopts=-odstr
::set Queryopts=-str
query.exe "list %Queryopts%" quit > QueryOutputAllResults.txt
@ECHO OFF
: o=old, d=deleted, s=size info, t=timestamp, r=recursive
set Queryopts=-odstr
::set Queryopts=-str
query.exe "list %Queryopts%" quit > QueryOutputAllResults.txt
@ECHO OFF
: o=old, d=deleted, s=size info, t=timestamp, r=recursive
::set Queryopts=-odstr
set Queryopts=-str
query.exe "list %Queryopts%" quit > QueryOutputCurrentResults.txt
@ECHO OFF
: o=old, d=deleted, s=size info, t=timestamp, r=recursive
::set Queryopts=-odstr
set Queryopts=-str
query.exe "list %Queryopts%" quit > QueryOutputCurrentResults.txt
control.exe reload
echo off
ping 192.168.254.254 -n 8 -w 1000 > nul
control.exe reload
echo off
ping 192.168.254.254 -n 8 -w 1000 > nul
@@SERVICEEXENAME@ -r -S GigaLock
echo off
ping 192.168.254.254 -n 5 -w 1000 > nul
@@SERVICEEXENAME@ -r -S GigaLock
echo off
ping 192.168.254.254 -n 5 -w 1000 > nul
net stop GigaLock
ping 192.168.254.254 -n 2 -w 1000 > nul
net start GigaLock
echo off
ping 192.168.254.254 -n 5 -w 1000 > nul
net stop GigaLock
ping 192.168.254.254 -n 2 -w 1000 > nul
net start GigaLock
echo off
ping 192.168.254.254 -n 5 -w 1000 > nul
query.exe usage quit
ping 192.168.254.254 -n 10 -w 1000 > nul
query.exe usage quit
ping 192.168.254.254 -n 10 -w 1000 > nul
net start GigaLock
echo off
ping 192.168.254.254 -n 5 -w 1000 > nul
net start GigaLock
echo off
ping 192.168.254.254 -n 5 -w 1000 > nul
net stop GigaLock
echo off
ping 192.168.254.254 -n 5 -w 1000 > nul
net stop GigaLock
echo off
ping 192.168.254.254 -n 5 -w 1000 > nul
control.exe sync
echo off
ping 192.168.254.254 -n 5 -w 1000 > nul
control.exe sync
echo off
ping 192.168.254.254 -n 5 -w 1000 > nul
<?xml version='1.0'?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:hl="java:net.sf.xslthl.ConnectorSaxon6"
xmlns:exsl="http://exslt.org/common"
exclude-result-prefixes="exsl hl"
version='1.0'>
<!-- ********************************************************************
$Id: common.xsl 7266 2007-08-22 11:58:42Z xmldoc $
********************************************************************
This file is part of the XSL DocBook Stylesheet distribution.
See ../README or http://docbook.sf.net/release/xsl/current/ for
and other information.
******************************************************************** -->
<!-- You can override this template to do more complex mapping of
language attribute to highlighter language ID (see xslthl-config.xml) -->
<xsl:template name="language.to.xslthl">
<xsl:param name="context"/>
<xsl:choose>
<xsl:when test="$context/@language != ''">
<xsl:value-of select="$context/@language"/>
</xsl:when>
<xsl:when test="$highlight.default.language != ''">
<xsl:value-of select="$highlight.default.language"/>
</xsl:when>
</xsl:choose>
</xsl:template>
<xsl:template name="apply-highlighting">
<xsl:choose>
<!-- Do we want syntax highlighting -->
<xsl:when test="$highlight.source != 0 and function-available('hl:highlight')">
<xsl:variable name="language">
<xsl:call-template name="language.to.xslthl">
<xsl:with-param name="context" select="."/>
</xsl:call-template>
</xsl:variable>
<xsl:choose>
<xsl:when test="$language != ''">
<xsl:variable name="content">
<xsl:apply-templates/>
</xsl:variable>
<xsl:apply-templates select="hl:highlight($language, exsl:node-set($content))"/>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates/>
</xsl:otherwise>
</xsl:choose>
</xsl:when>
<!-- No syntax highlighting -->
<xsl:otherwise>
<xsl:apply-templates/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
<?xml version='1.0'?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:hl="java:net.sf.xslthl.ConnectorSaxon6"
xmlns:exsl="http://exslt.org/common"
exclude-result-prefixes="exsl hl"
version='1.0'>
<!-- ********************************************************************
$Id: common.xsl 7266 2007-08-22 11:58:42Z xmldoc $
********************************************************************
This file is part of the XSL DocBook Stylesheet distribution.
See ../README or http://docbook.sf.net/release/xsl/current/ for
and other information.
******************************************************************** -->
<!-- You can override this template to do more complex mapping of
language attribute to highlighter language ID (see xslthl-config.xml) -->
<xsl:template name="language.to.xslthl">
<xsl:param name="context"/>
<xsl:choose>
<xsl:when test="$context/@language != ''">
<xsl:value-of select="$context/@language"/>
</xsl:when>
<xsl:when test="$highlight.default.language != ''">
<xsl:value-of select="$highlight.default.language"/>
</xsl:when>
</xsl:choose>
</xsl:template>
<xsl:template name="apply-highlighting">
<xsl:choose>
<!-- Do we want syntax highlighting -->
<xsl:when test="$highlight.source != 0 and function-available('hl:highlight')">
<xsl:variable name="language">
<xsl:call-template name="language.to.xslthl">
<xsl:with-param name="context" select="."/>
</xsl:call-template>
</xsl:variable>
<xsl:choose>
<xsl:when test="$language != ''">
<xsl:variable name="content">
<xsl:apply-templates/>
</xsl:variable>
<xsl:apply-templates select="hl:highlight($language, exsl:node-set($content))"/>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates/>
</xsl:otherwise>
</xsl:choose>
</xsl:when>
<!-- No syntax highlighting -->
<xsl:otherwise>
<xsl:apply-templates/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
<?xml version='1.0'?>
<xslthl-config>
<highlighter id='java' file='./java-hl.xml' />
<highlighter id='delphi' file='./delphi-hl.xml'/>
<highlighter id='ini' file='./ini-hl.xml' />
<highlighter id='php' file='./php-hl.xml' />
<highlighter id='myxml' file='./myxml-hl.xml' />
<highlighter id='m2' file='./m2-hl.xml' />
<highlighter id='c' file='./c-hl.xml' />
<namespace prefix="xslthl" uri="http://xslthl.sf.net" />
</xslthl-config>
<?xml version='1.0'?>
<xslthl-config>
<highlighter id='java' file='./java-hl.xml' />
<highlighter id='delphi' file='./delphi-hl.xml'/>
<highlighter id='ini' file='./ini-hl.xml' />
<highlighter id='php' file='./php-hl.xml' />
<highlighter id='myxml' file='./myxml-hl.xml' />
<highlighter id='m2' file='./m2-hl.xml' />
<highlighter id='c' file='./c-hl.xml' />
<namespace prefix="xslthl" uri="http://xslthl.sf.net" />
</xslthl-config>
<?xml version='1.0'?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xslthl="http://xslthl.sf.net"
exclude-result-prefixes="xslthl"
version='1.0'>
<!-- ********************************************************************
$Id: highlight.xsl 7266 2007-08-22 11:58:42Z xmldoc $
********************************************************************
This file is part of the XSL DocBook Stylesheet distribution.
See ../README or http://docbook.sf.net/release/xsl/current/ for
and other information.
******************************************************************** -->
<xsl:template match='xslthl:keyword'>
<b class="hl-keyword"><xsl:apply-templates/></b>
</xsl:template>
<xsl:template match='xslthl:string'>
<b class="hl-string"><i style="color:red"><xsl:apply-templates/></i></b>
</xsl:template>
<xsl:template match='xslthl:comment'>
<i class="hl-comment" style="color: silver"><xsl:apply-templates/></i>
</xsl:template>
<xsl:template match='xslthl:tag'>
<b class="hl-tag" style="color: blue"><xsl:apply-templates/></b>
</xsl:template>
<xsl:template match='xslthl:attribute'>
<span class="hl-attribute" style="color: blue"><xsl:apply-templates/></span>
</xsl:template>
<xsl:template match='xslthl:value'>
<span class="hl-value" style="color: blue"><xsl:apply-templates/></span>
</xsl:template>
<xsl:template match='xslthl:html'>
<b><i style="color: red"><xsl:apply-templates/></i></b>
</xsl:template>
<xsl:template match='xslthl:xslt'>
<b style="color: blue"><xsl:apply-templates/></b>
</xsl:template>
<xsl:template match='xslthl:section'>
<b><xsl:apply-templates/></b>
</xsl:template>
</xsl:stylesheet>
<?xml version='1.0'?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xslthl="http://xslthl.sf.net"
exclude-result-prefixes="xslthl"
version='1.0'>
<!-- ********************************************************************
$Id: highlight.xsl 7266 2007-08-22 11:58:42Z xmldoc $
********************************************************************
This file is part of the XSL DocBook Stylesheet distribution.
See ../README or http://docbook.sf.net/release/xsl/current/ for
and other information.
******************************************************************** -->
<xsl:template match='xslthl:keyword'>
<b class="hl-keyword"><xsl:apply-templates/></b>
</xsl:template>
<xsl:template match='xslthl:string'>
<b class="hl-string"><i style="color:red"><xsl:apply-templates/></i></b>
</xsl:template>
<xsl:template match='xslthl:comment'>
<i class="hl-comment" style="color: silver"><xsl:apply-templates/></i>
</xsl:template>
<xsl:template match='xslthl:tag'>
<b class="hl-tag" style="color: blue"><xsl:apply-templates/></b>
</xsl:template>
<xsl:template match='xslthl:attribute'>
<span class="hl-attribute" style="color: blue"><xsl:apply-templates/></span>
</xsl:template>
<xsl:template match='xslthl:value'>
<span class="hl-value" style="color: blue"><xsl:apply-templates/></span>
</xsl:template>
<xsl:template match='xslthl:html'>
<b><i style="color: red"><xsl:apply-templates/></i></b>
</xsl:template>
<xsl:template match='xslthl:xslt'>
<b style="color: blue"><xsl:apply-templates/></b>
</xsl:template>
<xsl:template match='xslthl:section'>
<b><xsl:apply-templates/></b>
</xsl:template>
</xsl:stylesheet>
......@@ -71,13 +71,6 @@ function(move_file_if_exists source_file dest_file)
endif()
endfunction()
foreach(file_to_configure ${files_to_configure})
configure_file("${base_dir}/${file_to_configure}.in" "${base_dir}/${file_to_configure}.out" @ONLY)
replace_file_if_different(
"${base_dir}/${file_to_configure}"
"${base_dir}/${file_to_configure}.out")
endforeach()
# If BOXBACKUP_VERSION is defined when running CMake (as the AppVeyor config does), use it
# as-is, since it contains the full version number, branch, and platform (Win32/Win64):
if(BOXBACKUP_VERSION)
......@@ -375,6 +368,7 @@ file(WRITE "${boxconfig_h_file}" "// Auto-generated by CMake. Do not edit.\n")
if(WIN32)
target_link_libraries(lib_common PUBLIC ws2_32 gdi32)
list(APPEND CMAKE_REQUIRED_LIBRARIES ws2_32 gdi32)
endif()
# On Windows we want to statically link zlib to make debugging and distribution easier,
......@@ -430,6 +424,7 @@ else()
endif()
include_directories(${OPENSSL_INCLUDE_DIR})
target_link_libraries(lib_crypto PUBLIC ${OPENSSL_LIBRARIES})
list(APPEND CMAKE_REQUIRED_LIBRARIES ${OPENSSL_LIBRARIES})
# Link to PCRE
if (WIN32)
......@@ -613,6 +608,9 @@ foreach(function_name ${detect_functions})
file(APPEND "${boxconfig_h_file}" "#cmakedefine HAVE_${platform_var_name}\n")
endforeach()
check_function_exists(SSL_CTX_set_security_level HAVE_SSL_CTX_SET_SECURITY_LEVEL)
file(APPEND "${boxconfig_h_file}" "#cmakedefine HAVE_SSL_CTX_SET_SECURITY_LEVEL\n")
check_symbol_exists(dirfd "dirent.h" HAVE_DECL_DIRFD)
file(APPEND "${boxconfig_h_file}" "#cmakedefine01 HAVE_DECL_DIRFD\n")
......@@ -829,6 +827,13 @@ file(TO_NATIVE_PATH "${PERL_EXECUTABLE}" perl_executable_native)
string(REPLACE "\\" "\\\\" perl_path_escaped ${perl_executable_native})
target_compile_definitions(test_backupstorefix PRIVATE -DPERL_EXECUTABLE="${perl_path_escaped}")
foreach(file_to_configure ${files_to_configure})
configure_file("${base_dir}/${file_to_configure}.in" "${base_dir}/${file_to_configure}.out" @ONLY)
replace_file_if_different(
"${base_dir}/${file_to_configure}"
"${base_dir}/${file_to_configure}.out")
endforeach()
# Configure test timeouts:
# I've set the timeout to 4 times as long as it took to run on a particular run on Appveyor:
# https://ci.appveyor.com/project/qris/boxbackup/build/job/xm10itascygtu93j
......
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<LocalDebuggerCommandArguments>testfiles\bbackupd.conf</LocalDebuggerCommandArguments>
<LocalDebuggerWorkingDirectory>$(ProjectDir)\..\..\..\debug\test\bbackupd</LocalDebuggerWorkingDirectory>
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
</PropertyGroup>
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<LocalDebuggerCommandArguments>testfiles\bbackupd.conf</LocalDebuggerCommandArguments>
<LocalDebuggerWorkingDirectory>$(ProjectDir)\..\..\..\debug\test\bbackupd</LocalDebuggerWorkingDirectory>
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
</PropertyGroup>
</Project>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<LocalDebuggerCommandArguments>testfiles/bbstored.conf</LocalDebuggerCommandArguments>
<LocalDebuggerWorkingDirectory>$(ProjectDir)\..\..\..\debug\test\backupstorefix</LocalDebuggerWorkingDirectory>
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
</PropertyGroup>