bool CGenericServer::Authenticate(const CString& user_name,const CString& password,const CString* key) { char buff[MAX_URL_LENGTH]; CDataBuffer raw_data; int len,s_port; CString s_address; //create request CHttpRequest request; request.SetMethod(GET_M); request.SetRequestURI(EIB_CLIENT_AUTHENTICATE); request.SetVersion(HTTP_1_0); request.AddHeader(USER_NAME_HEADER,user_name); request.AddHeader(PASSWORD_HEADER,password); request.Finalize(raw_data); raw_data.Encrypt(key); //send the request _data_sock.SendTo(raw_data.GetBuffer(),raw_data.GetLength(),_eib_address,_eib_port); GetLog()->SetConsoleColor(YELLOW); GetLog()->Log(LOG_LEVEL_INFO,"[%s] [Send] Client Authentication",GetUserName().GetBuffer()); //wait for reply len = _data_sock.RecvFrom(buff,MAX_URL_LENGTH,s_address,s_port,2000); CDataBuffer raw_reply(buff,len); raw_reply.Decrypt(key); CHttpReply reply; CHttpParser parser(reply,raw_reply); if(!parser.IsLegalRequest() || reply.GetStatusCode() != STATUS_OK){ return false; } CHttpHeader mode_h; if(!reply.GetHeader(EIB_INTERFACE_MODE, mode_h)){ GetLog()->Log(LOG_LEVEL_ERROR, "Missing header from reply: %s", EIB_INTERFACE_MODE); return false; } _ifc_mode = (EIB_DEVICE_MODE)mode_h.GetValue().ToInt(); CString mode; switch(_ifc_mode) { case MODE_TUNNELING: mode = "Tunneling"; break; case MODE_BUSMONITOR: mode = "Bus Monitor"; break; case MODE_ROUTING: mode = "Routing"; break; case UNDEFINED_MODE: mode = "Undefined"; break; } GetLog()->SetConsoleColor(YELLOW); GetLog()->Log(LOG_LEVEL_DEBUG, "Remote EIB Device Mode: %s", mode.GetBuffer()); GetLog()->Log(LOG_LEVEL_INFO,"[EIB] [Received] Client Authentication OK"); return true; }
void Init() { CHttpRequest loRequest; // loRequest.SetMethod("PUT"); // loRequest.SetRequestURI("/v2/keys/message"); loRequest.SetMethod("GET"); loRequest.SetRequestURI("/v2/keys/foo_dir?wait=true&recursive=true&waitIndex=305"); loRequest.SetRequestURI("/"); loRequest.SetHttpVersion("1.1"); loRequest.SetHeader("User-Agent", "User-Agent: curl/7.29.0"); loRequest.SetHeader("Host", "121.14.39.195:18080"); loRequest.SetHeader("Accept", "*/*"); // loRequest.SetHeader("Content-Length", "9"); // loRequest.SetHeader("Content-Type", "application/x-www-form-urlencoded"); // loRequest.SetBody("value=bar"); // loRequest.SetBody(""); moBlock.Resize(1024); loRequest.EncodeMessage(&moBlock); printf("%s\n", moBlock.GetRead()); printf("_____\n"); }