mirror of
				https://github.com/zulip/zulip.git
				synced 2025-11-03 21:43:21 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			64 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			64 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
#!/usr/bin/env python
 | 
						|
# This tools generates local_settings_generated.py using the template
 | 
						|
 | 
						|
import sys, os, os.path
 | 
						|
 | 
						|
sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..', '..'))
 | 
						|
os.environ['DJANGO_SETTINGS_MODULE'] = 'zproject.settings'
 | 
						|
 | 
						|
from django.utils.crypto import get_random_string
 | 
						|
from zerver.lib.utils import generate_random_token
 | 
						|
 | 
						|
os.chdir(os.path.join(os.path.dirname(__file__), '..', '..'))
 | 
						|
 | 
						|
SETTINGS_FILENAME = "zproject/local_settings_template.py"
 | 
						|
OUTPUT_SETTINGS_FILENAME = "zproject/local_settings_generated.py"
 | 
						|
CAMO_CONFIG_FILENAME = '/etc/default/camo'
 | 
						|
 | 
						|
if not os.path.exists(SETTINGS_FILENAME):
 | 
						|
    print "Unable to find settings file at %s" % (SETTINGS_FILENAME,)
 | 
						|
 | 
						|
AUTOGENERATED_SETTINGS = ['SHARED_SECRET', 'HASH_SALT', 'AVATAR_SALT', 'RABBITMQ_PASSWORD']
 | 
						|
 | 
						|
def generate_camo_config_file(camo_key):
 | 
						|
    camo_config = """ENABLED=yes
 | 
						|
PORT=9292
 | 
						|
CAMO_KEY=%s
 | 
						|
""" % (camo_key,)
 | 
						|
    with open(CAMO_CONFIG_FILENAME, 'w') as camo_file:
 | 
						|
        camo_file.write(camo_config)
 | 
						|
    print "Generated Camo config file %s" % (CAMO_CONFIG_FILENAME,)
 | 
						|
 | 
						|
def generate_django_secretkey():
 | 
						|
    # Secret key generation taken from Django's startproject.py
 | 
						|
    chars = 'abcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*(-_=+)'
 | 
						|
    return get_random_string(50, chars)
 | 
						|
 | 
						|
if __name__ == '__main__':
 | 
						|
    f = open(SETTINGS_FILENAME, 'r')
 | 
						|
    lines = f.readlines()
 | 
						|
 | 
						|
    for idx, line in enumerate(lines):
 | 
						|
        parts = [part.strip() for part in line.split('=')]
 | 
						|
        if len(parts) != 2:
 | 
						|
            continue
 | 
						|
 | 
						|
        def config_line(var, value):
 | 
						|
            return "%s = '%s'\n" % (var, value)
 | 
						|
 | 
						|
        if parts[0] in AUTOGENERATED_SETTINGS:
 | 
						|
            lines[idx] = config_line(parts[0], generate_random_token(64))
 | 
						|
        elif parts[0] == 'SECRET_KEY':
 | 
						|
            lines[idx] = config_line("SECRET_KEY", generate_django_secretkey())
 | 
						|
        elif parts[0] == 'CAMO_KEY':
 | 
						|
            camo_key = get_random_string(64)
 | 
						|
            lines[idx] = config_line(parts[0], camo_key)
 | 
						|
            # Write the Camo config file directly
 | 
						|
            generate_camo_config_file(camo_key)
 | 
						|
 | 
						|
    out = open(OUTPUT_SETTINGS_FILENAME, 'w')
 | 
						|
    out.write("".join(lines))
 | 
						|
    out.close()
 | 
						|
 | 
						|
    print "Generated %s with auto-generated secrets!" % (OUTPUT_SETTINGS_FILENAME,)
 |