好好爱自己!

afdaf

/** * 2020 5 21 - sha zhen yu */ package main import( "log" "strings" "net/http" "io/ioutil" "encoding/json" "github.com/vulcand/oxy/forward" "github.com/vulcand/oxy/testutils" ) type Rule struct{ Domain string `json:Domain` Address string `json:Address` } type Setting struct{ MainPort string `json:MainPort` Rules []Rule `json:Rules` } var setting Setting var fwd *forward.Forwarder func redirectHandle(w http.ResponseWriter, r *http.Request){ address := getAddress(r.Host) if address != "" { r.URL = testutils.ParseURI("http://"+address) log.Println("Info: "+r.Host+" => "+address) fwd.ServeHTTP(w, r) } else { w.WriteHeader(500) } } func getAddress(host string) string { for _,v := range setting.Rules { if strings.Compare(host,v.Domain) == 0 { return v.Address } } return "" } func Init(){ log.Println("Init: start") var Data,err = ioutil.ReadFile("setting.json") if err != nil{ log.Fatal("Read Config File Error!") return } err = json.Unmarshal(Data,&setting) if err != nil{ log.Fatal("Read Config JSON Error!Please Check!") return } log.Println("Main Port: "+setting.MainPort) for i:=0;i<len(setting.Rules);i++{ log.Println("Import Rule: "+setting.Rules[i].Domain+" <----> "+setting.Rules[i].Address) } log.Println("Init: end") } func main(){ Init() fwd, _ = forward.New() redirect := http.HandlerFunc(redirectHandle) s := &http.Server{ Addr: ":"+setting.MainPort, Handler: redirect, } log.Println("Info: Listening port "+s.Addr) s.ListenAndServe() }
posted @   立志做一个好的程序员  阅读(185)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
历史上的今天:
2019-05-05 Beego框架POST请求接收JSON数据
2017-05-05 html实现类似excel的复杂表格,及导出到excel
2016-05-05 javascript的 replace() 方法的使用讲解

不断学习创作,与自己快乐相处

点击右上角即可分享
微信分享提示