Fork project

This commit is contained in:
2025-09-19 15:59:08 +08:00
commit 2f921b6209
52 changed files with 4012 additions and 0 deletions

60
utils/setup.py Normal file
View File

@ -0,0 +1,60 @@
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()