Skip to content

Commit

Permalink
protobuf for dokodemo config
Browse files Browse the repository at this point in the history
  • Loading branch information
DarienRaymond committed Sep 22, 2016
1 parent 88ae824 commit 60f4292
Show file tree
Hide file tree
Showing 7 changed files with 128 additions and 21 deletions.
3 changes: 3 additions & 0 deletions common/net/address.go
Original file line number Diff line number Diff line change
Expand Up @@ -188,6 +188,9 @@ func (this *domainAddress) Equals(another Address) bool {
}

func (this *AddressPB) AsAddress() Address {
if this == nil {
return nil
}
switch addr := this.Address.(type) {
case *AddressPB_Ip:
return IPAddress(addr.Ip)
Expand Down
8 changes: 2 additions & 6 deletions proxy/dokodemo/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,6 @@ import (
v2net "v2ray.com/core/common/net"
)

type Config struct {
FollowRedirect bool
Address v2net.Address
Port v2net.Port
Network *v2net.NetworkList
Timeout uint32
func (this *Config) GetPredefinedAddress() v2net.Address {
return this.Address.AsAddress()
}
85 changes: 85 additions & 0 deletions proxy/dokodemo/config.pb.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

15 changes: 15 additions & 0 deletions proxy/dokodemo/config.proto
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
syntax = "proto3";

package com.v2ray.core.proxy.dokodemo;
option go_package = "dokodemo";

import "v2ray.com/core/common/net/address.proto";
import "v2ray.com/core/common/net/network.proto";

message Config {
com.v2ray.core.common.net.AddressPB address = 1;
uint32 port = 2;
com.v2ray.core.common.net.NetworkList network_list = 3;
uint32 timeout = 4;
bool follow_redirect = 5;
}
6 changes: 3 additions & 3 deletions proxy/dokodemo/config_json.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,10 +23,10 @@ func (this *Config) UnmarshalJSON(data []byte) error {
return errors.New("Dokodemo: Failed to parse config: " + err.Error())
}
if rawConfig.Host != nil {
this.Address = rawConfig.Host.AsAddress()
this.Address = rawConfig.Host
}
this.Port = rawConfig.PortValue
this.Network = rawConfig.NetworkList
this.Port = uint32(rawConfig.PortValue)
this.NetworkList = rawConfig.NetworkList
this.Timeout = rawConfig.TimeoutValue
this.FollowRedirect = rawConfig.Redirect
return nil
Expand Down
8 changes: 4 additions & 4 deletions proxy/dokodemo/dokodemo.go
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,8 @@ type DokodemoDoor struct {
func NewDokodemoDoor(config *Config, space app.Space, meta *proxy.InboundHandlerMeta) *DokodemoDoor {
d := &DokodemoDoor{
config: config,
address: config.Address,
port: config.Port,
address: config.GetPredefinedAddress(),
port: v2net.Port(config.Port),
meta: meta,
}
space.InitializeApplication(func() error {
Expand Down Expand Up @@ -73,13 +73,13 @@ func (this *DokodemoDoor) Start() error {
}
this.accepting = true

if this.config.Network.HasNetwork(v2net.Network_TCP) {
if this.config.NetworkList.HasNetwork(v2net.Network_TCP) {
err := this.ListenTCP()
if err != nil {
return err
}
}
if this.config.Network.HasNetwork(v2net.Network_UDP) {
if this.config.NetworkList.HasNetwork(v2net.Network_UDP) {
err := this.ListenUDP()
if err != nil {
return err
Expand Down
24 changes: 16 additions & 8 deletions proxy/dokodemo/dokodemo_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -54,10 +54,14 @@ func TestDokodemoTCP(t *testing.T) {

port := v2net.Port(dice.Roll(20000) + 10000)
dokodemo := NewDokodemoDoor(&Config{
Address: v2net.LocalHostIP,
Port: tcpServer.Port,
Network: v2net.Network_TCP.AsList(),
Timeout: 600,
Address: &v2net.AddressPB{
Address: &v2net.AddressPB_Ip{
Ip: v2net.LocalHostIP.IP(),
},
},
Port: uint32(tcpServer.Port),
NetworkList: v2net.Network_TCP.AsList(),
Timeout: 600,
}, space, &proxy.InboundHandlerMeta{
Address: v2net.LocalHostIP,
Port: port,
Expand Down Expand Up @@ -124,10 +128,14 @@ func TestDokodemoUDP(t *testing.T) {

port := v2net.Port(dice.Roll(20000) + 10000)
dokodemo := NewDokodemoDoor(&Config{
Address: v2net.LocalHostIP,
Port: udpServer.Port,
Network: v2net.Network_UDP.AsList(),
Timeout: 600,
Address: &v2net.AddressPB{
Address: &v2net.AddressPB_Ip{
Ip: v2net.LocalHostIP.IP(),
},
},
Port: uint32(udpServer.Port),
NetworkList: v2net.Network_UDP.AsList(),
Timeout: 600,
}, space, &proxy.InboundHandlerMeta{
Address: v2net.LocalHostIP,
Port: port,
Expand Down

0 comments on commit 60f4292

Please sign in to comment.