|
@@ -319,6 +319,10 @@ func authenticateHandler(server *Server, client *Client, msg ircmsg.IrcMessage,
|
319
|
319
|
// let the SASL handler do its thing
|
320
|
320
|
exiting := handler(server, client, client.saslMechanism, data, rb)
|
321
|
321
|
|
|
322
|
+ if client.LoggedIntoAccount() && server.AccountConfig().SkipServerPassword {
|
|
323
|
+ client.SetAuthorized(true)
|
|
324
|
+ }
|
|
325
|
+
|
322
|
326
|
// wait 'til SASL is done before emptying the sasl vars
|
323
|
327
|
client.saslInProgress = false
|
324
|
328
|
client.saslMechanism = ""
|
|
@@ -491,9 +495,8 @@ func capHandler(server *Server, client *Client, msg ircmsg.IrcMessage, rb *Respo
|
491
|
495
|
rb.Add(nil, server.name, "CAP", client.nick, "ACK", capString)
|
492
|
496
|
|
493
|
497
|
case "END":
|
494
|
|
- if !client.registered {
|
|
498
|
+ if !client.Registered() {
|
495
|
499
|
client.capState = caps.NegotiatedState
|
496
|
|
- server.tryRegister(client)
|
497
|
500
|
}
|
498
|
501
|
|
499
|
502
|
default:
|
|
@@ -1633,12 +1636,12 @@ func namesHandler(server *Server, client *Client, msg ircmsg.IrcMessage, rb *Res
|
1633
|
1636
|
|
1634
|
1637
|
// NICK <nickname>
|
1635
|
1638
|
func nickHandler(server *Server, client *Client, msg ircmsg.IrcMessage, rb *ResponseBuffer) bool {
|
1636
|
|
- if !client.authorized {
|
1637
|
|
- client.Quit("Bad password")
|
1638
|
|
- return true
|
|
1639
|
+ if client.Registered() {
|
|
1640
|
+ performNickChange(server, client, client, msg.Params[0], rb)
|
|
1641
|
+ } else {
|
|
1642
|
+ client.SetPreregNick(msg.Params[0])
|
1639
|
1643
|
}
|
1640
|
|
-
|
1641
|
|
- return performNickChange(server, client, client, msg.Params[0], rb)
|
|
1644
|
+ return false
|
1642
|
1645
|
}
|
1643
|
1646
|
|
1644
|
1647
|
// NOTICE <target>{,<target>} <message>
|
|
@@ -1831,14 +1834,14 @@ func partHandler(server *Server, client *Client, msg ircmsg.IrcMessage, rb *Resp
|
1831
|
1834
|
|
1832
|
1835
|
// PASS <password>
|
1833
|
1836
|
func passHandler(server *Server, client *Client, msg ircmsg.IrcMessage, rb *ResponseBuffer) bool {
|
1834
|
|
- if client.registered {
|
|
1837
|
+ if client.Registered() {
|
1835
|
1838
|
rb.Add(nil, server.name, ERR_ALREADYREGISTRED, client.nick, client.t("You may not reregister"))
|
1836
|
1839
|
return false
|
1837
|
1840
|
}
|
1838
|
1841
|
|
1839
|
1842
|
// if no password exists, skip checking
|
1840
|
1843
|
if len(server.password) == 0 {
|
1841
|
|
- client.authorized = true
|
|
1844
|
+ client.SetAuthorized(true)
|
1842
|
1845
|
return false
|
1843
|
1846
|
}
|
1844
|
1847
|
|
|
@@ -1850,7 +1853,7 @@ func passHandler(server *Server, client *Client, msg ircmsg.IrcMessage, rb *Resp
|
1850
|
1853
|
return true
|
1851
|
1854
|
}
|
1852
|
1855
|
|
1853
|
|
- client.authorized = true
|
|
1856
|
+ client.SetAuthorized(true)
|
1854
|
1857
|
return false
|
1855
|
1858
|
}
|
1856
|
1859
|
|
|
@@ -1942,7 +1945,7 @@ func privmsgHandler(server *Server, client *Client, msg ircmsg.IrcMessage, rb *R
|
1942
|
1945
|
// http://www.haproxy.org/download/1.8/doc/proxy-protocol.txt
|
1943
|
1946
|
func proxyHandler(server *Server, client *Client, msg ircmsg.IrcMessage, rb *ResponseBuffer) bool {
|
1944
|
1947
|
// only allow unregistered clients to use this command
|
1945
|
|
- if client.registered || client.proxiedIP != nil {
|
|
1948
|
+ if client.Registered() || client.proxiedIP != nil {
|
1946
|
1949
|
return false
|
1947
|
1950
|
}
|
1948
|
1951
|
|
|
@@ -2106,7 +2109,8 @@ func sanickHandler(server *Server, client *Client, msg ircmsg.IrcMessage, rb *Re
|
2106
|
2109
|
rb.Add(nil, server.name, ERR_NOSUCHNICK, client.nick, msg.Params[0], client.t("No such nick"))
|
2107
|
2110
|
return false
|
2108
|
2111
|
}
|
2109
|
|
- return performNickChange(server, client, target, msg.Params[1], rb)
|
|
2112
|
+ performNickChange(server, client, target, msg.Params[1], rb)
|
|
2113
|
+ return false
|
2110
|
2114
|
}
|
2111
|
2115
|
|
2112
|
2116
|
// SCENE <target> <message>
|
|
@@ -2320,16 +2324,11 @@ func unKLineHandler(server *Server, client *Client, msg ircmsg.IrcMessage, rb *R
|
2320
|
2324
|
|
2321
|
2325
|
// USER <username> * 0 <realname>
|
2322
|
2326
|
func userHandler(server *Server, client *Client, msg ircmsg.IrcMessage, rb *ResponseBuffer) bool {
|
2323
|
|
- if client.registered {
|
|
2327
|
+ if client.Registered() {
|
2324
|
2328
|
rb.Add(nil, server.name, ERR_ALREADYREGISTRED, client.nick, client.t("You may not reregister"))
|
2325
|
2329
|
return false
|
2326
|
2330
|
}
|
2327
|
2331
|
|
2328
|
|
- if !client.authorized {
|
2329
|
|
- client.Quit("Bad password")
|
2330
|
|
- return true
|
2331
|
|
- }
|
2332
|
|
-
|
2333
|
2332
|
if client.username != "" && client.realname != "" {
|
2334
|
2333
|
return false
|
2335
|
2334
|
}
|
|
@@ -2350,8 +2349,6 @@ func userHandler(server *Server, client *Client, msg ircmsg.IrcMessage, rb *Resp
|
2350
|
2349
|
client.realname = msg.Params[3]
|
2351
|
2350
|
}
|
2352
|
2351
|
|
2353
|
|
- server.tryRegister(client)
|
2354
|
|
-
|
2355
|
2352
|
return false
|
2356
|
2353
|
}
|
2357
|
2354
|
|
|
@@ -2403,7 +2400,7 @@ func versionHandler(server *Server, client *Client, msg ircmsg.IrcMessage, rb *R
|
2403
|
2400
|
// WEBIRC <password> <gateway> <hostname> <ip> [:flag1 flag2=x flag3]
|
2404
|
2401
|
func webircHandler(server *Server, client *Client, msg ircmsg.IrcMessage, rb *ResponseBuffer) bool {
|
2405
|
2402
|
// only allow unregistered clients to use this command
|
2406
|
|
- if client.registered || client.proxiedIP != nil {
|
|
2403
|
+ if client.Registered() || client.proxiedIP != nil {
|
2407
|
2404
|
return false
|
2408
|
2405
|
}
|
2409
|
2406
|
|