Przeglądaj źródła

[add] SecureManger 의존성 주입과 RM 받을시 키등록 가능하도록 구현, 로그 메세지 색입혀서 보기 편하게 기능 추가

master
kidjung 4 lat temu
rodzic
commit
66556ab2ba

+ 11
- 5
src/broker/modules/init.go Wyświetl plik

@@ -11,7 +11,7 @@ import (
11 11
 	"net/rpc"
12 12
 )
13 13
 
14
-// TODO: RM 처리와 init.go 전반적으로 DI 이용하여 구현
14
+// TODO: RM 처리와 init.go 전반적으로 DI 이용하여 구현 RM 키등록 부분 구현 예정
15 15
 //temporary type for matching manager
16 16
 //type match_manager struct{}
17 17
 
@@ -31,7 +31,7 @@ type Moscato struct {
31 31
 	queue               MsgQueue
32 32
 	MicroServiceManager NodeManager `inject:""`
33 33
 	match_mng           match_manager
34
-	secure_mng          secure_manager
34
+	SecureManager       SecurityManager `inject:""`
35 35
 }
36 36
 
37 37
 type Reply struct {
@@ -154,13 +154,18 @@ func (moscato *Moscato) Receive(msg MsgUnit) (MsgUnit, error) {
154 154
 		newNode := MSNode{newMsg.From, newMsg.From}
155 155
 		resultAddNode := moscato.MicroServiceManager.AddMicroservice(newNode)
156 156
 		if resultAddNode {
157
-			log.Println("node added successful")
157
+			log.Println("Node added successful")
158 158
 		} else {
159
-			log.Println("node is already added, ignore RM")
159
+			log.Println("Node is already added, ignore RM")
160
+			return msg, nil
160 161
 		}
161 162
 
162 163
 		addr, _ := moscato.MicroServiceManager.GetIpaddr(newMsg.From)
164
+		moscato.SecureManager.RegKey(newMsg)
165
+		fmt.Println(moscato.SecureManager.GetNodeKey(newMsg.From))
163 166
 		fmt.Println(addr)
167
+
168
+		// ackRM 메세지 전송
164 169
 		go moscato.Send2MS(addr, newMsg)
165 170
 
166 171
 		log.Println("RM received")
@@ -206,7 +211,8 @@ func (moscato *Moscato) Run() {
206 211
 
207 212
 	err := graph.Provide(
208 213
 		&inject.Object{Value: NewMStable()},
209
-		&inject.Object{Value: moscato})
214
+		&inject.Object{Value: moscato},
215
+		&inject.Object{Value: NewSecurity()})
210 216
 	if err != nil {
211 217
 		fmt.Println(err)
212 218
 		return

+ 1
- 0
src/broker/modules/message.go Wyświetl plik

@@ -65,6 +65,7 @@ type SubscriptionMsg struct {
65 65
 //Microservice 등록 메세지
66 66
 type RegisterMsg struct {
67 67
 	Message
68
+	PrivateKey int64
68 69
 }
69 70
 
70 71
 //Microservice 탈퇴 메세지(없앰)

+ 3
- 2
src/broker/modules/queue.go Wyświetl plik

@@ -2,7 +2,7 @@ package modules
2 2
 
3 3
 import (
4 4
 	"errors"
5
-	"log"
5
+	"github.com/fatih/color"
6 6
 )
7 7
 
8 8
 type MsgQueue struct {
@@ -24,7 +24,8 @@ func (mq *MsgQueue) queue_init() error {
24 24
 		return errors.New("Queue Hadlerer Error: Already initialized.")
25 25
 	} else if mq.queue == nil {
26 26
 		mq.queue = make(chan MsgUnit, 1000)
27
-		log.Println("queue is initialized.")
27
+		//log.Println("queue is initialized.")
28
+		color.Blue("queue is initialized.")
28 29
 		return nil
29 30
 	} else {
30 31
 		close(mq.queue)

+ 3
- 3
src/broker/modules/secure.go Wyświetl plik

@@ -16,7 +16,7 @@ func NewSecurity() *Security {
16 16
 }
17 17
 
18 18
 type SecurityManager interface {
19
-	RegKey(ksm KeyShareMsg)
19
+	RegKey(rm RegisterMsg)
20 20
 	GetNodeKey(nodeName string) int64
21 21
 	ReEncrypt(fromKey int64, toKey int64, target []int64) []int64
22 22
 	ReEncPubMsg(fromPubMsg PublishMsg, nodeName string) *PublishMsg
@@ -28,8 +28,8 @@ type SecurityManager interface {
28 28
 /**
29 29
 keyShareMsg 에서 각 노드의 private 키를 받아 keyMap 에 저장
30 30
 */
31
-func (sc Security) RegKey(ksm KeyShareMsg) {
32
-	sc.KeyMap[ksm.Message.From] = ksm.key
31
+func (sc Security) RegKey(rm RegisterMsg) {
32
+	sc.KeyMap[rm.Message.From] = strconv.FormatInt(rm.PrivateKey, 10)
33 33
 }
34 34
 
35 35
 /**

Ładowanie…
Anuluj
Zapisz