1 #include <dbus/connection.hpp> 2 #include <dbus_monitor.hpp> 3 #include <dbus_singleton.hpp> 4 #include <intel_oem.hpp> 5 #include <openbmc_dbus_rest.hpp> 6 #include <persistent_data_middleware.hpp> 7 #include <redfish_v1.hpp> 8 #include <security_headers_middleware.hpp> 9 #include <ssl_key_handler.hpp> 10 #include <token_authorization_middleware.hpp> 11 #include <web_kvm.hpp> 12 #include <webassets.hpp> 13 #include <memory> 14 #include <string> 15 #include <crow/app.h> 16 #include <boost/asio.hpp> 17 #include "redfish.hpp" 18 19 int main(int argc, char** argv) { 20 auto io = std::make_shared<boost::asio::io_service>(); 21 crow::App<crow::PersistentData::Middleware, 22 crow::TokenAuthorization::Middleware, 23 crow::SecurityHeadersMiddleware> 24 app(io); 25 26 #ifdef CROW_ENABLE_SSL 27 std::string ssl_pem_file("server.pem"); 28 std::cout << "Building SSL context\n"; 29 30 ensuressl::ensure_openssl_key_present_and_valid(ssl_pem_file); 31 std::cout << "SSL Enabled\n"; 32 auto ssl_context = ensuressl::get_ssl_context(ssl_pem_file); 33 app.ssl(std::move(ssl_context)); 34 #endif 35 // Static assets need to be initialized before Authorization, because auth 36 // needs to build the whitelist from the static routes 37 crow::webassets::request_routes(app); 38 crow::TokenAuthorization::request_routes(app); 39 40 crow::kvm::request_routes(app); 41 crow::redfish::request_routes(app); 42 crow::dbus_monitor::request_routes(app); 43 crow::intel_oem::request_routes(app); 44 crow::openbmc_mapper::request_routes(app); 45 46 crow::logger::setLogLevel(crow::LogLevel::INFO); 47 int port = 18080; 48 std::cout << "Starting webserver on port " << port << "\n"; 49 app.port(port); 50 51 // Start dbus connection 52 crow::connections::system_bus = 53 std::make_shared<dbus::connection>(*io, dbus::bus::system); 54 55 redfish::RedfishService redfish(app); 56 57 app.run(); 58 } 59