Skip to content

eggdrop not keeping an accurate channel member list #1794

@tydel

Description

@tydel

As reported to Geo in Libera.Chat, I'm having an issue with a new bot I've started. The conversation is a bit of a tag-you're-it situation, so I thought I'd open an issue just to keep everything in one place.

Code is v1.10.0 GA downloaded from eggheads.org.

The IRC network is IRCnet, the configuration is minimal; spawned from eggdrop-basic.conf. The bot's configuration file is:

#! /home/tydel/eggdrop/eggdrop

loadmodule pbkdf2    ; # Generation 2 userfile encryption
loadmodule blowfish  ; # Legacy userfile encryption support
loadmodule channels  ; # Channel support
loadmodule server    ; # Core server support
loadmodule ctcp      ; # CTCP functionality
loadmodule irc       ; # Basic IRC functionality
loadmodule transfer ; # DCC SEND/GET and Userfile transfer
loadmodule share    ; # Userfile sharing
loadmodule compress ; # Compress userfiles for transfer
loadmodule notes     ; # Note storing for users
loadmodule console   ; # Console setting storage
loadmodule assoc    ; # Party line channel naming
loadmodule uptime    ; # Centralized uptime stat collection (https://www.eggheads.org/uptime/)
loadmodule ident    ; # Ident support

##### BASIC SETTINGS #####

set nick "geeksec"
set altnick "geeksec?"
set realname "wtf even is an ass burger?"
set username "geeksec"
set pidfile "conf/geeksec.pid"
set admin "tydel <tydel@tydel.com>"
set network "IRCnet2"
set owner "tydel"
server add irc2.0fucks.com +6697

#set vhost4 "99.99.0.0"
#set vhost6 "2001:db8::c001:b07"
set prefer-ipv6 0

##### LOG FILES #####

logfile mco * "logs/geeksec.log"
logfile jpk #0fucks "logs/#0fucks.log"
set log-forever 0

if {${log-forever}} {
	set switch-logfiles-at 2500
	set keep-all-logs 0
}

set quiet-save 1

##### FILES AND DIRECTORIES #####

set userfile "conf/geeksec.user"
set help-path "help/"

##### BOTNET/DCC/TELNET #####

set botnet-nick "geeksec"
listen +32768 all

##### SSL SETTINGS #####

set ssl-privatekey "conf/geeksec.key"
set ssl-certificate "conf/geeksec.crt"
set ssl-capath "/etc/ssl/"
#set ssl-cert-auth 0
#set ssl-verify-server 0
#set ssl-verify-dcc 0
#set ssl-verify-bots 0
#set ssl-verify-clients 0

##### COMMON MODULES SETTINGS #####

set mod-path "modules/"

#### CHANNELS MODULE ####

set chanfile "conf/geeksec.chan"

#### SERVER MODULE ####

set net-type "IRCnet"
bind evnt - init-server evnt:init_server
proc evnt:init_server {type} {
  global botnick
  putquick "MODE $botnick +i-ws"
#  putserv "PRIVMSG NickServ :identify <password>"
}

set default-port 6667
#set nick-len 9

#### CTCP MODULE ####

set ctcp-mode 1

#### IRC MODULE ####

unbind msg - ident *msg:ident
unbind msg - addhost *msg:addhost

#### NOTES MODULE ####

set notefile "conf/geeksec.notes"

##### AUTOSCRIPTS #####

source scripts/autoscripts.tcl

##### SCRIPTS #####

source scripts/alltools.tcl
source scripts/action.fix.tcl
source scripts/dccwhois.tcl
source scripts/userinfo.tcl
loadhelp userinfo.help

if {[file exists aclocal.m4]} { die {You are attempting to run Eggdrop from the source directory. Please finish installing Eggdrop by running "make install" and run it from the install location.} }

if {[info exists net-type]} {
  switch -- ${net-type} {
    "EFnet" -
    "0" {
      # EFnet
      source scripts/quotepong.tcl
    }
  }
}

When I looked at members of the channel using .channel in partyline, and I noticed that there was a missing nickname (athletic). In my IRC client, I opped athletic and issued another .channel in the partyline. You can see in the partyline logs that this nick was nonexistent:

Mode change on #0fucks for nonexistent athletic!

Partyline logs:

15:32:07 <tydel> .channel
15:32:08 <geeksec> [00:32:08] #tydel# (#0fucks) channel
15:32:08 <geeksec> Channel #0fucks, 18 members, mode +tnl 29:
15:32:08 <geeksec> Channel Topic: home of irc2.0fucks.com
15:32:08 <geeksec> (n = owner, m = master, o = op, d = deop, b = bot)
15:32:08 <geeksec>  NICKNAME  HANDLE    ACCOUNT    JOIN   IDLE         USER@HOST
15:32:08 <geeksec> @geeksec   *         *         07Mar                <- it's me!
15:32:08 <geeksec> @deepsix   tydel     tydel      ---   N  1d         tydel@net-addicts.net
15:32:08 <geeksec> @error     tabb_bots *          ---   o  1d         error@vps-b5f6aa6d.vps.ovh.net
15:32:08 <geeksec> @boot      tabb_bots *          ---   o  1d         boot@185.221.22.153
15:32:08 <geeksec> @moccasin  tabb_bots *          ---   o  1d         moccasin@104.234.37.223
15:32:08 <geeksec> @code      tabb_bots *          ---   o  1d         code@vps-b5f6aa6d.vps.ovh.net
15:32:08 <geeksec> @drop      tabb_bots *          ---   o  1d         drop@sacredland.ca
15:32:08 <geeksec> @goldenrod *         *          ---      1d (away)  ~goldenrod@66.59.197.137
15:32:08 <geeksec> @burnout   burnout   burnout    ---   n 20h         ~burnout@burnout.staff.0fucks.com
15:32:08 <geeksec> @manyfucks tydel     tydel      ---   N  1d         manyfucks@bots.tydel.net
15:32:08 <geeksec> @zerofucks burnout   *          ---   n 20h         ~zerofucks@irc.0fucks.com
15:32:08 <geeksec> @tydel     tydel     tydel      ---   N  1d         tydel@tydel.net
15:32:08 <geeksec> @supr      supr      *          ---   o  1d         supr@suprtechservicesmmxii.org
15:32:08 <geeksec> +irc       tabb_bots *          ---   o  1d         irc@lounge.sacredland.ca
15:32:08 <geeksec> @tabb      tabb      tabb       ---   o  1d         tabb@ircnet2.sacredland.ca
15:32:08 <geeksec> @rude      tabb_bots *          ---   o  1d (away)  rude@66.59.199.13
15:32:08 <geeksec> @worried   tabb_bots *          ---   o  1d (away)  ~worried@82.153.68.47
15:32:08 <geeksec> @square    tabb_bots *          ---   o  1d (away)  square@141.11.229.55
15:32:08 <geeksec> End of channel info.
15:32:31 <geeksec> [00:32:31] #0fucks: mode change '+o athletic' by tydel!tydel@tydel.net
15:32:31 <geeksec> [00:32:31] * Mode change on #0fucks for nonexistent athletic!
15:34:50 <tydel> .channel
15:34:50 <geeksec> [00:34:50] #tydel# (#0fucks) channel
15:34:50 <geeksec> Channel #0fucks, 19 members, mode +tnl 29:
15:34:50 <geeksec> Channel Topic: home of irc2.0fucks.com
15:34:50 <geeksec> (n = owner, m = master, o = op, d = deop, b = bot)
15:34:50 <geeksec>  NICKNAME  HANDLE    ACCOUNT    JOIN   IDLE         USER@HOST
15:34:50 <geeksec> @geeksec   *         *         07Mar                <- it's me!
15:34:50 <geeksec> @deepsix   tydel     tydel      ---   N  1d         tydel@net-addicts.net
15:34:50 <geeksec> @error     tabb_bots *          ---   o  1d         error@vps-b5f6aa6d.vps.ovh.net
15:34:50 <geeksec> @boot      tabb_bots *          ---   o  1d         boot@185.221.22.153
15:34:50 <geeksec> @moccasin  tabb_bots *          ---   o  1d         moccasin@104.234.37.223
15:34:50 <geeksec> @code      tabb_bots *          ---   o  1d         code@vps-b5f6aa6d.vps.ovh.net
15:34:50 <geeksec> @drop      tabb_bots *          ---   o  1d         drop@sacredland.ca
15:34:50 <geeksec> @goldenrod *         *          ---      1d         ~goldenrod@66.59.197.137
15:34:50 <geeksec> @burnout   burnout   burnout    ---   n 20h         ~burnout@burnout.staff.0fucks.com
15:34:50 <geeksec> @manyfucks tydel     tydel      ---   N  1d         manyfucks@bots.tydel.net
15:34:50 <geeksec> @zerofucks burnout   *          ---   n             ~zerofucks@irc.0fucks.com
15:34:50 <geeksec> @tydel     tydel     tydel      ---   N             tydel@tydel.net
15:34:50 <geeksec> @supr      supr      *          ---   o  1d         supr@suprtechservicesmmxii.org
15:34:50 <geeksec> +irc       tabb_bots *          ---   o  1d         irc@lounge.sacredland.ca
15:34:50 <geeksec> @tabb      tabb      tabb       ---   o  1d         tabb@ircnet2.sacredland.ca
15:34:50 <geeksec> @rude      tabb_bots *          ---   o  1d (away)  rude@66.59.199.13
15:34:50 <geeksec> @worried   tabb_bots *          ---   o  1d (away)  ~worried@82.153.68.47
15:34:50 <geeksec> @square    tabb_bots *          ---   o  1d (away)  square@141.11.229.55
15:34:50 <geeksec> @athletic  tabb_bots *          ---   o             athletic@85.209.17.135
15:34:50 <geeksec> End of channel info.

.status all

15:39:01 <tydel> .status all
15:39:01 <geeksec> [00:39:01] #tydel# status all
15:39:01 <geeksec> I am geeksec, running eggdrop v1.10.0: 5 users (mem: 148k).
15:39:01 <geeksec> Online for 1 day, 06:29 (background) - CPU: 00:11.92 - Cache hit:  5.4%
15:39:01 <geeksec> Configured with:
15:39:01 <geeksec> Admin: tydel <tydel@tydel.com>
15:39:01 <geeksec> Config file: conf/geeksec.conf
15:39:01 <geeksec> OS: OpenBSD 7.5
15:39:01 <geeksec> Process ID: 51951 (parent 1)
15:39:01 <geeksec> Tcl library: /usr/local/lib/tcl/tcl8.5
15:39:01 <geeksec> Tcl version: 8.5.19 (header version 8.5.19)
15:39:01 <geeksec> TLS support is enabled.
15:39:01 <geeksec> TLS library: LibreSSL 3.9.0 (header version LibreSSL 3.9.0)
15:39:01 <geeksec> IPv6 support is enabled.
15:39:01 <geeksec> Threaded DNS core is enabled.
15:39:01 <geeksec> Socket table: 20/100
15:39:01 <geeksec>
15:39:01 <geeksec> Botnet nickname: geeksec
15:39:01 <geeksec> Userfile: conf/geeksec.user
15:39:01 <geeksec> Motd: text/motd
15:39:01 <geeksec> Directories:
15:39:01 <geeksec>   Help   : help/
15:39:01 <geeksec>   Modules: modules/
15:39:01 <geeksec> New users get flags [-], notify:
15:39:01 <geeksec> Permanent owner(s): tydel
15:39:01 <geeksec> Logfile #1: logs/geeksec.log on * (mco: msgs, cmds, misc)
15:39:01 <geeksec> Logfile #2: logs/#0fucks.log on #0fucks (pjk: public, joins, kicks/modes)
15:39:01 <geeksec> Ignores last 10 minutes.
15:39:01 <geeksec> Loaded module information:
15:39:01 <geeksec>   Module: ident, v 1.0
15:39:01 <geeksec>   Module: uptime, v 1.4
15:39:01 <geeksec>       6 uptime packets sent
15:39:01 <geeksec>       Approximately 6.24 hours until next update (at Sun Mar  9 06:53:15 2025)
15:39:01 <geeksec>   Module: assoc, v 2.1
15:39:01 <geeksec>     0 current associations
15:39:01 <geeksec>     Using 0 bytes of memory
15:39:01 <geeksec>   Module: console, v 1.3
15:39:01 <geeksec>   Module: notes, v 2.2
15:39:01 <geeksec>     Notes can be stored in: conf/geeksec.notes
15:39:01 <geeksec>     Using 0 bytes of memory
15:39:01 <geeksec>   Module: compress, v 1.2
15:39:01 <geeksec>     zlib version: 1.3.1.1-motley (header version 1.3.1.1-motley)
15:39:01 <geeksec>     0 files compressed
15:39:01 <geeksec>     0 files uncompressed
15:39:01 <geeksec>     Using 0 bytes of memory
15:39:01 <geeksec>   Module: share, v 2.5
15:39:01 <geeksec>     Private owners: no
15:39:01 <geeksec>     Allow resync: no
15:39:01 <geeksec>     Using 96 bytes of memory
15:39:01 <geeksec>   Module: transfer, v 2.4
15:39:01 <geeksec>     DCC block size: 0 (turbo dcc)
15:39:01 <geeksec>     Max simultaneous downloads per user: 3
15:39:01 <geeksec>     Using 0 bytes of memory
15:39:01 <geeksec>   Module: irc, v 1.5
15:39:01 <geeksec>     Channels: #0fucks, #0fucks-ops
15:39:01 <geeksec>     Account tracking: Best-effort
15:39:01 <geeksec>       - WHOX enabled           => Accounts will be known after Eggdrop joins a channel (raw 315)
15:39:01 <geeksec>       - account-notify missing => Accounts will NOT update immediately when users log in or out
15:39:01 <geeksec>       - extended-join enabled  => Accounts will be known immediately when a user joins (bind join)
15:39:01 <geeksec>       See doc/ACCOUNTS for more details
15:39:01 <geeksec>   Module: ctcp, v 1.1
15:39:01 <geeksec>   Module: server, v 1.5
15:39:01 <geeksec>     Online as: geeksec!tydel@freeirc.org (wtf even is an ass burger?)
15:39:01 <geeksec>     Connected to IRCnet2 [irc2.0fucks.com]:+6697 (connected for 1 day)
15:39:01 <geeksec>     Active CAP negotiations: extended-join
15:39:01 <geeksec>     isupport: NETWORK=IRCnet2 CASEMAPPING=ascii INVEX=I EXCEPTS=e WHOX FNC PENALTY CHANMODES=beIR,k,l,imnpstaqr IDCHAN=!:5 CHANNELLEN=50 MAXLIST=beIR:64 KICKLEN=255 TOPICLEN=255 NICKLEN=15 CHANLIMIT=#&!+:42 MODES=3 CHANTYPES=#&!+ PREFIX=(ov)@+ RFC2812
15:39:01 <geeksec>     Msg flood: 5 msgs/60 seconds
15:39:01 <geeksec>     CTCP flood: 3 msgs/60 seconds
15:39:01 <geeksec>     Using 1090 bytes of memory
15:39:01 <geeksec>   Module: channels, v 1.2
15:39:01 <geeksec>     #0fucks             :  19 members, enforcing "+tn" (greet)
15:39:01 <geeksec>       Options: dynamicbans userbans greet protectops dontkickops shared dynamic cycle dynamicexempts userexempts dynamicinvites userinvite
15:39:01 <geeksec>       ban-type: 3
15:39:01 <geeksec>       Bans last 120 minutes.
15:39:01 <geeksec>       Exemptions last 60 minutes.
15:39:01 <geeksec>       Invitations last 60 minutes.
15:39:01 <geeksec>     #0fucks-ops         :   3 members, enforcing "+stn" (greet)
15:39:01 <geeksec>       Options: dynamicbans userbans greet protectops dontkickops shared dynamic cycle dynamicexempts userexempts dynamicinvites userinvite
15:39:01 <geeksec>       ban-type: 3
15:39:01 <geeksec>       Bans last 120 minutes.
15:39:01 <geeksec>       Exemptions last 60 minutes.
15:39:01 <geeksec>       Invitations last 60 minutes.
15:39:01 <geeksec>   Module: encryption, v 2.2
15:39:01 <geeksec>     Blowfish encryption module:
15:39:01 <geeksec>       0 of 3 boxes in use
15:39:01 <geeksec>       Using 0 bytes of memory
15:39:01 <geeksec>   Module: encryption2, v 1.0
15:39:01 <geeksec>   Module: eggdrop, v 110.0

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions