mirror of
https://github.com/ehang-io/nps.git
synced 2025-07-03 04:53:50 +00:00
commit
c9b755360c
2
build.sh
2
build.sh
@ -1,5 +1,5 @@
|
|||||||
#/bash/sh
|
#/bash/sh
|
||||||
export VERSION=0.26.5
|
export VERSION=0.26.6
|
||||||
export GOPROXY=direct
|
export GOPROXY=direct
|
||||||
|
|
||||||
sudo apt-get update
|
sudo apt-get update
|
||||||
|
@ -218,7 +218,6 @@ func run() {
|
|||||||
commonConfig.Client = new(file.Client)
|
commonConfig.Client = new(file.Client)
|
||||||
commonConfig.Client.Cnf = new(file.Config)
|
commonConfig.Client.Cnf = new(file.Config)
|
||||||
go client.StartLocalServer(localServer, commonConfig)
|
go client.StartLocalServer(localServer, commonConfig)
|
||||||
return
|
|
||||||
}
|
}
|
||||||
env := common.GetEnvMap()
|
env := common.GetEnvMap()
|
||||||
if *serverAddr == "" {
|
if *serverAddr == "" {
|
||||||
|
@ -159,7 +159,7 @@ type nps struct {
|
|||||||
|
|
||||||
func (p *nps) Start(s service.Service) error {
|
func (p *nps) Start(s service.Service) error {
|
||||||
_, _ = s.Status()
|
_, _ = s.Status()
|
||||||
_ = p.run()
|
go p.run()
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
func (p *nps) Stop(s service.Service) error {
|
func (p *nps) Stop(s service.Service) error {
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||

|

|
||||||
|
|
||||||
# NPS <small>0.26.5</small>
|
# NPS <small>0.26.6</small>
|
||||||
|
|
||||||
> 一款轻量级、高性能、功能强大的内网穿透代理服务器
|
> 一款轻量级、高性能、功能强大的内网穿透代理服务器
|
||||||
|
|
||||||
|
4
go.mod
4
go.mod
@ -3,7 +3,7 @@ module ehang.io/nps
|
|||||||
go 1.13
|
go 1.13
|
||||||
|
|
||||||
require (
|
require (
|
||||||
ehang.io/nps-mux v0.0.0-20200310052025-e00374a8cdb6
|
ehang.io/nps-mux v0.0.0-20200319121657-f4af26331c9f
|
||||||
fyne.io/fyne v1.2.3
|
fyne.io/fyne v1.2.3
|
||||||
github.com/StackExchange/wmi v0.0.0-20190523213315-cbe66965904d // indirect
|
github.com/StackExchange/wmi v0.0.0-20190523213315-cbe66965904d // indirect
|
||||||
github.com/astaxie/beego v1.12.0
|
github.com/astaxie/beego v1.12.0
|
||||||
@ -21,7 +21,9 @@ require (
|
|||||||
github.com/shiena/ansicolor v0.0.0-20151119151921-a422bbe96644 // indirect
|
github.com/shiena/ansicolor v0.0.0-20151119151921-a422bbe96644 // indirect
|
||||||
github.com/shirou/gopsutil v2.19.11+incompatible
|
github.com/shirou/gopsutil v2.19.11+incompatible
|
||||||
github.com/xtaci/kcp-go v5.4.20+incompatible
|
github.com/xtaci/kcp-go v5.4.20+incompatible
|
||||||
|
golang.org/x/crypto v0.0.0-20200317142112-1b76d66859c6 // indirect
|
||||||
golang.org/x/net v0.0.0-20200301022130-244492dfa37a
|
golang.org/x/net v0.0.0-20200301022130-244492dfa37a
|
||||||
|
golang.org/x/sys v0.0.0-20200317113312-5766fd39f98d // indirect
|
||||||
)
|
)
|
||||||
|
|
||||||
replace github.com/astaxie/beego => github.com/exfly/beego v1.12.0-export-init
|
replace github.com/astaxie/beego => github.com/exfly/beego v1.12.0-export-init
|
||||||
|
8
go.sum
8
go.sum
@ -1,5 +1,5 @@
|
|||||||
ehang.io/nps-mux v0.0.0-20200310052025-e00374a8cdb6 h1:kba4642Cj4R9wXrRfxjhP1nSHaA8FwfFQfhA1jX5Spw=
|
ehang.io/nps-mux v0.0.0-20200319121657-f4af26331c9f h1:uAc/HZ939kibvYzVCPc1kp24PEjxxJy/N4Gs3Ybpm1Q=
|
||||||
ehang.io/nps-mux v0.0.0-20200310052025-e00374a8cdb6/go.mod h1:hTpHjFEac582vs7OjOaN8R2o3EOPOs2qeBeqTvIQAgs=
|
ehang.io/nps-mux v0.0.0-20200319121657-f4af26331c9f/go.mod h1:hTpHjFEac582vs7OjOaN8R2o3EOPOs2qeBeqTvIQAgs=
|
||||||
fyne.io/fyne v1.2.3 h1:5xwtSBNjxxmg+GF/lYvvf4xPzyjgWQoJVrzb+bt5gaA=
|
fyne.io/fyne v1.2.3 h1:5xwtSBNjxxmg+GF/lYvvf4xPzyjgWQoJVrzb+bt5gaA=
|
||||||
fyne.io/fyne v1.2.3/go.mod h1:JhDdBrPP/Kdr1H5ZT3HW8E/6zlz+GkOldWqSirGBDnY=
|
fyne.io/fyne v1.2.3/go.mod h1:JhDdBrPP/Kdr1H5ZT3HW8E/6zlz+GkOldWqSirGBDnY=
|
||||||
github.com/Knetic/govaluate v3.0.0+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0=
|
github.com/Knetic/govaluate v3.0.0+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0=
|
||||||
@ -120,6 +120,8 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk
|
|||||||
golang.org/x/crypto v0.0.0-20191219195013-becbf705a915/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
golang.org/x/crypto v0.0.0-20191219195013-becbf705a915/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
||||||
golang.org/x/crypto v0.0.0-20200302210943-78000ba7a073 h1:xMPOj6Pz6UipU1wXLkrtqpHbR0AVFnyPEQq/wRWz9lM=
|
golang.org/x/crypto v0.0.0-20200302210943-78000ba7a073 h1:xMPOj6Pz6UipU1wXLkrtqpHbR0AVFnyPEQq/wRWz9lM=
|
||||||
golang.org/x/crypto v0.0.0-20200302210943-78000ba7a073/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
golang.org/x/crypto v0.0.0-20200302210943-78000ba7a073/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
||||||
|
golang.org/x/crypto v0.0.0-20200317142112-1b76d66859c6 h1:TjszyFsQsyZNHwdVdZ5m7bjmreu0znc2kRYsEml9/Ww=
|
||||||
|
golang.org/x/crypto v0.0.0-20200317142112-1b76d66859c6/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
||||||
golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8 h1:idBdZTd9UioThJp8KpM/rTSinK/ChZFBE43/WtIy8zg=
|
golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8 h1:idBdZTd9UioThJp8KpM/rTSinK/ChZFBE43/WtIy8zg=
|
||||||
golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
||||||
golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js=
|
golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js=
|
||||||
@ -139,6 +141,8 @@ golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7w
|
|||||||
golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527 h1:uYVVQ9WP/Ds2ROhcaGPeIdVq0RIXVLwsHlnvJ+cT1So=
|
golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527 h1:uYVVQ9WP/Ds2ROhcaGPeIdVq0RIXVLwsHlnvJ+cT1So=
|
||||||
golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
|
golang.org/x/sys v0.0.0-20200317113312-5766fd39f98d h1:62ap6LNOjDU6uGmKXHJbSfciMoV+FeI1sRXx/pLDL44=
|
||||||
|
golang.org/x/sys v0.0.0-20200317113312-5766fd39f98d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg=
|
golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg=
|
||||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
|
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
package="org.nps.client"
|
package="org.nps.client"
|
||||||
android:versionCode="1"
|
android:versionCode="1"
|
||||||
android:versionName="0.26.5">
|
android:versionName="0.26.6">
|
||||||
|
|
||||||
<application android:label="Npc" android:debuggable="true">
|
<application android:label="Npc" android:debuggable="true">
|
||||||
<activity android:name="org.golang.app.GoNativeActivity"
|
<activity android:name="org.golang.app.GoNativeActivity"
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
package version
|
package version
|
||||||
|
|
||||||
const VERSION = "0.26.5"
|
const VERSION = "0.26.6"
|
||||||
|
|
||||||
// Compulsory minimum version, Minimum downward compatibility to this version
|
// Compulsory minimum version, Minimum downward compatibility to this version
|
||||||
func GetVersion() string {
|
func GetVersion() string {
|
||||||
|
@ -61,10 +61,6 @@ func (s *ClientController) Add() {
|
|||||||
FlowLimit: int64(s.GetIntNoErr("flow_limit")),
|
FlowLimit: int64(s.GetIntNoErr("flow_limit")),
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
if t.RateLimit > 0 {
|
|
||||||
t.Rate = rate.NewRate(int64(t.RateLimit * 1024))
|
|
||||||
t.Rate.Start()
|
|
||||||
}
|
|
||||||
if err := file.GetDb().NewClient(t); err != nil {
|
if err := file.GetDb().NewClient(t); err != nil {
|
||||||
s.AjaxErr(err.Error())
|
s.AjaxErr(err.Error())
|
||||||
}
|
}
|
||||||
|
@ -32,28 +32,32 @@
|
|||||||
<div class="form-group" id="client_id">
|
<div class="form-group" id="client_id">
|
||||||
<label class="control-label font-bold" langtag="word-clientid"></label>
|
<label class="control-label font-bold" langtag="word-clientid"></label>
|
||||||
<div class="col-sm-10">
|
<div class="col-sm-10">
|
||||||
<input value="{{.client_id}}" class="form-control" type="text" name="client_id" placeholder="" langtag="word-clientid">
|
<input value="{{.client_id}}" class="form-control" type="text" name="client_id"
|
||||||
|
placeholder="" langtag="word-clientid">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="control-label font-bold" langtag="word-remark"></label>
|
<label class="control-label font-bold" langtag="word-remark"></label>
|
||||||
<div class="col-sm-10">
|
<div class="col-sm-10">
|
||||||
<input class="form-control" type="text" name="remark" placeholder="" langtag="info-unrestricted">
|
<input class="form-control" type="text" name="remark" placeholder=""
|
||||||
|
langtag="info-unrestricted">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{{if eq true .allow_multi_ip}}
|
{{if eq true .allow_multi_ip}}
|
||||||
<div class="form-group" id="server_ip">
|
<div class="form-group" id="server_ip">
|
||||||
<label class="control-label font-bold" langtag="word-serverip"></label>
|
<label class="control-label font-bold" langtag="word-serverip"></label>
|
||||||
<div class="col-sm-10">
|
<div class="col-sm-10">
|
||||||
<input class="form-control" type="text" value="0.0.0.0" name="server_ip" placeholder="" langtag="info-suchasip">
|
<input class="form-control" type="text" value="0.0.0.0" name="server_ip" placeholder=""
|
||||||
|
langtag="info-suchasip">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{{end}}
|
{{end}}
|
||||||
<div class="form-group" id="port">
|
<div class="form-group" id="port">
|
||||||
<label class="control-label font-bold" langtag="word-serverport"></label>
|
<label class="control-label font-bold" langtag="word-serverport"></label>
|
||||||
<div class="col-sm-10">
|
<div class="col-sm-10">
|
||||||
<input class="form-control" type="text" name="port" placeholder="" langtag="info-suchasport">
|
<input class="form-control" type="text" name="port" placeholder=""
|
||||||
|
langtag="info-suchasport">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -72,7 +76,8 @@
|
|||||||
<div class="form-group" id="target">
|
<div class="form-group" id="target">
|
||||||
<label class="control-label font-bold" langtag="word-target"></label>
|
<label class="control-label font-bold" langtag="word-target"></label>
|
||||||
<div class="col-sm-10">
|
<div class="col-sm-10">
|
||||||
<textarea class="form-control" name="target" rows="4" placeholder="" langtag="info-suchasiplist"></textarea>
|
<textarea class="form-control" name="target" rows="4" placeholder=""
|
||||||
|
langtag="info-suchasiplist"></textarea>
|
||||||
<span class="help-block m-b-none" langtag="info-targettunnel"></span>
|
<span class="help-block m-b-none" langtag="info-targettunnel"></span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -80,28 +85,32 @@
|
|||||||
<div class="form-group" id="local_path">
|
<div class="form-group" id="local_path">
|
||||||
<label class="control-label font-bold" langtag="word-localpath"></label>
|
<label class="control-label font-bold" langtag="word-localpath"></label>
|
||||||
<div class="col-sm-10">
|
<div class="col-sm-10">
|
||||||
<input class="form-control" type="text" name="local_path" placeholder="" langtag="info-suchaslocalpath">
|
<input class="form-control" type="text" name="local_path" placeholder=""
|
||||||
|
langtag="info-suchaslocalpath">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="form-group" id="strip_pre">
|
<div class="form-group" id="strip_pre">
|
||||||
<label class="control-label font-bold" langtag="word-stripprefix"></label>
|
<label class="control-label font-bold" langtag="word-stripprefix"></label>
|
||||||
<div class="col-sm-10">
|
<div class="col-sm-10">
|
||||||
<input class="form-control" type="text" name="strip_pre" placeholder="" langtag="info-suchasstripprefix">
|
<input class="form-control" type="text" name="strip_pre" placeholder=""
|
||||||
|
langtag="info-suchasstripprefix">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="form-group" id="password">
|
<div class="form-group" id="password">
|
||||||
<label class="control-label font-bold" langtag="word-identificationkey"></label>
|
<label class="control-label font-bold" langtag="word-identificationkey"></label>
|
||||||
<div class="col-sm-10">
|
<div class="col-sm-10">
|
||||||
<input class="form-control" type="text" name="password" placeholder="" langtag="word-identificationkey">
|
<input class="form-control" type="text" name="password" placeholder=""
|
||||||
|
langtag="word-identificationkey">
|
||||||
<span class="help-block m-b-none" langtag="info-identificationkey"></span>
|
<span class="help-block m-b-none" langtag="info-identificationkey"></span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="hr-line-dashed"></div>
|
<div class="hr-line-dashed"></div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<div class="col-sm-4 col-sm-offset-2">
|
<div class="col-sm-4 col-sm-offset-2">
|
||||||
<button class="btn btn-success" type="button" onclick="submitform('add', '{{.web_base_url}}/index/add', $('form').serializeArray())">
|
<button class="btn btn-success" type="button"
|
||||||
|
onclick="submitform('add', '{{.web_base_url}}/index/add', $('form').serializeArray())">
|
||||||
<i class="fa fa-fw fa-lg fa-check-circle"></i> <span langtag="word-add"></span>
|
<i class="fa fa-fw fa-lg fa-check-circle"></i> <span langtag="word-add"></span>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
@ -114,14 +123,14 @@
|
|||||||
</div>
|
</div>
|
||||||
<script>
|
<script>
|
||||||
var arr = []
|
var arr = []
|
||||||
arr["all"] = ["port", "target", "password", "local_path", "strip_pre", "local_proxy"]
|
arr["all"] = ["port", "target", "password", "local_path", "strip_pre", "local_proxy", "client_id", "server_ip"]
|
||||||
arr["tcp"] = ["port", "target", "local_proxy"]
|
arr["tcp"] = ["port", "target", "local_proxy", "client_id", "server_ip"]
|
||||||
arr["udp"] = ["port", "target", "local_proxy"]
|
arr["udp"] = ["port", "target", "local_proxy", "client_id", "server_ip"]
|
||||||
arr["socks5"] = ["port"]
|
arr["socks5"] = ["port", "client_id", "server_ip"]
|
||||||
arr["httpProxy"] = ["port"]
|
arr["httpProxy"] = ["port", "client_id", "server_ip"]
|
||||||
arr["secret"] = ["target", "password"]
|
arr["secret"] = ["target", "password", "client_id", "server_ip"]
|
||||||
arr["p2p"] = ["target", "password"]
|
arr["p2p"] = ["target", "password", "client_id", "server_ip"]
|
||||||
arr["file"] = ["port", "local_path", "strip_pre"]
|
arr["file"] = ["port", "local_path", "strip_pre", "client_id", "server_ip"]
|
||||||
|
|
||||||
function resetForm() {
|
function resetForm() {
|
||||||
$(".form-group[id]").css("display", "none");
|
$(".form-group[id]").css("display", "none");
|
||||||
|
Loading…
x
Reference in New Issue
Block a user