-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.go
126 lines (110 loc) · 2.35 KB
/
main.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
package main
import (
"bufio"
"crypto/aes"
"echo/Config"
HTTP "echo/HTTP_server"
"echo/TCP_server"
Client "echo/cli"
"echo/crypto"
"echo/logging"
"fmt"
"log"
"net"
"net/http"
"os"
"strings"
"sync"
)
var CONFIG = Config.LoadConfig()
func main() {
var wg sync.WaitGroup
switch CONFIG.Program {
case "HTTP":
serveHTTP()
case "TCP":
serveTCP()
case "Client":
serveClient()
case "subTCP":
servesubTCP()
//leehs 20220623 4개의 역활을 동시 수행
case "All":
wg.Add(4)
go serveClient()
go serveTCP()
wg.Done()
go servesubTCP()
wg.Done()
go serveHTTP()
wg.Done()
wg.Wait()
default:
logging.LogInfo("Invalid Option")
return
}
}
//leehs 20220623 HTTP 서버
func serveHTTP() {
http.Handle("/", new(HTTP.TestHandler))
http.ListenAndServe(CONFIG.Port.HTTP, nil)
}
//leehs 20220623 메인 TCP 서버
func serveTCP() {
server, err := net.Listen("tcp", CONFIG.Port.TCP)
if err != nil {
logging.LogInfo(err.Error())
logging.Logger.Fatal(err.Error())
}
defer server.Close()
log.Println("Server is running on:", CONFIG.Port.TCP)
for {
conn, err := server.Accept()
if err != nil {
logging.LogInfo(err.Error())
logging.Logger.Info(err.Error())
}
tcpconn, err := net.Dial("tcp", CONFIG.Port.SubTCP)
if err != nil {
logging.LogInfo(err.Error())
logging.Logger.Info(err.Error())
}
//leehs 20220623 접속해 있는 클리이언트 리스트와 연결 정보
var handler = TCP_server.TcpSessionHandler(conn, conn.RemoteAddr(), tcpconn)
TCP_server.CliList = append(TCP_server.CliList, *handler)
fmt.Println(TCP_server.CliList)
//leehs 20220623 TCP 핸들러
go TCP_server.Comm(handler)
}
}
//leehs 20220623 sub TCP 서버
func servesubTCP() {
TCP_server.TCPServer()
}
//leehs 20220623 Client
func serveClient() {
conn, err := net.Dial("tcp", CONFIG.Port.TCP)
if err != nil {
logging.LogInfo(err.Error())
logging.Logger.Fatal(err.Error())
}
go Client.StartReceive(conn)
key := "Hello Key 123456"
for {
block, err := aes.NewCipher([]byte(key))
if err != nil {
logging.LogInfo(err.Error())
logging.Logger.Info(err.Error())
}
r := bufio.NewReader(os.Stdin)
s, _ := r.ReadString('\n')
if strings.TrimSpace(s) == "quit" {
log.Println("Closing connection")
conn.Write([]byte("quit"))
break
}
msg := crypto.Encrypt(block, []byte(s))
fmt.Println(msg)
conn.Write(msg)
}
}