Commit 7a912bbd authored by Richer Maximilien's avatar Richer Maximilien

[c][p] Local ip probing for clients

- pAPI allow to send multiple IPs
- Rebuild of protobuf files with updated protoc
- Send client interface ips
- Remove user ip & port from mongo
- Fix uint port issue
parent a0fcc598
......@@ -262,29 +262,27 @@ var _Client_serviceDesc = grpc.ServiceDesc{
}
var fileDescriptor0 = []byte{
// 380 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x8c, 0x52, 0xed, 0xaa, 0xda, 0x40,
0x10, 0x35, 0x7e, 0x45, 0xa7, 0x51, 0xca, 0xe2, 0x8f, 0x90, 0x52, 0xb0, 0x41, 0x8a, 0xf4, 0x47,
0x04, 0xfb, 0x08, 0x5a, 0xb0, 0x94, 0x42, 0x49, 0xeb, 0x03, 0x6c, 0x37, 0x63, 0xbb, 0x10, 0xb3,
0xe9, 0xee, 0x5a, 0xf4, 0x35, 0xee, 0x0b, 0xdf, 0xbb, 0x99, 0x18, 0xaf, 0x72, 0xfd, 0x71, 0xff,
0x2c, 0x7b, 0x66, 0xce, 0x9e, 0x33, 0x67, 0x58, 0x78, 0x97, 0xed, 0x8c, 0x59, 0x54, 0x87, 0x58,
0xf0, 0x52, 0x2e, 0x44, 0x2e, 0xb1, 0xb0, 0x49, 0xa9, 0x95, 0x55, 0xac, 0xe3, 0x2a, 0xd1, 0xfb,
0x0b, 0xa3, 0x24, 0x46, 0x99, 0x73, 0xbb, 0x53, 0x7a, 0x5f, 0x73, 0xe2, 0x47, 0x0f, 0xfc, 0x95,
0x2a, 0x2c, 0x1e, 0x2d, 0xfb, 0x04, 0x6f, 0x35, 0x0a, 0x59, 0x56, 0x12, 0xdf, 0xf0, 0xb4, 0xe1,
0xe6, 0x6f, 0xe8, 0x4d, 0xbd, 0x79, 0x90, 0xbe, 0xa8, 0xb3, 0x19, 0x8c, 0x0c, 0x16, 0x19, 0xea,
0x86, 0xd8, 0x26, 0xe2, 0x6d, 0x91, 0x45, 0x30, 0x30, 0xf8, 0xef, 0x80, 0x85, 0xc0, 0xb0, 0x33,
0xed, 0xcc, 0x47, 0xe9, 0x05, 0xb3, 0x10, 0x7c, 0x23, 0xff, 0x14, 0xa8, 0x4d, 0xd8, 0x75, 0xad,
0x20, 0x6d, 0x20, 0x5b, 0xc2, 0x44, 0xb8, 0x91, 0x34, 0x17, 0x76, 0xad, 0xc4, 0x61, 0xef, 0x6c,
0xc9, 0xa2, 0x47, 0x16, 0x77, 0x7b, 0x34, 0x8f, 0x7b, 0xce, 0xed, 0x41, 0xe3, 0x76, 0xfb, 0x75,
0x1d, 0xf6, 0x1d, 0x79, 0x98, 0xde, 0x16, 0x19, 0x83, 0xae, 0x41, 0x9e, 0x87, 0x3e, 0x29, 0xd1,
0x3d, 0xe6, 0xe0, 0xff, 0xd0, 0x6a, 0x2f, 0x0d, 0xb2, 0x8f, 0xe0, 0x8b, 0x7a, 0x17, 0x94, 0xfb,
0xcd, 0x32, 0x48, 0xdc, 0xca, 0x92, 0xf3, 0x7e, 0xd2, 0xa6, 0xc9, 0x26, 0xd0, 0x93, 0x2e, 0xe6,
0x91, 0x42, 0x8f, 0xd2, 0x1a, 0x54, 0x81, 0x4a, 0x7e, 0xca, 0x15, 0xcf, 0x5c, 0xd6, 0x4a, 0xbf,
0x81, 0xf1, 0x77, 0x18, 0xfe, 0x6c, 0xe6, 0x78, 0xb5, 0xc9, 0x95, 0x5c, 0xfb, 0x56, 0xee, 0x03,
0xf4, 0x36, 0x98, 0xe7, 0xaa, 0xa2, 0xfc, 0x77, 0x0b, 0x93, 0xaa, 0x20, 0xa9, 0x61, 0xda, 0xc0,
0xe5, 0x83, 0x07, 0xfd, 0x15, 0xfd, 0x05, 0x96, 0x40, 0xf0, 0x4b, 0x23, 0xb7, 0x4d, 0xc8, 0xda,
0xee, 0x8c, 0xa2, 0x31, 0xa1, 0x2f, 0x5a, 0x2b, 0xbd, 0x52, 0x19, 0xc6, 0x2d, 0xb7, 0xfd, 0x31,
0xf1, 0x9f, 0x27, 0xae, 0x39, 0x17, 0x7c, 0xe7, 0xcd, 0x0c, 0x06, 0x6b, 0x69, 0x84, 0x72, 0xf6,
0x0c, 0xa8, 0x4b, 0x03, 0x46, 0x57, 0xf7, 0xb8, 0xf5, 0xbb, 0x4f, 0x5f, 0xee, 0xf3, 0x53, 0x00,
0x00, 0x00, 0xff, 0xff, 0xfe, 0x4f, 0xca, 0xea, 0xb5, 0x02, 0x00, 0x00,
// 348 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x84, 0x91, 0xcf, 0x4e, 0xea, 0x40,
0x14, 0xc6, 0xe9, 0xe5, 0x4f, 0xe1, 0xdc, 0xc2, 0x25, 0x93, 0x6b, 0x32, 0x41, 0x49, 0x48, 0xe3,
0x82, 0x55, 0x49, 0x70, 0xe9, 0x12, 0x4c, 0x30, 0x6e, 0x4c, 0x94, 0x07, 0x18, 0xa7, 0x07, 0x9d,
0xa4, 0x74, 0xea, 0xcc, 0x60, 0xe0, 0x35, 0x7c, 0x02, 0x1f, 0xd5, 0xe9, 0xa9, 0x45, 0x16, 0x26,
0x6e, 0x9a, 0x9e, 0x6f, 0xbe, 0xf3, 0xf5, 0xf7, 0x75, 0xe0, 0x3c, 0xdd, 0x58, 0x3b, 0x2b, 0x1f,
0x72, 0x26, 0x0a, 0x35, 0x93, 0x99, 0xc2, 0xdc, 0x25, 0x85, 0xd1, 0x4e, 0xb3, 0xa6, 0x57, 0x46,
0xe3, 0xa3, 0xa3, 0x20, 0x47, 0x91, 0x09, 0xb7, 0xd1, 0x66, 0x5b, 0x79, 0xe2, 0x8f, 0x00, 0xc2,
0x85, 0xce, 0x1d, 0xee, 0x1d, 0xe3, 0x30, 0x34, 0x28, 0x55, 0x51, 0x46, 0xdc, 0xe1, 0x61, 0x25,
0xec, 0x0b, 0x0f, 0x26, 0xc1, 0x34, 0x62, 0x67, 0xd0, 0xb7, 0x98, 0xa7, 0x68, 0x6a, 0xf9, 0x0f,
0xc9, 0x43, 0xe8, 0x5a, 0x7c, 0xdd, 0x61, 0x2e, 0x91, 0x37, 0x27, 0xcd, 0x69, 0x9f, 0xfd, 0x83,
0xd0, 0xaa, 0xe7, 0x1c, 0x8d, 0xe5, 0x2d, 0x2f, 0x44, 0xec, 0x02, 0xfe, 0x4b, 0x1f, 0x6f, 0x84,
0x74, 0x4b, 0x2d, 0x77, 0x5b, 0x1f, 0x4d, 0x01, 0xed, 0x63, 0xae, 0xb7, 0x0b, 0xb7, 0x33, 0xb8,
0x5e, 0xdf, 0x2e, 0x79, 0xc7, 0xcb, 0x3d, 0x16, 0x41, 0xcb, 0xa2, 0xc8, 0x78, 0x58, 0x9a, 0xe2,
0x15, 0x84, 0xf7, 0x46, 0x6f, 0x95, 0x45, 0x36, 0x86, 0x50, 0x56, 0xb0, 0x04, 0xf6, 0x77, 0x1e,
0x25, 0xbe, 0x53, 0x52, 0x17, 0xe8, 0x43, 0x5b, 0x79, 0xca, 0x3d, 0xe1, 0x11, 0x4c, 0x21, 0x0e,
0x99, 0x16, 0xa9, 0xa7, 0x2b, 0x93, 0xae, 0xa1, 0xf7, 0x50, 0x7f, 0xee, 0xb7, 0xac, 0x93, 0x65,
0x2a, 0x1b, 0x73, 0x68, 0xaf, 0x30, 0xcb, 0x74, 0x79, 0xf2, 0xe6, 0x0b, 0x2a, 0x9d, 0xd3, 0x62,
0x6f, 0xfe, 0x1e, 0x40, 0x67, 0x41, 0x3f, 0x9e, 0x25, 0x10, 0x3d, 0x1a, 0x14, 0xae, 0x06, 0xae,
0x32, 0xbf, 0xa6, 0xd1, 0x80, 0xa6, 0x1b, 0x63, 0xb4, 0x59, 0xe8, 0x14, 0xe3, 0x06, 0x9b, 0xc3,
0x80, 0xfc, 0xdf, 0x58, 0x95, 0xe7, 0x38, 0xff, 0xb0, 0x73, 0x09, 0xdd, 0xa5, 0xb2, 0x52, 0x7b,
0x08, 0x06, 0x74, 0x4a, 0x5c, 0xa3, 0x93, 0xf7, 0xb8, 0xf1, 0xd4, 0xa1, 0xfb, 0xbd, 0xfa, 0x0c,
0x00, 0x00, 0xff, 0xff, 0x64, 0x27, 0xd3, 0xc2, 0x22, 0x02, 0x00, 0x00,
}
......@@ -103,9 +103,15 @@ func NewSignatureManager(passphrase string, c *contract.JSON) (*SignatureManager
// ConnectToPeers tries to fetch the list of users for this contract, and tries to establish a connection to each peer.
func (m *SignatureManager) ConnectToPeers() error {
localIps, err := net.ExternalInterfaceAddr()
if err != nil {
return err
}
stream, err := m.platform.JoinSignature(context.Background(), &pAPI.JoinSignatureRequest{
ContractUuid: m.contract.UUID,
Port: uint32(viper.GetInt("local_port")),
Ip: localIps,
})
if err != nil {
return err
......@@ -142,11 +148,19 @@ func (m *SignatureManager) addPeer(user *pAPI.User) (ready bool, err error) {
return // Ignore if unknown
}
addrPort := user.Ip + ":" + strconv.Itoa(int(user.Port))
m.OnSignerStatusUpdate(user.Email, StatusConnecting, addrPort)
var conn *grpc.ClientConn
for _, ip := range user.Ip {
addrPort := ip + ":" + strconv.Itoa(int(user.Port))
m.OnSignerStatusUpdate(user.Email, StatusConnecting, addrPort)
// This is an certificate authentificated TLS connection
conn, err = net.Connect(addrPort, m.auth.Cert, m.auth.Key, m.auth.CA, user.KeyHash)
if err == nil {
break
}
}
// This is an certificate authentificated TLS connection
conn, err := net.Connect(addrPort, m.auth.Cert, m.auth.Key, m.auth.CA, user.KeyHash)
if err != nil {
m.OnSignerStatusUpdate(user.Email, StatusError, err.Error())
return false, err
......
......@@ -135,16 +135,15 @@ var _Demonstrator_serviceDesc = grpc.ServiceDesc{
}
var fileDescriptor0 = []byte{
// 167 bytes of a gzipped FileDescriptorProto
// 159 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xe2, 0x52, 0x4c, 0x49, 0x2b, 0x2e,
0xd6, 0x07, 0x11, 0x29, 0xfa, 0x89, 0x05, 0x99, 0xfa, 0x29, 0xa9, 0xb9, 0xf9, 0x79, 0xc5, 0x25,
0x45, 0x89, 0x25, 0xf9, 0x45, 0x7a, 0x05, 0x45, 0xf9, 0x25, 0xf9, 0x42, 0xcc, 0x40, 0x71, 0xa5,
0x50, 0x2e, 0x66, 0x9f, 0xfc, 0x74, 0x21, 0x19, 0x2e, 0xce, 0x92, 0xcc, 0xdc, 0xd4, 0xe2, 0x92,
0xc4, 0xdc, 0x02, 0x09, 0x46, 0x05, 0x46, 0x0d, 0xe6, 0x20, 0x84, 0x80, 0x90, 0x1c, 0x17, 0x57,
0x66, 0x4a, 0x6a, 0x5e, 0x49, 0x66, 0x5a, 0x66, 0x6a, 0x91, 0x04, 0x13, 0x50, 0x9a, 0x33, 0x08,
0x49, 0x44, 0x48, 0x80, 0x8b, 0x39, 0x27, 0x3f, 0x5d, 0x82, 0x19, 0x2c, 0x01, 0x62, 0x2a, 0xb1,
0x72, 0x31, 0x3b, 0x26, 0x67, 0x1b, 0xe9, 0x73, 0xf1, 0xb8, 0x20, 0x59, 0x2c, 0x24, 0xcf, 0xc5,
0x1e, 0x9c, 0x9a, 0x97, 0x02, 0xb2, 0x91, 0x43, 0x0f, 0x68, 0xbd, 0x1e, 0x90, 0x25, 0x05, 0x61,
0x01, 0x95, 0x2b, 0x31, 0x24, 0xb1, 0x81, 0x9d, 0x66, 0x0c, 0x08, 0x00, 0x00, 0xff, 0xff, 0xc3,
0xc3, 0x86, 0x7b, 0xbf, 0x00, 0x00, 0x00,
0x45, 0x89, 0x25, 0xf9, 0x45, 0x7a, 0x05, 0x45, 0xf9, 0x25, 0xf9, 0x42, 0xcc, 0x40, 0x71, 0x25,
0x4b, 0x2e, 0x66, 0x9f, 0xfc, 0x74, 0x21, 0x41, 0x2e, 0xce, 0x92, 0xcc, 0xdc, 0xd4, 0xe2, 0x92,
0xc4, 0xdc, 0x02, 0x09, 0x46, 0x05, 0x46, 0x0d, 0x66, 0x21, 0x21, 0x2e, 0xae, 0xcc, 0x94, 0xd4,
0xbc, 0x92, 0xcc, 0xb4, 0xcc, 0xd4, 0x22, 0x09, 0x26, 0xa0, 0x18, 0xa7, 0x10, 0x37, 0x17, 0x73,
0x4e, 0x7e, 0xba, 0x04, 0x33, 0x88, 0xa3, 0xc4, 0xca, 0xc5, 0xec, 0x98, 0x9c, 0x6d, 0xa4, 0xcf,
0xc5, 0xe3, 0x82, 0x64, 0xb8, 0x90, 0x3c, 0x17, 0x7b, 0x70, 0x6a, 0x5e, 0x0a, 0xc8, 0x54, 0x0e,
0x3d, 0xa0, 0x15, 0x7a, 0x40, 0x96, 0x14, 0x84, 0x05, 0x54, 0xae, 0xc4, 0x90, 0xc4, 0x06, 0xb6,
0xde, 0x18, 0x10, 0x00, 0x00, 0xff, 0xff, 0x16, 0xf4, 0xd0, 0x37, 0xa3, 0x00, 0x00, 0x00,
}
......@@ -192,6 +192,8 @@ type JoinSignatureRequest struct {
ContractUuid string `protobuf:"bytes,1,opt,name=contractUuid" json:"contractUuid,omitempty"`
// / The open port for P2P communication of the client
Port uint32 `protobuf:"varint,2,opt,name=port" json:"port,omitempty"`
// / The offered ips for P2P communication of the client
Ip []string `protobuf:"bytes,3,rep,name=ip" json:"ip,omitempty"`
}
func (m *JoinSignatureRequest) Reset() { *m = JoinSignatureRequest{} }
......@@ -235,7 +237,7 @@ type User struct {
KeyHash []byte `protobuf:"bytes,1,opt,name=keyHash,proto3" json:"keyHash,omitempty"`
Email string `protobuf:"bytes,2,opt,name=email" json:"email,omitempty"`
// / The IP offered by the user for P2P
Ip string `protobuf:"bytes,3,opt,name=ip" json:"ip,omitempty"`
Ip []string `protobuf:"bytes,3,rep,name=ip" json:"ip,omitempty"`
// / The port offered by the user for P2P
Port uint32 `protobuf:"varint,4,opt,name=port" json:"port,omitempty"`
}
......@@ -620,51 +622,47 @@ var _Platform_serviceDesc = grpc.ServiceDesc{
}
var fileDescriptor0 = []byte{
// 723 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x94, 0x55, 0xef, 0x6e, 0xd3, 0x30,
0x10, 0x6f, 0xda, 0xac, 0x7f, 0xae, 0x6b, 0x17, 0xb9, 0x03, 0x42, 0xa5, 0xa1, 0xc9, 0x42, 0x62,
0x42, 0xa8, 0x9d, 0x8a, 0x04, 0x82, 0x6f, 0x5d, 0xa9, 0xb6, 0xa1, 0x51, 0x26, 0xb7, 0x05, 0x89,
0x6f, 0x21, 0xf1, 0xd6, 0xb0, 0x36, 0x29, 0xb1, 0x2b, 0xb4, 0x6f, 0x3c, 0x02, 0x0f, 0xc3, 0x9b,
0xf0, 0x3e, 0x80, 0xed, 0xc4, 0x69, 0x52, 0x2a, 0xa4, 0xf5, 0x43, 0xea, 0x3b, 0x9f, 0x7f, 0x77,
0xf7, 0xf3, 0xfd, 0x12, 0x38, 0xf0, 0xae, 0x18, 0xeb, 0xca, 0xc7, 0xb2, 0xeb, 0x2c, 0xfd, 0xee,
0x72, 0xee, 0xf0, 0xab, 0x30, 0x5a, 0x74, 0x96, 0x51, 0xc8, 0x43, 0x54, 0x12, 0x3e, 0xdc, 0x87,
0x3d, 0x42, 0xaf, 0x7d, 0xc6, 0x69, 0x44, 0xe8, 0xd7, 0x15, 0x65, 0x1c, 0xed, 0xc3, 0x0e, 0x5d,
0x38, 0xfe, 0xdc, 0x36, 0x0e, 0x8d, 0xa3, 0x1a, 0x89, 0x0d, 0x64, 0x43, 0x25, 0x8a, 0x03, 0xec,
0xa2, 0xf2, 0x6b, 0x13, 0xff, 0x34, 0xa0, 0x36, 0x8c, 0xa2, 0x30, 0x1a, 0x84, 0x1e, 0x45, 0x4f,
0xc0, 0x74, 0xc5, 0xbf, 0x3a, 0xdc, 0xec, 0xb5, 0x3a, 0x22, 0x49, 0x27, 0xdd, 0xed, 0xc8, 0x07,
0x51, 0x01, 0x12, 0x70, 0x41, 0x19, 0x73, 0xae, 0xa9, 0x06, 0x4c, 0x4c, 0xec, 0x81, 0xa9, 0xa0,
0xea, 0x50, 0x19, 0x4f, 0x07, 0x83, 0xe1, 0x78, 0x6c, 0x15, 0x10, 0x40, 0xf9, 0x7c, 0xf4, 0xa1,
0x4f, 0x4e, 0x2d, 0x43, 0x6e, 0x9c, 0xf4, 0xdf, 0xf4, 0xa7, 0x93, 0x33, 0xab, 0x28, 0x8d, 0x8f,
0x7d, 0x32, 0x3a, 0x1f, 0x9d, 0x5a, 0x25, 0xd4, 0x92, 0x51, 0x93, 0x21, 0x21, 0xd6, 0x1f, 0xfd,
0x33, 0x44, 0x43, 0x95, 0xc9, 0xf9, 0xbb, 0xe1, 0xfb, 0xe9, 0xc4, 0xfa, 0x9d, 0x7a, 0xf1, 0x2b,
0xa8, 0xf7, 0x57, 0x7c, 0xf6, 0xff, 0xae, 0x85, 0x97, 0x87, 0x37, 0x34, 0x48, 0x4a, 0x8c, 0x0d,
0x7c, 0x0c, 0x4d, 0x4d, 0x1a, 0xf5, 0xa6, 0x8c, 0x46, 0xe8, 0x11, 0x80, 0x3b, 0xf7, 0x69, 0xc0,
0x07, 0x34, 0xe2, 0x09, 0x44, 0xc6, 0x83, 0x2b, 0xb0, 0x33, 0x5c, 0x2c, 0xf9, 0x2d, 0xfe, 0x06,
0xad, 0xcb, 0x90, 0xf1, 0x41, 0x18, 0xf0, 0xc8, 0x71, 0xb9, 0xce, 0x8e, 0xc0, 0x9c, 0x39, 0x6c,
0xa6, 0x4e, 0xee, 0x12, 0xb5, 0x46, 0x6d, 0xa8, 0x5e, 0xf9, 0x73, 0x1a, 0x38, 0x0b, 0xcd, 0x50,
0x6a, 0xa3, 0xfb, 0x50, 0x66, 0xfe, 0x75, 0x40, 0x23, 0xbb, 0x74, 0x58, 0x12, 0x3b, 0x89, 0x25,
0x49, 0x75, 0xc3, 0xc5, 0x42, 0xa4, 0xb5, 0xcd, 0x98, 0xd4, 0xc4, 0xc4, 0x47, 0x80, 0x4e, 0xe9,
0xb6, 0xbc, 0xab, 0x95, 0xef, 0x25, 0x15, 0xab, 0x35, 0xbe, 0x80, 0xaa, 0x0e, 0x43, 0xcf, 0xa0,
0x46, 0xf5, 0xe5, 0xa9, 0xa0, 0x7a, 0xaf, 0x99, 0xbf, 0x52, 0xb2, 0x0e, 0x90, 0x68, 0x5f, 0x58,
0x18, 0x93, 0x25, 0xba, 0x90, 0x6b, 0x3c, 0x82, 0xfd, 0xb7, 0xa1, 0x1f, 0x8c, 0x45, 0x7d, 0x0e,
0x5f, 0x45, 0x54, 0x67, 0xc6, 0xb0, 0xeb, 0x26, 0x59, 0xa6, 0xeb, 0x0a, 0x72, 0x3e, 0x89, 0xb7,
0x0c, 0xa3, 0x78, 0xe0, 0x1a, 0x44, 0xad, 0xf1, 0x77, 0x03, 0x1a, 0x92, 0x72, 0x51, 0x62, 0x40,
0x5d, 0x4e, 0xbd, 0x3b, 0xd6, 0xb8, 0x99, 0xb7, 0xb8, 0x25, 0xef, 0x81, 0x60, 0x85, 0x29, 0x6e,
0x25, 0x58, 0x4d, 0x81, 0xc9, 0x9c, 0x44, 0xb9, 0xf1, 0x27, 0x30, 0xd5, 0xa5, 0x0b, 0xb2, 0x6f,
0xe8, 0xed, 0xd9, 0xfa, 0xde, 0xb4, 0xb9, 0x1e, 0xa6, 0x62, 0x76, 0x98, 0x9a, 0x50, 0xf4, 0x97,
0x0a, 0xb4, 0x46, 0xc4, 0x2a, 0x6d, 0xcf, 0xcc, 0xb4, 0xf7, 0x02, 0x2c, 0x42, 0x1d, 0xef, 0x56,
0xf2, 0x75, 0x07, 0xaa, 0xf0, 0x2f, 0x03, 0xf6, 0x2e, 0x9c, 0x55, 0xe0, 0xce, 0x52, 0xa6, 0xef,
0x48, 0xcc, 0x63, 0x68, 0x30, 0x7d, 0x34, 0xc3, 0x4c, 0xde, 0x29, 0x6b, 0xf1, 0x42, 0x77, 0x25,
0x47, 0x4a, 0x35, 0x5e, 0x52, 0x8d, 0xe7, 0x7c, 0x59, 0x5e, 0x4c, 0x31, 0x9d, 0x19, 0x5e, 0xc4,
0x48, 0x33, 0xd9, 0x54, 0xe0, 0x52, 0x7b, 0x47, 0x6c, 0x35, 0x48, 0x6a, 0x4b, 0x36, 0x18, 0x75,
0xe6, 0x76, 0x39, 0x1e, 0x1e, 0xb9, 0xee, 0xfd, 0x28, 0x41, 0xf5, 0x32, 0x79, 0x6b, 0xa1, 0x1e,
0x54, 0xb5, 0xea, 0xd0, 0xbe, 0xea, 0x63, 0xe3, 0xcd, 0xd5, 0xde, 0xe8, 0x0e, 0x17, 0x50, 0x17,
0x4c, 0x29, 0x72, 0x64, 0xa9, 0x9d, 0x8c, 0xde, 0xdb, 0xad, 0x1c, 0x42, 0x2c, 0x63, 0x71, 0xe0,
0x29, 0xc0, 0x34, 0x88, 0x74, 0x1a, 0x88, 0x01, 0xa5, 0x72, 0xb7, 0x80, 0xbf, 0x86, 0xdd, 0xac,
0x96, 0x91, 0xad, 0x22, 0xb6, 0xc8, 0x7b, 0xcb, 0xd9, 0x97, 0x50, 0xcf, 0xc8, 0x11, 0x3d, 0x50,
0x01, 0xff, 0x0a, 0xb4, 0xdd, 0x50, 0x1b, 0xda, 0x2b, 0x0e, 0x9e, 0x40, 0x23, 0xa7, 0x27, 0xf4,
0x50, 0x45, 0x6c, 0xd3, 0x58, 0x1b, 0xa5, 0x93, 0x9b, 0xaa, 0x05, 0x17, 0x8e, 0x0d, 0x51, 0x78,
0x2d, 0x1d, 0x32, 0x74, 0x2f, 0x21, 0x22, 0x3f, 0x74, 0xed, 0x98, 0xe1, 0x8d, 0x91, 0xc2, 0x85,
0xcf, 0x65, 0xf5, 0xf1, 0x78, 0xfe, 0x37, 0x00, 0x00, 0xff, 0xff, 0xdb, 0xb0, 0xef, 0x13, 0x5d,
0x06, 0x00, 0x00,
// 666 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x8c, 0x54, 0x5d, 0x6f, 0xda, 0x4a,
0x10, 0xc5, 0xc1, 0xe1, 0x63, 0xc0, 0xc4, 0x5a, 0x88, 0xe2, 0x8b, 0x74, 0xa5, 0xdc, 0xd5, 0x7d,
0x88, 0xee, 0x95, 0xa0, 0xa5, 0x0f, 0x95, 0xda, 0x97, 0x12, 0x4a, 0x93, 0x54, 0x6d, 0x1a, 0x19,
0x48, 0x9f, 0x5d, 0x7b, 0x13, 0xdc, 0x60, 0xaf, 0xbb, 0xbb, 0x7e, 0xc8, 0xbf, 0xa8, 0xfa, 0x1f,
0xfa, 0x37, 0xdb, 0xee, 0xae, 0x3f, 0x0a, 0x94, 0x56, 0xe1, 0x01, 0xb4, 0x3b, 0x33, 0x67, 0xce,
0x9c, 0x3d, 0x03, 0xfc, 0x1d, 0xdc, 0x70, 0x3e, 0x54, 0x5f, 0xc9, 0xd0, 0x4b, 0xc2, 0x61, 0xb2,
0xf2, 0xc4, 0x0d, 0x65, 0xd1, 0x20, 0x61, 0x54, 0x50, 0x54, 0x95, 0x77, 0xf8, 0x31, 0x1c, 0xb8,
0xe4, 0x36, 0xe4, 0x82, 0x30, 0x97, 0x7c, 0x4a, 0x09, 0x17, 0xc8, 0x82, 0x7d, 0x12, 0x79, 0xe1,
0xca, 0x31, 0x8e, 0x8d, 0x93, 0x26, 0x3a, 0x80, 0x3a, 0xcb, 0x22, 0xce, 0x9e, 0xba, 0xc0, 0x5f,
0x0d, 0x68, 0x4e, 0x19, 0xa3, 0x6c, 0x42, 0x03, 0x82, 0xfe, 0x01, 0xd3, 0x97, 0xbf, 0x3a, 0xb9,
0x33, 0xea, 0x0e, 0x24, 0xe8, 0xa0, 0x8c, 0x0e, 0x74, 0x8a, 0x44, 0x88, 0x08, 0xe7, 0xde, 0x2d,
0xc9, 0x11, 0x02, 0x30, 0x75, 0xa0, 0x05, 0xf5, 0xd9, 0x62, 0x32, 0x99, 0xce, 0x66, 0x76, 0x05,
0x01, 0xd4, 0x2e, 0x2e, 0xaf, 0xc7, 0xee, 0x99, 0x6d, 0xa8, 0xc0, 0xe9, 0xf8, 0xe5, 0x78, 0x31,
0x3f, 0xb7, 0xf7, 0xd4, 0xe1, 0xfd, 0xd8, 0xbd, 0xbc, 0xb8, 0x3c, 0xb3, 0xab, 0xa8, 0xab, 0xb2,
0xe6, 0x53, 0xd7, 0xb5, 0xbf, 0x17, 0x1f, 0x03, 0xf5, 0xa0, 0x3e, 0xbf, 0x78, 0x3b, 0x7d, 0xb7,
0x98, 0xdb, 0xdf, 0xca, 0x5b, 0xfc, 0x3f, 0xb4, 0xc6, 0xa9, 0x58, 0xfe, 0x66, 0x2c, 0x79, 0x14,
0xf4, 0x8e, 0xc4, 0x39, 0xa5, 0x7f, 0xa1, 0x53, 0xe8, 0x40, 0x82, 0x05, 0x27, 0x0c, 0x49, 0x42,
0xfe, 0x2a, 0x24, 0xb1, 0x98, 0x10, 0x26, 0xb2, 0x22, 0x5c, 0x87, 0xfd, 0x69, 0x94, 0x88, 0x7b,
0x7c, 0x0d, 0xdd, 0x2b, 0xca, 0xc5, 0x84, 0xc6, 0x82, 0x79, 0xbe, 0x28, 0x7a, 0xb4, 0xc1, 0x5c,
0x7a, 0x7c, 0xa9, 0xb3, 0xdb, 0xc8, 0x86, 0xc6, 0x4d, 0xb8, 0x22, 0xb1, 0x17, 0xe5, 0x83, 0xa3,
0x0e, 0xd4, 0x78, 0x78, 0x1b, 0x13, 0xe6, 0x54, 0x8f, 0xab, 0x99, 0xb6, 0x3e, 0x8d, 0x22, 0xd9,
0xc4, 0x31, 0x75, 0x03, 0x0c, 0xe8, 0x8c, 0xec, 0x82, 0x4d, 0xd3, 0x30, 0xc8, 0x49, 0x3c, 0x87,
0x46, 0x91, 0x20, 0xd5, 0x6f, 0x92, 0x42, 0x6c, 0x1d, 0x6e, 0x8d, 0x3a, 0x9b, 0x4f, 0xa0, 0x8a,
0x3f, 0x72, 0x9a, 0xcd, 0xd9, 0xc6, 0xaf, 0xa0, 0xf7, 0x9a, 0x86, 0xf1, 0x4c, 0xb2, 0xf0, 0x44,
0xca, 0x48, 0xd1, 0xa2, 0x07, 0x6d, 0x3f, 0x07, 0x5d, 0x94, 0xad, 0x54, 0x6d, 0x42, 0x59, 0xf6,
0xf0, 0x96, 0x14, 0x64, 0x2f, 0x4c, 0x32, 0xe6, 0xd8, 0x03, 0x4b, 0xa9, 0x24, 0x89, 0xc4, 0xc4,
0x17, 0x24, 0x78, 0x08, 0x93, 0xed, 0x1e, 0x99, 0x26, 0x47, 0x72, 0x38, 0xae, 0x15, 0x51, 0x35,
0x4d, 0x5d, 0xa3, 0xa0, 0xf1, 0x0b, 0x30, 0xf5, 0x43, 0x48, 0x91, 0xee, 0xc8, 0xfd, 0xf9, 0x4f,
0x5d, 0xcb, 0x97, 0xcc, 0x00, 0xd6, 0x68, 0x95, 0x84, 0x95, 0x9a, 0x16, 0x3e, 0x01, 0xdb, 0x25,
0x5e, 0x70, 0xaf, 0xa6, 0xfd, 0xe3, 0xa0, 0xf8, 0x8b, 0x01, 0x07, 0x6f, 0xbc, 0x34, 0xf6, 0x97,
0xa5, 0x32, 0x0f, 0x99, 0xe8, 0x10, 0x2c, 0x5e, 0xe4, 0xaf, 0x8d, 0x24, 0x7b, 0x04, 0xd4, 0x4f,
0xd5, 0xbb, 0x6a, 0xda, 0x55, 0x4d, 0x7b, 0x6d, 0x0e, 0x53, 0x92, 0xd5, 0xfe, 0xe0, 0x8a, 0x55,
0xec, 0x13, 0x67, 0x5f, 0xde, 0x58, 0x8a, 0x3e, 0x27, 0xde, 0xca, 0xa9, 0xa9, 0x82, 0xd1, 0xe7,
0x2a, 0x34, 0xae, 0xf2, 0x9d, 0x45, 0x23, 0x68, 0x14, 0x06, 0x45, 0x3d, 0x4d, 0x63, 0x6b, 0x6f,
0xfb, 0x5b, 0xe4, 0x70, 0x05, 0x0d, 0xc1, 0x54, 0x1b, 0x80, 0x6c, 0x1d, 0x59, 0x5b, 0x86, 0x7e,
0x77, 0x03, 0x21, 0x73, 0xbc, 0x2c, 0xf8, 0x0f, 0x60, 0x11, 0xb3, 0xa2, 0x0d, 0x64, 0x80, 0xca,
0xf0, 0x3b, 0xc0, 0x9f, 0x41, 0x7b, 0x7d, 0x05, 0x90, 0xa3, 0x33, 0x76, 0x6c, 0xc5, 0x8e, 0xda,
0xa7, 0xd0, 0x5a, 0xb3, 0x39, 0x3a, 0xd2, 0x09, 0xbf, 0x1a, 0xbf, 0x6f, 0xe9, 0x40, 0x71, 0x2b,
0x0b, 0x4f, 0xc1, 0xda, 0xb0, 0x2f, 0xfa, 0x4b, 0x67, 0xec, 0xb2, 0x74, 0x1f, 0x95, 0x56, 0x2a,
0x5d, 0x8a, 0x2b, 0x8f, 0x0c, 0x49, 0xbc, 0x59, 0xba, 0x02, 0x1d, 0xe6, 0x42, 0x6c, 0xba, 0xa4,
0x9f, 0x29, 0xbc, 0xe5, 0x08, 0x5c, 0xf9, 0x50, 0xd3, 0x7f, 0x9d, 0x4f, 0x7e, 0x04, 0x00, 0x00,
0xff, 0xff, 0x9e, 0x01, 0x0b, 0x56, 0x5b, 0x05, 0x00, 0x00,
}
......@@ -101,6 +101,8 @@ message JoinSignatureRequest {
string contractUuid = 1;
/// The open port for P2P communication of the client
uint32 port = 2;
/// The offered ips for P2P communication of the client
repeated string ip = 3;
}
/// UserConnected is emitted by the platform to the client to announce a new client connection, through a stream.
......@@ -120,7 +122,7 @@ message User {
bytes keyHash = 1;
string email = 2;
/// The IP offered by the user for P2P
string ip = 3;
repeated string ip = 3;
/// The port offered by the user for P2P
uint32 port = 4;
}
......
package contract
import (
n "net"
"time"
"dfss/auth"
......@@ -21,7 +20,7 @@ import (
// There is no timeout, this function will shut down on stream disconnection or on error.
func JoinSignature(db *mgdb.MongoManager, rooms *common.WaitingGroupMap, in *api.JoinSignatureRequest, stream api.Platform_JoinSignatureServer) {
ctx := stream.Context()
state, addr, _ := net.GetTLSState(&ctx)
state, _, _ := net.GetTLSState(&ctx)
hash := auth.GetCertificateHash(state.VerifiedChains[0][0])
if !checkJoinSignatureRequest(db, &stream, in.ContractUuid, hash) {
......@@ -42,11 +41,10 @@ func JoinSignature(db *mgdb.MongoManager, rooms *common.WaitingGroupMap, in *api
}
// Broadcast self identity
host, _, _ := n.SplitHostPort(addr.String())
rooms.Broadcast(roomID, &api.User{
KeyHash: hash,
Email: net.GetCN(&ctx),
Ip: host,
Ip: in.Ip,
Port: in.Port,
})
......
......@@ -36,7 +36,6 @@ func TestJoinSignature(t *testing.T) {
assert.Equal(t, api.ErrorCode_SUCCESS, user.ErrorCode.Code)
assert.Equal(t, contractID.Hex(), user.ContractUuid)
assert.Equal(t, "test@test.com", user.User.Email)
assert.Equal(t, "127.0.0.1", user.User.Ip)
assert.Equal(t, uint32(5050), user.User.Port)
}
......
......@@ -8,28 +8,16 @@ import (
"gopkg.in/mgo.v2/bson"
)
// ConnectionInfo : Internal connection information of a User
type ConnectionInfo struct {
IP string `key:"ip" bson:"ip"` // Ip of the connection
Port int `key:"port" bson:"port"` // Port of the connection
}
// NewConnectionInfo : Create a new ConnectionInfo
func NewConnectionInfo() *ConnectionInfo {
return &ConnectionInfo{}
}
// User : User stored in mongo
type User struct {
ID bson.ObjectId `key:"_id" bson:"_id"` // Internal id of a User
Email string `key:"email" bson:"email"` // Email of a User
Registration time.Time `key:"registration" bson:"registration"` // Time of registration of the User
Expiration time.Time `key:"expiration" bson:"expiration"` // Certificate expiration of the User
RegToken string `key:"regToken" bson:"regToken"` // Token used for registering a User
Csr string `key:"csr" bson:"csr"` // Certificate request at PEM format
Certificate string `key:"certificate" bson:"certificate"` // Certificate of the User
CertHash []byte `key:"certHash" bson:"certHash"` // Hash of the certificate
ConnInfo ConnectionInfo `key:"connInfo" bson:"connInfo"` // Information about the connection
ID bson.ObjectId `key:"_id" bson:"_id"` // Internal id of a User
Email string `key:"email" bson:"email"` // Email of a User
Registration time.Time `key:"registration" bson:"registration"` // Time of registration of the User
Expiration time.Time `key:"expiration" bson:"expiration"` // Certificate expiration of the User
RegToken string `key:"regToken" bson:"regToken"` // Token used for registering a User
Csr string `key:"csr" bson:"csr"` // Certificate request at PEM format
Certificate string `key:"certificate" bson:"certificate"` // Certificate of the User
CertHash []byte `key:"certHash" bson:"certHash"` // Hash of the certificate
}
// NewUser : Create a new User
......@@ -37,7 +25,6 @@ func NewUser() *User {
return &User{
ID: bson.NewObjectId(),
Registration: time.Now().UTC(),
ConnInfo: *NewConnectionInfo(),
}
}
......
......@@ -101,8 +101,6 @@ func TestMongoInsertUser(t *testing.T) {
user := entities.NewUser()
user.Email = "dfss1@mpcs.tk"
user.CertHash = []byte{0x01, 0x02}
user.ConnInfo.IP = "127.0.0.1"
user.ConnInfo.Port = 1111
user.Csr = "csr1"
user.RegToken = "regToken 1"
......@@ -137,14 +135,6 @@ func equalUsers(t *testing.T, user1, user2 *entities.User) {
t.Fatal("Csr doesn't match : received ", user1.Csr, " and ", user2.Csr)
}
if user1.ConnInfo.IP != user2.ConnInfo.IP {
t.Fatal("ConnInfo.IP doesn't match : received ", user1.ConnInfo.IP, " and ", user2.ConnInfo.IP)
}
if user1.ConnInfo.Port != user2.ConnInfo.Port {
t.Fatal("ConnInfo.Port doesn't match : received ", user1.ConnInfo.Port, " and ", user2.ConnInfo.Port)
}
if user1.Certificate != user2.Certificate {
t.Fatal("Certificate doesn't match : received ", user1.Certificate, " and ", user2.Certificate)
}
......@@ -154,8 +144,6 @@ func TestMongoFetchUser(t *testing.T) {
user := entities.NewUser()
user.Email = "dfss2@mpcs.tk"
user.CertHash = nil
user.ConnInfo.IP = "127.0.0.2"
user.ConnInfo.Port = 2222
user.Csr = "csr2"
user.RegToken = "regToken 2"
......
......@@ -190,21 +190,20 @@ var _TTP_serviceDesc = grpc.ServiceDesc{
}
var fileDescriptor0 = []byte{
// 245 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x6c, 0x90, 0xcd, 0x4a, 0xc4, 0x30,
0x10, 0xc7, 0x5d, 0xcb, 0x6a, 0x9d, 0xad, 0xa2, 0xd1, 0xc3, 0x52, 0x0f, 0x4a, 0xf1, 0xd0, 0x53,
0x0b, 0x15, 0xc4, 0x9b, 0x08, 0x5e, 0xbc, 0x2d, 0x61, 0xf7, 0x01, 0xb2, 0x71, 0x94, 0x40, 0x4d,
0x6a, 0x66, 0xea, 0xf3, 0x1b, 0x53, 0x2d, 0x5b, 0xd8, 0x4b, 0x60, 0xfe, 0x1f, 0x93, 0x5f, 0x02,
0x37, 0x6f, 0xef, 0x44, 0xf5, 0xef, 0xc1, 0xb5, 0xea, 0x4c, 0xed, 0x91, 0x5c, 0xdb, 0xb3, 0x71,
0xb6, 0xea, 0xbc, 0x63, 0x27, 0x92, 0xa0, 0xe6, 0xd7, 0x63, 0x4a, 0xc7, 0x94, 0x6e, 0x0d, 0x5a,
0x1e, 0x12, 0xc5, 0x23, 0x64, 0xcf, 0x2d, 0x7a, 0x96, 0xf8, 0xd5, 0x23, 0xb1, 0x28, 0x21, 0x0d,
0xc6, 0xa7, 0x21, 0xa4, 0xe5, 0xec, 0x36, 0x29, 0x17, 0x4d, 0x56, 0x85, 0x52, 0xb5, 0x1a, 0x44,
0x39, 0xba, 0xc5, 0x03, 0x9c, 0x49, 0xd4, 0xee, 0x1b, 0xfd, 0x7f, 0xf7, 0x0e, 0x4e, 0xc9, 0x7c,
0x58, 0xc5, 0xbd, 0xc7, 0xcd, 0xe6, 0xf5, 0x25, 0x2c, 0x98, 0x95, 0x27, 0x72, 0x2a, 0x16, 0x4f,
0xb0, 0x58, 0xaf, 0x57, 0x12, 0xa9, 0x73, 0x96, 0x50, 0x5c, 0xc1, 0x5c, 0x6d, 0x9d, 0xe7, 0x18,
0x4e, 0xe5, 0x30, 0x88, 0x1c, 0x52, 0xed, 0x2c, 0x7b, 0xa5, 0x79, 0x79, 0x18, 0x8c, 0x4c, 0x8e,
0x73, 0x63, 0x20, 0x09, 0x0b, 0x44, 0x05, 0xf3, 0x48, 0x2e, 0x2e, 0x22, 0xe0, 0xee, 0x2b, 0xf2,
0xf3, 0x28, 0xed, 0x5c, 0x53, 0x1c, 0x88, 0x06, 0x8e, 0xff, 0x78, 0xc5, 0x65, 0xb4, 0xa7, 0xf4,
0xfb, 0x3a, 0xdb, 0xa3, 0xf8, 0x49, 0xf7, 0x3f, 0x01, 0x00, 0x00, 0xff, 0xff, 0xe0, 0xac, 0x9b,
0x9a, 0x69, 0x01, 0x00, 0x00,
// 231 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x6c, 0x8f, 0xcd, 0x4a, 0xc3, 0x40,
0x10, 0xc7, 0xad, 0xa1, 0x1a, 0xa7, 0xa9, 0xd4, 0x11, 0xa1, 0x54, 0x50, 0xc9, 0xc5, 0x9e, 0x36,
0x10, 0x9f, 0x40, 0xf0, 0xe2, 0xad, 0x84, 0xf6, 0x01, 0xd2, 0x75, 0x94, 0x85, 0xb8, 0x13, 0x77,
0x26, 0x3e, 0xbf, 0xeb, 0x56, 0xa5, 0x42, 0x2f, 0x7b, 0xf8, 0x7f, 0xed, 0x6f, 0xe0, 0xf6, 0xe5,
0x55, 0xa4, 0xfa, 0x7e, 0xb4, 0x6a, 0x7b, 0x57, 0x05, 0x12, 0xee, 0x06, 0x75, 0xec, 0x4d, 0x1f,
0x58, 0x19, 0xb3, 0xa8, 0x2e, 0xae, 0xff, 0x52, 0x36, 0xa5, 0x6c, 0xe7, 0xc8, 0xeb, 0x2e, 0x51,
0x1a, 0x28, 0x1e, 0x3b, 0x0a, 0xda, 0xd0, 0xc7, 0x40, 0xa2, 0x78, 0x03, 0x79, 0x34, 0xde, 0x9d,
0x90, 0xcc, 0x47, 0x77, 0xd9, 0x72, 0x52, 0x17, 0x26, 0x96, 0xcc, 0x6a, 0x27, 0x96, 0xf7, 0x70,
0xde, 0x90, 0xe5, 0x4f, 0x0a, 0xbf, 0x8d, 0x2b, 0x98, 0x8a, 0x7b, 0xf3, 0xad, 0x0e, 0x81, 0x36,
0x9b, 0xe7, 0xa7, 0x58, 0x1b, 0x2d, 0xcf, 0xe2, 0xf0, 0x64, 0xbd, 0x5e, 0x35, 0x24, 0x3d, 0x7b,
0x21, 0x9c, 0xc2, 0xb8, 0xdd, 0x72, 0xd0, 0xe4, 0xe6, 0x38, 0x83, 0xdc, 0xb2, 0xd7, 0xd0, 0x5a,
0x9d, 0x1f, 0x47, 0xa5, 0xa8, 0x1d, 0x64, 0x31, 0x8f, 0x06, 0xc6, 0x89, 0x07, 0x2f, 0xd2, 0xb7,
0xfb, 0x6c, 0x8b, 0x59, 0x92, 0xf6, 0x56, 0xcb, 0x23, 0xac, 0xe1, 0xf4, 0x87, 0x07, 0x2f, 0x93,
0xfd, 0x9f, 0xee, 0x50, 0x67, 0x7b, 0x92, 0x4e, 0x7f, 0xf8, 0x0a, 0x00, 0x00, 0xff, 0xff, 0x38,
0x4a, 0x1c, 0x12, 0x3f, 0x01, 0x00, 0x00,
}
......@@ -7,6 +7,7 @@ import (
"crypto/x509"
"errors"
"net"
"strings"
"time"
"dfss/auth"
......@@ -144,3 +145,30 @@ func (c *tlsCreds) ClientHandshake(addr string, rawConn net.Conn, timeout time.D
func (c *tlsCreds) ServerHandshake(rawConn net.Conn) (net.Conn, credentials.AuthInfo, error) {
return nil, nil, errors.New("Server side handshake not implemented")
}
// ExternalInterfaceAddr returns a list of the system's network interface addresses
// Returns only ipv4 address if there is a lo interface, it is put at the end
func ExternalInterfaceAddr() ([]string, error) {
addrs, err := net.InterfaceAddrs()
if err != nil {
return nil, err
}
var extAddrs = make([]string, len(addrs))
var localhostAddrs = make([]string, 1)
for _, a := range addrs {
if strings.ContainsRune(a.String(), ':') {
// ipv6, do nothing
} else if strings.ContainsRune(a.String(), '/') {
ip := strings.Split(a.String(), "/")[0]
if strings.HasPrefix(ip, "127") {
// move localhost ip at the end if present
localhostAddrs = append(localhostAddrs, ip)
} else {
extAddrs = append(extAddrs, ip)
}
}
}
return append(extAddrs, localhostAddrs...), nil
}
......@@ -170,16 +170,15 @@ var _Test_serviceDesc = grpc.ServiceDesc{
}
var fileDescriptor0 = []byte{
// 164 bytes of a gzipped FileDescriptorProto
// 158 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xe2, 0x92, 0x49, 0x49, 0x2b, 0x2e,
0xd6, 0xcf, 0x4b, 0x2d, 0xd1, 0x4f, 0xcb, 0xac, 0x28, 0x29, 0x2d, 0x4a, 0x2d, 0xd6, 0x2f, 0x49,
0x2d, 0x2e, 0xd1, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0xe2, 0x80, 0x09, 0x2a, 0x89, 0x72, 0x31,
0x7b, 0xe4, 0x17, 0x08, 0xf1, 0x71, 0x31, 0x65, 0xa6, 0x48, 0x30, 0x2a, 0x30, 0x6a, 0xb0, 0x06,
0x01, 0x59, 0x4a, 0x32, 0x5c, 0x6c, 0x9e, 0xc5, 0x8e, 0xa5, 0x25, 0x19, 0x42, 0x42, 0x5c, 0x2c,
0x89, 0x40, 0x1a, 0x2c, 0xc7, 0x11, 0x04, 0x66, 0x2b, 0xb1, 0x73, 0xb1, 0xba, 0xe6, 0x16, 0x94,
0x54, 0x1a, 0x45, 0x73, 0xb1, 0x84, 0x00, 0x4d, 0x15, 0x52, 0xe3, 0x62, 0x09, 0xc8, 0xcc, 0x4b,
0x17, 0xe2, 0xd5, 0x83, 0x19, 0xac, 0x07, 0x34, 0x55, 0x0a, 0x95, 0xab, 0xc4, 0x20, 0xa4, 0xcd,
0xc5, 0x02, 0x36, 0x94, 0x1f, 0x21, 0x01, 0x36, 0x48, 0x4a, 0x00, 0x21, 0x00, 0xb1, 0x57, 0x89,
0x21, 0x89, 0x0d, 0xec, 0x56, 0x63, 0x40, 0x00, 0x00, 0x00, 0xff, 0xff, 0x2a, 0xf2, 0x1b, 0xf6,
0xcb, 0x00, 0x00, 0x00,
0x2d, 0x2e, 0xd1, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0xe2, 0x80, 0x09, 0x2a, 0x09, 0x72, 0x31,
0x7b, 0xe4, 0x17, 0x08, 0x71, 0x71, 0x31, 0x65, 0xa6, 0x48, 0x30, 0x2a, 0x30, 0x6a, 0xb0, 0x2a,
0x89, 0x71, 0xb1, 0x79, 0x16, 0x3b, 0x96, 0x96, 0x64, 0x08, 0xf1, 0x70, 0xb1, 0x24, 0x02, 0x69,
0xb0, 0x38, 0x87, 0x12, 0x3b, 0x17, 0xab, 0x6b, 0x6e, 0x41, 0x49, 0xa5, 0x51, 0x34, 0x17, 0x4b,
0x08, 0xd0, 0x2c, 0x21, 0x35, 0x2e, 0x96, 0x80, 0xcc, 0xbc, 0x74, 0x21, 0x5e, 0x3d, 0x98, 0x71,
0x7a, 0x40, 0xb3, 0xa4, 0x50, 0xb9, 0x4a, 0x0c, 0x42, 0xda, 0x5c, 0x2c, 0x60, 0xe3, 0xf8, 0x11,
0x12, 0x60, 0x83, 0xa4, 0x04, 0x10, 0x02, 0x10, 0x1b, 0x95, 0x18, 0x92, 0xd8, 0xc0, 0x2e, 0x34,
0x06, 0x04, 0x00, 0x00, 0xff, 0xff, 0xe6, 0x7b, 0x0d, 0xb5, 0xc1, 0x00, 0x00, 0x00,
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment