@@ -80,28 +80,6 @@ func NewSender(conf SenderConfig) *Sender {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (s *Sender) filterCheckFS(fs string) (*zfs.DatasetPath, error) {
|
func (s *Sender) filterCheckFS(fs string) (*zfs.DatasetPath, error) {
|
||||||
// Патч: если fs пришёл без pool (nomad/...), добавляем source pool обратно
|
|
||||||
// (но только если он не полный)
|
|
||||||
p, err := zfs.NewDatasetPath(fs)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
// Если путь короткий (без pool) — добавляем первый компонент из job config или пропускаем
|
|
||||||
// Но проще: если длина < 2, то это уже "очищенный" путь — пропускаем проверку или добавляем
|
|
||||||
if p.Length() <= 1 {
|
|
||||||
// Просто проверяем фильтр как есть
|
|
||||||
pass, err := s.FSFilter.Filter(p)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
if !pass {
|
|
||||||
return nil, fmt.Errorf("endpoint does not allow access to filesystem %s", fs)
|
|
||||||
}
|
|
||||||
return p, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// Обычный путь
|
|
||||||
dp, err := zfs.NewDatasetPath(fs)
|
dp, err := zfs.NewDatasetPath(fs)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
@@ -119,7 +97,6 @@ func (s *Sender) filterCheckFS(fs string) (*zfs.DatasetPath, error) {
|
|||||||
return dp, nil
|
return dp, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
func (s *Sender) ListFilesystems(ctx context.Context, r *pdu.ListFilesystemReq) (*pdu.ListFilesystemRes, error) {
|
func (s *Sender) ListFilesystems(ctx context.Context, r *pdu.ListFilesystemReq) (*pdu.ListFilesystemRes, error) {
|
||||||
defer trace.WithSpanFromStackUpdateCtx(&ctx)()
|
defer trace.WithSpanFromStackUpdateCtx(&ctx)()
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user