1 2Version 2.0.0 (????, 2008) 3 4 ezbounce 2.0 is a near-complete rewrite. It offers improved reliability and 5 performance, much better support for modern IRC networks, and several new features. 6 7 Summary of major changes: 8 9 * Greatly improved IRC protocol handling: 10 11 - All channels, nicknames, and user hostnames visible are now cached. 12 - Channel mode and topic data are now cached. 13 - IRC Servers with different CASEMAPPING settings are now correctly handled. 14 - Servers supporting UHNAMES are now handled. 15 - Improved processing of Numeric 005 messages. 16 - Several parsing bugs fixed. 17 18 * IPv6 is now supported. It is detected and used automatically -- you don't 19 need to configure anything special. 20 21 * DNS lookups are now non-blocking. This is currently implemented via a separate 22 thread calling resolution functions, so the pthreads library is now required. 23 24 * SSL support greatly improved. The existing code was poorly written, and caused 25 blocking waits and dropped connections, among other things. It is now fully 26 non-blocking. 27 28 * Greatly improved reattaching. The caching of additional IRC data makes reattaches 29 extremely fast and should completely eliminate any "excess flood" problems. 30 31 * Added support for encrypted passwords in the configuration file. See "EncryptedPassword.txt" 32 in the documentation directory ("docs/") for setup instructions. 33 34 * The user preferences system has been completely overhauled. Preferences can now be set for 35 individual IRC networks, servers and channels. For instance, you can choose to enable 36 automatic rejoins for just one channel, but keep it turned off for others. 37 38 For details, please see "UserPreferences.txt" in the docs/ directory. 39 40 * Several new user preferences have been added. For instance: 41 42 - ctcp-version-reply - CTCP version reply; sent while detached 43 - detach-nick - become this nick when detaching 44 - detach-away - sets this /away message when detaching 45 46 These are set from your client via the '/ezb set' command. For a complete listing of 47 available commands, type "/ezb prefs" 48 49 * The syntax of the user preferences file has changed, but there is basic support for importing 50 version 1.0 format preferences files. 51 52 * Chat logging has been improved: 53 54 - Can now log channels in their own log file. 55 - Logging can now be done full time, instead of detached-only. 56 - Logfiles can now be automatically compressed with gzip. 57 - Logfiles are now organized according to IRC network and type. 58 - Setup is easier, and no longer uses cryptic character codes to control 59 logging options. 60 61 More details and setup instructions are described in "ChatLogging.txt" in the 62 docs/ directory. 63 64 * Added a Virtual File System. This is an improvement of the "File Library" found in the 65 unfinished 1.50 series. This implements a Unix-like virtual file system where chat logs, 66 DCC gets, and other files can be stored. Please see "VirtualFileSystem.txt" in the docs/ 67 directory. 68 69 * Added a 'FILE' command to access the Virtual File System (VFS). 70 71 * Added basic flood protection (currently only used while detached). 72 73 * Added support for automatic IRC server reconnection. Type "/ezb help reconnection" 74 for setup details. 75 76 * Extended the `KILL' command so that all users may use it. Users may only kill their own 77 connections (admins may, of course, kill any connection). Also added a '-d' flag to KILL, 78 which forces a connection to detach. 79 80 * Added features for DCC Filtering and DCC Storage. DCC storage allows you to DCC Send files 81 to the proxy and have them stored in the VFS. You can then share them with others on IRC. 82 It also permits storage of files received from other IRC users, for later retrieval at your 83 convenience. 84 85 For details, please see "DCCFeatures.txt" in the docs/ directory. 86 87 * Rewrote the configuration file parser. It now reports line numbers where syntax errors 88 were detected. Also, string literals are now supported (and encouraged). 89 90 * Removed support for the "default" user. This was a special reserved, unprivileged 91 user in the 1.0 series. It was left over from times where user accounts were not supported. 92 Maintaining special support for it had became difficult and pointless. 93 94 * Removed support for detaching with a password. This too was a relic leftover from the 95 old days and now deemed unnecessary. 96 97 * Added a "make install" target to the Makefile. 98 99 * Added a per-user Event Log. This logs various user-specific events such as logins, logouts, 100 IRC connections, detaches, reattaches, and more. Event logs are stored in the VFS, usually as 101 /home/user/logs/event.log 102 103 * Dropped support for old GCC versions (older than version 3.2). 104 105 * The following configuration options have been removed: 106 107 PREVENT-SELF-CONNECTS 108 ENABLE-PRIVATE-LOGGING 109 ENABLE-PUBLIC-LOGGING 110 ENABLE-SEPARATE-LOGGING 111 DEFAULT-LOG-OPTIONS 112 ALLOWED-LOG-OPTIONS 113 NO-REVERSE-LOOKUPS 114 MAX-DNS-WAIT-TIME 115 AUTO-FAKE-IDENTS 116 ENABLE-AUTO-DETACH 117 AUTO-SERVER 118 DEFAULT-VHOST 119 DROP-ON-DISCONNECT 120 MAX-LOGFILE-SIZE 121 KILL-ON-FULL-QUEUE 122 ENABLE-DCC-FILTER 123 124 They will continue to be parsed, but a warning will be emitted, and no operation will be 125 performed. Options were removed for one or more of following reason(s): 126 127 - They became unnecessary (e.g. max-dns-wait-time) 128 - They were replaced with simpler, more clearly-named options (e.g. for logging) 129 - They added more complexity and clutter instead of usefulness being configurable. 130 - They configured a user's *preference* rather than a particular access permission 131 (and were better configurable from the client via the `/ezb set' command) 132 133 134version 1.04c (May 9, 2006) 135 136 * Fixed compile error on gcc 3.4.x 137 138 * Updated contact addresses and project URL. 139 140 141version 1.04b (January 9, 2004) 142 143 * Fixed reattach problems with the first letter of channel names 144 being cut off in some cases. 145 146 * Fixed format string vulnerability in SESSIONS command. 147 148 149version 1.04a (April 26, 2003) 150 151 * Fixed channels not being removed from list after parting. This 152 was causing phantom channels to be joined on reattach. (Only 153 on some networks) 154 155 * Fixed Numeric 005 data being stored incompletely. This was causing 156 oddities on reattach. 157 158 159version 1.04 (December 2, 2002) 160 161 * Fixed "LOG LIST" crashing (Oops) 162 163 164version 1.03 (November 28, 2002) 165 166 * Fixed a problem with logfile sending causing a crash 167 168 * Fixed a potential security hole with strncat() 169 170 * Fixed a bug in server ping replies. This should fix the problems 171 with ping timeouts on IRCDs that use token ping replies. 172 173 174version 1.02 (June 3, 2002) 175 176 * Fixed pid file permissions being set incorrectly 177 178 * Fixed a remotely-exploitable crash 179 180 181version 1.0 (May 5, 2002) 182 183 * Fixed private message logging not working if it was 184 the only option requested. 185 186 * Fixed compile problem w/ time.h on some gnu libc 2.2.x systems 187 188 * Rewrote and improved the command parser. 189 190 * The 'ezb' command now works full time (so you can use it before you 191 connect to an IRC server), and reports bad command errors. 192 193 * Completely rewrote the config file parser.. The configuration 194 format has changed quite a bit.. See below 195 196 * Added a new user account system 197 198 Basically everything is done with users now. You define a user like this: 199 200 user bob { 201 allow { 202 from *.blahblah 203 to irc.* 204 } 205 206 deny { 207 .... 208 } 209 210 set enable-outgoing-dcc-proxying 1 211 set password blahblah 212 set other-options 213 } 214 215 To log in as Bob, a user would connect as usual, and then send 216 /quote LOGIN bob blahblah 217 218 This means you can define multiple users, each with different options 219 and different allow/deny lists. It also allows us to neat things, like 220 doing away w/ detach passwords, and user customizable options that 221 get saved to disk (see below) 222 223 So... you must define at least one user to use ezbounce now. 224 225 There is also a special 'default' user. It is much like a guest account; 226 it behaves like ezbounce versions of old. For example, users still need 227 to set passwords to detach, and can't use a few new features (see below). 228 229 To summarize the other major syntax changes....: 230 231 The following options can only be set globally (i.e. outside of 232 user xxx { } ) blocks 233 234 LOGFILE 235 PIDFILE 236 MOTDFILE 237 USERFILE 238 LOG-DIR 239 NO-REVERSE-LOOKUPS 240 DCC-LISTEN-PORT-RANGE 241 PREVENT-SELF-CONNECTS 242 MAX-DNS-WAIT-TIME 243 KILL-ON-FULL-QUEUE 244 SILENT-REJECTION 245 MAX-REGISTRATION-TIME 246 MAX-FAILED-PASSWORDS 247 248 The following options can only be set INSIDE user blocks 249 250 PASSWORD 251 IS-ADMIN 252 MAX-IDLE-TIME 253 DROP-ON-DISCONNECT 254 ENABLE-DETACH-COMMAND 255 ENABLE-AUTO-DETACH 256 ENABLE-VHOST-COMMAND 257 ENABLE-FAKE-IDENTS 258 AUTO-FAKE-IDENTS 259 AUTO-SERVER 260 ENABLE-OUTGOING-DCC-PROXYING 261 ENABLE-INCOMING-DCC-PROXYING 262 ENABLE-PRIVATE-LOGGING 263 ENABLE-PUBLIC-LOGGING 264 ENABLE-SEPERATE-LOGGING 265 DEFAULT-LOG-OPTIONS 266 MAX-LOGFILE-SIZE 267 268 * You can no longer have global 'allow' blocks. They must be 269 inside user definitions. Global 'deny' blocks are still 270 allowed, (to make sh*tl*sts and such) 271 272 * Note: the vhosts { } block is allowed both globally and in 273 a user block. Global vhosts are avialable to all, and user ones 274 are available only to those specific users. 275 276 * Removed the 'ADMIN' command and the admin { } block 277 278 -- you now define an admin like this: 279 280 user xxx { 281 ... 282 set is-admin 1 283 ... 284 } 285 286 User is given admin priviledges upon his login. Nifty! 287 On a side note, the 'max-failed-admins' option has also been removed 288 289 * Added 'LOGIN' command for the new user system. You should now use 290 this in place of 'PASS' to log into ezb. Syntax is: 291 292 /quote LOGIN <username> <password> [auto-server] 293 294 `-- username: ditto 295 -- password: ditto 296 -- auto-server: server to automatically 297 connect to (optional) 298 299 example: /quote login bob myPass 300 301 * Improved 'PASS' command. We will keep it for compatibility 302 reasons. The syntax is now like this: 303 304 /quote PASS <username>:<password> [auto-server] 305 306 This lets you log in, like the 'login' command. 307 Example: /quote PASS bob:myPass 308 309 The old syntax will still work. However, it can only 310 log you in as the default user. 311 312 i.e. 313 314 /quote pass password 315 316 Will do the same thing as 317 318 /quote login default password 319 320 If you want to login as another user, you MUST use the Login command, 321 OR the new Pass command syntax. 322 323 * Improved detach/attach system. Passwords are no longer 324 required. In fact, you don't have to remember anything 325 anymore, not even the so called 'magic number' 326 327 So now I can do 328 329 /quote ezb detach 330 331 And when I reconnect, ezbounce will conveniently list all my 332 detached sessions, with the id needed to reattach. 333 334 NOTE: 'Default' users MUST still provide a password 335 336 * Added 'ATTACH' command, simply an alias for `REATTACH' 337 338 * Added `SESSIONS' command. Lists all of your current detached 339 sessions. Sample output: 340 341 -ezbounce(srv)- Current detached sessions for user murat: 342 -ezbounce(srv)- ID IRC NICK TO TIME 343 -ezbounce(srv)- 1 druglord_ irc.lagged.org 00:00 344 345 To reattach, I would just have to do /quote ezb reattach 1 346 Nifty, eh? 347 348 TIP: if you only have one detached session, you don't even need 349 to provide an id. 350 351 * Added 'TRAFFIC' command. Displays amount of data transferred 352 between ezbounce and clients and servers 353 354 * Added 'WHOIS' command (for admins only). Syntax: 355 356 /quote WHOIS <username> (or) <id> 357 358 Displays all connections for a particular user. 359 360 * Added 'ECHO' command, sends given text back to client 361 362 * Added a spiffy new login screen. ALSO -- if you have some 363 mad ANSI artwork skills and want to make a 31337 login banner 364 for ezbounce, let me know!! 365 366 * mdidentd finally gets the permissions of the /var/run/mdidentd socket 367 right. 368 369 * Tested mdidentd -- contrary to popular belief, it still works. 370 Updated the documentation. 371 372 * Syntax of LOG FIND has changed a bit... 373 - New syntax is: LOG FIND [password] 374 - IDs are no longer needed 375 - Passwords are optional, (because detach passwords 376 are optional) 377 - Users can only get log files that belong to them 378 - 'Default' users must specify a password. 379 380 * Added per-user preferences. This lets you customize a few 381 settings, AND save them to disk, so ezbounce will remember 382 them across sessions. 383 384 * Added 'SET' command to facilitate this system. 385 386 Usage: /quote ezb SET <preference> <value> 387 388 The following preferences are available: 389 390 auto-detach [0/1] - detach automatically? 391 392 proxy-dcc-in [0/1] - proxy incoming dccs? 393 proxy-dcc-out [0/1] - proxy outgoing dccs? 394 395 fake-ident [string] - fake ident 396 vhost [string] - vhost to use 397 auto-detach-pass [string] - password to use for 398 auto-detach 399 auto-server [string] - server to automatically 400 connect you to 401 402 Examples: 403 /quote ezb set auto-detach 1 404 /quote ezb set fake-ident mrBilly 405 /quote ezb set proxy-dcc-in 0 406 407 Note, the relevent feature must be enabled in the config file. 408 For example, if you set auto-detach to 1, you also need to have 409 "set enable-auto-detach 1" in the config.. So this is useful 410 if you want to disable features you don't want.. 411 412 This also works for the default user, but they won't be able to 413 save their preferences. 414 415 * Added 'SAVE' command. Saves the dynamic user preferences to disk. 416 417 * New configuration option: 418 419 set user-file <filename> 420 421 This is where dynamic user preferences will be saved on disk 422 423 * Added 'RELOAD' command. Reloads user preferences from disk. 424 425 * Added 'ALLOWED' command. Displays what services are available to 426 the user. (For example, if the detach command is enabled and 427 things like that) 428 429 * Added 'TRACE' command. Displays a simple network connection 430 diagram. 431 432 Usage: /quote TRACE <id> 433 434 * Removed 'AUTOPASS' command. Use /quote set auto-detach-pass. 435 Also, you will no longer be assigned an automatic detach 436 password when you connect -- set one! (And it will get saved) 437 438 * Improved on-line help system a lot. Every command is now 439 documented, with syntax listing and an adequate description. 440 441 Usage: /quote HELP <command> 442 443 * Fixed Numeric 005 not being sent back to client properly on 444 reattach -- or being sent even if the IRC server never provided 445 one in the first place 446 447 * ezbounce now actively keeps track of the channels you are on, 448 which means a few new spiffy features, like a faster and simpler 449 reattach.. In the past we would look up that info when a reattach 450 was requested, causing a wait of at least several seconds. 451 The "reattaching" state as shown in the status command by 452 letter 'e' is also gone now. 453 454 * In chat logs, channel is now put before name of speaker. I.e. 455 instead of 456 <bob:#blah> this sucks 457 458 it is now: 459 460 [#blah] <bob> this sucks. 461 462 * Fixed QUITs and nickname changes not being logged -- oops!! 463 464 * Added 'listen-vhost' configuration option. You can use this 465 to configure what interface ezbounce will listen for connections 466 on. (It does the same thing as the -b command line option).. 467 It's global, so you must use it outside of a user { } block. 468 Example: 469 470 set listen-vhost 192.168.1.1 471 472 * Added 'default-vhost' user configuration option. This is like 473 the -c command line option; it lets you choose which interface 474 users will connect to IRC servers on. It's a user option, so it 475 must be inside a user { } block. 476 Example: 477 478 user xxx { 479 set password blah 480 ... 481 set default-vhost my.cool.vhost.com 482 ... 483 } 484 485 * Removed the `-c' command line option. Use the default-vhost 486 config options instead. 487 488 * We now respond to *all* IRC server pings, not just when 489 detached. (This is to make auto-detach more reliable) 490 491 * Fixed a serious file descriptor leak in mdidentd. 492 493 * Added ABOUT and VERSION commands 494 495 * Fixed bugs in the dcc code that might lead to 100% CPU usage and 496 crashes. 497 498 * Now rejoins channel when kicked (while detached) 499 500 * Improved socket handling a lot. The look-up system is much faster, 501 and the data processing to/from client/server is a lot more reliable. 502 In particular, ezbounce now buffers all data before sending it, which 503 will eliminate the problems with data loss under high traffic. 504 505 * Added "max-sockets" configuration option. 506 507 set max-sockets [number] 508 509 This implies that there is now a finite limit on the number of sockets 510 that ezbounce will use. This is true. This may seem restrictive, but 511 results in much simpler and faster code in the socket event processing. 512 513 Default is 128, which is enough for most people. Minimum value 514 permitted is 10. You decide how many you need; keep in mind that each 515 client will need 2 sockets (one for him, and one for connection to server). 516 517 * Added --enable-debug option to the configure script -- useful if you 518 want to do development 519 520 * Removed the configuration options 521 522 max-client-inputQ 523 min-client-inputQ 524 max-server-inputQ 525 min-server-inputQ 526 527 They have been replaced with 528 529 min-buffer-size 530 max-buffer-size 531 532 They are optional, as before, defaulting to 128 and 32768 533 respectively. 534 535 * Added 'LOG VIEW' command. Lets you view detached log files directly in 536 your IRC client w/o getting them via DCC SEND. This is accomplished 537 by a DCC Chat connection. Syntax is the same as 'LOG SEND' ... 538 539 * SSL Support has been added (contributed by 'HoE') 540 To set up: 541 542 ./configure --with-ssl 543 544 And set the following in the configuration file: 545 546 set certfile <.pem file> 547 ssl-listen <ports> (optional) 548 549 To activate an SSL connection, use the CONN command with 550 -ssl argument. Example: 551 552 /quote ezb conn -ssl irc.magicserver.com 553 554 * Now uses safer vsnprintf() and snprintf() 555 556 * Fixed compile problems with GCC 3.x 557 558 * Many more code cleanups and technical improvements that I won't 559 mention. In short, this release, 0wns. :) 560 561 562v0.99.12 (March 2, 2001) 563 564 * Added anti-idle feature while detached. Sends random 565 message to server every so often. 566 567 * Removed enable-detach-on-error and always-detach variables. 568 Instead there is a "enable-auto-detach" variable that, when 569 enabled, will always detach the user, unless he explicitly 570 uses /quote ezb quit. 571 572 Password is again assigned randomly when the user connects. 573 It can be changed via the 'autopass' command. 574 575 * Added recognition for UnReal-ircd's * and ^ user modes in 576 channels during reattach. 577 578 * Admins can no longer reattach w/o password. 579 580 * Included a basic man page 581 582 583v0.99.11 (January 13, 2001) 584 585 * Ezbounce no longer requires poll(). An alternative select()-based 586 implementation has been added to the socket code. 587 588 * Added --enable-use-select option to ./configure script to force use 589 of select() instead of poll() 590 591 * Fixed (??) a 100% CPU usage problem involving poll() 592 593 * Now sends an IRC "ERROR" string for disconnects 594 595 * Minor mdidentd fixes 596 597 598v0.99.10 (October 31, 2000) 599 600 * Fixed ezbounce.pid file being created with random permissions. 601 It will now be made with 0644. 602 603 * Fixed a nasty bug that could cause random crashes. 604 605 606v0.99.9 (October 9, 2000) 607 608 * Fixed DCC proxying using 100% processor time in some cases. 609 610 * Fixed several possible crashes in DCC proxying. 611 612 * STATUS command now displays some DCC proxying info. 613 614 * Changed behavior of outgoing DCC proxying.. It will conenct 615 to the real IP of the sender, not the IP that is stated in 616 the CTCP DCC command (which was wrong in some cases, e.g. 617 if client behind firewall obtained local IP through /whois) 618 619 * Fixed compile errors under GCC 2.9x 620 621 622v0.99.8 (July 29, 2000) 623 624 * Fixed certain logfile options causing a crash on detach. 625 626 * Fixed sending of zero-byte files causing problems. 627 628 * The enable-{private,seperate,channel}-logging options are 629 now properly enforced. 630 631 * Timestamp should be properly encoded in the logfile names 632 sent back to the user now, in the format YYYYMMDD-... 633 634 * Added dcc-listen-port-range option. It allows you to choose 635 which port or ports ezbounce will listen on when doing DCC 636 proxying. Usage: 637 638 set dcc-listen-port-range <ports> 639 640 where ports can any number or series of numbers seperated by 641 commas, and where ranges of numbers can be indicated by a dash. 642 Examples: 643 7000,7005,8225,9000-9100 644 2000-2300,4860 645 6918 646 5700-5710 647 648 * Wrote some simple, cheesy encryption and decryption routines 649 for the passwords that are used in making log file filenames. 650 651 * Redesigned and rewrote the internal socket polling and handling 652 system. Is it faster? I don't know, but I think it's better 653 now. However, ezbounce now requires the poll() system call be 654 present on the machine. Unless you're using an ancient system, 655 you will have this function (./configure script will confirm it). 656 Also as a result, the following issues are fixed: 657 658 * DCC sessions (both send and proxy) are unlimited now; you 659 are especially not restricted to two log file sends at a time. 660 661 * DCC sessions will now survive after the user disconnects from the 662 proxy. 663 664 * DCC sessions will now stay alive through during reattach and 665 deattach. 666 667 * DCC sessions will now properly timeout after 90 seconds. 668 669 * Fixed bogus "Killed user for exceeding idle time limit" messages 670 appearing after users reattaching. 671 672 * Added auto-server option, which automatically connects users to an IRC 673 server as soon as they succesfully connect to the ezbounce proxy. 674 675 set auto-server <server>[:port] [pass] 676 677 server: which server to connect to 678 port: (optional) which port to use 679 pass: (optional) password to use on IRC server 680 681 682 * LOG FIND will now display all results of a search, not just the first two. 683 You can select any of them to send as usual with the LOG SEND command. 684 doing "LOG SEND ALL" however will only send two a time to avoid flooding the 685 user. 686 687 * Logfile creation is now more robust; will honor locked log files and try to 688 create more unique file names if needed. 689 690 * Added a simple away option to detach: 691 692 /quote ezb detach password [away message] 693 694 where away message is what ezbounce will set you /AWAY as 695 with the IRC server. It will unset you away when you reattach. 696 697 * Added LOG LIST command; it will list the search results again 698 for you. 699 700 * Extended PASS command to include the name of a server to connect 701 to. Syntax is: 702 703 /quote PASS <password> [server[:port]] [IRC server password] 704 705 This will let you connect to IRC servers with just one command. 706 Examples: 707 708 /quote PASS secret irc.lagged.org 709 /quote PASS secret5 irc.dal.net:7000 secretpass 710 711 * Now makes link to ezbounce binary named 'ezb' 712 713 * And some long overdue documentation updates.. 714 715 716v0.99.7 (June 10, 2000) 717 718 * Fixed DCC Sends from ezbounce not providing filesize. 719 Some clients didn't mind that it was omitted; some did. 720 721 * DCC sending of logs now properly limited to 2 at a 722 time max. 723 724 * Fixed LOG FIND reporting multiple finds of a file? 725 (Although it did send the proper log files) 726 727 * Fixed odd STATUS command crash. 728 729 * Disabled PONG messages in log for good. 730 731 732v0.99.6 (April 30, 2000) 733 734 * Fixed logging not working if maxsize wasn't set (sigh) 735 736 * Fixed Reattach truncating list of channels to join if it 737 was > 128 chars (some people were affected) 738 739 * Added support for catching numeric 005. They contain some 740 possibly useful information for clients upon reattach. (like 741 detecting if the IRC server supports the DalNet WATCH 742 command. 743 744 * Internal nickname tracking should work well now. 745 746 * Implemented LOG HELP. 747 748 In addition, Thanks to Ben W. for the following improvements: 749 750 * Now handles and saves numerics 002-004 so they can be reproduced 751 on reattach 752 753 * PASS command can now be used before USER and NICK commands.. this 754 allows the server password feature of most IRC clients to be 755 used with ezbounce. 756 757 * Admins can now reattach without a password. 758 759 * Numerous reattach improvements, including: 760 761 * Proper detection of User Mode 762 * Fixed MODE #channel command being sent, causing some 763 clients to screw up 764 * Fix duplicate LUSERs being sent. 765 766 767 768v0.99.5 (April 9, 2000) 769 770 * Ok, ezb command works now. My mistake. 771 772 * Sending of old log files is now possible. The command to use is: 773 774 /quote LOG FIND <id> <password> 775 776 Where 'id' is the id that you had for that session which died, 777 and 'password' is the password for that session. 778 779 This is very preliminary right now. It does not quite work if 780 your nickname is something different from the one ezbounce thinks 781 it is. That's the why the change below was needed... 782 783 * Now keeps track of nickname changes internally throughout your 784 irc changes. Also lets you change your nickname while chillin' 785 on the proxy before connecting to an IRC server. This was all 786 necessary for the DCC Sends to work properly. (note: it doesn't 787 really work that well right now) 788 789 * Added checks to ensure permissions for the log files directory are 790 secure. 791 792 * Fixed a possible crash if the incoming text buffer was full. 793 794 * Fixed a possible crash in the STATUS command. 795 796 * Fixed IRC PASS command being sent to IRC Server at the wrong 797 time during the connection process. Thanks to Rodney J. for catching 798 this one. 799 800 801v0.99.4 (February 22, 2000) 802 803 * Changed permissions on the included sample config files for security 804 purposes. Note that you can't get this fix with the patch, you must 805 get the tarball, or set the permissions manually. Your config files 806 ought to have permissions 0600. 807 808 * Added 'ezb' command as an alias for the ezbounce command. It occurred 809 to me in a vision that much time could be saved by myself and users 810 by typing 3 letters instead of 8 letters! 811 812 * Fixed some serious bugs in the log sending. It is much more robust 813 now. 814 815 * Fixed -b command line option (listen for connections on specific 816 interface) not working on some systems (?). Note to self and 817 fellow coders: remember to zero out sockaddr_in structure 818 before doing anything to it! 819 820 821v0.99.3 (December 29, 1999) 822 823 * Logging while detached. See ezbounce.conf.quick for details and to 824 enable it. 825 Basically you turn it on with the 'log' command. The syntax is: 826 /quote LOG SET <options> 827 828 where options is any combination of the following: 829 830 a - log all (combines p and c) 831 s - log to seperate files 832 p - log private 833 c - log channels 834 n - log nothing! 835 f - log full addresses always 836 t - log with timestamps for all events 837 838 Once you detach, logging will begin. It will continue until you 839 reattach or the connection to the IRC server dies. 840 841 When you reattach, you can retrieve the log files by typing: 842 843 /quote EZBOUNCE LOG SEND all 844 845 Ezbounce will then DCC send them to you. 846 847 Everything is explained in the README in full detail. 848 849 * New config options to support detached-logging.. 850 851 # allow logging of private messages 852 set enable-private-logging 1 853 854 # allow logging of channels 855 set enable-public-logging 1 856 857 # let users store logs in seperate files (that is, one for chan, 858 # one for 859 # private) 860 set enable-seperate-logging 1 861 862 # where to store logs? 863 set log-dir logs/ 864 865 # 866 # Default log options 867 # 868 # Full list of options: 869 # a - log all (combines p and c) 870 # s - log to seperate files 871 # p - log private 872 # c - log channels 873 # n - log nothing! 874 # t - timestamp events 875 # f - log full addresses always 876 # 877 set default-log-options ast 878 879 880 * Redid some of the server log messages. Aimed for a standard format, 881 something easier to understand at first glance. For example, instead 882 of "xxx's connection attempt to yyy:1111 has failed (...)" it is now 883 "Connection attempt FAILED: xxxx to yyy:1111 (...)" 884 885 * Removed the "&" and "!" channel recongnition 'fixes' in 0.85.3 886 that were incorrect. The new detached-logging code does recognize 887 these special channel types properly though. 888 889 * Redid the reattach system, so the target inherits the clients 890 settings, not the other way around as it has been. This mainly 891 simplifies some matters in the code. 892 893 Also this means your reattach id does not change when you reattach 894 so you can detach and reattach again with the same id. 895 896 * For mdidentd, added checks to ensure permissions in directory 897 of socket are appropriate to allow connections to the socket. 898 899 * Now doesn't log PONGs from server while detached or other debug 900 messages, unless you choose to build it to do so. 901 902 * Fixed compile problem on several systems caused by the fact that 903 'MAX' was already #defined on the system but we tried to create 904 a function by that name. 905 906 * Added a simple Message of the Day (MOTD) system. The configuration 907 file variable is: 908 909 set motd-file <filename> 910 911 It will display the contents of that file to the user upon 912 connection to ezbounce and whenever he types /MOTD. 913 914 A sample motd file is included (the sample.MOTD file), but 915 disabled by default. 916 917 918 * Added -u command line option, to change userid after listening 919 socket is bound. This is only useful if you're running it as 920 root and want to bind it to port < 1024 and then want it to 921 drop the root privs. Usage (uid must be numeric): 922 923 ezbounce -u uid config.file 924 925------ 926 927v0.85.3 (August 6, 1999) 928 929 * Fixed default connection and listen vhosts (-c and -h command line 930 options, respectively) being cleared on rehash 931 932 * Fixed 'random' crashes during reattach (was caused by failure to 933 handle privmsg and the like during the info-gathering process) 934 935 * Fixed "trying to reattach to" message showing "(null)" for the target. 936 937 * Improved socklen_t detection in configure script. Will hopefully correct 938 compile failures on OpenBSD and possibly other systems. 939 940 * Small mdidentd updates 941 942 * Added IRCNet ! channel and local (&) channel recongnition where needed. 943 944 945v0.85.2 (May 15, 1999) 946 947 * Fixed CTCPs being blocked if dcc proxying was enabled 948 949 * Fixed outgoing CTCPs being corrupted if dcc proxying was enabled 950 951 * Now handles 0 return from connect() (was only checking for -1 as that 952 is what usually happens with nonblocking connects) 953 954 * Fixed several DCC proxying problems (e.g. sends to slow modem users 955 blowing up). 956 957 958v0.85.1 (May 7, 1999) 959 960 * Fixed CTCP Ping-replies during detach not working 961 962 * 'autopass' command was broken, fixed. 963 964 * Fixed channel modes possibly not being synced on reattach 965 966 * Fixed nickname not being synced on reattach (for some clients) 967 968 * If proxy was started w/o detach-on-error option and it was enabled 969 and rehashed later, clients would not have auto-passwords set. This 970 would result in "unreattachable" clients.. So now if there's 971 no password, the client will not be detached. Use the 972 'autopass' command.. 973 974 * Several Solaris compile/link errors fixed. Many thanks to Rajesh T. 975 for reporting these problems and trying out my fix suggestions! If 976 ezbounce was not building for you on Solaris try it now. 977 978 * configure script updated to check for special libraries that might 979 have to be linked with on some systems. 980 981 * Quick kludge for reattach "to-ruleset" usage count leak. 982 983 984------------------------------------ 985 986ezbounce 0.85 (May 1, 1999) 987 988 * Added DCC proxying. It's all transparent, meaning ezbounce does some 989 clever trick so that clients don't need to do anything special to be 990 able to send *and* receive dccs. So yes, it's both ways. 991 992 To enable it you need to stick these lines in your config: 993 set enable-outgoing-dcc-proxying (0 or 1) 994 set enable-incoming-dcc-proxying (0 or 1) 995 996 for all the details see the README file. It's off by default. 997 998 Not very well tested on big endian machines. Some people have reported 999 success; the reason I'm worried is that I had quite a time trying to get 1000 host byte-order to network byte-order (and vice versa) to work properly. 1001 1002 Completely untested on dialup PPP connections (I'm a Cable Modem Bastard 1003 myself). 1004 1005 Feedback from anyone would be greatly appreciated. 1006 1007 * Fixed vhost-binding not working under FreeBSD. 1008 1009 * Fixed a problem in the buffering code that could data corruption. 1010 1011 * reduced time() calls to once per second and no more (in almost all cases). 1012 1013 * Added detach-on-error feature. Basically it detaches the client if he loses 1014 connection to the proxy with an error. It automatically sets up an 1015 auto-detach password for the user upon connect. This password may also 1016 be changed be the user using the AUTOPASS command. 1017 1018 If the user detaches because of an error, he can reattach normally using 1019 the 'reattach' command. 1020 1021 To enable it you must stick this line in your config (Defaults to off): 1022 set enable-detach-on-error 1 1023 1024 --- Consider it experimental! 1025 1026 * Added hack to prevent linking with libstdc++. To enable it, run configure 1027 as follows: 1028 1029 ./configure --disable-link-stdcxx 1030 1031 and build. Consider it experimental as well! 1032 1033 * Corrected several possible compile errors on different compilers 1034 than mine. 1035 1036 * Admins are now exempt from rulesets. Meaning they can connect anywhere. 1037 1038 * Check for existance of sys/select.h before #include'ing it. Linux libc5 1039 doesn't have it for example. 1040 1041 * #include <sys/types.h> before any other header. This corrects some potential 1042 compilation problems on some systems (FreeBSD is one). 1043 1044 * 'ezbounce' command could be used while connecting to an irc server. fixed. 1045 1046 * Tons of code redone and cleaned up. 1047 1048 * a nasty bug in buffering code fixed (was assuming write() would write all 1049 of requested bytes..) 1050 1051 * If logfile cannot be opened or created on startup, keep going instead of 1052 quitting. 1053 1054 * mdidentd version string was not updated for previous release. 1055 1056 * Idiot proof setup directions after ./configure is done. 1057 1058 * Eliminated "unused parameter int unused" warning for older gcc.. 1059 1060 * Eliminated "argument changes signedness" warnings (hopefully) 1061 1062 * Added a basic pid-writing thing. It's mainly for scripts to be 1063 run with crontab that periodically check if ezbounce is still 1064 running. Ezbounce writes its pid to a file (ezbounce.pid) and the 1065 script checks if its a valid one, if not respawns ezbounce. Such 1066 a script is included (see the ezbchk file). 1067 1068 * Fixed user name being truncated to 3 chars on reattach. 1069 1070 1071ezbounce 0.81 (February 8, 1999) 1072 1073 * Topics should *really* be synched on reattach now. It was even listed 1074 as fixed in this file, but for some reason was not. Oops :) 1075 1076 * Also get user mode on reattach now. 1077 1078 * While detached, ezbounce will now respond to ctcp pings for the detached 1079 client. In order to prevent abuse by flooders, only 1 ping will be replied 1080 to every 5 seconds. 1081 1082 * Fixed a config file loader error message that was getting truncated. 1083 1084 * No longer allows 0-length USER and NICK messages when clients are 1085 registering 1086 1087 * A few hacks to save memory storing nicknames and passwords and such 1088 1089 * Added a switch to mdidentd which will prevent users from setting their 1090 fake idents to the username of a user on the machine. 1091 1092 1093What's new in ezbounce 0.80? (December 31, 1998) 1094 1095 * You can now reload the configuration file while the server is running. 1096 This is done either by the admin-only REHASH command or by sending the 1097 server a SIGHUP signal. Any possible error messages from the process 1098 will be dumped to the log file. See README for finer details. 1099 1100 * User password is now optional. 1101 1102 * I made a special ident daemon-helper thingy that will let proxy users 1103 set their own ident replies regardless of the uid the proxy is running 1104 under. For more information look in mdidentd/README. 1105 1106 * Reorganized several files, moved proxy code to 'src', mdidentd code to 1107 'midentd' and files shared by both to 'libs'. 1108 1109 * Reorganized and cleaned up rule-set related code. 1110 1111 * Some clean up of config file loading code. 1112 1113 * Greatly simplified command parsing code. Code is smaller and is 1114 probably faster. 1115 1116 * In the cleanup process I have also fixed an embarassing bug that 1117 would cause a crash if an invalid command was used with the 'ezbounce' 1118 command. 1119 1120 * Some systems don't appear to define INADDR_NONE (like sunos 5.4??). 1121 Added a fix so ezbounce will compile there. 1122 1123 * ircd-hybrid is drain-bamaged and does not always respond to TIME requests. 1124 This effectively makes the Detaching/Reattaching system useless for some 1125 people. ezbounce now sends a different command besides TIME to get 1126 info about the connection during reattach. 1127 1128 * If a client would die while reattaching a ghost connection might be 1129 left behind (the detached connection he was trying to reattach 1130 to). Although i was sure such conditions were handled properly, 1131 it looks like the code was borken. Fixed. 1132 1133 * Again during reattach.. sometimes the name of the channel joined would 1134 be sent with a space in front of it. This caused a small problem with the 1135 BitchX windowing facilities so we now send it w/o the extra space. 1136 1137 * Reduced the number of times the time() system call was used. In older 1138 versions ugly things could happen like time() being called 55 times 1139 *a second* when there were 50 clients. Now time() is called at most twice 1140 a second regardless of the number of clients. 1141 1142 * Admin can use any vhost he wants now, that is, he is not limited by the 1143 hosts listed in the "vhosts" config file block. 1144 1145 * Admin can use any feature he wants, even if it has been disabled in the 1146 configuration file. 1147 1148 * 'status' command now aware of zombie connections and super-new connections. 1149 1150 * 'admin' command block syntax for configuration files has changed slightly. 1151 Basically you don't need 'set' before 'name' and 'password'. If you don't 1152 know what I'm talking about don't worry about it. 1153 1154 1155What's new in ezbounce 0.71? (???) 1156 1157 * Makefile was using a GNU-specific command that would prevent ezbounce 1158 from compiling on some systems. The relevant section has been commented 1159 out. 1160 1161 * Fixed a problem with the status command that could cause a crash. 1162 1163 * If a detached connection died, the number of clients wouldn't be decremented. 1164 This could actually cause a lot of problems. Fixed. 1165 1166 * setsockopt problem on Solaris fixed. 1167 1168 * Channel topics were not being synced on reattach. 1169 1170 * Corrected compile problem on FreeBSD 2.2.7 1171 1172 1173What's new in ezbounce 0.70? (August 9, 1998) 1174 1175 * added GNU autoconf configure script. ezbounce will compile on older 1176 gccs. 1177 1178 * Handle memory allocation failures a little better. 1179 1180 * server uptime info from STATUS command is now in human-comprehendable 1181 form. 1182 1183 * STATUS also displays cpu time used now. 1184 1185 * client connection time from STATUS is correct now. 1186 1187 * reconnecting after disconnecting from irc server should 1188 really work this time. Note: may cause problems 1189 with some clients. 1190 1191 * added INTERFACE command, lets client bind connection 1192 to any interface available on the machine. 1193 1194 * also added VHOST command which is just an alias to INTERFACE. 1195 1196 * added a vhosts block command, lets you configure which vhosts 1197 clients may use with the vhost/interface command: 1198 vhosts { 1199 ip1.machine.com 1200 blahblah.blahb.alh 1201 69.69.69.69 1202 etc 1203 } 1204 note: 'all' is a special keyword and will allow clients to use all available 1205 vhosts. 1206 Currently only one vhosts block is allowed. If you choose not to 1207 supply one, a dummy one will be created with 'all' as the only address. 1208 1209 * also added a VHOSTS command which lists all the available virtual hosts 1210 that a client may use. 1211 1212 * improved server admin configuration. To define an administrator you now do: 1213 admin { 1214 from *.address.* 1215 set name servadmin 1216 set pass blah60 1217 } 1218 This allows only people from *.address.* to become admins, and the 1219 username and pass they must use are servadmin and blah60. Only one admin 1220 block per customer. The old set admin-name/pass won't work anymore. 1221 1222 * added a prevent-self-connects config option. It prevents clients from 1223 making the proxy connect to itself. 1224 1225 * Added EZBOUNCE command. It is to be used when you have connected 1226 to an irc server and wish to issue a command directly to the proxy 1227 rather than have it relayed to the irc server. 1228 (note: not all commands can be issued thru this interface) 1229 For example, when connected: 1230 1231 /quote DIE death message 1232 will kill the irc server you're on, and 1233 /quote ezbounce DIE death message 1234 will kill ezbounce. Assuming you have proper authorization, of course. 1235 1236 * Added a DETACH command, which lets your connection to an irc server 1237 remain active while disconnecting you from the proxy. While you are 1238 detached, ezbounce will respond to server pings to keep you alive. 1239 It is used as so: 1240 1241 /quote DETACH <password> 1242 1243 To reattach to the connection, you must connect to the proxy and 1244 issue the following command: 1245 1246 /quote REATTACH <connection_id> <password> 1247 1248 Where connection_id is a number ezbounce will give you when you 1249 detach. 1250 1251 The detaching/reattaching facilities don't work very well with all 1252 clients right now. 1253 There is a section in the README file which you can read that 1254 describes the problems. 1255 1256 * Cleaned up interface-binding related code. Also fixed possible 1257 file descriptor leaks. 1258 1259 * Fixed a bug in buffering code which could lead to crashes. 1260 1261 * Less offensive password incorrect message :) 1262 1263 * No longer displays "Welcome to ezbounce" message when you connect, 1264 it now waits until you have succesfully given a password. 1265 1266 * New configuration options: 1267 set max-failed-passwords <num> 1268 Lets you set a limit on how tolerant ezbounce will be on 1269 people giving incorrect passwords. Setting it to 0 disables the 1270 feature. Defaults to 3. Client will be booted off once limit is 1271 reached. 1272 1273 set max-failed-admins <num> 1274 Similar to above one, but controls attempts at becoming server 1275 administrator. Defaults to 0 (off). 1276 1277 set drop-on-disconnect <1|0> 1278 Controls whether or not client should be dropped if he loses connection 1279 to his irc server. Defaults to 0. 1280 1281 set enable-detach-command <1|0> 1282 Enables or disables the DETACH command. Defaults to 1. 1283 1284 set no-reverse-lookups <1|0> 1285 This option controls whether ezbounce will do reverse dns 1286 dns lookups in the ruleset related code or not. Defaults to 0. 1287 Look at sample.conf for more info. 1288 1289 set enable-vhost-command <1|0> 1290 Enables or disables the use of the INTERFACE and VHOST command. 1291 Defaults to 1. 1292 1293 * rewrote gettok(). no longer makes copy of string, should speed up several 1294 other functions. 1295 1296 * ezbounce now tries to save some memory by fine-tuning input buffer sizes 1297 once every minute. 1298 1299 * Added a WRITE command. This command is for administrators only 1300 and allows them to send messages to another user or broadcast it to 1301 everyone. The syntax is (/quote) write <id> <message>. 1302 You obtain the id from the status command, and you can use 'all' to 1303 broadcast to all. 1304 1305 * --help command line option recongnized. 1306 1307 * added a DISCONNECT command. It is intended to be used with the EZBOUNCE 1308 command. It forces a disconnection from the irc server in case it 1309 stops responding or something. 1310 1311 * fixed possible bug that could cause a crash if a bad command was sent 1312 while connecting to an irc server. 1313 1314 * several other internal changes 1315--- 1316 1317What's new in ezbounce 0.61? (July 15, 1998) 1318 1319 * client is no longer dropped if disconnected from irc server. 1320 * small memory leak in config file parsing code fixed. 1321 * bigger memory leak found in buffering code and destroyed. 1322 * small makefile enhancement 1323 1324