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); }
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(); }
/// <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; }
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); }
/// <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); }
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; }