Пример #1
0
        internal WarpManager(IDbConnection db)
        {
            database = db;

            var table = new SqlTable("Warps",
                                     new SqlColumn("Id", MySqlDbType.Int32)
            {
                Primary = true, AutoIncrement = true
            },
                                     new SqlColumn("WarpName", MySqlDbType.VarChar, 50)
            {
                Unique = true
            },
                                     new SqlColumn("X", MySqlDbType.Int32),
                                     new SqlColumn("Y", MySqlDbType.Int32),
                                     new SqlColumn("WorldID", MySqlDbType.VarChar, 50)
            {
                Unique = true
            },
                                     new SqlColumn("Private", MySqlDbType.Text)
                                     );
            var creator = new SqlTableCreator(db,
                                              db.GetSqlType() == SqlType.Sqlite
                                                                ? (IQueryBuilder) new SqliteQueryCreator()
                                                                : new MysqlQueryCreator());

            creator.EnsureTableStructure(table);
        }
Пример #2
0
        /// <summary>
        /// Initializes a new instance of the <see cref="TShockAPI.DB.BanManager"/> class.
        /// </summary>
        /// <param name="db">A valid connection to the TShock database</param>
        public BanManager(IDbConnection db)
        {
            database = db;

            var table = new SqlTable("Bans",
                                     new SqlColumn("IP", MySqlDbType.String, 16)
            {
                Primary = true
            },
                                     new SqlColumn("Name", MySqlDbType.Text),
                                     new SqlColumn("UUID", MySqlDbType.Text),
                                     new SqlColumn("Reason", MySqlDbType.Text),
                                     new SqlColumn("BanningUser", MySqlDbType.Text),
                                     new SqlColumn("Date", MySqlDbType.Text),
                                     new SqlColumn("Expiration", MySqlDbType.Text)
                                     );
            var creator = new SqlTableCreator(db,
                                              db.GetSqlType() == SqlType.Sqlite
                                        ? (IQueryBuilder) new SqliteQueryCreator()
                                        : new MysqlQueryCreator());

            try
            {
                creator.EnsureTableStructure(table);
            }
            catch (DllNotFoundException)
            {
                System.Console.WriteLine("数据库故障.检查 Sqlite3.dll 是否存在 / 编译版本选择x86或Any CPU.");
                throw new Exception("无法找到数据库引用类库. (Sqlite3.dll)");
            }
        }
Пример #3
0
        /// <summary>
        /// Initializes a new instance of the <see cref="TShockAPI.DB.BanManager"/> class.
        /// </summary>
        /// <param name="db">A valid connection to the TShock database</param>
		public BanManager(IDbConnection db)
		{
			database = db;

			var table = new SqlTable("Bans",
			                         new SqlColumn("IP", MySqlDbType.String, 16) {Primary = true},
			                         new SqlColumn("Name", MySqlDbType.Text),
									 new SqlColumn("UUID", MySqlDbType.Text),
			                         new SqlColumn("Reason", MySqlDbType.Text),
                                     new SqlColumn("BanningUser", MySqlDbType.Text),
                                     new SqlColumn("Date", MySqlDbType.Text),
                                     new SqlColumn("Expiration", MySqlDbType.Text)
				);
			var creator = new SqlTableCreator(db,
			                                  db.GetSqlType() == SqlType.Sqlite
			                                  	? (IQueryBuilder) new SqliteQueryCreator()
			                                  	: new MysqlQueryCreator());
			try
			{
				creator.EnsureTableStructure(table);
			}
			catch (DllNotFoundException)
			{
				System.Console.WriteLine("Possible problem with your database - is Sqlite3.dll present?");
				throw new Exception("Could not find a database library (probably Sqlite3.dll)");
			}
		}
Пример #4
0
        public UserManager(IDbConnection db)
        {
            database = db;

            var table = new SqlTable("Users",
                                     new SqlColumn("ID", MySqlDbType.Int32)
            {
                Primary = true, AutoIncrement = true
            },
                                     new SqlColumn("Username", MySqlDbType.VarChar, 32)
            {
                Unique = true
            },
                                     new SqlColumn("Password", MySqlDbType.VarChar, 128),
                                     new SqlColumn("UUID", MySqlDbType.VarChar, 128),
                                     new SqlColumn("Usergroup", MySqlDbType.Text),
                                     new SqlColumn("Registered", MySqlDbType.Text),
                                     new SqlColumn("LastAccessed", MySqlDbType.Text),
                                     new SqlColumn("KnownIPs", MySqlDbType.Text)
                                     );
            var creator = new SqlTableCreator(db,
                                              db.GetSqlType() == SqlType.Sqlite
                                                                ? (IQueryBuilder) new SqliteQueryCreator()
                                                                : new MysqlQueryCreator());

            creator.EnsureTableStructure(table);
        }
Пример #5
0
 internal static void CheckTables(IDbConnection connection)
 {
     SQLWriter = new SqlTableCreator(connection, new MysqlQueryCreator());
     var table = new SqlTable("BannedIP",
     new SqlColumn("IP", MySqlDbType.Text),
     new SqlColumn("BanDate", MySqlDbType.Int32),
     new SqlColumn("UnbanDate", MySqlDbType.Int32),
     new SqlColumn("BannedBy", MySqlDbType.Text),
     new SqlColumn("Reason", MySqlDbType.Text)
     );
     SQLWriter.EnsureExists(table);
     table = new SqlTable("BannedPlayer",
     new SqlColumn("Player", MySqlDbType.Text),
     new SqlColumn("BanDate", MySqlDbType.Int32),
     new SqlColumn("UnbanDate", MySqlDbType.Int32),
     new SqlColumn("BannedBy", MySqlDbType.Text),
     new SqlColumn("Reason", MySqlDbType.Text)
     );
     SQLWriter.EnsureExists(table);
     table = new SqlTable("MutedPlayer",
     new SqlColumn("Player", MySqlDbType.Text),
     new SqlColumn("MuteDate", MySqlDbType.Int32),
     new SqlColumn("UnmuteDate", MySqlDbType.Int32),
     new SqlColumn("MutedBy", MySqlDbType.Text),
     new SqlColumn("Reason", MySqlDbType.Text)
     );
     SQLWriter.EnsureExists(table);
 }
Пример #6
0
        public GroupManager(IDbConnection db)
        {
            database = db;

            var table = new SqlTable("GroupList",
                                     new SqlColumn("GroupName", MySqlDbType.VarChar, 32)
            {
                Primary = true
            },
                                     new SqlColumn("Parent", MySqlDbType.VarChar, 32),
                                     new SqlColumn("Commands", MySqlDbType.Text),
                                     new SqlColumn("ChatColor", MySqlDbType.Text),
                                     new SqlColumn("Prefix", MySqlDbType.Text),
                                     new SqlColumn("Suffix", MySqlDbType.Text)
                                     );
            var creator = new SqlTableCreator(db,
                                              db.GetSqlType() == SqlType.Sqlite
                                                                ? (IQueryBuilder) new SqliteQueryCreator()
                                                                : new MysqlQueryCreator());

            creator.EnsureExists(table);

            //Add default groups
            AddGroup("guest", "canbuild,canregister,canlogin,canpartychat,cantalkinthird");
            AddGroup("default", "guest", "warp,canchangepassword");
            AddGroup("newadmin", "default", "kick,editspawn,reservedslot");
            AddGroup("admin", "newadmin",
                     "ban,unban,whitelist,causeevents,spawnboss,spawnmob,managewarp,time,tp,pvpfun,kill,logs,immunetokick,tphere");
            AddGroup("trustedadmin", "admin", "maintenance,cfg,butcher,item,heal,immunetoban,usebanneditem,manageusers");
            AddGroup("vip", "default", "reservedslot");
        }
Пример #7
0
        public GroupManager(IDbConnection db)
        {
            database = db;

            var table = new SqlTable("GroupList",
                                     new SqlColumn("GroupName", MySqlDbType.VarChar, 32) {Primary = true},
                                     new SqlColumn("Parent", MySqlDbType.VarChar, 32),
                                     new SqlColumn("Commands", MySqlDbType.Text),
                                     new SqlColumn("ChatColor", MySqlDbType.Text),
                                     new SqlColumn("Prefix", MySqlDbType.Text),
                                     new SqlColumn("Suffix", MySqlDbType.Text)
                );
            var creator = new SqlTableCreator(db,
                                              db.GetSqlType() == SqlType.Sqlite
                                              	? (IQueryBuilder) new SqliteQueryCreator()
                                              	: new MysqlQueryCreator());
            creator.EnsureExists(table);

            //Add default groups
            AddGroup("guest", "canbuild,canregister,canlogin,canpartychat,cantalkinthird");
            AddGroup("default", "guest", "warp,canchangepassword");
            AddGroup("newadmin", "default", "kick,editspawn,reservedslot");
            AddGroup("admin", "newadmin",
                     "ban,unban,whitelist,causeevents,spawnboss,spawnmob,managewarp,time,tp,pvpfun,kill,logs,immunetokick,tphere");
            AddGroup("trustedadmin", "admin", "maintenance,cfg,butcher,item,heal,immunetoban,usebanneditem,manageusers");
            AddGroup("vip", "default", "reservedslot");
        }
Пример #8
0
        public CharacterManager(IDbConnection db)
        {
            database = db;

            var table = new SqlTable("tsCharacter",
                                     new SqlColumn("Account", MySqlDbType.Int32) {Primary = true},
                                     new SqlColumn("Health", MySqlDbType.Int32),
                                     new SqlColumn("MaxHealth", MySqlDbType.Int32),
                                     new SqlColumn("Mana", MySqlDbType.Int32),
                                     new SqlColumn("MaxMana", MySqlDbType.Int32),
                                     new SqlColumn("Inventory", MySqlDbType.Text),
                                     new SqlColumn("extraSlot", MySqlDbType.Int32),
                                     new SqlColumn("spawnX", MySqlDbType.Int32),
                                     new SqlColumn("spawnY", MySqlDbType.Int32),
                                     new SqlColumn("skinVariant", MySqlDbType.Int32),
                                     new SqlColumn("hair", MySqlDbType.Int32),
                                     new SqlColumn("hairDye", MySqlDbType.Int32),
                                     new SqlColumn("hairColor", MySqlDbType.Int32),
                                     new SqlColumn("pantsColor", MySqlDbType.Int32),
                                     new SqlColumn("shirtColor", MySqlDbType.Int32),
                                     new SqlColumn("underShirtColor", MySqlDbType.Int32),
                                     new SqlColumn("shoeColor", MySqlDbType.Int32),
                                     new SqlColumn("hideVisuals", MySqlDbType.Int32),
                                     new SqlColumn("skinColor", MySqlDbType.Int32),
                                     new SqlColumn("eyeColor", MySqlDbType.Int32),
                                     new SqlColumn("questsCompleted", MySqlDbType.Int32)
                );
            var creator = new SqlTableCreator(db,
                                              db.GetSqlType() == SqlType.Sqlite
                                              	? (IQueryBuilder) new SqliteQueryCreator()
                                              	: new MysqlQueryCreator());
            creator.EnsureTableStructure(table);
        }
Пример #9
0
        internal static void DBConnect()
        {
            switch (TShock.Config.StorageType.ToLower())
            {
                case "mysql":
                    string[] dbHost = TShock.Config.MySqlHost.Split(':');
                    db = new MySqlConnection()
                    {
                        ConnectionString = string.Format("Server={0}; Port={1}; Database={2}; Uid={3}; Pwd={4};",
                            dbHost[0],
                            dbHost.Length == 1 ? "3306" : dbHost[1],
                            TShock.Config.MySqlDbName,
                            TShock.Config.MySqlUsername,
                            TShock.Config.MySqlPassword)

                    };
                    break;

                case "sqlite":
                    string sql = Path.Combine(TShock.SavePath, "tshock.sqlite");
                    db = new SqliteConnection(string.Format("uri=file://{0},Version=3", sql));
                    break;

            }

            SqlTableCreator sqlcreator = new SqlTableCreator(db, db.GetSqlType() == SqlType.Sqlite ? (IQueryBuilder)new SqliteQueryCreator() : new MysqlQueryCreator());

            sqlcreator.EnsureTableStructure(new SqlTable("NoTpRegions",
                new SqlColumn("Name", MySqlDbType.Text)));
        }
Пример #10
0
        /// <summary>
        /// Initializes a new instance of the <see cref="TShockAPI.DB.ResearchDatastore"/> class.
        /// </summary>
        /// <param name="db">A valid connection to the TShock database</param>
        public ResearchDatastore(IDbConnection db)
        {
            database = db;

            var table = new SqlTable("Research",
                                     new SqlColumn("WorldId", MySqlDbType.Int32),
                                     new SqlColumn("PlayerId", MySqlDbType.Int32),
                                     new SqlColumn("ItemId", MySqlDbType.Int32),
                                     new SqlColumn("AmountSacrificed", MySqlDbType.Int32),
                                     new SqlColumn("TimeSacrificed", MySqlDbType.DateTime)
                                     );
            var creator = new SqlTableCreator(db,
                                              db.GetSqlType() == SqlType.Sqlite
                                        ? (IQueryBuilder) new SqliteQueryCreator()
                                        : new MysqlQueryCreator());

            try
            {
                creator.EnsureTableStructure(table);
            }
            catch (DllNotFoundException)
            {
                Console.WriteLine("Possible problem with your database - is Sqlite3.dll present?");
                throw new Exception("Could not find a database library (probably Sqlite3.dll)");
            }
        }
Пример #11
0
        public RegionManager(IDbConnection db)
        {
            database = db;
            var table = new SqlTable("Regions",
                                     new SqlColumn("X1", MySqlDbType.Int32),
                                     new SqlColumn("Y1", MySqlDbType.Int32),
                                     new SqlColumn("width", MySqlDbType.Int32),
                                     new SqlColumn("height", MySqlDbType.Int32),
                                     new SqlColumn("RegionName", MySqlDbType.VarChar, 50)
            {
                Primary = true
            },
                                     new SqlColumn("WorldID", MySqlDbType.Text),
                                     new SqlColumn("UserIds", MySqlDbType.Text),
                                     new SqlColumn("Protected", MySqlDbType.Int32),
                                     new SqlColumn("Groups", MySqlDbType.Text),
                                     new SqlColumn("Owner", MySqlDbType.VarChar, 50)
                                     );
            var creator = new SqlTableCreator(db,
                                              db.GetSqlType() == SqlType.Sqlite
                                                                ? (IQueryBuilder) new SqliteQueryCreator()
                                                                : new MysqlQueryCreator());

            creator.EnsureExists(table);

            ReloadAllRegions();
        }
Пример #12
0
        private void OnInitialize(EventArgs args)
        {
            SqlTableCreator sqlcreator = new SqlTableCreator(TShock.DB, TShock.DB.GetSqlType() == SqlType.Sqlite ? (IQueryBuilder)new SqliteQueryCreator() : new MysqlQueryCreator());
            sqlcreator.EnsureTableStructure(new SqlTable("TradeRequestLogs",
            new SqlColumn("ID", MySqlDbType.Int32) { AutoIncrement = true, Primary = true },
            new SqlColumn("Trader", MySqlDbType.Text),
            new SqlColumn("Tradee", MySqlDbType.Text),
            new SqlColumn("TraderItems", MySqlDbType.Text),
            new SqlColumn("TradeeItems", MySqlDbType.Text),
            new SqlColumn("TradeDate", MySqlDbType.Text)
            ));

            #region Commands
            Action<Command> Add = c =>
            {
                TShockAPI.Commands.ChatCommands.RemoveAll(c2 => c2.Names.Select(s => s.ToLowerInvariant()).Intersect(c.Names.Select(s => s.ToLowerInvariant())).Any());
                TShockAPI.Commands.ChatCommands.Add(c);
            };

            Add(new Command(Permissions.trade, Commands.Trade, "trade")
            {
                AllowServer = true,
                HelpText = "Allows the user to trade with another user."
            });

            Add(new Command(Permissions.tradelogs, Commands.TradeLogs, "tradelogs")
            {
                AllowServer = true,
                HelpText = "Allows the user check trade logs."
            });
            #endregion
        }
Пример #13
0
 public static void InitTerraDB()
 {
     string sql = Path.Combine(terraDB);
     if (!File.Exists(terraDB))
     {
         SqliteConnection.CreateFile(terraDB);
     }
     DB = new SqliteConnection(string.Format("uri=file://{0},Version=3", sql));
     SQLWriter = new SqlTableCreator(DB, new SqliteQueryCreator());
     var table = new SqlTable("Clans",
     new SqlColumn("clanname", MySqlDbType.Text) { Unique = true },
     new SqlColumn("clangroup", MySqlDbType.Text),
     new SqlColumn("leaders", MySqlDbType.Text),
     new SqlColumn("members", MySqlDbType.Text),
     new SqlColumn("motd", MySqlDbType.Text),
     new SqlColumn("invites", MySqlDbType.Text)
     );
     SQLWriter.EnsureExists(table);
     table = new SqlTable("FoundQueue",
     new SqlColumn("clanname", MySqlDbType.Text) { Unique = true },
     new SqlColumn("founder", MySqlDbType.Text),
     new SqlColumn("cofounder", MySqlDbType.Text)
     );
     SQLWriter.EnsureExists(table);
 }
Пример #14
0
		public HomeManager(IDbConnection db)
		{
			this.db = db;

			var sqlCreator = new SqlTableCreator(db,
				db.GetSqlType() == SqlType.Sqlite ? (IQueryBuilder) new SqliteQueryCreator() : new MysqlQueryCreator());
			sqlCreator.EnsureTableStructure(new SqlTable("Homes",
				new SqlColumn("ID", MySqlDbType.Int32) {AutoIncrement = true, Primary = true},
				new SqlColumn("UserID", MySqlDbType.Int32),
				new SqlColumn("Name", MySqlDbType.Text),
				new SqlColumn("X", MySqlDbType.Double),
				new SqlColumn("Y", MySqlDbType.Double),
				new SqlColumn("WorldID", MySqlDbType.Int32)));

			using (QueryResult result = db.QueryReader("SELECT * FROM Homes WHERE WorldID = @0", Main.worldID))
			{
				while (result.Read())
				{
					homes.Add(new Home(
						result.Get<int>("UserID"),
						result.Get<string>("Name"),
						result.Get<float>("X"),
						result.Get<float>("Y")));
				}
			}
		}
Пример #15
0
 public WarpplateManager(IDbConnection db)
 {
     this.database = db;
     string arg_ED_0 = "Warpplates";
     SqlColumn[] array = new SqlColumn[11];
     array[0] = new SqlColumn("X1", MySqlDbType.Int32);
     array[1] = new SqlColumn("Y1", MySqlDbType.Int32);
     array[2] = new SqlColumn("width", MySqlDbType.Int32);
     array[3] = new SqlColumn("height", MySqlDbType.Int32);
     SqlColumn[] arg_7E_0 = array;
     int arg_7E_1 = 4;
     SqlColumn sqlColumn = new SqlColumn("WarpplateName", MySqlDbType.VarChar, new int?(50));
     sqlColumn.Primary = true;
     arg_7E_0[arg_7E_1] = sqlColumn;
     array[5] = new SqlColumn("WorldID", MySqlDbType.Text);
     array[6] = new SqlColumn("UserIds", MySqlDbType.Text);
     array[7] = new SqlColumn("Protected", MySqlDbType.Int32);
     array[8] = new SqlColumn("WarpplateDestination", MySqlDbType.VarChar, new int?(50));
     array[9] = new SqlColumn("Delay", MySqlDbType.Int32);
     array[10] = new SqlColumn("Label", MySqlDbType.Text);
     SqlTable sqlTable = new SqlTable(arg_ED_0, array);
     IQueryBuilder arg_10D_1;
     if (DbExt.GetSqlType(db) != SqlType.Sqlite)
     {
         IQueryBuilder queryBuilder = new MysqlQueryCreator();
         arg_10D_1 = queryBuilder;
     }
     else
     {
         arg_10D_1 = new SqliteQueryCreator();
     }
     SqlTableCreator sqlTableCreator = new SqlTableCreator(db, arg_10D_1);
     sqlTableCreator.EnsureExists(sqlTable);
     this.ReloadAllWarpplates();
 }
Пример #16
0
        /// <summary>
        /// Initializes a new instance of the <see cref="TShockAPI.DB.BanManager"/> class.
        /// </summary>
        /// <param name="db">A valid connection to the TShock database</param>
        public BanManager(IDbConnection db)
        {
            database = db;

            var table = new SqlTable("Bans",
                                     new SqlColumn("IP", MySqlDbType.String, 16)
            {
                Primary = true
            },
                                     new SqlColumn("Name", MySqlDbType.Text),
                                     new SqlColumn("UUID", MySqlDbType.Text),
                                     new SqlColumn("Reason", MySqlDbType.Text),
                                     new SqlColumn("BanningUser", MySqlDbType.Text),
                                     new SqlColumn("Date", MySqlDbType.Text),
                                     new SqlColumn("Expiration", MySqlDbType.Text)
                                     );
            var creator = new SqlTableCreator(db,
                                              db.GetSqlType() == SqlType.Sqlite
                                                                ? (IQueryBuilder) new SqliteQueryCreator()
                                                                : new MysqlQueryCreator());

            try
            {
                creator.EnsureTableStructure(table);
            }
            catch (DllNotFoundException)
            {
                System.Console.WriteLine("Possible problem with your database - is Sqlite3.dll present?");
                throw new Exception("Could not find a database library (probably Sqlite3.dll)");
            }
        }
Пример #17
0
        public CharacterManager(IDbConnection db)
        {
            database = db;

            var table = new SqlTable("tsCharacter",
                                     new SqlColumn("Account", MySqlDbType.Int32)
            {
                Primary = true
            },
                                     new SqlColumn("Health", MySqlDbType.Int32),
                                     new SqlColumn("MaxHealth", MySqlDbType.Int32),
                                     new SqlColumn("Mana", MySqlDbType.Int32),
                                     new SqlColumn("MaxMana", MySqlDbType.Int32),
                                     new SqlColumn("Inventory", MySqlDbType.Text),
                                     new SqlColumn("spawnX", MySqlDbType.Int32),
                                     new SqlColumn("spawnY", MySqlDbType.Int32),
                                     new SqlColumn("hair", MySqlDbType.Int32),
                                     new SqlColumn("hairDye", MySqlDbType.Int32),
                                     new SqlColumn("hairColor", MySqlDbType.Int32),
                                     new SqlColumn("pantsColor", MySqlDbType.Int32),
                                     new SqlColumn("shirtColor", MySqlDbType.Int32),
                                     new SqlColumn("underShirtColor", MySqlDbType.Int32),
                                     new SqlColumn("shoeColor", MySqlDbType.Int32),
                                     new SqlColumn("hideVisuals", MySqlDbType.Int32),
                                     new SqlColumn("skinColor", MySqlDbType.Int32),
                                     new SqlColumn("eyeColor", MySqlDbType.Int32),
                                     new SqlColumn("questsCompleted", MySqlDbType.Int32)
                                     );
            var creator = new SqlTableCreator(db,
                                              db.GetSqlType() == SqlType.Sqlite
                                                                ? (IQueryBuilder) new SqliteQueryCreator()
                                                                : new MysqlQueryCreator());

            creator.EnsureExists(table);
        }
Пример #18
0
        /// <summary>
        /// Initializes a new instance of the <see cref="TShockAPI.DB.BanManager"/> class.
        /// </summary>
        /// <param name="db">A valid connection to the TShock database</param>
        public BanManager(IDbConnection db)
        {
            database = db;

            var table = new SqlTable("PlayerBans",
                                     new SqlColumn("TicketNumber", MySqlDbType.Int32)
            {
                Primary = true, AutoIncrement = true
            },
                                     new SqlColumn("Identifier", MySqlDbType.Text),
                                     new SqlColumn("Reason", MySqlDbType.Text),
                                     new SqlColumn("BanningUser", MySqlDbType.Text),
                                     new SqlColumn("Date", MySqlDbType.Int64),
                                     new SqlColumn("Expiration", MySqlDbType.Int64)
                                     );
            var creator = new SqlTableCreator(db,
                                              db.GetSqlType() == SqlType.Sqlite
                                        ? (IQueryBuilder) new SqliteQueryCreator()
                                        : new MysqlQueryCreator());

            try
            {
                creator.EnsureTableStructure(table);
            }
            catch (DllNotFoundException)
            {
                System.Console.WriteLine("Possible problem with your database - is Sqlite3.dll present?");
                throw new Exception("Could not find a database library (probably Sqlite3.dll)");
            }

            TryConvertBans();

            OnBanValidate += BanValidateCheck;
            OnBanPreAdd   += BanAddedCheck;
        }
Пример #19
0
        public GroupManager(IDbConnection db)
        {
            database = db;

            var table = new SqlTable("GroupList",
                new SqlColumn("GroupName", MySqlDbType.VarChar, 32) { Primary = true },
                new SqlColumn("Parent", MySqlDbType.VarChar, 32),
                new SqlColumn("Commands", MySqlDbType.Text),
                new SqlColumn("ChatColor", MySqlDbType.Text)
            );
            var creator = new SqlTableCreator(db, db.GetSqlType() == SqlType.Sqlite ? (IQueryBuilder)new SqliteQueryCreator() : new MysqlQueryCreator());
            creator.EnsureExists(table);

            //Add default groups
            AddGroup("default", "canwater,canlava,warp,canbuild");
            AddGroup("newadmin", "default", "kick,editspawn,reservedslot");
            AddGroup("admin", "newadmin", "ban,unban,whitelist,causeevents,spawnboss,spawnmob,managewarp,time,tp,pvpfun,kill,logs,immunetokick,tphere");
            AddGroup("trustedadmin", "admin", "maintenance,cfg,butcher,item,heal,immunetoban,ignorecheatdetection,ignoregriefdetection,usebanneditem,manageusers");
            AddGroup("vip", "default", "canwater,canlava,warp,canbuild,reservedslot");

            String file = Path.Combine(TShock.SavePath, "groups.txt");
            if (File.Exists(file))
            {
                using (StreamReader sr = new StreamReader(file))
                {
                    String line;
                    while ((line = sr.ReadLine()) != null)
                    {
                        if (!line.Equals("") && !line.Substring(0, 1).Equals("#"))
                        {
                            String[] info = line.Split(' ');
                            String comms = "";
                            int size = info.Length;
                            for (int i = 1; i < size; i++)
                            {
                                if (!comms.Equals(""))
                                    comms = comms + ",";
                                comms = comms + info[i].Trim();
                            }

                            string query = "";
                            if (TShock.Config.StorageType.ToLower() == "sqlite")
                                query = "INSERT OR IGNORE INTO GroupList (GroupName, Commands) VALUES (@0, @1);";
                            else if (TShock.Config.StorageType.ToLower() == "mysql")
                                query = "INSERT IGNORE INTO GroupList SET GroupName=@0, Commands=@1;";

                            db.Query(query, info[0].Trim(), comms);

                        }
                    }
                }
                String path = Path.Combine(TShock.SavePath, "old_configs");
                String file2 = Path.Combine(path, "groups.txt");
                if (!Directory.Exists(path))
                    Directory.CreateDirectory(path);
                if (File.Exists(file2))
                    File.Delete(file2);
                File.Move(file, file2);
            }
        }
Пример #20
0
        public void InitializeTable()
        {
            var table = new SqlTable("RegionHelper",
                new SqlColumn("RegionName", MySql.Data.MySqlClient.MySqlDbType.Text),
                new SqlColumn("IsLocked", MySql.Data.MySqlClient.MySqlDbType.Text));

            var creator = new SqlTableCreator(_Connection, _Connection.GetSqlType() == SqlType.Sqlite ? (IQueryBuilder)new SqliteQueryCreator() : new MysqlQueryCreator());
            creator.EnsureExists(table);
        }
Пример #21
0
        /* EnsureExists
         *
         * Checks if tables exists and creates them if not
         *
         * */
        public void EnsureExists(params SqlTable[] Tables)
        {
            // We want to use TShock creator for checking
            SqlTableCreator SqlCreator = new SqlTableCreator(DB,
                (IQueryBuilder)new SqliteQueryCreator());

            foreach (var Table in Tables)
            {
                SqlCreator.EnsureTableStructure(Table);
            }
        }
Пример #22
0
        public static void Initialize()
        {
            if (!Directory.Exists(SavePath))
                Directory.CreateDirectory(SavePath);

            switch (TShock.Config.StorageType.ToLower())
            {
                case "mysql":
                    string[] host = TShock.Config.MySqlHost.Split(':');
                    Database = new MySqlConnection()
                    {
                        ConnectionString = string.Format("Server={0}; Port={1}; Database={2}; Uid={3}; Pwd={4};",
                                host[0],
                                host.Length == 1 ? "3306" : host[1],
                                TShock.Config.MySqlDbName,
                                TShock.Config.MySqlUsername,
                                TShock.Config.MySqlPassword)
                    };
                    break;
                case "sqlite":
                    string sql = Path.Combine(SavePath, "Clans.sqlite");
                    Database = new SqliteConnection(string.Format("uri=file://{0},Version=3", sql));
                    break;
            }
            SqlTableCreator SQLcreator = new SqlTableCreator(Database, Database.GetSqlType() == SqlType.Sqlite
            ? (IQueryBuilder)new SqliteQueryCreator() : new MysqlQueryCreator());

            SqlTable[] tables = new SqlTable[]
            {
                 new SqlTable("Clans",
                     new SqlColumn("Name", MySqlDbType.VarChar) { Primary=true, Unique=true },
                     new SqlColumn("Owner", MySqlDbType.VarChar),
                     new SqlColumn("InviteMode", MySqlDbType.Int32),
                     new SqlColumn("TileX", MySqlDbType.Int32),
                     new SqlColumn("TileY", MySqlDbType.Int32),
                     new SqlColumn("ChatColor", MySqlDbType.VarChar),
                     new SqlColumn("Bans", MySqlDbType.VarChar)
                     ),
                 new SqlTable("ClanMembers",
                     new SqlColumn("Username",MySqlDbType.VarChar) { Primary=true, Unique=true },
                     new SqlColumn("ClanName", MySqlDbType.VarChar)
                     ),
                 new SqlTable("ClanWarps",
                     new SqlColumn("WarpName",MySqlDbType.VarChar) { Primary=true, Unique=true }                  
                     )
            };

            for (int i = 0; i < tables.Length; i++)
                SQLcreator.EnsureTableStructure(tables[i]);

            Config = Config.Read();
            LoadClans();
        }
Пример #23
0
        public ItemManager(IDbConnection db)
        {
            database = db;

            var table = new SqlTable("ItemBans",
                                     new SqlColumn("ItemName", MySqlDbType.VarChar, 50)
            {
                Primary = true
            },
                                     new SqlColumn("AllowedGroups", MySqlDbType.Text)
                                     );
            var creator = new SqlTableCreator(db, db.GetSqlType() == SqlType.Sqlite ? (IQueryBuilder) new SqliteQueryCreator() : new MysqlQueryCreator());

            creator.EnsureExists(table);

            String file = Path.Combine(TShock.SavePath, "itembans.txt");

            if (File.Exists(file))
            {
                using (StreamReader sr = new StreamReader(file))
                {
                    String line;
                    while ((line = sr.ReadLine()) != null)
                    {
                        if (!line.Equals("") && !line.Substring(0, 1).Equals("#"))
                        {
                            string query = (TShock.Config.StorageType.ToLower() == "sqlite") ?
                                           "INSERT OR IGNORE INTO 'ItemBans' (ItemName, AllowedGroups) VALUES (@0, @1);" :
                                           "INSERT IGNORE INTO ItemBans SET ItemName=@0,AllowedGroups=@1 ;";

                            int id = 0;
                            int.TryParse(line, out id);

                            database.Query(query, TShock.Utils.GetItemById(id).name, "");
                        }
                    }
                }

                String path  = Path.Combine(TShock.SavePath, "old_configs");
                String file2 = Path.Combine(path, "itembans.txt");
                if (!Directory.Exists(path))
                {
                    Directory.CreateDirectory(path);
                }
                if (File.Exists(file2))
                {
                    File.Delete(file2);
                }
                File.Move(file, file2);
            }

            UpdateItemBans();
        }
Пример #24
0
        public VocationManager(IDbConnection conn)
        {
            _conn = conn;

            var table = new SqlTable(TableName,
                new SqlColumn("id", MySqlDbType.Int32) { Primary = true },
                new SqlColumn("level", MySqlDbType.Int32),
                new SqlColumn("experience", MySqlDbType.Int64),
                new SqlColumn("vocation", MySqlDbType.VarChar) { Primary = true, Length = 16 });

            var creator = new SqlTableCreator(conn, DbProvider);
            creator.EnsureTableStructure(table);
        }
Пример #25
0
        public ChatManager(IDbConnection db)
        {
            database = db;

                var table = new SqlTable("Chat",
                    new SqlColumn("ID", MySqlDbType.Int32) { Primary = true, AutoIncrement = true },
                    new SqlColumn("Username", MySqlDbType.VarChar, 32),
                    new SqlColumn("ToUsername", MySqlDbType.VarChar, 32),
                    new SqlColumn("Message", MySqlDbType.VarChar, 32)
                    );
                var creator = new SqlTableCreator(db, db.GetSqlType() == SqlType.Sqlite ? (IQueryBuilder)new SqliteQueryCreator() : new MysqlQueryCreator());
                creator.EnsureExists(table);
        }
Пример #26
0
        public ArmorShopManager(IDbConnection db)
        {
            database = db;

            var table = new SqlTable("Armor",
                new SqlColumn("ID", MySqlDbType.Int32) { Primary = true, AutoIncrement = true },
                new SqlColumn("Name", MySqlDbType.VarChar, 32),
                new SqlColumn("InGameName", MySqlDbType.VarChar, 128),
                new SqlColumn("Contains", MySqlDbType.VarChar, 128),
                new SqlColumn("Price", MySqlDbType.Int32));
            var creator = new SqlTableCreator(db, db.GetSqlType() == SqlType.Sqlite ? (IQueryBuilder)new SqliteQueryCreator() : new MysqlQueryCreator());
            creator.EnsureExists(table);
        }
Пример #27
0
        public InventoryManager(IDbConnection db)
        {
            database = db;

            var table = new SqlTable("Inventory",
                new SqlColumn("Account", MySqlDbType.Int32) { Primary = true },
                new SqlColumn("MaxHealth", MySqlDbType.Int32),
                new SqlColumn("MaxMana", MySqlDbType.Int32),
                new SqlColumn("Inventory", MySqlDbType.Text)
            );
            var creator = new SqlTableCreator(db, db.GetSqlType() == SqlType.Sqlite ? (IQueryBuilder)new SqliteQueryCreator() : new MysqlQueryCreator());
            creator.EnsureExists(table);
        }
Пример #28
0
        public GroupManager(IDbConnection db)
        {
            database = db;

            var table = new SqlTable("GroupList",
                                     new SqlColumn("GroupName", MySqlDbType.VarChar, 32)
            {
                Primary = true
            },
                                     new SqlColumn("Parent", MySqlDbType.VarChar, 32),
                                     new SqlColumn("Commands", MySqlDbType.Text),
                                     new SqlColumn("ChatColor", MySqlDbType.Text),
                                     new SqlColumn("Prefix", MySqlDbType.Text),
                                     new SqlColumn("Suffix", MySqlDbType.Text)
                                     );
            var creator = new SqlTableCreator(db,
                                              db.GetSqlType() == SqlType.Sqlite
                                                                ? (IQueryBuilder) new SqliteQueryCreator()
                                                                : new MysqlQueryCreator());

            if (creator.EnsureTableStructure(table))
            {
                // Add default groups if they don't exist
                AddDefaultGroup("guest", "",
                                string.Join(",", Permissions.canbuild, Permissions.canregister, Permissions.canlogin, Permissions.canpartychat,
                                            Permissions.cantalkinthird, Permissions.canchat));

                AddDefaultGroup("default", "guest",
                                string.Join(",", Permissions.warp, Permissions.canchangepassword));

                AddDefaultGroup("newadmin", "default",
                                string.Join(",", Permissions.kick, Permissions.editspawn, Permissions.reservedslot));

                AddDefaultGroup("admin", "newadmin",
                                string.Join(",", Permissions.ban, Permissions.whitelist, "tshock.world.time.*", Permissions.spawnboss,
                                            Permissions.spawnmob, Permissions.managewarp, Permissions.time, Permissions.tp, Permissions.slap,
                                            Permissions.kill, Permissions.logs,
                                            Permissions.immunetokick, Permissions.tpothers));

                AddDefaultGroup("trustedadmin", "admin",
                                string.Join(",", Permissions.maintenance, "tshock.cfg.*", "tshock.world.*", Permissions.butcher, Permissions.item, Permissions.give,
                                            Permissions.heal, Permissions.immunetoban, Permissions.usebanneditem));

                AddDefaultGroup("vip", "default", string.Join(",", Permissions.reservedslot));
            }

            // Load Permissions from the DB
            LoadPermisions();

            Group.DefaultGroup = GetGroupByName(TShock.Config.DefaultGuestGroupName);
        }
Пример #29
0
        public BanManager(IDbConnection db)
        {
            database = db;

            var table = new SqlTable("Bans",
                                     new SqlColumn("IP", MySqlDbType.String, 16)
            {
                Primary = true
            },
                                     new SqlColumn("Name", MySqlDbType.Text),
                                     new SqlColumn("Reason", MySqlDbType.Text)
                                     );
            var creator = new SqlTableCreator(db, db.GetSqlType() == SqlType.Sqlite ? (IQueryBuilder) new SqliteQueryCreator() : new MysqlQueryCreator());

            creator.EnsureExists(table);

            String file = Path.Combine(TShock.SavePath, "bans.txt");

            if (File.Exists(file))
            {
                using (StreamReader sr = new StreamReader(file))
                {
                    String line;
                    while ((line = sr.ReadLine()) != null)
                    {
                        String[] info = line.Split('|');
                        string   query;
                        if (TShock.Config.StorageType.ToLower() == "sqlite")
                        {
                            query = "INSERT OR IGNORE INTO Bans (IP, Name, Reason) VALUES (@0, @1, @2);";
                        }
                        else
                        {
                            query = "INSERT IGNORE INTO Bans SET IP=@0, Name=@1, Reason=@2;";
                        }
                        db.Query(query, info[0].Trim(), info[1].Trim(), info[2].Trim());
                    }
                }
                String path  = Path.Combine(TShock.SavePath, "old_configs");
                String file2 = Path.Combine(path, "bans.txt");
                if (!Directory.Exists(path))
                {
                    Directory.CreateDirectory(path);
                }
                if (File.Exists(file2))
                {
                    File.Delete(file2);
                }
                File.Move(file, file2);
            }
        }
Пример #30
0
        public RemeberedPosManager(IDbConnection db)
        {
            database = db;

            var table = new SqlTable("RememberedPos",
                new SqlColumn("Name", MySqlDbType.VarChar, 50) { Primary = true },
                new SqlColumn("IP", MySqlDbType.Text),
                new SqlColumn("X", MySqlDbType.Int32),
                new SqlColumn("Y", MySqlDbType.Int32),
                new SqlColumn("WorldID", MySqlDbType.Text)
            );
            var creator = new SqlTableCreator(db, db.GetSqlType() == SqlType.Sqlite ? (IQueryBuilder)new SqliteQueryCreator() : new MysqlQueryCreator());
            creator.EnsureExists(table);
        }
Пример #31
0
        public InventoryManager(IDbConnection db)
        {
            database = db;

            var table = new SqlTable("Inventory",
                new SqlColumn("Username", MySqlDbType.VarChar, 32) { Unique = true, Primary = true},
                new SqlColumn("Slot0", MySqlDbType.VarChar, 32),
                new SqlColumn("Slot1", MySqlDbType.VarChar, 32),
                new SqlColumn("Slot2", MySqlDbType.VarChar, 32),
                new SqlColumn("Slot3", MySqlDbType.VarChar, 32),
                new SqlColumn("Slot4", MySqlDbType.VarChar, 32),
                new SqlColumn("Slot5", MySqlDbType.VarChar, 32),
                new SqlColumn("Slot6", MySqlDbType.VarChar, 32),
                new SqlColumn("Slot7", MySqlDbType.VarChar, 32),
                new SqlColumn("Slot8", MySqlDbType.VarChar, 32),
                new SqlColumn("Slot9", MySqlDbType.VarChar, 32),
                new SqlColumn("Slot10", MySqlDbType.VarChar, 32),
                new SqlColumn("Slot11", MySqlDbType.VarChar, 32),
                new SqlColumn("Slot12", MySqlDbType.VarChar, 32),
                new SqlColumn("Slot13", MySqlDbType.VarChar, 32),
                new SqlColumn("Slot14", MySqlDbType.VarChar, 32),
                new SqlColumn("Slot15", MySqlDbType.VarChar, 32),
                new SqlColumn("Slot16", MySqlDbType.VarChar, 32),
                new SqlColumn("Slot17", MySqlDbType.VarChar, 32),
                new SqlColumn("Slot18", MySqlDbType.VarChar, 32),
                new SqlColumn("Slot19", MySqlDbType.VarChar, 32),
                new SqlColumn("Slot20", MySqlDbType.VarChar, 32),
                new SqlColumn("Slot21", MySqlDbType.VarChar, 32),
                new SqlColumn("Slot22", MySqlDbType.VarChar, 32),
                new SqlColumn("Slot23", MySqlDbType.VarChar, 32),
                new SqlColumn("Slot24", MySqlDbType.VarChar, 32),
                new SqlColumn("Slot25", MySqlDbType.VarChar, 32),
                new SqlColumn("Slot26", MySqlDbType.VarChar, 32),
                new SqlColumn("Slot27", MySqlDbType.VarChar, 32),
                new SqlColumn("Slot28", MySqlDbType.VarChar, 32),
                new SqlColumn("Slot29", MySqlDbType.VarChar, 32),
                new SqlColumn("Slot30", MySqlDbType.VarChar, 32),
                new SqlColumn("Slot31", MySqlDbType.VarChar, 32),
                new SqlColumn("Slot32", MySqlDbType.VarChar, 32),
                new SqlColumn("Slot33", MySqlDbType.VarChar, 32),
                new SqlColumn("Slot34", MySqlDbType.VarChar, 32),
                new SqlColumn("Slot35", MySqlDbType.VarChar, 32),
                new SqlColumn("Slot36", MySqlDbType.VarChar, 32),
                new SqlColumn("Slot37", MySqlDbType.VarChar, 32),
                new SqlColumn("Slot38", MySqlDbType.VarChar, 32),
                new SqlColumn("Slot39", MySqlDbType.VarChar, 32)
                );
            var creator = new SqlTableCreator(db, db.GetSqlType() == SqlType.Sqlite ? (IQueryBuilder)new SqliteQueryCreator() : new MysqlQueryCreator());
            creator.EnsureExists(table);
        }
Пример #32
0
		public ProjectileManagager(IDbConnection db)
		{
			database = db;

			var table = new SqlTable("ProjectileBans",
				new SqlColumn("ProjectileID", MySqlDbType.Int32) {Primary = true},
				new SqlColumn("AllowedGroups", MySqlDbType.Text)
				);
			var creator = new SqlTableCreator(db,
				db.GetSqlType() == SqlType.Sqlite
					? (IQueryBuilder) new SqliteQueryCreator()
					: new MysqlQueryCreator());
			creator.EnsureTableStructure(table);
			UpdateBans();
		}
Пример #33
0
 public UserManager(IDbConnection db)
 {
     database = db;
     var table = new SqlTable("users",
         new SqlColumn("steam64", MySqlDbType.VarChar, 64),
         new SqlColumn("username", MySqlDbType.VarChar, 32) {Primary = true, Unique = true},
         new SqlColumn("banned", MySqlDbType.Int32)
         );
     var creator = new SqlTableCreator(db,
         db.GetSqlType() == SqlType.Sqlite
             ? (IQueryBuilder) new SqliteQueryCreator()
             : new MysqlQueryCreator());
     creator.EnsureExists(table);
     database.Query("UPDATE Users set steam64 = @0 WHERE username=\"olink\"", 76561198011175230);
 }
Пример #34
0
		public MuteManager(IDbConnection db)
		{
			this.db = db;

			var sqlCreator = new SqlTableCreator(db, db.GetSqlType() == SqlType.Sqlite
				? (IQueryBuilder)new SqliteQueryCreator() 
				: new MysqlQueryCreator());

			sqlCreator.EnsureTableStructure(new SqlTable("Mutes",
				new SqlColumn("ID", MySqlDbType.Int32) { AutoIncrement = true, Primary = true },
				new SqlColumn("Name", MySqlDbType.Text),
				new SqlColumn("UUID", MySqlDbType.Text),
				new SqlColumn("IP", MySqlDbType.Text),
				new SqlColumn("Date", MySqlDbType.Text),
				new SqlColumn("Expiration", MySqlDbType.Text)));
		}
Пример #35
0
        public InventoryManager(IDbConnection db)
        {
            database = db;

            var table = new SqlTable("Inventory",
                                     new SqlColumn("Account", MySqlDbType.Int32)
            {
                Primary = true
            },
                                     new SqlColumn("MaxHealth", MySqlDbType.Int32),
                                     new SqlColumn("MaxMana", MySqlDbType.Int32),
                                     new SqlColumn("Inventory", MySqlDbType.Text)
                                     );
            var creator = new SqlTableCreator(db, db.GetSqlType() == SqlType.Sqlite ? (IQueryBuilder) new SqliteQueryCreator() : new MysqlQueryCreator());

            creator.EnsureExists(table);
        }
Пример #36
0
		internal WarpManager(IDbConnection db)
		{
			database = db;

			var table = new SqlTable("Warps",
			                         new SqlColumn("Id", MySqlDbType.Int32){Primary = true, AutoIncrement = true},
									 new SqlColumn("WarpName", MySqlDbType.VarChar, 50) {Unique = true},
			                         new SqlColumn("X", MySqlDbType.Int32),
			                         new SqlColumn("Y", MySqlDbType.Int32),
									 new SqlColumn("WorldID", MySqlDbType.VarChar, 50) { Unique = true },
			                         new SqlColumn("Private", MySqlDbType.Text)
				);
			var creator = new SqlTableCreator(db,
			                                  db.GetSqlType() == SqlType.Sqlite
			                                  	? (IQueryBuilder) new SqliteQueryCreator()
			                                  	: new MysqlQueryCreator());
			creator.EnsureTableStructure(table);
		}
Пример #37
0
 public TSdb()
 {
     SQLEditor = new SqlTableEditor(TShock.DB, TShock.DB.GetSqlType() == SqlType.Sqlite ? (IQueryBuilder)new SqliteQueryCreator() : new MysqlQueryCreator());
     SQLWriter = new SqlTableCreator(TShock.DB, TShock.DB.GetSqlType() == SqlType.Sqlite ? (IQueryBuilder)new SqliteQueryCreator() : new MysqlQueryCreator());
     TSEtable = new SqlTable("TSEmailer",
         new SqlColumn("TSEindex", MySqlDbType.Int32) { AutoIncrement = true, Primary = true, Unique = true, NotNull = true },
         new SqlColumn("PlayerID", MySqlDbType.Int32) { Unique = true, NotNull = true },
         new SqlColumn("PlayerName", MySqlDbType.Text) { Length = 250, NotNull = true },
         new SqlColumn("RecordType", MySqlDbType.Int32) { NotNull = true }, //RecordTypes: ['1' = Player Settings] ['2' = OnJoin notifing address])
         new SqlColumn("address", MySqlDbType.Text) { Length = 250 },
         new SqlColumn("players", MySqlDbType.Text) { Length = 10, DefaultValue = "true" },
         new SqlColumn("admins", MySqlDbType.Text) { Length = 10, DefaultValue = "true" },
         new SqlColumn("eblast", MySqlDbType.Text) { Length = 10, DefaultValue = "true" },
         new SqlColumn("reply", MySqlDbType.Text) { Length = 10, DefaultValue = "true" },
         new SqlColumn("notify", MySqlDbType.Text) { Length = 10, DefaultValue = "true" }
         );
     SetupDBTable();
 }
Пример #38
0
        public RemeberedPosManager(IDbConnection db)
        {
            database = db;

            var table = new SqlTable("RememberedPos",
                                     new SqlColumn("Name", MySqlDbType.VarChar, 50)
            {
                Primary = true
            },
                                     new SqlColumn("IP", MySqlDbType.Text),
                                     new SqlColumn("X", MySqlDbType.Int32),
                                     new SqlColumn("Y", MySqlDbType.Int32),
                                     new SqlColumn("WorldID", MySqlDbType.Text)
                                     );
            var creator = new SqlTableCreator(db, db.GetSqlType() == SqlType.Sqlite ? (IQueryBuilder) new SqliteQueryCreator() : new MysqlQueryCreator());

            creator.EnsureExists(table);
        }
Пример #39
0
        public ItemManager(IDbConnection db)
        {
            database = db;

            var table = new SqlTable("ItemBans",
                new SqlColumn("ItemName", MySqlDbType.VarChar, 50) { Primary = true }
            );
            var creator = new SqlTableCreator(db, db.GetSqlType() == SqlType.Sqlite ? (IQueryBuilder)new SqliteQueryCreator() : new MysqlQueryCreator());
            creator.EnsureExists(table);

            String file = Path.Combine(TShock.SavePath, "itembans.txt");
            if (File.Exists(file))
            {
                using (StreamReader sr = new StreamReader(file))
                {
                    String line;
                    while ((line = sr.ReadLine()) != null)
                    {
                        if (!line.Equals("") && !line.Substring(0, 1).Equals("#"))
                        {

                            string query = (TShock.Config.StorageType.ToLower() == "sqlite") ?
                                "INSERT OR IGNORE INTO 'ItemBans' (ItemName) VALUES (@0);" :
                                "INSERT IGNORE INTO ItemBans SET ItemName=@0;";

                            int id = 0;
                            int.TryParse(line, out id);

                            database.Query(query, TShock.Utils.GetItemById(id).name);
                        }
                    }
                }

                String path = Path.Combine(TShock.SavePath, "old_configs");
                String file2 = Path.Combine(path, "itembans.txt");
                if (!Directory.Exists(path))
                    Directory.CreateDirectory(path);
                if (File.Exists(file2))
                    File.Delete(file2);
                File.Move(file, file2);
            }

            UpdateItemBans();
        }
Пример #40
0
        public BanManager(IDbConnection db)
        {
            database = db;

            var table = new SqlTable("Bans",
                                     new SqlColumn("IP", MySqlDbType.String, 16)
            {
                Primary = true
            },
                                     new SqlColumn("Name", MySqlDbType.Text),
                                     new SqlColumn("Reason", MySqlDbType.Text)
                                     );
            var creator = new SqlTableCreator(db,
                                              db.GetSqlType() == SqlType.Sqlite
                                                                ? (IQueryBuilder) new SqliteQueryCreator()
                                                                : new MysqlQueryCreator());

            creator.EnsureExists(table);
        }
Пример #41
0
        public Database(IDbConnection db)
        {
            _db = db;

            var sqlCreator = new SqlTableCreator(_db,
                _db.GetSqlType() == SqlType.Sqlite
                    ? (IQueryBuilder) new SqliteQueryCreator()
                    : new MysqlQueryCreator());

            var table = new SqlTable("Reports",
                new SqlColumn("ReportID", MySqlDbType.Int32) {AutoIncrement = true, Primary = true},
                new SqlColumn("UserID", MySqlDbType.Int32),
                new SqlColumn("ReportedID", MySqlDbType.Int32),
                new SqlColumn("Message", MySqlDbType.Text),
                new SqlColumn("Position", MySqlDbType.Text),
                new SqlColumn("State", MySqlDbType.Int32));

            sqlCreator.EnsureTableStructure(table);
        }
Пример #42
0
		private Database(IDbConnection db)
		{
			_db = db;

			//Define a table creator that will be responsible for ensuring the database table exists
			_tableCreator = new SqlTableCreator(_db,
				_db.GetSqlType() == SqlType.Sqlite
					? (IQueryBuilder)new SqliteQueryCreator()
					: new MysqlQueryCreator());

			//Define the table
			var table = new SqlTable("ServerEvents",
				new SqlColumn("UserID", MySqlDbType.Int32) { AutoIncrement = true, Primary = true },
				new SqlColumn("LastLoginTime", MySqlDbType.VarChar),
				new SqlColumn("DailyLogIn", MySqlDbType.Int32) { DefaultValue = "0" },
				new SqlColumn("DailyLogInStreak", MySqlDbType.Int32));

			_tableCreator.EnsureTableStructure(table);
		}
Пример #43
0
        public Database(IDbConnection db)
        {
            _db = db;

            var SQLCreator = new SqlTableCreator(db,
                                             db.GetSqlType() == SqlType.Sqlite
                                             ? (IQueryBuilder)new SqliteQueryCreator()
                                             : new MysqlQueryCreator());

            var table = new SqlTable("TimeBasedRanking",
                new SqlColumn("ID", MySqlDbType.Int32) { Primary = true, AutoIncrement = true },
                new SqlColumn("Name", MySqlDbType.VarChar, 50) { Unique = true },
                new SqlColumn("Time", MySqlDbType.Int32),
                new SqlColumn("FirstLogin", MySqlDbType.Text),
                new SqlColumn("LastLogin", MySqlDbType.Text),
                new SqlColumn("Experience", MySqlDbType.Int32)
                );
            SQLCreator.EnsureExists(table);
        }
Пример #44
0
        public ItemManager(IDbConnection db)
        {
            database = db;

            var table = new SqlTable("ItemBans",
                                     new SqlColumn("ItemName", MySqlDbType.VarChar, 50)
            {
                Primary = true
            },
                                     new SqlColumn("AllowedGroups", MySqlDbType.Text)
                                     );
            var creator = new SqlTableCreator(db,
                                              db.GetSqlType() == SqlType.Sqlite
                                                                ? (IQueryBuilder) new SqliteQueryCreator()
                                                                : new MysqlQueryCreator());

            creator.EnsureTableStructure(table);
            UpdateItemBans();
        }
Пример #45
0
		/// <summary>Creates a UserManager object. During instantiation, this method will verify the table structure against the format below.</summary>
		/// <param name="db">The database to connect to.</param>
		/// <returns>A UserManager object.</returns>
		public UserManager(IDbConnection db)
		{
			_database = db;

			var table = new SqlTable("Users",
				new SqlColumn("ID", MySqlDbType.Int32) {Primary = true, AutoIncrement = true},
				new SqlColumn("Username", MySqlDbType.VarChar, 32) {Unique = true},
				new SqlColumn("Password", MySqlDbType.VarChar, 128),
				new SqlColumn("UUID", MySqlDbType.VarChar, 128),
				new SqlColumn("Usergroup", MySqlDbType.Text),
				new SqlColumn("Registered", MySqlDbType.Text),
				new SqlColumn("LastAccessed", MySqlDbType.Text),
				new SqlColumn("KnownIPs", MySqlDbType.Text)
				);
			var creator = new SqlTableCreator(db,
				db.GetSqlType() == SqlType.Sqlite
				? (IQueryBuilder) new SqliteQueryCreator()
				: new MysqlQueryCreator());
			creator.EnsureTableStructure(table);
		}
Пример #46
0
		/// <summary>
		/// Sets the database connection and the initial log level.
		/// </summary>
		/// <param name="db">Database connection</param>
		/// <param name="textlogFilepath">File path to a backup text log in case the SQL log fails</param>
		/// <param name="clearTextLog"></param>
		public SqlLog(IDbConnection db, string textlogFilepath, bool clearTextLog)
		{
			FileName = string.Format("{0}://database", db.GetSqlType());
			_database = db;
			_backupLog = new TextLog(textlogFilepath, clearTextLog);

			var table = new SqlTable("Logs",
				new SqlColumn("ID", MySqlDbType.Int32) {AutoIncrement = true, Primary = true},
				new SqlColumn("TimeStamp", MySqlDbType.Text),
				new SqlColumn("LogLevel", MySqlDbType.Int32),
				new SqlColumn("Caller", MySqlDbType.Text),
				new SqlColumn("Message", MySqlDbType.Text)
				);

			var creator = new SqlTableCreator(db,
				db.GetSqlType() == SqlType.Sqlite
					? (IQueryBuilder) new SqliteQueryCreator()
					: new MysqlQueryCreator());
			creator.EnsureTableStructure(table);
		}
Пример #47
0
        public Database(IDbConnection db)
        {
            _db = db;

            var sqlCreator = new SqlTableCreator(db,
                                             db.GetSqlType() == SqlType.Sqlite
                                             ? (IQueryBuilder)new SqliteQueryCreator()
                                             : new MysqlQueryCreator());

            var table = new SqlTable("Bounties",
                new SqlColumn("ID", MySqlDbType.Int32) { Primary = true, AutoIncrement = true },
                new SqlColumn("Name", MySqlDbType.Text) { Unique = true },
                new SqlColumn("Contractor", MySqlDbType.Text),
                new SqlColumn("Target", MySqlDbType.Text),
                new SqlColumn("Rewards", MySqlDbType.Text),
                new SqlColumn("Hunters", MySqlDbType.Text),
                new SqlColumn("Failures", MySqlDbType.Text)
                );
            sqlCreator.EnsureExists(table);
        }
Пример #48
0
        internal RegionManager(IDbConnection db)
        {
            database = db;
            var table = new SqlTable("Regions",
                                     new SqlColumn("Id", MySqlDbType.Int32)
            {
                Primary = true, AutoIncrement = true
            },
                                     new SqlColumn("X1", MySqlDbType.Int32),
                                     new SqlColumn("Y1", MySqlDbType.Int32),
                                     new SqlColumn("width", MySqlDbType.Int32),
                                     new SqlColumn("height", MySqlDbType.Int32),
                                     new SqlColumn("RegionName", MySqlDbType.VarChar, 50)
            {
                Unique = true
            },
                                     new SqlColumn("WorldID", MySqlDbType.VarChar, 50)
            {
                Unique = true
            },
                                     new SqlColumn("UserIds", MySqlDbType.Text),
                                     new SqlColumn("Protected", MySqlDbType.Int32),
                                     new SqlColumn("Groups", MySqlDbType.Text),
                                     new SqlColumn("Owner", MySqlDbType.VarChar, 50),
                                     new SqlColumn("Z", MySqlDbType.Int32)
            {
                DefaultValue = "0"
            }
                                     );
            var creator = new SqlTableCreator(db,
                                              db.GetSqlType() == SqlType.Sqlite
                                                                                                ? (IQueryBuilder) new SqliteQueryCreator()
                                                                                                : new MysqlQueryCreator());

            creator.EnsureTableStructure(table);
        }
Пример #49
0
        /// <summary>
        /// Initializes a new instance of the <see cref="GroupManager"/> class with the specified database connection.
        /// </summary>
        /// <param name="db">The connection.</param>
        public GroupManager(IDbConnection db)
        {
            database = db;

            var table = new SqlTable("GroupList",
                                     new SqlColumn("GroupName", MySqlDbType.VarChar, 32)
            {
                Primary = true
            },
                                     new SqlColumn("Parent", MySqlDbType.VarChar, 32),
                                     new SqlColumn("Commands", MySqlDbType.Text),
                                     new SqlColumn("ChatColor", MySqlDbType.Text),
                                     new SqlColumn("Prefix", MySqlDbType.Text),
                                     new SqlColumn("Suffix", MySqlDbType.Text)
                                     );
            var creator = new SqlTableCreator(db,
                                              db.GetSqlType() == SqlType.Sqlite
                                        ? (IQueryBuilder) new SqliteQueryCreator()
                                        : new MysqlQueryCreator());

            if (creator.EnsureTableStructure(table))
            {
                // Add default groups if they don't exist
                AddDefaultGroup("guest", "",
                                string.Join(",",
                                            Permissions.canbuild,
                                            Permissions.canregister,
                                            Permissions.canlogin,
                                            Permissions.canpartychat,
                                            Permissions.cantalkinthird,
                                            Permissions.canchat,
                                            Permissions.synclocalarea,
                                            Permissions.sendemoji));

                AddDefaultGroup("default", "guest",
                                string.Join(",",
                                            Permissions.warp,
                                            Permissions.canchangepassword,
                                            Permissions.canlogout,
                                            Permissions.summonboss,
                                            Permissions.whisper,
                                            Permissions.wormhole,
                                            Permissions.canpaint,
                                            Permissions.pylon,
                                            Permissions.tppotion,
                                            Permissions.magicconch,
                                            Permissions.demonconch));

                AddDefaultGroup("vip", "default",
                                string.Join(",",
                                            Permissions.reservedslot,
                                            Permissions.renamenpc,
                                            Permissions.startinvasion,
                                            Permissions.summonboss,
                                            Permissions.whisper,
                                            Permissions.wormhole));

                AddDefaultGroup("newadmin", "vip",
                                string.Join(",",
                                            Permissions.kick,
                                            Permissions.editspawn,
                                            Permissions.reservedslot,
                                            Permissions.annoy,
                                            Permissions.checkaccountinfo,
                                            Permissions.getpos,
                                            Permissions.mute,
                                            Permissions.rod,
                                            Permissions.savessc,
                                            Permissions.seeids,
                                            "tshock.world.time.*"));

                AddDefaultGroup("admin", "newadmin",
                                string.Join(",",
                                            Permissions.ban,
                                            Permissions.whitelist,
                                            Permissions.spawnboss,
                                            Permissions.spawnmob,
                                            Permissions.managewarp,
                                            Permissions.time,
                                            Permissions.tp,
                                            Permissions.slap,
                                            Permissions.kill,
                                            Permissions.logs,
                                            Permissions.immunetokick,
                                            Permissions.tpothers,
                                            Permissions.advaccountinfo,
                                            Permissions.broadcast,
                                            Permissions.home,
                                            Permissions.tpallothers,
                                            Permissions.tpallow,
                                            Permissions.tpnpc,
                                            Permissions.tppos,
                                            Permissions.tpsilent,
                                            Permissions.userinfo,
                                            Permissions.spawn));

                AddDefaultGroup("trustedadmin", "admin",
                                string.Join(",",
                                            Permissions.maintenance,
                                            "tshock.cfg.*",
                                            "tshock.world.*",
                                            Permissions.butcher,
                                            Permissions.item,
                                            Permissions.give,
                                            Permissions.heal,
                                            Permissions.immunetoban,
                                            Permissions.usebanneditem,
                                            Permissions.allowclientsideworldedit,
                                            Permissions.buff,
                                            Permissions.buffplayer,
                                            Permissions.clear,
                                            Permissions.clearangler,
                                            Permissions.godmode,
                                            Permissions.godmodeother,
                                            Permissions.ignoredamagecap,
                                            Permissions.ignorehp,
                                            Permissions.ignorekilltiledetection,
                                            Permissions.ignoreliquidsetdetection,
                                            Permissions.ignoremp,
                                            Permissions.ignorepaintdetection,
                                            Permissions.ignoreplacetiledetection,
                                            Permissions.ignoreprojectiledetection,
                                            Permissions.ignorestackhackdetection,
                                            Permissions.invade,
                                            Permissions.startdd2,
                                            Permissions.uploaddata,
                                            Permissions.uploadothersdata,
                                            Permissions.spawnpets,
                                            Permissions.journey_timefreeze,
                                            Permissions.journey_timeset,
                                            Permissions.journey_timespeed,
                                            Permissions.journey_godmode,
                                            Permissions.journey_windstrength,
                                            Permissions.journey_windfreeze,
                                            Permissions.journey_rainstrength,
                                            Permissions.journey_rainfreeze,
                                            Permissions.journey_placementrange,
                                            Permissions.journey_setdifficulty,
                                            Permissions.journey_biomespreadfreeze,
                                            Permissions.journey_setspawnrate,
                                            Permissions.journey_contributeresearch));

                AddDefaultGroup("owner", "trustedadmin",
                                string.Join(",",
                                            Permissions.su,
                                            Permissions.allowdroppingbanneditems,
                                            Permissions.antibuild,
                                            Permissions.canusebannedprojectiles,
                                            Permissions.canusebannedtiles,
                                            Permissions.managegroup,
                                            Permissions.manageitem,
                                            Permissions.manageprojectile,
                                            Permissions.manageregion,
                                            Permissions.managetile,
                                            Permissions.maxspawns,
                                            Permissions.serverinfo,
                                            Permissions.settempgroup,
                                            Permissions.spawnrate,
                                            Permissions.tpoverride,
                                            Permissions.createdumps));
            }

            // Load Permissions from the DB
            LoadPermisions();

            Group.DefaultGroup = GetGroupByName(TShock.Config.Settings.DefaultGuestGroupName);
        }
Пример #50
0
        public GroupManager(IDbConnection db)
        {
            database = db;

            var table = new SqlTable("GroupList",
                                     new SqlColumn("GroupName", MySqlDbType.VarChar, 32)
            {
                Primary = true
            },
                                     new SqlColumn("Parent", MySqlDbType.VarChar, 32),
                                     new SqlColumn("Commands", MySqlDbType.Text),
                                     new SqlColumn("ChatColor", MySqlDbType.Text)
                                     );
            var creator = new SqlTableCreator(db, db.GetSqlType() == SqlType.Sqlite ? (IQueryBuilder) new SqliteQueryCreator() : new MysqlQueryCreator());

            creator.EnsureExists(table);

            //Add default groups
            AddGroup("default", "warp,canbuild");
            AddGroup("newadmin", "default", "kick,editspawn,reservedslot");
            AddGroup("admin", "newadmin", "ban,unban,whitelist,causeevents,spawnboss,spawnmob,managewarp,time,tp,pvpfun,kill,logs,immunetokick,tphere");
            AddGroup("trustedadmin", "admin", "maintenance,cfg,butcher,item,heal,immunetoban,usebanneditem,manageusers");
            AddGroup("vip", "default", "reservedslot");

            String file = Path.Combine(TShock.SavePath, "groups.txt");

            if (File.Exists(file))
            {
                using (StreamReader sr = new StreamReader(file))
                {
                    String line;
                    while ((line = sr.ReadLine()) != null)
                    {
                        if (!line.Equals("") && !line.Substring(0, 1).Equals("#"))
                        {
                            String[] info  = line.Split(' ');
                            String   comms = "";
                            int      size  = info.Length;
                            for (int i = 1; i < size; i++)
                            {
                                if (!comms.Equals(""))
                                {
                                    comms = comms + ",";
                                }
                                comms = comms + info[i].Trim();
                            }

                            string query = "";
                            if (TShock.Config.StorageType.ToLower() == "sqlite")
                            {
                                query = "INSERT OR IGNORE INTO GroupList (GroupName, Commands) VALUES (@0, @1);";
                            }
                            else if (TShock.Config.StorageType.ToLower() == "mysql")
                            {
                                query = "INSERT IGNORE INTO GroupList SET GroupName=@0, Commands=@1;";
                            }

                            db.Query(query, info[0].Trim(), comms);
                        }
                    }
                }
                String path  = Path.Combine(TShock.SavePath, "old_configs");
                String file2 = Path.Combine(path, "groups.txt");
                if (!Directory.Exists(path))
                {
                    Directory.CreateDirectory(path);
                }
                if (File.Exists(file2))
                {
                    File.Delete(file2);
                }
                File.Move(file, file2);
            }
        }
Пример #51
0
        public WarpManager(IDbConnection db)
        {
            database = db;

            var table = new SqlTable("Warps",
                                     new SqlColumn("WarpName", MySqlDbType.VarChar, 50)
            {
                Primary = true
            },
                                     new SqlColumn("X", MySqlDbType.Int32),
                                     new SqlColumn("Y", MySqlDbType.Int32),
                                     new SqlColumn("WorldID", MySqlDbType.Text),
                                     new SqlColumn("Private", MySqlDbType.Text)
                                     );
            var creator = new SqlTableCreator(db, db.GetSqlType() == SqlType.Sqlite ? (IQueryBuilder) new SqliteQueryCreator() : new MysqlQueryCreator());

            creator.EnsureExists(table);

            String file  = Path.Combine(TShock.SavePath, "warps.xml");
            String name  = "";
            String world = "";
            int    x1    = 0;
            int    y1    = 0;

            if (!File.Exists(file))
            {
                return;
            }

            using (var reader = XmlReader.Create(new StreamReader(file), new XmlReaderSettings {
                CloseInput = true
            }))
            {
                // Parse the file and display each of the nodes.
                while (reader.Read())
                {
                    switch (reader.NodeType)
                    {
                    case XmlNodeType.Element:
                        switch (reader.Name)
                        {
                        case "Warp":
                            name  = "";
                            world = "";
                            x1    = 0;
                            y1    = 0;
                            break;

                        case "WarpName":
                            while (reader.NodeType != XmlNodeType.Text)
                            {
                                reader.Read();
                            }
                            name = reader.Value;
                            break;

                        case "X":
                            while (reader.NodeType != XmlNodeType.Text)
                            {
                                reader.Read();
                            }
                            int.TryParse(reader.Value, out x1);
                            break;

                        case "Y":
                            while (reader.NodeType != XmlNodeType.Text)
                            {
                                reader.Read();
                            }
                            int.TryParse(reader.Value, out y1);
                            break;

                        case "WorldName":
                            while (reader.NodeType != XmlNodeType.Text)
                            {
                                reader.Read();
                            }
                            world = reader.Value;
                            break;
                        }
                        break;

                    case XmlNodeType.Text:

                        break;

                    case XmlNodeType.XmlDeclaration:
                    case XmlNodeType.ProcessingInstruction:
                        break;

                    case XmlNodeType.Comment:
                        break;

                    case XmlNodeType.EndElement:
                        if (reader.Name.Equals("Warp"))
                        {
                            string query = (TShock.Config.StorageType.ToLower() == "sqlite")
                                                   ? "INSERT OR IGNORE INTO Warps VALUES (@0, @1,@2, @3);"
                                                   : "INSERT IGNORE INTO Warps SET X=@0, Y=@1, WarpName=@2, WorldID=@3;";
                            database.Query(query, x1, y1, name, world);
                        }
                        break;
                    }
                }
            }

            String path  = Path.Combine(TShock.SavePath, "old_configs");
            String file2 = Path.Combine(path, "warps.xml");

            if (!Directory.Exists(path))
            {
                Directory.CreateDirectory(path);
            }
            if (File.Exists(file2))
            {
                File.Delete(file2);
            }
            File.Move(file, file2);
        }
Пример #52
0
        public UserManager(IDbConnection db)
        {
            database = db;

            var table = new SqlTable("Users",
                                     new SqlColumn("ID", MySqlDbType.Int32)
            {
                Primary = true, AutoIncrement = true
            },
                                     new SqlColumn("Username", MySqlDbType.VarChar, 32)
            {
                Unique = true
            },
                                     new SqlColumn("Password", MySqlDbType.VarChar, 128),
                                     new SqlColumn("Usergroup", MySqlDbType.Text),
                                     new SqlColumn("IP", MySqlDbType.VarChar, 16)
                                     );
            var creator = new SqlTableCreator(db, db.GetSqlType() == SqlType.Sqlite ? (IQueryBuilder) new SqliteQueryCreator() : new MysqlQueryCreator());

            creator.EnsureExists(table);

            String file = Path.Combine(TShock.SavePath, "users.txt");

            if (File.Exists(file))
            {
                using (StreamReader sr = new StreamReader(file))
                {
                    String line;
                    while ((line = sr.ReadLine()) != null)
                    {
                        if (line.Equals("") || line.Substring(0, 1).Equals("#"))
                        {
                            continue;
                        }
                        String[] info     = line.Split(' ');
                        String   username = "";
                        String   sha      = "";
                        String   group    = "";
                        String   ip       = "";

                        String[] nameSha = info[0].Split(':');

                        if (nameSha.Length < 2)
                        {
                            username = nameSha[0];
                            ip       = nameSha[0];
                            group    = info[1];
                        }
                        else
                        {
                            username = nameSha[0];
                            sha      = nameSha[1];
                            group    = info[1];
                        }

                        string query = (TShock.Config.StorageType.ToLower() == "sqlite") ?
                                       "INSERT OR IGNORE INTO Users (Username, Password, Usergroup, IP) VALUES (@0, @1, @2, @3)" :
                                       "INSERT IGNORE INTO Users SET Username=@0, Password=@1, Usergroup=@2, IP=@3";

                        database.Query(query, username.Trim(), sha.Trim(), group.Trim(), ip.Trim());
                    }
                }
                String path  = Path.Combine(TShock.SavePath, "old_configs");
                String file2 = Path.Combine(path, "users.txt");
                if (!Directory.Exists(path))
                {
                    Directory.CreateDirectory(path);
                }
                if (File.Exists(file2))
                {
                    File.Delete(file2);
                }
                File.Move(file, file2);
            }
        }