mirror of
https://github.com/ergochat/ergo.git
synced 2024-11-11 06:29:29 +01:00
fix #1479
Give Tor clients who authenticate via SASL a unique cloak, so chanops can ban *!*@tor-network.onion and still allow authenticated Tor users
This commit is contained in:
parent
f2a40b9e5d
commit
d1f8317180
@ -307,6 +307,13 @@ func (client *Client) setAccountName(name string) {
|
|||||||
client.accountName = name
|
client.accountName = name
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (client *Client) setCloakedHostname(cloak string) {
|
||||||
|
client.stateMutex.Lock()
|
||||||
|
defer client.stateMutex.Unlock()
|
||||||
|
client.cloakedHostname = cloak
|
||||||
|
client.updateNickMaskNoMutex()
|
||||||
|
}
|
||||||
|
|
||||||
func (client *Client) historyCutoff() (cutoff time.Time) {
|
func (client *Client) historyCutoff() (cutoff time.Time) {
|
||||||
client.stateMutex.Lock()
|
client.stateMutex.Lock()
|
||||||
if client.account != "" {
|
if client.account != "" {
|
||||||
|
@ -116,6 +116,20 @@ func sendSuccessfulAccountAuth(service *ircService, client *Client, rb *Response
|
|||||||
client.server.sendLoginSnomask(details.nickMask, details.accountName)
|
client.server.sendLoginSnomask(details.nickMask, details.accountName)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// #1479: for Tor clients, replace the hostname with the always-on cloak here
|
||||||
|
// (for normal clients, this would discard the IP-based cloak, but with Tor
|
||||||
|
// there's no such concern)
|
||||||
|
if rb.session.isTor {
|
||||||
|
config := client.server.Config()
|
||||||
|
if config.Server.Cloaks.EnabledForAlwaysOn {
|
||||||
|
cloakedHostname := config.Server.Cloaks.ComputeAccountCloak(details.accountName)
|
||||||
|
client.setCloakedHostname(cloakedHostname)
|
||||||
|
if client.registered {
|
||||||
|
client.sendChghost(details.nickMask, client.Hostname())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
client.server.logger.Info("accounts", "client", details.nick, "logged into account", details.accountName)
|
client.server.logger.Info("accounts", "client", details.nick, "logged into account", details.accountName)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user