aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/peer_mockup/main.go
blob: 59bc00218c6474327c4769e8e8b74ce6d2077ba2 (plain) (blame)
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
package main

import (
	"encoding/hex"
	"flag"
	"fmt"

	"github.com/bfix/gospel/logger"
	"gnunet/core"
	"gnunet/transport"
)

var (
	p *core.Peer // local peer (with private key)
	t *core.Peer // remote peer
)

func main() {
	// handle command line arguments
	var (
		asServer bool
		err      error
		ch       transport.Channel
	)
	flag.BoolVar(&asServer, "s", false, "accept incoming connections")
	flag.Parse()

	// setup peer instances from static data
	if err = setupPeers(false); err != nil {
		fmt.Println(err.Error())
		return
	}

	fmt.Println("======================================================================")
	fmt.Println("GNUnet peer mock-up (EXPERIMENTAL)     (c) 2018,2019 by Bernd Fix, >Y<")
	fmt.Printf("    Identity '%s'\n", p.GetIDString())
	fmt.Printf("    [%s]\n", hex.EncodeToString(p.GetID()))
	fmt.Println("======================================================================")

	if asServer {
		// run as server
		fmt.Println("Waiting for connections...")
		hdlr := make(chan transport.Channel)
		go func() {
			for {
				select {
				case ch = <-hdlr:
					mc := transport.NewMsgChannel(ch)
					if err = process(mc, t, p); err != nil {
						logger.Println(logger.ERROR, err.Error())
					}
				}
			}
		}()
		_, err = transport.NewChannelServer("tcp+0.0.0.0:2086", hdlr)
	} else {
		// connect to peer
		fmt.Println("Connecting to target peer")
		if ch, err = transport.NewChannel("tcp+172.17.0.5:2086"); err != nil {
			logger.Println(logger.ERROR, err.Error())
		}
		mc := transport.NewMsgChannel(ch)
		err = process(mc, p, t)
	}
	if err != nil {
		fmt.Println(err)
	}
}