X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fusers.cpp;h=5d1c12b136c1979863d90af3dc4e0b46ce64bee9;hb=f0debf907a36846e3b48767e9797880135a4583b;hp=afc8f6f11bc17199f217cf5b862a8119fa88a97c;hpb=f67aba687bb425ee8d2c810e00665a5bccf77af2;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/users.cpp b/src/users.cpp index afc8f6f11..5d1c12b13 100644 --- a/src/users.cpp +++ b/src/users.cpp @@ -51,7 +51,7 @@ const char* User::FormatModes(bool showparameters) if (mh && IsModeSet(mh)) { data.push_back(n + 65); - if (showparameters && mh->GetNumParams(true)) + if (showparameters && mh->NeedsParam(true)) { std::string p = mh->GetUserParameter(this); if (p.length()) @@ -64,12 +64,14 @@ const char* User::FormatModes(bool showparameters) } User::User(const std::string& uid, Server* srv, int type) - : uuid(uid), server(srv), usertype(type) + : age(ServerInstance->Time()) + , signon(0) + , uuid(uid) + , server(srv) + , registered(REG_NONE) + , quitting(false) + , usertype(type) { - age = ServerInstance->Time(); - signon = 0; - registered = 0; - quitting = false; client_sa.sa.sa_family = AF_UNSPEC; ServerInstance->Logs->Log("USERS", LOG_DEBUG, "New UUID for user: %s", uuid.c_str()); @@ -83,14 +85,24 @@ User::User(const std::string& uid, Server* srv, int type) } LocalUser::LocalUser(int myfd, irc::sockets::sockaddrs* client, irc::sockets::sockaddrs* servaddr) - : User(ServerInstance->UIDGen.GetUID(), ServerInstance->FakeClient->server, USERTYPE_LOCAL), eh(this), - bytes_in(0), bytes_out(0), cmds_in(0), cmds_out(0), nping(0), CommandFloodPenalty(0), - already_sent(0) -{ - exempt = quitting_sendq = false; - idle_lastmsg = 0; + : User(ServerInstance->UIDGen.GetUID(), ServerInstance->FakeClient->server, USERTYPE_LOCAL) + , eh(this) + , bytes_in(0) + , bytes_out(0) + , cmds_in(0) + , cmds_out(0) + , quitting_sendq(false) + , lastping(true) + , exempt(false) + , nping(0) + , idle_lastmsg(0) + , CommandFloodPenalty(0) + , already_sent(0) +{ + signon = ServerInstance->Time(); + // The user's default nick is their UUID + nick = uuid; ident = "unknown"; - lastping = 0; eh.SetFd(myfd); memcpy(&client_sa, client, sizeof(irc::sockets::sockaddrs)); memcpy(&server_sa, servaddr, sizeof(irc::sockets::sockaddrs)); @@ -141,19 +153,20 @@ const std::string& User::GetFullRealHost() return this->cached_fullrealhost; } -bool User::HasModePermission(unsigned char, ModeType) +bool User::HasModePermission(const ModeHandler* mh) const { return true; } -bool LocalUser::HasModePermission(unsigned char mode, ModeType type) +bool LocalUser::HasModePermission(const ModeHandler* mh) const { if (!this->IsOper()) return false; + const unsigned char mode = mh->GetModeChar(); if (mode < 'A' || mode > ('A' + 64)) return false; - return ((type == MODETYPE_USER ? oper->AllowedUserModes : oper->AllowedChanModes))[(mode - 'A')]; + return ((mh->GetModeType() == MODETYPE_USER ? oper->AllowedUserModes : oper->AllowedChanModes))[(mode - 'A')]; } /*