Merge branch 'filesystem' of https://github.com/Diapolo/bitcoin
This commit is contained in:
commit
1044391135
|
@ -15,7 +15,6 @@
|
||||||
#include <boost/algorithm/string.hpp>
|
#include <boost/algorithm/string.hpp>
|
||||||
#include <boost/lexical_cast.hpp>
|
#include <boost/lexical_cast.hpp>
|
||||||
#include <boost/asio/ssl.hpp>
|
#include <boost/asio/ssl.hpp>
|
||||||
#include <boost/filesystem.hpp>
|
|
||||||
#include <boost/filesystem/fstream.hpp>
|
#include <boost/filesystem/fstream.hpp>
|
||||||
typedef boost::asio::ssl::stream<boost::asio::ip::tcp::socket> SSLStream;
|
typedef boost::asio::ssl::stream<boost::asio::ip::tcp::socket> SSLStream;
|
||||||
|
|
||||||
|
@ -2385,18 +2384,21 @@ void ThreadRPCServer2(void* parg)
|
||||||
if (fUseSSL)
|
if (fUseSSL)
|
||||||
{
|
{
|
||||||
context.set_options(ssl::context::no_sslv2);
|
context.set_options(ssl::context::no_sslv2);
|
||||||
filesystem::path certfile = GetArg("-rpcsslcertificatechainfile", "server.cert");
|
|
||||||
if (!certfile.is_complete()) certfile = filesystem::path(GetDataDir()) / certfile;
|
|
||||||
if (filesystem::exists(certfile)) context.use_certificate_chain_file(certfile.string().c_str());
|
|
||||||
else printf("ThreadRPCServer ERROR: missing server certificate file %s\n", certfile.string().c_str());
|
|
||||||
filesystem::path pkfile = GetArg("-rpcsslprivatekeyfile", "server.pem");
|
|
||||||
if (!pkfile.is_complete()) pkfile = filesystem::path(GetDataDir()) / pkfile;
|
|
||||||
if (filesystem::exists(pkfile)) context.use_private_key_file(pkfile.string().c_str(), ssl::context::pem);
|
|
||||||
else printf("ThreadRPCServer ERROR: missing server private key file %s\n", pkfile.string().c_str());
|
|
||||||
|
|
||||||
string ciphers = GetArg("-rpcsslciphers",
|
filesystem::path pathCertFile(GetArg("-rpcsslcertificatechainfile", "server.cert"));
|
||||||
"TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH");
|
if (!pathCertFile.is_complete()) pathCertFile = filesystem::path(GetDataDir()) / pathCertFile;
|
||||||
SSL_CTX_set_cipher_list(context.impl(), ciphers.c_str());
|
pathCertFile.make_preferred();
|
||||||
|
if (filesystem::exists(pathCertFile)) context.use_certificate_chain_file(pathCertFile.string().c_str());
|
||||||
|
else printf("ThreadRPCServer ERROR: missing server certificate file %s\n", pathCertFile.string().c_str());
|
||||||
|
|
||||||
|
filesystem::path pathPKFile(GetArg("-rpcsslprivatekeyfile", "server.pem"));
|
||||||
|
if (!pathPKFile.is_complete()) pathPKFile = filesystem::path(GetDataDir()) / pathPKFile;
|
||||||
|
pathPKFile.make_preferred();
|
||||||
|
if (filesystem::exists(pathPKFile)) context.use_private_key_file(pathPKFile.string().c_str(), ssl::context::pem);
|
||||||
|
else printf("ThreadRPCServer ERROR: missing server private key file %s\n", pathPKFile.string().c_str());
|
||||||
|
|
||||||
|
string strCiphers = GetArg("-rpcsslciphers", "TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH");
|
||||||
|
SSL_CTX_set_cipher_list(context.impl(), strCiphers.c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
loop
|
loop
|
||||||
|
|
16
src/db.cpp
16
src/db.cpp
|
@ -79,19 +79,21 @@ CDB::CDB(const char* pszFile, const char* pszMode) : pdb(NULL)
|
||||||
if (fShutdown)
|
if (fShutdown)
|
||||||
return;
|
return;
|
||||||
string strDataDir = GetDataDir();
|
string strDataDir = GetDataDir();
|
||||||
string strLogDir = strDataDir + "/database";
|
filesystem::path pathLogDir(strDataDir + "/database");
|
||||||
filesystem::create_directory(strLogDir.c_str());
|
pathLogDir.make_preferred();
|
||||||
string strErrorFile = strDataDir + "/db.log";
|
filesystem::create_directory(pathLogDir);
|
||||||
printf("dbenv.open strLogDir=%s strErrorFile=%s\n", strLogDir.c_str(), strErrorFile.c_str());
|
filesystem::path pathErrorFile(strDataDir + "/db.log");
|
||||||
|
pathErrorFile.make_preferred();
|
||||||
|
printf("dbenv.open LogDir=%s ErrorFile=%s\n", pathLogDir.string().c_str(), pathErrorFile.string().c_str());
|
||||||
|
|
||||||
int nDbCache = GetArg("-dbcache", 25);
|
int nDbCache = GetArg("-dbcache", 25);
|
||||||
dbenv.set_lg_dir(strLogDir.c_str());
|
dbenv.set_lg_dir(pathLogDir.string().c_str());
|
||||||
dbenv.set_cachesize(nDbCache / 1024, (nDbCache % 1024)*1048576, 1);
|
dbenv.set_cachesize(nDbCache / 1024, (nDbCache % 1024)*1048576, 1);
|
||||||
dbenv.set_lg_bsize(1048576);
|
dbenv.set_lg_bsize(1048576);
|
||||||
dbenv.set_lg_max(10485760);
|
dbenv.set_lg_max(10485760);
|
||||||
dbenv.set_lk_max_locks(10000);
|
dbenv.set_lk_max_locks(10000);
|
||||||
dbenv.set_lk_max_objects(10000);
|
dbenv.set_lk_max_objects(10000);
|
||||||
dbenv.set_errfile(fopen(strErrorFile.c_str(), "a")); /// debug
|
dbenv.set_errfile(fopen(pathErrorFile.string().c_str(), "a")); /// debug
|
||||||
dbenv.set_flags(DB_AUTO_COMMIT, 1);
|
dbenv.set_flags(DB_AUTO_COMMIT, 1);
|
||||||
dbenv.log_set_config(DB_LOG_AUTO_REMOVE, 1);
|
dbenv.log_set_config(DB_LOG_AUTO_REMOVE, 1);
|
||||||
ret = dbenv.open(strDataDir.c_str(),
|
ret = dbenv.open(strDataDir.c_str(),
|
||||||
|
@ -1172,7 +1174,9 @@ bool BackupWallet(const CWallet& wallet, const string& strDest)
|
||||||
|
|
||||||
// Copy wallet.dat
|
// Copy wallet.dat
|
||||||
filesystem::path pathSrc(GetDataDir() + "/" + wallet.strWalletFile);
|
filesystem::path pathSrc(GetDataDir() + "/" + wallet.strWalletFile);
|
||||||
|
pathSrc.make_preferred();
|
||||||
filesystem::path pathDest(strDest);
|
filesystem::path pathDest(strDest);
|
||||||
|
pathDest.make_preferred();
|
||||||
if (filesystem::is_directory(pathDest))
|
if (filesystem::is_directory(pathDest))
|
||||||
pathDest = pathDest / wallet.strWalletFile;
|
pathDest = pathDest / wallet.strWalletFile;
|
||||||
|
|
||||||
|
|
23
src/util.cpp
23
src/util.cpp
|
@ -2,6 +2,7 @@
|
||||||
// Copyright (c) 2009-2012 The Bitcoin developers
|
// Copyright (c) 2009-2012 The Bitcoin developers
|
||||||
// Distributed under the MIT/X11 software license, see the accompanying
|
// Distributed under the MIT/X11 software license, see the accompanying
|
||||||
// file license.txt or http://www.opensource.org/licenses/mit-license.php.
|
// file license.txt or http://www.opensource.org/licenses/mit-license.php.
|
||||||
|
|
||||||
#include "headers.h"
|
#include "headers.h"
|
||||||
#include "strlcpy.h"
|
#include "strlcpy.h"
|
||||||
#include <boost/algorithm/string/join.hpp>
|
#include <boost/algorithm/string/join.hpp>
|
||||||
|
@ -858,10 +859,11 @@ string GetDataDir()
|
||||||
string GetConfigFile()
|
string GetConfigFile()
|
||||||
{
|
{
|
||||||
namespace fs = boost::filesystem;
|
namespace fs = boost::filesystem;
|
||||||
fs::path pathConfig(GetArg("-conf", "bitcoin.conf"));
|
|
||||||
if (!pathConfig.is_complete())
|
fs::path pathConfigFile(GetArg("-conf", "bitcoin.conf"));
|
||||||
pathConfig = fs::path(GetDataDir()) / pathConfig;
|
if (!pathConfigFile.is_complete()) pathConfigFile = fs::path(GetDataDir()) / pathConfigFile;
|
||||||
return pathConfig.string();
|
pathConfigFile.make_preferred();
|
||||||
|
return pathConfigFile.string();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ReadConfigFile(map<string, string>& mapSettingsRet,
|
bool ReadConfigFile(map<string, string>& mapSettingsRet,
|
||||||
|
@ -874,7 +876,9 @@ bool ReadConfigFile(map<string, string>& mapSettingsRet,
|
||||||
{
|
{
|
||||||
if (fs::is_directory(fs::system_complete(mapSettingsRet["-datadir"])))
|
if (fs::is_directory(fs::system_complete(mapSettingsRet["-datadir"])))
|
||||||
{
|
{
|
||||||
fs::path pathDataDir = fs::system_complete(mapSettingsRet["-datadir"]);
|
fs::path pathDataDir(fs::system_complete(mapSettingsRet["-datadir"]));
|
||||||
|
pathDataDir.make_preferred();
|
||||||
|
|
||||||
strlcpy(pszSetDataDir, pathDataDir.string().c_str(), sizeof(pszSetDataDir));
|
strlcpy(pszSetDataDir, pathDataDir.string().c_str(), sizeof(pszSetDataDir));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -908,10 +912,11 @@ bool ReadConfigFile(map<string, string>& mapSettingsRet,
|
||||||
string GetPidFile()
|
string GetPidFile()
|
||||||
{
|
{
|
||||||
namespace fs = boost::filesystem;
|
namespace fs = boost::filesystem;
|
||||||
fs::path pathConfig(GetArg("-pid", "bitcoind.pid"));
|
|
||||||
if (!pathConfig.is_complete())
|
fs::path pathPidFile(GetArg("-pid", "bitcoind.pid"));
|
||||||
pathConfig = fs::path(GetDataDir()) / pathConfig;
|
if (!pathPidFile.is_complete()) pathPidFile = fs::path(GetDataDir()) / pathPidFile;
|
||||||
return pathConfig.string();
|
pathPidFile.make_preferred();
|
||||||
|
return pathPidFile.string();
|
||||||
}
|
}
|
||||||
|
|
||||||
void CreatePidFile(string pidFile, pid_t pid)
|
void CreatePidFile(string pidFile, pid_t pid)
|
||||||
|
|
Loading…
Reference in New Issue