Advertisement
Blizzardo1

Server.cs Old Bot Code from Blizzeta 4 and 5

Mar 3rd, 2014
246
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 33.04 KB | None | 0 0
  1. /// Copyright 2010 - 2013, Blizzardo1
  2.  
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Collections.ObjectModel;
  6. using System.Diagnostics;
  7. using System.IO;
  8. using System.Linq;
  9. using System.Threading;
  10. using System.Xml.Serialization;
  11. using Meebey.SmartIrc4net;
  12. using ErrorEventArgs = Meebey.SmartIrc4net.ErrorEventArgs;
  13. using App = System.Windows.Forms;
  14.  
  15. namespace Blizzeta5
  16. {
  17.     public enum Permissions
  18.     {
  19.         Owner = 0,
  20.         Administrator = 1,
  21.         Operator = 2,
  22.         User = 3,
  23.         Guest = 4
  24.     }
  25.  
  26.     [XmlType("Server")]
  27.     public class Server
  28.     {
  29.         #region File Paths
  30.         public static readonly string StartupPath = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);
  31.         public static readonly string DriversPath = string.Format("{0}\\Drivers", StartupPath);
  32.         public static readonly string CmdPath = string.Format("{0}\\Modules", StartupPath);
  33.         public static readonly string LogsPath = string.Format("{0}\\Logs", StartupPath);
  34.         #endregion
  35.  
  36.         PluginLoader RuntimeDrivers;
  37.        
  38.         public Dictionary<string, Blizzeta> OpenChannels = new Dictionary<string, Blizzeta>();
  39.  
  40.         //public static List<Thread> ThreadTracker = new List<Thread>();
  41.         public List<string> Targets = new List<string>();
  42.         private string _nick;
  43.         private string _nspass, _owner;
  44.         private int _port;
  45.         private string _realname;
  46.         private string _server;
  47.         private string _username;
  48.         private string _dbgchan;
  49.        
  50.         public Server()
  51.         {
  52.             Self = this;
  53.             RuntimeDrivers = new PluginLoader(DriversPath, "Core");
  54.         }
  55.  
  56.         #region Properties
  57.         //[XmlIgnore]
  58.         public readonly IrcClient Client = new IrcClient();
  59.         private bool _isLogging;
  60.         //[XmlAttribute("server")]
  61.         public string IrcServer
  62.         {
  63.             get { return _server; }
  64.  
  65.             set { _server = value; }
  66.         }
  67.  
  68.         //[XmlAttribute("nick")]
  69.         public string Nick
  70.         {
  71.             get { return _nick; }
  72.  
  73.             set { _nick = value; }
  74.         }
  75.  
  76.         //[XmlAttribute("realname")]
  77.         public string Realname
  78.         {
  79.             get { return _realname; }
  80.  
  81.             set { _realname = value; }
  82.         }
  83.  
  84.         //[XmlAttribute("port")]
  85.         public int Port
  86.         {
  87.             get { return _port; }
  88.  
  89.             set { _port = value; }
  90.         }
  91.  
  92.         //[XmlAttribute("nickservpass")]
  93.         public string NsPass
  94.         {
  95.             get { return _nspass; }
  96.  
  97.             set { _nspass = value; }
  98.         }
  99.  
  100.         //[XmlAttribute("username")]
  101.         public string UserName
  102.         {
  103.             get { return _username; }
  104.  
  105.             set { _username = value; }
  106.         }
  107.  
  108.         //[XmlAttribute("owner")]
  109.         public string Owner
  110.         {
  111.             get { return _owner; }
  112.  
  113.             set { _owner = value; }
  114.         }
  115.  
  116.         //[XmlAttribute("ignoreajoin")]
  117.         public bool IgnoreAjoin { get; set; }
  118.  
  119.         //[XmlIgnore]
  120.         public bool IgnoreChannel { get; set; }
  121.  
  122.         //[XmlAttribute("IsLogging")]
  123.         public bool IsLogging
  124.         {
  125.             get { return _isLogging; }
  126.  
  127.             set { _isLogging = value; }
  128.         }
  129.  
  130.         //[XmlAttribute("debugchan")]
  131.         public string DebugChannel
  132.         {
  133.             get { return _dbgchan; }
  134.             set { _dbgchan = value; }
  135.         }
  136.  
  137.         //[XmlIgnore]
  138.         public static Server Self { get; set; }
  139.  
  140.         public Blizzeta[] Channels { get; set; }
  141.  
  142.         #endregion
  143.  
  144.         private Blizzeta_Gui.ThreadTracker tt = new Blizzeta_Gui.ThreadTracker();
  145.         public static bool IsNull(object o)
  146.         {
  147.             return (o == null);
  148.         }
  149.        
  150.         public struct BanList
  151.         {
  152.             public string Channel;
  153.             public string Mask;
  154.         }
  155.  
  156.         public List<BanList> BannedList = new List<BanList>();
  157.  
  158.         public void Setup(string server, int port, string nick, string username, string realname, string nickServPassword, string owner, string[] channels, string[] keys)
  159.         {
  160.             _server = server;
  161.             _port = port;
  162.             _nick = nick;
  163.             _realname = realname;
  164.             _username = username;
  165.             _nspass = nickServPassword;
  166.             _owner = owner;
  167.             Channels = new Blizzeta[channels.Length];
  168.             for (int i = 0; i < channels.Length; i++)
  169.                 Channels[i] = new Blizzeta(channels[i]) { Key = keys[i] };
  170.  
  171.             Settings.servers.Add(this);
  172.             //Settings._servers = new Server[4];
  173.             //Settings._servers[0] = this;
  174.             //Settings.SerializeDataFile(Settings._servers);
  175.         }
  176.  
  177.         public void TransportChannels()
  178.         {
  179.             foreach (var chan in Channels)
  180.             {
  181.                 OpenChannels.Add(chan.Channel, chan);
  182.             }
  183.         }
  184.  
  185.         [STAThread()]
  186.         public void Begin()
  187.         {
  188.             AddHandlers();
  189.             Client.SendDelay = 200;
  190.             Client.AutoRetry = true;
  191.             Client.ActiveChannelSyncing = true;
  192.  
  193.             IAsyncResult back = null;
  194.             Action a = new Action(delegate { App.Application.Run(tt); });
  195.            
  196.             if (!IsNull(tt))
  197.             {
  198.                 AsyncCallback call = new AsyncCallback((ar) => { });
  199.                 back = a.BeginInvoke(call, null);
  200.             }
  201.  
  202.             pc("Connecting to {0}...", ConsoleColor.Yellow, _server);
  203.             Client.Connect(_server, _port);
  204.             Client.Login(_nick, _realname, 8, _username, _nspass);
  205.             Client.RfcMode(_nick, "+B");
  206.  
  207.             TransportChannels();
  208.  
  209.             foreach (var b in OpenChannels)
  210.             {
  211.                 b.Value.Server = this;
  212.                 SendPrivmsg(_owner, string.Format("Joining {0}", b.Key));
  213.                 Join(b.Key, b.Value.ChannelPassword);
  214.             }
  215.  
  216.             SendPublicMessage(DebugChannel, string.Format("Using {0} as Debugging Channel", DebugChannel));
  217.  
  218.             // Loop
  219.             Client.Listen();
  220.             // End Loop
  221.             pc("Disconnected!", ConsoleColor.DarkGreen);
  222.             a.EndInvoke(back);
  223.         }
  224.  
  225.         public Blizzeta GetChannel(string channel)
  226.         {
  227.             foreach (var chan in OpenChannels.Where(chan => chan.Key == channel))
  228.             {
  229.                 return chan.Value;
  230.             }
  231.             return new Blizzeta();
  232.         }
  233.  
  234.         public void Join(string channel, string key)
  235.         {
  236.             var b = new Blizzeta(channel) {ChannelPassword = key, Server = this};
  237.  
  238.             SendPrivmsg(_owner, string.Format("Joining {0}", b.Channel));
  239.             Client.RfcJoin(b.Channel, b.ChannelPassword);
  240.             if (!OpenChannels.ContainsKey(b.Channel))
  241.                 OpenChannels.Add(b.Channel, b);
  242.         }
  243.  
  244.         public void Part(string channel, string reason)
  245.         {
  246.             if (OpenChannels.ContainsKey(channel))
  247.                 OpenChannels.Remove(channel);
  248.             Client.RfcPart(channel, reason);
  249.         }
  250.  
  251.         public string HidePassword(string password)
  252.         {
  253.             const char passChar = '*';
  254.             return password.Aggregate(string.Empty, (current, c) => current + passChar);
  255.         }
  256.  
  257.         public void SetLogging(bool plug, string nick)
  258.         {
  259.             _isLogging = plug;
  260.             Client.RfcPrivmsg(nick, string.Format("Logging is now {0}", _isLogging ? "enabled" : "disabled"));
  261.         }
  262.  
  263.         private void AddHandlers()
  264.         {
  265.             Client.OnAutoConnectError += client_OnAutoConnectError;
  266.             Client.OnAway += client_OnAway;
  267.             Client.OnConnected += client_OnConnected;
  268.             Client.OnConnecting += client_OnConnecting;
  269.             Client.OnConnectionError += client_OnConnectionError;
  270.             Client.OnCtcpReply += client_OnCtcpReply;
  271.             Client.OnCtcpRequest += client_OnCtcpRequest;
  272.             Client.OnDisconnected += client_OnDisconnected;
  273.             Client.OnDisconnecting += client_OnDisconnecting;
  274.             Client.OnError += client_OnError;
  275.             Client.OnErrorMessage += client_OnErrorMessage;
  276.             Client.OnInvite += client_OnInvite;
  277.             Client.OnList += client_OnList;
  278.             Client.OnMotd += client_OnMotd;
  279.             Client.OnNames += client_OnNames;
  280.             Client.OnNickChange += client_OnNickChange;
  281.             Client.OnNowAway += client_OnNowAway;
  282.             Client.OnPing += client_OnPing;
  283.             Client.OnPong += client_OnPong;
  284.             Client.OnQueryAction += client_OnQueryAction;
  285.             Client.OnQueryMessage += client_OnQueryMessage;
  286.             Client.OnQueryNotice += client_OnQueryNotice;
  287.             Client.OnReadLine += client_OnReadLine;
  288.             Client.OnRegistered += client_OnRegistered;
  289.             Client.OnUnAway += client_OnUnAway;
  290.             Client.OnWho += client_OnWho;
  291.             Client.OnWriteLine += client_OnWriteLine;
  292.             Client.OnBan += client_OnBan;
  293.             Client.OnChannelAction += client_OnChannelAction;
  294.             Client.OnChannelActiveSynced += client_OnChannelActiveSynced;
  295.             Client.OnChannelMessage += client_OnChannelMessage;
  296.             Client.OnChannelModeChange += client_OnChannelModeChange;
  297.             Client.OnChannelNotice += client_OnChannelNotice;
  298.             Client.OnChannelPassiveSynced += client_OnChannelPassiveSynced;
  299.             Client.OnDehalfop += client_OnDehalfop;
  300.             Client.OnDeop += client_OnDeop;
  301.             Client.OnDevoice += client_OnDevoice;
  302.             Client.OnHalfop += client_OnHalfop;
  303.             Client.OnJoin += client_OnJoin;
  304.             Client.OnKick += client_OnKick;
  305.             Client.OnModeChange += client_OnModeChange;
  306.             Client.OnOp += client_OnOp;
  307.             Client.OnPart += client_OnPart;
  308.             Client.OnQuit += client_OnQuit;
  309.             Client.OnRawMessage += client_OnRawMessage;
  310.             Client.OnTopic += client_OnTopic;
  311.             Client.OnTopicChange += client_OnTopicChange;
  312.             Client.OnUnban += client_OnUnban;
  313.             Client.OnUserModeChange += client_OnUserModeChange;
  314.             Client.OnVoice += client_OnVoice;
  315.         }
  316.  
  317.         public static void Raw(string rawmsg)
  318.         {
  319.             Debug.WriteLine(rawmsg);
  320.         }
  321.  
  322.         public void Log(string nick, string message)
  323.         {
  324.             string format = string.Format("[{0:HH:mm:ss}] <{1}> {2}\r\n", DateTime.Now, nick, message);
  325.             Debug.WriteLine(format);
  326.             File.AppendAllText(string.Format("{0}\\log{1:MMddyyyy}.l", Environment.CurrentDirectory, DateTime.Now),
  327.                                format);
  328.         }
  329.  
  330.         public void AddTarget(string name)
  331.         {
  332.             string[] contents = ReadFile("targets.zz");
  333.             var writer = new StreamWriter("targets.zz");
  334.             foreach (string s in contents)
  335.             {
  336.                 writer.WriteLine(s);
  337.             }
  338.             writer.WriteLine(name);
  339.             writer.Flush();
  340.             writer.Close();
  341.         }
  342.  
  343.         public void RemoveTarget(string name)
  344.         {
  345.             var writer = new StreamWriter("targets.zz");
  346.             string[] reg = ReadFile("targets.zz");
  347.             var ls = new List<string>();
  348.             ls.AddRange(reg);
  349.             int target = ls.BinarySearch(name);
  350.             ls.RemoveAt(target);
  351.             foreach (string s in ls.ToArray())
  352.             {
  353.                 writer.WriteLine(s);
  354.             }
  355.             writer.Flush();
  356.             writer.Close();
  357.         }
  358.  
  359.         public string[] ReadFile(string filename)
  360.         {
  361.             return File.ReadAllLines(filename);
  362.         }
  363.  
  364.         public void OpenTargets()
  365.         {
  366.             // Since we assume our Target Repository is empty, we need to add what we got.
  367.             if (!File.Exists("targets.zz"))
  368.             {
  369.                 File.Create("targets.zz");
  370.             }
  371.  
  372.             string[] zTargets = ReadFile("targets.zz");
  373.  
  374.             foreach (string s in zTargets)
  375.             {
  376.                 Client.RfcPrivmsg(_owner, s);
  377.             }
  378.         }
  379.  
  380.         public void ReloadDriver()
  381.         {
  382.             if (RuntimeDrivers.Reload())
  383.                 pc("Reloaded Runtime Drivers!", ConsoleColor.Green);
  384.             else
  385.                 pc("Runtime Drivers threw an error reloading!", ConsoleColor.Red);
  386.         }
  387.  
  388.         /// <summary>
  389.         ///     Print with Formattable ConsoleColor
  390.         /// </summary>
  391.         /// <param name="format">The Format as {#}</param>
  392.         /// <param name="color">Your Color to use</param>
  393.         /// <param name="parameters">The Parameters specified to your Format</param>
  394.         public static void pc(string format, ConsoleColor color, params object[] parameters)
  395.         {
  396.             Console.ForegroundColor = color;
  397.             //Console.SetCursorPosition(0, Console.WindowWidth - 1);
  398.             Console.WriteLine(format, parameters);
  399.             Console.ResetColor();
  400.         }
  401.  
  402.         /// <summary>
  403.         ///     Print Command With Parsable Settings
  404.         /// </summary>
  405.         /// <param name="command">The Command Style Set</param>
  406.         /// <param name="beginDelimeter">The Delimeter to begin the Command</param>
  407.         /// <param name="endDelimeter">The Delimeter to end the Command</param>
  408.         /// <param name="channel">The Channel to read from</param>
  409.         /// <param name="target"></param>
  410.         public void pcmd(string[] command, char beginDelimeter, char endDelimeter, string channel, string target, bool Private = false)
  411.         {
  412.             string c = command[0];
  413.             string e = command[command.Length - 1];
  414.             if (c.StartsWith(beginDelimeter.ToString()) && e.EndsWith(endDelimeter.ToString()))
  415.             {
  416.                 string str = string.Empty;
  417.                 var Parameters = new List<object>();
  418.                 for (int i = 1; i < command.Length; i++)
  419.                 {
  420.                     string s = command[i];
  421.                     Parameters.Add(s.Trim(beginDelimeter, endDelimeter));
  422.                 }
  423.  
  424.                 string cmd = (command[0]).Trim(beginDelimeter, endDelimeter);
  425.  
  426.                 Run(cmd, Parameters.ToArray(), channel, target, false, Private);
  427.             }
  428.         }
  429.  
  430.         public void pipe(string[] command, string channel, string target)
  431.         {
  432.             string c = command[0];
  433.             List<object> loo = new List<object>();
  434.  
  435.             for (int i = 1; i < command.Length; i++)
  436.             {
  437.                 loo.Add(command[i]);
  438.             }
  439.  
  440.  
  441.             string cmd = c;
  442.  
  443.             if (cmd != null)
  444.                 Run(cmd, loo.ToArray(), channel, target, true);
  445.             else
  446.                 SendPublicMessage(channel, string.Format("Command {0} has not been found!", c));
  447.         }
  448.  
  449.         public void Driver(string command, object sender, object eventargs)
  450.         {
  451.             try
  452.             {
  453.                 var sc = new ScriptContext();
  454.  
  455.                 var t =
  456.                     (new Thread(new ThreadStart(delegate
  457.                         {
  458.                             sc.server = this;
  459.                             var noMod = new List<object> {sender, eventargs};
  460.  
  461.                             sc.Arguments = noMod;
  462.                             if (!(eventargs is EventArgs))
  463.                                 if (eventargs != null)
  464.                                     sc.channel = GetChannel(((IrcEventArgs) eventargs).Data.Channel);
  465.                             sc.nick = _owner;
  466.  
  467.                             try
  468.                             {
  469.                                 IProvider provider = RuntimeDrivers.RequestProvider(command);
  470.                                 provider.Load(ref sc);
  471.                             }
  472.                             catch (Exception ex)
  473.                             {
  474.                                 pc("Error in Driver {0}: {1}", ConsoleColor.Red, command, ex);
  475.                             }
  476.                         })) { Name = command });
  477.                 if(!IsNull(tt))
  478.                     tt.AddThread(t);
  479.                 t.Start();
  480.  
  481.                 while (t.IsAlive)
  482.                 {
  483.                 }
  484.                 t.Join();
  485.                 t.Abort();
  486.                 if(!IsNull(tt))
  487.                     tt.RemoveThread(t);
  488.                 t = null;
  489.             }
  490.             catch (Exception ex)
  491.             {
  492.                 pc(ex.ToString(), ConsoleColor.Red);
  493.                 GC.Collect();
  494.             }
  495.         }
  496.  
  497.         public object Driver(string command, string nick, params object[] args)
  498.         {
  499.             try
  500.             {
  501.                 var sc = new ScriptContext();
  502.  
  503.                 var t =
  504.                     (new Thread(new ThreadStart(delegate
  505.                         {
  506.                             sc.server = this;
  507.                             sc.Arguments = args;
  508.                             sc.nick = nick;
  509.  
  510.                             IProvider provider = RuntimeDrivers.RequestProvider(command);
  511.                             provider.Load(ref sc);
  512.                             //sc.Result = Shell.RunScript(command, sc);
  513.                            
  514.                         })) {Name = command});
  515.                 if(!IsNull(tt))
  516.                     tt.AddThread(t);
  517.                 t.Start();
  518.  
  519.                 while (t.IsAlive)
  520.                 {
  521.                     Thread.Sleep(1);
  522.                 }
  523.  
  524.                 t.Join();
  525.                 t.Abort();
  526.  
  527.                 if (!t.IsAlive)
  528.                 {
  529.                     if(!IsNull(tt))
  530.                         tt.RemoveThread(t);
  531.                     if (sc.Result != null)
  532.                         return sc.Result;
  533.                 }
  534.             }
  535.             catch (Exception ex)
  536.             {
  537.                 pc(ex.ToString(), ConsoleColor.Red);
  538.             }
  539.             return null;
  540.         }
  541.  
  542.         public void Run(string command, object[] commandSet, string destination, string target, bool pipe = false, bool pm = false)
  543.         {
  544.             string args = string.Empty;
  545.             Guid g = Guid.NewGuid();
  546.             var sc = new ScriptContext();
  547.             var se = new ScriptEngine();
  548.             Thread t = (new Thread(new ThreadStart(delegate
  549.             {
  550.                 try
  551.                 {
  552.                     sc.server = this;
  553.                     var noMod = new List<object>();
  554.                     if (commandSet.Length > 0)
  555.                         for (int i = 0; i < commandSet.Length; i++)
  556.                         {
  557.                             // pc("[Argument {0}] {1}", ConsoleColor.Magenta, i, commandSet[i]);
  558.                             args += string.Format("[{0}]; ", commandSet[i]);
  559.                             noMod.Add(commandSet[i]);
  560.                         }
  561.                     //else
  562.                     //pc("[No Arguments]", ConsoleColor.DarkMagenta);
  563.                     sc.channel = GetChannel(destination);
  564.                     sc.nick = target;
  565.  
  566.                     sc.Arguments = noMod;
  567.                     args = args.TrimEnd(' ');
  568.  
  569.                     string cmdlet = string.Format("{0}\\{1}.cs", CmdPath, command);
  570.                     var cmdi = se.GetInterface(cmdlet);
  571.  
  572.  
  573.                     if (cmdi == null)
  574.                     {
  575.                         pc("cmdi is null!", ConsoleColor.Red);
  576.                         SendPublicMessage(destination, "Command Interface : null. Reset ScriptInterface.");
  577.                     }
  578.                     else
  579.                     {
  580.                         pc("[{0:HH:mm:ss} {1}] {2}", ConsoleColor.Green, DateTime.Now, destination, target);
  581.                         pc("Name: {0} - Help: {1} - Usage: {2} - More: {3} - Version: {4} - Permission: {5}", ConsoleColor.DarkGreen, cmdi.Name, cmdi.Help, cmdi.Usage, cmdi.More, cmdi.Version, cmdi.Permission);
  582.                         if (cmdi.IsPublic)
  583.                         {
  584.                             if (uac.GetPermission(target, this) <= cmdi.Permission)
  585.                                 se.Run(cmdlet, ref sc);
  586.                             else
  587.                                 SendPrivmsg(target,
  588.                                            string.Format("You do not have permission to execute the command {0}", command));
  589.                         }
  590.                         else if (pipe)
  591.                         {
  592.                             if (uac.GetPermission(target, this) <= cmdi.Permission)
  593.                                 se.Run(cmdlet, ref sc);
  594.                         }
  595.                         else if (pm)
  596.                         {
  597.                             if (uac.GetPermission(target, this) <= cmdi.Permission)
  598.                                 se.Run(cmdlet, ref sc);
  599.                             else
  600.                                 SendPrivmsg(target,
  601.                                            string.Format("You do not have permission to execute the command {0}", command));
  602.                         }
  603.                         else
  604.                         {
  605.                             SendPublicMessage(destination,
  606.                                               string.Format("The command \"{0}\" can only be used privately!", command));
  607.                         }
  608.                     }
  609.                 }
  610.                 catch (Exception ex)
  611.                 {
  612.                     pc("{0}", ConsoleColor.Red, ex);
  613.                     SendPublicMessage(_dbgchan, string.Format("{0} tried to do {1} in {2}, but errors happened: {3}", target, command, destination, ex.Message));
  614.                     return;
  615.                 }
  616.                 finally
  617.                 {
  618.                     SendPublicMessage(_dbgchan, string.Format("Command: {0}; Arguments: [{1}]; Callee: [{2}]; Destination: \"{3}\"; Fingerprint: [{4}]", command, (args.Length > 0 ? args : "{{ null }}"), target, destination, g));
  619.                 }
  620.             })) { Name = string.Format("USER_CMD__{0}_{1}_{2}", command, target, g) });
  621.             if(!IsNull(tt))
  622.                 tt.AddThread(t);
  623.             t.Start();
  624.             if (!t.IsAlive)
  625.                 if(!IsNull(tt))
  626.                     tt.RemoveThread(t);
  627.         }
  628.  
  629.         public void SendErrorToFile(Exception ex, string Nick)
  630.         {
  631.             if (!Directory.Exists(LogsPath))
  632.                 Directory.CreateDirectory(LogsPath);
  633.             var d = DateTime.Now;
  634.             var r = d.ToString("yyyyMMddHHmmssfft");
  635.             var clientmsg = string.Format("Something has terribly gone wrong. Please report this to {0}! Your new Fingerprint is {1}", _owner, r);
  636.             var servermsg = string.Format("Something has terribly gone wrong. Gathering UserInfo:\nNick: {0}\nFingerPrint: {1}\nTime Of incident: {2}\nException: {3}", Nick, r, d.ToString("dddd MMMM dd, yyyy :: HH:mm:ss"), ex);
  637.             SendPrivmsg(Nick, clientmsg);
  638.             OpenWriteLog(servermsg, string.Format(LogsPath + "\\{0}.blog", r));
  639.         }
  640.  
  641.         public void OpenWriteLog(string Message, string FileName, params object[] Params)
  642.         {
  643.             var w = new StreamWriter(FileName);
  644.             w.WriteLine(Message, Params);
  645.             w.Flush();
  646.             w.Close();
  647.         }
  648.  
  649.         public void SendPublicMessage(string Channel, string Message)
  650.         {
  651.             Client.SendMessage(SendType.Message, Channel, Message);
  652.         }
  653.  
  654.         public void SendPublicAction(string Channel, string Action)
  655.         {
  656.             Client.SendMessage(SendType.Action, Channel, Action);
  657.         }
  658.  
  659.         public void SendNotice(string Whom, string Message)
  660.         {
  661.             Client.SendMessage(SendType.Notice, Whom, Message);
  662.         }
  663.  
  664.         public void SendPrivmsg(string Whom, string Message)
  665.         {
  666.             Client.SendMessage(SendType.Message, Whom, Message);
  667.         }
  668.  
  669.         #region handlers
  670.  
  671.         private void client_OnAway(object sender, AwayEventArgs e)
  672.         {
  673.             Driver("OnAway", sender, e);
  674.         }
  675.  
  676.         private void client_OnAutoConnectError(object sender, AutoConnectErrorEventArgs e)
  677.         {
  678.             Driver("OnAutoConnectError", sender, e);
  679.         }
  680.  
  681.         private void client_OnCtcpRequest(object sender, CtcpEventArgs e)
  682.         {
  683.             Driver("OnCtcpRequest", sender, e);
  684.         }
  685.  
  686.         private void client_OnCtcpReply(object sender, CtcpEventArgs e)
  687.         {
  688.             Driver("OnCtcpReply", sender, e);
  689.         }
  690.  
  691.         private void client_OnConnectionError(object sender, EventArgs e)
  692.         {
  693.             Driver("OnConnectionError", sender, e);
  694.         }
  695.  
  696.         private void client_OnConnecting(object sender, EventArgs e)
  697.         {
  698.             Driver("OnConnecting", sender, e);
  699.         }
  700.  
  701.         private void client_OnConnected(object sender, EventArgs e)
  702.         {
  703.             Driver("OnConnected", sender, e);
  704.         }
  705.  
  706.         private void client_OnDisconnecting(object sender, EventArgs e)
  707.         {
  708.             Driver("OnDisconnecting", sender, e);
  709.         }
  710.  
  711.         private void client_OnDisconnected(object sender, EventArgs e)
  712.         {
  713.             Driver("OnDisconnected", sender, e);
  714.         }
  715.  
  716.         private void client_OnErrorMessage(object sender, IrcEventArgs e)
  717.         {
  718.             Driver("OnErrorMessage", sender, e);
  719.         }
  720.  
  721.         private void client_OnError(object sender, ErrorEventArgs e)
  722.         {
  723.             Driver("OnError", sender, e);
  724.         }
  725.  
  726.         private void client_OnInvite(object sender, InviteEventArgs e)
  727.         {
  728.             Driver("OnInvite", sender, e);
  729.         }
  730.  
  731.         private void client_OnList(object sender, ListEventArgs e)
  732.         {
  733.             Driver("OnList", sender, e);
  734.         }
  735.  
  736.         private void client_OnNowAway(object sender, IrcEventArgs e)
  737.         {
  738.             Driver("OnNowAway", sender, e);
  739.         }
  740.  
  741.         private void client_OnNickChange(object sender, NickChangeEventArgs e)
  742.         {
  743.             Driver("OnNickChange", sender, e);
  744.         }
  745.  
  746.         private void client_OnNames(object sender, NamesEventArgs e)
  747.         {
  748.             Driver("OnNames", sender, e);
  749.         }
  750.  
  751.         private void client_OnMotd(object sender, MotdEventArgs e)
  752.         {
  753.             Driver("OnMotd", sender, e);
  754.         }
  755.  
  756.         private void client_OnQueryNotice(object sender, IrcEventArgs e)
  757.         {
  758.             Driver("OnQueryNotice", sender, e);
  759.         }
  760.  
  761.         private void client_OnQueryMessage(object sender, IrcEventArgs e)
  762.         {
  763.             Driver("OnQueryMessage", sender, e);
  764.         }
  765.  
  766.         private void client_OnQueryAction(object sender, ActionEventArgs e)
  767.         {
  768.             Driver("OnQueryAction", sender, e);
  769.         }
  770.  
  771.         private void client_OnPong(object sender, PongEventArgs e)
  772.         {
  773.             Driver("OnPong", sender, e);
  774.         }
  775.  
  776.         private void client_OnPing(object sender, PingEventArgs e)
  777.         {
  778.             Driver("OnPing", sender, e);
  779.         }
  780.  
  781.         private void client_OnRegistered(object sender, EventArgs e)
  782.         {
  783.             Driver("OnRegistered", sender, e);
  784.         }
  785.  
  786.         private void client_OnReadLine(object sender, ReadLineEventArgs e)
  787.         {
  788.             Driver("OnReadLine", sender, e);
  789.         }
  790.  
  791.         private void client_OnUnAway(object sender, IrcEventArgs e)
  792.         {
  793.             Driver("OnUnaway", sender, e);
  794.         }
  795.  
  796.         private void client_OnWho(object sender, WhoEventArgs e)
  797.         {
  798.             //driver("onwho", sender, e);
  799.             var u = new User
  800.                 {
  801.                     Host = e.WhoInfo.Host,
  802.                     Ident = e.WhoInfo.Ident,
  803.                     IsAway = e.WhoInfo.IsAway,
  804.                     IsIrcOp = e.WhoInfo.IsIrcOp,
  805.                     IsRegistered = e.WhoInfo.IsRegistered,
  806.                     Nick = e.WhoInfo.Nick
  807.                 };
  808.             try
  809.             {
  810.                 Blizzeta b = GetChannel(e.WhoInfo.Channel);
  811.                 //Console.WriteLine("==> Adding {0} from {1} to Userlist", u.Nick, b.Name);
  812.                 b.Userlist.Add(e.WhoInfo.Nick, u);
  813.                 //Console.WriteLine("UserList Count {0}", b.Userlist.Count);
  814.             }
  815.             catch (Exception)
  816.             {
  817.                 //pc(ex.Message, ConsoleColor.Red);
  818.  
  819.                 try
  820.                 {
  821.                     //pc("Creating new Instance for {0}...", ConsoleColor.Cyan, e.WhoInfo.Channel);
  822.                     OpenChannels.Add(e.WhoInfo.Channel, new Blizzeta(e.WhoInfo.Channel));
  823.                     //pc("Attempting to restore User {0} to List for {1}", ConsoleColor.Green, u.Nick, e.WhoInfo.Channel);
  824.                     GetChannel(e.WhoInfo.Channel).Userlist.Add(e.WhoInfo.Nick, u);
  825.                 }
  826.                 catch (Exception)
  827.                 {
  828.                     //pc(exx.Message, ConsoleColor.Red);
  829.                 }
  830.             }
  831.         }
  832.  
  833.         private void client_OnWriteLine(object sender, WriteLineEventArgs e)
  834.         {
  835.             Driver("OnWriteLine", sender, e);
  836.         }
  837.  
  838.         public void Whois(string name)
  839.         {
  840.             Console.WriteLine("Sending WHOIS to Server...");
  841.             Client.WriteLine("WHOIS " + name);
  842.         }
  843.  
  844.         private void client_OnVoice(object sender, VoiceEventArgs e)
  845.         {
  846.             Driver("OnVoice", sender, e);
  847.         }
  848.  
  849.         private void client_OnUserModeChange(object sender, IrcEventArgs e)
  850.         {
  851.             Driver("OnUserModeChange", sender, e);
  852.         }
  853.  
  854.         private void client_OnUnban(object sender, UnbanEventArgs e)
  855.         {
  856.             Driver("OnUnban", sender, e);
  857.         }
  858.  
  859.         private void client_OnTopicChange(object sender, TopicChangeEventArgs e)
  860.         {
  861.             Driver("OnTopicChange", sender, e);
  862.         }
  863.  
  864.         private void client_OnTopic(object sender, TopicEventArgs e)
  865.         {
  866.             Driver("OnTopic", sender, e);
  867.         }
  868.  
  869.         private void client_OnQuit(object sender, QuitEventArgs e)
  870.         {
  871.             /*Moved to Blizzeta.cs*/
  872.             //Blizzeta b = GetChannel(e.Data.Channel);
  873.             //try
  874.             //{
  875.             //    if (b != null)
  876.             //        b.Userlist.Remove(e.Who);
  877.             //}
  878.             //catch (Exception ex)
  879.             //{
  880.             //    Console.WriteLine(ex.Message);
  881.             //    SendPublicMessage(e.Data.Channel, ex.Message);
  882.             //}
  883.         }
  884.  
  885.         private void client_OnPart(object sender, PartEventArgs e)
  886.         {
  887.             Driver("OnPart", sender, e);
  888.         }
  889.  
  890.         private void client_OnOp(object sender, OpEventArgs e)
  891.         {
  892.             Driver("OnOp", sender, e);
  893.         }
  894.  
  895.         private void client_OnModeChange(object sender, IrcEventArgs e)
  896.         {
  897.             Driver("OnModeChange", sender, e);
  898.         }
  899.  
  900.         private void client_OnKick(object sender, KickEventArgs e)
  901.         {
  902.             Driver("OnKick", sender, e);
  903.         }
  904.  
  905.         private void client_OnJoin(object sender, JoinEventArgs e)
  906.         {
  907.             Driver("OnJoin", sender, e);
  908.         }
  909.  
  910.         private void client_OnHalfop(object sender, HalfopEventArgs e)
  911.         {
  912.             Driver("OnHalfOp", sender, e);
  913.         }
  914.  
  915.         private void client_OnDevoice(object sender, DevoiceEventArgs e)
  916.         {
  917.             Driver("OnDevoice", sender, e);
  918.         }
  919.  
  920.         private void client_OnDeop(object sender, DeopEventArgs e)
  921.         {
  922.             Driver("OnDeop", sender, e);
  923.         }
  924.  
  925.         private void client_OnDehalfop(object sender, DehalfopEventArgs e)
  926.         {
  927.             Driver("OnDeHalfop", sender, e);
  928.         }
  929.  
  930.         private void client_OnChannelPassiveSynced(object sender, IrcEventArgs e)
  931.         {
  932.             Driver("OnChannelActiveSynced", sender, e);
  933.         }
  934.  
  935.         private void client_OnChannelNotice(object sender, IrcEventArgs e)
  936.         {
  937.             Driver("OnChannelNotice", sender, e);
  938.         }
  939.  
  940.         private void client_OnChannelModeChange(object sender, IrcEventArgs e)
  941.         {
  942.             Driver("OnChannelModeChange", sender, e);
  943.         }
  944.  
  945.         private void client_OnChannelMessage(object sender, IrcEventArgs e)
  946.         {
  947.             Driver("OnChannelMessage", sender, e);
  948.         }
  949.  
  950.         private void client_OnChannelActiveSynced(object sender, IrcEventArgs e)
  951.         {
  952.             Driver("OnChannelActiveSynced", sender, e);
  953.         }
  954.  
  955.         private void client_OnChannelAction(object sender, ActionEventArgs e)
  956.         {
  957.             Driver("OnChannelAction", sender, e);
  958.         }
  959.  
  960.         private void client_OnBan(object sender, BanEventArgs e)
  961.         {
  962.             Driver("OnBan", sender, e);
  963.         }
  964.  
  965.         private void client_OnRawMessage(object sender, IrcEventArgs e)
  966.         {
  967.             Driver("OnRawMessage", sender, e);
  968.         }
  969.  
  970.         #endregion
  971.  
  972.         public struct User
  973.         {
  974.             public string Host;
  975.             public string Ident;
  976.             public bool IsAway;
  977.             public bool IsIrcOp;
  978.             public bool IsRegistered;
  979.             public string Nick;
  980.         }
  981.     }
  982. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement