
    he                         S SK r S SKrS SKrS SKr\R                  " \R
                  SS9  \R                  " \5      r " S S5      r	Sq
S rg)    Nz4%(asctime)s - %(name)s - %(levelname)s - %(message)s)levelformatc                   .    \ rS rSrSrSS jrS rS rSrg)	DatabaseManager
   u.   
管理 SQLite 数据库连接和初始化。
c                     Xl         [        R                  " [        R                  R	                  U R                   5      SS9  U R                  5         g)uP   
初始化数据库管理器。
:param db_path: SQLite 数据库文件路径。
T)exist_okN)db_pathosmakedirspathdirnameinit_db)selfr
   s     core/database.py__init__DatabaseManager.__init__   s1    
 
BGGOODLL1DA    c                 p    [         R                  " U R                  5      n[         R                  Ul        U$ )u:   
获取数据库连接。
:return: SQLite 连接对象。
)sqlite3connectr
   Rowrow_factory)r   conns     r   get_connectionDatabaseManager.get_connection   s'    
 t||,";;r   c                     U R                  5        nUR                  5       nUR                  S5        UR                  S5        UR                  S5        UR                  5         [        R                  SU R                   35        SSS5        g! , (       d  f       g= f! [        R                   a  n[        R                  SU 35        e SnAff = f)u,   
初始化数据库，创建必要的表。
z
                    CREATE TABLE IF NOT EXISTS environments (
                        id TEXT PRIMARY KEY,
                        driver TEXT NOT NULL,
                        config TEXT NOT NULL -- JSON string
                    );
                u  
                    CREATE TABLE IF NOT EXISTS environment_rules (
                        environment_id TEXT NOT NULL,
                        rule_data TEXT NOT NULL, -- JSON string of the rule object
                        rule_order INTEGER NOT NULL, -- 用于保持规则顺序
                        FOREIGN KEY (environment_id) REFERENCES environments (id) ON DELETE CASCADE
                    );
                zUCREATE INDEX IF NOT EXISTS idx_env_rules_env_id ON environment_rules(environment_id);z%Database initialized successfully at NzError initializing database: )
r   cursorexecutecommitloggerinfor
   r   Errorerror)r   r   r   es       r   r   DatabaseManager.init_db#   s    !	$$&$         vwCDLL>RS; '&&< }} 	LL8<=	s5   B" A6BB" 
BB" B" "C6CC)r
   N)zdata/honeypot.db)	__name__
__module____qualname____firstlineno____doc__r   r   r   __static_attributes__ r   r   r   r   
   s    %r   r   c                  0    [         c
  [        5       q [         $ )uL   
获取全局数据库管理器实例。
:return: DatabaseManager 实例。
)
db_managerr   r-   r   r   get_db_managerr0   M   s     $&
r   )r   r   jsonloggingbasicConfigINFO	getLoggerr'   r!   r   r/   r0   r-   r   r   <module>r6      sO     	     ',,/e f			8	$> >B 
r   