blockchainIDsystem/peer/main.go
peer/main.goRaw
1package main
2
3import (
4 "fmt"
5 "net"
6 "os"
7 "time"
8
9 "github.com/fatih/color"
10)
11
12type Peer struct {
13 IP string
14 Port string
15 Role string //client or server
16 Conn net.Conn
17}
18type Msg struct {
19 Type string `json:"type"`
20 Content string `json:"content"`
21}
22
23var listPeers []Peer
24var running bool
25
26func main() {
27 //initialize some vars
28 running = true
29 var peer Peer
30
31 color.Blue("Starting Peer")
32 readConfig("config.json")
33
34 peer.IP = config.IP
35 peer.Port = config.Port
36 peer.Role = "client"
37
38 //read flags, to know if is runned as p2p server
39 if len(os.Args) > 1 {
40 if os.Args[1] == "server" {
41 color.Yellow("Running as p2p server")
42 peer.Role = "server"
43 peer.Port = config.ServerPort
44 go acceptPeers(peer)
45 }
46 }
47 fmt.Println(peer)
48 if peer.Role == "client" {
49 var newPeer Peer
50 newPeer.IP = config.ServerIP
51 newPeer.Port = config.ServerPort
52 newPeer.Role = "server"
53 connectToPeer(newPeer)
54 }
55
56 for running {
57 time.Sleep(1000 * time.Millisecond)
58 }
59}