forked from ProxyPanel/VNet-V2ray
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
0 parents
commit 77e152b
Showing
912 changed files
with
119,863 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
*.DS_Store | ||
bazel-* | ||
.idea | ||
v2ray-*-*.zip |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
############################ | ||
# STEP 1 build executable binary | ||
############################ | ||
FROM golang:alpine AS builder | ||
RUN apk update && apk add --no-cache git bash wget | ||
WORKDIR /go/src/v2ray.com/core | ||
RUN git clone --progress https://github.com/v2fly/v2ray-core.git . && \ | ||
bash ./release/user-package.sh nosource noconf codename=$(git describe --tags) buildname=docker-fly abpathtgz=/tmp/v2ray.tgz | ||
############################ | ||
# STEP 2 build a small image | ||
############################ | ||
FROM alpine | ||
|
||
LABEL maintainer "V2Fly Community <[email protected]>" | ||
COPY --from=builder /tmp/v2ray.tgz /tmp | ||
RUN apk update && apk add ca-certificates && \ | ||
mkdir -p /usr/bin/v2ray && \ | ||
tar xvfz /tmp/v2ray.tgz -C /usr/bin/v2ray | ||
|
||
#ENTRYPOINT ["/usr/bin/v2ray/v2ray"] | ||
ENV PATH /usr/bin/v2ray:$PATH | ||
CMD ["v2ray", "-config=/etc/v2ray/config.json"] | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
The MIT License (MIT) | ||
|
||
Copyright (c) 2015-2019 V2Ray | ||
|
||
Permission is hereby granted, free of charge, to any person obtaining a copy | ||
of this software and associated documentation files (the "Software"), to deal | ||
in the Software without restriction, including without limitation the rights | ||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||
copies of the Software, and to permit persons to whom the Software is | ||
furnished to do so, subject to the following conditions: | ||
|
||
The above copyright notice and this permission notice shall be included in all | ||
copies or substantial portions of the Software. | ||
|
||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | ||
SOFTWARE. | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
WORKSPACE: /mnt/c/Users/rc452/go/src/v2ray.com/core | ||
|
||
The first line of this file is intentionally easy to parse for various | ||
interactive scripting and debugging purposes. But please DO NOT write programs | ||
that exploit it, as they will be broken by design: it is not possible to | ||
reverse engineer the set of source trees or the --package_path from the output | ||
tree, and if you attempt it, you will fail, creating subtle and | ||
hard-to-diagnose bugs, that will no doubt get blamed on changes made by the | ||
Bazel team. | ||
|
||
This directory was generated by Bazel. | ||
Do not attempt to modify or delete any files in this directory. | ||
Among other issues, Bazel's file system caching assumes that | ||
only Bazel will modify this directory and the files in it, | ||
so if you change anything here you may mess up Bazel's cache. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,31 @@ | ||
# VNet-V2ray | ||
|
||
[![Build Status][1]][2] [![codecov.io][3]][4] [![GoDoc][5]][6] [![codebeat][7]][8] [![Downloads][9]][10] | ||
|
||
[1]: https://dev.azure.com/v2ray/core/_apis/build/status/v2ray.core "Build Status badge" | ||
[2]: https://dev.azure.com/v2ray/core/_build/latest?definitionId=1 "Azure Build Status" | ||
[3]: https://codecov.io/github/v2ray/v2ray-core/coverage.svg?branch=master "Coverage badge" | ||
[4]: https://codecov.io/github/v2ray/v2ray-core?branch=master "Codecov Status" | ||
[5]: https://godoc.org/v2ray.com/core?status.svg "GoDoc badge" | ||
[6]: https://godoc.org/v2ray.com/core "GoDoc" | ||
[7]: https://codebeat.co/badges/f2354ca8-3e24-463d-a2e3-159af73b2477 "Codebeat badge" | ||
[8]: https://codebeat.co/projects/github-com-v2ray-v2ray-core-master "Codebeat" | ||
[9]: https://img.shields.io/github/downloads/v2ray/v2ray-core/total.svg "All releases badge" | ||
[10]: https://github.com/v2ray/v2ray-core/releases/ "All releases number" | ||
|
||
Project V is a set of network tools that help you to build your own computer network. It secures your network connections and thus protects your privacy. See [our website](https://www.v2ray.com/) for more information. | ||
|
||
## License | ||
|
||
v2ray follow [The MIT License (MIT)](https://raw.githubusercontent.com/v2ray/v2ray-core/master/LICENSE) | ||
|
||
## Credits | ||
|
||
This repo relies on the following third-party projects: | ||
|
||
* In production: | ||
* [gorilla/websocket](https://github.com/gorilla/websocket) | ||
* [gRPC](https://google.golang.org/grpc) | ||
* For testing only: | ||
* [miekg/dns](https://github.com/miekg/dns) | ||
* [h12w/socks](https://github.com/h12w/socks) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
workspace(name = "v2ray_core") |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
package core | ||
|
||
// Annotation is a concept in V2Ray. This struct is only for documentation. It is not used anywhere. | ||
// Annotations begin with "v2ray:" in comment, as metadata of functions or types. | ||
type Annotation struct { | ||
// API is for types or functions that can be used in other libs. Possible values are: | ||
// | ||
// * v2ray:api:beta for types or functions that are ready for use, but maybe changed in the future. | ||
// * v2ray:api:stable for types or functions with guarantee of backward compatibility. | ||
// * v2ray:api:deprecated for types or functions that should not be used anymore. | ||
// | ||
// Types or functions without api annotation should not be used externally. | ||
API string | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
// Package app contains feature implementations of V2Ray. The features may be enabled during runtime. | ||
package app |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,110 @@ | ||
// +build !confonly | ||
|
||
package commander | ||
|
||
//go:generate errorgen | ||
|
||
import ( | ||
"context" | ||
"net" | ||
"sync" | ||
|
||
"google.golang.org/grpc" | ||
|
||
"v2ray.com/core" | ||
"v2ray.com/core/common" | ||
"v2ray.com/core/common/signal/done" | ||
"v2ray.com/core/features/outbound" | ||
) | ||
|
||
// Commander is a V2Ray feature that provides gRPC methods to external clients. | ||
type Commander struct { | ||
sync.Mutex | ||
server *grpc.Server | ||
services []Service | ||
ohm outbound.Manager | ||
tag string | ||
} | ||
|
||
// NewCommander creates a new Commander based on the given config. | ||
func NewCommander(ctx context.Context, config *Config) (*Commander, error) { | ||
c := &Commander{ | ||
tag: config.Tag, | ||
} | ||
|
||
common.Must(core.RequireFeatures(ctx, func(om outbound.Manager) { | ||
c.ohm = om | ||
})) | ||
|
||
for _, rawConfig := range config.Service { | ||
config, err := rawConfig.GetInstance() | ||
if err != nil { | ||
return nil, err | ||
} | ||
rawService, err := common.CreateObject(ctx, config) | ||
if err != nil { | ||
return nil, err | ||
} | ||
service, ok := rawService.(Service) | ||
if !ok { | ||
return nil, newError("not a Service.") | ||
} | ||
c.services = append(c.services, service) | ||
} | ||
|
||
return c, nil | ||
} | ||
|
||
// Type implements common.HasType. | ||
func (c *Commander) Type() interface{} { | ||
return (*Commander)(nil) | ||
} | ||
|
||
// Start implements common.Runnable. | ||
func (c *Commander) Start() error { | ||
c.Lock() | ||
c.server = grpc.NewServer() | ||
for _, service := range c.services { | ||
service.Register(c.server) | ||
} | ||
c.Unlock() | ||
|
||
listener := &OutboundListener{ | ||
buffer: make(chan net.Conn, 4), | ||
done: done.New(), | ||
} | ||
|
||
go func() { | ||
if err := c.server.Serve(listener); err != nil { | ||
newError("failed to start grpc server").Base(err).AtError().WriteToLog() | ||
} | ||
}() | ||
|
||
if err := c.ohm.RemoveHandler(context.Background(), c.tag); err != nil { | ||
newError("failed to remove existing handler").WriteToLog() | ||
} | ||
|
||
return c.ohm.AddHandler(context.Background(), &Outbound{ | ||
tag: c.tag, | ||
listener: listener, | ||
}) | ||
} | ||
|
||
// Close implements common.Closable. | ||
func (c *Commander) Close() error { | ||
c.Lock() | ||
defer c.Unlock() | ||
|
||
if c.server != nil { | ||
c.server.Stop() | ||
c.server = nil | ||
} | ||
|
||
return nil | ||
} | ||
|
||
func init() { | ||
common.Must(common.RegisterConfig((*Config)(nil), func(ctx context.Context, cfg interface{}) (interface{}, error) { | ||
return NewCommander(ctx, cfg.(*Config)) | ||
})) | ||
} |
Oops, something went wrong.