mirror of
				https://github.com/taixingyiji/openit.git
				synced 2025-11-03 01:32:22 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			49 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			49 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
import os
 | 
						|
import yaml
 | 
						|
import requests
 | 
						|
import shutil
 | 
						|
from clash import filter
 | 
						|
 | 
						|
from yaml import SafeLoader
 | 
						|
def init():
 | 
						|
    if not os.path.exists('./temp'):
 | 
						|
        os.mkdir('temp')
 | 
						|
 | 
						|
    # read from config file
 | 
						|
    with open('config.yaml', 'r') as reader:
 | 
						|
        config = yaml.load(reader, Loader=SafeLoader)
 | 
						|
        http_port = config['http-port']
 | 
						|
        api_port = config['api-port']
 | 
						|
        threads = config['threads']
 | 
						|
        source = str(config['source'])
 | 
						|
        timeout = config['timeout']
 | 
						|
        testurl = config['test-url']
 | 
						|
        outfile = config['outfile']
 | 
						|
    # get clash config file
 | 
						|
    if source.startswith('https://'):
 | 
						|
        proxyconfig = yaml.load(requests.get(source).text, Loader=SafeLoader)
 | 
						|
    else:
 | 
						|
        with open(source, 'r') as reader:
 | 
						|
            proxyconfig = yaml.load(reader, Loader=SafeLoader)
 | 
						|
 | 
						|
    # set clash api url
 | 
						|
    baseurl = '127.0.0.1:' + str(api_port)
 | 
						|
    apiurl = 'http://'+baseurl
 | 
						|
 | 
						|
    # filter config files
 | 
						|
    proxyconfig = filter(proxyconfig)
 | 
						|
 | 
						|
    config = {'port': http_port, 'external-controller': baseurl, 'mode': 'global',
 | 
						|
              'log-level': 'silent', 'proxies': proxyconfig['proxies']}
 | 
						|
 | 
						|
    with open('./temp/working.yaml', 'w') as file:
 | 
						|
        file = yaml.dump(config, file)
 | 
						|
 | 
						|
    # return all variables
 | 
						|
    return http_port, api_port, threads, source, timeout, outfile, proxyconfig, apiurl, testurl, config
 | 
						|
 | 
						|
def cleanup(clash):
 | 
						|
    shutil.rmtree('./temp')
 | 
						|
    clash.terminate()
 | 
						|
    exit(0)
 |