mirror of
https://github.com/idanoo/autobrr
synced 2025-07-24 01:09:13 +00:00
feat(irc): join valid channels from invite (#354)
This commit is contained in:
parent
f74b348b26
commit
01888aeb1c
1 changed files with 40 additions and 14 deletions
|
@ -619,11 +619,6 @@ func (h *Handler) handlePart(msg ircmsg.Message) {
|
||||||
|
|
||||||
h.log.Debug().Msgf("PART channel %v", channel)
|
h.log.Debug().Msgf("PART channel %v", channel)
|
||||||
|
|
||||||
if err := h.client.Part(channel); err != nil {
|
|
||||||
h.log.Error().Err(err).Msgf("error handling part: %v", channel)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// reset monitoring status
|
// reset monitoring status
|
||||||
v, ok := h.channelHealth[channel]
|
v, ok := h.channelHealth[channel]
|
||||||
if !ok {
|
if !ok {
|
||||||
|
@ -642,8 +637,7 @@ func (h *Handler) handlePart(msg ircmsg.Message) {
|
||||||
func (h *Handler) PartChannel(channel string) error {
|
func (h *Handler) PartChannel(channel string) error {
|
||||||
h.log.Debug().Msgf("PART channel %v", channel)
|
h.log.Debug().Msgf("PART channel %v", channel)
|
||||||
|
|
||||||
err := h.client.Part(channel)
|
if err := h.client.Part(channel); err != nil {
|
||||||
if err != nil {
|
|
||||||
h.log.Error().Err(err).Msgf("error handling part: %v", channel)
|
h.log.Error().Err(err).Msgf("error handling part: %v", channel)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -670,23 +664,29 @@ func (h *Handler) handleJoined(msg ircmsg.Message) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// get channel
|
// get channel
|
||||||
channel := msg.Params[1]
|
channel := strings.ToLower(msg.Params[1])
|
||||||
|
|
||||||
h.log.Debug().Msgf("JOINED: %v", msg.Params[1])
|
h.log.Debug().Msgf("JOINED: %v", msg.Params[1])
|
||||||
|
|
||||||
|
// check if channel is valid and if not lets part
|
||||||
|
valid := h.isValidHandlerChannel(channel)
|
||||||
|
if !valid {
|
||||||
|
if err := h.PartChannel(channel); err != nil {
|
||||||
|
h.log.Error().Err(err).Msgf("error handling part for unwanted channel: %v", channel)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
// set monitoring on current channelHealth, or add new
|
// set monitoring on current channelHealth, or add new
|
||||||
v, ok := h.channelHealth[strings.ToLower(channel)]
|
v, ok := h.channelHealth[channel]
|
||||||
if ok {
|
if ok {
|
||||||
v.SetMonitoring()
|
v.SetMonitoring()
|
||||||
} else if v == nil {
|
} else if v == nil {
|
||||||
h.AddChannelHealth(channel)
|
h.AddChannelHealth(channel)
|
||||||
}
|
}
|
||||||
|
|
||||||
valid := h.isValidChannel(channel)
|
h.log.Info().Msgf("Monitoring channel %v", msg.Params[1])
|
||||||
if valid {
|
|
||||||
h.log.Info().Msgf("Monitoring channel %v", msg.Params[1])
|
|
||||||
return
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (h *Handler) sendConnectCommands(msg string) error {
|
func (h *Handler) sendConnectCommands(msg string) error {
|
||||||
|
@ -721,6 +721,14 @@ func (h *Handler) handleInvite(msg ircmsg.Message) {
|
||||||
// get channel
|
// get channel
|
||||||
channel := msg.Params[1]
|
channel := msg.Params[1]
|
||||||
|
|
||||||
|
h.log.Trace().Msgf("INVITE from %v to join: %v ", msg.Nick(), channel)
|
||||||
|
|
||||||
|
validChannel := h.isValidHandlerChannel(channel)
|
||||||
|
if !validChannel {
|
||||||
|
h.log.Trace().Msgf("invite from %v to join: %v - invalid channel, skip joining", msg.Nick(), channel)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
h.log.Debug().Msgf("INVITE from %v, joining %v", msg.Nick(), channel)
|
h.log.Debug().Msgf("INVITE from %v, joining %v", msg.Nick(), channel)
|
||||||
|
|
||||||
err := h.client.Join(channel)
|
err := h.client.Join(channel)
|
||||||
|
@ -817,6 +825,24 @@ func (h *Handler) isValidChannel(channel string) bool {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// check if channel is from definition or user defined
|
||||||
|
func (h *Handler) isValidHandlerChannel(channel string) bool {
|
||||||
|
channel = strings.ToLower(channel)
|
||||||
|
|
||||||
|
_, ok := h.validChannels[channel]
|
||||||
|
if ok {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, ircChannel := range h.network.Channels {
|
||||||
|
if channel == strings.ToLower(ircChannel.Name) {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
// irc line can contain lots of extra stuff like color so lets clean that
|
// irc line can contain lots of extra stuff like color so lets clean that
|
||||||
func (h *Handler) cleanMessage(message string) string {
|
func (h *Handler) cleanMessage(message string) string {
|
||||||
var regexMessageClean = `\x0f|\x1f|\x02|\x03(?:[\d]{1,2}(?:,[\d]{1,2})?)?`
|
var regexMessageClean = `\x0f|\x1f|\x02|\x03(?:[\d]{1,2}(?:,[\d]{1,2})?)?`
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue