diff --git a/src/config.cpp b/src/config.cpp index 05473249d5ff7b81c2fc5d97b8a2a20948835f28..88e6e2c2c4b93e6b184d80d2d8f6f97d29e1cec0 100644 --- a/src/config.cpp +++ b/src/config.cpp @@ -60,8 +60,8 @@ bool Config::load(std::istream &ifs, boost::program_options::options_description ("service.group", value()->default_value(""), "The name of group Spectrum runs as.") ("service.backend", value()->default_value("libpurple_backend"), "Backend") ("service.protocol", value()->default_value(""), "Protocol") - ("service.pidfile", value()->default_value("/var/run/spectrum2/spectrum2.pid"), "Full path to pid file") - ("service.working_dir", value()->default_value("/var/lib/spectrum2"), "Working dir") + ("service.pidfile", value()->default_value("/var/run/spectrum2/$jid.pid"), "Full path to pid file") + ("service.working_dir", value()->default_value("/var/lib/spectrum2/$jid"), "Working dir") ("service.allowed_servers", value()->default_value(""), "Only users from these servers can connect") ("service.server_mode", value()->default_value(false), "True if Spectrum should behave as server") ("service.users_per_backend", value()->default_value(100), "Number of users per one legacy network backend") @@ -101,10 +101,20 @@ bool Config::load(std::istream &ifs, boost::program_options::options_description parsed_options parsed = parse_config_file(ifs, opts, true); + std::string jid = ""; BOOST_FOREACH(option opt, parsed.options) { + if (opt.string_key == "service.jid") { + jid = opt.value[0]; + } + } + + BOOST_FOREACH(option &opt, parsed.options) { if (opt.unregistered) { m_unregistered[opt.string_key] = opt.value[0]; } + else if (opt.value[0].find("$jid") != std::string::npos) { + boost::replace_all(opt.value[0], "$jid", jid); + } } store(parsed, m_variables);