示例#1
0
int cServerDC::OnNewConn(cAsyncConn *nc)
{
	cConnDC *conn = (cConnDC *)nc;
	if (!conn) return -1;

	#ifndef WITHOUT_PLUGINS
	if (!mCallBacks.mOnNewConn.CallAll(conn)) return -1;
	#endif

	string omsg;
	omsg = "$Lock EXTENDEDPROTOCOL_" LOCK_VERSION " Pk=version" VERSION;
	conn->Send(omsg, true);
	SendHeaders(conn, 2);

	if (mSysLoad >= eSL_RECOVERY) {
		stringstream os;
		os << _("The hub is currently unable to service your request. Please try again in a few minutes.");
		DCPublicHS(os.str(), conn);
		conn->CloseNice(500, eCR_HUB_LOAD);
		return -1;
	}

	conn->SetTimeOut(eTO_KEY, mC.timeout_length[eTO_KEY], mTime);
	return 0;
}
void XaLibControllerBackEnd::SendResponse(){

		LOG.Write("INF", __FILE__, __FUNCTION__,__LINE__,"RESPONSE="+RESPONSE.Content);

		SendHeaders(RESPONSE.ResponseType);
		cout<<"<WsData><token>"+SESSION.Token+"</token>"+RESPONSE.Content+"</WsData>"<<endl;
};
示例#3
0
	void SendHTTPError(int response)
	{
		HTTPHeaders empty;
		std::string data = "<html><head></head><body>Server error "+ConvToStr(response)+": "+Response(response)+"<br>"+
		                   "<small>Powered by <a href='http://www.inspircd.org'>InspIRCd</a></small></body></html>";

		SendHeaders(data.length(), response, empty);
		WriteData(data);
	}
示例#4
0
ErrnoError HttpClient::SendError(common::http::http_protocol protocol,
                                 common::http::http_status status,
                                 const char* extra_header,
                                 const char* text,
                                 bool is_keep_alive,
                                 const HttpServerInfo& info) {
  CHECK(protocol <= common::http::HP_1_1);
  const std::string title = ConvertToString(status);

  char err_data[1024] = {0};
  off_t err_len = SNPrintf(err_data, sizeof(err_data), HTML_PATTERN_ISISSSS7, status, title, status, title, text,
                           info.server_url, info.server_name);
  ErrnoError err = SendHeaders(protocol, status, extra_header, "text/html", &err_len, nullptr, is_keep_alive, info);
  if (err) {
    DEBUG_MSG_ERROR(err, logging::LOG_LEVEL_ERR);
  }

  size_t nwrite = 0;
  err = Write(err_data, err_len, &nwrite);
  if (err) {
    DEBUG_MSG_ERROR(err, logging::LOG_LEVEL_ERR);
  }
  return err;
}
示例#5
0
void XaLibControllerFrontEnd::SendResponse() {

    LOG.Write("INF", __FILE__, __FUNCTION__,__LINE__,"Sending Response Page Content -> " +RESPONSE.Content);
    SendHeaders(RESPONSE.ResponseType);
    cout<<RESPONSE.Content<<endl;
};
示例#6
0
void cServerDC::DoUserLogin(cConnDC *conn)
{
	// verify we didn't get here by chance
	if(eLS_LOGIN_DONE != conn->GetLSFlag(eLS_LOGIN_DONE)) {
		if(conn->ErrLog(2))
			conn->LogStream() << "User Login when not all done"<<endl;
		conn->CloseNow();
		return;
	}

	// check if same nick already exists
	if (!VerifyUniqueNick(conn))
		return;

	// he is not anymore in progress
	if (mInProgresUsers.ContainsNick(conn->mpUser->mNick)) {
		mInProgresUsers.FlushForUser(conn->mpUser);
		mInProgresUsers.Remove(conn->mpUser);
	}

	// anti login flood temp bans
	if (conn->GetTheoricalClass() <= mC.max_class_int_login) {
		mBanList->AddNickTempBan(conn->mpUser->mNick, mTime.Sec() + mC.int_login, "login later");
		mBanList->AddIPTempBan(conn->GetSockAddress(), mTime.Sec() + mC.int_login, "login later");
	}

	// users special rights and restrictions
	cPenaltyList::sPenalty pen;
	if (mPenList->LoadTo(pen, conn->mpUser->mNick) && (conn->mpUser->mClass != eUC_PINGER))
		conn->mpUser->ApplyRights(pen);

	// insert user to userlist
	if(!AddToList(conn->mpUser)) {
		conn->CloseNow();
		return;
	}

	// display user to others
	ShowUserToAll(conn->mpUser);

	if(mC.send_user_ip) {
		if(conn->mpUser->mClass >= eUC_OPERATOR) {
 			conn->Send(mUserList.GetIPList(),true);
		} else {
			string UserIP;
			cCompositeUserCollection::ufDoIpList DoUserIP(UserIP);
			DoUserIP.Clear();
			DoUserIP(conn->mpUser);
			mOpchatList.SendToAll(UserIP, true, true);
			conn->Send(UserIP);
		}
	}

	if (!mC.hub_topic.empty()) { // send hub name with topic
		static string omsg;
		cDCProto::Create_HubName(omsg, mC.hub_name, mC.hub_topic);

		#ifndef WITHOUT_PLUGINS
		if (mCallBacks.mOnHubName.CallAll(conn->mpUser->mNick, omsg))
		#endif
		{
			conn->Send(omsg);
		}
	}

	SendHeaders(conn, 1);
	AfterUserLogin(conn);
	conn->ClearTimeOut(eTO_LOGIN);
	conn->mpUser->mT.login.Get();
}
示例#7
0
void RequestOKResponse::Send(Print& sink) {
  sink.print(F("HTTP/1.1 200 OK\r\n"));
  SendHeaders(sink);
  SendBodyStart(sink);
}
示例#8
0
void RouteNotFoundResponse::Send(Print& sink) {
  sink.print(F("HTTP/1.1 404 NOT FOUND\r\n"));
  SendHeaders(sink);
  SendBodyStart(sink);
  sink.print(F("<html><head><title>Page not found!</title></head><body>Page not found!</body></html>\n"));
}
示例#9
0
void BadRequestResponse::Send(Print& sink) {
  sink.print(F("HTTP/1.1 400 BAD REQUEST\r\n"));
  SendHeaders(sink);
  SendBodyStart(sink);
}