mirror of
https://github.com/tavenli/port-forward.git
synced 2024-04-21 12:42:13 +00:00
129 lines
2.4 KiB
Go
129 lines
2.4 KiB
Go
package NetUtils
|
|
|
|
import (
|
|
"errors"
|
|
"forward-core/Utils"
|
|
"io/ioutil"
|
|
"net/http"
|
|
"net/url"
|
|
"strings"
|
|
|
|
"bytes"
|
|
|
|
"github.com/astaxie/beego"
|
|
"github.com/astaxie/beego/logs"
|
|
)
|
|
|
|
func GetIP(c *beego.Controller) string {
|
|
//utils.GetIP(&c.Controller)
|
|
//也可以直接用 c.Ctx.Input.IP() 取真实IP
|
|
ip := c.Ctx.Request.Header.Get("X-Real-IP")
|
|
if ip != "" {
|
|
return ip
|
|
}
|
|
|
|
ip = c.Ctx.Request.Header.Get("Remote_addr")
|
|
if ip == "" {
|
|
ip = c.Ctx.Request.RemoteAddr
|
|
}
|
|
return ip
|
|
}
|
|
|
|
func HttpGet(url string) (string, error) {
|
|
resp, err := http.Get(url)
|
|
if err != nil {
|
|
logs.Error("HttpGet error: ", err)
|
|
return "", err
|
|
}
|
|
|
|
if resp == nil {
|
|
return "", errors.New("返回对象为空")
|
|
}
|
|
|
|
defer resp.Body.Close()
|
|
result := ""
|
|
body, err := ioutil.ReadAll(resp.Body)
|
|
if err == nil {
|
|
result = string(body)
|
|
//logs.Debug("HttpGet result: ", result)
|
|
} else {
|
|
logs.Error("HttpGet error: ", err)
|
|
}
|
|
|
|
return result, nil
|
|
}
|
|
|
|
func HttpPostJsonReturnByte(url string, json string) ([]byte, error) {
|
|
resp, err := http.Post(url, "application/json", strings.NewReader(json))
|
|
if err != nil {
|
|
logs.Error("HttpPostJson error: ", err)
|
|
return nil, err
|
|
}
|
|
|
|
if resp == nil {
|
|
return nil, errors.New("返回对象为空")
|
|
}
|
|
|
|
defer resp.Body.Close()
|
|
|
|
body, err := ioutil.ReadAll(resp.Body)
|
|
if err == nil {
|
|
return body, err
|
|
//logs.Debug("HttpPostJson result: ", result)
|
|
} else {
|
|
logs.Error("HttpPostJson error: ", err)
|
|
return nil, err
|
|
}
|
|
|
|
}
|
|
|
|
func HttpPost(url string, param map[string]string) (string, error) {
|
|
|
|
var paramBuf bytes.Buffer
|
|
paramBuf.WriteString("curTime=" + Utils.GetCurrentTime())
|
|
for k, v := range param {
|
|
paramBuf.WriteString("&" + k + "=" + v)
|
|
}
|
|
|
|
resp, err := http.Post(url, "application/x-www-form-urlencoded", strings.NewReader(paramBuf.String()))
|
|
if err != nil {
|
|
logs.Error("HttpPost error: ", err)
|
|
return "", err
|
|
}
|
|
|
|
if resp == nil {
|
|
return "", errors.New("返回对象为空")
|
|
}
|
|
|
|
defer resp.Body.Close()
|
|
result := ""
|
|
body, err := ioutil.ReadAll(resp.Body)
|
|
if err == nil {
|
|
result = string(body)
|
|
logs.Debug("HttpPost result: ", result)
|
|
} else {
|
|
logs.Error("HttpPost error: ", err)
|
|
}
|
|
|
|
return result, nil
|
|
}
|
|
|
|
func UrlEncode(input string) string {
|
|
if Utils.IsEmpty(input) {
|
|
return ""
|
|
}
|
|
return url.QueryEscape(input)
|
|
}
|
|
|
|
func UrlDecode(input string) string {
|
|
if Utils.IsEmpty(input) {
|
|
return ""
|
|
}
|
|
result, err := url.QueryUnescape(input)
|
|
if err != nil {
|
|
return input
|
|
} else {
|
|
return result
|
|
}
|
|
}
|