summaryrefslogtreecommitdiff
path: root/src/mode.cpp
AgeCommit message (Collapse)Author
2007-05-04Where others charge, we give for free. Have fun and use wisely. With great ↵brain
power comes great responsbility. git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@6867 e03df62e-2008-0410-955e-edbf42e46eb7
2007-05-01Move new listmode check deeper into the mode parser so that it doesnt ↵brain
generate spurious craq (thanks HiroP_) git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@6853 e03df62e-2008-0410-955e-edbf42e46eb7
2007-04-30Fix one issue, add another feature: When sending MODE +beI, weed out ↵brain
duplicates with simple O(1) check so that users dont send MODE #chan +bbbbbbbbbbbb. Allow configuration of which listmodes you want to deny to below halfops. For example <options hidemodes="eI">. This is because blocking +b can break mirc, blocking +eI usually wont break it so severely. git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@6852 e03df62e-2008-0410-955e-edbf42e46eb7
2007-04-27Add support for hiding listmode lists such as +beI from unprivileged users.brain
See bug #258 git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@6849 e03df62e-2008-0410-955e-edbf42e46eb7
2007-02-09Change the constructor of ModeParser, make it just a tiny bit prettier.brain
Rather than calling AddMode like 25 times, put them in a nice looking array and call it in a loop, doesnt look as craqy (although its exactly the same thing with makeup on) git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@6555 e03df62e-2008-0410-955e-edbf42e46eb7
2007-01-20Better way even than suggested.brain
We need one counter, nonlistmodes_found, and start with it at 0. In the while loop, if we find any modes that arent of list mode type we inc the counter, and if the counter is zero after the end of the loop, we can just return (we processed everything already and nothing is left) git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@6401 e03df62e-2008-0410-955e-edbf42e46eb7
2007-01-15Crusade to remove debug from stable and tested parts of the core and base ↵brain
modules. Most of the code here being de-noised hasnt had a crash or bug in it for many months, if not a year so the debug output is useless noise in the logfile when trying to trace a bug in a REAL problem area. git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@6356 e03df62e-2008-0410-955e-edbf42e46eb7
2007-01-15Make this use true and false, not MODEACTION_DENYbrain
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@6349 e03df62e-2008-0410-955e-edbf42e46eb7
2007-01-14Fix the code that nobody tested :pbrain
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@6331 e03df62e-2008-0410-955e-edbf42e46eb7
2007-01-14And take the return out again to stop w00t throwing a tantrumom
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@6330 e03df62e-2008-0410-955e-edbf42e46eb7
2007-01-14Add return statement at the end of the special-case block for listing listmodes.om
Make ModeWatchers get called (with an empty parameter and adding = true) if their mode is a listmode and it gets listed git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@6329 e03df62e-2008-0410-955e-edbf42e46eb7
2007-01-14Fix this so that if the beforemode clears the parameter, and it was supposed ↵brain
to have one, we abort git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@6327 e03df62e-2008-0410-955e-edbf42e46eb7
2007-01-14Fix BeforeMode to have the parameter available, if there are enough ↵brain
parameters for the mode and the mode parameter is valid git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@6326 e03df62e-2008-0410-955e-edbf42e46eb7
2007-01-08Tweaks to mode parserbrain
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@6265 e03df62e-2008-0410-955e-edbf42e46eb7
2007-01-06Extra check so that we dont get -O-s when doing:brain
MODE #chan +Osnt MODE #chan -O+n-s (the +n would get dropped, but the - and the s get put in the mode sequence) To fix, we store the last *successful* state change, as well as the last attempted state change. git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@6235 e03df62e-2008-0410-955e-edbf42e46eb7
2007-01-06Fix desync with halfop and voice when opped (this happens because we were ↵brain
ORing the wrong value in chanrec::ForceChan) git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@6232 e03df62e-2008-0410-955e-edbf42e46eb7
2007-01-03Fix lusers breakage introduced by latest set of optimizationsbrain
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@6219 e03df62e-2008-0410-955e-edbf42e46eb7
2006-12-29Add counter system for umodes to get rid of some O(n)brain
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@6163 e03df62e-2008-0410-955e-edbf42e46eb7
2006-12-23Hash rehashing changebrain
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@6080 e03df62e-2008-0410-955e-edbf42e46eb7
2006-12-22Reduce logging caused by mode changesbrain
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@6060 e03df62e-2008-0410-955e-edbf42e46eb7
2006-12-18Avoid no such nick on non oper attempting to view modes of a user.w00t
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@6047 e03df62e-2008-0410-955e-edbf42e46eb7
2006-12-15Jesus, look who's the commit whore today. More header updates, and removal ↵w00t
of namespacing. git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@5996 e03df62e-2008-0410-955e-edbf42e46eb7
2006-12-14Refactor userrec::chans.brain
Old way: A vector of ucrec, MAXCHANS in size by default populated by NULLS, so you have to scan the vector to find an empty slot when joining a user, parting a user etc New way: std::map<chanrec*, char> (the char holds their basic core permissions on the channel [voice, halfop, op]) This increases speed a ton, and removes some wtf-age. git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@5986 e03df62e-2008-0410-955e-edbf42e46eb7
2006-12-03LOL INFINITE LOOPS IN IRCD ARE ROXw00t
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@5834 e03df62e-2008-0410-955e-edbf42e46eb7
2006-12-02That patch (TM) of controversy, plus a minor cleanupw00t
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@5830 e03df62e-2008-0410-955e-edbf42e46eb7
2006-11-22Disallow mode prefix # since it will mess up /whois and /privmsgpeavey
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@5786 e03df62e-2008-0410-955e-edbf42e46eb7
2006-11-15Don't allow a non-oper to view another users modes. This slightly tweaks the ↵brain
rfc, because the rfc says even opers shouldnt be able to view modes but thats just a backwards pain in the neck. Also, remove the system from 1.0 whereby an oper CAN change a non-opers modes (except +o) because all this did was confuse services packages. git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@5748 e03df62e-2008-0410-955e-edbf42e46eb7
2006-11-12Show chanrec::age in MODE #chan, not the deprecated chanrec::createdbrain
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@5717 e03df62e-2008-0410-955e-edbf42e46eb7
2006-10-28* Fix removal of user modes when unloading the mode letter (this actually ↵brain
works now) * Fix m_stripcolor channel mode +S (was unsettable as it had some user mode checks in it) git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@5577 e03df62e-2008-0410-955e-edbf42e46eb7
2006-10-06/me thwaps special for not reading comments :pbrain
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@5445 e03df62e-2008-0410-955e-edbf42e46eb7
2006-10-04Extra safety checking in ModeSet just to ensure we cant be passed a null pointerbrain
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@5411 e03df62e-2008-0410-955e-edbf42e46eb7
2006-10-01Add an extra debug message and change two calls of GetModeType to ↵om
GetModeChar as I'm 99.9% sure they should be git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@5376 e03df62e-2008-0410-955e-edbf42e46eb7
2006-10-01It all came down to a >1 where we needed a >0. Things should be stable now jamiebrain
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@5375 e03df62e-2008-0410-955e-edbf42e46eb7
2006-09-10Take some debug crap out of ModeParser::ModeString()brain
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@5209 e03df62e-2008-0410-955e-edbf42e46eb7
2006-09-10* Fix ChanModes::ModeString to not try and set a key as a user mode ;)brain
* Tweak the way cyclehosts works, so that mode change is not echoed back to user who changes their host/ident git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@5208 e03df62e-2008-0410-955e-edbf42e46eb7
2006-09-09Reset LastParse string when we try to parse new modesbrain
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@5188 e03df62e-2008-0410-955e-edbf42e46eb7
2006-09-09Tidier string buildingbrain
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@5185 e03df62e-2008-0410-955e-edbf42e46eb7
2006-09-09Make SAMODE oper output tidierbrain
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@5184 e03df62e-2008-0410-955e-edbf42e46eb7
2006-09-09And fix it so it doesnt go into an infinite loop when meeting the end ↵brain
condition (oops) git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@5183 e03df62e-2008-0410-955e-edbf42e46eb7
2006-09-09Add sane limiting to mode output, so we cant have more than 100 mode chars ↵brain
in the sequence string, or MAXMODES parameters for the modes, or a total length of params+sequence beyond 450. git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@5182 e03df62e-2008-0410-955e-edbf42e46eb7
2006-09-09m_override is now fixed, replaced AC_GENERAL_MODE OnAccessCheck eventbrain
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@5180 e03df62e-2008-0410-955e-edbf42e46eb7
2006-09-03Add /RELOAD and move cmd_mode into its own command.brain
/RELOAD is the only thing you cant reload (ahem) git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@5119 e03df62e-2008-0410-955e-edbf42e46eb7
2006-09-02Allow unloading of modules which implement modes!brain
The default implementation of the new system will remove simplemodes so any mode handler which is just a simple mode (no params and not a list mode) does not need to add much more than one line of code and remove its VF_STATIC flag. git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@5100 e03df62e-2008-0410-955e-edbf42e46eb7
2006-08-30In this instance find is faster than rfindbrain
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@5086 e03df62e-2008-0410-955e-edbf42e46eb7
2006-08-30And make it work herebrain
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@5085 e03df62e-2008-0410-955e-edbf42e46eb7
2006-08-30Fix for parameters which contain a colon (which is not the first char in ↵brain
the string) git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@5084 e03df62e-2008-0410-955e-edbf42e46eb7
2006-08-30Wahhhhhhhhhhhh bwahahaha. Mass commit to tidy up tons of messy include listsbrain
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@5080 e03df62e-2008-0410-955e-edbf42e46eb7
2006-08-29Only send 008 when MODE Operbrain
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@5075 e03df62e-2008-0410-955e-edbf42e46eb7
2006-08-29Clarify messagebrain
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@5074 e03df62e-2008-0410-955e-edbf42e46eb7
2006-08-29Don't silently drop modes that are oper only when a non-oper tries to set ↵brain
them - give a 481 git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@5073 e03df62e-2008-0410-955e-edbf42e46eb7