コード例 #1
1
ファイル: creglist.cpp プロジェクト: Gerlofius/verlihub-1.0.0
/** log that user logged in with error*/
bool cRegList::LoginError(cConnDC *conn, const string &nick)
{
	if(!FindRegInfo(mModel, nick)) return false;
	mModel.mErrorLast = cTime().Sec();
	mModel.mErrorIP = conn->AddrIP();
	mModel.mErrorCount++;
	return UpdatePK();
}
コード例 #2
0
ファイル: cpenaltylist.cpp プロジェクト: Sorin91/verlihub
ostream &operator << (ostream &os, const cPenaltyList::sPenalty &penalty)
{
	cTime Now = cTime().Sec();

	if ((penalty.mStartChat > Now) && (penalty.mStartPM > Now))
		os << autosprintf(_("Setting main and private chat rights for %s to %s."), penalty.mNick.c_str(), cTime(penalty.mStartChat - Now).AsPeriod().AsString().c_str());

	if ((penalty.mStartChat > Now) && (penalty.mStartPM < Now))
		os << autosprintf(_("Setting main chat right for %s to %s."), penalty.mNick.c_str(), cTime(penalty.mStartChat - Now).AsPeriod().AsString().c_str());

	if ((penalty.mStartPM > Now) && (penalty.mStartChat < Now))
		os << autosprintf(_("Setting private chat right for %s to %s."), penalty.mNick.c_str(), cTime(penalty.mStartPM - Now).AsPeriod().AsString().c_str());

	if (penalty.mStartSearch > Now)
		os << autosprintf(_("Setting search right for %s to %s."), penalty.mNick.c_str(), cTime(penalty.mStartSearch - Now).AsPeriod().AsString().c_str());

	if (penalty.mStartCTM > Now)
		os << autosprintf(_("Setting download right for %s to %s."), penalty.mNick.c_str(), cTime(penalty.mStartCTM - Now).AsPeriod().AsString().c_str());

	if (penalty.mStopKick > Now)
		os << autosprintf(_("Setting kick right for %s to %s."), penalty.mNick.c_str(), cTime(penalty.mStopKick - Now).AsPeriod().AsString().c_str());

	if (penalty.mStopShare0 > Now)
		os << autosprintf(_("Setting hidden share right for %s to %s."), penalty.mNick.c_str(), cTime(penalty.mStopShare0 - Now).AsPeriod().AsString().c_str());

	if (penalty.mStopReg > Now)
		os << autosprintf(_("Setting registering right for %s to %s."), penalty.mNick.c_str(), cTime(penalty.mStopReg - Now).AsPeriod().AsString().c_str());

	if (penalty.mStopOpchat > Now)
		os << autosprintf(_("Setting operator chat right for %s to %s."), penalty.mNick.c_str(), cTime(penalty.mStopOpchat - Now).AsPeriod().AsString().c_str());

	return os;
}
コード例 #3
0
ファイル: cban.cpp プロジェクト: Eco-logical/verlihub-1.0.0
void cBan::DisplayComplete(ostream &os)
{
	DisplayUser(os);
	os << " [*] " << setw(PADDING) << setiosflags(ios::left) << _("OP") << mNickOp.c_str() << "\r\n";
	os << " [*] " << setw(PADDING) << setiosflags(ios::left) << _("Ban type") << this->GetBanType() << "\r\n";
	os << " [*] " << setw(PADDING) << setiosflags(ios::left) << _("Last hit");

	if (!mLastHit)
		os << _("Never");
	else
		os << autosprintf(_("%s ago"), cTime(cTime().Sec() - mLastHit).AsPeriod().AsString().c_str());

	os << "\r\n";
}
コード例 #4
0
ファイル: RTATTRIB.c プロジェクト: ems/TMS
void RTSaveFields(int pieceNumber)
{
  int nI = pieceNumber - 1;

  SendMessage(hCtlMINONTIME, WM_GETTEXT,
        (WPARAM)TEMPSTRING_LENGTH, (LONG)(LPSTR)tempString);
  localRT.PIECE[nI].minOnTime = cTime(tempString);
  SendMessage(hCtlMAXONTIME, WM_GETTEXT,
        (WPARAM)TEMPSTRING_LENGTH, (LONG)(LPSTR)tempString);
  localRT.PIECE[nI].maxOnTime = cTime(tempString);
  SendMessage(hCtlMINOFFTIME, WM_GETTEXT,
        (WPARAM)TEMPSTRING_LENGTH, (LONG)(LPSTR)tempString);
  localRT.PIECE[nI].minOffTime = cTime(tempString);
  SendMessage(hCtlMAXOFFTIME, WM_GETTEXT,
        (WPARAM)TEMPSTRING_LENGTH, (LONG)(LPSTR)tempString);
  localRT.PIECE[nI].maxOffTime = cTime(tempString);
  SendMessage(hCtlMINPAYTIME, WM_GETTEXT,
        (WPARAM)TEMPSTRING_LENGTH, (LONG)(LPSTR)tempString);
  localRT.PIECE[nI].minPayTime = thhmm(tempString);
  SendMessage(hCtlMAXPAYTIME, WM_GETTEXT,
        (WPARAM)TEMPSTRING_LENGTH, (LONG)(LPSTR)tempString);
  localRT.PIECE[nI].maxPayTime = thhmm(tempString);
  SendMessage(hCtlMINPIECESIZE, WM_GETTEXT,
        (WPARAM)TEMPSTRING_LENGTH, (LONG)(LPSTR)tempString);
  localRT.PIECE[nI].minPieceSize = thhmm(tempString);
  SendMessage(hCtlDESPIECESIZE, WM_GETTEXT,
        (WPARAM)TEMPSTRING_LENGTH, (LONG)(LPSTR)tempString);
  localRT.PIECE[nI].desPieceSize = thhmm(tempString);
  SendMessage(hCtlMAXPIECESIZE, WM_GETTEXT,
        (WPARAM)TEMPSTRING_LENGTH, (LONG)(LPSTR)tempString);
  localRT.PIECE[nI].maxPieceSize = thhmm(tempString);
  SendMessage(hCtlMINBREAKTIME, WM_GETTEXT,
        (WPARAM)TEMPSTRING_LENGTH, (LONG)(LPSTR)tempString);
  localRT.PIECE[nI].minBreakTime = thhmm(tempString);
  SendMessage(hCtlDESBREAKTIME, WM_GETTEXT,
        (WPARAM)TEMPSTRING_LENGTH, (LONG)(LPSTR)tempString);
  localRT.PIECE[nI].desBreakTime = thhmm(tempString);
  SendMessage(hCtlMAXBREAKTIME, WM_GETTEXT,
        (WPARAM)TEMPSTRING_LENGTH, (LONG)(LPSTR)tempString);
  localRT.PIECE[nI].maxBreakTime = thhmm(tempString);
  localRT.PIECE[nI].flags = 0;
  if(SendMessage(hCtlTRAVELINCLUDEDINMIN, BM_GETCHECK, (WPARAM)0, (LPARAM)0))
    localRT.PIECE[nI].flags |= PIECEFLAGS_TRAVELINCLUDEDINMIN;
  if(SendMessage(hCtlTRAVELINCLUDEDINMAX, BM_GETCHECK, (WPARAM)0, (LPARAM)0))
    localRT.PIECE[nI].flags |= PIECEFLAGS_TRAVELINCLUDEDINMAX;
  if(SendMessage(hCtlPAYONLYAPPLIES, BM_GETCHECK, (WPARAM)0, (LPARAM)0))
    localRT.PIECE[nI].flags |= PIECEFLAGS_PAYONLYAPPLIES;
}
コード例 #5
0
ファイル: creglist.cpp プロジェクト: Gerlofius/verlihub-1.0.0
/** add registered user */
bool cRegList::AddRegUser(const string &nick, cConnDC *op, int cl, const char *password)
{
	cRegUserInfo ui;

	if(FindRegInfo(ui, nick))
		return false;
	// Do not register opchat or hub security
	if(toLower(nick) == toLower(mS->mC.opchat_name) || toLower(nick) == toLower(mS->mC.hub_security))
		return false;

	ui.mNick = nick;//@todo nick2dbkey
	if ((cl>=1 && cl<=5) || cl==10 || cl==-1)
		ui.mClass = cl;
	else
		ui.mClass = 1;
	ui.mRegDate = cTime().Sec();
	ui.mRegOp = (op && op->mpUser) ? op->mpUser->mNick : string("hub-security");

	if(password)
		ui.SetPass(string(password),mS->mC.default_password_encryption);
	else
		ui.SetPass(string(),mS->mC.default_password_encryption);

	if(cl < 0)
		ui.mPwdChange = false;
	if(mCache.IsLoaded())
		mCache.Add(nick);//@todo nick2dbkey

	SetBaseTo(&ui);
	return SavePK();
}
コード例 #6
0
ファイル: ciplog.cpp プロジェクト: Gerlofius/verlihub-1.0.0
void cIPLog::GetLastLogin(const string &who, bool isNick, int limit, ostream &os)
{
	string ip;
	if(isNick)
		os << autosprintf(_("Nick %s has lately been in the hub with the following IP"), who.c_str()) << "\n";
	else
		os << autosprintf(_("IP %s has lately been in the hub with following nicknames"), who.c_str()) << "\n";

	MakeSearchQuery(who, isNick, 1, limit);
	SetBaseTo(&mModel);

	os << "\n ";
	os << setw(25) << setiosflags(ios::left) << toUpper(_("Date"));
	os << (isNick ? "IP" : toUpper(_("Nickname"))) << "\n";
	os << " " << string(25+20,'=') << endl;

	db_iterator it;
	for(it = db_begin(); it != db_end(); ++it) {
		cBanList::Num2Ip(mModel.mIP, ip);
		os << " " << setw(25) << setiosflags(ios::left) << cTime(mModel.mDate,0).AsDate();
		os << (isNick ? ip : mModel.mNick) << endl;
	}

	mQuery.Clear();
}
コード例 #7
0
ファイル: cban.cpp プロジェクト: Eco-logical/verlihub-1.0.0
void cBan::DisplayUser(ostream &os)
{
	os << "\r\n";
	if (mNick.size()) os << " [*] " << setw(PADDING) << setiosflags(ios::left) << _("Nickname") << mNick.c_str() << "\r\n";
	if (mIP.size() && (mIP[0] != '_')) os << " [*] " << setw(PADDING) << setiosflags(ios::left) << _("IP") << mIP.c_str() << "\r\n";
	os << " [*] " << setw(PADDING) << setiosflags(ios::left) << _("Reason") << mReason.c_str() << "\r\n";
	// append extra ban message
	if (!mS->mC.ban_extra_message.empty()) os << " [*] " << setw(PADDING) << setiosflags(ios::left) << _("Extra message") << mS->mC.ban_extra_message << "\r\n";
	os << " [*] " << setw(PADDING) << setiosflags(ios::left) << _("Time");

	if (mDateEnd) {
		cTime HowLong(mDateEnd - cTime().Sec());
		os << HowLong.AsPeriod().AsString().c_str() << " " << _("remaining");
	} else
		os << _("Permanent");

	os << "\r\n";
	string initialRange, endRange;

	if (mRangeMin) {
		cBanList::Num2Ip(mRangeMin, initialRange);
		cBanList::Num2Ip(mRangeMax, endRange);
		os << " [*] " << setw(PADDING) << setiosflags(ios::left) << _("IP range") << initialRange.c_str() << "-" << endRange.c_str() << "\r\n";
	}

	if (mShare) os << " [*] " << setw(PADDING) << setiosflags(ios::left) << _("Share") << mShare << " (" << convertByte(mShare, false).c_str() << ")" << "\r\n";
}
コード例 #8
0
ファイル: ciplog.cpp プロジェクト: Gerlofius/verlihub-1.0.0
void cIPLog::GetHistory(const string &who, bool isNick, int limit, ostream &os)
{
	string ip;
	if(isNick)
		os << autosprintf(_("Last %d events of nick %s:"), limit, who.c_str()) << "\r\n";
	else
		os << autosprintf(_("Last %d events of IP %s:"), limit, who.c_str()) << "\r\n";

	MakeSearchQuery(who, isNick, -1, limit);
	SetBaseTo(&mModel);

	const char *Actions[]={_("connect"),_("login"),_("logout"),_("disconnect")};
	const char *Infos[]={
	    "--",
		_("bad nick or nick temporarily banned"),
		_("used different nick in chat"),
		_("kicked"),
		_("redirected"),
		_("exit from the hub"),
		_("critical hub load"),
		_("timeout"),
		_("user did nothing for too long time"),
		_("hub full"),
		_("share limit"),
		_("no tag or not valid"),
		_("tag breaks hub rules"),
		_("wrong password"),
		_("error in login sequence"),
		_("syntax error in some messages"),
		_("invalid key")
	};

	os << "\n ";
	os << setw(20) << setiosflags(ios::left) << toUpper(_("Date"));
	os << setw(20) << setiosflags(ios::left) << toUpper(_("Action"));
	os << setw(15) << setiosflags(ios::left) << (isNick ? "IP" : toUpper(_("Nickname")));
	os << toUpper(_("Info")) << "\n";
	os << " " << string(20+20+15+25,'=') << endl;

	db_iterator it;
	for(it = db_begin(); it != db_end(); ++it) {
		cBanList::Num2Ip(mModel.mIP, ip);
		os << " " <<  setw(20) << setiosflags(ios::left) << cTime(mModel.mDate,0).AsDate();
		os << setw(20) << setiosflags(ios::left);
		if(mModel.mType < 4)
			os << Actions[mModel.mType];
		else
			os << mModel.mType;
		os << setw(15) << setiosflags(ios::left) << (isNick ? ip : mModel.mNick.substr(0,14));
		if(mModel.mInfo < 16) {
			if(strlen(Infos[mModel.mInfo]) > 0)
				os << Infos[mModel.mInfo];
		} else
			os << mModel.mInfo;
		os << endl;
	}

	mQuery.Clear();
}
コード例 #9
0
ファイル: creglist.cpp プロジェクト: Gerlofius/verlihub-1.0.0
/** log that user logged in */
bool cRegList::Login(cConnDC *conn, const string &nick)
{
	cRegUserInfo ui;
	if(!FindRegInfo(ui, nick)) return false;
	ui.mLoginLast = cTime().Sec();
	ui.mLoginIP   = conn->AddrIP();
	ui.mLoginCount++;
	return UpdatePK();
}
コード例 #10
0
ファイル: cstats.cpp プロジェクト: Eco-logical/verlihub-1.0.0
void cStats::CleanUp()
{
	mQuery.Clear();
	mQuery.OStream() << "delete from " << mMySQLTable.mName << " where("
		"realtime < " << cTime().Sec() - 7 * 3600* 24 <<
		")";
	mQuery.Query();
	mQuery.Clear();
}
コード例 #11
0
ファイル: cpenaltylist.cpp プロジェクト: Sorin91/verlihub
void cPenaltyList::Cleanup()
{
	time_t Now = cTime().Sec();
	cQuery query(mMySQL);
	query.OStream() << "DELETE FROM " << mMySQLTable.mName << " WHERE since <" << Now - 3600*24*7 <<
		" AND st_kick != 0 AND st_share0 != 0 AND st_opchat != 0 AND st_reg != 0";
	query.Query();
	query.Clear();
}
コード例 #12
0
ファイル: cban.cpp プロジェクト: Eco-logical/verlihub-1.0.0
void cBan::DisplayKick(ostream &os)
{
	os << "\t\t";

	if (mDateEnd) {
		cTime HowLong(mDateEnd - cTime().Sec(), 0);

		if (HowLong.Sec() < 0) {
			os << autosprintf(_("Expired %s"), cTime(mDateEnd, 0).AsDate().AsString().c_str());
		} else {
			os << HowLong.AsPeriod().AsString().c_str();
		}
	} else {
		os << _("Permanent");
	}

	os << "\t\t";

	if (!mLastHit)
		os << _("Never");
	else
		os << cTime(cTime().Sec() - mLastHit).AsPeriod().AsString();
}
コード例 #13
0
ファイル: ciplog.cpp プロジェクト: Gerlofius/verlihub-1.0.0
/** log that user logged in */
bool cIPLog::Log(cConnDC *conn, int action, int info)
{
	sUserStruct entry;
	entry.mIP = cBanList::Ip2Num(conn->AddrIP());
	if(conn->mpUser != NULL)
		entry.mNick = conn->mpUser->mNick;
	else
		entry.mNick = "";

	entry.mDate = cTime().Sec();
	entry.mType = action;
	entry.mInfo = info;
	SetBaseTo(&entry);
	return SavePK();
}
コード例 #14
0
ファイル: cplugs.cpp プロジェクト: Eco-logical/verlihub-1.0.0
bool cPlug::Plugin()
{
	cVHPluginMgr *pm = mOwner?mOwner->mPM:NULL;
	if (pm && !IsLoaded() && CheckMakeTime()) {
		if (IsScript()) {
			ostringstream os;
			bool result = false;

			cVHPlugin *dest = GetDestPlugin();
			if (dest) {
				if (dest->SupportsMultipleScripts())
					result = dest->AddScript(mPath, os);
				else if (dest->SupportsScripts())
					result = dest->LoadScript(mPath, os);
				else {
					mLastError = _("Plugin does not support scripts.");
					SaveMe();
					return false;
				}

				if (result)
					os << _("Script loaded.");
				else
					os << _("Error loading script.");
				mLastError = os.str();
				SaveMe();
				return result;
			}
		} else {
			if (pm->LoadPlugin(mPath)) {
				mLoadTime = cTime().Sec();
				mLastError = _("Plugin loaded.");
				SaveMe();
				return true;
			} else {
				mLastError = pm->GetError();
				SaveMe();
				return false;
			}
		}
	}
	return false;
}
コード例 #15
0
ファイル: JulianT.cpp プロジェクト: hnordquist/MIC
void
CJulianTime::FinishInit()
{
	COleDateTimeSpan cSpan(m_dDouble/SECONDS_PER_YEAR);
	COleDateTime cTime(BASE_YEAR,BASE_MONTH,BASE_DAY,
		BASE_HOUR,BASE_MINUTE,BASE_SECOND);
	cTime = cTime + cSpan;
	cTime -= HALF_MILLISECOND;

	m_bIsValid = cTime.GetStatus() == COleDateTime::valid;
	sprintf(m_pDate,"%04i.%02i.%02i",
		cTime.GetYear(),cTime.GetMonth(),cTime.GetDay());
	sprintf(m_pTime,"%02i:%02i:%02i",
		cTime.GetHour(),cTime.GetMinute(),cTime.GetSecond());
	m_Year = cTime.GetYear();
	m_Month = cTime.GetMonth();
	m_Day = cTime.GetDay();
	m_Hour = cTime.GetHour();
	m_Minute = cTime.GetMinute();
	m_Second = cTime.GetSecond();
}
コード例 #16
0
ファイル: cconsole.cpp プロジェクト: Sorin91/verlihub
bool cConsole::cfMessageSend::operator ( )()
{
	sMessage msg;
	cUser * receiver;
	msg.mSender = ((cConnDC*)this->mExtra)->mpUser->mNick;
	msg.mDateSent = cTime().Sec();
	msg.mDateExpires = msg.mDateSent + 7 * 24* 3600;
	msg.mSenderIP = ((cConnDC*)this->mExtra)->AddrIP();
	this->GetParStr(1,msg.mReceiver);
	this->GetParStr(2,msg.mSubject);
	this->GetParStr(4,msg.mBody);

	receiver = GetMessanger()->mServer->mUserList.GetUserByNick(msg.mReceiver);
	if ((receiver != NULL) && (receiver->mxConn != NULL)) {
		GetMessanger()->mMsgs->DeliverOnline(receiver, msg);
		(*mOS) << autosprintf(_("The message has been sent to %s because he is online."), msg.mReceiver.c_str());
	} else  {
		GetMessanger()->mMsgs->AddMessage(msg);
		(*mOS) << _("Message saved.");
	}
	return true;
}
コード例 #17
0
ファイル: cpenaltylist.cpp プロジェクト: Sorin91/verlihub
bool cPenaltyList::RemPenalty(sPenalty &penal)
{
	SetBaseTo(&mModel);
	mModel.mNick = penal.mNick;
	mModel.mOpNick = penal.mOpNick;
	time_t Now = cTime().Sec();
	if(LoadPK()) {
		if(penal.mStartChat < Now) mModel.mStartChat = Now;
		if(penal.mStartCTM < Now) mModel.mStartCTM = Now;
		if(penal.mStartPM < Now) mModel.mStartPM = Now;
		if(penal.mStartSearch < Now) mModel.mStartSearch = Now;
		if(penal.mStopKick < Now) mModel.mStopKick = Now;
		if(penal.mStopShare0 < Now) mModel.mStopShare0 = Now;
		if(penal.mStopReg < Now) mModel.mStopReg = Now;
		if(penal.mStopOpchat < Now) mModel.mStopOpchat = Now;
	}
	if(mModel.ToKeepIt())
		return SavePK();
	else
		DeletePK();
	return true;
}
コード例 #18
0
ファイル: cpimessanger.cpp プロジェクト: Sorin91/verlihub
cpiMessanger::cpiMessanger() : mConsole(this), mMsgs(NULL), mReloadTimer(30., 0., cTime())
{
	mName = "Messanger";
	mVersion = MESSENGER_VERSION;
}
コード例 #19
0
ファイル: cserverdc.cpp プロジェクト: Sorin91/verlihub
int cServerDC::ValidateUser(cConnDC *conn, const string &nick, int &closeReason)
{
	// first validate the IP and host if any
	stringstream errmsg,os;
	// Default close reason
	closeReason = eCR_INVALID_USER;
	if (!conn) return 0;
	//time_t n;
	bool close=false;

	// phase 1: test nick validity
	// phase 2: test ip/host ban (registered users pass)
	// phase 3: test nickban
	// then we're done

	static cRegUserInfo *sRegInfo = new cRegUserInfo;
	if ((nick.size() < mC.max_nick * 2 ) && mR->FindRegInfo(*sRegInfo,nick) && !conn->mRegInfo ) {
		conn->mRegInfo = sRegInfo;
		sRegInfo = new cRegUserInfo;
	}

	// Validate nick
	tVAL_NICK vn = ValidateNick(nick, (conn->GetTheoricalClass() >= eUC_REGUSER ));
	if(vn != eVN_OK) {
		close=true;
		if(vn == eVN_BANNED) {
			errmsg << _("Do not reconnect too fast.") << " ";
			closeReason = eCR_RECONNECT;
		}
		else
			errmsg << _("Bad nickname") << ": ";
		if (conn->Log(2))
			conn->LogStream() << "Bad nick: '" << nick << "' (" << vn << ")" << endl;
	}
	switch(vn) {
		case eVN_OK:
		break;
		case eVN_CHARS:
			errmsg << _("Unallowed characters in your nick.");
			if(mC.nick_chars.size())
				 errmsg << autosprintf(_("use these: %s"), mC.nick_chars.c_str());
		break;
		case eVN_SHORT:
			errmsg << _("Your nick is too short.");
		break;
		case eVN_LONG:
			errmsg << _("Your nick is too long.");
		break;
		case eVN_USED: // never happens
			errmsg << _("Your nick is already in use.");
		break;
		case eVN_PREFIX:
			errmsg << autosprintf(_("Invalid nick prefix. Use: %s"), mC.nick_prefix.c_str());
		break;
		case eVN_NOT_REGED_OP:
			errmsg << _("Operator not registered.");
		break;
		case eVN_BANNED:
			errmsg << autosprintf(_("Wait %s before reconnecting."), cTime(mBanList->IsNickTempBanned(nick) - cTime().Sec()).AsPeriod().AsString().c_str());
		break;
		default:
			errmsg << _("Unknown error.");
		break;
	}

	if (close) {
		if (vn == eVN_USED) {
			static string omsg;
			omsg = "$ValidateDenide";
			conn->Send(omsg);
		}

		DCPublicHS(errmsg.str(), conn);
		if (conn->Log(3)) conn->LogStream() << "Bad nick: " << errmsg.str() << endl;
		return 0;
	}

	cBan Ban(this);
	bool banned = false;

	if (conn->GetTheoricalClass() < eUC_MASTER) { // master class is immune
		// here we cant check share ban because user hasnt sent $MyINFO yet
		if (conn->GetTheoricalClass() == eUC_NORMUSER)
			banned = mBanList->TestBan(Ban, conn, nick, eBF_NICK | eBF_NICKIP | eBF_RANGE | eBF_HOST2 | eBF_HOST1 | eBF_HOST3 | eBF_HOSTR1 | eBF_PREFIX);
		else // registered users avoid prefix ban check because we might actually ban a prefix for unregistered users, but let registered users to use it
			banned = mBanList->TestBan(Ban, conn, nick, eBF_NICK | eBF_NICKIP | eBF_RANGE | eBF_HOST2 | eBF_HOST1 | eBF_HOST3 | eBF_HOSTR1);
	}

	if (banned) {
		errmsg << _("You are banned from this hub.") << "\r\n";
		Ban.DisplayUser(errmsg);
		DCPublicHS(errmsg.str(), conn);
		if (conn->Log(1)) conn->LogStream() << "Unallowed user (" << Ban.mType << "), closing" << endl;
		return 0;
	}

	if (mC.nick_prefix_cc) {
		if (conn->mCC.size() && conn->mCC != "--") {
			string Prefix("[");
			Prefix += conn->mCC;
			Prefix += "]";

			if (StrCompare(nick, 0, 4, Prefix) != 0) {
				errmsg << autosprintf(_("Please add %s in front of your nick."), Prefix.c_str());
				close = conn->GetTheoricalClass() < eUC_REGUSER;
			}
		}
	}

	if (close) {
		DCPublicHS(errmsg.str(), conn);
		return 0;
	}

	return 1;
}
コード例 #20
0
ファイル: EXTRABOARDEDITOR.c プロジェクト: ems/TMS
BOOL CALLBACK EXTRABOARDEDITORMsgProc(HWND hWndDlg, UINT Message, WPARAM wParam, LPARAM lParam)
{
  static EXTRABOARDEDITORPARAMDef *pParam;
  static HANDLE hCtlRUNPIECE;
  static HANDLE hCtlAVAILABLETIME;
  static HANDLE hCtlPIECESTART;
  static HANDLE hCtlPIECEEND;
  static HANDLE hCtlPIECESIZE;
  static HANDLE hCtlSTARTSTART;
  static HANDLE hCtlSTARTEND;
  static HANDLE hCtlENDSTART;
  static HANDLE hCtlENDEND;
  static long   pieceSize;

  long timeToUse;
  long startStart;
  long startEnd;
  long endStart;
  long endEnd;

  switch(Message)
  {
//
//  WM_INITDIALOG - Initialize the dialog
//
    case WM_INITDIALOG:
      pParam = (EXTRABOARDEDITORPARAMDef *)lParam;
      if(pParam == NULL)
      {
        SendMessage(hWndDlg, WM_COMMAND, MAKEWPARAM(IDCANCEL, 0), (LPARAM)0);
        break;
      }
//
//  Set up the handle to the control
//
      hCtlRUNPIECE = GetDlgItem(hWndDlg, EXTRABOARDEDITOR_RUNPIECE);
      hCtlAVAILABLETIME = GetDlgItem(hWndDlg, EXTRABOARDEDITOR_AVAILABLETIME);
      hCtlPIECESTART = GetDlgItem(hWndDlg, EXTRABOARDEDITOR_PIECESTART);
      hCtlPIECEEND = GetDlgItem(hWndDlg, EXTRABOARDEDITOR_PIECEEND);
      hCtlPIECESIZE = GetDlgItem(hWndDlg, EXTRABOARDEDITOR_PIECESIZE);
      hCtlSTARTSTART = GetDlgItem(hWndDlg, EXTRABOARDEDITOR_STARTSTART);
      hCtlSTARTEND = GetDlgItem(hWndDlg, EXTRABOARDEDITOR_STARTEND);
      hCtlENDSTART = GetDlgItem(hWndDlg, EXTRABOARDEDITOR_ENDSTART);
      hCtlENDEND = GetDlgItem(hWndDlg, EXTRABOARDEDITOR_ENDEND);
//
//  Set the title
//
      SendMessage(hCtlRUNPIECE, WM_GETTEXT,
            (WPARAM)sizeof(szFormatString), (LONG)(LPSTR)szFormatString);
      sprintf(tempString, szFormatString, pParam->runNumber, pParam->pieceNumber);
      SendMessage(hCtlRUNPIECE, WM_SETTEXT, (WPARAM)0, (LONG)(LPSTR)tempString);
//
//  Fill in the controls.  If there's nothing in the extraboard fields
//  to start with, assume we're going to grab all we can for this piece
//  and put it on the front.
//
      pieceSize = pParam->pieceEnd - pParam->pieceStart;
      SendMessage(hCtlAVAILABLETIME, WM_SETTEXT,
            (WPARAM)0, (LONG)(LPSTR)chhmm(pParam->availableTime));
      SendMessage(hCtlPIECESTART, WM_SETTEXT,
            (WPARAM)0, (LONG)(LPSTR)Tchar(pParam->pieceStart));
      SendMessage(hCtlPIECEEND, WM_SETTEXT,
            (WPARAM)0, (LONG)(LPSTR)Tchar(pParam->pieceEnd));
      SendMessage(hCtlPIECESIZE, WM_SETTEXT,
            (WPARAM)0, (LONG)(LPSTR)chhmm(pieceSize));
      if(!(pParam->flags & RUNS_FLAG_EXTRABOARDPRIOR) &&
            !(pParam->flags & RUNS_FLAG_EXTRABOARDAFTER))
      {
        if(pParam->availableTime > 0)
        {
          if(pParam->availableTime + pieceSize > pParam->maxPieceSize)
            timeToUse = pParam->maxPieceSize - pieceSize;
          else
            timeToUse = pParam->availableTime;
//          if(pParam->pieceNumber == 1)
//          {
            SendMessage(hCtlSTARTSTART, WM_SETTEXT,
                  (WPARAM)0, (LONG)(LPSTR)Tchar(pParam->pieceStart - timeToUse));
            SendMessage(hCtlSTARTEND, WM_SETTEXT,
                  (WPARAM)0, (LONG)(LPSTR)Tchar(pParam->pieceStart));
//          }
//          else
//          {
            SendMessage(hCtlENDSTART, WM_SETTEXT,
                  (WPARAM)0, (LONG)(LPSTR)Tchar(pParam->pieceEnd));
            SendMessage(hCtlENDEND, WM_SETTEXT, 
                  (WPARAM)0, (LONG)(LPSTR)Tchar(pParam->pieceEnd + timeToUse));
//          }
        }
      }
      else
      {
        if(pParam->flags & RUNS_FLAG_EXTRABOARDPRIOR)
        {
          SendMessage(hCtlSTARTSTART, WM_SETTEXT,
                (WPARAM)0, (LONG)(LPSTR)Tchar(pParam->startStart));
          SendMessage(hCtlSTARTEND, WM_SETTEXT,
                (WPARAM)0, (LONG)(LPSTR)Tchar(pParam->startEnd));
        }
        if(pParam->flags & RUNS_FLAG_EXTRABOARDAFTER)
        {
          SendMessage(hCtlENDSTART, WM_SETTEXT,
                (WPARAM)0, (LONG)(LPSTR)Tchar(pParam->endStart));
          SendMessage(hCtlENDEND, WM_SETTEXT,
                (WPARAM)0, (LONG)(LPSTR)Tchar(pParam->endEnd));
        }
      }
      break;

    case WM_CLOSE:
      SendMessage(hWndDlg, WM_COMMAND, MAKEWPARAM(IDCANCEL, 0), (LPARAM)0);
      break;

    case WM_COMMAND:
      switch(wParam)
      {
        case IDCANCEL:
          EndDialog(hWndDlg, FALSE);
          break;

        case IDHELP:
          WinHelp(hWndDlg, szarHelpFile, HELP_CONTEXT, Technical_Support);
          break;
//
//  IDOK
//
        case IDOK:
//
//  Get the input times
//
          SendMessage(hCtlSTARTSTART, WM_GETTEXT,
                (WPARAM)TEMPSTRING_LENGTH, (LONG)(LPSTR)tempString);
          startStart = cTime(tempString);
          SendMessage(hCtlSTARTEND, WM_GETTEXT,
                (WPARAM)TEMPSTRING_LENGTH, (LONG)(LPSTR)tempString);
          startEnd = cTime(tempString);
          SendMessage(hCtlENDSTART, WM_GETTEXT,
                (WPARAM)TEMPSTRING_LENGTH, (LONG)(LPSTR)tempString);
          endStart = cTime(tempString);
          SendMessage(hCtlENDEND, WM_GETTEXT,
                (WPARAM)TEMPSTRING_LENGTH, (LONG)(LPSTR)tempString);
          endEnd = cTime(tempString);
//
//  Error checks
//
//  Rule 1: Start and end times must be both input or both blank
//
          if((startStart == NO_TIME && startEnd != NO_TIME) ||
                (startStart != NO_TIME && startEnd == NO_TIME))
          {
            TMSError(hWndDlg, MB_ICONSTOP, ERROR_244, hCtlSTARTSTART);
            break;
          }
          if((endStart == NO_TIME && endEnd != NO_TIME) ||
                (endStart != NO_TIME && endEnd == NO_TIME))
          {
            TMSError(hWndDlg, MB_ICONSTOP, ERROR_244, hCtlENDSTART);
            break;
          }
//
//  Rule 2: The start time must be earlier than the end time
//
          if(startStart != NO_TIME)
          {
            if(startStart > startEnd)
            {
              TMSError(hWndDlg, MB_ICONSTOP, ERROR_245, hCtlSTARTSTART);
              break;
            }
          }
          if(endStart != NO_TIME)
          {
            if(endStart > endEnd)
            {
              TMSError(hWndDlg, MB_ICONSTOP, ERROR_245, hCtlENDSTART);
              break;
            }
          }
//
//  Plug the values in
//
          pParam->flags = 0L;
          if(startStart != NO_TIME)
          {
            pParam->flags |= RUNS_FLAG_EXTRABOARDPRIOR;
            pParam->startStart = startStart;
            pParam->startEnd = startEnd;
          }
          if(endStart != NO_TIME)
          {
            pParam->flags |= RUNS_FLAG_EXTRABOARDAFTER;
            pParam->endStart = endStart;
            pParam->endEnd = endEnd;
          }
          EndDialog(hWndDlg, TRUE);
          break;
      }
      break;

    default:
      return FALSE;
  }
  return TRUE;
}
コード例 #21
0
ファイル: AddCrewOnly.cpp プロジェクト: ems/TMS
void CAddCrewOnly::OnOK() 
{
  CString s;
  int  rcode2;
  int  opCode;
  int  nI;
  long runNumber;
  long pieceNumber;
  long cutAsRuntype;
  long startNODESrecordID;
  long startTime;
  long endNODESrecordID;
  long endTime;

//
//  Nothing can be blank or zero
//
//  Run number
//
  pEditRUNNUMBER->GetWindowText(s);
  runNumber = atol(s);
  if(s.IsEmpty() || runNumber == 0)
  {
    TMSError(m_hWnd, MB_ICONSTOP, ERROR_305, pEditRUNNUMBER->m_hWnd);
    return;
  }
//
//  Piece number
//
  pEditPIECENUMBER->GetWindowText(s);  
  pieceNumber = atol(s);
  if(s.IsEmpty() || pieceNumber == 0)
  {
    TMSError(m_hWnd, MB_ICONSTOP, ERROR_306, pEditPIECENUMBER->m_hWnd);
    return;
  }
//
//  Runtype
//
  nI = pComboBoxRUNTYPE->GetCurSel();
  if(nI == CB_ERR)
  {
    TMSError(m_hWnd, MB_ICONSTOP, ERROR_307, pComboBoxRUNTYPE->m_hWnd);
    return;
  }
  cutAsRuntype = pComboBoxRUNTYPE->GetItemData(nI);
//
//  Start node
//
  nI = pComboBoxSTARTNODE->GetCurSel();
  if(nI == CB_ERR)
  {
    TMSError(m_hWnd, MB_ICONSTOP, ERROR_308, pComboBoxSTARTNODE->m_hWnd);
    return;
  }
  startNODESrecordID = pComboBoxSTARTNODE->GetItemData(nI);
//
//  Start time
//
  pEditSTARTTIME->GetWindowText(s);
  if(s.IsEmpty())
  {
    TMSError(m_hWnd, MB_ICONSTOP, ERROR_309, pEditSTARTTIME->m_hWnd);
    return;
  }
  strcpy(tempString, s);
  startTime = cTime(tempString);
//
//  End node
//
  nI = pComboBoxENDNODE->GetCurSel();
  if(nI == CB_ERR)
  {
    TMSError(m_hWnd, MB_ICONSTOP, ERROR_310, pComboBoxENDNODE->m_hWnd);
    return;
  }
  endNODESrecordID = pComboBoxENDNODE->GetItemData(nI);
//
//  Start time
//
  pEditENDTIME->GetWindowText(s);
  if(s.IsEmpty())
  {
    TMSError(m_hWnd, MB_ICONSTOP, ERROR_311, pEditENDTIME->m_hWnd);
    return;
  }
  strcpy(tempString, s);
  endTime = cTime(tempString);
//
//  Build the record
//
  memset(&CREWONLY, 0x00, sizeof(CREWONLYDef));
//
//  Insert / update?
//
  if(*m_pUpdateRecordID == NO_RECORD)
  {
    rcode2 = btrieve(B_GETLAST, TMS_CREWONLY, &CREWONLY, &CREWONLYKey0, 0);
    CREWONLY.recordID = AssignRecID(rcode2, CREWONLY.recordID);
    CREWONLY.SERVICESrecordID = m_ServiceRecordID;
    CREWONLY.DIVISIONSrecordID = m_DivisionRecordID;
    opCode = B_INSERT;
  }
  else
  {
    CREWONLYKey0.recordID = *m_pUpdateRecordID;
    btrieve(B_GETEQUAL, TMS_CREWONLY, &CREWONLY, &CREWONLYKey0, 0);
    opCode = B_UPDATE;
  }
//
//  Set up the balance of CREWONLY
//
//  Comment code
//
  if(pButtonNA->GetCheck())
    CREWONLY.COMMENTSrecordID = NO_RECORD;
  else
  {
    nI = (int)pComboBoxCOMMENTCODE->GetCurSel();
    CREWONLY.COMMENTSrecordID =
          (nI == CB_ERR ? NO_RECORD : pComboBoxCOMMENTCODE->GetItemData(nI));
  }
//
//  Run number
//
  CREWONLY.runNumber = runNumber;
//
//  Piece number
//
  CREWONLY.pieceNumber = pieceNumber;
//
//  Runtype
//
  CREWONLY.cutAsRuntype = cutAsRuntype;
//
//  Start node
//
  CREWONLY.startNODESrecordID = startNODESrecordID;
//
//  Start time
//
  CREWONLY.startTime = startTime;
//
//  End node
//
  CREWONLY.endNODESrecordID = endNODESrecordID;
//
//  End time
//
  CREWONLY.endTime = endTime;
//
//  Insert / update and leave
//
  btrieve(opCode, TMS_CREWONLY, &CREWONLY, &CREWONLYKey0, 0);
  *m_pUpdateRecordID = CREWONLY.recordID;
	
	CDialog::OnOK();
}
コード例 #22
0
ファイル: main.cpp プロジェクト: Khillasaurus/School
// -------------------------
int _tmain(int argc, _TCHAR* argv[])
{


	// decl a default time
	cTime a;

	// a.mHours == 0

	// decl a time set to 1:15:30 (and :0 ms)
	cTime b( 1, 15, 30 );

	SYSTEMTIME st;
	//GetSystemTime(&st);
	GetLocalTime(&st);
		//regular constructor
	cTime now ( st );
	
	// decl a time set to the value of b
	cTime c( b ); // const

	// copy c to d
		//equality operator
	cTime d = c;	//half as efficient as cTime d( c );

	a.ToString();
	b.ToString();
	c.ToString();
	d.ToString();
	now.ToString();

	if( c == b )
	{
		cout << "c == b" << endl;
	}
	else
	{
		cout << "c != b" << endl;
	}

	cTime stopTime(0,0,30);
	cTime clock; //0, 0, 0
	cTime frameTime(0,0,1); //1 frame per second
	GetLocalTime( &st );
	cTime before( st );

	while( clock < stopTime )
	{
		GetLocalTime( &st );
		cTime elapsed = cTime( st ) - before;
		if( elapsed >= frameTime )
		{
			clock += ( elapsed.CalcSum() );
			clock.ToString();
		}
	}

	//::OutputDebugString("Hello World\n"); //great to use later on for debugging

	cout << "Time is up!" << endl;

	return 0;
}
コード例 #23
0
ファイル: ctime.cpp プロジェクト: dogtwelve/eepp
cTime Seconds(eeDouble amount) {
	return cTime(static_cast<Int64>(amount * 1000000));
}
コード例 #24
0
ファイル: AddConnectionSD.cpp プロジェクト: ems/TMS
void CAddConnectionSD::OnOK() 
{
  CString s;
  short   nI, nJ;
  float   distance;
  BOOL    bAddToList, bFound;
  long    connectionTime;
  long    fromNodeRecordID, toNodeRecordID;
  int     rcode2;
//
//  Cycle through all the rows
//
  for(nI = 1; nI <= 96; nI++)
  {
//
//  A blank from time of day means we're done
//
    s = pSDIGridGRID->GetCellContents(nI, 1);
    if(s == "")
    {
      break;
    }
//
//  Make this time of day and the next one upper case
//
    s.MakeUpper();
    pSDIGridGRID->SetCellContents(nI, 1, (LPCTSTR)s);
    s = pSDIGridGRID->GetCellContents(nI, 2);
    s.MakeUpper();
    pSDIGridGRID->SetCellContents(nI, 2, (LPCTSTR)s);
//
//  We're not interested in the average speed
//
//  Get the connection time
//
    s = pSDIGridGRID->GetCellContents(nI, 4);
    connectionTime = atol(s) * 60;
    if(s.Remove('+'))
    {
      connectionTime += 30;
    }
//
//  Get the from and to nodes
//
    nJ = pComboBoxFROMNODE->GetCurSel();
    if(nJ == CB_ERR)
    {
      return;
    }
    fromNodeRecordID = pComboBoxFROMNODE->GetItemData(nJ);
//
//  To Node
//
    nJ = pComboBoxTONODE->GetCurSel();
    if(nJ == CB_ERR)
    {
      return;
    }
    toNodeRecordID = pComboBoxTONODE->GetItemData(nJ);
//
//  Build the record
//
    CONNECTIONSKey1.fromNODESrecordID = fromNodeRecordID;
    CONNECTIONSKey1.toNODESrecordID = toNodeRecordID;
    CONNECTIONSKey1.fromTimeOfDay = NO_TIME;
    rcode2 = btrieve(B_GETGREATEROREQUAL, TMS_CONNECTIONS, &CONNECTIONS, &CONNECTIONSKey1, 1);
    bAddToList = (rcode2 != 0 ||
          CONNECTIONS.fromNODESrecordID != fromNodeRecordID ||
          CONNECTIONS.toNODESrecordID != toNodeRecordID) &&
          CONN.numConnections < MAXCONNECTIONSKEPT - 1;
    rcode2 = btrieve(B_GETLAST, TMS_CONNECTIONS, &CONNECTIONS, &CONNECTIONSKey0, 0);
    CONNECTIONS.recordID = AssignRecID(rcode2, CONNECTIONS.recordID);
//
//  From Node
//
    CONNECTIONS.fromNODESrecordID = fromNodeRecordID;
//
//  To Node
//
    CONNECTIONS.toNODESrecordID = toNodeRecordID;
//
//  Connection Time - Converted to seconds above
//
    CONNECTIONS.connectionTime = connectionTime;
//
//  Distance
//
    pEditDISTANCE->GetWindowText(s);
    distance = (float)atof(s);
    CONNECTIONS.distance = distance;
//
//  From/to Route
//
    if(pButtonALLROUTES->GetCheck())
    {
      CONNECTIONS.fromROUTESrecordID = NO_RECORD;
      CONNECTIONS.toROUTESrecordID = NO_RECORD;
    }
    else
    {
      nJ = pComboBoxROUTE->GetCurSel();
      if(nJ == CB_ERR)
      {
        CONNECTIONS.fromROUTESrecordID = NO_RECORD;
        CONNECTIONS.toROUTESrecordID = NO_RECORD;
      }
      else
      {
        CONNECTIONS.fromROUTESrecordID = pComboBoxROUTE->GetItemData(nJ);
        CONNECTIONS.toROUTESrecordID = pComboBoxROUTE->GetItemData(nJ);
      }
    }
//
//  From/to Service
//
    if(pButtonALLSERVICES->GetCheck())
    {
      CONNECTIONS.fromSERVICESrecordID = NO_RECORD;
      CONNECTIONS.toSERVICESrecordID = NO_RECORD;
    }
    else
    {
      nJ = pComboBoxSERVICE->GetCurSel();
      if(nJ == CB_ERR)
      {
        CONNECTIONS.fromSERVICESrecordID = NO_RECORD;
        CONNECTIONS.toSERVICESrecordID = NO_RECORD;
      }
      else
      {
        CONNECTIONS.fromSERVICESrecordID = pComboBoxSERVICE->GetItemData(nJ);
        CONNECTIONS.toSERVICESrecordID = pComboBoxSERVICE->GetItemData(nJ);
      }
    }
//
//  From/to Pattern
//
    if(pButtonALLPATTERNS->GetCheck())
    {
      CONNECTIONS.fromPATTERNNAMESrecordID = NO_RECORD;
      CONNECTIONS.toPATTERNNAMESrecordID = NO_RECORD;
    }
    else
    {
      nJ = pComboBoxPATTERN->GetCurSel();
      if(nJ == CB_ERR)
      {
        CONNECTIONS.fromPATTERNNAMESrecordID = NO_RECORD;
        CONNECTIONS.toPATTERNNAMESrecordID = NO_RECORD;
      }
      else
      {
        CONNECTIONS.fromPATTERNNAMESrecordID = pComboBoxPATTERN->GetItemData(nJ);
        CONNECTIONS.toPATTERNNAMESrecordID = pComboBoxPATTERN->GetItemData(nJ);
      }
    }
//
//  From time of day
//
    s = pSDIGridGRID->GetCellContents(nI, 1);
    if(s.IsEmpty())
    {
      CONNECTIONS.fromTimeOfDay = NO_TIME;
    }
    else
    {
      strcpy(tempString, s);
      CONNECTIONS.fromTimeOfDay = cTime(tempString);
    }
//
//  To time of day
//
    s = pSDIGridGRID->GetCellContents(nI, 2);
    if(s.IsEmpty())
    {
      CONNECTIONS.toTimeOfDay = CONNECTIONS.fromTimeOfDay;
    }
    else
    {
      strcpy(tempString, s);
      CONNECTIONS.toTimeOfDay = cTime(tempString);
    }
//
//  Flags
//
    CONNECTIONS.flags = 0;
//
//  One or Two-Way
//
    if(pButtonTWOWAY->GetCheck())
    {
      CONNECTIONS.flags |= CONNECTIONS_FLAG_TWOWAY;
    }
//
//  Running time flag
//
    if(pButtonRUNNINGTIME->GetCheck())
    {
      CONNECTIONS.flags |= CONNECTIONS_FLAG_RUNNINGTIME;
    }
//
//  Travel time flag
//
    if(pButtonTRAVELTIME->GetCheck())
    {
      CONNECTIONS.flags |= CONNECTIONS_FLAG_TRAVELTIME;
    }
//
//  Deadhead time flag
//
    if(pButtonDEADHEADTIME->GetCheck())
    {
      CONNECTIONS.flags |= CONNECTIONS_FLAG_DEADHEADTIME;
    }
//
//  Forward pointer to ROUTINGS
//
    CONNECTIONS.ROUTINGSrecordID = NO_RECORD;
//
//  Insert the record
//
//  First, make sure there isn't any contention
//
    CONNECTIONSDef tempCONN;
    long newRecID = CONNECTIONS.recordID;
    int  counter = 0;

    while(counter < 500)
    {
      rcode2 = btrieve(B_GETLAST, TMS_CONNECTIONS, &tempCONN, &CONNECTIONSKey0, 0);
      CONNECTIONS.recordID = AssignRecID(rcode2, tempCONN.recordID);
      if(CONNECTIONS.recordID == newRecID)
      {
        rcode2 = btrieve(B_INSERT, TMS_CONNECTIONS, &CONNECTIONS, &CONNECTIONSKey0, 0);
        if(rcode2 == 0)
        {
          m_pAddConnectionSDData->recordIDs[nI - 1] = CONNECTIONS.recordID;
          m_pAddConnectionSDData->numRecs = nI;
          break;
        }
      }
      counter++;
      newRecID = tempCONN.recordID;
    }
//
//  Add it to the list, if necessary
//
    bFound = FALSE;
    if(bAddToList)
    {
      for(nJ = 0; nJ < CONN.numConnections; nJ++)
      {
        if((bFound = CONN.startRecordID[nJ] == CONNECTIONS.recordID) == TRUE)
        {
          break;
        }
      }
    }
    if(!bFound)
    {
      CONN.startRecordID[CONN.numConnections++] = CONNECTIONS.recordID;
    }
  }  // nI
//
//  Done
//
  m_bEstablishRUNTIMES = TRUE;

	CDialog::OnOK();
}
コード例 #25
0
bool cFloodprotect::CheckFlood(cConnDC * conn, tFloodType ft)
{
	if (conn && conn->mpUser && conn->mpUser->mClass >= eUC_OPERATOR) return true;

	unsigned long Hash = cBanList::Ip2Num(conn->AddrIP());

	if(mUserInfo.ContainsHash(Hash))
	{
		cTime now;
		sUserInfo * usr = 0;
		usr = mUserInfo.GetByHash(Hash);

		if(!usr || (usr && usr->mDisabled)) return false;

		usr->mElapsedTime += now.Get() - usr->mLastAction;
		usr->mLastAction = now;
		usr->mActionCounter++;

		usr->addFloodType(ft); // registers the current action type for later analysis

		if(usr->mActionCounter == 10)
		{
			//10/10 = freq > 1 Hz
			//10/10 - freq = 1 Hz - 0.33 Hz
			//10/30 = freq < 0.33 Hz
			if(usr->mElapsedTime.Sec() < 10) // 10 actions, 1 Hz or higher is high frequency
			{
				ostringstream os;
				string text, floodtype;

				int cnt = KickAll(conn);

				switch(ft)
				{
					case eFT_CHAT: floodtype = "MAIN CHAT"; break;
					case eFT_PRIVATE: floodtype = "PRIVATE CHAT"; break;
					case eFT_SEARCH: floodtype = "SEARCH"; break;
					case eFT_MYINFO: floodtype = "MYINFO"; break;
					default: floodtype = "UNKNOWN"; break;
				}

				os << "\r\n";
				os << "FLOODPROTECT: User is trying to " << floodtype << " flood the server. Number of affected connections: " << cnt << ". Banned for " << mCfg.mBanTimeOnFlood << " secs!\r\n";
				os << "FLOODPROTECT: Frequecy is: " << usr->mActionCounter / (usr->mElapsedTime.Sec() + (usr->mElapsedTime.tv_usec / 1000000.)) << " Hz\r\n";
				os << "FLOODPROTECT: Detected flood types are: " << usr->getFloodTypes();
				text = os.str();
				mS->ReportUserToOpchat(conn, text, false);

				cBan Ban(mS);
				cKick Kick;

				Kick.mOp = mS->mC.hub_security;
				Kick.mIP = usr->mIP;
				Kick.mTime = cTime().Sec();
				Kick.mReason = "HIGH FLOOD FREQUENCY DETECTED!";
				mS->mBanList->NewBan(Ban, Kick, mCfg.mBanTimeOnFlood, eBF_IP);
				mS->mBanList->AddBan(Ban);
				usr->mDisabled = true;
				usr->mActionCounter = 0;
				usr->mElapsedTime = cTime(0,0);
				return false;
			}
			if((usr->mElapsedTime.Sec() >= 10) && (usr->mElapsedTime.Sec() < 30)) // between 0.33 Hz and 1 Hz is medium frequency
			{
				//string text;
				//ostringstream os;
				//os << "\r\n";
				//os << "FLOODPROTECT: Frequecy is: " << usr->mActionCounter / (usr->mElapsedTime.Sec() + (usr->mElapsedTime.tv_usec / 1000000.)) << " Hz\r\n";
				//os << "FLOODPROTECT: Detected flood types are: " << usr->getFloodTypes();
				//text = os.str();
				//mS->ReportUserToOpchat(conn, text, false);
				conn->CloseNow();
				usr->mActionCounter = 0;
				usr->mElapsedTime = cTime(0,0);
				return false;
			}
			if(usr->mElapsedTime.Sec() >= 30) // less than 0.33 Hz is low frequency
			{
				//string text;
				//ostringstream os;
				//os << "\r\n";
				//os << "FLOODPROTECT: Frequecy is: " << usr->mActionCounter / (usr->mElapsedTime.Sec() + (usr->mElapsedTime.tv_usec / 1000000.)) << " Hz\r\n";
				//os << "FLOODPROTECT: Detected action types are: " << usr->getFloodTypes();
				//text = os.str();
				//mS->ReportUserToOpchat(conn, text, false);
			        usr->mActionCounter = 0;
			        usr->mElapsedTime = cTime(0,0);
			        return true;
			}
		}
	}
	else
	{
		cTime now;
		sUserInfo * usr;
		usr = new sUserInfo(conn->AddrIP());
		if(!usr) return false;
		usr->mLastAction = now;
		usr->mElapsedTime = cTime(0,0);
		mUserInfo.AddWithHash(usr, Hash);
	}
	return true;
}
コード例 #26
0
HRESULT CHveDbController::SaveDBElement(RESULT_ELEMENT* pElement)
{
	HRESULT hr = S_OK;
	if(!m_fIsConnecting)
	{
		SaveLog("数据库连接已经断开,尝试重新连接...");
		hr = ConnectDB();
	}

	if(!m_fIsConnecting)
	{
		char szOutPutInfo[100];
		sprintf(szOutPutInfo, "连接数据库失败,保存%s结果失败...错误码:%d", pElement->szPlateNo, GetLastError());
		SaveLog(szOutPutInfo);
		OutPutMessage(szOutPutInfo);
		return E_FAIL;
	}
	_variant_t RecordsAffected;

	CTime cTime(pElement->dw64TimeMs / 1000);
	CString strTime = cTime.Format("%Y-%m-%d %H:%M:%S");
	CString strCurTable = cTime.Format("Hve_Data_%Y%m%d");

	//int iMinute = cTime.GetMinute(); 
	//CString strTmp = cTime.Format("Hve_Data_%Y%m%d%H");
	//strCurTable.Format("%s_%d",strTmp.GetBuffer(), iMinute/10); // 10分钟一张表
	//strTmp.ReleaseBuffer();

	if(m_strLastTable != strCurTable)
	{
		char szCmdText[1024] = {0};

		//try
		//{
		//	sprintf(szCmdText, "Create TABLE %s(Record_Id bigint primary key IDENTITY   (1,   1)   NOT   NULL,\
		//					   Location_Id int NOT NULL,Pass_Time datetime NOT NULL, Plate_No char(20), Road_No int,\
		//					   Car_Speed int, Obj_Id int, Time_Headway int, Over_Line int, Cross_Line int,\
		//					   Emergency_Stop int, Reverse_Run bit, Special_Result bit, big_image_1_path char(256),\
		//					   big_image_2_path char(256), big_image_3_path char(256), big_image_4_path char(256),\
		//					   big_image_5_path char(256), small_image_path char(256), bin_image_path char(256),\
		//					   video_path char(256))", strCurTable.GetBuffer());
		//	m_pConnection->Execute((_bstr_t)szCmdText, &RecordsAffected, adCmdText);
		//	sprintf(szCmdText, "CREATE INDEX [Pass_Time] ON [dbo].[%s] ([Pass_Time])", strCurTable.GetBuffer());
		//	m_pConnection->Execute((_bstr_t)szCmdText, &RecordsAffected, adCmdText);
		//	sprintf(szCmdText, "CREATE INDEX [Obj_Id] ON [dbo].[%s] ([Obj_Id])", strCurTable.GetBuffer());
		//	m_pConnection->Execute((_bstr_t)szCmdText, &RecordsAffected, adCmdText);
		//	sprintf(szCmdText, "CREATE INDEX [Special_Result] ON [dbo].[%s] ([Special_Result])", strCurTable.GetBuffer());
		//	m_pConnection->Execute((_bstr_t)szCmdText, &RecordsAffected, adCmdText);
		//}

		//表存在则不创建
		try
		{
			sprintf(szCmdText, "if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[%s]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) \
							   Create TABLE %s(Record_Id bigint primary key IDENTITY   (1,   1)   NOT   NULL,\
							   Location_Id int NOT NULL,Pass_Time datetime NOT NULL, Plate_No char(20), Road_No int, Road_Name char(25),Road_Direct char(10),\
							   Car_Speed int, Obj_Id int, Time_Headway int, Over_Line int, Cross_Line int,\
							   Emergency_Stop int, Reverse_Run bit, Speeding bit, Special_Result bit, big_image_1_path varchar(256),\
							   big_image_2_path varchar(256), big_image_3_path varchar(256), big_image_4_path varchar(256),\
							   big_image_5_path varchar(256), small_image_path varchar(256), bin_image_path varchar(256),\
							   video_path varchar(256))",strCurTable.GetBuffer(),strCurTable.GetBuffer());
			m_pConnection->Execute((_bstr_t)szCmdText, &RecordsAffected, adCmdText);
			sprintf(szCmdText, "if not exists (select * from sysindexes where name='Pass_Time')  CREATE INDEX [Pass_Time] ON [dbo].[%s] ([Pass_Time])", strCurTable.GetBuffer());
			m_pConnection->Execute((_bstr_t)szCmdText, &RecordsAffected, adCmdText);
			sprintf(szCmdText, "if not exists (select * from sysindexes where name='Obj_Id') CREATE INDEX [Obj_Id] ON [dbo].[%s] ([Obj_Id])", strCurTable.GetBuffer());
			m_pConnection->Execute((_bstr_t)szCmdText, &RecordsAffected, adCmdText);
			sprintf(szCmdText, "if not exists (select * from sysindexes where name='Special_Result') CREATE INDEX [Special_Result] ON [dbo].[%s] ([Special_Result])", strCurTable.GetBuffer());
			m_pConnection->Execute((_bstr_t)szCmdText, &RecordsAffected, adCmdText);
		}
		catch (_com_error e)
		{
			m_fIsConnecting = FALSE;
			CString strErrorMessage;
			strErrorMessage.Format("创建表失败!错误信息:%s  错误码:%d", e.ErrorMessage(), GetLastError());
			SaveLog(strErrorMessage.GetBuffer());
			SaveLog(e.Description());
			OutPutMessage("创建数据表失败!");
		}

		///////视图创建 由查询软件创建
		//try
		//{
		//	char szCmdText[1024] = {0};
		//	sprintf(szCmdText, "IF EXISTS (SELECT TABLE_NAME FROM INFORMATION_SCHEMA.VIEWS WHERE TABLE_NAME = N'Hve_Data_View') DROP VIEW Hve_Data_View");
		//	m_pConnection->Execute((_bstr_t)szCmdText, &RecordsAffected, adCmdText);

		//}
		//catch (_com_error e)
		//{
		//	CString strErrorMessage;
		//	strErrorMessage.Format("删除视图失败! 错误信息:%s 错误码:%d", e.ErrorMessage(), GetLastError());
		//	SaveLog(strErrorMessage.GetBuffer());
		//	SaveLog(e.Description());
		//	OutPutMessage("删除视图失败...");
		//}
		
		//bool fIsCreateViewFault = true;
		//int iRetry = 0;
		//while(fIsCreateViewFault)
		//{
		//	if(iRetry++ == 5)
		//	{
		//		exit(1);  //reboot
		//	}

		//	try
		//	{
		//		_RecordsetPtr pPtr;
		//		CString strName;
		//		if(FAILED(pPtr.CreateInstance("ADODB.Recordset")))
		//		{
		//			OutPutMessage("创建ADO数据集失败...");
		//			return E_FAIL;
		//		}

		//		CString strConnectInfo;
		//		strConnectInfo.Format("Driver=SQL Server;Server=%s;DATABASE=%s;UID=%s;PWD=%s",
		//			m_strServerIP, m_strDataBase, m_strUserName, m_strPassword);
		//		CString strCommand = "SELECT name FROM sysobjects WHERE (name LIKE 'Hve_Data_%')";;
		//		if(FAILED(pPtr->Open(_variant_t(strCommand), _variant_t(strConnectInfo), adOpenStatic, adLockOptimistic, adCmdText)))
		//		{
		//			OutPutMessage("获取数据表名字失败...");
		//			pPtr.Release();
		//			return E_FAIL;
		//		}
		//		while(!pPtr->GetadoEOF())
		//		{
		//			CString strTmp = (char*)_bstr_t(pPtr->GetCollect("name"));
		//			strTmp.TrimRight();
		//			if(strName == "")
		//			{
		//				strName.Format("(SELECT * FROM %s)", strTmp);
		//			}
		//			else
		//			{
		//				strName.AppendFormat("union (SELECT * FROM %s)", strTmp);
		//			}
		//			pPtr->MoveNext();
		//		}
		//		pPtr->Close();
		//		pPtr.Release();

		//		char szCmdText[1024] = {0};
		//		sprintf(szCmdText,  "CREATE VIEW Hve_Data_View AS %s", strName);
		//		m_pConnection->Execute((_bstr_t)szCmdText, &RecordsAffected, adCmdText);
		//		fIsCreateViewFault = false;
		//	}
		//	catch (_com_error e)
		//	{
		//		fIsCreateViewFault = true;
		//		CString strErrorMessage;
		//		strErrorMessage.Format("创建视图失败... 错误码:%d", GetLastError());
		//		SaveLog(strErrorMessage.GetBuffer());
		//		SaveLog(e.Description());
		//		OutPutMessage("创建视图失败...");
		//	}
		//}
	
	}
コード例 #27
0
ファイル: MemoData.cpp プロジェクト: sayrun/SOboe
CMemoData::CMemoData() : CObject()
{
	// 基本設定
	{
		m_cStrTitle.Empty();			// タイトル
		m_cStrMemo.Empty();				// 表示内容

		m_pstLogFont	= NULL;			// 表示フォント
		m_clrForeColor	= CLR_INVALID;	// 文字色
		m_clrBackColor	= CLR_INVALID;	// 背景色

		m_nIconIndex	= -1;			// アイコン種別
	}

	// 拡張設定
	{
		m_blLink			= FALSE;	// 関連付け有功無効
		m_cStrFile.Empty();				// ファイル
		m_cStrParameters.Empty();		// パラメータ
		m_blTimerExec		= FALSE;	// タイマで起動

		m_blPassWordLock	= FALSE;	// パスワードの有功無効
		m_cStrPassWord.Empty();			// パスワード

		// 描画拡張
		m_unDxlID			= 0;		// Dxl-ID
		m_unDxlExtDataSize	= 0;		// Dxl 拡張データサイズ
		m_pabyDxlExtData	= NULL;		// Dxl 拡張データ
	}

	// タイマ
	{
		SYSTEMTIME	stSysTime;
		GetLocalTime( &stSysTime);
		COleDateTime cTime( stSysTime);// = COleDateTime::GetCurrentTime();

		m_blTimer		= FALSE;				// タイマ通知有功
		m_nTimerType	= TIMERTYPE_EVERYDAY;	// タイマ種別
		m_nNotifyShift	= NOTIFYSHIFT_NOMOVE;	// 通知日の移動処理
		m_nMonth		= cTime.GetMonth();		// 通知月
		m_nDay			= cTime.GetDay();		// 通知日
		m_nHour			= 0;					// 通知時
		m_nMin			= 0;					// 通知分
		m_nWeek			= WEEK_DISABLE;			// 通知曜日

		m_nBeforeNotify	= 0;					// 事前通知
		m_blAfterNotify	= FALSE;				// 経過通知

		m_cStrNotifySound.Empty();				// 通知サウンドファイル
	}

	// Window関係
	{
		m_cRctNormal.SetRectEmpty();
		m_cRctTitle.SetRectEmpty();
		m_cRctIcon.SetRectEmpty();

		m_nWindowType = WINDOW_TYPE_NORMAL;	// 形状
		m_blPosLock = FALSE;

		m_blShow = TRUE;
		m_nZOrder = ZORDER_NORMAL;

		m_blSeeThrough = FALSE;

		m_byAlphaBlend = ALPHABLEND_000;
	}

	// 作成日付記憶
	SetCreateDate();

	// 結果受信用ID
	m_pcStrContextID = NULL;
}
コード例 #28
0
ファイル: ctime.cpp プロジェクト: dogtwelve/eepp
cTime Milliseconds(eeDouble amount) {
	return cTime(static_cast<Int64>(amount) * 1000);
}
コード例 #29
0
ファイル: ctime.cpp プロジェクト: dogtwelve/eepp
cTime Microseconds(Int64 amount) {
	return cTime(amount);
}
コード例 #30
0
ファイル: creglist.cpp プロジェクト: Gerlofius/verlihub-1.0.0
/** log that user logged in */
bool cRegList::Logout(const string &nick)
{
	if(!FindRegInfo(mModel, nick)) return false;
	mModel.mLogoutLast = cTime().Sec()-1; // this is a patch for users that connect twice
	return UpdatePKVar("logout_last");
}