Exemple #1
0
 void HandleCharacterUpdate(OperationCompleteEvent data)
 {
     if (data.Success == false)
     {
         Log.Write(LogLevel.Warning, "Error updating quest tracker for user.");
     }
 }
Exemple #2
0
 private void SyncContactList(OperationCompleteEvent opCompleteEvent)
 {
     // send sync command
     notifyRouter.SendMessage(
         Message.ConstructMessage("SYN", this.settings.ContactListVersion.ToString()),
         new ResponseReceivedHandler(OnSynResponse), opCompleteEvent);
 }
Exemple #3
0
        /// <summary>
        /// Begins a conversation with the specified friend.
        /// </summary>
        /// <param name="friend"></param>
        /// <param name="byinvite">Whether the conversation has been initiated by the user or by the plugin</param>
        /// <param name="tag">Plugin-defined object</param>
        /// <param name="opCompleteEvent"></param>
        public void StartConversation(Friend friend, bool byinvite, object tag, OperationCompleteEvent opCompleteEvent)
        {
            if (this.conversationTable.Contains(friend))
            {
                MessageForm messageForm = (MessageForm)this.conversationTable[friend];
                if (!byinvite)
                {
                    messageForm.BringToFront();
                }
            }
            else
            {
                MessageForm messageForm = new MessageForm(this, friend);

                messageForm.Closed += new EventHandler(OnMessageFormClosed);

                if (!byinvite)
                {
                    messageForm.Show();
                }

                messageForm.Connect(byinvite, tag, opCompleteEvent);

                conversationTable.Add(friend, messageForm);
            }
        }
Exemple #4
0
    public void BlockFriend(Friend friend, OperationCompleteEvent opCompleteEvent)
    {
        this.AddContactToList(ListType.Allow, friend, false);
        this.AddContactToList(ListType.Block, friend, true);

        opCompleteEvent.Execute(new OperationCompleteArgs());
    }
Exemple #5
0
        /// <summary>
        /// Unblock a friend.
        /// </summary>
        /// <param name="friend"></param>
        /// <param name="op"></param>
        public void UnblockFriend(Friend friend, OperationCompleteEvent op)
        {
            this.protocol.UnblockFriend(friend, op);
            this.protocolServer.UnblockFriend(friend);

            op.RegisterEvent(new OperationCompleteHandler(OnUnblockFriendCompleted), friend);
        }
Exemple #6
0
        /// <summary>
        /// Connect the protocol.
        /// </summary>
        /// <param name="opCompleteEvent"></param>
        public void Connect(OperationCompleteEvent opCompleteEvent)
        {
            if (!this.isConnected && this.settings.Enabled)
            {
                this.isConnecting = true;

                this.protocolServer.OnBeginConnect();

                opCompleteEvent.RegisterEvent(new OperationCompleteHandler(OnConnectionComplete));

                // abort the connection thread if exists
                if (this.connectionThread != null)
                {
                    try
                    {
                        if (this.connectionThread.IsAlive)
                        {
                            this.connectionThread.Abort();
                        }
                    }
                    catch
                    {}

                    this.connectionThread = null;
                }

                // start the connection on a new thread.
                this.connectionThread = new ArgThread(new ConnectHandler(pConnect));
                this.connectionThread.Start(new object[] { opCompleteEvent });
            }
        }
Exemple #7
0
 /// <summary>
 /// Handler for the thread created by Connect().
 /// </summary>
 /// <param name="opCompleteEvent"></param>
 private void pConnect(OperationCompleteEvent opCompleteEvent)
 {
     // create IProtocol derived class
     this.protocol = this.classFactory.CreateProtocol(this.protocolControl, this.settings);
     this.protocol.Connect(opCompleteEvent);
     Thread.Sleep(connectionTimeout);
 }
Exemple #8
0
        /// <summary>
        /// Connect the conversation up.
        /// </summary>
        /// <param name="byinvite">True if the conversation was initiated by someone on the contact list, false if the user clicked on the name</param>
        /// <param name="tag">If the conversation was started by someone on the contact list, this is a plugin-defined object</param>
        /// <param name="opCompleteEvent"></param>
        public void Connect(bool byinvite, object tag, OperationCompleteEvent opCompleteEvent)
        {
            this.conversationServer = new ConversationServer(this.protocol.Server);

            this.conversationServer.AddListener(this);
            this.conversationServer.AddListener(log);

            this.conversation = this.protocol.ClassFactory.CreateConversation(
                this.protocol.IProtocol,
                new ConversationControl(this.conversationServer),
                this.protocol.Settings);

            opCompleteEvent.RegisterEvent(new OperationCompleteHandler(OnConnectionComplete));

            if (byinvite)
            {
                this.conversation.StartByInvitation(this.originalFriend, opCompleteEvent, tag);
            }
            else
            {
                this.conversation.Start(this.originalFriend, opCompleteEvent);
            }

            this.connectionInProgress = true;
        }
Exemple #9
0
    private void ShowStats(AgentPrivate agent)
    {
        ModalDialog            modalDialog = agent.Client.UI.ModalDialog;
        OperationCompleteEvent result      = (OperationCompleteEvent)WaitFor(modalDialog.Show, getVisitorMessage(), "OK", "Reset");

        if (result.Success && modalDialog.Response == "Reset")
        {
            WaitFor(modalDialog.Show, "Are you sure you want to reset visitor counts?", "Yes!", "Cancel");
            if (modalDialog.Response == "Yes!")
            {
                // Make a new dictionary of everyone still here to replace the current tracking info.
                Dictionary <string, Visitor> stillHere = Visitors;
                Visitors = new Dictionary <string, Visitor>();

                foreach (var visitor in stillHere)
                {
                    Visitor v = new Visitor();
                    v.TotalTime           = TimeSpan.Zero;
                    v.VisitStarted        = Stopwatch.GetTimestamp();
                    v.Here                = true;
                    Visitors[visitor.Key] = v;
                }

                WaitFor(modalDialog.Show, "Visitor times reset.", "", "Ok");
            }
        }
    }
Exemple #10
0
    public void StartByInvitation(Friend friend, OperationCompleteEvent opCompleteEvent, object tag)
    {
        object[] objs      = (object[])tag;
        string   sbIP      = (string)objs[0];
        int      sbPort    = (int)objs[1];
        string   hash      = (string)objs[2];
        string   sessionID = (string)objs[3];

        try
        {
            Proxy.IConnection conn = this.control.CreateConnection();
            conn.Connect("", 0, sbIP, sbPort, Proxy.ConnectionType.Tcp);
            sbRouter = new MessageRouter(this.protocol, conn, null, null);

            RegisterCodeEvents();

            sbRouter.SendMessage(Message.ConstructMessage("ANS",
                                                          this.settings.Username + " " + hash + " " + sessionID),
                                 new ResponseReceivedHandler(OnAnswerResponse), opCompleteEvent);
        }
        catch
        {
            opCompleteEvent.Execute(new OperationCompleteArgs("Could not connect", true));
        }
    }
Exemple #11
0
    private void OnPasswordSentResponse(MessageRouter router, Message message, object tag)
    {
        router.RemoveMessageEvent(message);

        OperationCompleteEvent op = (OperationCompleteEvent)tag;

        switch (message.Code)
        {
        case "USR":
        {
            // find our screen name
            Regex.Regex regex = new Regex.Regex(@"OK (?<email>\S+)\s+(?<screenName>\S+)");
            Regex.Match match = regex.Match(message.Header);

            if (!match.Success)
            {
                op.Execute(new ConnectionCompleteArgs(ConnectionFailedReport.InvalidProtocol));
            }
            else
            {
                settings.DisplayName = this.UriUnquote(match.Groups["screenName"].Value);

                // now we have to set our initial status.
                this.ChangeStatus(this.settings.Status, new ResponseReceivedHandler(OnInitialStatusSet), tag);
            }
        }
        break;

        case "911":
            // authentication failed
            op.Execute(new ConnectionCompleteArgs(ConnectionFailedReport.AuthFailed));
            break;
        }
    }
Exemple #12
0
    private void DoAuthentication(MessageRouter router, OperationCompleteEvent opCompleteEvent)
    {
        string versionString = string.Join(" ", supportedProtocols);

        // send supported versions
        router.SendMessage(Message.ConstructMessage("VER", versionString), new ResponseReceivedHandler(OnVersionResponse), opCompleteEvent);
    }
Exemple #13
0
    public void Say(string text, OperationCompleteEvent opCompleteEvent)
    {
        string mimeHeader = "MIME-Version: 1.0\r\nContent-Type: text/plain; charset=UTF-8\r\nX-MMS-IM-Format: FN=Microsoft%20Sans%20Serif; CO=000000; CS=0; PF=22\r\n\r\n";

        int length = mimeHeader.Length + text.Length;

        sbRouter.SendMessage(Message.ConstructMessage("MSG", "A " + length + "\r\n" + mimeHeader + text), new ResponseReceivedHandler(OnSayAck), opCompleteEvent, false);
    }
Exemple #14
0
    public void RemoveFriendFromList(Friend friend, OperationCompleteEvent opCompleteEvent)
    {
        this.AddContactToList(ListType.Allow, friend, false);
        this.AddContactToList(ListType.Forward, friend, false);

        this.control.RemoveFriend(friend);

        opCompleteEvent.Execute(new OperationCompleteArgs());
    }
Exemple #15
0
 public void End(OperationCompleteEvent opCompleteEvent)
 {
     if (sbRouter != null)
     {
         sbRouter.SendMessage(Message.ConstructMessage("OUT", string.Empty, string.Empty, false));
         sbRouter.Close();
     }
     opCompleteEvent.Execute(new OperationCompleteArgs());
 }
Exemple #16
0
    public void Disconnect(OperationCompleteEvent opCompleteEvent)
    {
        this.messageRouter.ExpectingDisconnection = true;
        this.messageRouter.Close();
        this.messageRouter = null;
        conversationTable.Clear();

        opCompleteEvent.Execute(new OperationCompleteArgs());
        pingTimer.Stop();
    }
Exemple #17
0
    private void OnSwitchBoardUsrResponse(MessageRouter router, Message message, object tag)
    {
        object[] objs = (object[])tag;

        Friend friend            = (Friend)objs[0];
        OperationCompleteEvent e = (OperationCompleteEvent)objs[1];

        this.InviteFriend(friend, e);
        router.RemoveMessageEvent(message);
    }
Exemple #18
0
    public void SendTypingNotification(OperationCompleteEvent opCompleteEvent)
    {
        string body = "MIME-Version: 1.0\r\n"
                      + "Content-Type: text/x-msmsgscontrol\r\n"
                      + "TypingUser: "******"\r\n\r\n\r\n";

        this.sbRouter.SendMessage(Message.ConstructMessage("MSG", "U " + body.Length, body, true), false);

        opCompleteEvent.Execute(new OperationCompleteArgs());
    }
Exemple #19
0
    public void StartByInvitation(Friend friend, OperationCompleteEvent opCompleteEvent, object tag)
    {
        this.friend = friend;
        opCompleteEvent.Execute(new OperationCompleteArgs());
        Message message = (Message)tag;

        this.control.FriendSay(friend, message.GetArgumentString(14));

        this.protocol.conversationTable.Add(friend.Username, this);
    }
Exemple #20
0
 void HandleCharacterUpdate(OperationCompleteEvent data, CharacterTracker tracker)
 {
     if (data.Success)
     {
         tracker.Subscribe((subdata) => HandleCharacterSubscribe(subdata, tracker));
     }
     else
     {
         Log.Write(LogLevel.Warning, "Error updating quest tracker for user.");
     }
 }
 private void OnBarComplete(AgentInfo agentInfo, OperationCompleteEvent completeEvent)
 {
     if (completeEvent.Success)
     {
         SendToAll(OnCompletion, GetEventData(agentInfo));
     }
     else
     {
         SendToAll(OnCancel, GetEventData(agentInfo));
     }
 }
Exemple #22
0
    private string do_dialog(AgentPrivate agent, string text)
    {
        ModalDialog            dialog = agent.Client.UI.ModalDialog;
        OperationCompleteEvent result = (OperationCompleteEvent)WaitFor(dialog.Show, text, "Yes", "No");

        if (result.Success)
        {
            return(dialog.Response);
        }
        return("");
    }
Exemple #23
0
    public void UnblockFriend(Friend friend, OperationCompleteEvent opCompleteEvent)
    {
        Message message = new Message(this.sessionID, YahooService.IgnoreContact);

        message.AddArgument(1, this.settings.Username);
        message.AddArgument(7, friend.Username);
        message.AddArgument(13, "2");

        this.messageRouter.SendMessage(message);

        opCompleteEvent.Execute(new OperationCompleteArgs());
    }
Exemple #24
0
    public void AddFriendToList(string username, string message,
                                OperationCompleteEvent opCompleteEvent)
    {
        Friend f = new Friend(username, OnlineStatus.Offline, 0);

        this.AddContactToList(ListType.Allow, f, true);
        this.AddContactToList(ListType.Forward, f, true);

        this.control.AddFriend(f);

        opCompleteEvent.Execute(new OperationCompleteArgs());
    }
Exemple #25
0
    public void RemoveFriendFromList(Friend friend, OperationCompleteEvent opCompleteEvent)
    {
        Message message = new Message(this.sessionID, YahooService.RemoveBuddy);

        message.AddArgument(1, this.settings.Username);
        message.AddArgument(7, friend.Username);
        message.AddArgument(65, (string)friend.GroupIdentifier);

        this.messageRouter.SendMessage(message);

        this.control.RemoveFriend(friend);
        opCompleteEvent.Execute(new OperationCompleteArgs());
    }
Exemple #26
0
 public void Connect(OperationCompleteEvent opCompleteEvent)
 {
     try
     {
         Proxy.IConnection con = this.control.CreateConnection();
         con.Connect("", 0, settings.ServerHost, settings.ServerPort, Proxy.ConnectionType.Tcp);
         dispatchRouter = new MessageRouter(this, con, null, null);
         DoAuthentication(dispatchRouter, opCompleteEvent);
     }
     catch
     {
         opCompleteEvent.Execute(new ConnectionCompleteArgs(ConnectionFailedReport.ConnectionFailed));
     }
 }
Exemple #27
0
 /// <summary>
 /// Change the user's status
 /// </summary>
 /// <param name="status"></param>
 /// <param name="opCompleteEvent"></param>
 public void ChangeStatus(OnlineStatus status, OperationCompleteEvent opCompleteEvent)
 {
     if (this.isConnected)
     {
         // if connected, change status through protocol
         opCompleteEvent.RegisterEvent(new OperationCompleteHandler(OnStatusChangeComplete), status);
         this.protocol.ChangeStatus(status, opCompleteEvent);
     }
     else
     {
         // else change the initial status
         pChangeStatus(status);
     }
 }
Exemple #28
0
    internal void SendTypingNotification(Friend friend, OperationCompleteEvent opCompleteEvent)
    {
        Message message = new Message(this.sessionID, YahooService.Notify, YahooStatus.Typing);

        message.AddArgument(49, "TYPING");
        message.AddArgument(1, this.username);
        message.AddArgument(14, " ");
        message.AddArgument(13, "1");
        message.AddArgument(5, friend.Username);
        message.AddArgument(1002, "1");

        this.messageRouter.SendMessage(message);

        opCompleteEvent.Execute(new OperationCompleteArgs());
    }
Exemple #29
0
    public void AddFriendToList(string username, string friendMessage,
                                OperationCompleteEvent opCompleteEvent)
    {
        Message message = new Message(this.sessionID, YahooService.AddBuddy);

        message.AddArgument(1, this.settings.Username);
        message.AddArgument(7, username);
        message.AddArgument(14, friendMessage);
        message.AddArgument(65, this.defaultGroup);

        this.messageRouter.SendMessage(message);

        this.control.AddFriend(new Friend(username, OnlineStatus.Offline, this.defaultGroup));
        opCompleteEvent.Execute(new OperationCompleteArgs());
    }
Exemple #30
0
        /// <summary>
        /// Disconnects the protocol.
        /// </summary>
        /// <param name="opCompleteEvent"></param>
        public void Disconnect(OperationCompleteEvent opCompleteEvent)
        {
            // if disconnect is called whilst we are connecting, abort the connection thread.
            if (this.isConnecting = true || this.connectionThread != null)
            {
                opCompleteEvent.RegisterEvent(new OperationCompleteHandler(OnCancelationComplete));
                this.protocol.CancelConnection(opCompleteEvent);
            }

            if (this.isConnected)
            {
                opCompleteEvent.RegisterEvent(new OperationCompleteHandler(OnDisconnectionComplete));
                this.protocol.Disconnect(opCompleteEvent);
            }
        }