public static async Task <Service> LinkService(CommandContext ctx, User user) { if (user.IsSubUser) { throw new CustomMessageException( "**Sorry!** Sub Users cannot yet link services to Discord. Please get the owner of the services to link them."); } var userServices = Service.GetServices(user, true); var services = new List <Service>(); foreach (Service sv in userServices) { if (sv.UserId == user.UserId) { services.Add(sv); } } var service = await ChooseServiceFromList(ctx, services.AsReadOnly()); UpdateService(service, ctx.Guild.Id); return(service); }
private static int GetUserServicesCount() { var user = TCAdmin.SDK.Session.GetCurrentUser(); var services = Service.GetServices(user, false); return(services.Count); }
public static async Task <Service> GetService(CommandContext ctx) { var guildServices = new List <Service>(); var servicesFresh = Service.GetServices(); foreach (Service service in servicesFresh) { if (service.Variables["__Nexus::DiscordGuild"] != null && service.Variables["__Nexus::DiscordGuild"].ToString() == ctx.Guild.Id.ToString() /*&& ShowServiceVar(service)*/) { guildServices.Add(service); } } if (guildServices.Count == 0) { throw new CustomMessageException(EmbedTemplates.CreateErrorEmbed("Service Link", "**No Services could be found. Add one by doing the `;Link` command!**")); } if (guildServices.Count == 1) { return(guildServices[0]); } if (guildServices.Count > 1) { return(await ChooseServiceFromList(ctx, guildServices)); } return(null); }
private static List <SelectListItem> GetDbResetUsernames() { var user = TCAdmin.SDK.Session.GetCurrentUser(); var services = Service.GetServices(user, false) .Cast <Service>().ToList(); return((from service in services let usernameExists = service.Variables["_MySQLPlugin::Username"] != null where usernameExists let text = service.Variables["_MySQLPlugin::Database"].ToString() select new SelectListItem { Text = text, Value = service.ServiceId.ToString() }).ToList()); }
private static List <SelectListItem> GetUserServices() { var user = TCAdmin.SDK.Session.GetCurrentUser(); var services = Service.GetServices(user, false) .Cast <Service>().ToList(); return((from service in services let usernameExists = service.Variables["_MySQLPlugin::Username"] != null where !usernameExists select new SelectListItem { Text = service.ConnectionInfo + " - " + service.Name, Value = service.ServiceId.ToString() }) .ToList()); }
public static void ResetAllServices(CommandContext ctx) { var services = Service.GetServices(); foreach (Service service in services) { if (service.Variables["__Nexus::DiscordGuild"] != null) { if (!ulong.TryParse(service.Variables["__Nexus::DiscordGuild"].ToString(), out var s)) { continue; } if (s != ctx.Guild.Id) { continue; } service.Variables["__Nexus::DiscordGuild"] = 0; service.Save(); } } }
private static MySqlEligibleLocations GetLocations() { var datacenters = new List <Datacenter>(); var user = TCAdmin.SDK.Session.GetCurrentUser(); var services = Service.GetServices(user, false) .Cast <Service>().ToList(); try { ObjectBase.GlobalSkipSecurityCheck = true; foreach (var datacenter in services .Select(service => new Datacenter(new Server(service.ServerId).DatacenterId)).Where(datacenter => !datacenters.Any(x => x.DatacenterId == datacenter.DatacenterId))) { datacenters.Add(datacenter); } } finally { ObjectBase.GlobalSkipSecurityCheck = false; } return(new MySqlEligibleLocations(datacenters)); }
private static List <MySqlGridViewModel> GetUserDatabases() { var user = TCAdmin.SDK.Session.GetCurrentUser(); var services = Service.GetServices(user, false) .Cast <Service>().ToList(); try { ObjectBase.GlobalSkipSecurityCheck = true; return((from service in services where service.Variables["_MySQLPlugin::Host"] != null let mysqlHost = service.Variables["_MySQLPlugin::Host"].ToString() let mysqlUser = service.Variables["_MySQLPlugin::Username"].ToString() let mysqlPass = service.Variables["_MySQLPlugin::Password"].ToString() let mysqlDatabase = service.Variables["_MySQLPlugin::Database"].ToString() let datacenter = new Datacenter(new Server(service.ServerId).DatacenterId) select new MySqlGridViewModel(mysqlHost, mysqlDatabase, mysqlUser, mysqlPass, datacenter.Location, datacenter.MySqlPluginPhpMyAdmin, service.ServiceId.ToString())).ToList()); } finally { ObjectBase.GlobalSkipSecurityCheck = false; } }
public ActionResult CreateDatabase(int requestServiceId1, string requestDbName) { if (GetUserDatabases().Count >= GetUserServicesCount()) { return(JavaScript( "TCAdmin.Ajax.ShowBasicDialog('Error', 'You have reached your database limit!');$('body').css('cursor', 'default');")); } if (requestDbName == string.Empty) { return(JavaScript( "TCAdmin.Ajax.ShowBasicDialog('Error', 'You did not enter a database name into the textbox!');$('body').css('cursor', 'default');")); } if (!Regex.IsMatch(requestDbName, "^[_a-zA-Z0-9 ]*$")) { return(JavaScript( "TCAdmin.Ajax.ShowBasicDialog('Error', 'That database name is not allowed due to illegal characters!');$('body').css('cursor', 'default');")); } var user = TCAdmin.SDK.Session.GetCurrentUser(); var services = Service.GetServices(user, false).Cast <Service>().ToList(); var service = services.Find(x => x.ServiceId == requestServiceId1); if (service == null) { return(JavaScript( "TCAdmin.Ajax.ShowBasicDialog('Error', 'You don't own this service');$('body').css('cursor', 'default');")); } try { ObjectBase.GlobalSkipSecurityCheck = true; var server = new Server(service.ServerId); var datacenter = new Datacenter(server.DatacenterId); var dbUser = $"{user.UserName}_{service.ServiceId}"; var dbName = $"{user.UserName}_{requestDbName.Replace(" ", "_")}"; var dbPass = System.Web.Security.Membership.GeneratePassword(12, 2); if (server.MySqlPluginUseDatacenter && datacenter.MySqlPluginIp != string.Empty) { try { var createDb = new MySqlConnection("server=" + datacenter.MySqlPluginIp + ";user="******";password="******";"); createDb.Open(); var cmd = createDb.CreateCommand(); var createDbSql = string.Concat( "CREATE DATABASE " + dbName + ";" , " GRANT USAGE on *.* to " + dbUser + "@`%` IDENTIFIED BY " + "'" + dbPass + "';" , " GRANT ALL PRIVILEGES ON " + dbName + ".* to " + dbUser + "@`%`;"); cmd.CommandText = createDbSql; cmd.ExecuteNonQuery(); createDb.Close(); } catch { return(JavaScript( "TCAdmin.Ajax.ShowBasicDialog('Error', 'Unable to connect to the remote MySQL host. Please contact an Administrator!');$('body').css('cursor', 'default');")); } service.Variables["_MySQLPlugin::Host"] = datacenter.MySqlPluginIp; service.Variables["_MySQLPlugin::Username"] = dbUser; service.Variables["_MySQLPlugin::Password"] = dbPass; service.Variables["_MySQLPlugin::Database"] = dbName; } else if (server.MySqlPluginUseDatacenter == false && server.MySqlPluginIp != string.Empty) { try { var createDb = new MySqlConnection("server=" + server.MySqlPluginIp + ";user="******";password="******";"); createDb.Open(); var cmd = createDb.CreateCommand(); var createDbSql = string.Concat( "CREATE DATABASE " + dbName + ";" , " GRANT USAGE on *.* to " + dbUser + "@`%` IDENTIFIED BY " + "'" + dbPass + "';" , " GRANT ALL PRIVILEGES ON " + dbName + ".* to " + dbUser + "@`%`;"); cmd.CommandText = createDbSql; cmd.ExecuteNonQuery(); createDb.Close(); } catch { return(JavaScript( "TCAdmin.Ajax.ShowBasicDialog('Error', 'Unable to connect to the remote MySQL host. Please contact an Administrator!');$('body').css('cursor', 'default');")); } service.Variables["_MySQLPlugin::Host"] = server.MySqlPluginIp; service.Variables["_MySQLPlugin::Username"] = dbUser; service.Variables["_MySQLPlugin::Password"] = dbPass; service.Variables["_MySQLPlugin::Database"] = dbName; } else { return(JavaScript( "TCAdmin.Ajax.ShowBasicDialog('Error', 'An Administrator has not configured the location of this service for the MySql Module!');$('body').css('cursor', 'default');")); } service.Save(); } finally { ObjectBase.GlobalSkipSecurityCheck = false; } return(JavaScript("window.location.reload(false);")); }
public ActionResult ResetPassword(int requestServiceId3) { var user = TCAdmin.SDK.Session.GetCurrentUser(); var services = Service.GetServices(user, false).Cast <Service>().ToList(); var service = services.Find(x => x.ServiceId == requestServiceId3); if (service == null) { return(JavaScript( "TCAdmin.Ajax.ShowBasicDialog('Error', ''You don't own this service');$('body').css('cursor', 'default');")); } try { ObjectBase.GlobalSkipSecurityCheck = true; var server = new Server(service.ServerId); var datacenter = new Datacenter(server.DatacenterId); var dbUser = service.Variables["_MySQLPlugin::Username"].ToString(); var dbPass = System.Web.Security.Membership.GeneratePassword(12, 2); if (server.MySqlPluginUseDatacenter) { try { var resetDb = new MySqlConnection("server=" + datacenter.MySqlPluginIp + ";user="******";password="******";"); resetDb.Open(); var cmd = resetDb.CreateCommand(); var resetDbSql = "SET PASSWORD FOR '" + dbUser + "' = PASSWORD('" + dbPass + "');"; cmd.CommandText = resetDbSql; cmd.ExecuteNonQuery(); resetDb.Close(); } catch { return(JavaScript( "TCAdmin.Ajax.ShowBasicDialog('Error', 'Unable to connect to the remote MySQL host. Please contact an Administrator!');$('body').css('cursor', 'default');")); } service.Variables["_MySQLPlugin::Password"] = dbPass; } else { try { var resetDb = new MySqlConnection("server=" + server.MySqlPluginIp + ";user="******";password="******";"); resetDb.Open(); var cmd = resetDb.CreateCommand(); var resetDbSql = "SET PASSWORD FOR '" + dbUser + "' = PASSWORD('" + dbPass + "');"; cmd.CommandText = resetDbSql; cmd.ExecuteNonQuery(); resetDb.Close(); } catch { return(JavaScript( "TCAdmin.Ajax.ShowBasicDialog('Error', 'Unable to connect to the remote MySQL host. Please contact an Administrator!');$('body').css('cursor', 'default');")); } service.Variables["_MySQLPlugin::Password"] = dbPass; } service.Save(); } finally { ObjectBase.GlobalSkipSecurityCheck = false; } return(JavaScript("window.location.reload(false);")); }
public ActionResult DeleteDatabase(int requestServiceId2) { var user = TCAdmin.SDK.Session.GetCurrentUser(); var services = Service.GetServices(user, false).Cast <Service>().ToList(); var service = services.Find(x => x.ServiceId == requestServiceId2); if (service == null) { return(JavaScript( "TCAdmin.Ajax.ShowBasicDialog('Error', 'You don't own this service');$('body').css('cursor', 'default');")); } try { ObjectBase.GlobalSkipSecurityCheck = true; var server = new Server(service.ServerId); var datacenter = new Datacenter(server.DatacenterId); var dbUser = service.Variables["_MySQLPlugin::Username"].ToString(); var dbName = service.Variables["_MySQLPlugin::Database"].ToString(); if (server.MySqlPluginUseDatacenter) { try { var deleteDb = new MySqlConnection("server=" + datacenter.MySqlPluginIp + ";user="******";password="******";"); deleteDb.Open(); var cmd = deleteDb.CreateCommand(); var deleteDbSql = string.Concat( "DROP USER " + dbUser + "@`%`;" , " DROP DATABASE IF EXISTS `" + dbName + "`;"); cmd.CommandText = deleteDbSql; cmd.ExecuteNonQuery(); deleteDb.Close(); } catch { return(JavaScript( "TCAdmin.Ajax.ShowBasicDialog('Error', 'Unable to connect to the remote MySQL host. Please contact an Administrator!');$('body').css('cursor', 'default');")); } service.Variables["_MySQLPlugin::Host"] = null; service.Variables["_MySQLPlugin::Username"] = null; service.Variables["_MySQLPlugin::Password"] = null; service.Variables["_MySQLPlugin::Database"] = null; } else { try { var deleteDb = new MySqlConnection("server=" + server.MySqlPluginIp + ";user="******";password="******";"); deleteDb.Open(); var cmd = deleteDb.CreateCommand(); var deleteDbSql = string.Concat( "DROP USER " + dbUser + "@`%`;" , " DROP DATABASE IF EXISTS `" + dbName + "`;"); cmd.CommandText = deleteDbSql; cmd.ExecuteNonQuery(); deleteDb.Close(); } catch { return(JavaScript( "TCAdmin.Ajax.ShowBasicDialog('Error', 'Unable to connect to the remote MySQL host. Please contact an Administrator!');$('body').css('cursor', 'default');")); } service.Variables["_MySQLPlugin::Host"] = null; service.Variables["_MySQLPlugin::Username"] = null; service.Variables["_MySQLPlugin::Password"] = null; service.Variables["_MySQLPlugin::Database"] = null; } service.Save(); } finally { ObjectBase.GlobalSkipSecurityCheck = false; } return(JavaScript("window.location.reload(false);")); }