Skip to content
Snippets Groups Projects
Select Git revision
  • b2ef47e31f546536ed4829c8a1296a7b641e3cdd
  • release default
  • master protected
  • hotfix/gtnNoToken
  • XX-4441
  • Jakub/rootless-CI
  • jonah/refactorProviders
  • Ace/Huawei
  • AceVentura/AccountBackup
  • hotfix/delete-error
  • waitingRoundsRewrite
  • dev
  • quantumSecure
  • hotfix/ratelimit
  • fullRateLimit
  • XX-3564/TlsCipherSuite
  • hotfix/notifications-db
  • hotfix/groupNotification
  • Project/LastMile
  • notls
  • url-repo-rename
  • v2.3.0
  • v2.2.0
  • v2.1.0
  • v2.0.0
  • v1.0.0
26 results

notifications.go

Blame
  • utils.go 3.26 KiB
    package cmd
    
    import (
    	"fmt"
    	jww "github.com/spf13/jwalterweatherman"
    	"github.com/spf13/viper"
    	"gitlab.com/elixxir/client/api"
    	"gitlab.com/elixxir/client/interfaces/message"
    	backupCrypto "gitlab.com/elixxir/crypto/backup"
    	"gitlab.com/elixxir/crypto/contact"
    	"gitlab.com/xx_network/primitives/id"
    	"gitlab.com/xx_network/primitives/utils"
    	"io/ioutil"
    	"strconv"
    	"strings"
    )
    
    // todo: go through cmd package and organize utility functions
    
    func loadBackup(backupPath, backupPass string) (backupCrypto.Backup, []byte) {
    	jww.INFO.Printf("Loading backup from path %q with password %q", backupPath, backupPass)
    	backupFile, err := utils.ReadFile(backupPath)
    	if err != nil {
    		jww.FATAL.Panicf("%v", err)
    	}
    
    	var b backupCrypto.Backup
    	err = b.Decrypt(backupPass, backupFile)
    	if err != nil {
    		jww.ERROR.Printf("Failed to decrypt backup: %+v", err)
    	}
    
    	return b, backupFile
    }
    
    /////////////////////////////////////////////////////////////////
    ////////////////// Print functions /////////////////////////////
    /////////////////////////////////////////////////////////////////
    
    func printChanRequest(requestor contact.Contact) {
    	msg := fmt.Sprintf("Authentication channel request from: %s\n",
    		requestor.ID)
    	jww.INFO.Printf(msg)
    	fmt.Printf(msg)
    	// fmt.Printf(msg)
    }
    
    // Helper function which prints the round resuls
    func printRoundResults(allRoundsSucceeded, timedOut bool,
    	rounds map[id.Round]api.RoundResult, roundIDs []id.Round, msg message.Send) {
    
    	// Done as string slices for easy and human readable printing
    	successfulRounds := make([]string, 0)
    	failedRounds := make([]string, 0)
    	timedOutRounds := make([]string, 0)
    
    	for _, r := range roundIDs {
    		// Group all round reports into a category based on their
    		// result (successful, failed, or timed out)
    		if result, exists := rounds[r]; exists {
    			if result == api.Succeeded {
    				successfulRounds = append(successfulRounds, strconv.Itoa(int(r)))
    			} else if result == api.Failed {
    				failedRounds = append(failedRounds, strconv.Itoa(int(r)))
    			} else {
    				timedOutRounds = append(timedOutRounds, strconv.Itoa(int(r)))
    			}
    		}
    	}
    
    	jww.INFO.Printf("Result of sending message \"%s\" to \"%v\":",
    		msg.Payload, msg.Recipient)
    
    	// Print out all rounds results, if they are populated
    	if len(successfulRounds) > 0 {
    		jww.INFO.Printf("\tRound(s) %v successful", strings.Join(successfulRounds, ","))
    	}
    	if len(failedRounds) > 0 {
    		jww.ERROR.Printf("\tRound(s) %v failed", strings.Join(failedRounds, ","))
    	}
    	if len(timedOutRounds) > 0 {
    		jww.ERROR.Printf("\tRound(s) %v timed "+
    			"\n\tout (no network resolution could be found)", strings.Join(timedOutRounds, ","))
    	}
    
    }
    
    func writeContact(c contact.Contact) {
    	outfilePath := viper.GetString("writeContact")
    	if outfilePath == "" {
    		return
    	}
    	err := ioutil.WriteFile(outfilePath, c.Marshal(), 0644)
    	if err != nil {
    		jww.FATAL.Panicf("%+v", err)
    	}
    }
    
    func readContact() contact.Contact {
    	inputFilePath := viper.GetString("destfile")
    	if inputFilePath == "" {
    		return contact.Contact{}
    	}
    	data, err := ioutil.ReadFile(inputFilePath)
    	jww.INFO.Printf("Contact file size read in: %d", len(data))
    	if err != nil {
    		jww.FATAL.Panicf("Failed to read contact file: %+v", err)
    	}
    	c, err := contact.Unmarshal(data)
    	if err != nil {
    		jww.FATAL.Panicf("Failed to unmarshal contact: %+v", err)
    	}
    	return c
    }