예제 #1
0
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;
}
예제 #2
0
파일: main.cpp 프로젝트: msng4t/network-etc
    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");
    }