public LoginDatabase( SQLiteConnection conn,DBQueue queue) { _queue = queue; _conn = conn; //BackgroundRequest.IPReady += _evQueue.Handle; OnIPReady += IPDataReady.Handle; OnIDReady += IDDataReady.Handle; Logger.LogDisp.NewMessage(LogType.Info,"Login DB initialized."); }
public DBQueue MakeDBQueue(PACKETID packetID, string sessionID, int sessionIndex, byte[] jobDatas) { var dbQueue = new DBQueue() { PacketID = packetID, SessionID = sessionID, SessionIndex = sessionIndex, Datas = jobDatas }; return(dbQueue); }
public void DistributeDBJobRequest(DBQueue dbQueue) { DBWorker.InsertMsg(dbQueue); }
/// <summary> /// Initiate the legacy NoSQL Freelancer storage. /// </summary> /// <param name="dbPath">Path to the SQLite database file. DB will be created if file is nonexistent.</param> /// <param name="accPath">Path to accounts' directory.</param> /// <param name="log"></param> public NoSQLDB(string dbPath, string accPath, LogDispatcher.LogDispatcher log) { //One-shot event assignment; NoSQLDB-Retriever Logger.LogDisp = log; //Retriever = new MetaRetriever(this); AccPath = accPath; if (!File.Exists(dbPath)) { SQLiteConnection.CreateFile(dbPath); _conn = new SQLiteConnection(); var conString = new SQLiteConnectionStringBuilder { DataSource = dbPath }; _conn.ConnectionString = conString.ToString(); try { _conn.Open(); } catch (Exception e) { Logger.LogDisp.NewMessage(LogType.Fatal, "NoSQLDB: Can't connect to new player DB. Reason: " + e.Message); throw; } // Create data base structure var createDataBase = _conn.CreateCommand(); // Useful method createDataBase.CommandText = CreateDBString.Replace("@Table", "Accounts"); createDataBase.ExecuteNonQuery(); createDataBase.CommandText = CreateDBString.Replace("@Table", "DelAccounts"); createDataBase.ExecuteNonQuery(); createDataBase.CommandText = @"CREATE TABLE LoginIP( AccID TEXT NOT NULL, IP TEXT NOT NULL, LogTime DATETIME NOT NULL, PRIMARY KEY (AccID, IP) ON CONFLICT REPLACE );"; createDataBase.ExecuteNonQuery(); createDataBase.CommandText = @"CREATE TABLE LoginID( AccID TEXT NOT NULL, ID1 TEXT NOT NULL, ID2 TEXT NOT NULL );"; createDataBase.ExecuteNonQuery(); createDataBase.CommandText = @"CREATE TABLE Bans( AccID TEXT NOT NULL PRIMARY KEY ON CONFLICT REPLACE, Reason TEXT NOT NULL, DateStarting DATETIME NOT NULL, DateFinishing DATETIME NOT NULL );"; createDataBase.ExecuteNonQuery(); createDataBase.CommandText = "CREATE INDEX AccLookup ON LoginIP(AccID ASC);"; createDataBase.ExecuteNonQuery(); createDataBase.CommandText = "CREATE INDEX CharLookup ON Accounts(CharName ASC);"; createDataBase.ExecuteNonQuery(); _conn.Close(); Logger.LogDisp.NewMessage(LogType.Warning, "Created new player DB."); } // Base created fo sho _conn = new SQLiteConnection(); var cs = new SQLiteConnectionStringBuilder {DataSource = dbPath}; _conn.ConnectionString = cs.ToString(); _conn.Open(); Logger.LogDisp.NewMessage(LogType.Info, "NoSQLDB: Connected."); Queue = new DBQueue(_conn, "NoSQLDB.Main"); LoginDB = new LoginDatabase( _conn, Queue); Bans = new BanDB(this); //TODO: might need to use non-hardcoded paths BansID = new IniBan(accPath + @"\loginidbans.ini"); BansIP = new IniBan(accPath + @"\ipbans.ini"); Scan = new Scanner(_conn,this); Retriever = new DBCrawler(_conn); Scan.StateChanged += Scan_StateChanged; if (StateChanged != null) StateChanged(DBStates.Ready); }
public bool RequestDBJob(PacketDistributor distributor, DBQueue dbQueue) { distributor.DistributeDBJobRequest(dbQueue); return(true); }