copied from internal repo

This commit is contained in:
Dragroth
2026-01-22 12:37:26 +01:00
parent a475364582
commit 7451b63f62
118 changed files with 17182 additions and 0 deletions

View File

@@ -0,0 +1,83 @@
import os
import shutil
from conpeek_setup import util
def subnet_mask_to_cidr(mask):
# Split the subnet mask into its octets
octets = mask.split('.')
# Convert each octet from string to integer, then to binary, count the '1' bits
try:
cidr = str(sum(bin(int(octet)).count('1') for octet in octets))
except Exception:
util.print_red(f"Mask {mask} is invalid")
raise Exception("Mask {mask} is invalid")
return cidr
def run(config):
util.print_black_light("Preparing freeswitch file")
output_directory = os.path.join(util.get_output_path(), "freeswitch")
template_freeswitch_directory = os.path.join(util.get_templates_path(), "freeswitch/conf")
shutil.rmtree(output_directory, ignore_errors=True)
os.makedirs(output_directory, exist_ok=True)
util.copy_directory(template_freeswitch_directory, os.path.join(output_directory, "conf"))
mod_verto_replacements = {
'VERTO_IP': config["new_machine_network"]["internal_ip"],
'EXTERNAL_IP': config["new_machine_network"]["external_ip"],
'EXTERNAL_NET_ADDRESS': config["new_machine_network"]["external_net_address"],
'EXTERNAL_NET_MASK': subnet_mask_to_cidr(config["new_machine_network"]['external_mask']),
'INTERNAL_IP': config["new_machine_network"]["internal_ip"],
'INTERNAL_NET_ADDRESS': config["new_machine_network"]["internal_net_address"],
'INTERNAL_NET_MASK': subnet_mask_to_cidr(config["new_machine_network"]['internal_mask']),
}
for name in mod_verto_replacements.keys():
util.basic_on_location_sed(os.path.join(output_directory, "conf/autoload_configs/verto.conf.xml"), name, mod_verto_replacements[name])
tenant_data = util.get_minimal_configuration()
# mod_event_socket
util.basic_on_location_sed(os.path.join(output_directory, "conf/autoload_configs/event_socket.conf.xml"), "ES_PORT", "9900")
util.basic_on_location_sed(os.path.join(output_directory, "conf/autoload_configs/event_socket.conf.xml"), "ES_IP", config["new_machine_network"]["internal_ip"])
# switch
util.basic_on_location_sed(os.path.join(output_directory, "conf/autoload_configs/switch.conf.xml"), "FS_DOMAIN", f"{tenant_data['freeswitch_name']}.{config['new_machine_network']['system_app_installation_domain']}")
if config.has_option("freeswitch", "rtp_start_port") and config.has_option("freeswitch", "rtp_end_port"):
util.basic_on_location_sed(os.path.join(output_directory, "conf/autoload_configs/switch.conf.xml"), "RTP_START_PORT", config["freeswitch"]["rtp_start_port"])
util.basic_on_location_sed(os.path.join(output_directory, "conf/autoload_configs/switch.conf.xml"), "RTP_END_PORT", config["freeswitch"]["rtp_end_port"])
else:
util.basic_on_location_sed(os.path.join(output_directory, "conf/autoload_configs/switch.conf.xml"), "RTP_START_PORT", "16384")
util.basic_on_location_sed(os.path.join(output_directory, "conf/autoload_configs/switch.conf.xml"), "RTP_END_PORT", "32767")
# vars.xml
util.basic_on_location_sed(os.path.join(output_directory, "conf/vars.xml"), "XML_RPC_PASSWORD", "works")
util.basic_on_location_sed(os.path.join(output_directory, "conf/vars.xml"), "DEFAULT_PASSWORD", "Q3G2omiUNgD67fgwP6Xa")
# dialplan
util.basic_on_location_sed(os.path.join(output_directory, "conf/dialplan/virtual_contact.xml"), "GATEWAY_NAME", tenant_data["gateway_server_name"])
util.basic_on_location_sed(os.path.join(output_directory, "conf/dialplan/virtual_contact.xml"), "INTERNAL_IP", config["new_machine_network"]['internal_ip'])
# sip profiles
util.basic_on_location_sed(os.path.join(output_directory, "conf/sip_profiles/gateway0.xml"), "INTERNAL_IP", config["new_machine_network"]['internal_ip'])
util.basic_on_location_sed(os.path.join(output_directory, "conf/sip_profiles/line0_an1.xml"), "INTERNAL_IP", config["new_machine_network"]['internal_ip'])
is_nat = True
if config.has_option('kamailio', 'nat'):
is_nat = config["kamailio"]['nat'] == '1'
if is_nat == '1':
util.basic_on_location_sed(os.path.join(output_directory, "conf/sip_profiles/line0_an1.xml"), "LOCAL_NETWORK_ACL", 'nat.auto')
util.basic_on_location_sed(os.path.join(output_directory, "conf/sip_profiles/line0_an1.xml"), "EXT_RTP_IP", config["new_machine_network"]['external_ip'])
else:
util.basic_on_location_sed(os.path.join(output_directory, "conf/sip_profiles/line0_an1.xml"), "LOCAL_NETWORK_ACL", 'localnet.auto')
util.basic_on_location_sed(os.path.join(output_directory, "conf/sip_profiles/line0_an1.xml"), "EXT_RTP_IP", config["new_machine_network"]['internal_ip'])
util.basic_on_location_sed(os.path.join(output_directory, "conf/sip_profiles/gw1_internal0.xml"), "INTERNAL_IP", config["new_machine_network"]['internal_ip'])