//Saves lists... public async void SaveSettings() { try { File.WriteAllText("Settings.json", JsonConvert.SerializeObject(this.Settings)); await ControlHandler.LogAsync("[SETTINGSHANDLER] Saved Settings File!"); } catch (Exception ecc) { Console.WriteLine(ecc.Message); } }
public static Task ResetTabsAsync() { Program.UserInterface.SelectedChannels.Clear(); Program.UserInterface.tabControl1.Invoke(new Action(() => { for (int i = 4; i < Program.UserInterface.tabControl1.TabCount;) { try { Program.UserInterface.tabControl1.TabPages[i].Dispose(); } catch { } } })); Program.UserInterface.DMUploadButton.Invoke(new Action(() => { Program.UserInterface.DMUploadButton.Enabled = false; })); Program.UserInterface.DMListView.Invoke(new Action(() => { Program.UserInterface.DMListView.Items.Clear(); })); Program.UserInterface.ChannelListView.Invoke(new Action(() => { Program.UserInterface.ChannelListView.Items.Clear(); })); Program.UserInterface.MessagesListView.Invoke(new Action(() => { Program.UserInterface.MessagesListView.Items.Clear(); })); Program.UserInterface.UserJoinChannelsComboBox.Invoke(new Action(() => { Program.UserInterface.UserJoinChannelsComboBox.Items.Clear(); })); Program.UserInterface.ConnectedMessageAddButton.Invoke(new Action(() => { if (Global.Kuro.Client.ConnectionState == Discord.ConnectionState.Connected || Global.Kuro.Client.ConnectionState == Discord.ConnectionState.Connecting) { Program.UserInterface.ConnectedMessageAddButton.Enabled = true; } else if (Global.Kuro.Client.ConnectionState == Discord.ConnectionState.Disconnected || Global.Kuro.Client.ConnectionState == Discord.ConnectionState.Disconnecting) { Program.UserInterface.ConnectedMessageAddButton.Enabled = false; } })); Program.UserInterface.FileSendButton.Invoke(new Action(() => { Program.UserInterface.FileSendButton.Enabled = false; })); Program.UserInterface.ConnectButton.Invoke(new Action(() => { if (Global.Kuro.Client.ConnectionState == Discord.ConnectionState.Connected || Global.Kuro.Client.ConnectionState == Discord.ConnectionState.Connecting) { Program.UserInterface.ConnectButton.Enabled = false; } else if (Global.Kuro.Client.ConnectionState == Discord.ConnectionState.Disconnected || Global.Kuro.Client.ConnectionState == Discord.ConnectionState.Disconnecting) { Program.UserInterface.ConnectButton.Enabled = true; } })); Program.UserInterface.DisconnectButton.Invoke(new Action(() => { if (Global.Kuro.Client.ConnectionState == Discord.ConnectionState.Connected || Global.Kuro.Client.ConnectionState == Discord.ConnectionState.Connecting) { Program.UserInterface.DisconnectButton.Enabled = true; } else if (Global.Kuro.Client.ConnectionState == Discord.ConnectionState.Disconnected || Global.Kuro.Client.ConnectionState == Discord.ConnectionState.Disconnecting) { Program.UserInterface.DisconnectButton.Enabled = false; } })); ControlHandler.LogAsync("[LOGHANDLER] Reset controls!"); return(Task.CompletedTask); }
public async Task ClientReady() { await ControlHandler.LogAsync("[CONNECTED] Successfully connected to Discord!"); await Global.SettingsHandler.RefreshGuildChangesAsync(); Program.UserInterface.ConnectButton.Invoke(new Action(() => { Program.UserInterface.ConnectButton.Enabled = false; })); await Global.Kuro.Client.SetGameAsync(Global.SettingsHandler.Settings.Game); }
//Admin stuff public async static Task <bool> AddAdmin(string Username, ulong UserID, string Addedby) { if (Global.SettingsHandler.Settings.Admins.FindIndex(u => u.Id == UserID) == -1) { Global.SettingsHandler.Settings.Admins.Add(new AdminUser(Username, UserID, Addedby)); await ControlHandler.LogAsync("[PERMHANLDER] An admin has been added: " + Username); Global.SettingsHandler.SaveSettings(); await ControlHandler.ShowSettingsValueAsync(); return(true); } else { return(false); } }
public async static Task <bool> RemoveBlackList(SocketTextChannel Channel) { if (Global.SettingsHandler.Settings.BlackListChannels.FindIndex(u => u.Id == Channel.Id) > -1) { Global.SettingsHandler.Settings.BlackListChannels.Remove(Global.SettingsHandler.Settings.BlackListChannels.Find(u => u.Id == Channel.Id)); await ControlHandler.LogAsync("[PERMHANLDER] Blacklisted channel has been Removed: " + Channel.Id); Global.SettingsHandler.SaveSettings(); await ControlHandler.ShowSettingsValueAsync(); return(true); } else { return(false); } }
//Blacklist stuff public async static Task <bool> AddBlackList(SocketTextChannel Channel, string AddedBy) { if (Global.SettingsHandler.Settings.BlackListChannels.FindIndex(u => u.Id == Channel.Id) == -1) { Global.SettingsHandler.Settings.BlackListChannels.Add(new BlackListedChannel(Channel.Guild.Name, Channel.Id, Channel.Name, AddedBy)); await ControlHandler.LogAsync("[PERMHANLDER] Blacklisted channel has been Added: " + Channel.Id); Global.SettingsHandler.SaveSettings(); await ControlHandler.ShowSettingsValueAsync(); return(true); } else { return(false); } }
public SettingsHandler(string SettingsFile) { if (File.Exists(SettingsFile)) { try { Settings = JsonConvert.DeserializeObject <Setting>(File.ReadAllText(SettingsFile)); ControlHandler.LogAsync("[SETTINGSHANDLER] Read Settings File!"); } catch { ControlHandler.LogAsync("[SETTINGSHANDLER] Couldn't read Settings file! Using Default settings. Don't forget to set your ID as OwnerID in [SETTINGS]!"); } } else { ControlHandler.LogAsync("[SETTINGSHANDLER] Couldn't read Settings file! Using Default settings. Don't forget to set your ID as OwnerID in [SETTINGS]!"); } }
public async static Task <bool> RemoveAdmin(ulong UserID) { if (Global.SettingsHandler.Settings.Admins.FindIndex(u => u.Id == UserID) == -1) { AdminUser OldAdmin = Global.SettingsHandler.Settings.Admins.Find(u => u.Id == UserID); await ControlHandler.LogAsync("[PERMHANLDER] An admin has been Removed: " + OldAdmin.Username); Global.SettingsHandler.Settings.Admins.Remove(Global.SettingsHandler.Settings.Admins.Find(u => u.Id == UserID)); Global.SettingsHandler.SaveSettings(); await ControlHandler.ShowSettingsValueAsync(); return(true); } else { return(false); } }
public async Task MessageReceived(SocketMessage message) { string Guild = message.Channel is SocketDMChannel ? "PRIVATE" : (message.Channel as SocketGuildChannel).Guild.Name; if (Guild != "PRIVATE") { if (Program.UserInterface.SelectedChannels.Count != 0 && Program.UserInterface.SelectedChannels.IndexOf(message.Channel as SocketTextChannel) > -1) { SocketTextChannel ch = Program.UserInterface.SelectedChannels[Program.UserInterface.SelectedChannels.IndexOf(message.Channel as SocketTextChannel)]; if (message.Channel.Name == ch.Name && Guild == ch.Guild.Name) { await ControlHandler.LogAsync("[" + message.Timestamp.LocalDateTime + "] " + "#" + message.Channel.Name + " | " + message.Author + ": " + (message.Attachments.Count != 0 ? "[" + message.Attachments.FirstOrDefault().Url + "] " + message.Content : message.Content), Guild); } else { await ControlHandler.LogAsync("[" + message.Timestamp.LocalDateTime + "] " + "#" + message.Channel.Name + " | " + message.Author + ": " + (message.Attachments.Count != 0 ? "[" + message.Attachments.FirstOrDefault().Url + "] " + message.Content : message.Content)); } } else { await ControlHandler.LogAsync("[" + message.Timestamp.LocalDateTime + "] " + "#" + message.Channel.Name + " | " + message.Author + ": " + (message.Attachments.Count != 0 ? "[" + message.Attachments.FirstOrDefault().Url + "] " + message.Content : message.Content)); } } else { Program.UserInterface.DMListView.Invoke(new Action(async() => { SocketDMChannel Channel = message.Channel as SocketDMChannel; await ControlHandler.LogAsync("[" + message.Timestamp.LocalDateTime + "] PRIVATE/" + message.Author + ": " + (message.Attachments.Count != 0 ? "[" + message.Attachments.FirstOrDefault().Url + "] " + message.Content : message.Content)); if (Program.UserInterface.DMListView.Items.IndexOf(Program.UserInterface.DMListView.FindItemWithText(Channel.Recipient.Username + "#" + Channel.Recipient.Discriminator)) == -1) { await ControlHandler.AddNewDM(Channel.Recipient.Username + "#" + Channel.Recipient.Discriminator); } if (Program.UserInterface.SelectedDMIndex != null) { if ((int)Program.UserInterface.SelectedDMIndex == Program.UserInterface.DMListView.Items.IndexOf(Program.UserInterface.DMListView.FindItemWithText(Channel.Recipient.Username + "#" + Channel.Recipient.Discriminator))) { await ControlHandler.LogDMAsync("[" + message.Timestamp.LocalDateTime + "] " + message.Author + ": " + (message.Attachments.Count != 0 ? "[" + message.Attachments.FirstOrDefault().Url + "] " + message.Content : message.Content)); } } })); } }
public async void ReadPictures() { Global.PicturesSFW.Clear(); Global.PicturesNSFW.Clear(); try { foreach (string sfwfolder in this.Settings.SFWFolders) { Global.PicturesSFW.AddRange(Directory.GetFiles(sfwfolder).ToList <string>().FindAll(path => path.EndsWith(".jpg") || path.EndsWith(".png") || path.EndsWith(".gif") || path.EndsWith(".webm"))); } foreach (string nsfwfolder in this.Settings.NSFWFolders) { Global.PicturesNSFW.AddRange(Directory.GetFiles(nsfwfolder).ToList <string>().FindAll(path => path.EndsWith(".jpg") || path.EndsWith(".png") || path.EndsWith(".gif") || path.EndsWith(".webm"))); } await ControlHandler.LogAsync(string.Format("[PICTURES] Found {0} SFW and {1} NSFW pictures!", Global.PicturesSFW.Count, Global.PicturesNSFW.Count)); } catch (Exception e) { await ControlHandler.LogAsync("[PICTURES] Could not get pictures from this folder: " + e.Message); } }
public Task Log(LogMessage msg) { ControlHandler.LogAsync(msg.Source + " " + msg.Message); return(Task.CompletedTask); }
public bool Login() { PasswordHash = null; Cfduid = null; SankakuSessionId = null; ActualUsername = null; try { HttpWebRequest CookieReq = (HttpWebRequest)WebRequest.Create("https://chan.sankakucomplex.com/"); CookieReq.Method = "GET"; CookieReq.Headers.Add("Upgrade-Insecure-Requests: 1"); CookieReq.Headers.Add("Accept-Encoding: gzip, deflate, sdch, br"); CookieReq.Headers.Add("Accept-Language: en-US,en;q=0.8,sl;q=0.6"); CookieReq.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36"; CookieReq.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8"; CookieReq.Timeout = 18 * 1000; HttpWebResponse CookieResponse = (HttpWebResponse)CookieReq.GetResponse(); string CookieValueValue = CookieResponse.GetResponseHeader("Set-Cookie"); CookieResponse.Close(); Cfduid = new Regex(@"__cfduid=(.*?);").Match(CookieValueValue).Groups[1].Value; HttpWebRequest Request = (HttpWebRequest)WebRequest.Create("https://chan.sankakucomplex.com/user/authenticate"); Request.Method = "POST"; Request.AllowAutoRedirect = false; Request.Headers.Add("Origin", "https://chan.sankakucomplex.com"); Request.Headers.Add("Cache-Control", "max-age=0"); Request.Headers.Add("Upgrade-Insecure-Requests", "1"); Request.Headers.Add("Accept-Encoding", "gzip, deflate, br"); Request.Headers.Add("Accept-Language", "en-US,en;q=0.8,sl;q=0.6"); Request.Host = "chan.sankakucomplex.com"; Request.Referer = "https://chan.sankakucomplex.com/user/login"; Request.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36"; Request.ContentType = "application/x-www-form-urlencoded"; Request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8"; Request.Headers.Add("Cookie", $"__cfduid={Cfduid}; auto_page=1; blacklisted_tags=; locale=en"); string Content = $"url=&user%5Bname%5D={Username}&user%5Bpassword%5D={Password}&commit=Login"; byte[] ContentBytes = Encoding.ASCII.GetBytes(Content); Request.ContentLength = ContentBytes.Length; Stream RequestStream = Request.GetRequestStream(); RequestStream.Write(ContentBytes, 0, ContentBytes.Length); RequestStream.Close(); Request.Timeout = 18 * 1000; HttpWebResponse Response = (HttpWebResponse)Request.GetResponse(); string Value = Response.GetResponseHeader("Set-Cookie"); Response.Close(); PasswordHash = new Regex(@"pass_hash=(.*?);").Match(Value).Groups[1].Value; ActualUsername = new Regex(@"login=(.*?);").Match(Value).Groups[1].Value; SankakuSessionId = new Regex(@"_sankakucomplex_session=(.*?);").Match(Value).Groups[1].Value; if (PasswordHash.Length < 2) { LoggedIn = false; return(LoggedIn); } LoggedIn = true; return(LoggedIn); } catch (WebException Exception) { ControlHandler.LogAsync("[SANKAKU] " + Exception.Message); LoggedIn = false; return(LoggedIn); } catch { LoggedIn = false; return(LoggedIn); } }