You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

66 lines
1.5 KiB

package main
import (
"github.com/robfig/cron"
log "github.com/sirupsen/logrus"
"os"
"os/signal"
"syscall"
)
var logLevel = "warning"
var v4RouteTable = 100
var v6RouteTable = 106
var v4TProxyPort = 7288
var v6TProxyPort = 7289
var preScript []string
var updateCron string
var updateUrls map[string]string
var enableSniff bool
var enableRedirect bool
var httpInbounds map[string]int
var socksInbounds map[string]int
var addOnInbounds []interface{}
var assetFile = "/etc/xproxy/assets.tar.xz"
func main() {
defer func() {
if err := recover(); err != nil {
log.Errorf("Unknown error -> %v", err)
}
}()
log.SetLevel(log.DebugLevel)
log.Warning("XProxy start")
loadConfig("/xproxy/config.yml")
loadProxy("/etc/xproxy/config", "/xproxy")
loadGeoSite("/xproxy/assets")
loadGeoIp("/xproxy/assets")
autoUpdate := cron.New()
_ = autoUpdate.AddFunc(updateCron, func() {
updateAssets("/xproxy/assets")
})
autoUpdate.Start()
loadDns()
loadNetwork()
loadTProxy()
for _, script := range preScript {
log.Infof("Run script command -> %s", script)
runCommand("sh", "-c", script)
}
xray := newProcess("xray", "-confdir", "/etc/xproxy/config")
xray.startProcess(true, true)
subProcess = append(subProcess, xray)
daemon()
sigExit := make(chan os.Signal, 1)
signal.Notify(sigExit, syscall.SIGINT, syscall.SIGTERM)
<-sigExit
exit()
}