@@ -549,9 +549,9 @@ type ProtonClient struct {
549
549
refreshToken string
550
550
}
551
551
cert struct {
552
- SerialNumber string
553
- ExpirationTime int64
554
- RefreshTime int64
552
+ serialNumber string
553
+ expirationTime int64
554
+ refreshTime int64
555
555
}
556
556
557
557
config * ProtonWgConfig
@@ -598,7 +598,7 @@ func (a *ProtonClient) Config() (*ProtonWgConfig, error) {
598
598
return nil , errNoProtonConfig
599
599
}
600
600
601
- func (a * ProtonClient ) refreshConf () error {
601
+ func (a * ProtonClient ) refreshWgConfig () error {
602
602
pc := a .config
603
603
if pc == nil {
604
604
return errNoProtonConfig
@@ -619,9 +619,9 @@ func (a *ProtonClient) refreshConf() error {
619
619
return errProtonCredsMismatch
620
620
}
621
621
// cert info
622
- if pc .CertSerialNumber != a .cert .SerialNumber {
622
+ if pc .CertSerialNumber != a .cert .serialNumber {
623
623
log .W ("proton: refresh: serial number mismatch conf(%s) != struct(%s)" ,
624
- pc .CertSerialNumber , a .cert .SerialNumber )
624
+ pc .CertSerialNumber , a .cert .serialNumber )
625
625
// expect it to be the same when the key is the same
626
626
}
627
627
// wg info
@@ -679,6 +679,8 @@ func (a *ProtonClient) newConf() error {
679
679
return errNoProtonServerInfo
680
680
}
681
681
682
+ // reverse of restoreConfigFrom()
683
+
682
684
// key
683
685
pc .Ed25519PrivBase64 = a .key .PrivateKeyBase64 ()
684
686
// session info
@@ -690,10 +692,10 @@ func (a *ProtonClient) newConf() error {
690
692
pc .CredsAccessToken = a .creds .accessToken
691
693
pc .CredsRefreshToken = a .creds .refreshToken
692
694
// cert info
693
- pc .CertSerialNumber = a .cert .SerialNumber
694
- pc .CertExpTime = a .cert .ExpirationTime
695
- pc .CertRefreshTime = a .cert .RefreshTime
696
- // wg info
695
+ pc .CertSerialNumber = a .cert .serialNumber
696
+ pc .CertExpTime = a .cert .expirationTime
697
+ pc .CertRefreshTime = a .cert .refreshTime
698
+ // wg info; similar: refreshWgConfig
697
699
for _ , c := range rwgConfs {
698
700
c .genWgConf ()
699
701
}
@@ -790,11 +792,15 @@ retryAfterRefresh:
790
792
}
791
793
// TODO: certResponse.ClientPublicKey == a.key.PublicKeyPKIXPem()
792
794
793
- a .cert .SerialNumber = certResponse .SerialNumber
794
- a .cert .ExpirationTime = certResponse .ExpirationTime
795
- a .cert .RefreshTime = certResponse .RefreshTime
795
+ a .cert .serialNumber = certResponse .SerialNumber
796
+ a .cert .expirationTime = certResponse .ExpirationTime
797
+ a .cert .refreshTime = certResponse .RefreshTime
798
+ pc := a .config
799
+ pc .CertSerialNumber = a .cert .serialNumber
800
+ pc .CertExpTime = a .cert .expirationTime
801
+ pc .CertRefreshTime = a .cert .refreshTime
796
802
797
- refreshAt := time .Unix (int64 (a .cert .RefreshTime ), 0 )
803
+ refreshAt := time .Unix (int64 (a .cert .refreshTime ), 0 )
798
804
799
805
log .I ("proton: regcert: success: serial(%s): next refresh(%s)" ,
800
806
certResponse .SerialNumber , refreshAt .Format (time .RFC1123 ))
@@ -813,7 +819,7 @@ func (a *ProtonClient) Refresh() error {
813
819
return err
814
820
}
815
821
816
- return a .refreshConf ()
822
+ return a .refreshWgConfig ()
817
823
}
818
824
819
825
func (a * ProtonClient ) fetchCreds () error {
@@ -1041,6 +1047,11 @@ func (a *ProtonClient) refreshCreds() error {
1041
1047
1042
1048
a .creds .accessToken = refreshCredResponse .AccessToken
1043
1049
a .creds .refreshToken = refreshCredResponse .RefreshToken
1050
+ pc := a .config
1051
+ pc .CredsAccessToken = a .creds .accessToken
1052
+ pc .CredsRefreshToken = a .creds .refreshToken
1053
+
1054
+ log .I ("proton: refreshcreds: ok; new access+refresh tokens" )
1044
1055
1045
1056
return nil
1046
1057
}
@@ -1148,7 +1159,7 @@ func (a *ProtonClient) rereg(force bool) error {
1148
1159
fresh := a .config != nil && a .config .CertRefreshTime - now > 0
1149
1160
1150
1161
log .I ("proton: re-reg %s (exp? %t, force? %t)" ,
1151
- a .cert .SerialNumber , ! fresh , force )
1162
+ a .cert .serialNumber , ! fresh , force )
1152
1163
1153
1164
if ! force && fresh {
1154
1165
return nil // ok
@@ -1254,13 +1265,13 @@ func (w *Client) MakeProtonWg(allServersFilePath string) (*ProtonClient, error)
1254
1265
return a , nil
1255
1266
}
1256
1267
1257
- func (w * Client ) MakeProtonWgFrom (fromConfigJson []byte , allServersFilePath string ) (* ProtonClient , error ) {
1258
- if len (fromConfigJson ) <= 0 {
1268
+ func (w * Client ) MakeProtonWgFrom (existingConfigJson []byte , allServersFilePath string ) (* ProtonClient , error ) {
1269
+ if len (existingConfigJson ) <= 0 {
1259
1270
return nil , errNoProtonJsonConfig
1260
1271
}
1261
1272
1262
1273
var existingConf ProtonWgConfig
1263
- err := json .Unmarshal (fromConfigJson , & existingConf )
1274
+ err := json .Unmarshal (existingConfigJson , & existingConf )
1264
1275
if err != nil {
1265
1276
return nil , err
1266
1277
}
@@ -1280,7 +1291,7 @@ func (w *Client) MakeProtonWgFrom(fromConfigJson []byte, allServersFilePath stri
1280
1291
return nil , err
1281
1292
}
1282
1293
1283
- err = a .assignConfig (& existingConf )
1294
+ err = a .restoreConfigFrom (& existingConf )
1284
1295
if err != nil {
1285
1296
return nil , err
1286
1297
}
@@ -1295,15 +1306,16 @@ func (w *Client) MakeProtonWgFrom(fromConfigJson []byte, allServersFilePath stri
1295
1306
return nil , err
1296
1307
}
1297
1308
1298
- err = a .refreshConf ()
1309
+ err = a .refreshWgConfig ()
1299
1310
if err != nil {
1300
1311
return nil , err
1301
1312
}
1302
1313
1303
1314
return a , nil
1304
1315
}
1305
1316
1306
- func (a * ProtonClient ) assignConfig (conf * ProtonWgConfig ) error {
1317
+ func (a * ProtonClient ) restoreConfigFrom (conf * ProtonWgConfig ) error {
1318
+ // top-level config
1307
1319
a .config = conf
1308
1320
1309
1321
// session info
@@ -1315,9 +1327,9 @@ func (a *ProtonClient) assignConfig(conf *ProtonWgConfig) error {
1315
1327
a .creds .accessToken = conf .CredsAccessToken
1316
1328
a .creds .refreshToken = conf .CredsRefreshToken
1317
1329
// cert info
1318
- a .cert .SerialNumber = conf .CertSerialNumber
1319
- a .cert .ExpirationTime = conf .CertExpTime
1320
- a .cert .RefreshTime = conf .CertRefreshTime
1330
+ a .cert .serialNumber = conf .CertSerialNumber
1331
+ a .cert .expirationTime = conf .CertExpTime
1332
+ a .cert .refreshTime = conf .CertRefreshTime
1321
1333
1322
1334
protonLogicalsUpdateTime = time .Unix (conf .CreateTimestamp , 0 )
1323
1335
0 commit comments