WIP. Add config parameters for Remote service

This commit is contained in:
emeric
2014-08-22 22:57:19 +02:00
parent 8f8beb6237
commit 804b88ac50
8 changed files with 32 additions and 14 deletions
+4 -2
View File
@@ -1,7 +1,7 @@
I) DEPENCIES
libboost-dev libextractor-dev libavcodec-dev libwt-dev
libboost-dev libextractor-dev libavcodec-dev libwt-dev libprotobuf-dev libconfig++-dev
Warning: your distrib may provide an outdated wt library. Using the latest Wt (>= 3.3.3) is highly recommended (http://www.webtoolkit.eu/wt)
@@ -32,7 +32,9 @@ Generate a self signed certificate:
IV) RUNNING
In the build directory:
# ./lms --docroot=../ui --approot=../ui/approot --https-port=5081 --https-address=0.0.0.0 --ssl-certificate=./certUI.pem --ssl-private-key ./privkeyUI.pem --ssl-tmp-dh dh2048.pem
# ./lms lms.conf
Create the lms.conf file using the etc/lms.sample.conf
Depending of your SSL parameters, you may be asked for the PEM passphrase to unlock the private key.
-2
View File
@@ -4,8 +4,6 @@
- Use our own WIOService
[Services]
- [UI] generate argc/argv from a config file (crypto, port info, db path)
- [Remote] use config file to get crypto, port info, db path
- consider using external web server instead of builtin httpd (new FCGI service?)
[Users]
+3
View File
@@ -33,6 +33,9 @@ ConfigReader::getRemoteServerConfig(Service::RemoteServerService::Config& config
config.port = static_cast<unsigned int>(_config.lookup("remote.listen-endpoint.port"));
config.address = boost::asio::ip::address::from_string((const char*)_config.lookup("remote.listen-endpoint.addr"));
config.sslCertificatePath = _config.lookup("remote.ssl-crypto.cert");
config.sslPrivateKeyPath = _config.lookup("remote.ssl-crypto.key");
config.sslTempDhPath = _config.lookup("remote.ssl-crypto.dh");
config.dbPath = _config.lookup("main.db");
}
+3 -3
View File
@@ -36,9 +36,9 @@ remote = {
}
ssl-crypto = {
cert = "";
key = "";
dh = "";
cert = "/var/lms/certs/certRemote.pem";
key = "/var/lms/private/privkeyRemote.pem";
dh = "/var/lms/dh/dh2048.pem";
}
}
+9 -5
View File
@@ -9,14 +9,18 @@
namespace Remote {
namespace Server {
Server::Server(const endpoint_type& bindEndpoint, boost::filesystem::path dbPath)
Server::Server(const endpoint_type& bindEndpoint,
boost::filesystem::path certPath,
boost::filesystem::path privKeyPath,
boost::filesystem::path dhPath,
boost::filesystem::path dbPath)
:
_acceptor(_ioService, bindEndpoint, true /*SO_REUSEADDR*/),
_connectionManager(),
_context(boost::asio::ssl::context::tlsv1_server),
_dbPath(dbPath)
{
_ioService.setThreadCount(1);
_ioService.setThreadCount(1); // TODO parametrize
_context.set_options( boost::asio::ssl::context::default_workarounds // TODO check this thing
| boost::asio::ssl::context::single_dh_use
@@ -24,9 +28,9 @@ _dbPath(dbPath)
| boost::asio::ssl::context::no_sslv3
);
// context_.set_password_callback(boost::bind(&server::get_password, this));
_context.use_certificate_chain_file("cert.pem"); // TODO parametrize
_context.use_private_key_file("privkey.pem", boost::asio::ssl::context::pem); // TODO parametrize
_context.use_tmp_dh_file("dh2048.pem"); // TODO parametrize
_context.use_certificate_chain_file(certPath.string());
_context.use_private_key_file(privKeyPath.string(), boost::asio::ssl::context::pem);
_context.use_tmp_dh_file(dhPath.string());
}
void
+5 -1
View File
@@ -26,7 +26,11 @@ class Server
typedef boost::asio::ip::tcp::endpoint endpoint_type;
// Serve up data from the given database
Server(const endpoint_type& bindEndpoint, boost::filesystem::path dbPath);
Server(const endpoint_type& bindEndpoint,
boost::filesystem::path certPath,
boost::filesystem::path privKeyPath,
boost::filesystem::path dhPath,
boost::filesystem::path dbPath);
// Run the server's io_service loop.
void start();
+5 -1
View File
@@ -4,7 +4,11 @@
namespace Service {
RemoteServerService::RemoteServerService(const Config& config)
: _server(boost::asio::ip::tcp::endpoint(config.address, config.port), config.dbPath)
: _server(boost::asio::ip::tcp::endpoint(config.address, config.port),
config.sslCertificatePath,
config.sslPrivateKeyPath,
config.sslTempDhPath,
config.dbPath)
{
}
+3
View File
@@ -18,6 +18,9 @@ class RemoteServerService : public Service
bool enable;
boost::asio::ip::address address;
unsigned short port;
boost::filesystem::path sslCertificatePath;
boost::filesystem::path sslPrivateKeyPath;
boost::filesystem::path sslTempDhPath;
boost::filesystem::path dbPath;
};