arnaucube
arnaucube/blockchainIDsystemPublic Self-hosted repository
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}