forked from speed-dreams/speed-dreams-code
- Update webserver
- cmake option webserver true git-svn-id: https://svn.code.sf.net/p/speed-dreams/code/trunk@6517 30fe4595-0a0c-4342-8851-515496e4dcbd Former-commit-id: 7fe702744737106027a8148bc380af46fe9d9044 Former-commit-id: b494d10e1ed3e6f7d54b4fcd67bcda68627500ed
This commit is contained in:
parent
2a0a1f3dc5
commit
d16d4eaf76
3 changed files with 970 additions and 934 deletions
|
@ -84,7 +84,7 @@ MACRO(ADD_SD_COMPILE_OPTIONS)
|
||||||
SET(OPTION_SDL_JOYSTICK true CACHE BOOL "Use SDL for Joystick instead of PLIB")
|
SET(OPTION_SDL_JOYSTICK true CACHE BOOL "Use SDL for Joystick instead of PLIB")
|
||||||
CMAKE_DEPENDENT_OPTION(OPTION_SDL_FORCEFEEDBACK "Use SDL2 Haptics" true "OPTION_SDL_JOYSTICK;OPTION_SDL2" false)
|
CMAKE_DEPENDENT_OPTION(OPTION_SDL_FORCEFEEDBACK "Use SDL2 Haptics" true "OPTION_SDL_JOYSTICK;OPTION_SDL2" false)
|
||||||
|
|
||||||
SET(OPTION_WEBSERVER false CACHE BOOL "Build with WebServer functionality")
|
SET(OPTION_WEBSERVER true CACHE BOOL "Build with WebServer functionality")
|
||||||
|
|
||||||
SET(OPTION_CLIENT_SERVER false CACHE BOOL "Build with Client/Server network architecture")
|
SET(OPTION_CLIENT_SERVER false CACHE BOOL "Build with Client/Server network architecture")
|
||||||
|
|
||||||
|
|
|
@ -294,22 +294,21 @@ void NotificationManager::runAnimation(){
|
||||||
void NotificationManager::removeOldUi(){
|
void NotificationManager::removeOldUi(){
|
||||||
|
|
||||||
//if there is a prev screen
|
//if there is a prev screen
|
||||||
if( GfuiScreenIsActive(this->prevScreenHandle) ){
|
if( GfuiScreenIsActive(this->prevScreenHandle) )
|
||||||
|
{
|
||||||
//if there is some prev ui around hide it
|
//if there is some prev ui around hide it
|
||||||
if(this->notifyUiIdBg > 0){
|
if(this->notifyUiIdBg > 0)
|
||||||
|
{
|
||||||
GfuiVisibilitySet(this->prevScreenHandle, this->notifyUiIdBg, GFUI_INVISIBLE);
|
GfuiVisibilitySet(this->prevScreenHandle, this->notifyUiIdBg, GFUI_INVISIBLE);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//iterate trougth ui and set them invisible
|
//iterate trougth ui and set them invisible
|
||||||
for (int i = 0; i < notifyUiId.size(); i++) {
|
for (int i = 0; i < notifyUiId.size(); i++)
|
||||||
|
{
|
||||||
|
|
||||||
GfuiVisibilitySet(this->prevScreenHandle, this->notifyUiId[i], GFUI_INVISIBLE);
|
GfuiVisibilitySet(this->prevScreenHandle, this->notifyUiId[i], GFUI_INVISIBLE);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//delete the prev ui's
|
//delete the prev ui's
|
||||||
|
@ -317,8 +316,8 @@ void NotificationManager::removeOldUi(){
|
||||||
this->notifyUiIdBg=-1;
|
this->notifyUiIdBg=-1;
|
||||||
}
|
}
|
||||||
|
|
||||||
void NotificationManager::createUi(){
|
void NotificationManager::createUi()
|
||||||
|
{
|
||||||
//create the new UI
|
//create the new UI
|
||||||
this->notifyUiIdBg = GfuiMenuCreateStaticImageControl(this->screenHandle, this->menuXMLDescHdle, "slidebg");
|
this->notifyUiIdBg = GfuiMenuCreateStaticImageControl(this->screenHandle, this->menuXMLDescHdle, "slidebg");
|
||||||
GfuiVisibilitySet(this->screenHandle, this->notifyUiIdBg, GFUI_VISIBLE);
|
GfuiVisibilitySet(this->screenHandle, this->notifyUiIdBg, GFUI_VISIBLE);
|
||||||
|
@ -328,8 +327,8 @@ void NotificationManager::createUi(){
|
||||||
int yposmod= ypos;
|
int yposmod= ypos;
|
||||||
|
|
||||||
//iterate trougth lines
|
//iterate trougth lines
|
||||||
for (int i = 0; i < this->messageLines.size(); i++) {
|
for (int i = 0; i < this->messageLines.size(); i++)
|
||||||
|
{
|
||||||
int uiId;
|
int uiId;
|
||||||
uiId= GfuiMenuCreateLabelControl(this->screenHandle, this->menuXMLDescHdle, "slide");
|
uiId= GfuiMenuCreateLabelControl(this->screenHandle, this->menuXMLDescHdle, "slide");
|
||||||
|
|
||||||
|
@ -340,46 +339,40 @@ void NotificationManager::createUi(){
|
||||||
GfuiLabelSetText(this->screenHandle, uiId, this->messageLines[i].c_str());
|
GfuiLabelSetText(this->screenHandle, uiId, this->messageLines[i].c_str());
|
||||||
GfuiVisibilitySet(this->screenHandle, uiId, GFUI_VISIBLE);
|
GfuiVisibilitySet(this->screenHandle, uiId, GFUI_VISIBLE);
|
||||||
this->notifyUiId.push_back(uiId);
|
this->notifyUiId.push_back(uiId);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//reset ypos
|
//reset ypos
|
||||||
GfParmSetNum(this->menuXMLDescHdle, "dynamic controls/slide", "y", "null", ypos);
|
GfParmSetNum(this->menuXMLDescHdle, "dynamic controls/slide", "y", "null", ypos);
|
||||||
}
|
}
|
||||||
void NotificationManager::updateWebserverStatusUi(){
|
|
||||||
|
void NotificationManager::updateWebserverStatusUi()
|
||||||
|
{
|
||||||
//todo: this was causing some random crash
|
//todo: this was causing some random crash
|
||||||
//if there is some prev ui around hide it
|
//if there is some prev ui around hide it
|
||||||
if(this->notifyUiIdBusyIcon > 0 && this->screenHandle == this->prevScreenHandle){
|
if(this->notifyUiIdBusyIcon > 0 && this->screenHandle == this->prevScreenHandle)
|
||||||
|
{
|
||||||
GfuiVisibilitySet(this->prevScreenHandle, this->notifyUiIdBusyIcon, GFUI_INVISIBLE);
|
GfuiVisibilitySet(this->prevScreenHandle, this->notifyUiIdBusyIcon, GFUI_INVISIBLE);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if(this->screenHandle > 0){
|
if(this->screenHandle > 0)
|
||||||
|
{
|
||||||
//if webserver is not IDLE display busy icon (sending or receiving)
|
//if webserver is not IDLE display busy icon (sending or receiving)
|
||||||
if(webserverState != WEBSERVER_IDLE){
|
if(webserverState != WEBSERVER_IDLE)
|
||||||
|
{
|
||||||
std::string webServerIcon = "busyicon";
|
std::string webServerIcon = "busyicon";
|
||||||
webServerIcon.append(to_string(webserverState));
|
webServerIcon.append(to_string(webserverState));
|
||||||
|
|
||||||
this->notifyUiIdBusyIcon = GfuiMenuCreateStaticImageControl(this->screenHandle, this->menuXMLDescHdle, webServerIcon.c_str());
|
this->notifyUiIdBusyIcon = GfuiMenuCreateStaticImageControl(this->screenHandle, this->menuXMLDescHdle, webServerIcon.c_str());
|
||||||
GfuiVisibilitySet(this->screenHandle, this->notifyUiIdBusyIcon, GFUI_VISIBLE);
|
GfuiVisibilitySet(this->screenHandle, this->notifyUiIdBusyIcon, GFUI_VISIBLE);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
//initialize the notification manager
|
//initialize the notification manager
|
||||||
NotificationManager notifications;
|
NotificationManager notifications;
|
||||||
|
|
||||||
|
WebServer::WebServer()
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
WebServer::WebServer(){
|
|
||||||
|
|
||||||
//set some default
|
//set some default
|
||||||
this->raceId = -1;
|
this->raceId = -1;
|
||||||
this->userId = -1;
|
this->userId = -1;
|
||||||
|
@ -392,18 +385,19 @@ WebServer::WebServer(){
|
||||||
|
|
||||||
//initialize the configuration
|
//initialize the configuration
|
||||||
this->readConfiguration();
|
this->readConfiguration();
|
||||||
|
|
||||||
}
|
}
|
||||||
WebServer::~WebServer(){
|
|
||||||
|
|
||||||
|
WebServer::~WebServer()
|
||||||
|
{
|
||||||
//cleanup curl
|
//cleanup curl
|
||||||
curl_multi_cleanup(this->multi_handle);
|
curl_multi_cleanup(this->multi_handle);
|
||||||
|
|
||||||
}
|
}
|
||||||
int WebServer::updateAsyncStatus(){
|
|
||||||
|
|
||||||
|
int WebServer::updateAsyncStatus()
|
||||||
|
{
|
||||||
//if we have some ordered async request pending
|
//if we have some ordered async request pending
|
||||||
if( this->pendingAsyncRequestId == 0 && !this->orderedAsyncRequestQueque.empty() ){
|
if( this->pendingAsyncRequestId == 0 && !this->orderedAsyncRequestQueque.empty() )
|
||||||
|
{
|
||||||
webRequest_t nextRequest;
|
webRequest_t nextRequest;
|
||||||
nextRequest = this->orderedAsyncRequestQueque.front();
|
nextRequest = this->orderedAsyncRequestQueque.front();
|
||||||
|
|
||||||
|
@ -416,15 +410,17 @@ int WebServer::updateAsyncStatus(){
|
||||||
this->addAsyncRequest(nextRequest.data);
|
this->addAsyncRequest(nextRequest.data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//perform the pending requests
|
//perform the pending requests
|
||||||
curl_multi_perform(this->multi_handle, &this->handle_count);
|
curl_multi_perform(this->multi_handle, &this->handle_count);
|
||||||
|
|
||||||
if( this->handle_count > 0){
|
if( this->handle_count > 0)
|
||||||
|
{
|
||||||
GfLogInfo("WebServer: Number of async request waiting for a reply from the server: %i\n", this->handle_count);
|
GfLogInfo("WebServer: Number of async request waiting for a reply from the server: %i\n", this->handle_count);
|
||||||
//display some UI to the user to inform him we are waiting a reply from the server
|
//display some UI to the user to inform him we are waiting a reply from the server
|
||||||
webserverState=WEBSERVER_RECEIVING;
|
webserverState=WEBSERVER_RECEIVING;
|
||||||
}else{
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
webserverState=WEBSERVER_IDLE;
|
webserverState=WEBSERVER_IDLE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -434,12 +430,16 @@ int WebServer::updateAsyncStatus(){
|
||||||
int http_status_code;
|
int http_status_code;
|
||||||
const char *szUrl;
|
const char *szUrl;
|
||||||
|
|
||||||
while ((msg = curl_multi_info_read(this->multi_handle, &this->handle_count))) {
|
while ((msg = curl_multi_info_read(this->multi_handle, &this->handle_count)))
|
||||||
if (msg->msg == CURLMSG_DONE) {
|
{
|
||||||
|
if (msg->msg == CURLMSG_DONE)
|
||||||
|
{
|
||||||
eh = msg->easy_handle;
|
eh = msg->easy_handle;
|
||||||
|
|
||||||
return_code = msg->data.result;
|
return_code = msg->data.result;
|
||||||
if(return_code!=CURLE_OK) {
|
|
||||||
|
if(return_code!=CURLE_OK)
|
||||||
|
{
|
||||||
fprintf(stderr, "CURL error code: %d\n", msg->data.result);
|
fprintf(stderr, "CURL error code: %d\n", msg->data.result);
|
||||||
|
|
||||||
//something went wrong. anyway we are no more busy
|
//something went wrong. anyway we are no more busy
|
||||||
|
@ -457,7 +457,8 @@ int WebServer::updateAsyncStatus(){
|
||||||
curl_easy_getinfo(eh, CURLINFO_EFFECTIVE_URL, &szUrl);
|
curl_easy_getinfo(eh, CURLINFO_EFFECTIVE_URL, &szUrl);
|
||||||
|
|
||||||
//the server replyed
|
//the server replyed
|
||||||
if(http_status_code==200) {
|
if(http_status_code==200)
|
||||||
|
{
|
||||||
GfLogInfo("WebServer: successfull reply from the server from url: %s\n", szUrl);
|
GfLogInfo("WebServer: successfull reply from the server from url: %s\n", szUrl);
|
||||||
|
|
||||||
GfLogInfo("WebServer: The reply from the server is:\n%s\n", this->curlServerReply.c_str());
|
GfLogInfo("WebServer: The reply from the server is:\n%s\n", this->curlServerReply.c_str());
|
||||||
|
@ -467,9 +468,12 @@ int WebServer::updateAsyncStatus(){
|
||||||
void *xmlReply;
|
void *xmlReply;
|
||||||
xmlReply = GfParmReadBuf(const_cast<char*>(this->curlServerReply.c_str()));
|
xmlReply = GfParmReadBuf(const_cast<char*>(this->curlServerReply.c_str()));
|
||||||
|
|
||||||
if(GfParmExistsSection(xmlReply, "content")){
|
if(GfParmExistsSection(xmlReply, "content"))
|
||||||
|
{
|
||||||
int requestId = GfParmGetNum(xmlReply, "content", "request_id", "null",0);
|
int requestId = GfParmGetNum(xmlReply, "content", "request_id", "null",0);
|
||||||
if( requestId == this->pendingAsyncRequestId ){
|
|
||||||
|
if( requestId == this->pendingAsyncRequestId )
|
||||||
|
{
|
||||||
//reset the pending request id
|
//reset the pending request id
|
||||||
this->pendingAsyncRequestId=0;
|
this->pendingAsyncRequestId=0;
|
||||||
// remove this request from the queque... so we can continue with the next
|
// remove this request from the queque... so we can continue with the next
|
||||||
|
@ -478,11 +482,13 @@ int WebServer::updateAsyncStatus(){
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//the server want we display something?
|
//the server want we display something?
|
||||||
if(GfParmExistsSection(xmlReply, "content/reply/messages")){
|
if(GfParmExistsSection(xmlReply, "content/reply/messages"))
|
||||||
|
{
|
||||||
int msgsCount = GfParmGetNum(xmlReply, "content/reply/messages", "number", "null",0);
|
int msgsCount = GfParmGetNum(xmlReply, "content/reply/messages", "number", "null",0);
|
||||||
if( msgsCount > 0 ){
|
|
||||||
|
if( msgsCount > 0 )
|
||||||
|
{
|
||||||
for( int dispatchedMsgs = 0; dispatchedMsgs < msgsCount; dispatchedMsgs = dispatchedMsgs + 1 )
|
for( int dispatchedMsgs = 0; dispatchedMsgs < msgsCount; dispatchedMsgs = dispatchedMsgs + 1 )
|
||||||
{
|
{
|
||||||
std::string msgTag = "message";
|
std::string msgTag = "message";
|
||||||
|
@ -496,8 +502,10 @@ int WebServer::updateAsyncStatus(){
|
||||||
|
|
||||||
//race reply
|
//race reply
|
||||||
//store the webServer assigned race id
|
//store the webServer assigned race id
|
||||||
if(GfParmExistsSection(xmlReply, "content/reply/races")){
|
if(GfParmExistsSection(xmlReply, "content/reply/races"))
|
||||||
if(GfParmGetNum(xmlReply, "content/reply/races", "id", "null", 0) != 0){
|
{
|
||||||
|
if(GfParmGetNum(xmlReply, "content/reply/races", "id", "null", 0) != 0)
|
||||||
|
{
|
||||||
this->raceId = (int)GfParmGetNum(xmlReply, "content/reply/races", "id", "null", 0);
|
this->raceId = (int)GfParmGetNum(xmlReply, "content/reply/races", "id", "null", 0);
|
||||||
GfLogInfo("WebServer: Assigned raceId by the server is: %i\n", this->raceId);
|
GfLogInfo("WebServer: Assigned raceId by the server is: %i\n", this->raceId);
|
||||||
}
|
}
|
||||||
|
@ -505,31 +513,41 @@ int WebServer::updateAsyncStatus(){
|
||||||
|
|
||||||
//login reply
|
//login reply
|
||||||
//store the webServer assigned race id
|
//store the webServer assigned race id
|
||||||
if(GfParmExistsSection(xmlReply, "content/reply/login")){
|
if(GfParmExistsSection(xmlReply, "content/reply/login"))
|
||||||
if(GfParmGetNum(xmlReply, "content/reply/login", "id", "null",0) != 0){
|
{
|
||||||
|
if(GfParmGetNum(xmlReply, "content/reply/login", "id", "null",0) != 0)
|
||||||
|
{
|
||||||
//store the webServer session and id assigned
|
//store the webServer session and id assigned
|
||||||
this->sessionId = GfParmGetStr(xmlReply, "content/reply/login", "sessionid", "null");
|
this->sessionId = GfParmGetStr(xmlReply, "content/reply/login", "sessionid", "null");
|
||||||
this->userId = GfParmGetNum(xmlReply, "content/reply/login", "id", "null",0);
|
this->userId = GfParmGetNum(xmlReply, "content/reply/login", "id", "null",0);
|
||||||
GfLogInfo("WebServer: Successfull Login as userId: %i\n", this->userId);
|
GfLogInfo("WebServer: Successfull Login as userId: %i\n", this->userId);
|
||||||
}else{
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
GfLogInfo("WebServer: Login Failed: Wrong username or password.\n");
|
GfLogInfo("WebServer: Login Failed: Wrong username or password.\n");
|
||||||
notifications.msglist.push_back("WebServer: Login Failed: Wrong username or password.");
|
notifications.msglist.push_back("WebServer: Login Failed: Wrong username or password.");
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
GfLogInfo("WebServer: Assigned session id is: %s\n", this->sessionId);
|
GfLogInfo("WebServer: Assigned session id is: %s\n", this->sessionId);
|
||||||
}
|
}
|
||||||
|
|
||||||
//empty the string
|
//empty the string
|
||||||
this->curlServerReply.clear();
|
this->curlServerReply.clear();
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
fprintf(stderr, "GET of %s returned http status code %d\n", szUrl, http_status_code);
|
fprintf(stderr, "GET of %s returned http status code %d\n", szUrl, http_status_code);
|
||||||
}
|
}
|
||||||
|
|
||||||
curl_multi_remove_handle(this->multi_handle, eh);
|
curl_multi_remove_handle(this->multi_handle, eh);
|
||||||
curl_easy_cleanup(eh);
|
curl_easy_cleanup(eh);
|
||||||
/* then cleanup the formpost chain */
|
/* then cleanup the formpost chain */
|
||||||
//curl_formfree(formpost);
|
//curl_formfree(formpost);
|
||||||
}
|
}
|
||||||
else {
|
else
|
||||||
|
{
|
||||||
fprintf(stderr, "error: after curl_multi_info_read(), CURLMsg=%d\n", msg->msg);
|
fprintf(stderr, "error: after curl_multi_info_read(), CURLMsg=%d\n", msg->msg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -537,7 +555,8 @@ int WebServer::updateAsyncStatus(){
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int WebServer::addAsyncRequest(std::string const data){
|
int WebServer::addAsyncRequest(std::string const data)
|
||||||
|
{
|
||||||
GfLogInfo("WebServer: Performing ASYNC request:\n%s\n", data.c_str());
|
GfLogInfo("WebServer: Performing ASYNC request:\n%s\n", data.c_str());
|
||||||
|
|
||||||
CURL* curl = NULL;
|
CURL* curl = NULL;
|
||||||
|
@ -545,8 +564,9 @@ int WebServer::addAsyncRequest(std::string const data){
|
||||||
struct curl_httppost *lastptr=NULL;
|
struct curl_httppost *lastptr=NULL;
|
||||||
|
|
||||||
curl = curl_easy_init();
|
curl = curl_easy_init();
|
||||||
if(curl) {
|
|
||||||
|
|
||||||
|
if(curl)
|
||||||
|
{
|
||||||
//set url to be called
|
//set url to be called
|
||||||
curl_easy_setopt(curl, CURLOPT_URL, this->url);
|
curl_easy_setopt(curl, CURLOPT_URL, this->url);
|
||||||
|
|
||||||
|
@ -580,7 +600,9 @@ int WebServer::addAsyncRequest(std::string const data){
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
int WebServer::addOrderedAsyncRequest(std::string data){
|
|
||||||
|
int WebServer::addOrderedAsyncRequest(std::string data)
|
||||||
|
{
|
||||||
//prepare the request object
|
//prepare the request object
|
||||||
webRequest_t request;
|
webRequest_t request;
|
||||||
|
|
||||||
|
@ -590,10 +612,12 @@ int WebServer::addOrderedAsyncRequest(std::string data){
|
||||||
replaceAll(request.data, "{{request_id}}", to_string(request.id));
|
replaceAll(request.data, "{{request_id}}", to_string(request.id));
|
||||||
|
|
||||||
this->orderedAsyncRequestQueque.push_back(request);
|
this->orderedAsyncRequestQueque.push_back(request);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int WebServer::sendGenericRequest (std::string data, std::string& serverReply){
|
int WebServer::sendGenericRequest (std::string data, std::string& serverReply)
|
||||||
|
{
|
||||||
CURL *curl;
|
CURL *curl;
|
||||||
CURLcode res;
|
CURLcode res;
|
||||||
|
|
||||||
|
@ -607,8 +631,9 @@ int WebServer::sendGenericRequest (std::string data, std::string& serverReply){
|
||||||
|
|
||||||
curl_global_init(CURL_GLOBAL_ALL);
|
curl_global_init(CURL_GLOBAL_ALL);
|
||||||
curl = curl_easy_init();
|
curl = curl_easy_init();
|
||||||
if(curl) {
|
|
||||||
|
|
||||||
|
if(curl)
|
||||||
|
{
|
||||||
curl_easy_setopt(curl, CURLOPT_URL, this->url);
|
curl_easy_setopt(curl, CURLOPT_URL, this->url);
|
||||||
|
|
||||||
// send all data to this function
|
// send all data to this function
|
||||||
|
@ -631,13 +656,14 @@ int WebServer::sendGenericRequest (std::string data, std::string& serverReply){
|
||||||
res = curl_easy_perform(curl);
|
res = curl_easy_perform(curl);
|
||||||
|
|
||||||
// Check for errors
|
// Check for errors
|
||||||
if(res != CURLE_OK) {
|
if(res != CURLE_OK)
|
||||||
|
{
|
||||||
notifications.msglist.push_back("Failed to connect to the WebServer!");
|
notifications.msglist.push_back("Failed to connect to the WebServer!");
|
||||||
GfLogInfo("WebServer: Unable to perform SYNC request some error occured:\n", data.c_str());
|
GfLogInfo("WebServer: Unable to perform SYNC request some error occured:\n", data.c_str());
|
||||||
fprintf(stderr, "curl_easy_perform() failed: %s\n",
|
fprintf(stderr, "curl_easy_perform() failed: %s\n", curl_easy_strerror(res));
|
||||||
curl_easy_strerror(res));
|
|
||||||
}
|
}
|
||||||
else {
|
else
|
||||||
|
{
|
||||||
//
|
//
|
||||||
// Now, our this->curlServerReply
|
// Now, our this->curlServerReply
|
||||||
// contains the remote file (aka serverReply).
|
// contains the remote file (aka serverReply).
|
||||||
|
@ -661,13 +687,14 @@ int WebServer::sendGenericRequest (std::string data, std::string& serverReply){
|
||||||
// we're done with libcurl, so clean it up
|
// we're done with libcurl, so clean it up
|
||||||
curl_global_cleanup();
|
curl_global_cleanup();
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void WebServer::readConfiguration (){
|
void WebServer::readConfiguration ()
|
||||||
|
{
|
||||||
void *configHandle;
|
//void *configHandle;
|
||||||
char configFileUrl[256];
|
//char configFileUrl[256];
|
||||||
/*
|
/*
|
||||||
//get the preferencies file location
|
//get the preferencies file location
|
||||||
sprintf(configFileUrl, "%s%s", GfLocalDir(), "config/webserver.xml");
|
sprintf(configFileUrl, "%s%s", GfLocalDir(), "config/webserver.xml");
|
||||||
|
@ -680,12 +707,14 @@ void WebServer::readConfiguration (){
|
||||||
*/
|
*/
|
||||||
|
|
||||||
this->url ="http://www.madbad.altervista.org/speed-dreams/webserver.php";
|
this->url ="http://www.madbad.altervista.org/speed-dreams/webserver.php";
|
||||||
|
//this->url ="http://masterserver.speed-dreams.fr/webserver.php";
|
||||||
// this->url ="http://localhost/speed-dreams/webserver.php";
|
// this->url ="http://localhost/speed-dreams/webserver.php";
|
||||||
|
|
||||||
//GfLogInfo("WebServer - webserver url is: %s\n", this->url);
|
//GfLogInfo("WebServer - webserver url is: %s\n", this->url);
|
||||||
}
|
}
|
||||||
|
|
||||||
int WebServer::readUserConfig (int userId){
|
int WebServer::readUserConfig (int userId)
|
||||||
|
{
|
||||||
void *prHandle;
|
void *prHandle;
|
||||||
char prefFileUrl[256];
|
char prefFileUrl[256];
|
||||||
char xmlPath[256];
|
char xmlPath[256];
|
||||||
|
@ -708,7 +737,8 @@ int WebServer::readUserConfig (int userId){
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int WebServer::sendLogin (int userId){
|
int WebServer::sendLogin (int userId)
|
||||||
|
{
|
||||||
std::string serverReply;
|
std::string serverReply;
|
||||||
|
|
||||||
//read username and password and save it in as webserver properties
|
//read username and password and save it in as webserver properties
|
||||||
|
@ -745,7 +775,9 @@ int WebServer::sendLogin (int userId){
|
||||||
*/
|
*/
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
int WebServer::sendLogin (const char* username, const char* password){
|
|
||||||
|
int WebServer::sendLogin (const char* username, const char* password)
|
||||||
|
{
|
||||||
std::string serverReply;
|
std::string serverReply;
|
||||||
|
|
||||||
//prepare the string to send
|
//prepare the string to send
|
||||||
|
@ -769,7 +801,9 @@ int WebServer::sendLogin (const char* username, const char* password){
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
int WebServer::sendLap (int race_id, double laptime, double fuel, int position, int wettness){
|
|
||||||
|
int WebServer::sendLap (int race_id, double laptime, double fuel, int position, int wettness)
|
||||||
|
{
|
||||||
/*
|
/*
|
||||||
//Do some sanity-checks befor proceding... If something is wrong do nothing
|
//Do some sanity-checks befor proceding... If something is wrong do nothing
|
||||||
//are we logged in?
|
//are we logged in?
|
||||||
|
@ -811,7 +845,9 @@ int WebServer::sendLap (int race_id, double laptime, double fuel, int position,
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
int WebServer::sendRaceStart (int user_skill, const char *track_id, char *car_id, int type, void *setup, int startposition, const char *sdversion){
|
|
||||||
|
int WebServer::sendRaceStart (int user_skill, const char *track_id, char *car_id, int type, void *setup, int startposition, const char *sdversion)
|
||||||
|
{
|
||||||
std::string serverReply;
|
std::string serverReply;
|
||||||
std::string mysetup;
|
std::string mysetup;
|
||||||
std::string dataToSend;
|
std::string dataToSend;
|
||||||
|
@ -863,7 +899,9 @@ int WebServer::sendRaceStart (int user_skill, const char *track_id, char *car_id
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
int WebServer::sendRaceEnd (int race_id, int endposition){
|
|
||||||
|
int WebServer::sendRaceEnd (int race_id, int endposition)
|
||||||
|
{
|
||||||
std::string serverReply;
|
std::string serverReply;
|
||||||
|
|
||||||
//Do some sanity-checks befor proceding... If something is wrong do nothing
|
//Do some sanity-checks befor proceding... If something is wrong do nothing
|
||||||
|
@ -910,5 +948,3 @@ int WebServer::sendRaceEnd (int race_id, int endposition){
|
||||||
//initialize the web server
|
//initialize the web server
|
||||||
TGFCLIENT_API WebServer webServer;
|
TGFCLIENT_API WebServer webServer;
|
||||||
#endif //WEBSERVER
|
#endif //WEBSERVER
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue