DB Editor v1.1.0 - Adds User Manager, Ban Manager - Changes visuals of program - Makes things more user friendly.

This commit is contained in:
Twitchy 2011-07-26 21:42:51 +12:00
parent 37146adb4c
commit 894e796f73
2 changed files with 983 additions and 132 deletions

View file

@ -6,6 +6,7 @@ using System.Drawing;
using System.Linq;
using System.Text;
using System.IO;
using System.Security.Cryptography;
using Community.CsharpSqlite.SQLiteClient;
using MySql.Data.MySqlClient;
@ -29,12 +30,9 @@ namespace TShockDBEditor
dialog.Filter = "SQLite Database (*.sqlite)|*.sqlite";
}
public void LoadSqliteDatabase(string path)
public void LoadDB()
{
string sql = dialog.FileName;
DB = new SqliteConnection(string.Format("uri=file://{0},Version=3", sql));
DB.Open();
dbtype = "sqlite";
itemListBanned.Items.Clear();
lst_groupList.Items.Clear();
lst_AvailableCmds.Items.Clear();
@ -57,12 +55,46 @@ namespace TShockDBEditor
com.CommandText =
"SELECT * FROM GroupList";
lst_groupList.Items.Add("superadmin");
lst_usergrplist.Items.Add("superadmin");
lst_newusergrplist.Items.Add("superadmin");
using (var reader = com.ExecuteReader())
{
while (reader.Read())
{
lst_groupList.Items.Add(reader.Get<string>("GroupName"));
lst_inheritgrps.Items.Add(reader.Get<string>("GroupName"));
lst_usergrplist.Items.Add(reader.Get<string>("GroupName"));
lst_newusergrplist.Items.Add(reader.Get<string>("GroupName"));
}
}
}
using (var com = DB.CreateCommand())
{
com.CommandText =
"SELECT * FROM Users";
using (var reader = com.ExecuteReader())
{
while (reader.Read())
{
if (reader.Get<string>("UserName") != "")
lst_userlist.Items.Add(reader.Get<string>("UserName"));
else
lst_userlist.Items.Add(reader.Get<string>("IP"));
}
}
}
using (var com = DB.CreateCommand())
{
com.CommandText =
"SELECT * FROM Bans";
using (var reader = com.ExecuteReader())
{
while (reader.Read())
{
lst_bans.Items.Add(reader.Get<string>("Name"));
}
}
}
@ -74,53 +106,27 @@ namespace TShockDBEditor
}
}
public void LoadMySqlDatabase(string hostname = "localhost", string port = "3306", string database = "", string username = "", string password = "")
public void LoadSqliteDatabase(string path)
{
string sql = dialog.FileName;
DB = new SqliteConnection(string.Format("uri=file://{0},Version=3", sql));
DB.Open();
dbtype = "sqlite";
LoadDB();
}
public void LoadMySqlDatabase(string hostname = "localhost", string port = "3306", string database = "", string dbusername = "", string dbpassword = "")
{
DB = new MySqlConnection();
DB.ConnectionString =
"Server='" + hostname +
"';Port='" + port +
"';Database='" + database +
"';Uid='" + username +
"';Pwd='" + password + "';";
"';Uid='" + dbusername +
"';Pwd='" + dbpassword + "';";
DB.Open();
dbtype = "mysql";
itemListBanned.Items.Clear();
lst_groupList.Items.Clear();
lst_AvailableCmds.Items.Clear();
lst_bannedCmds.Items.Clear();
itemListAvailable.Items.Clear();
using (var com = DB.CreateCommand())
{
com.CommandText =
"SELECT * FROM Itembans";
using (var reader = com.ExecuteReader())
{
while (reader.Read())
itemListBanned.Items.Add(reader.Get<string>("ItemName"));
}
}
using (var com = DB.CreateCommand())
{
com.CommandText =
"SELECT * FROM GroupList";
using (var reader = com.ExecuteReader())
{
while (reader.Read())
{
lst_groupList.Items.Add(reader.Get<string>("GroupName"));
}
}
}
for (int i = 0; i < Itemlist.ItemList.Count; i++)
{
if (!itemListBanned.Items.Contains(Itemlist.ItemList[i]))
itemListAvailable.Items.Add(Itemlist.ItemList[i]);
}
LoadDB();
}
#region BannedItemsTab
@ -361,7 +367,7 @@ namespace TShockDBEditor
com.CommandText = "INSERT IGNORE INTO GroupList SET GroupName=@groupname, Commands=@commands;";
com.AddParameter("@groupname", txt_grpname.Text);
if(lst_inheritgrps.SelectedIndex > -1)
if (lst_inheritgrps.SelectedIndex > -1)
com.AddParameter("@commands", lst_inheritgrps.Items[lst_inheritgrps.SelectedIndex]);
else
com.AddParameter("@commands", "");
@ -372,6 +378,7 @@ namespace TShockDBEditor
{
lst_groupList.Items.Add(txt_grpname.Text);
lst_inheritgrps.Items.Add(txt_grpname.Text);
lst_usergrplist.Items.Add(txt_grpname.Text);
txt_grpname.Text = "";
}
}
@ -396,6 +403,7 @@ namespace TShockDBEditor
lst_groupList.Items.Remove(lst_groupList.Items[lst_groupList.SelectedIndex]);
lst_inheritgrps.Items.Clear();
lst_usergrplist.Items.Clear();
com.CommandText =
"SELECT * FROM GroupList";
using (var reader = com.ExecuteReader())
@ -403,6 +411,7 @@ namespace TShockDBEditor
while (reader.Read())
{
lst_inheritgrps.Items.Add(reader.Get<string>("GroupName"));
lst_usergrplist.Items.Add(reader.Get<string>("GroupName"));
}
}
}
@ -427,10 +436,297 @@ namespace TShockDBEditor
private void btn_connect_Click(object sender, EventArgs e)
{
LoadMySqlDatabase(txt_hostname.Text, txt_port.Text, txt_dbname.Text, txt_username.Text, txt_password.Text);
LoadMySqlDatabase(txt_hostname.Text, txt_port.Text, txt_dbname.Text, txt_dbusername.Text, txt_dbpassword.Text);
tabControl.Visible = true;
}
#endregion
#endregion
#region BansTab
private void lst_bans_SelectedIndexChanged(object sender, EventArgs e)
{
using (var com = DB.CreateCommand())
{
if (lst_bans.SelectedIndex > -1)
{
com.CommandText =
"SELECT * FROM Bans WHERE Name=@name";
com.AddParameter("@name", lst_bans.Items[lst_bans.SelectedIndex]);
using (var reader = com.ExecuteReader())
{
if (reader.Read())
{
txt_banip.Text = reader.Get<string>("IP");
txt_banname.Text = reader.Get<string>("Name");
txt_banreason.Text = reader.Get<string>("Reason");
}
}
}
}
}
private void btn_bandelete_Click(object sender, EventArgs e)
{
using (var com = DB.CreateCommand())
{
com.CommandText =
"DELETE FROM Bans WHERE IP=@ip";
com.AddParameter("@ip", txt_banip.Text);
using (var reader = com.ExecuteReader())
{
if (reader.RecordsAffected > 0)
{
txt_banip.Text = "";
txt_banname.Text = "";
txt_banreason.Text = "";
lst_bans.Items.Remove(lst_bans.Items[lst_bans.SelectedIndex]);
}
}
}
}
private void btn_bannew_Click(object sender, EventArgs e)
{
using (var com = DB.CreateCommand())
{
if (dbtype == "sqlite")
com.CommandText = "INSERT INTO Bans (IP, Name, Reason) VALUES (@ip, @name, @reason);";
else if (dbtype == "mysql")
com.CommandText = "INSERT INTO Bans SET IP=@ip, Name=@name, Reason=@reason;";
if (txt_newbanip.Text != "" && txt_newbanname.Text != "")
{
com.AddParameter("@ip", txt_newbanip.Text);
com.AddParameter("@name", txt_newbanname.Text);
com.AddParameter("@reason", txt_newbanreason.Text);
com.ExecuteNonQuery();
lst_bans.Items.Add(txt_newbanname.Text);
txt_newbanip.Text = "";
txt_newbanname.Text = "";
txt_newbanreason.Text = "";
lbl_newbanstatus.Text = "Ban added successfully!";
}
else
lbl_newbanstatus.Text = "Required field('s) empty";
lst_bans.Items.Add(txt_newbanname.Text);
txt_newbanip.Text = "";
txt_newbanname.Text = "";
}
}
private void txt_banreason_TextChanged(object sender, EventArgs e)
{
if (txt_banip.Text != "")
{
using (var com = DB.CreateCommand())
{
com.CommandText =
"UPDATE Bans SET Reason=@reason WHERE IP=@ip";
com.AddParameter("@reason", txt_banreason.Text);
com.AddParameter("@ip", txt_banip.Text);
com.ExecuteNonQuery();
}
}
}
#endregion
private void lst_userlist_SelectedIndexChanged(object sender, EventArgs e)
{
txt_username.Text = "None Selected";
txt_userip.Text = "None Selected";
lst_usergrplist.SelectedIndex = -1;
bool flag = false;
if (lst_userlist.SelectedIndex > -1)
{
using (var com = DB.CreateCommand())
{
com.CommandText =
"SELECT * FROM Users WHERE Username=@name";
com.AddParameter("@name", lst_userlist.Items[lst_userlist.SelectedIndex]);
using (var reader = com.ExecuteReader())
{
if (reader.Read())
{
txt_username.Text = reader.Get<string>("Username");
if (reader.Get<string>("IP") != "")
txt_userip.Text = reader.Get<string>("IP");
else
txt_userip.Text = "User does not have IP";
if (reader.Get<string>("Password") != "")
txt_userpass.Text = reader.Get<string>("Password");
else
txt_userpass.Text = "User does not have Pasword";
foreach (string name in lst_usergrplist.Items)
{
if (name == reader.Get<string>("Usergroup"))
{
lst_usergrplist.SelectedItem = name;
break;
}
}
}
else
flag = true;
}
}
if (flag)
{
using (var com = DB.CreateCommand())
{
com.CommandText =
"SELECT * FROM Users WHERE IP=@ip";
com.AddParameter("@ip", lst_userlist.Items[lst_userlist.SelectedIndex]);
using (var reader = com.ExecuteReader())
{
if (reader.Read())
{
if (reader.Get<string>("Password") != "")
txt_userpass.Text = reader.Get<string>("Password");
else
txt_userpass.Text = "User does not have Pasword";
txt_userip.Text = lst_userlist.Items[lst_userlist.SelectedIndex].ToString();
foreach (string name in lst_usergrplist.Items)
{
if (name == reader.Get<string>("Usergroup"))
{
lst_usergrplist.SelectedItem = name;
break;
}
}
}
}
}
}
}
}
private void lst_usergrplist_SelectedIndexChanged(object sender, EventArgs e)
{
if (lst_userlist.SelectedIndex > -1)
{
using (var com = DB.CreateCommand())
{
com.CommandText =
"UPDATE Users SET Usergroup=@group WHERE Username=@user OR IP=@ip";
com.AddParameter("@group", lst_usergrplist.SelectedItem);
com.AddParameter("@user", txt_username.Text);
com.AddParameter("@ip", txt_userip.Text);
com.ExecuteNonQuery();
}
}
}
private void btn_deluser_Click(object sender, EventArgs e)
{
if (lst_userlist.SelectedIndex > -1)
{
using (var com = DB.CreateCommand())
{
com.CommandText =
"DELETE FROM Users WHERE IP=@ip OR Username=@user";
com.AddParameter("@user", txt_username.Text);
com.AddParameter("@ip", txt_userip.Text);
com.ExecuteNonQuery();
lst_userlist.Items.Remove(lst_userlist.SelectedItem);
txt_userip.Text = "";
txt_username.Text = "";
txt_userpass.Text = "";
lst_usergrplist.SelectedIndex = -1;
lst_userlist.SelectedIndex = -1;
}
}
}
private void btn_adduser_Click(object sender, EventArgs e)
{
lbl_useraddstatus.Visible = true;
for (int i = 0; i == 0; i++)
{
if ((txt_newusername.Text == "" && txt_newuserpass.Text != ""))
{
lbl_useraddstatus.Text = "Username field cannot be empty";
break;
}
if ((txt_newusername.Text != "" && txt_newuserpass.Text == ""))
{
lbl_useraddstatus.Text = "Password field cannot be empty";
break;
}
if (txt_newuserip.Text == "" && (txt_newusername.Text == "" || txt_newuserpass.Text == ""))
{
lbl_useraddstatus.Text = "IP field cannot be empty";
break;
}
if (lst_newusergrplist.SelectedIndex == -1)
{
lbl_useraddstatus.Text = "Group must be selected";
break;
}
using (var com = DB.CreateCommand())
{
com.CommandText = "INSERT INTO Users (Username, Password, UserGroup, IP) VALUES (@name, @password, @group, @ip);";
com.AddParameter("@name", txt_newusername.Text);
com.AddParameter("@password", HashPassword(txt_newuserpass.Text));
com.AddParameter("@group", lst_newusergrplist.SelectedItem);
com.AddParameter("@ip", txt_newuserip.Text);
using (var reader = com.ExecuteReader())
{
if (reader.RecordsAffected > 0)
{
if (txt_newusername.Text != "")
lst_userlist.Items.Add(txt_newusername.Text);
else
lst_userlist.Items.Add(txt_newuserip.Text);
txt_newuserip.Text = "";
txt_newusername.Text = "";
txt_newuserpass.Text = "";
lst_newusergrplist.SelectedIndex = -1;
lbl_useraddstatus.Text = "User added successfully!";
}
else
lbl_useraddstatus.Text = "SQL error while adding user";
}
}
}
}
public static string HashPassword(string password)
{
using (var sha = new SHA512CryptoServiceProvider())
{
if (password == "")
{
return "nonexistent-password";
}
var bytes = sha.ComputeHash(Encoding.ASCII.GetBytes(password));
return bytes.Aggregate("", (s, b) => s + b.ToString("X2"));
}
}
}
}