Changeset - d0d08adf5a6e
[Not reviewed]
0 6 0
Jan Kaluza - 10 years ago 2016-01-20 08:20:45
jkaluza@redhat.com
Web interface: allow using service.cert PEM certificate to enable SSL support.
6 files changed with 34 insertions and 1 deletions:
0 comments (0 inline, 0 general)
spectrum_manager/src/CMakeLists.txt
Show inline comments
 
@@ -8,6 +8,11 @@ SET_SOURCE_FILES_PROPERTIES(${CMAKE_CURRENT_SOURCE_DIR}/../../include/transport/
 

	
 
target_link_libraries(spectrum2_manager transport ${SWIFTEN_LIBRARY} ${PROTOBUF_LIBRARIES})
 

	
 
if (CMAKE_COMPILER_IS_GNUCXX)
 
add_definitions(-DMG_ENABLE_SSL)
 
target_link_libraries(spectrum2_manager ${OPENSSL_LIBRARIES})
 
endif()
 

	
 
if(APPLE)
 
target_link_libraries(spectrum2_manager transport ${APPLE_FRAMEWORKS})
 
endif()
spectrum_manager/src/html/js/app.js
Show inline comments
 
@@ -18,6 +18,9 @@ function show_instances() {
 
			else if (admin) {
 
				var command = "start";
 
			}
 
			else {
 
				var command = "";
 
			}
 
			var row = '<tr>'
 
			row += '<td>' + instance.name + '</td>'
 
			row += '<td>' + instance.status + '</td>'
 
@@ -26,8 +29,13 @@ function show_instances() {
 
				row += '<td><a class="button_command" href="/instances/register.shtml?id=' + instance.id + '">' + command + '</a>' + '</td></tr>';
 
				$("#main_result  > tbody:last-child").append(row);
 
			}
 
			else if (command == "") {
 
				row += '<td></td></tr>';
 
				$("#main_result  > tbody:last-child").append(row);
 
			}
 
			else {
 
				row += '<td><a class="button_command" href="/api/v1/instances/' + command + '/' + instance.id + '">' + command + '</a>' + '</td></tr>';
 
				$("#main_result  > tbody:last-child").append(row);
 
				$(".button_command").click(function(e) {
 
					e.preventDefault();
 
					$(this).parent().empty().progressbar( {value: false} ).css('height', '1em');
spectrum_manager/src/managerconfig.cpp
Show inline comments
 
@@ -32,6 +32,7 @@ bool ManagerConfig::load(const std::string &configfile, boost::program_options::
 
		("service.admin_username", value<std::string>()->default_value(""), "Administrator username.")
 
		("service.admin_password", value<std::string>()->default_value(""), "Administrator password.")
 
		("service.port", value<int>()->default_value(8081), "Web interface port.")
 
		("service.cert", value<std::string>()->default_value(""), "Web interface certificate in PEM format when TLS should be used.")
 
		("service.config_directory", value<std::string>()->default_value("/etc/spectrum2/transports/"), "Directory with spectrum2 configuration files. One .cfg file per one instance")
 
		("service.data_dir", value<std::string>()->default_value("/var/lib/spectrum2_manager/html"), "Directory to store Spectrum 2 manager data")
 
		("servers.server", value<std::vector<std::string> >()->multitoken(), "Server.")
spectrum_manager/src/mongoose.c
Show inline comments
 
@@ -2228,6 +2228,7 @@ static int mg_use_cert(SSL_CTX *ctx, const char *pem_file) {
 
    return 0;
 
  } else if (SSL_CTX_use_certificate_file(ctx, pem_file, 1) == 0 ||
 
             SSL_CTX_use_PrivateKey_file(ctx, pem_file, 1) == 0) {
 
	  ERR_print_errors_fp(stderr);
 
    return -2;
 
  } else {
 
#ifndef MG_DISABLE_PFS
spectrum_manager/src/mongoose.h
Show inline comments
 
@@ -644,6 +644,7 @@ int json_emit_va(char *buf, int buf_len, const char *fmt, va_list);
 
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
 
#endif
 
#include <openssl/ssl.h>
 
#include <openssl/err.h>
 
#else
 
typedef void *SSL;
 
typedef void *SSL_CTX;
spectrum_manager/src/server.cpp
Show inline comments
 
@@ -63,7 +63,24 @@ Server::Server(ManagerConfig *config, const std::string &config_file) {
 
	m_password = CONFIG_STRING(m_config, "service.admin_password");
 

	
 
	mg_mgr_init(&m_mgr, this);
 
	m_nc = mg_bind(&m_mgr, std::string(":" + boost::lexical_cast<std::string>(CONFIG_INT(m_config, "service.port"))).c_str(), &_event_handler);
 

	
 
	struct mg_bind_opts opts;
 
	memset(&opts, 0, sizeof(opts));
 
	const char *error_string;
 
	opts.error_string = &error_string;
 
	m_nc = mg_bind_opt(&m_mgr, std::string(":" + boost::lexical_cast<std::string>(CONFIG_INT(m_config, "service.port"))).c_str(), &_event_handler, opts);
 
	if (!m_nc) {
 
		std::cerr << "Error creating server: " << error_string << "\n";
 
		exit(1);
 
	}
 

	
 
	if (!CONFIG_STRING(m_config, "service.cert").empty()) {
 
		const char *err_str = mg_set_ssl(m_nc, CONFIG_STRING(m_config, "service.cert").c_str(), NULL);
 
		if (err_str) {
 
			std::cerr << "Error setting SSL certificate: " << err_str << "\n";
 
			exit(1);
 
		}
 
	}
 
	mg_set_protocol_http_websocket(m_nc);
 

	
 
	s_http_server_opts.document_root = CONFIG_STRING(m_config, "service.data_dir").c_str();
0 comments (0 inline, 0 general)