File size: 4,004 Bytes
ceeafb1
 
 
 
 
 
 
12ae06e
ceeafb1
12ae06e
ceeafb1
f9b46d8
 
c1d0017
 
 
 
f9b46d8
ceeafb1
 
 
 
 
5642a74
 
ceeafb1
 
5642a74
 
 
 
ceeafb1
f9b46d8
0540f3c
12ae06e
4424587
 
 
 
 
5642a74
4424587
 
 
0540f3c
5642a74
 
 
0540f3c
5642a74
0540f3c
5642a74
0540f3c
4424587
 
5642a74
4424587
 
 
 
 
 
 
12ae06e
 
ceeafb1
f9b46d8
0540f3c
5642a74
 
 
 
 
 
 
 
0540f3c
a3f8f07
0540f3c
5642a74
 
 
0540f3c
5642a74
 
 
 
ceeafb1
5642a74
7cfb0ea
ceeafb1
4424587
 
ceeafb1
12ae06e
ceeafb1
12ae06e
4424587
12ae06e
ceeafb1
0540f3c
 
 
4424587
ceeafb1
12ae06e
 
 
 
 
 
ceeafb1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
##~   LAUNCH CODE | BY: ANXETY   ~##

import os
import re
import time
import json
import requests
import cloudpickle as pickle
from datetime import timedelta
from IPython.display import clear_output


# Setup Env
env = os.getenv('ENV_NAME')
root_path = os.getenv('ROOT_PATH')
webui_path = os.getenv('WEBUI_PATH')
free_plan = os.getenv('FREE_PLAN')


def load_settings():
    SETTINGS_FILE = f'{root_path}/settings.json'
    if os.path.exists(SETTINGS_FILE):
        with open(SETTINGS_FILE, 'r') as f:
            return json.load(f)
    return {}

settings = load_settings()
ngrok_token = settings.get('ngrok_token', "")
zrok_token = settings.get('zrok_token', "")
commandline_arguments = settings.get('commandline_arguments', "")
change_webui = settings.get('change_webui', "")


# ======================== TUNNEL V2 ========================
print('Please Wait...')

def get_public_ip(version='ipv4'):
    try:
        url = f'https://api64.ipify.org?format=json&{version}=true'
        response = requests.get(url)
        return response.json().get('ip', 'N/A')
    except Exception as e:
        print(f"Error getting public {version} address:", e)

# Check if public IP is already saved, if not then get it
public_ip_file = f"{root_path}/public_ip.txt"
if os.path.exists(public_ip_file):
    with open(public_ip_file, 'r') as file:
        public_ipv4 = file.read().strip()
else:
    public_ipv4 = get_public_ip(version='ipv4')
    with open(public_ip_file, 'w') as file:
        file.write(public_ipv4)

tunnel_class = pickle.load(open(f"{root_path}/new_tunnel", "rb"), encoding="utf-8")
tunnel_port = 1834
tunnel = tunnel_class(tunnel_port)
tunnel.add_tunnel(command="cl tunnel --url localhost:{port}", name="cl", pattern=re.compile(r"[\w-]+\.trycloudflare\.com"))
tunnel.add_tunnel(command="lt --port {port}", name="lt", pattern=re.compile(r"[\w-]+\.loca\.lt"), note="Password : " + "\033[32m" + public_ipv4 + "\033[0m" + " rerun cell if 404 error.")

if zrok_token:
    get_ipython().system('zrok enable {zrok_token} &> /dev/null')
    tunnel.add_tunnel(command="zrok share public http://localhost:{port}/ --headless", name="zrok", pattern=re.compile(r"[\w-]+\.share\.zrok\.io"))

clear_output()


# =============== Automatic Fixing Path V3 ===============
paths_to_check = {
    "tagger_hf_cache_dir": f"{webui_path}/models/interrogators/",
    "additional_networks_extra_lora_path": f"{webui_path}/models/Lora/",
    "ad_extra_models_dir": f"{webui_path}/models/adetailer/",
    "sd_checkpoint_hash": "",
    "sd_model_checkpoint": "",
    "sd_vae": "None"
}

config_path = f'{webui_path}/config.json'

if os.path.exists(config_path):
    with open(config_path, 'r') as file:
        config_data = json.load(file)

    for key, value in paths_to_check.items():
        if key in config_data and config_data[key] != value:
            sed_command = f"sed -i 's|\"{key}\": \".*\"|\"{key}\": \"{value}\"|' {config_path}"
            os.system(sed_command)

    if env == 'Kaggle':
        get_ipython().system('sed -i \'s/"civitai_interface\\/NSFW content\\/visible": true,/"civitai_interface\\/NSFW content\\/visible": false,/\' {webui_path}/ui-config.json')

with tunnel:
    get_ipython().run_line_magic('cd', '{webui_path}')

    commandline_arguments += f' --port={tunnel_port}'
    if ngrok_token:
        commandline_arguments += f' --ngrok {ngrok_token}'
    if env != "Google Colab":
        commandline_arguments += f' --encrypt-pass={tunnel_port} --api'

    if change_webui == 'Forge':
        commandline_arguments += ' --cuda-stream --pin-shared-memory'

    get_ipython().system('COMMANDLINE_ARGS="{commandline_arguments}" python launch.py')

start_colab = float(open(f'{webui_path}/static/colabTimer.txt', 'r').read())
time_since_start = str(timedelta(seconds=time.time()-start_colab)).split('.')[0]
print(f"\n⌚️ \033[0mYou have been conducting this session for - \033[33m{time_since_start}\033[0m\n\n")

if zrok_token:
    get_ipython().system('zrok disable &> /dev/null')