Skip to content

Commit

Permalink
Merge branch 'dev'
Browse files Browse the repository at this point in the history
  • Loading branch information
asche910 committed Oct 16, 2019
2 parents 31861f9 + 303c7af commit ca7cf0e
Show file tree
Hide file tree
Showing 15 changed files with 490 additions and 255 deletions.
16 changes: 9 additions & 7 deletions client/flyclient.go
Original file line number Diff line number Diff line change
@@ -1,32 +1,34 @@
package client

import "github.com/asche910/flynet/util"
import "github.com/asche910/flynet/fly"

type FlyClient struct {
Mode int
localhost string
Ports []string // ports[0] stands for the listening port; others are for reserve
Method string
Password string
protocol string // tcp or udp protocol
ServerAddr string

}

func (client *FlyClient) LocalSocks5Proxy(port string) {
util.StartSocks5(port)
fly.StartSocks5(port)
}

func (client *FlyClient) LocalHttpProxy(port string) {
util.StartHttp(port)
fly.StartHttp(port)
}

func (client *FlyClient) Socks5ProxyForTCP(localPort, serverAddr string) {
util.Socks5ForClientByTCP(localPort, serverAddr)
func (client *FlyClient) Socks5ProxyForTCP(localPort, serverAddr, method, key string) {
fly.Socks5ForClientByTCP(localPort, serverAddr, method, key)
}

func (client *FlyClient) Socks5ProxyForUDP(localPort, serverAddr string) {
util.Socks5ForClientByUDP(localPort, serverAddr)
fly.Socks5ForClientByUDP(localPort, serverAddr)
}

func (client *FlyClient) PortForward(laborPort, serverAddr string) {
util.PortForwardForClient(laborPort, serverAddr)
fly.PortForwardForClient(laborPort, serverAddr)
}
81 changes: 50 additions & 31 deletions cmd/client/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,15 @@ package main
import (
"fmt"
"github.com/asche910/flynet/client"
"github.com/asche910/flynet/log"
"github.com/asche910/flynet/relay"
"github.com/asche910/flynet/util"
log2 "log"
"github.com/asche910/flynet/fly"
"github.com/asche910/flynet/logs"
"log"
"os"
"strings"
)

var (
logger *log2.Logger
logger *log.Logger
flyClient = client.FlyClient{}
)

Expand All @@ -31,34 +30,38 @@ func main() {
case 2:
flyClient.LocalSocks5Proxy(flyClient.Ports[0])
case 3:
flyClient.Socks5ProxyForTCP(flyClient.Ports[0], flyClient.ServerAddr)
flyClient.Socks5ProxyForTCP(flyClient.Ports[0], flyClient.ServerAddr, flyClient.Method, flyClient.Password)
case 4:
flyClient.Socks5ProxyForUDP(flyClient.Ports[0], flyClient.ServerAddr)
case 5:
ports := flyClient.Ports
flyClient.PortForward(ports[0], flyClient.ServerAddr)
default:
fmt.Println("flynet: unknown error!")
fmt.Println("fly: unknown error!")
os.Exit(1)
}
}

func printHelp() {
fmt.Println(`Usage: flynet [options]
fmt.Println(`Usage: fly [options]
-M, --mode choose which mode to run. the mode must be one of['http', 'socks5',
'socks5-tcp', 'socks5-udp', 'forward']
-L, --listen choose which port(s) to listen or forward
-S, --server the server address client connect to
-m, --method choose a encrypt method, which must be one of ['aes-128-cfb','aes-192-cfb',
'aes-256-cfb', 'aes-128-ctr', 'aes-192-ctr', 'aes-256-ctr', 'rc4-md5',
'rc4-md5-6', 'chacha20', 'chacha20-ietf'], default is 'aes-256-cfb'
-P, --password password of server
-V, --verbose output detail info
-l, --log output detail info to log file
-l, --logs output detail info to logs file
-H, --help show detail usage
Mail bug reports and suggestions to <asche910@gmail.com>
or github: https://github.com/asche910/flynet`)
or github: https://github.com/asche910/fly`)
}

func parseArgs(args []string) {
if len(args) < 1{
if len(args) < 1 {
return
}
switch args[0] {
Expand All @@ -76,82 +79,98 @@ func parseArgs(args []string) {
case "forward":
flyClient.Mode = 5
default:
fmt.Println("flynet: no correct mode found!")
fmt.Println("fly: no correct mode found!")
printHelp()
os.Exit(1)
}
parseArgs(args[2:])
} else {
fmt.Println("flynet: no detail mode found!")
fmt.Println("fly: no detail mode found!")
printHelp()
os.Exit(1)
}
case "--listen", "-L":
if len(args) > 1 && !strings.HasPrefix(args[1], "-") {
port1 := util.CheckPort(args[1])
port1 := fly.CheckPort(args[1])
if len(args) > 2 && !strings.HasPrefix(args[2], "-") {
port2 := util.CheckPort(args[2])
port2 := fly.CheckPort(args[2])
flyClient.Ports = []string{port1, port2}
parseArgs(args[3:])
} else {
flyClient.Ports = []string{port1}
parseArgs(args[2:])
}
} else {
fmt.Println("flynet: no port found!")
fmt.Println("fly: no port found!")
printHelp()
os.Exit(1)
}
case "--server", "-S":
if len(args) > 1 && !strings.HasPrefix(args[1], "-") {
flyClient.ServerAddr = args[1]
parseArgs(args[2:])
}else {
fmt.Println("flynet: no correct serverAddr found!")
} else {
fmt.Println("fly: no correct serverAddr found!")
printHelp()
os.Exit(1)
}
case "-m", "--method":
if len(args) > 1 && !strings.HasPrefix(args[1], "-") {
flyClient.Method = args[1]
parseArgs(args[2:])
} else {
fmt.Println("fly: no password found!")
printHelp()
os.Exit(1)
}
case "--password", "-P":
if len(args) > 1 && !strings.HasPrefix(args[1], "-") {
flyClient.Password = args[1]
parseArgs(args[2:])
} else {
fmt.Println("fly: no password found!")
printHelp()
os.Exit(1)
}
case "--verbose", "-V":
log.EnableDebug(true)
logs.EnableDebug(true)
parseArgs(args[1:])
case "--log", "-l":
log.EnableLog(true)
case "--logs", "-l":
logs.EnableLog(true)
parseArgs(args[1:])
case "--help", "-H":
printHelp()
parseArgs(args[1:])
os.Exit(0)
default:
fmt.Println("flynet: please input correct command!")
fmt.Println("fly: please input correct command!")
printHelp()
os.Exit(1)
}
}

func checkArgs() {
func checkArgs() {
mode := flyClient.Mode
if mode == 0 {
fmt.Println("Please choose a mode!")
printHelp()
os.Exit(1)
}else if mode == 3 || mode == 4 || mode == 5{
if flyClient.ServerAddr == ""{
fmt.Println("flynet: please input serverAddr!")
} else if mode == 3 || mode == 4 || mode == 5 {
if flyClient.ServerAddr == "" {
fmt.Println("fly: please input serverAddr!")
printHelp()
os.Exit(1)
}
}

if len(flyClient.Ports) != 1 {
fmt.Println("flynet: please choose a port!")
fmt.Println("fly: please choose a port!")
printHelp()
os.Exit(1)
}
}

func initLog() {
log.InitLog()
util.InitLog()
relay.InitLog()
logger = log.GetLogger()
fly.InitLog()
logger = logs.GetLogger()
}
Loading

0 comments on commit ca7cf0e

Please sign in to comment.