60 lines
1.3 KiB
C++
Executable file
60 lines
1.3 KiB
C++
Executable file
//
|
|
// redirect.cc
|
|
//
|
|
// Copyright (c) 2019 Yuji Hirose. All rights reserved.
|
|
// MIT License
|
|
//
|
|
|
|
#include <httplib.h>
|
|
|
|
#define SERVER_CERT_FILE "./cert.pem"
|
|
#define SERVER_PRIVATE_KEY_FILE "./key.pem"
|
|
|
|
using namespace httplib;
|
|
|
|
int main(void) {
|
|
// HTTP server
|
|
Server http;
|
|
#ifdef CPPHTTPLIB_OPENSSL_SUPPORT
|
|
SSLServer https(SERVER_CERT_FILE, SERVER_PRIVATE_KEY_FILE);
|
|
#endif
|
|
|
|
http.Get("/test", [](const Request & /*req*/, Response &res) {
|
|
res.set_content("Test\n", "text/plain");
|
|
});
|
|
|
|
http.set_error_handler([](const Request & /*req*/, Response &res) {
|
|
res.set_redirect("https://localhost:8081/");
|
|
});
|
|
|
|
// HTTPS server
|
|
#ifdef CPPHTTPLIB_OPENSSL_SUPPORT
|
|
https.Get("/", [=](const Request & /*req*/, Response &res) {
|
|
res.set_redirect("/hi");
|
|
});
|
|
|
|
https.Get("/hi", [](const Request & /*req*/, Response &res) {
|
|
res.set_content("Hello World!\n", "text/plain");
|
|
});
|
|
|
|
https.Get("/stop", [&](const Request & /*req*/, Response & /*res*/) {
|
|
https.stop();
|
|
http.stop();
|
|
});
|
|
#endif
|
|
|
|
// Run servers
|
|
auto httpThread = std::thread([&]() { http.listen("localhost", 8080); });
|
|
|
|
#ifdef CPPHTTPLIB_OPENSSL_SUPPORT
|
|
auto httpsThread = std::thread([&]() { https.listen("localhost", 8081); });
|
|
#endif
|
|
|
|
httpThread.join();
|
|
|
|
#ifdef CPPHTTPLIB_OPENSSL_SUPPORT
|
|
httpsThread.join();
|
|
#endif
|
|
|
|
return 0;
|
|
}
|