bwi/v2.3.0 #29
@ -79,14 +79,15 @@ class Init : public AuthenticationStep {
|
|||||||
|
|
||||||
if(rublonStatus) {
|
if(rublonStatus) {
|
||||||
const auto & status = rublonStatus->GetString();
|
const auto & status = rublonStatus->GetString();
|
||||||
log(LogLevel::Warning, "Got enrolement message with stats %s", status);
|
|
||||||
if(status == "pending"sv) {
|
if(status == "pending"sv) {
|
||||||
if(rublonWebURI) {
|
if(rublonWebURI) {
|
||||||
pam.print("Visit %s", rublonWebURI->GetString());
|
pam.print("Visit %s", rublonWebURI->GetString());
|
||||||
}
|
}
|
||||||
} else if(status == "waiting"sv) {
|
} else if(status == "waiting"sv) {
|
||||||
|
log(LogLevel::Warning, "Got enrolement message with stats %s", status);
|
||||||
return tl::unexpected{Error{RublonAuthenticationInterrupt{RublonAuthenticationInterrupt::UserWaiting}}};
|
return tl::unexpected{Error{RublonAuthenticationInterrupt{RublonAuthenticationInterrupt::UserWaiting}}};
|
||||||
} else if(status == "denied"sv) {
|
} else if(status == "denied"sv) {
|
||||||
|
log(LogLevel::Warning, "Got enrolement message with stats %s", status);
|
||||||
return tl::unexpected{Error{RublonAuthenticationInterrupt{RublonAuthenticationInterrupt::UserDenied}}};
|
return tl::unexpected{Error{RublonAuthenticationInterrupt{RublonAuthenticationInterrupt::UserDenied}}};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -116,7 +116,7 @@ class WebSocket {
|
|||||||
ccinfo.pwsi = &wsi;
|
ccinfo.pwsi = &wsi;
|
||||||
ccinfo.userdata = this;
|
ccinfo.userdata = this;
|
||||||
|
|
||||||
log(LogLevel::Debug, "Created WS from %s", urlv.data());
|
log(LogLevel::Debug, "WebSocket Created connection to %s", urlv.data());
|
||||||
}
|
}
|
||||||
|
|
||||||
WebSocket(WebSocket && rhs) noexcept = default;
|
WebSocket(WebSocket && rhs) noexcept = default;
|
||||||
@ -140,20 +140,20 @@ class WebSocket {
|
|||||||
|
|
||||||
memcpy(buf + LWS_PRE, subscribe_message.data(), subscribe_message.size());
|
memcpy(buf + LWS_PRE, subscribe_message.data(), subscribe_message.size());
|
||||||
|
|
||||||
log(LogLevel::Debug, "WS send message: %s", subscribe_message.c_str());
|
log(LogLevel::Debug, "WebSocket send message: %s", subscribe_message.c_str());
|
||||||
int bytes_sent = lws_write(wsi, buf + LWS_PRE, subscribe_message.size(), LWS_WRITE_TEXT);
|
int bytes_sent = lws_write(wsi, buf + LWS_PRE, subscribe_message.size(), LWS_WRITE_TEXT);
|
||||||
|
|
||||||
log(LogLevel::Debug, "WS send: %d bytes", bytes_sent);
|
log(LogLevel::Debug, "WebSocket send: %d bytes", bytes_sent);
|
||||||
|
|
||||||
if(bytes_sent < ( int ) subscribe_message.size()) {
|
if(bytes_sent < ( int ) subscribe_message.size()) {
|
||||||
log(LogLevel::Error, "Failed to send subscribe message");
|
log(LogLevel::Error, "WebSocket failed to send subscribe message");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool AttachToCore(std::string_view tid) {
|
bool AttachToCore(std::string_view tid) {
|
||||||
log(LogLevel::Debug, "connecting to %s", ccinfo.address);
|
log(LogLevel::Debug, "WebSocket attaching to rublon api at %s", ccinfo.address);
|
||||||
lws_client_connect_via_info(&ccinfo);
|
lws_client_connect_via_info(&ccinfo);
|
||||||
|
|
||||||
const int seconds = 10;
|
const int seconds = 10;
|
||||||
@ -188,7 +188,7 @@ class WebSocket {
|
|||||||
const int seconds = 60;
|
const int seconds = 60;
|
||||||
auto endtime = std::chrono::steady_clock::now() + std::chrono::seconds{seconds};
|
auto endtime = std::chrono::steady_clock::now() + std::chrono::seconds{seconds};
|
||||||
|
|
||||||
log(LogLevel::Debug, "waiting for events for %d seconds", seconds);
|
log(LogLevel::Debug, "WebSocket waiting for events for %d seconds", seconds);
|
||||||
while(!event_received && std::chrono::steady_clock::now() < endtime) {
|
while(!event_received && std::chrono::steady_clock::now() < endtime) {
|
||||||
lws_service(context, 1000);
|
lws_service(context, 1000);
|
||||||
}
|
}
|
||||||
@ -214,7 +214,7 @@ class WebSocket {
|
|||||||
unsigned char buf[64]={};
|
unsigned char buf[64]={};
|
||||||
memcpy(&buf[LWS_PRE], handshake.data(), handshake.size());
|
memcpy(&buf[LWS_PRE], handshake.data(), handshake.size());
|
||||||
lws_write(wsi, &buf[LWS_PRE], handshake.size(), LWS_WRITE_TEXT);
|
lws_write(wsi, &buf[LWS_PRE], handshake.size(), LWS_WRITE_TEXT);
|
||||||
log(LogLevel::Debug, "Sent Socket.IO handshake");
|
log(LogLevel::Debug, "WebSocket Sent Socket.IO handshake");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -236,7 +236,7 @@ class WebSocket {
|
|||||||
/// TODO refactor to separate class
|
/// TODO refactor to separate class
|
||||||
if(_this->currentEvent == nullptr)
|
if(_this->currentEvent == nullptr)
|
||||||
return -1;
|
return -1;
|
||||||
log(LogLevel::Debug, "WS got %s", input.data());
|
log(LogLevel::Debug, "WebSocket got %s", input.data());
|
||||||
size_t startPos = input.find("[\"") + 2;
|
size_t startPos = input.find("[\"") + 2;
|
||||||
size_t endPos = input.find("\",", startPos);
|
size_t endPos = input.find("\",", startPos);
|
||||||
auto & event = *_this->currentEvent;
|
auto & event = *_this->currentEvent;
|
||||||
@ -267,19 +267,19 @@ class WebSocket {
|
|||||||
if(token != nullptr) {
|
if(token != nullptr) {
|
||||||
event.accessToken = token->GetString();
|
event.accessToken = token->GetString();
|
||||||
} else {
|
} else {
|
||||||
log(LogLevel::Error, "Response does not contain token");
|
log(LogLevel::Error, "WebSocket response does not contain access token");
|
||||||
}
|
}
|
||||||
_this->event_received = true;
|
_this->event_received = true;
|
||||||
} else if(redirectUrl != nullptr) {
|
} else if(redirectUrl != nullptr) {
|
||||||
log(LogLevel::Info, "Received deny message");
|
log(LogLevel::Info, "WebSocket received deny message");
|
||||||
_this->event_received = true;
|
_this->event_received = true;
|
||||||
} else {
|
} else {
|
||||||
log(LogLevel::Error, "event data incorrect");
|
log(LogLevel::Error, "WebSocket event data incorrect");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
log(LogLevel::Debug, "Not an confirmation event");
|
log(LogLevel::Debug, "WebSocket Not an confirmation event");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user