Beispiel #1
0
 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.");
 }
Beispiel #2
0
        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);
 }
Beispiel #4
0
        /// <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);
        }
Beispiel #5
0
 public bool RequestDBJob(PacketDistributor distributor, DBQueue dbQueue)
 {
     distributor.DistributeDBJobRequest(dbQueue);
     return(true);
 }