@@ -10,6 +10,7 @@ import (
10
10
"fmt"
11
11
"github.com/mdp/qrterminal/v3"
12
12
"github.com/sigurn/crc16"
13
+ "github.com/xssnick/tonutils-go/adnl"
13
14
"github.com/xssnick/tonutils-go/adnl/dht"
14
15
rldphttp "github.com/xssnick/tonutils-go/adnl/rldp/http"
15
16
"github.com/xssnick/tonutils-go/liteclient"
@@ -18,6 +19,7 @@ import (
18
19
"github.com/xssnick/tonutils-go/ton/dns"
19
20
"io"
20
21
"log"
22
+ "net"
21
23
"net/http"
22
24
"net/http/httputil"
23
25
"net/url"
@@ -27,13 +29,14 @@ import (
27
29
28
30
type Config struct {
29
31
ProxyPass string `json:"proxy_pass"`
30
- ForwardTo string `json:"forward_to"`
31
32
PrivateKey []byte `json:"private_key"`
32
- IP string `json:"address"`
33
+ ExternalIP string `json:"external_ip"`
34
+ ListenIP string `json:"listen_ip"`
33
35
Port uint16 `json:"port"`
34
36
}
35
37
36
38
var FlagDomain = flag .String ("domain" , "" , "domain to configure" )
39
+ var FlagDebug = flag .Bool ("debug" , false , "more logs" )
37
40
38
41
type Handler struct {
39
42
h http.Handler
@@ -49,7 +52,7 @@ func (h Handler) ServeHTTP(writer http.ResponseWriter, request *http.Request) {
49
52
50
53
log .Println ("request:" , request .Method , request .Host , request .RequestURI )
51
54
52
- writer .Header ().Set ("Ton-Reverse-Proxy" , "TonUtils Reverse Proxy v0.0.2 " )
55
+ writer .Header ().Set ("Ton-Reverse-Proxy" , "TonUtils Reverse Proxy v0.0.4 " )
53
56
h .h .ServeHTTP (writer , request )
54
57
}
55
58
@@ -86,8 +89,14 @@ func main() {
86
89
panic (err )
87
90
}
88
91
92
+ if * FlagDebug == false {
93
+ adnl .Logger = func (v ... any ) {}
94
+ // rldphttp.Logger = func(v ...any) {}
95
+ }
96
+
89
97
proxy := httputil .NewSingleHostReverseProxy (u )
90
98
s := rldphttp .NewServer (ed25519 .NewKeyFromSeed (cfg .PrivateKey ), dhtClient , Handler {proxy })
99
+ s .SetExternalIP (net .ParseIP (cfg .ExternalIP ))
91
100
92
101
addr , err := rldphttp .SerializeADNLAddress (s .Address ())
93
102
if err != nil {
@@ -100,7 +109,7 @@ func main() {
100
109
}
101
110
102
111
log .Println ("Starting server on" , addr + ".adnl" )
103
- if err = s .ListenAndServe (fmt .Sprintf ("%s:%d" , cfg .IP , cfg .Port )); err != nil {
112
+ if err = s .ListenAndServe (fmt .Sprintf ("%s:%d" , cfg .ListenIP , cfg .Port )); err != nil {
104
113
panic (err )
105
114
}
106
115
}
@@ -141,13 +150,14 @@ func loadConfig() (*Config, error) {
141
150
}
142
151
cfg .PrivateKey = srvKey .Seed ()
143
152
144
- cfg .IP , err = getPublicIP ()
153
+ cfg .ExternalIP , err = getPublicIP ()
145
154
if err != nil {
146
155
return nil , err
147
156
}
157
+ cfg .ListenIP = "0.0.0.0"
148
158
149
159
// generate consistent port
150
- cfg .Port = 9000 + (crc16 .Checksum ([]byte (cfg .IP ), crc16 .MakeTable (crc16 .CRC16_XMODEM )) % 5000 )
160
+ cfg .Port = 9000 + (crc16 .Checksum ([]byte (cfg .ExternalIP ), crc16 .MakeTable (crc16 .CRC16_XMODEM )) % 5000 )
151
161
152
162
cfg .ProxyPass = "http://127.0.0.1:80/"
153
163
@@ -194,8 +204,15 @@ func setupDomain(client *liteclient.ConnectionPool, domain string, adnlAddr []by
194
204
data := domainInfo .BuildSetSiteRecordPayload (adnlAddr ).ToBOCWithFlags (false )
195
205
args := "?bin=" + base64 .URLEncoding .EncodeToString (data ) + "&amount=" + tlb .MustFromTON ("0.02" ).NanoTON ().String ()
196
206
207
+ nftData , err := domainInfo .GetNFTData (context .Background ())
208
+ if err != nil {
209
+ log .Println ("Failed to get domain data" , domain , ":" , err )
210
+ return
211
+ }
212
+
197
213
qrterminal .GenerateHalfBlock ("ton://transfer/" + domainInfo .GetNFTAddress ().String ()+ args , qrterminal .L , os .Stdout )
198
214
fmt .Println ("Execute this transaction from the domain owner's wallet to setup site records." )
215
+ fmt .Println ("Execute transaction from wallet:" , nftData .OwnerAddress .String ())
199
216
fmt .Println ("When you've done, configuration will automatically proceed in ~10 seconds." )
200
217
for {
201
218
time .Sleep (5 * time .Second )
0 commit comments