61 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			61 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
from CTFd.utils import set_config
 | 
						|
 | 
						|
from ..models import WhaleRedirectTemplate, db
 | 
						|
 | 
						|
 | 
						|
def setup_default_configs():
 | 
						|
    for key, val in {
 | 
						|
        'setup': 'true',
 | 
						|
        'docker_api_url': 'unix:///var/run/docker.sock',
 | 
						|
        'docker_credentials': '',
 | 
						|
        'docker_dns': '127.0.0.1',
 | 
						|
        'docker_max_container_count': '100',
 | 
						|
        'docker_max_renew_count': '5',
 | 
						|
        'docker_subnet': '174.1.0.0/16',
 | 
						|
        'docker_subnet_new_prefix': '24',
 | 
						|
        'docker_swarm_nodes': 'linux-1',
 | 
						|
        'docker_timeout': '3600',
 | 
						|
        'frp_api_url': 'http://frpc:7400',
 | 
						|
        'frp_http_port': '8080',
 | 
						|
        'frp_http_domain_suffix': '127.0.0.1.nip.io',
 | 
						|
        'frp_direct_port_maximum': '10100',
 | 
						|
        'frp_direct_port_minimum': '10000',
 | 
						|
        'template_http_subdomain': '{{ container.uuid }}',
 | 
						|
        'template_chall_flag': '{{ "flag{"+uuid.uuid4()|string+"}" }}',
 | 
						|
    }.items():
 | 
						|
        set_config('whale:' + key, val)
 | 
						|
    db.session.add(WhaleRedirectTemplate(
 | 
						|
        'http',
 | 
						|
        'http://{{ container.http_subdomain }}.'
 | 
						|
        '{{ get_config("whale:frp_http_domain_suffix", "") }}'
 | 
						|
        '{% if get_config("whale:frp_http_port", "80") != 80 %}:{{ get_config("whale:frp_http_port") }}{% endif %}/',
 | 
						|
        '''
 | 
						|
[http_{{ container.user_id|string }}-{{ container.uuid }}]
 | 
						|
type = http
 | 
						|
local_ip = {{ container.user_id|string }}-{{ container.uuid }}
 | 
						|
local_port = {{ container.challenge.redirect_port }}
 | 
						|
subdomain = {{ container.http_subdomain }}
 | 
						|
use_compression = true
 | 
						|
'''
 | 
						|
    ))
 | 
						|
    db.session.add(WhaleRedirectTemplate(
 | 
						|
        'direct',
 | 
						|
        'nc {{ get_config("whale:frp_direct_ip_address", "127.0.0.1") }} {{ container.port }}',
 | 
						|
        '''
 | 
						|
[direct_{{ container.user_id|string }}-{{ container.uuid }}]
 | 
						|
type = tcp
 | 
						|
local_ip = {{ container.user_id|string }}-{{ container.uuid }}
 | 
						|
local_port = {{ container.challenge.redirect_port }}
 | 
						|
remote_port = {{ container.port }}
 | 
						|
use_compression = true
 | 
						|
 | 
						|
[direct_{{ container.user_id|string }}-{{ container.uuid }}_udp]
 | 
						|
type = udp
 | 
						|
local_ip = {{ container.user_id|string }}-{{ container.uuid }}
 | 
						|
local_port = {{ container.challenge.redirect_port }}
 | 
						|
remote_port = {{ container.port }}
 | 
						|
use_compression = true
 | 
						|
'''
 | 
						|
    ))
 | 
						|
    db.session.commit()
 |