Ejemplo n.º 1
0
// auth connection
func connAuth(s *nc.SocketServer, conn net.Conn, line string) error {
	if strings.HasPrefix(line, "AUTH:") {
		arr := strings.Split(line[5:], "#") // AUTH:API_ID#SECRET#VERSION
		if len(arr) == 3 {
			var af nc.AuthFunc = func() (int, error) {
				merchantId := dps.MerchantService.GetMerchantIdByApiId(arr[0])
				apiInfo := dps.MerchantService.GetApiInfo(merchantId)
				if apiInfo != nil && apiInfo.ApiSecret == arr[1] {
					if apiInfo.Enabled == 0 {
						return merchantId, errors.New("api has exipres")
					}
				}
				return merchantId, nil
			}

			if err := s.Auth(conn, af); err != nil {
				return err
			}

			s.Printf("[ CLIENT] - Version = %s", arr[2])
			return nil
		}
	}
	return errors.New("conn reject")
}