mirror of https://github.com/dnomd343/XProxy.git
				
				
			
				 2 changed files with 90 additions and 6 deletions
			
			
		| @ -0,0 +1,82 @@ | |||
| package main | |||
| 
 | |||
| import ( | |||
|     log "github.com/sirupsen/logrus" | |||
|     "os" | |||
|     "strings" | |||
| ) | |||
| 
 | |||
| var logConfig = `{ | |||
|   "log": { | |||
|     "loglevel": "${LEVEL}", | |||
|     "access": "${DIR}/access.log", | |||
|     "error": "${DIR}/error.log" | |||
|   } | |||
| }` | |||
| 
 | |||
| var dnsConfig = `{ | |||
|   "dns": { | |||
|     "servers": [ | |||
|       "localhost" | |||
|     ] | |||
|   } | |||
| }` | |||
| 
 | |||
| var routeConfig = `{ | |||
|   "routing": { | |||
|     "domainStrategy": "AsIs", | |||
|     "rules": [ | |||
|       { | |||
|         "type": "field", | |||
|         "network": "tcp,udp", | |||
|         "outboundTag": "node" | |||
|       } | |||
|     ] | |||
|   } | |||
| }` | |||
| 
 | |||
| var outboundsConfig = `{ | |||
|   "outbounds": [ | |||
|     { | |||
|       "tag": "node", | |||
|       "protocol": "freedom", | |||
|       "settings": {} | |||
|     } | |||
|   ] | |||
| }` | |||
| 
 | |||
| func isFileExist(filePath string) bool { | |||
|     s, err := os.Stat(filePath) | |||
|     if err != nil { // file or folder not exist
 | |||
|         return false | |||
|     } | |||
|     return !s.IsDir() | |||
| } | |||
| 
 | |||
| func saveConfig(configDir string, caption string, content string, overwrite bool) { | |||
|     filePath := configDir + "/" + caption + ".json" | |||
|     if !overwrite && isFileExist(filePath) { // file exist and don't overwrite
 | |||
|         log.Debugf("Skip loading config -> %s", filePath) | |||
|         return | |||
|     } | |||
|     log.Debugf("Loading %s -> \n%s", filePath, content) | |||
|     err := os.WriteFile(filePath, []byte(content), 0644) | |||
|     if err != nil { | |||
|         log.Errorf("File %s -> %v", caption, err) | |||
|         panic("File save error") | |||
|     } | |||
| } | |||
| 
 | |||
| func proxyConfig(configDir string, logLevel string, logDir string) { | |||
|     // TODO: mkdir -p configDir and exposeDir
 | |||
| 
 | |||
|     logConfig = strings.ReplaceAll(logConfig, "${LEVEL}", logLevel) | |||
|     logConfig = strings.ReplaceAll(logConfig, "${DIR}", logDir) | |||
|     // TODO: load inbounds config
 | |||
| 
 | |||
|     saveConfig(configDir, "log", logConfig+"\n", true) | |||
|     saveConfig(configDir, "dns", dnsConfig+"\n", false) | |||
|     saveConfig(configDir, "route", routeConfig+"\n", false) | |||
|     saveConfig(configDir, "outbounds", outboundsConfig+"\n", false) | |||
| 
 | |||
| } | |||
					Loading…
					
					
				
		Reference in new issue