mirror of
				https://github.com/zulip/zulip.git
				synced 2025-11-04 05:53:43 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			61 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			61 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
import configparser
 | 
						|
import os
 | 
						|
from typing import Optional, overload
 | 
						|
 | 
						|
DEPLOY_ROOT = os.path.realpath(os.path.dirname(os.path.dirname(__file__)))
 | 
						|
 | 
						|
config_file = configparser.RawConfigParser()
 | 
						|
config_file.read("/etc/zulip/zulip.conf")
 | 
						|
 | 
						|
# Whether this instance of Zulip is running in a production environment.
 | 
						|
PRODUCTION = config_file.has_option("machine", "deploy_type")
 | 
						|
DEVELOPMENT = not PRODUCTION
 | 
						|
 | 
						|
secrets_file = configparser.RawConfigParser()
 | 
						|
if PRODUCTION:
 | 
						|
    secrets_file.read("/etc/zulip/zulip-secrets.conf")
 | 
						|
else:
 | 
						|
    secrets_file.read(os.path.join(DEPLOY_ROOT, "zproject/dev-secrets.conf"))
 | 
						|
 | 
						|
 | 
						|
@overload
 | 
						|
def get_secret(key: str, default_value: str, development_only: bool = False) -> str:
 | 
						|
    ...
 | 
						|
 | 
						|
 | 
						|
@overload
 | 
						|
def get_secret(
 | 
						|
    key: str, default_value: Optional[str] = None, development_only: bool = False
 | 
						|
) -> Optional[str]:
 | 
						|
    ...
 | 
						|
 | 
						|
 | 
						|
def get_secret(
 | 
						|
    key: str, default_value: Optional[str] = None, development_only: bool = False
 | 
						|
) -> Optional[str]:
 | 
						|
    if development_only and PRODUCTION:
 | 
						|
        return default_value
 | 
						|
    return secrets_file.get("secrets", key, fallback=default_value)
 | 
						|
 | 
						|
 | 
						|
@overload
 | 
						|
def get_config(section: str, key: str, default_value: str) -> str:
 | 
						|
    ...
 | 
						|
 | 
						|
 | 
						|
@overload
 | 
						|
def get_config(section: str, key: str, default_value: Optional[str] = None) -> Optional[str]:
 | 
						|
    ...
 | 
						|
 | 
						|
 | 
						|
def get_config(section: str, key: str, default_value: Optional[str] = None) -> Optional[str]:
 | 
						|
    return config_file.get(section, key, fallback=default_value)
 | 
						|
 | 
						|
 | 
						|
def get_from_file_if_exists(path: str) -> str:
 | 
						|
    if os.path.exists(path):
 | 
						|
        with open(path) as f:
 | 
						|
            return f.read()
 | 
						|
    else:
 | 
						|
        return ""
 |