Skip to content

Commit

Permalink
refactor and add aes-cfb support
Browse files Browse the repository at this point in the history
  • Loading branch information
asche910 committed Oct 15, 2019
1 parent 0dd01ba commit ccd94f5
Show file tree
Hide file tree
Showing 16 changed files with 229 additions and 277 deletions.
12 changes: 6 additions & 6 deletions client/flyclient.go
@@ -1,6 +1,6 @@
package client

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

type FlyClient struct {
Mode int
Expand All @@ -12,21 +12,21 @@ type FlyClient struct {
}

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

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

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

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

func (client *FlyClient) PortForward(laborPort, serverAddr string) {
flynet.PortForwardForClient(laborPort, serverAddr)
fly.PortForwardForClient(laborPort, serverAddr)
}
42 changes: 21 additions & 21 deletions cmd/client/client.go
Expand Up @@ -3,15 +3,15 @@ package main
import (
"fmt"
"github.com/asche910/flynet/client"
"github.com/asche910/flynet/fly"
"github.com/asche910/flynet/log"
"github.com/asche910/flynet/flynet"
log2 "log"
"os"
"strings"
)

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

Expand All @@ -37,13 +37,13 @@ func main() {
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
Expand All @@ -53,11 +53,11 @@ func printHelp() {
-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 @@ -75,38 +75,38 @@ 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 := flynet.CheckPort(args[1])
port1 := fly.CheckPort(args[1])
if len(args) > 2 && !strings.HasPrefix(args[2], "-") {
port2 := flynet.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)
}
Expand All @@ -121,36 +121,36 @@ func parseArgs(args []string) {
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()
flynet.InitLog()
flynet.InitLog()
fly.InitLog()
fly.InitLog()
logger = log.GetLogger()
}
37 changes: 18 additions & 19 deletions cmd/server/server.go
Expand Up @@ -2,9 +2,9 @@ package main

import (
"fmt"
"github.com/asche910/flynet/fly"
"github.com/asche910/flynet/log"
"github.com/asche910/flynet/server"
"github.com/asche910/flynet/flynet"
log2 "log"
"os"
"strings"
Expand Down Expand Up @@ -38,13 +38,13 @@ func main() {
ports := flyServer.Ports
flyServer.PortForward(ports[0], ports[1])
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
Expand All @@ -53,12 +53,11 @@ func printHelp() {
-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,29 +75,29 @@ func parseArgs(args []string) {
case "forward":
flyServer.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 := flynet.CheckPort(args[1])
port1 := fly.CheckPort(args[1])
if len(args) > 2 && !strings.HasPrefix(args[2], "-") {
port2 := flynet.CheckPort(args[2])
port2 := fly.CheckPort(args[2])
flyServer.Ports = []string{port1, port2}
parseArgs(args[3:])
} else {
flyServer.Ports = []string{port1}
parseArgs(args[2:])
}
} else {
fmt.Println("flynet: no port found!")
fmt.Println("fly: no port found!")
printHelp()
os.Exit(1)
}
Expand All @@ -113,26 +112,26 @@ func parseArgs(args []string) {
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() {
if flyServer.Mode == 0 {
fmt.Println("Please choose a mode!")
printHelp()
os.Exit(1)
}else if flyServer.Mode == 5 {
} else if flyServer.Mode == 5 {
if len(flyServer.Ports) != 2 {
fmt.Println("flynet: please input two port!")
fmt.Println("fly: please input two port!")
printHelp()
os.Exit(1)
}
}else {
} else {
if len(flyServer.Ports) != 1 {
fmt.Println("flynet: please choose a port to listen!")
fmt.Println("fly: please choose a port to listen!")
printHelp()
os.Exit(1)
}
Expand All @@ -141,7 +140,7 @@ func checkArgs() {

func initLog() {
log.InitLog()
flynet.InitLog()
flynet.InitLog()
fly.InitLog()
fly.InitLog()
logger = log.GetLogger()
}
Binary file removed cmd/server/server_linux_amd64
Binary file not shown.
2 changes: 1 addition & 1 deletion flynet/cipher.go → fly/cipher.go
@@ -1,4 +1,4 @@
package flynet
package fly

import (
"crypto/aes"
Expand Down
63 changes: 63 additions & 0 deletions fly/conn.go
@@ -0,0 +1,63 @@
package fly

import (
"net"
)

type Conn struct {
net.Conn
*Cipher
}

func NewConn(con net.Conn, cipher *Cipher) *Conn {
return &Conn{
Conn: con,
Cipher: cipher,
}
}

// dial server and send request addr of client
func DialWithAddr(server string, addr []byte) *Conn {
conn, err := net.Dial("tcp", server)
if err != nil {
logger.Println("Dial server failed!", err)
return nil
}
newConn := NewConn(conn, NewCipherInstance())
if _, err := newConn.Write(addr); err != nil {
logger.Println("write addr to server failed!", err)
return nil
}
return newConn
}

func (conn *Conn) Write(b []byte) (n int, err error) {
buff := make([]byte, 1024)
if len(buff) > len(b) {
buff = buff[:len(b)]
} else {
buff = make([]byte, len(b))
}

conn.Encrypt(buff, b)
n, err = conn.Conn.Write(buff)
return
}

func (conn *Conn) Read(b []byte) (n int, err error) {
buff := make([]byte, 1024)
n, err = conn.Conn.Read(buff)

//fmt.Println("before", buff[:n])
if n > 0 {
b = b[:n]
conn.Decrypt(b, buff[:n])
//fmt.Println("after", b[:n])
}
return
}

func (conn *Conn) Close() error {
err := conn.Conn.Close()
return err
}
2 changes: 1 addition & 1 deletion flynet/error_utils.go → fly/error_utils.go
@@ -1,4 +1,4 @@
package flynet
package fly

import (
"fmt"
Expand Down
2 changes: 1 addition & 1 deletion flynet/http.go → fly/http.go
@@ -1,4 +1,4 @@
package flynet
package fly

import (
"bytes"
Expand Down
6 changes: 3 additions & 3 deletions flynet/net_utils.go → fly/net_utils.go
@@ -1,4 +1,4 @@
package flynet
package fly

import (
"fmt"
Expand All @@ -10,7 +10,7 @@ import (
func ListenTCP(localPort string) net.Listener {
listener, err := net.Listen("tcp", fmt.Sprintf(":%s", localPort))
if err != nil {
logger.Panicf("the port %s has been used!---> %s \n", localPort, err.Error())
logger.Panicln(PortOccupiedInfo(localPort), err.Error())
}
logger.Printf("listen tcp at: %s\n", localPort)
return listener
Expand All @@ -20,7 +20,7 @@ func ListenTCP(localPort string) net.Listener {
func ListenUDP(localPort string) net.Listener {
listener, err := net.Listen("udp", fmt.Sprintf(":%s", localPort))
if err != nil {
logger.Panicf("the port %s has been used!---> %s \n", localPort, err.Error())
logger.Panicln(PortOccupiedInfo(localPort), err.Error())
}
logger.Printf("listen udp at: %s\n", localPort)
return listener
Expand Down

0 comments on commit ccd94f5

Please sign in to comment.