|
@@ -38,13 +38,16 @@ func (name Name) IsChannel() bool {
|
38
|
38
|
func (name Name) IsNickname() bool {
|
39
|
39
|
namestr := name.String()
|
40
|
40
|
// * is used for unregistered clients
|
|
41
|
+ // * is used for mask matching
|
|
42
|
+ // ? is used for mask matching
|
41
|
43
|
// , is used as a separator by the protocol
|
42
|
|
- // # is a channel prefix
|
43
|
|
- // @+ are channel membership prefixes
|
44
|
44
|
// ! separates username from nickname
|
45
|
45
|
// @ separates nick+user from hostname
|
46
|
|
- if namestr == "*" || strings.Contains(namestr, ",") || strings.Contains("#@+", string(namestr[0])) ||
|
47
|
|
- strings.Contains(namestr, "!") || strings.Contains(namestr, "@") {
|
|
46
|
+ // # is a channel prefix
|
|
47
|
+ // @+ are channel membership prefixes
|
|
48
|
+ if strings.Contains(namestr, "*") || strings.Contains(namestr, "?") ||
|
|
49
|
+ strings.Contains(namestr, ",") || strings.Contains(namestr, "!") ||
|
|
50
|
+ strings.Contains(namestr, "@") || strings.Contains("#@+", string(namestr[0])) {
|
48
|
51
|
return false
|
49
|
52
|
}
|
50
|
53
|
// names that look like hostnames are restricted to servers, as with other ircds
|