mirror of
				https://github.com/ergochat/ergo.git
				synced 2025-10-31 05:47:22 +01:00 
			
		
		
		
	server: Support more RPL_ISUPPORT stuff
This commit is contained in:
		
							parent
							
								
									78028135eb
								
							
						
					
					
						commit
						f62ffe006f
					
				| @ -13,6 +13,7 @@ New release of Oragono! | ||||
| * Added operator classes, allowing for more finely-grained permissions for operators. | ||||
| * Added automatic client connection limiting, similar to other IRCds. | ||||
| * Length of channel mode lists (ban / ban-except / invite-except) is now restricted to the limit in config. | ||||
| * Support `MAXLIST`, `MAXTARGETS`, `MODES`, `TARGMAX` in `RPL_ISUPPORT`. | ||||
| * Added support for IRCv3 capability [`chghost`](http://ircv3.net/specs/extensions/chghost-3.2.html). | ||||
| 
 | ||||
| ### Changed | ||||
|  | ||||
| @ -269,13 +269,14 @@ func (server *Server) setISupport() { | ||||
| 	server.isupport.Add("INVEX", "") | ||||
| 	server.isupport.Add("KICKLEN", strconv.Itoa(server.limits.KickLen)) | ||||
| 	server.isupport.Add("MAXLIST", fmt.Sprintf("beI:%s", strconv.Itoa(server.limits.ChanListModes))) | ||||
| 	// server.isupport.Add("MODES", "")   //TODO(dan): Support max modes? | ||||
| 	server.isupport.Add("MAXTARGETS", "4") | ||||
| 	server.isupport.Add("MODES", "") | ||||
| 	server.isupport.Add("MONITOR", strconv.Itoa(server.limits.MonitorEntries)) | ||||
| 	server.isupport.Add("NETWORK", server.networkName) | ||||
| 	server.isupport.Add("NICKLEN", strconv.Itoa(server.limits.NickLen)) | ||||
| 	server.isupport.Add("PREFIX", "(qaohv)~&@%+") | ||||
| 	server.isupport.Add("STATUSMSG", "~&@%+") | ||||
| 	// server.isupport.Add("TARGMAX", "")  //TODO(dan): Support this | ||||
| 	server.isupport.Add("TARGMAX", "NAMES:1,LIST:1,KICK:1,WHOIS:1,PRIVMSG:4,NOTICE:4,MONITOR:") | ||||
| 	server.isupport.Add("TOPICLEN", strconv.Itoa(server.limits.TopicLen)) | ||||
| 
 | ||||
| 	// account registration | ||||
| @ -739,7 +740,7 @@ func privmsgHandler(server *Server, client *Client, msg ircmsg.IrcMessage) bool | ||||
| 	targets := strings.Split(msg.Params[0], ",") | ||||
| 	message := msg.Params[1] | ||||
| 
 | ||||
| 	for _, targetString := range targets { | ||||
| 	for _, targetString := range targets[:4] { | ||||
| 		prefixes, targetString := SplitChannelMembershipPrefixes(targetString) | ||||
| 		lowestPrefix := GetLowestChannelModePrefix(prefixes) | ||||
| 
 | ||||
| @ -819,9 +820,8 @@ func whoisHandler(server *Server, client *Client, msg ircmsg.IrcMessage) bool { | ||||
| 			} | ||||
| 		} | ||||
| 	} else { | ||||
| 		// specifically treat this as a single lookup rather than splitting as we do above | ||||
| 		// this is by design | ||||
| 		casefoldedMask, err := Casefold(masksString) | ||||
| 		// only get the first request | ||||
| 		casefoldedMask, err := Casefold(strings.Split(masksString, ",")[0]) | ||||
| 		mclient := server.clients.Get(casefoldedMask) | ||||
| 		if err != nil || mclient == nil { | ||||
| 			client.Send(nil, client.server.name, ERR_NOSUCHNICK, masksString, "No such nick") | ||||
| @ -1220,7 +1220,7 @@ func noticeHandler(server *Server, client *Client, msg ircmsg.IrcMessage) bool { | ||||
| 	targets := strings.Split(msg.Params[0], ",") | ||||
| 	message := msg.Params[1] | ||||
| 
 | ||||
| 	for _, targetString := range targets { | ||||
| 	for _, targetString := range targets[:4] { | ||||
| 		prefixes, targetString := SplitChannelMembershipPrefixes(targetString) | ||||
| 		lowestPrefix := GetLowestChannelModePrefix(prefixes) | ||||
| 
 | ||||
| @ -1349,6 +1349,11 @@ func listHandler(server *Server, client *Client, msg ircmsg.IrcMessage) bool { | ||||
| 			client.RplList(channel) | ||||
| 		} | ||||
| 	} else { | ||||
| 		// limit regular users to only listing one channel | ||||
| 		if !client.flags[Operator] { | ||||
| 			channels = channels[:1] | ||||
| 		} | ||||
| 
 | ||||
| 		for _, chname := range channels { | ||||
| 			casefoldedChname, err := CasefoldChannel(chname) | ||||
| 			channel := server.channels.Get(casefoldedChname) | ||||
| @ -1397,6 +1402,11 @@ func namesHandler(server *Server, client *Client, msg ircmsg.IrcMessage) bool { | ||||
| 		return false | ||||
| 	} | ||||
| 
 | ||||
| 	// limit regular users to only listing one channel | ||||
| 	if !client.flags[Operator] { | ||||
| 		channels = channels[:1] | ||||
| 	} | ||||
| 
 | ||||
| 	for _, chname := range channels { | ||||
| 		casefoldedChname, err := CasefoldChannel(chname) | ||||
| 		channel := server.channels.Get(casefoldedChname) | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Daniel Oaks
						Daniel Oaks