# Eggdrop 1.1.0 Botnet Client

**Category:** Eggdrop_Bot
**Original Author:** Robey Pointer

## Description
Eggdrop 1.1.0 is a standalone IRC bot designed to protect channels by managing ops, bans, and other user privileges. It supports automated channel management and file distribution services.

## Key Features
- **Automated Channel Management**: Handles channel mode changes, op assignments, and user bans.
- **File Distribution**: Supports XDCC and fserve for distributing files.
- **IRC Operations**: Manages channel operations such as joining, parting, and kicking users.
- **User Tracking**: Tracks user activity and manages user records with flags.

## File Analysis
- **a.pl** — Checks if the file is approved by a specific user (jeeperz).
- **bf_tab.h** — Defines tables for the Blowfish encryption algorithm.
- **blowfish.c** — Implements the Blowfish encryption algorithm.
- **botcmd.c** — Handles commands from users and botnet connections.
- **botnet.c** — Manages the botnet structure, including channel associations and bot linking.
- **chan.c** — Manages channel operations such as joining, parting, and kicking.
- **chan.h** — Defines structures for channel management.
- **chanprog.c** — Initializes settings and loads Tcl scripts.
- **chanset.c** — Manages chansets and user pointers to cache.
- **cmds.c** — Handles commands from users via DCC connections.
- **cmdt.h** — Defines command types and functions.
- **dcc.c** — Manages DCC (Direct Client-to-Client) connections.
- **dccutil.c** — Provides utilities for DCC operations, including sending formatted text.
- **eggdrop.h** — Contains compile-time settings and defines for the bot.
- **english.h** — Defines strings used in the bot's output.
- **filedb.c** — Manages filesystem database files and handles remote file requests.
- **fileq.c** — Manages the file queue, including adding, removing, listing, and sending queued files.
- **files.c** — Handles all file system commands.
- **files.h** — Defines structures for file database management.
- **gotdcc.c** — Processes incoming CTCP DCC requests and manages outgoing dcc files.
- **hash.c** — Manages procedure lookups and bindings.
- **hash.h** — Default bindings to load into the Tcl hash-tables.
- **main.c** — Handles nickname changes, flood detection, signal handling, and interpreting server responses.
- **match.c** — Implements wildcard matching functions.
- **mem.c** — Manages memory allocation and deallocation.
- **misc.c** — Handles various utility functions such as logging and queueing output.
- **mode.c** — Manages channel mode changes and reactions to them.
- **msgcmds.c** — Handles commands entered via /MSG.
- **msgnotice.c** — Processes messages and notices from users or channels, including simple CTCP requests and replies.
- **net.c** — Manages raw network I/O.
- **notes.c** — Reads and sends notes, kills old notes, and changes destinations.
- **proto.h** — Contains function prototypes for various modules.
- **tandem.h** — Keeps track of tandem bots in the chain and channel associations.
- **tcl.c** — Handles Tcl commands and initialization.
- **tclchan.c** — Implements Tcl stubs for channel-oriented commands.
- **tcldcc.c** — Implements Tcl stubs for DCC commands.
- **tclegg.h** — Used by tcl.c & tclhash.c, defining command types.
- **tclhash.c** — Handles bind and unbind operations, checking and triggering bindings.
- **tclmisc.c** — Implements Tcl stubs for file system commands and other miscellaneous functions.
- **tcluser.c** — Implements Tcl stubs for user record-oriented commands.
- **userrec.c** — Manages user records and flags.
- **users.c** — Handles testing, enforcing bans and ignores, adding and removing them, and listing them.
- **users.h** — Defines structures and functions used by users.c & userrec.c.
- **action.fix.tcl** — Implements an action filter for .me commands.
- **compat.tcl** — Provides compatibility with old command syntaxes.
- **console.tcl** — Saves and restores a user's console settings.
- **dike.tcl** — Detects floodnets by analyzing message patterns.
- **gainops1.tcl** — Sends and handles requests for ops from other tandem bots on the same channel.
- **getops-1.1.tcl** — A gainops type script for v1.1 bots, requesting ops from current ops if no bots are opped.
- **local.tcl** — Intercepts text starting with ' and sends it to local users only.
- **ntalk.irc** — A script for talking to an eggdrop bot in dcc chat.
- **ques3.tcl** — Creates an HTML file showing channel members, their user@hosts, ops, and idle status.
- **samples.tcl** — Provides examples of extending the bot with Tcl scripts.
- **toolbox.tcl** — Contains useful procedures for use in Tcl scripts.
- **toolkit.tcl** — Provides additional Tcl utilities.
- **unserv.tcl** — Removes a server from the internal server list and jumps if necessary.
- **wire.tcl** — Implements secondary encrypted communications on a botnet.