mirror of https://github.com/dnomd343/XProxy.git
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
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()
|
|
}
|
|
|