@@ -37,11 +37,11 @@ var (
3737
3838type (
3939Client interface {
40- Connect (* domain.AgentInit ) error
40+ Connect (* domain.AgentInit ) ( * domain. AgentConfig , error )
4141ReConn () <- chan struct {}
4242
4343UploadLog (filePath string ) error
44- ReportProfile (* domain.Resource ) error
44+ ReportProfile (profile * domain.AgentProfile ) error
4545
4646GetCmdIn () <- chan []byte
4747SendCmdOut (out domain.CmdOut ) error
@@ -81,10 +81,10 @@ type (
8181}
8282)
8383
84- func (c * client ) Connect (init * domain.AgentInit ) error {
84+ func (c * client ) Connect (init * domain.AgentInit ) ( * domain. AgentConfig , error ) {
8585u , err := url .Parse (c .server )
8686if err != nil {
87- return err
87+ return nil , err
8888}
8989
9090u .Scheme = "ws"
@@ -103,37 +103,33 @@ func (c *client) Connect(init *domain.AgentInit) error {
103103// build connection
104104c .conn , _ , err = dialer .Dial (u .String (), header )
105105if err != nil {
106- return err
106+ return nil , err
107107}
108108
109109c .conn .SetReadLimit (bufferSize )
110110c .setConnState (connStateConnected )
111111
112112// send init connect event
113- _ , err = c .sendMessageWithResp (eventConnect , init )
113+ resp := & domain.AgentConfigResponse {}
114+ err = c .sendMessageWithResp (eventConnect , init , resp )
114115if err != nil {
115- return err
116+ return nil , err
116117}
117118
118119// start to read message
119120go c .readMessage ()
120121go c .consumePendingMessage ()
121122
122123util .LogInfo ("Agent is connected to server %s" , c .server )
123- return nil
124+ return resp . Data , nil
124125}
125126
126127func (c * client ) ReConn () <- chan struct {} {
127128return c .reConn
128129}
129130
130- func (c * client ) ReportProfile (r * domain.Resource ) (err error ) {
131- body , err := json .Marshal (r )
132- if err != nil {
133- return
134- }
135-
136- _ , err = c .send ("POST" , "profile" , util .HttpMimeJson , bytes .NewBuffer (body ))
131+ func (c * client ) ReportProfile (r * domain.AgentProfile ) (err error ) {
132+ _ = c .sendMessageWithJson (eventProfile , r )
137133return
138134}
139135
@@ -291,25 +287,39 @@ func (c *client) GetSecret(name string) (secret domain.Secret, err error) {
291287out , err := ioutil .ReadAll (resp .Body )
292288util .PanicIfErr (err )
293289
294- base := & domain.SecretBase {}
295- err = json .Unmarshal (out , base )
290+ secretResp , err := c .parseResponse (out , & domain.SecretResponse {})
291+ util .PanicIfErr (err )
292+
293+ body := secretResp .(* domain.SecretResponse )
294+ util .PanicIfNil (body .Data , "secret data" )
295+
296+ base := body .Data
297+ baseRaw := & domain.SecretResponseRaw {}
298+ err = json .Unmarshal (out , baseRaw )
296299util .PanicIfErr (err )
297300
298301if base .Category == domain .SecretCategoryAuth {
299302auth := & domain.AuthSecret {}
300- err = json .Unmarshal (out , auth )
303+ err = json .Unmarshal (baseRaw . Raw , auth )
301304util .PanicIfErr (err )
302305return auth , nil
303306}
304307
305308if base .Category == domain .SecretCategorySshRsa {
306309rsa := & domain.RSASecret {}
307- err = json .Unmarshal (out , rsa )
310+ err = json .Unmarshal (baseRaw . Raw , rsa )
308311util .PanicIfErr (err )
309312return rsa , nil
310313}
311314
312- return nil , fmt .Errorf ("unsupport secret type" )
315+ if base .Category == domain .SecretCategoryToken {
316+ token := & domain.TokenSecret {}
317+ err = json .Unmarshal (baseRaw .Raw , token )
318+ util .PanicIfErr (err )
319+ return token , nil
320+ }
321+
322+ return nil , fmt .Errorf ("secret '%s' category '%s' is unsupported" , base .GetName (), base .GetCategory ())
313323}
314324
315325func (c * client ) Close () {
@@ -454,7 +464,7 @@ func (c *client) sendMessageWithBytes(event string, body []byte) error {
454464return nil
455465}
456466
457- func (c * client ) sendMessageWithResp (event string , msg interface {}) ( resp * domain.Response , out error ) {
467+ func (c * client ) sendMessageWithResp (event string , msg interface {}, resp domain.ResponseMessage ) ( out error ) {
458468defer util .RecoverPanic (func (e error ) {
459469out = e
460470})
@@ -468,10 +478,8 @@ func (c *client) sendMessageWithResp(event string, msg interface{}) (resp *domai
468478_ , data , err := c .conn .ReadMessage ()
469479util .PanicIfErr (err )
470480
471- message , err : = c .parseResponse (data , & domain. Response {} )
481+ _ , err = c .parseResponse (data , resp )
472482util .PanicIfErr (err )
473-
474- resp = message .(* domain.Response )
475483return
476484}
477485
0 commit comments