/
create-thread-with-key.go
116 lines (95 loc) · 2.92 KB
/
create-thread-with-key.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
package main
import (
"context"
"crypto/ed25519"
"fmt"
"log"
"os"
"os/user"
ma "github.com/multiformats/go-multiaddr"
tc "github.com/textileio/go-threads/api/client"
"github.com/textileio/go-threads/core/thread"
"github.com/textileio/go-threads/db"
"github.com/textileio/textile/v2/api/common"
"github.com/textileio/textile/v2/cmd"
"github.com/textileio/textile/v2/core"
"google.golang.org/grpc"
)
var IpfsAddr string
var MongoUsr string
var MongoPw string
var MongoHost string
var MongoRepSet string
const exampleThreadName = "meow"
func main() {
IpfsAddr = os.Getenv("IPFS_ADDR")
MongoUsr = os.Getenv("MONGO_USR")
MongoPw = os.Getenv("MONGO_PW")
MongoHost = os.Getenv("MONGO_HOST")
MongoRepSet = os.Getenv("MONGO_REPLICA_SET")
addrAPI := cmd.AddrFromStr("/ip4/127.0.0.1/tcp/3006")
addrAPIProxy := cmd.AddrFromStr("/ip4/127.0.0.1/tcp/3007")
addrThreadsHost := cmd.AddrFromStr("/ip4/0.0.0.0/tcp/4006")
addrIpfsAPI := cmd.AddrFromStr(IpfsAddr)
addrGatewayHost := cmd.AddrFromStr("/ip4/127.0.0.1/tcp/8006")
addrGatewayURL := "http://127.0.0.1:8006"
fmt.Println("mongo host: ", MongoHost)
addrMongoURI := "mongodb://" + MongoUsr + ":" + MongoPw + "@" + MongoHost + "/?ssl=true&replicaSet=" + MongoRepSet + "&authSource=admin&retryWrites=true&w=majority"
usr, err := user.Current()
if err != nil {
log.Fatal(err)
}
ctx, cancel := context.WithCancel(context.Background())
defer cancel()
textile, err := core.NewTextile(ctx, core.Config{
RepoPath: usr.HomeDir + "/.buckd/repo",
AddrAPI: addrAPI,
AddrAPIProxy: addrAPIProxy,
AddrThreadsHost: addrThreadsHost,
AddrIPFSAPI: addrIpfsAPI,
AddrGatewayHost: addrGatewayHost,
AddrGatewayURL: addrGatewayURL,
AddrMongoURI: addrMongoURI,
AddrMongoName: "buckets",
Debug: false,
})
if err != nil {
log.Fatal(err)
}
defer textile.Close(false)
textile.Bootstrap()
fmt.Println("Welcome to Buckets!")
fmt.Println("Your peer ID is " + textile.HostID().String())
fmt.Println("starting join thread")
addr := os.Getenv("JOIN_THREAD_ADDR")
key := os.Getenv("JOIN_THREAD_KEY")
m1, _ := ma.NewMultiaddr(addr)
var threads *tc.Client
host := "127.0.0.1:3006"
auth := common.Credentials{}
var opts []grpc.DialOption
threadstarget := host
opts = append(opts, grpc.WithInsecure())
opts = append(opts, grpc.WithPerRPCCredentials(auth))
threads, err = tc.NewClient(threadstarget, opts...)
if err != nil {
cmd.Fatal(err)
}
threadCtx := context.Background()
k, err := thread.KeyFromString(key)
pub, _, err := ed25519.GenerateKey(nil)
if err != nil {
fmt.Println("error generating key: ", err)
return
}
// no need to crypto.UnmarshalEd25519PublicKey(pub)
managedKey, err := thread.KeyFromBytes(pub)
if err != nil {
fmt.Println("error key from bytes: ", err)
return
}
err = threads.NewDBFromAddr(threadCtx, m1, k, db.WithNewManagedThreadKey(managedKey))
if err != nil {
fmt.Println("error new db from addr: ", err)
}
}