o
    DœHi’  ã                   @   s¦   d Z ddlZddlmZ ddlmZ dZej e¡reeƒ ne	de› ƒ‚G dd„ dƒZ
G d	d
„ d
e
ƒZG dd„ de
ƒZG dd„ de
ƒZeeeedœZddd„ZdS )zW
Security Configuration for EPO-LAW
Loads environment variables from /etc/epo-law/.env
é    N)Úload_dotenv)Ú	timedeltaz/etc/epo-law/.envz(Critical: Environment file not found at c                
   @   s  e Zd ZdZej d¡Zeredkredƒ‚ej dd¡Z	e
ej dd¡ƒZej d	¡Zej d
¡Zej d¡ZeeeegƒsCedƒ‚de› de› de	› de› de› 
ZdZe
ej dd¡ƒe
ej dd¡ƒe
ej dd¡ƒddœZej dd¡ ¡ dkZej dd¡ ¡ dkZej dd¡Zee
ej d d¡ƒd!Zej d"d¡ ¡ dkZej d#d¡ ¡ dkZe
ej d$d¡ƒZej d%d¡ ¡ dkZg d&¢Ze
ej d'd(¡ƒZej d)d*¡Ze ej d+d,¡ !d-¡ƒZ"e
ej d.d/¡ƒZ#ej d0d¡ ¡ dkZ$ej d1d¡ ¡ dkZ%ej d2d¡ ¡ dkZ&ej d3d¡ ¡ dkZ'e
ej d4d5¡ƒZ(e
ej d6d¡ƒZ)ej d7d¡ ¡ dkZ*ej d8¡Z+e
ej d9d:¡ƒZ,ej d;d¡ ¡ dkZ-ej d<¡Z.ej d=¡Z/ej d>¡Z0ej d?d@¡Z1ej dAdB¡Z2ej dCdD¡Z3ej dEdF¡Z4ej dG¡Z5ej dHdI¡Z6dJS )KÚConfigz/Base configuration with security-first defaultsÚ
SECRET_KEYÚ)CHANGE_ME_GENERATE_RANDOM_SECRET_KEY_HEREz0SECRET_KEY must be set in environment variables!ÚDB_HOSTÚ	localhostÚDB_PORTiê  ÚDB_NAMEÚDB_USERÚDB_PASSWORDz:Database credentials must be set in environment variables!zmysql+pymysql://ú:ú@ú/FÚDB_POOL_SIZEé
   ÚDB_POOL_RECYCLEi  ÚDB_POOL_TIMEOUTé   T)Ú	pool_sizeÚpool_recycleÚpool_timeoutÚpool_pre_pingÚSESSION_COOKIE_SECUREÚTrueÚtrueÚSESSION_COOKIE_HTTPONLYÚSESSION_COOKIE_SAMESITEÚLaxÚPERMANENT_SESSION_LIFETIME)ÚsecondsÚSESSION_REFRESH_EACH_REQUESTÚWTF_CSRF_ENABLEDÚWTF_CSRF_TIME_LIMITÚWTF_CSRF_SSL_STRICT)ÚPOSTÚPUTÚPATCHÚDELETEÚMAX_CONTENT_LENGTHi   ÚUPLOAD_FOLDERz/opt/epolaw/uploadsÚALLOWED_EXTENSIONSzpdf,doc,docx,txtú,ÚMIN_PASSWORD_LENGTHé   ÚREQUIRE_UPPERCASEÚREQUIRE_LOWERCASEÚREQUIRE_DIGITSÚREQUIRE_SPECIAL_CHARSÚMAX_LOGIN_ATTEMPTSé   ÚLOCKOUT_DURATION_MINUTESÚLOCKOUT_NOTIFY_ADMINÚMAIL_SERVERÚ	MAIL_PORTiK  ÚMAIL_USE_TLSÚMAIL_USERNAMEÚMAIL_PASSWORDÚMAIL_DEFAULT_SENDERÚ	LOG_LEVELÚINFOÚLOG_FILEz /var/log/epo-law/application.logÚSECURITY_LOG_FILEz/var/log/epo-law/security.logÚAPP_NAMEzEPO-LAWÚADMIN_EMAILÚTIMEZONEÚUTCN)7Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚosÚenvironÚgetr   ÚRuntimeErrorr   Úintr	   r
   r   r   ÚallÚSQLALCHEMY_DATABASE_URIÚSQLALCHEMY_TRACK_MODIFICATIONSÚSQLALCHEMY_ENGINE_OPTIONSÚlowerr   r   r   r   r   r!   r"   r#   r$   ÚWTF_CSRF_METHODSr)   r*   ÚsetÚsplitr+   r-   r/   r0   r1   r2   r3   r5   r6   r7   r8   r9   r:   r;   r<   r=   r?   r@   rA   rB   rC   © rV   rV   ú /var/www/lawbot/config/config.pyr      sj    "üÿr   c                   @   s   e Zd ZdZdZdZdZdS )ÚDevelopmentConfigz5Development configuration - less strict for local devTFN)rE   rF   rG   rH   ÚDEBUGr   r$   rV   rV   rV   rW   rX   `   ó
    rX   c                   @   s$   e Zd ZdZdZdZdZdZdZdS )ÚProductionConfigz+Production configuration - maximum securityFTÚhttpsN)	rE   rF   rG   rH   rY   ÚTESTINGr   r$   ÚPREFERRED_URL_SCHEMErV   rV   rV   rW   r[   g   s    r[   c                   @   s   e Zd ZdZdZdZdZdS )ÚTestingConfigzTesting configurationTFzsqlite:///:memory:N)rE   rF   rG   rH   r]   r"   rO   rV   rV   rV   rW   r_   r   rZ   r_   )ÚdevelopmentÚ
productionÚtestingÚdefaultc                 C   s&   | du rt j dd¡} t | td ¡S )z&Get configuration based on environmentNÚ	FLASK_ENVra   rc   )rI   rJ   rK   Úconfig)ÚenvrV   rV   rW   Ú
get_config‚   s   rg   )N)rH   rI   Údotenvr   Údatetimer   ÚENV_FILEÚpathÚexistsrL   r   rX   r[   r_   re   rg   rV   rV   rV   rW   Ú<module>   s$    
O	ü