add partnershipping mechanism

This commit is contained in:
mr
2026-01-23 08:07:17 +01:00
parent 24cb25c350
commit 9e4d31e797
6 changed files with 171 additions and 44 deletions

View File

@@ -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)