Skip to content
This repository has been archived by the owner on Dec 14, 2020. It is now read-only.

Commit

Permalink
Add SmartIrc4net v0.4.5.1
Browse files Browse the repository at this point in the history
  • Loading branch information
rolfbjarne committed Sep 14, 2011
1 parent 88ddb30 commit f27f302
Show file tree
Hide file tree
Showing 50 changed files with 20,713 additions and 0 deletions.
78 changes: 78 additions & 0 deletions SmartIrc4net/SmartIrc4net-0.4.5.1/API_CHANGE
@@ -0,0 +1,78 @@
/**
* $Id: CHANGELOG 108 2004-11-07 21:04:42Z meebey $
* $URL: svn+ssh://svn.qnetp.net/svn/smartirc/SmartIrc4net/trunk/CHANGELOG $
* $Rev: 108 $
* $Author: meebey $
* $Date: 2004-11-07 22:04:42 +0100 (Sun, 07 Nov 2004) $
*/

API Change (0.2.0 -> 0.3.0) Documentation
-----------------------------------------
This file is only relevent for you if you wrote an IRC application that is
SmartIrc4net 0.2.0 based! If you didn't use SmartIrc4net yet, you can safely
ignore this file and just continue on hacking a great IRC application ;)

The API naming between SmartIrc4net 0.2.0 and 0.3.0 changed a lot, mostly
because of .NET library standards.

Here are the changes:
- All RFC commands in IrcCommands are now prefixed with "Rfc"

If you used the Join() method, then you need to change your calls to
RfcJoin(). The reason is for this change is that the most commands are plain
RFC wrapper methods. This way you can easily distinguish between API
commands/feature and plain RFC commands. Another reason was conflicts or
confusing names like Admin(), Version() or Ison().

Message() got renamed to SendMessage() which makes more clear what that
method actually does.

- All delegates now uses .NET standards conform signatures

If you used JoinEventHandler which was:
JoinEventHandler(string channel, string who, Data ircdata)

it's now:
JoinEventHandler(object sender, JoinEventArgs e);

This way the .NET library standards suggest, because those JoinEventArgs
which extends IrcEventArgs which extends EventArgs can be easily changed at
any time later for additional data.
The "sender" argument is type IrcClient, the irc client object that triggered
the event (very useful for multiple irc connections).
IrcEventArgs always contain the property "Data"
(type IrcMessageData, formerly known as type Data)

This means you have to change all your event method signatures, e.g.:

If you had an event method for OnJoin it was like this:
MyOnJoinMethod(string channel, string who, Data ircdata) {
System.Console.WriteLine(who+" joined on "+channel+"!");
}

you need to change that to:
MyOnJoinMethod(object sender, JoinEventArgs e) {
System.Console.WriteLine(e.Who+" joined on "+e.Channel+"!");
}

you still have the whole parsed IRC message in e.Data!

- Connect() Disconnect() Reconnect() don't return bool anymore

They use now proper exception handling, so catch them!
There is ConnectionException which work for all 3 methods, and also more
specific exception types like:
CouldNotConnectException
AlreadyConnectedException
NotConnectionException

There is also a very general exception type which will catch ANY exception
that SmartIrc4net will throw! It's called:
SmartIrc4netException

- ChannelSync property is renamed to ActiveChannelSync
(read more about in the CHANGELOG)

- Any method that will send a message can throw an exception!
If the IRC library is not connected and you try to send any message, then
a NotConnectedException will be thrown!
189 changes: 189 additions & 0 deletions SmartIrc4net/SmartIrc4net-0.4.5.1/CHANGELOG
@@ -0,0 +1,189 @@
/**
* $Id: CHANGELOG 267 2007-04-06 17:02:22Z meebey $
* $URL: svn+ssh://svn.qnetp.net/svn/smartirc/SmartIrc4net/trunk/CHANGELOG $
* $Rev: 267 $
* $Author: meebey $
* $Date: 2007-04-06 19:02:22 +0200 (Fri, 06 Apr 2007) $
*/

v0.4.0 (SVN r266)
------
fixes:
- fixed null reference exception when CTCP PING contains no data
(thanks to Nick 'Zaf' Clifford, closes sf.net patch #1199630)
- fixed NonRfcSupport, it didn't check for NonRfcSupport in _Event_RPL_NAMREPLY
(thanks to the anonymous poster on the sf.net forum for reporting this)
- added sanity checks to the mode change parser in IrcClient._InterpretChannelMode(),
otherwise some nasty IRCd servers might break us.
- catch ObjectDisposedExceptions in connection handling code.

new:
- IrcConnection now uses an active pinger to better detect network problems,
by default every 60 seconds a ping will be send to the server, if it
doesn't respond the class will disconnect or reconnect depending on
the IrcConnection.AutoReconnect property.
- added IrcConnection.OnAutoConnectError event, raised when there is a problem
with the connection, it passes in AutoConnectErrorEventArgs which server and port
was used and which exception was thrown, this way application can display and
handle connection errors.
- reconnect handling will now store/use keys if ActiveChannelSyncing and
AutoRejoin is activated.
- UTF-8 support
now you can set IrcConnection.Encoding = Encoding.UTF8 and all messages send
and receives will be encoded/decoded to/from UTF-8
- added lots of documentation stabs
- added IrcClient.IsAway property.
- added IrcClient.OnAway, IrcClient.OnAway, IrcClient.OnUnAway and IrcClient.OnNowAway events.
- added IrcClient.OnPong event.
- added IrcClient.AutoJoinOnInvite property, if enabled and the class receives an
invite it will join that channel automatic (don't worry it will not join "0").
- added IrcClient.AutoRejoinOnKick property, if enabled and the class was in a
channel and got kicked, it will try to rejoin that channel.
- added IrcClient.AutoNickHandling property, now you can deactivate the
automatic nick change when a nick collision happens, so you can handle
it on your application instead.
- added IrcCLient.NicknameList property, set in Login() call, will try the
different nicks when the nick was already used, in order.
- added IrcClient.Login() overload for passing a nickname list.
- added some documentation.
- added IrcConnection.Lag property, indicates how much lag is between the
IRCd server and the IRC client.
- added VisualStudio 2005 project files.

changes:
- IrcConnection.Encoding now uses the system encoding as default!
So you might have to set it to Encoding.GetEncoding("ISO-8859-1") manually.
- IrcClient.Reconnect() now stores channel keys too for rejoining them.
- IrcClient.OnCtcpRequest and IrcClient.OnCtcpReply events now passes parsed
CTCP data as CtcpEventArgs.
- Removed log4net initialization, as this can conflict with applications using log4net.
If you need debug output, use the debug build and add this code to your application:
log4net.Config.BasicConfigurator.Configure();
or if you want the old config style with a config file:
FileInfo fi = new FileInfo("SmartIrc4net_log.config");
log4net.Config.DOMConfigurator.ConfigureAndWatch(fi);
- When IrcClient.CtcpVersion is set, the library will no longer advertise
itself in CTCP VERSION replies.

v0.3.5 (SVN r184)
------
fixes:
- fixed bug in channel sync that caused duplicate exception
(Closes sf.net bug #1064190)
- fixed tracking of ops and voices list on join
(thanks to Cl�ment Bourgeois, closes sf.net bug #1075942)
- fixed bug that the initial channel mode is not synced (on join).
- fixed a crash bug in the channel sync code
when a user was voiced/opped/banned 2 times, an ArgumentException was thrown
(thanks to Cl�ment Bourgeois for spotting this)
- fixed handling of a stalled connection
IOException was not catched in the write thread, and in the read thread
the IsConnectionError was not set
- fixed InviteEventArgs, mixed who with channel name
- fixed OnConnected event
now it's raised when the connection is ready for sending data.
- fixed Reconnect() handling in the Listen() loop, moved to ReadLine().
- fixed InviteEventArgs.Channel property,
initialized with the right value now.
- fixed nullref exception in _Event_QUIT()
added sanity checks, FreshIRC network does very ugly things with the IRC
protocol.

changes:
- improved handling of rejoining channels after reconnect.
- using keep-alive socket now.
- removed underscores in parameter names (violates .NET library standards)
- renamed parameters with "text" to different names
(violates .NET library standards)
- using new case-insensitive hashtables (FxCop spotted this)
- improved the example/test program
- main bin/ directory is now used for the example programs
- changed overrides to new (method hiding is sufficient here).
- updated all MS VS.NET project files.

new:
- added Halfop support (with OnHalfop and OnDehalfop events)
if you want to use it do:
irc.NonRfcSupport = true;
NonRfcChannel nchan = GetChannel("#channel");
nchan.Halfops....
or
NonRfcChannelUser nuser = GetChannelUser("#channel", "nick");
nuser.Halfop.....
- added Halfop() and Dehalfop() command to IrcCommands
- added OnErrorMessage event as general hook for all ERR_ messages
- added SendReply(), easy way of replying to a message
(regardless if its a channel, query or notice message)
- added OnMotd event (with MotdEventArgs)
- added IrcClient.Motd property
- added OnChannelPassiveSynced event
- added channel sync timings to channels (Channel.ActiveSyncTime).
- added IrcClient.AutoRelogin setting.
- added IrcConnection.AutoRetryDelay property.
- added IrcConnection.OnConnectionError event.
- added Rfc2812.IsValidNickname() method.
- added IrcConnection.SocketSendTimeout and IrcConnection.SocketReceiveTimeout
- added little benchmark program (examples/benchmark).
- added stresstest program (examples/stresstest).
- added sign target to the makefile

v0.3.0 (SVN r123)
-------
fixes:
- fine tuned the "#ifdef LOG4NET" statements (thanks to prencher for noticing this
log4net is fully optional! (only required for debugging the library)
- fixed bug, the class changed the Op and Voice list of a copy *boing*
(FxCop pointed me to it)
- added check for "~" userflag on nameslist (thanks to Giacomo Di Ciocco)
this broke the library on IRC networks using that userflag on channels
- fixed channel sync bug, when the connection is re-established
(Closes sf.net bug #1043536)
- fixed rejoining channels when using Reconnect()
- added sanity checks in _Event_WHOREPLY()
this will prevent exceptions when the IRC server voilates the RFC
(like some psybnc version do)
- fixed string handling in _Event_PRIVMSG() for CTCP messages
(Closes sf.net bug #1039286)

changes:
- making SmartIrc4net CLS and .NET standards conform
changed all delegates to use EventArgs
- made a few constructors "internal"
- directory struture changed
the structure now represents the API layers
(IrcConnection, IrcCommands and IrcClient)
- regex optimizations (thanks to prencher for the hints)
- renamed all ReplyCodes to conform to .NET standards
(e.g. ReyplCode.RPL_Welcome -> ReplyCode.Welcome)
- renamed IrcConnection.Version to IrcConnection.VersionNumber
- renamed ChannelSync to ActiveChannelSync
later I will introduce PassiveChannelSync, this means only the received
data is used for channel sync no extra commands are send to the IRC server.

new:
- parts of SmartIrc4net have now XML documentation tags
- added *EventArgs for the events
- added exception handling for Connect() Reconnect() Disconnect()
- added VisualStudio project files (thanks to prencher for creating them)
- added constructors to the exception classes (.NET standards)
- added log calls for queue, when data could not be sent and is requeued
- added missing overloads for RFC commands (Closes sf.net bug #1061503)
(Join, Part, Kick, List, Names)
- added more RFC commands, now all RFC 2812 commands are implemented!
(Oper, Motd, Luser, Version, Stats, Service, Squit, Links, Time, Connect,
Trace, Admin, Info, Servlist, Squery, Whois, Whowas, Kill, Ping, Pong,
Away, Rehash, Die, Restart, Summon, Users, Wallops, Userhost, Ison)
- WriteLine() will throw an NotConnectedException now when it's used without
having a connection to an IRC server
- added timeout values for the tcp socket (6 minutes), and activated nodelay flag
- prefixed all IrcCommands that are actually plain RFC commands with "Rfc"
e.g. Join() is now called RfcJoin()

v0.2.0 (SVN r83)
-------
fixes:

changes:

new:
- first public release
35 changes: 35 additions & 0 deletions SmartIrc4net/SmartIrc4net-0.4.5.1/CREDITS
@@ -0,0 +1,35 @@
/**
* $Id: CREDITS 203 2005-06-10 01:42:42Z meebey $
* $URL: svn+ssh://svn.qnetp.net/svn/smartirc/SmartIrc4net/trunk/CREDITS $
* $Rev: 203 $
* $Author: meebey $
* $Date: 2005-06-10 03:42:42 +0200 (Fri, 10 Jun 2005) $
*/

This is the creditslist for SmartIrc4net

The fields are:
(N) name
(E) email
(W) web-address
(P) PGP key ID and fingerprint
(D) description
(S) snail-mail address
---------------------------

N: Mirco Bauer
E: meebey@meebey.net
E: meebey@php.net
W: www.meebey.net
P: EEF946C8 / ABE1 95E1 50A8 DBE7 809D 3F42 7127 E5AB EEF9 46C8
D: Project Leader
S: Kroonhorst 42
S: 22549 Hamburg
S: Germany

N: Benjamin Hall
E: Benjamin.Hall@orcon.net.nz
D: Several patches: AutoRejoinOnKick, AutoJoinOnInvite, NicknameList,
IdleWorkerThread, OnAutoConnectError, Lag, documentation
S: Auckland
S: New Zealand
34 changes: 34 additions & 0 deletions SmartIrc4net/SmartIrc4net-0.4.5.1/FEATURES
@@ -0,0 +1,34 @@
/**
* $Id: FEATURES 141 2004-11-30 20:05:26Z meebey $
* $URL: svn+ssh://svn.qnetp.net/svn/smartirc/SmartIrc4net/trunk/FEATURES $
* $Rev: 141 $
* $Author: meebey $
* $Date: 2004-11-30 21:05:26 +0100 (Tue, 30 Nov 2004) $
*/

Full featurelist of SmartIrc4net
-------------------------------------

- 3 layered API
- IrcConnection (low-level API)
contains socket handling and message buffer
- IrcCommands (extends IrcConnection, middle-level API)
contains RFC IRC commands plus easy to use IRC methods (like Op/Deop/Ban/Unban...)
- IrcClient (extends IrcCommands, high-level API)
full featured IRC class, with channel syncing, fully event driven
- send/receive floodprotection
- detects and changes nickname on nickname collisions
- autoreconnect, if connection is lost
- autoretry for connecting to IRC servers
- debugging/logging system with log levels (using log4net)
- compatible with Mono and Micrsoft .NET Framework
- sendbuffer with a queue that has 3 priority levels (high, medium, low) plus a bypass level (critical)
- channel syncing (tracking of users/modes/topic etc in objects)
- user syncing (tracking the user in channels, nick/ident/host/realname/server/hopcount in objects)
- when channel syncing is acticated the following methods are available:
- IsJoined
- IsOpped
- IsVoiced
- IsBanned
- on reconnect all joined channels will be rejoined, also when keys are used
- own CTCP version reply can be set

0 comments on commit f27f302

Please sign in to comment.