add partnershipping mechanism
This commit is contained in:
@@ -26,6 +26,7 @@ type DHTRecord struct {
|
||||
PeerID string
|
||||
PubKey []byte
|
||||
URL string
|
||||
NATSUrl string
|
||||
Signature []byte
|
||||
ExpiryDate time.Time
|
||||
}
|
||||
@@ -63,20 +64,19 @@ func Init(ctx context.Context) (*DHTService, error) {
|
||||
return nil, err
|
||||
}
|
||||
singletonService = service
|
||||
for {
|
||||
if VerifyPubWithPriv() {
|
||||
o := oclib.GetConfLoader()
|
||||
if _, err := singletonService.ClaimName(context.Background(), o.GetStringDefault("NAME", "local"), o.GetStringDefault("HOSTNAME", "http://localhost")); err == nil {
|
||||
go func() {
|
||||
for {
|
||||
singletonService.RefreshName(context.Background())
|
||||
time.Sleep(59 * time.Minute)
|
||||
}
|
||||
}()
|
||||
}
|
||||
if VerifyPubWithPriv() {
|
||||
if _, err := singletonService.ClaimName(context.Background(),
|
||||
conf.GetConfig().Name,
|
||||
conf.GetConfig().Hostname); err == nil {
|
||||
go func() {
|
||||
for {
|
||||
singletonService.RefreshName(context.Background())
|
||||
time.Sleep(59 * time.Minute)
|
||||
}
|
||||
}()
|
||||
}
|
||||
break
|
||||
}
|
||||
|
||||
return service, service.DHT.Bootstrap(ctx)
|
||||
}
|
||||
|
||||
@@ -106,6 +106,7 @@ func (d *DHTService) ClaimName(
|
||||
rec.Signature = sig
|
||||
|
||||
rec.URL = endPoint
|
||||
rec.NATSUrl = oclib.GetConfig().NATSUrl
|
||||
rec.State = peer.ONLINE.EnumIndex()
|
||||
rec.ExpiryDate = expiry
|
||||
|
||||
@@ -145,6 +146,7 @@ func (d *DHTService) ClaimName(
|
||||
PeerID: d.Host.ID().String(),
|
||||
PublicKey: pubStr,
|
||||
Url: endPoint,
|
||||
NATSUrl: oclib.GetConfig().NATSUrl,
|
||||
WalletAddress: "my-wallet",
|
||||
}
|
||||
if founded, _, err := access.Search(nil, fmt.Sprintf("%v", peer.SELF.EnumIndex()), false); err != nil || len(founded) == 0 {
|
||||
@@ -200,6 +202,7 @@ func (d *DHTService) treatPeer(ctx context.Context, key string, data []byte) (*p
|
||||
PeerID: rec.PeerID,
|
||||
PublicKey: pubStr,
|
||||
Url: rec.URL,
|
||||
NATSUrl: rec.NATSUrl,
|
||||
}
|
||||
access := peer.NewAccessor(&tools.APIRequest{Admin: true})
|
||||
if now.After(rec.ExpiryDate) {
|
||||
@@ -291,7 +294,6 @@ func (d *DHTService) existsDHT(ctx context.Context) (*DHTRecord, error) {
|
||||
Name: rec.Name,
|
||||
PeerID: rec.PeerID,
|
||||
PubKey: rec.PubKey,
|
||||
URL: rec.URL,
|
||||
}
|
||||
payload, _ := json.Marshal(dht)
|
||||
|
||||
@@ -325,6 +327,7 @@ func (d *DHTService) RefreshName( // peer should regulary refresh your host to n
|
||||
PeerID: rec.PeerID,
|
||||
PublicKey: string(rec.PubKey),
|
||||
Url: rec.URL,
|
||||
NATSUrl: rec.NATSUrl,
|
||||
}
|
||||
if founded, _, err := access.Search(nil, rec.Name, false); err != nil || len(founded) == 0 {
|
||||
access.StoreOne(p)
|
||||
|
||||
Reference in New Issue
Block a user