@@ -10,6 +10,7 @@ import (
10
10
"fmt"
11
11
"github.com/mdp/qrterminal/v3"
12
12
"github.com/sigurn/crc16"
13
+ "github.com/ton-utils/reverse-proxy/config"
13
14
"github.com/xssnick/tonutils-go/adnl"
14
15
"github.com/xssnick/tonutils-go/adnl/dht"
15
16
rldphttp "github.com/xssnick/tonutils-go/adnl/rldp/http"
@@ -46,14 +47,16 @@ type Handler struct {
46
47
func (h Handler ) ServeHTTP (writer http.ResponseWriter , request * http.Request ) {
47
48
hdr := http.Header {}
48
49
for k := range request .Header {
49
- // exception for ton.run, make headers canonical
50
- hdr .Set (k , request .Header .Get (k ))
50
+ // make headers canonical
51
+ for _ , s := range request .Header .Values (k ) {
52
+ hdr .Add (k , s )
53
+ }
51
54
}
52
55
request .Header = hdr
53
56
54
57
log .Println ("request:" , request .Method , request .Host , request .RequestURI )
55
58
56
- writer .Header ().Set ("Ton-Reverse-Proxy" , "Tonutils Reverse Proxy v0.2 .0" )
59
+ writer .Header ().Set ("Ton-Reverse-Proxy" , "Tonutils Reverse Proxy v0.3 .0" )
57
60
h .h .ServeHTTP (writer , request )
58
61
}
59
62
@@ -68,9 +71,14 @@ func main() {
68
71
ctx , cancel := context .WithTimeout (context .Background (), 30 * time .Second )
69
72
defer cancel ()
70
73
71
- netCfg , err := liteclient .GetConfigFromUrl (ctx , cfg .NetworkConfigURL )
74
+ netCfg , err := liteclient .GetConfigFromUrl (context . Background () , cfg .NetworkConfigURL )
72
75
if err != nil {
73
- panic ("failed to load network config: " + err .Error ())
76
+ log .Println ("failed to download ton config:" , err .Error (), "; we will take it from static cache" )
77
+ netCfg = & liteclient.GlobalConfig {}
78
+ if err = json .NewDecoder (bytes .NewBufferString (config .FallbackNetworkConfig )).Decode (netCfg ); err != nil {
79
+ log .Println ("failed to parse fallback ton config:" , err .Error ())
80
+ os .Exit (1 )
81
+ }
74
82
}
75
83
76
84
client := liteclient .NewConnectionPool ()
@@ -91,7 +99,7 @@ func main() {
91
99
panic ("failed to load network config: " + err .Error ())
92
100
}
93
101
94
- dhtClient , err := dht .NewClientFromConfig (ctx , gateway , netCfg )
102
+ dhtClient , err := dht .NewClientFromConfig (gateway , netCfg )
95
103
if err != nil {
96
104
panic (err )
97
105
}
@@ -161,7 +169,7 @@ func loadConfig() (*Config, error) {
161
169
return nil , err
162
170
}
163
171
cfg .PrivateKey = srvKey .Seed ()
164
- cfg .NetworkConfigURL = "https://ton-blockchain.github.io /global.config.json"
172
+ cfg .NetworkConfigURL = "https://ton.org /global.config.json"
165
173
166
174
cfg .ExternalIP , err = getPublicIP ()
167
175
if err != nil {
@@ -194,7 +202,7 @@ func loadConfig() (*Config, error) {
194
202
195
203
// backwards compatibility with old configs
196
204
if cfg .NetworkConfigURL == "" {
197
- cfg .NetworkConfigURL = "https://ton-blockchain.github.io /global.config.json"
205
+ cfg .NetworkConfigURL = "https://ton.org /global.config.json"
198
206
}
199
207
200
208
return & cfg , nil
@@ -221,7 +229,7 @@ func setupDomain(client *liteclient.ConnectionPool, domain string, adnlAddr []by
221
229
record , isStorage := domainInfo .GetSiteRecord ()
222
230
if isStorage || ! bytes .Equal (record , adnlAddr ) {
223
231
data := domainInfo .BuildSetSiteRecordPayload (adnlAddr , false ).ToBOCWithFlags (false )
224
- args := "?bin=" + base64 .URLEncoding .EncodeToString (data ) + "&amount=" + tlb .MustFromTON ("0.02" ).NanoTON ().String ()
232
+ args := "?bin=" + base64 .URLEncoding .EncodeToString (data ) + "&amount=" + tlb .MustFromTON ("0.02" ).Nano ().String ()
225
233
226
234
nftData , err := domainInfo .GetNFTData (context .Background ())
227
235
if err != nil {
0 commit comments