Refactor structs with some getters/setters - Peers part
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
@ -22,7 +22,7 @@ type Identity struct {
|
||||
Status string `json:"status,omitempty"`
|
||||
Peers PeerList `json:"peers,omitempty"`
|
||||
Devices PeerList `json:"devices,omitempty"`
|
||||
HiddenPeers [][]byte `json:"hiddend_peers,omitempty"`
|
||||
HiddenPeers [][]byte `json:"hidden_peers,omitempty"`
|
||||
Device meowlib.KeyPair `json:"device,omitempty"`
|
||||
KnownServers ServerList `json:"known_servers,omitempty"`
|
||||
MessageServers ServerList `json:"message_servers,omitempty"`
|
||||
@ -61,7 +61,7 @@ func (id *Identity) InvitePeer(MyName string, ContactName string, MessageServerI
|
||||
}
|
||||
}
|
||||
for _, i := range MessageServerIdxs {
|
||||
srv := &id.MessageServers.Servers[i].ServerData
|
||||
srv := id.MessageServers.Servers[i].GetServerCard()
|
||||
peer.MyContact.PullServers = append(peer.MyContact.PullServers, srv)
|
||||
}
|
||||
peer.MyContact.Name = MyName
|
||||
@ -97,8 +97,8 @@ func (id *Identity) AnswerInvitation(MyName string, ContactName string, MessageS
|
||||
}
|
||||
peer.Contact = *ReceivedContact
|
||||
for _, i := range MessageServerIdxs {
|
||||
srv := id.MessageServers.Servers[i].ServerData
|
||||
peer.MyContact.PullServers = append(peer.MyContact.PullServers, &srv)
|
||||
srv := id.MessageServers.Servers[i].GetServerCard()
|
||||
peer.MyContact.PullServers = append(peer.MyContact.PullServers, srv)
|
||||
}
|
||||
peer.MyContact.Name = MyName
|
||||
peer.MyContact.ContactPublicKey = peer.MyIdentity.Public
|
||||
@ -226,7 +226,7 @@ func (id *Identity) GetRequestJobs() []*RequestsJob {
|
||||
for _, server := range id.MessageServers.Servers {
|
||||
var rj RequestsJob
|
||||
rj.Server = server
|
||||
srvs[server.ServerData.GetUid()] = &rj
|
||||
srvs[server.GetServerCard().GetUid()] = &rj
|
||||
}
|
||||
// add ids to the map
|
||||
for _, peer := range id.Peers {
|
||||
|
@ -26,14 +26,14 @@ func ProcessForOutput(usermessage *meowlib.UserMessage, peer *Peer, servers *Ser
|
||||
srv = &servers.Servers[i]
|
||||
var toServerMessage meowlib.ToServerMessage
|
||||
toServerMessage.MatriochkaMessage.Data = lastmsg
|
||||
toServerMessage.MatriochkaMessage.Next.Url = servers.Servers[i+1].ServerData.Url
|
||||
toServerMessage.MatriochkaMessage.Next.PublicKey = servers.Servers[i+1].ServerData.PublicKey
|
||||
toServerMessage.MatriochkaMessage.Next.Url = servers.Servers[i+1].Url
|
||||
toServerMessage.MatriochkaMessage.Next.PublicKey = servers.Servers[i+1].PublicKey
|
||||
toServerMessage.MatriochkaMessage.Next.Delay = int32(servers.Servers[i+1].AllowedDelay)
|
||||
if trackingLookupKey != "" {
|
||||
toServerMessage.MatriochkaMessage.Next.Uuid = lastuuid // change tracking uuid at each server
|
||||
if i > 0 {
|
||||
toServerMessage.MatriochkaMessage.Prev.Url = servers.Servers[i-1].ServerData.Url
|
||||
toServerMessage.MatriochkaMessage.Prev.PublicKey = servers.Servers[i+1].ServerData.PublicKey
|
||||
toServerMessage.MatriochkaMessage.Prev.Url = servers.Servers[i-1].Url
|
||||
toServerMessage.MatriochkaMessage.Prev.PublicKey = servers.Servers[i+1].PublicKey
|
||||
toServerMessage.MatriochkaMessage.Prev.Delay = int32(servers.Servers[i-1].AllowedDelay)
|
||||
toServerMessage.MatriochkaMessage.Prev.Uuid = uuid.NewString()
|
||||
lastuuid = toServerMessage.MatriochkaMessage.Prev.Uuid
|
||||
|
@ -21,16 +21,21 @@ type Peer struct {
|
||||
MyAvatar string `json:"my_avatar,omitempty"`
|
||||
// Conversation []InternalMessage `json:"conversation,omitempty"`
|
||||
// My own keys for that peer
|
||||
MyIdentity meowlib.KeyPair `json:"my_identity,omitempty"`
|
||||
MyEncryptionKp meowlib.KeyPair `json:"my_encryption_kp,omitempty"`
|
||||
MyLookupKp meowlib.KeyPair `json:"my_lookup_kp,omitempty"`
|
||||
MyPullServers []meowlib.ServerCard `json:"my_pull_servers,omitempty"`
|
||||
MyContact meowlib.ContactCard `json:"my_contact,omitempty"`
|
||||
MyIdentity meowlib.KeyPair `json:"my_identity,omitempty"`
|
||||
MyEncryptionKp meowlib.KeyPair `json:"my_encryption_kp,omitempty"`
|
||||
MyLookupKp meowlib.KeyPair `json:"my_lookup_kp,omitempty"`
|
||||
MyPullServers []*meowlib.ServerCard `json:"my_pull_servers,omitempty"`
|
||||
MyContact meowlib.ContactCard `json:"my_contact,omitempty"` // todo : remove
|
||||
// Peer keys and infos
|
||||
Contact meowlib.ContactCard `json:"contact,omitempty"`
|
||||
InvitationId string `json:"invitation_id,omitempty"`
|
||||
InvitationUrl string `json:"invitation_url,omitempty"`
|
||||
InvitationExpiry time.Time `json:"invitation_expiry,omitempty"`
|
||||
Contact meowlib.ContactCard `json:"contact,omitempty"` // todo : remove
|
||||
ContactPublicKey string `json:"contact_public_key,omitempty"`
|
||||
ContactLookupKey string `json:"contact_lookup_key,omitempty"`
|
||||
ContactEncryption string `json:"contact_encryption,omitempty"`
|
||||
ContactPullServers []string `json:"contact_pull_servers,omitempty"`
|
||||
InvitationId string `json:"invitation_id,omitempty"`
|
||||
InvitationUrl string `json:"invitation_url,omitempty"`
|
||||
InvitationMessage string `json:"invitation_message,omitempty"`
|
||||
InvitationExpiry time.Time `json:"invitation_expiry,omitempty"`
|
||||
// Internal management attributes
|
||||
Visible bool `json:"visible,omitempty"`
|
||||
VisiblePassword string `json:"visible_password,omitempty"`
|
||||
@ -41,9 +46,39 @@ type Peer struct {
|
||||
DirectMode bool `json:"direct_mode,omitempty"`
|
||||
LastMessage time.Time `json:"last_message,omitempty"`
|
||||
DbIds []string `json:"db_ids,omitempty"`
|
||||
IsDevice bool `json:"is_device,omitempty"`
|
||||
dbPassword string
|
||||
}
|
||||
|
||||
//
|
||||
// getters and setters
|
||||
//
|
||||
|
||||
func (p *Peer) GetMyContact() *meowlib.ContactCard {
|
||||
var c meowlib.ContactCard
|
||||
c.ContactPublicKey = p.MyIdentity.Public
|
||||
c.LookupPublicKey = p.MyLookupKp.Public
|
||||
c.EncryptionPublicKey = p.MyEncryptionKp.Public
|
||||
c.PullServers = p.MyPullServers
|
||||
c.InvitationId = p.InvitationId
|
||||
c.InvitationMessage = p.InvitationMessage
|
||||
c.Name = p.MyName
|
||||
return &c
|
||||
}
|
||||
|
||||
func (p *Peer) GetContact() *meowlib.ContactCard {
|
||||
|
||||
var c meowlib.ContactCard
|
||||
c.ContactPublicKey = p.ContactPublicKey
|
||||
c.LookupPublicKey = p.ContactLookupKey
|
||||
c.EncryptionPublicKey = p.ContactEncryption
|
||||
// c.PullServers = meowlib.LoadServerCardsFromUids(p.ContactPullServers)
|
||||
c.InvitationId = p.InvitationId
|
||||
c.InvitationMessage = p.InvitationMessage
|
||||
c.Name = p.Name
|
||||
return &c
|
||||
}
|
||||
|
||||
//
|
||||
// Messages building
|
||||
//
|
||||
|
@ -17,28 +17,51 @@ import (
|
||||
// - Utility functions for packing/unpacking, encrypting/decrypting messages for server communication
|
||||
// - Server remote management if ManagerKp is available for that server
|
||||
type Server struct {
|
||||
ServerData meowlib.ServerCard `json:"server_data,omitempty"`
|
||||
Presence bool `json:"presence,omitempty"`
|
||||
LastCheck time.Time `json:"last_check,omitempty"`
|
||||
Uptime time.Duration `json:"uptime,omitempty"`
|
||||
UserKp meowlib.KeyPair `json:"user_kp,omitempty"`
|
||||
ManagerKp meowlib.KeyPair `json:"manager_kp,omitempty"`
|
||||
Country string `json:"country,omitempty"`
|
||||
AllowedDelay int `json:"allowed_delay,omitempty"`
|
||||
Backup bool `json:"backup,omitempty"`
|
||||
//ServerCard meowlib.ServerCard `json:"server_data,omitempty"`
|
||||
Name string `json:"name,omitempty"`
|
||||
Description string `json:"description,omitempty"`
|
||||
PublicKey string `json:"public_key,omitempty"`
|
||||
Url string `json:"url,omitempty"`
|
||||
Login string `json:"login,omitempty"`
|
||||
Password string `json:"password,omitempty"`
|
||||
Presence bool `json:"presence,omitempty"`
|
||||
LastCheck time.Time `json:"last_check,omitempty"`
|
||||
Uptime time.Duration `json:"uptime,omitempty"`
|
||||
UserKp meowlib.KeyPair `json:"user_kp,omitempty"`
|
||||
ManagerKp meowlib.KeyPair `json:"manager_kp,omitempty"`
|
||||
Country string `json:"country,omitempty"`
|
||||
AllowedDelay int `json:"allowed_delay,omitempty"`
|
||||
Backup bool `json:"backup,omitempty"`
|
||||
}
|
||||
|
||||
// CreateServerFromUrl creates a server from a basic url, ex : https://my.meowserver.example:8443/meow/
|
||||
func CreateServerFromUrl(url string) *Server {
|
||||
var is Server
|
||||
is.ServerData.Url = url
|
||||
is.Url = url
|
||||
return &is
|
||||
}
|
||||
|
||||
// GetServerCard returns a server card from a server
|
||||
func (ints *Server) GetServerCard() *meowlib.ServerCard {
|
||||
var sc meowlib.ServerCard
|
||||
sc.Name = ints.Name
|
||||
sc.PublicKey = ints.PublicKey
|
||||
sc.Description = ints.Description
|
||||
sc.Url = ints.Url
|
||||
sc.Login = ints.Login
|
||||
sc.Password = ints.Password
|
||||
return &sc
|
||||
}
|
||||
|
||||
// Create a server from a server card
|
||||
func CreateServerFromServerCard(server *meowlib.ServerCard) *Server {
|
||||
var is Server
|
||||
is.ServerData = *server
|
||||
is.Name = server.Name
|
||||
is.PublicKey = server.PublicKey
|
||||
is.Description = server.Description
|
||||
is.Url = server.Url
|
||||
is.Login = server.Login
|
||||
is.Password = server.Password
|
||||
is.UserKp = meowlib.NewKeyPair()
|
||||
return &is
|
||||
}
|
||||
@ -46,7 +69,7 @@ func CreateServerFromServerCard(server *meowlib.ServerCard) *Server {
|
||||
// AsymEncryptMessage prepares a message to send to a specific internal server
|
||||
func (ints *Server) AsymEncryptMessage(Message []byte) (*meowlib.EncryptedMessage, error) {
|
||||
var enc *meowlib.EncryptedMessage
|
||||
enc, err := meowlib.AsymEncryptAndSign(ints.ServerData.PublicKey, ints.UserKp.Private, Message)
|
||||
enc, err := meowlib.AsymEncryptAndSign(ints.PublicKey, ints.UserKp.Private, Message)
|
||||
if err != nil {
|
||||
fmt.Println(err.Error())
|
||||
return nil, err
|
||||
@ -56,7 +79,7 @@ func (ints *Server) AsymEncryptMessage(Message []byte) (*meowlib.EncryptedMessag
|
||||
|
||||
// AsymDecryptMessage reads a message from a specific internal server
|
||||
func (ints *Server) AsymDecryptMessage(Message []byte, Signature []byte) (DecryptedMessage []byte, err error) {
|
||||
DecryptedMessage, err = meowlib.AsymDecryptAndCheck(ints.UserKp.Private, ints.ServerData.PublicKey, Message, Signature)
|
||||
DecryptedMessage, err = meowlib.AsymDecryptAndCheck(ints.UserKp.Private, ints.PublicKey, Message, Signature)
|
||||
if err != nil {
|
||||
fmt.Println(err.Error())
|
||||
return nil, err
|
||||
|
@ -37,7 +37,7 @@ func (sl *ServerList) GetServerByIdx(idx int) (server *Server, err error) {
|
||||
// GetServerByPubkey returns a server from it's public key
|
||||
func (sl *ServerList) GetServerByPubkey(pubkey string) (filtered *Server) {
|
||||
for _, srv := range sl.Servers {
|
||||
if srv.ServerData.PublicKey == pubkey {
|
||||
if srv.PublicKey == pubkey {
|
||||
return &srv
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user