podman

Форк
0
45 строк · 1.1 Кб
1
// Copyright 2017 Manu Martinez-Almeida. All rights reserved.
2
// Use of this source code is governed by a MIT style
3
// license that can be found in the LICENSE file.
4

5
package gin
6

7
import (
8
	"net/http"
9
	"os"
10
)
11

12
type onlyFilesFS struct {
13
	fs http.FileSystem
14
}
15

16
type neuteredReaddirFile struct {
17
	http.File
18
}
19

20
// Dir returns a http.FileSystem that can be used by http.FileServer(). It is used internally
21
// in router.Static().
22
// if listDirectory == true, then it works the same as http.Dir() otherwise it returns
23
// a filesystem that prevents http.FileServer() to list the directory files.
24
func Dir(root string, listDirectory bool) http.FileSystem {
25
	fs := http.Dir(root)
26
	if listDirectory {
27
		return fs
28
	}
29
	return &onlyFilesFS{fs}
30
}
31

32
// Open conforms to http.Filesystem.
33
func (fs onlyFilesFS) Open(name string) (http.File, error) {
34
	f, err := fs.fs.Open(name)
35
	if err != nil {
36
		return nil, err
37
	}
38
	return neuteredReaddirFile{f}, nil
39
}
40

41
// Readdir overrides the http.File default implementation.
42
func (f neuteredReaddirFile) Readdir(_ int) ([]os.FileInfo, error) {
43
	// this disables directory listing
44
	return nil, nil
45
}
46

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.