def main(): is_installed = util.check_if_installed() is_running = docker.check_exists(config.DOCKER_CONTAINER_NAME) needs_tunnel = util.is_tunnel_needed() is_tunnel_up = tunnel.check_if_running() is_working = network.is_resolving_tld(config.TOP_LEVEL_DOMAIN) NO = "\033[1;31mNo\033[0m" YES = "\033[1;32mYes\033[0m" print(f"""{config.APP} status: - Is installed: {YES if is_installed else NO} - Container "{config.DOCKER_CONTAINER_NAME}" is running: {YES if is_running else NO} - Your OS needs tunnel: {YES if needs_tunnel else NO} - Is tunnel running: {YES if is_tunnel_up else NO} - Domain "{config.TOP_LEVEL_DOMAIN}" is working: {YES if is_working else NO} """) return 0
def main(name=config.DOCKER_CONTAINER_NAME, tag=config.DOCKER_CONTAINER_TAG, tld=config.TOP_LEVEL_DOMAIN): if not util.check_if_installed(): print('No installation found') return 1 print('Uninstalling docker dns exposure') if docker.check_exists(name): print("Removing existing container...") docker.purge(name) DOCKER_CONF_FILE = f"{install.OS.DOCKER_CONF_FOLDER}/daemon.json" if os.path.exists(DOCKER_CONF_FILE): shutil.copy2('src/templates/daemon.json', DOCKER_CONF_FILE) docker_json = json.loads(open(DOCKER_CONF_FILE, 'r').read()) docker_json['bip'] = '' docker_json['dns'] = [] json.dump(docker_json, open(DOCKER_CONF_FILE, 'w')) OS.uninstall(tld) return 0
def main(name=config.DOCKER_CONTAINER_NAME, tag=config.DOCKER_CONTAINER_TAG, tld=config.TOP_LEVEL_DOMAIN): if not util.is_os_supported(OS.FLAVOR): return 1 if os.path.exists('.cache/INSTALLED'): os.unlink('.cache/INSTALLED') # update resolv.conf if not hasattr(OS, 'DISABLE_MAIN_RESOLVCONF_ROUTINE'): if not os.path.exists(RESOLVCONF): open(RESOLVCONF, 'w').write('nameserver 1.1.1.1') dns = docker.NETWORK_GATEWAY try: dns = OS.DNS except: # no DNS pass RESOLVCONF_DATA = open(RESOLVCONF, 'r').read() if '#@docker-dns' not in RESOLVCONF_DATA: RESOLVCONF_DATA = f"options timeout:1 #@docker-dns\nnameserver {dns} #@docker-dns\n{RESOLVCONF_DATA}" open(RESOLVCONF, 'w').write(RESOLVCONF_DATA) os_config = OS.setup(tld) # docker DOCKER_CONF_FILE = f"{OS.DOCKER_CONF_FOLDER}/daemon.json" if not os.path.exists(DOCKER_CONF_FILE) or os.stat( DOCKER_CONF_FILE).st_size == 0: if not os.path.isdir(OS.DOCKER_CONF_FOLDER): os.mkdir(OS.DOCKER_CONF_FOLDER) shutil.copy2('src/templates/daemon.json', DOCKER_CONF_FILE) docker_json = json.loads(open(DOCKER_CONF_FILE, 'r').read()) docker_json['bip'] = docker.NETWORK_SUBNET docker_json['dns'] = list( set([docker.NETWORK_GATEWAY] + network.get_dns_servers())) json.dump(docker_json, open(DOCKER_CONF_FILE, 'w')) if docker.check_exists(name): print("Stopping existing container...") docker.purge(name) time.sleep(2) print(f'Building and running container "{tag}:latest"... Please wait') docker.build_container(name, tag, tld, bind_port_ip=util.on_linux and not util.on_wsl, target=OS.DOCKER_BUILD_TARGET) update_cache() # dnsmasq # if not util.on_macos: # print("Setting up dnsmasq") # dnsmasq_local = open(OS.DNSMASQ_LOCAL_CONF, 'r').read() # dnsmasq_local = dnsmasq_local.replace('${IP}', docker.NETWORK_GATEWAY) # dnsmasq_local = dnsmasq_local.replace('${HOSTNAME}', config.HOSTNAME) # dnsmasq_local = dnsmasq_local.replace( # '${LOOPBACK}', network.LOOPBACK_NETWORK_NAME) # json.dump(dnsmasq_local, open(OS.DNSMASQ_LOCAL_CONF, 'w')) # TLD domain ceriticate cert_file = f'certs.d/tld/{tld}.cert' key_file = f'certs.d/tld/{tld}.key' util.generate_certificate(tld, cert_file=cert_file, key_file=key_file) shutil.copy2(cert_file, OS.DOCKER_CONF_FOLDER) shutil.copy2(key_file, OS.DOCKER_CONF_FOLDER) original_arg = sys.argv install_status = OS.install(tld) if install_status and util.is_tunnel_needed(): original_arg[1] = 'tunnel' original_arg.append('&') os.system(' '.join(original_arg)) open('.cache/INSTALLED', 'w').write('') return 0