# Eggdrop 1.4.5 Botnet Client

**Category:** Eggdrop_Bot
**Original Author:** Robey Pointer (Eggheads)

## Description
This is a version of the Eggdrop IRC bot, which provides automated management and control over multiple channels on an IRC network. It includes features for managing user permissions, channel operations, and network interactions.

## Key Features
- **User Management**: Supports adding, removing, and modifying user permissions.
- **Channel Operations**: Handles joining, parting, kicking, and oping users in channels.
- **Network Interactions**: Manages connections to other bots and IRC servers.
- **Flood Protection**: Implements flood protection mechanisms for channel CTCPs and joins.

## File Analysis
- **acconfig.h** — Template file used by autoheader when building config.h.in.
- **action.fix.tcl** — Fixes actions sent via DCC chat or telnet sessions.
- **alltools.tcl** — Includes various tools like toolbox, toolkit, and moretools for bot functionality.
- **compat.tcl** — Maps old Tcl functions to new ones for backward compatibility.
- **getops-2.2d.tcl** — Script used for requesting and giving ops between bots in a botnet.
- **klined.tcl** — Handles k-lines by removing the server from the bot's list when detected.
- **notes2.tcl** — Provides notes functionality with improved features over previous versions.
- **ques5.tcl** — Manages web file indexing for channels.
- **sentinel1.54.tcl** — Flood protection system integrated with BitchX CTCP simulation.
- **userinfo1.0.tcl** — Displays user information and performs URL conversion to HTML.

- **botcmd.c** — Handles commands that come across the botnet, including sharebots' transfer and update commands.
- **botmsg.c** — Manages formatting of messages sent on the botnet and sends different messages based on versioned bots.
- **botnet.c** — Tracks connected bots in the chain, manages channel name associations, and handles pinging and relaying.
- **chan.h** — Common header file for chan.c and mode.c, requiring users.h to be loaded.
- **chanprog.c** — Manages server lists, revenge punishments, timers, and initialization of tcl scripts.
- **cmds.c** — Handles commands from a user via DCC that do not involve IRC interaction.

- **cmdt.h** — Contains definitions for built-in commands used by the bot.
- **dcc.c** — Manages activity on DCC sockets, including disconnects and other related operations.
- **dccutil.c** — Provides functions to send formatted text over various types of connections, including .who, .whom, and .dccstat.
- **eggdrop.h** — Compile-time settings for the bot.
- **flags.c** — Handles flag matching and conversion functions.
- **flags.h** — Definitions for language support.

- **language.c** — Handles language support code.
- **main.c** — Core event handling, signal management, command line arguments, context, and assert debugging.
- **main.h** — Includes most other include files.
- **match.c** — Wildcard matching functions.
- **mem.c** — Memory allocation and deallocation, tracking memory usage.

- **misc.c** — Handles various utilities like split(), maskhost(), copyfile(), movefile(), logging, queueing output, resync buffers for sharebots, help system, motd display, and %var substitution.
- **modules.c** — Supports modules in Eggdrop.
- **modules.h** — Header file for module support.

- **net.c** — Handles all raw network I/O operations.
- **patch.h** — Header file for adding patches to Eggdrop's version string.
- **proto.h** — Prototypes for every function used outside its own module.
- **rfc1459.c** — Implements RFC 1459 protocol handling, including carat as an uppercase tilde.

- **tandem.h** — Header file for tandem support.
- **tcl.c** — Handles Tcl commands and initialization of the Tcl environment within Eggdrop.
- **tcldcc.c** — Provides Tcl stubs for DCC commands.
- **tclegg.h** — Stuff used by tcl.c and tclhash.c.
- **tclhash.c** — Manages bindings, procedures lookups, and internal procedure bindings to msg/dcc/file commands.
- **tclhash.h** — Header file for tclhash.c.

- **tclmisc.c** — Handles Tcl stubs for file system commands and other miscellaneous functions.
- **tcluser.c** — Provides Tcl stubs for user-record-oriented commands.
- **userent.c** — Handles user entry handling, new style more versatile.
- **userrec.c** — Manages user records, flags, and changes.
- **users.c** — Tests and enforces ignores, adds/removes ignores, lists ignores, auto-links bots, sends/receives a userfile from a bot, lists users, reads the user file.

- **global.h** — RSAREF types and constants.
- **md5.h** — Header for MD5 message-digest algorithm.
- **md5c.c** — Implements RSA Data Security's MD5 message-digest algorithm.
- **module.h** — Header file for module support.
- **modvals.h** — Module values header.

- **assoc.c** — Part of assoc.mod, handles association code moved from botnet.c for module work.
- **bf_tab.h** — Blowfish P-box and S-box tables.
- **blowfish.c** — Encryption and decryption of passwords using the Blowfish algorithm.
- **blowfish.h** — Header file for blowfish.mod.

- **channels.c** — Supports channels within the bot, including commands from users via DCC that cause server interaction.
- **channels.h** — Header file for channels.mod.
- **cmdschan.c** — Handles commands from a user via DCC that cause server interaction.
- **tclchan.c** — Provides Tcl support for channel operations.