func bootstrapRemove(filename string, cfg *config.Config, toRemove []*config.BootstrapPeer) ([]*config.BootstrapPeer, error) { removed := make([]*config.BootstrapPeer, 0, len(toRemove)) keep := make([]*config.BootstrapPeer, 0, len(cfg.Bootstrap)) for _, peer := range cfg.Bootstrap { found := false for _, peer2 := range toRemove { if peer.Address == peer2.Address && peer.PeerID == peer2.PeerID { found = true removed = append(removed, peer) break } } if !found { keep = append(keep, peer) } } cfg.Bootstrap = keep err := config.WriteConfigFile(filename, cfg) if err != nil { return nil, err } return removed, nil }
func bootstrapAdd(filename string, cfg *config.Config, peers []*config.BootstrapPeer) ([]*config.BootstrapPeer, error) { added := make([]*config.BootstrapPeer, 0, len(peers)) for _, peer := range peers { duplicate := false for _, peer2 := range cfg.Bootstrap { if peer.Address == peer2.Address && peer.PeerID == peer2.PeerID { duplicate = true break } } if !duplicate { cfg.Bootstrap = append(cfg.Bootstrap, peer) added = append(added, peer) } } err := config.WriteConfigFile(filename, cfg) if err != nil { return nil, err } return added, nil }