Since fork() issue with our threads is solved, use libFuse damonization again
This commit is contained in:
parent
057113df00
commit
fdf866a562
21
src/Cli.cpp
21
src/Cli.cpp
@ -7,7 +7,6 @@
|
|||||||
#include <cstdio>
|
#include <cstdio>
|
||||||
#include <cstdlib>
|
#include <cstdlib>
|
||||||
#include <messmer/cpp-utils/assert/backtrace.h>
|
#include <messmer/cpp-utils/assert/backtrace.h>
|
||||||
#include <messmer/cpp-utils/daemon/daemonize.h>
|
|
||||||
|
|
||||||
#include "messmer/fspp/fuse/Fuse.h"
|
#include "messmer/fspp/fuse/Fuse.h"
|
||||||
#include "messmer/fspp/impl/FilesystemImpl.h"
|
#include "messmer/fspp/impl/FilesystemImpl.h"
|
||||||
@ -126,9 +125,7 @@ namespace cryfs {
|
|||||||
|
|
||||||
_initLogfile(options);
|
_initLogfile(options);
|
||||||
|
|
||||||
std::cout << "\nFilesystem is running. To unmount, call:\n$ fusermount -u " << options.mountDir() << "\n" << std::endl;
|
std::cout << "\nMounting filesystem. To unmount, call:\n$ fusermount -u " << options.mountDir() << "\n" << std::endl;
|
||||||
|
|
||||||
_goToBackgroundIfSpecified(options);
|
|
||||||
|
|
||||||
vector<char *> fuseOptions = options.fuseOptions();
|
vector<char *> fuseOptions = options.fuseOptions();
|
||||||
fuse.run(fuseOptions.size(), fuseOptions.data());
|
fuse.run(fuseOptions.size(), fuseOptions.data());
|
||||||
@ -139,21 +136,15 @@ namespace cryfs {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Cli::_goToBackgroundIfSpecified(const ProgramOptions &options) {
|
|
||||||
if (!options.foreground()) {
|
|
||||||
cpputils::daemonize();
|
|
||||||
if (options.logFile() == none) {
|
|
||||||
// Setup logging to syslog.
|
|
||||||
cpputils::logging::setLogger(spdlog::syslog_logger("cryfs", "cryfs", LOG_PID));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void Cli::_initLogfile(const ProgramOptions &options) {
|
void Cli::_initLogfile(const ProgramOptions &options) {
|
||||||
//TODO Test that --logfile parameter works. Should be: file if specified, otherwise stderr if foreground, else syslog.
|
//TODO Test that --logfile parameter works. Should be: file if specified, otherwise stderr if foreground, else syslog.
|
||||||
if (options.logFile() != none) {
|
if (options.logFile() != none) {
|
||||||
cpputils::logging::setLogger(
|
cpputils::logging::setLogger(
|
||||||
spdlog::create<spdlog::sinks::simple_file_sink<std::mutex>>("cryfs", *options.logFile()));
|
spdlog::create<spdlog::sinks::simple_file_sink<std::mutex>>("cryfs", *options.logFile()));
|
||||||
|
} else if (options.foreground()) {
|
||||||
|
cpputils::logging::setLogger(spdlog::stderr_logger_mt("cryfs"));
|
||||||
|
} else {
|
||||||
|
cpputils::logging::setLogger(spdlog::syslog_logger("cryfs", "cryfs", LOG_PID));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -184,7 +175,7 @@ namespace cryfs {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void Cli::_checkBasedirReadable(const ProgramOptions &options, shared_ptr<TempFile> tempfile) {
|
void Cli::_checkBasedirReadable(const ProgramOptions &options, shared_ptr<TempFile> tempfile) {
|
||||||
ASSERT(bf::path(options.baseDir()) == tempfile->path().parent_path(), "This function should be called with a file inside the base directory");
|
ASSERT(bf::equivalent(bf::path(options.baseDir()), tempfile->path().parent_path()), "This function should be called with a file inside the base directory");
|
||||||
try {
|
try {
|
||||||
bool found = false;
|
bool found = false;
|
||||||
bf::directory_iterator end;
|
bf::directory_iterator end;
|
||||||
|
@ -16,7 +16,6 @@ namespace cryfs {
|
|||||||
static void _runFilesystem(const program_options::ProgramOptions &options);
|
static void _runFilesystem(const program_options::ProgramOptions &options);
|
||||||
static CryConfigFile _loadOrCreateConfig(const program_options::ProgramOptions &options);
|
static CryConfigFile _loadOrCreateConfig(const program_options::ProgramOptions &options);
|
||||||
static boost::filesystem::path _determineConfigFile(const program_options::ProgramOptions &options);
|
static boost::filesystem::path _determineConfigFile(const program_options::ProgramOptions &options);
|
||||||
static void _goToBackgroundIfSpecified(const program_options::ProgramOptions &options);
|
|
||||||
static std::string _askPassword();
|
static std::string _askPassword();
|
||||||
static bool _checkPassword(const std::string &password);
|
static bool _checkPassword(const std::string &password);
|
||||||
static void _showVersion();
|
static void _showVersion();
|
||||||
|
@ -36,6 +36,9 @@ ProgramOptions Parser::parse(const vector<string> &supportedCiphers) const {
|
|||||||
configfile = vm["config"].as<string>();
|
configfile = vm["config"].as<string>();
|
||||||
}
|
}
|
||||||
bool foreground = vm.count("foreground");
|
bool foreground = vm.count("foreground");
|
||||||
|
if (foreground) {
|
||||||
|
options.second.push_back(const_cast<char*>("-f"));
|
||||||
|
}
|
||||||
optional<string> logfile = none;
|
optional<string> logfile = none;
|
||||||
if (vm.count("logfile")) {
|
if (vm.count("logfile")) {
|
||||||
logfile = vm["logfile"].as<string>();
|
logfile = vm["logfile"].as<string>();
|
||||||
|
@ -45,7 +45,7 @@ public:
|
|||||||
public:
|
public:
|
||||||
_UnmountFilesystemInDestructor(const boost::filesystem::path &baseDir) :_baseDir(baseDir) {}
|
_UnmountFilesystemInDestructor(const boost::filesystem::path &baseDir) :_baseDir(baseDir) {}
|
||||||
~_UnmountFilesystemInDestructor() {
|
~_UnmountFilesystemInDestructor() {
|
||||||
if (0 != system((std::string("fusermount -u ")+_baseDir.c_str()).c_str()), "Could not unmount cryfs") {
|
if (0 != system((std::string("fusermount -u ")+_baseDir.c_str()).c_str())) {
|
||||||
cpputils::logging::LOG(cpputils::logging::ERROR) << "Could not unmount cryfs";
|
cpputils::logging::LOG(cpputils::logging::ERROR) << "Could not unmount cryfs";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user