5
5
"context"
6
6
"crypto/ed25519"
7
7
"encoding/base64"
8
+ "encoding/hex"
8
9
"encoding/json"
9
10
"flag"
10
11
"fmt"
@@ -42,6 +43,9 @@ var FlagDomain = flag.String("domain", "", "domain to configure")
42
43
var FlagDebug = flag .Bool ("debug" , false , "more logs" )
43
44
var FlagTxURL = flag .Bool ("tx-url" , false , "show set domain record url instead of qr" )
44
45
46
+ var GitCommit = "custom"
47
+ var Version = "v0.3.3"
48
+
45
49
type Handler struct {
46
50
h http.Handler
47
51
}
@@ -66,21 +70,20 @@ func (h Handler) ServeHTTP(writer http.ResponseWriter, request *http.Request) {
66
70
67
71
log .Println ("request:" , request .Method , request .Host , request .RequestURI )
68
72
69
- writer .Header ().Set ("Ton-Reverse-Proxy" , "Tonutils Reverse Proxy v0.3.2" )
73
+ writer .Header ().Set ("Ton-Reverse-Proxy" , "Tonutils Reverse Proxy " + Version )
70
74
h .h .ServeHTTP (writer , request )
71
75
}
72
76
73
77
func main () {
74
78
flag .Parse ()
75
79
80
+ log .Println ("Tonutils Reverse Proxy" , Version + ", build: " + GitCommit )
81
+
76
82
cfg , err := loadConfig ()
77
83
if err != nil {
78
84
panic ("failed to load config: " + err .Error ())
79
85
}
80
86
81
- ctx , cancel := context .WithTimeout (context .Background (), 30 * time .Second )
82
- defer cancel ()
83
-
84
87
netCfg , err := liteclient .GetConfigFromUrl (context .Background (), cfg .NetworkConfigURL )
85
88
if err != nil {
86
89
log .Println ("failed to download ton config:" , err .Error (), "; we will take it from static cache" )
@@ -92,7 +95,10 @@ func main() {
92
95
}
93
96
94
97
client := liteclient .NewConnectionPool ()
95
- // connect to testnet lite server
98
+
99
+ ctx , cancel := context .WithTimeout (context .Background (), 30 * time .Second )
100
+ defer cancel ()
101
+
96
102
err = client .AddConnectionsFromConfig (ctx , netCfg )
97
103
if err != nil {
98
104
panic (err )
@@ -136,7 +142,7 @@ func main() {
136
142
if err != nil {
137
143
panic (err )
138
144
}
139
- log .Println ("Server's ADNL address is" , addr + ".adnl" )
145
+ log .Println ("Server's ADNL address is" , addr + ".adnl (" + hex . EncodeToString ( s . Address ()) + ") " )
140
146
141
147
if * FlagDomain != "" {
142
148
setupDomain (client , * FlagDomain , s .Address ())
@@ -228,9 +234,10 @@ func setupDomain(client *liteclient.ConnectionPool, domain string, adnlAddr []by
228
234
api := ton .NewAPIClient (client )
229
235
230
236
// get root dns address from network config
231
- root , err := dns .RootContractAddr ( api )
237
+ root , err := dns .GetRootContractAddr ( ctx , api )
232
238
if err != nil {
233
- panic (err )
239
+ log .Println ("Failed to resolve root dns contract:" , err )
240
+ return
234
241
}
235
242
236
243
resolver := dns .NewDNSClient (api , root )
@@ -245,7 +252,7 @@ func setupDomain(client *liteclient.ConnectionPool, domain string, adnlAddr []by
245
252
data := domainInfo .BuildSetSiteRecordPayload (adnlAddr , false ).ToBOCWithFlags (false )
246
253
args := "?bin=" + base64 .URLEncoding .EncodeToString (data ) + "&amount=" + tlb .MustFromTON ("0.02" ).Nano ().String ()
247
254
248
- nftData , err := domainInfo .GetNFTData (context . Background () )
255
+ nftData , err := domainInfo .GetNFTData (ctx )
249
256
if err != nil {
250
257
log .Println ("Failed to get domain data" , domain , ":" , err )
251
258
return
@@ -261,8 +268,8 @@ func setupDomain(client *liteclient.ConnectionPool, domain string, adnlAddr []by
261
268
fmt .Println ("Execute transaction from wallet:" , nftData .OwnerAddress .String ())
262
269
fmt .Println ("When you've done, configuration will automatically proceed in ~10 seconds." )
263
270
for {
264
- time .Sleep (5 * time .Second )
265
- updated , err := resolve (resolver , domain , adnlAddr )
271
+ time .Sleep (2 * time .Second )
272
+ updated , err := resolve (ctx , resolver , domain , adnlAddr )
266
273
if err != nil {
267
274
continue
268
275
}
@@ -279,8 +286,8 @@ func setupDomain(client *liteclient.ConnectionPool, domain string, adnlAddr []by
279
286
fmt .Println ("Domain" , domain , "is already configured to use with current ADNL address. Everything is OK!" )
280
287
}
281
288
282
- func resolve (client * dns.Client , domain string , adnlAddr []byte ) (bool , error ) {
283
- ctx , cancel := context .WithTimeout (context . Background () , 10 * time .Second )
289
+ func resolve (ctx context. Context , client * dns.Client , domain string , adnlAddr []byte ) (bool , error ) {
290
+ ctx , cancel := context .WithTimeout (ctx , 10 * time .Second )
284
291
defer cancel ()
285
292
286
293
domainInfo , err := client .Resolve (ctx , domain )
0 commit comments