mirror of
				https://github.com/optim-enterprises-bv/vault.git
				synced 2025-10-31 02:28:09 +00:00 
			
		
		
		
	 ad90e0b39d
			
		
	
	ad90e0b39d
	
	
	
		
			
			* Add random string generator with rules engine This adds a random string generation library that validates random strings against a set of rules. The library is designed for use as generating passwords, but can be used to generate any random strings.
		
			
				
	
	
		
			88 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			88 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package logical
 | |
| 
 | |
| import (
 | |
| 	"context"
 | |
| 	"sync"
 | |
| 
 | |
| 	"github.com/hashicorp/vault/sdk/physical"
 | |
| 	"github.com/hashicorp/vault/sdk/physical/inmem"
 | |
| )
 | |
| 
 | |
| // InmemStorage implements Storage and stores all data in memory. It is
 | |
| // basically a straight copy of physical.Inmem, but it prevents backends from
 | |
| // having to load all of physical's dependencies (which are legion) just to
 | |
| // have some testing storage.
 | |
| type InmemStorage struct {
 | |
| 	underlying physical.Backend
 | |
| 	once       sync.Once
 | |
| }
 | |
| 
 | |
| func (s *InmemStorage) Get(ctx context.Context, key string) (*StorageEntry, error) {
 | |
| 	s.once.Do(s.init)
 | |
| 
 | |
| 	entry, err := s.underlying.Get(ctx, key)
 | |
| 	if err != nil {
 | |
| 		return nil, err
 | |
| 	}
 | |
| 	if entry == nil {
 | |
| 		return nil, nil
 | |
| 	}
 | |
| 	return &StorageEntry{
 | |
| 		Key:      entry.Key,
 | |
| 		Value:    entry.Value,
 | |
| 		SealWrap: entry.SealWrap,
 | |
| 	}, nil
 | |
| }
 | |
| 
 | |
| func (s *InmemStorage) Put(ctx context.Context, entry *StorageEntry) error {
 | |
| 	s.once.Do(s.init)
 | |
| 
 | |
| 	return s.underlying.Put(ctx, &physical.Entry{
 | |
| 		Key:      entry.Key,
 | |
| 		Value:    entry.Value,
 | |
| 		SealWrap: entry.SealWrap,
 | |
| 	})
 | |
| }
 | |
| 
 | |
| func (s *InmemStorage) Delete(ctx context.Context, key string) error {
 | |
| 	s.once.Do(s.init)
 | |
| 
 | |
| 	return s.underlying.Delete(ctx, key)
 | |
| }
 | |
| 
 | |
| func (s *InmemStorage) List(ctx context.Context, prefix string) ([]string, error) {
 | |
| 	s.once.Do(s.init)
 | |
| 
 | |
| 	return s.underlying.List(ctx, prefix)
 | |
| }
 | |
| 
 | |
| func (s *InmemStorage) Underlying() *inmem.InmemBackend {
 | |
| 	s.once.Do(s.init)
 | |
| 
 | |
| 	return s.underlying.(*inmem.InmemBackend)
 | |
| }
 | |
| 
 | |
| func (s *InmemStorage) FailPut(fail bool) *InmemStorage {
 | |
| 	s.Underlying().FailPut(fail)
 | |
| 	return s
 | |
| }
 | |
| 
 | |
| func (s *InmemStorage) FailGet(fail bool) *InmemStorage {
 | |
| 	s.Underlying().FailGet(fail)
 | |
| 	return s
 | |
| }
 | |
| 
 | |
| func (s *InmemStorage) FailDelete(fail bool) *InmemStorage {
 | |
| 	s.Underlying().FailDelete(fail)
 | |
| 	return s
 | |
| }
 | |
| 
 | |
| func (s *InmemStorage) FailList(fail bool) *InmemStorage {
 | |
| 	s.Underlying().FailList(fail)
 | |
| 	return s
 | |
| }
 | |
| 
 | |
| func (s *InmemStorage) init() {
 | |
| 	s.underlying, _ = inmem.NewInmem(nil, nil)
 | |
| }
 |