Ejemplo n.º 1
0
        protected override ExitCode Run(IList <string> parameters)
        {
            var splits = parameters[0].Split(':');

            if (splits.Length < 2)
            {
                OutputProc("Invalid parameter!");
                return(ExitCode.BadCommand);
            }
            var Chat = Instance.Chat;
            var PI   = new IRCSetupInfo(Chat.ProviderInfos()[(int)ChatProvider.IRC])
            {
                URL = splits[0]
            };

            try
            {
                PI.Port = Convert.ToUInt16(splits[1]);
            }
            catch
            {
                OutputProc("Invalid port number!");
                return(ExitCode.BadCommand);
            }

            var res = Chat.SetProviderInfo(PI);

            OutputProc(res ?? "Success");
            return(res == null ? ExitCode.Normal : ExitCode.ServerError);
        }
Ejemplo n.º 2
0
        private void ChatApplyButton_Click(object sender, EventArgs e)
        {
            string        res = null;
            ChatSetupInfo wip = null;

            switch (ModifyingProvider)
            {
            case ChatProvider.Discord:
                wip = new DiscordSetupInfo()
                {
                    BotToken = AuthField1.Text
                };
                break;

            case ChatProvider.IRC:
                wip = new IRCSetupInfo()
                {
                    AuthMessage = AuthField2.Text,
                    AuthTarget  = AuthField1.Text,
                    Nickname    = ChatNicknameText.Text,
                    URL         = ChatServerText.Text,
                    Port        = (ushort)ChatPortSelector.Value,
                    AuthLevel   = (IRCMode)IRCModesComboBox.SelectedIndex,
                };
                break;

            default:
                res = "You really shouldn't be able to read this.";
                break;
            }

            if (res == null)
            {
                wip.AdminChannels    = new List <string>(AdminChannelsTextbox.Text.Split(Environment.NewLine.ToCharArray()));
                wip.WatchdogChannels = new List <string>(WDChannelsTextbox.Text.Split(Environment.NewLine.ToCharArray()));
                wip.DevChannels      = new List <string>(DevChannelsTextbox.Text.Split(Environment.NewLine.ToCharArray()));
                wip.GameChannels     = new List <string>(GameChannelsTextbox.Text.Split(Environment.NewLine.ToCharArray()));
                wip.AdminList        = new List <string>(ChatAdminsTextBox.Text.Split(Environment.NewLine.ToCharArray()));
                wip.Enabled          = ChatEnabledCheckbox.Checked;
                wip.AdminsAreSpecial = AdminModeSpecial.Checked;

                res = Interface.GetComponent <ITGChat>().SetProviderInfo(wip);
            }
            if (res != null)
            {
                MessageBox.Show(res);
            }
            LoadChatPage();
        }
Ejemplo n.º 3
0
 /// <summary>
 /// Construct a <see cref="IRCChatProvider"/>
 /// </summary>
 /// <param name="info">The <see cref="ChatSetupInfo"/></param>
 public IRCChatProvider(ChatSetupInfo info)
 {
     IRCConfig = new IRCSetupInfo(info);
     irc       = new IrcFeatures()
     {
         SupportNonRfc        = true,
         CtcpUserInfo         = Server.VersionString,
         AutoRejoin           = true,
         AutoRejoinOnKick     = true,
         AutoRelogin          = true,
         AutoRetry            = true,
         AutoRetryLimit       = 5,
         AutoRetryDelay       = 5,
         ActiveChannelSyncing = true,
     };
     irc.OnChannelMessage += Irc_OnChannelMessage;
     irc.OnQueryMessage   += Irc_OnQueryMessage;
 }
Ejemplo n.º 4
0
        protected override ExitCode Run(IList <string> parameters)
        {
            var IRC  = Instance.Chat;
            var info = new IRCSetupInfo(IRC.ProviderInfos()[(int)ChatProvider.IRC]);

            switch (parameters[0])
            {
            case "+":
                info.AuthLevel = IRCMode.Voice;
                break;

            case "%":
                info.AuthLevel = IRCMode.Halfop;
                break;

            case "@":
                info.AuthLevel = IRCMode.Op;
                break;

            case "~":
                info.AuthLevel = IRCMode.Owner;
                break;

            default:
                OutputProc("Invalid parameter: " + parameters[0]);
                return(ExitCode.BadCommand);
            }

            var res = IRC.SetProviderInfo(info);

            if (res != null)
            {
                OutputProc(res);
                return(ExitCode.ServerError);
            }
            return(ExitCode.Normal);
        }
Ejemplo n.º 5
0
        /// <inheritdoc />
        public string SetProviderInfo(ChatSetupInfo info)
        {
            var convertedInfo = (IRCSetupInfo)info;
            var serverChange  = convertedInfo.URL != IRCConfig.URL || convertedInfo.Port != IRCConfig.Port;

            IRCConfig = convertedInfo;
            if (!IRCConfig.Enabled)
            {
                Disconnect();
                return(null);
            }
            else if (serverChange || !Connected())
            {
                return(Reconnect());
            }

            if (IRCConfig.Nickname != irc.Nickname)
            {
                irc.RfcNick(convertedInfo.Nickname);
            }
            Login();
            JoinChannels();
            return(null);
        }
Ejemplo n.º 6
0
        void LoadChatPage()
        {
            updatingChat = true;
            var Chat = Interface.GetComponent <ITGChat>();
            var PI   = Chat.ProviderInfos()[(int)ModifyingProvider];

            ChatAdminsTextBox.Visible = true;
            IRCModesComboBox.Visible  = false;
            switch (ModifyingProvider)
            {
            case ChatProvider.Discord:
                var DPI = new DiscordSetupInfo(PI);
                DiscordProviderSwitch.Select();
                AuthField1.Text           = DPI.BotToken;               //it's invisible so whatever
                AuthField1Title.Text      = "Bot Token:";
                AuthField2.Visible        = false;
                AuthField2Title.Visible   = false;
                ChatServerText.Visible    = false;
                ChatPortSelector.Visible  = false;
                ChatServerTitle.Visible   = false;
                ChatPortTitle.Visible     = false;
                ChatNicknameText.Visible  = false;
                ChatNicknameTitle.Visible = false;

                ChatAdminsTitle.Text  = String.Format("Admin {0} IDs:", DPI.AdminsAreSpecial ? "Role" : "User");
                ChannelsTitle.Text    = "Broadcast/Listening Channel IDs:";
                AdminModeNormal.Text  = "User IDs";
                AdminModeSpecial.Text = "Role IDs";
                break;

            case ChatProvider.IRC:
                var IRC = new IRCSetupInfo(PI);
                IRCProviderSwitch.Select();
                AuthField1.Text           = IRC.AuthTarget;
                AuthField2.Text           = IRC.AuthMessage;
                AuthField2.Visible        = true;
                AuthField2Title.Visible   = true;
                AuthField1Title.Text      = "Auth Target:";
                AuthField2Title.Text      = "Auth Message:";
                ChatServerText.Visible    = true;
                ChatPortSelector.Visible  = true;
                ChatServerTitle.Visible   = true;
                ChatPortTitle.Visible     = true;
                ChatServerText.Text       = IRC.URL;
                ChatPortSelector.Value    = IRC.Port;
                ChatNicknameText.Visible  = true;
                ChatNicknameTitle.Visible = true;
                ChatNicknameText.Text     = IRC.Nickname;
                ChatAdminsTitle.Text      = String.Format("Admin {0}:", IRC.AdminsAreSpecial ? "Req Mode" : "Nicknames");
                ChannelsTitle.Text        = "Broadcast/Listening Channels:";
                AdminModeNormal.Text      = "Nicknames";
                AdminModeSpecial.Text     = "Channel Mode";
                if (IRC.AdminsAreSpecial)
                {
                    ChatAdminsTextBox.Visible      = false;
                    IRCModesComboBox.Visible       = true;
                    IRCModesComboBox.SelectedIndex = (int)IRC.AuthLevel;
                }
                break;

            default:
                Properties.Settings.Default.LastChatProvider = (int)ChatProvider.IRC;
                LoadChatPage();
                return;
            }

            AdminModeNormal.Checked     = !PI.AdminsAreSpecial;
            AdminModeSpecial.Checked    = PI.AdminsAreSpecial;
            ChatEnabledCheckbox.Checked = PI.Enabled;
            if (!PI.Enabled)
            {
                ChatStatusLabel.Text = "Disabled";
            }
            else if (Chat.Connected(ModifyingProvider))
            {
                ChatStatusLabel.Text = "Connected";
            }
            else
            {
                ChatStatusLabel.Text = "Disconnected";
            }
            ChatReconnectButton.Enabled = PI.Enabled;

            AssignListToTextbox(PI.AdminList, ChatAdminsTextBox);
            AssignListToTextbox(PI.WatchdogChannels, WDChannelsTextbox);
            AssignListToTextbox(PI.AdminChannels, AdminChannelsTextbox);
            AssignListToTextbox(PI.DevChannels, DevChannelsTextbox);
            AssignListToTextbox(PI.GameChannels, GameChannelsTextbox);
            updatingChat = false;
        }