mirror of
https://github.com/seaweedfs/seaweedfs.git
synced 2024-01-19 02:48:24 +00:00
Merge pull request #3180 from blacktear23/issue-3149
This commit is contained in:
commit
4eeeb5f50d
|
@ -55,6 +55,7 @@ type FilerOptions struct {
|
||||||
debug *bool
|
debug *bool
|
||||||
debugPort *int
|
debugPort *int
|
||||||
localSocket *string
|
localSocket *string
|
||||||
|
showUIDirectoryDelete *bool
|
||||||
}
|
}
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
|
@ -82,6 +83,7 @@ func init() {
|
||||||
f.debug = cmdFiler.Flag.Bool("debug", false, "serves runtime profiling data, e.g., http://localhost:<debug.port>/debug/pprof/goroutine?debug=2")
|
f.debug = cmdFiler.Flag.Bool("debug", false, "serves runtime profiling data, e.g., http://localhost:<debug.port>/debug/pprof/goroutine?debug=2")
|
||||||
f.debugPort = cmdFiler.Flag.Int("debug.port", 6060, "http port for debugging")
|
f.debugPort = cmdFiler.Flag.Int("debug.port", 6060, "http port for debugging")
|
||||||
f.localSocket = cmdFiler.Flag.String("localSocket", "", "default to /tmp/seaweedfs-filer-<port>.sock")
|
f.localSocket = cmdFiler.Flag.String("localSocket", "", "default to /tmp/seaweedfs-filer-<port>.sock")
|
||||||
|
f.showUIDirectoryDelete = cmdFiler.Flag.Bool("ui.deleteDir", true, "enable filer UI show delete directory button")
|
||||||
|
|
||||||
// start s3 on filer
|
// start s3 on filer
|
||||||
filerStartS3 = cmdFiler.Flag.Bool("s3", false, "whether to start S3 gateway")
|
filerStartS3 = cmdFiler.Flag.Bool("s3", false, "whether to start S3 gateway")
|
||||||
|
@ -216,6 +218,7 @@ func (fo *FilerOptions) startFiler() {
|
||||||
Cipher: *fo.cipher,
|
Cipher: *fo.cipher,
|
||||||
SaveToFilerLimit: int64(*fo.saveToFilerLimit),
|
SaveToFilerLimit: int64(*fo.saveToFilerLimit),
|
||||||
ConcurrentUploadLimit: int64(*fo.concurrentUploadLimitMB) * 1024 * 1024,
|
ConcurrentUploadLimit: int64(*fo.concurrentUploadLimitMB) * 1024 * 1024,
|
||||||
|
ShowUIDirectoryDelete: *fo.showUIDirectoryDelete,
|
||||||
})
|
})
|
||||||
if nfs_err != nil {
|
if nfs_err != nil {
|
||||||
glog.Fatalf("Filer startup error: %v", nfs_err)
|
glog.Fatalf("Filer startup error: %v", nfs_err)
|
||||||
|
|
|
@ -2,8 +2,6 @@ package command
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"github.com/chrislusf/seaweedfs/weed/pb"
|
|
||||||
"github.com/chrislusf/seaweedfs/weed/util/grace"
|
|
||||||
"net/http"
|
"net/http"
|
||||||
"os"
|
"os"
|
||||||
"strings"
|
"strings"
|
||||||
|
@ -12,7 +10,9 @@ import (
|
||||||
stats_collect "github.com/chrislusf/seaweedfs/weed/stats"
|
stats_collect "github.com/chrislusf/seaweedfs/weed/stats"
|
||||||
|
|
||||||
"github.com/chrislusf/seaweedfs/weed/glog"
|
"github.com/chrislusf/seaweedfs/weed/glog"
|
||||||
|
"github.com/chrislusf/seaweedfs/weed/pb"
|
||||||
"github.com/chrislusf/seaweedfs/weed/util"
|
"github.com/chrislusf/seaweedfs/weed/util"
|
||||||
|
"github.com/chrislusf/seaweedfs/weed/util/grace"
|
||||||
)
|
)
|
||||||
|
|
||||||
type ServerOptions struct {
|
type ServerOptions struct {
|
||||||
|
@ -114,6 +114,7 @@ func init() {
|
||||||
filerOptions.saveToFilerLimit = cmdServer.Flag.Int("filer.saveToFilerLimit", 0, "Small files smaller than this limit can be cached in filer store.")
|
filerOptions.saveToFilerLimit = cmdServer.Flag.Int("filer.saveToFilerLimit", 0, "Small files smaller than this limit can be cached in filer store.")
|
||||||
filerOptions.concurrentUploadLimitMB = cmdServer.Flag.Int("filer.concurrentUploadLimitMB", 64, "limit total concurrent upload size")
|
filerOptions.concurrentUploadLimitMB = cmdServer.Flag.Int("filer.concurrentUploadLimitMB", 64, "limit total concurrent upload size")
|
||||||
filerOptions.localSocket = cmdServer.Flag.String("filer.localSocket", "", "default to /tmp/seaweedfs-filer-<port>.sock")
|
filerOptions.localSocket = cmdServer.Flag.String("filer.localSocket", "", "default to /tmp/seaweedfs-filer-<port>.sock")
|
||||||
|
filerOptions.showUIDirectoryDelete = cmdServer.Flag.Bool("filer.ui.deleteDir", true, "enable filer UI show delete directory button")
|
||||||
|
|
||||||
serverOptions.v.port = cmdServer.Flag.Int("volume.port", 8080, "volume server http listen port")
|
serverOptions.v.port = cmdServer.Flag.Int("volume.port", 8080, "volume server http listen port")
|
||||||
serverOptions.v.portGrpc = cmdServer.Flag.Int("volume.port.grpc", 0, "volume server grpc listen port")
|
serverOptions.v.portGrpc = cmdServer.Flag.Int("volume.port.grpc", 0, "volume server grpc listen port")
|
||||||
|
|
|
@ -3,7 +3,6 @@ package weed_server
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
"github.com/chrislusf/seaweedfs/weed/pb/filer_pb"
|
|
||||||
"net/http"
|
"net/http"
|
||||||
"os"
|
"os"
|
||||||
"sync"
|
"sync"
|
||||||
|
@ -17,6 +16,7 @@ import (
|
||||||
|
|
||||||
"github.com/chrislusf/seaweedfs/weed/operation"
|
"github.com/chrislusf/seaweedfs/weed/operation"
|
||||||
"github.com/chrislusf/seaweedfs/weed/pb"
|
"github.com/chrislusf/seaweedfs/weed/pb"
|
||||||
|
"github.com/chrislusf/seaweedfs/weed/pb/filer_pb"
|
||||||
"github.com/chrislusf/seaweedfs/weed/pb/master_pb"
|
"github.com/chrislusf/seaweedfs/weed/pb/master_pb"
|
||||||
"github.com/chrislusf/seaweedfs/weed/util"
|
"github.com/chrislusf/seaweedfs/weed/util"
|
||||||
|
|
||||||
|
@ -67,6 +67,7 @@ type FilerOption struct {
|
||||||
Cipher bool
|
Cipher bool
|
||||||
SaveToFilerLimit int64
|
SaveToFilerLimit int64
|
||||||
ConcurrentUploadLimit int64
|
ConcurrentUploadLimit int64
|
||||||
|
ShowUIDirectoryDelete bool
|
||||||
}
|
}
|
||||||
|
|
||||||
type FilerServer struct {
|
type FilerServer struct {
|
||||||
|
|
|
@ -73,7 +73,7 @@ func (fs *FilerServer) listDirectoryHandler(w http.ResponseWriter, r *http.Reque
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
ui.StatusTpl.Execute(w, struct {
|
err = ui.StatusTpl.Execute(w, struct {
|
||||||
Path string
|
Path string
|
||||||
Breadcrumbs []ui.Breadcrumb
|
Breadcrumbs []ui.Breadcrumb
|
||||||
Entries interface{}
|
Entries interface{}
|
||||||
|
@ -81,6 +81,7 @@ func (fs *FilerServer) listDirectoryHandler(w http.ResponseWriter, r *http.Reque
|
||||||
LastFileName string
|
LastFileName string
|
||||||
ShouldDisplayLoadMore bool
|
ShouldDisplayLoadMore bool
|
||||||
EmptyFolder bool
|
EmptyFolder bool
|
||||||
|
ShowDirectoryDelete bool
|
||||||
}{
|
}{
|
||||||
path,
|
path,
|
||||||
ui.ToBreadcrumb(path),
|
ui.ToBreadcrumb(path),
|
||||||
|
@ -89,5 +90,9 @@ func (fs *FilerServer) listDirectoryHandler(w http.ResponseWriter, r *http.Reque
|
||||||
lastFileName,
|
lastFileName,
|
||||||
shouldDisplayLoadMore,
|
shouldDisplayLoadMore,
|
||||||
emptyFolder,
|
emptyFolder,
|
||||||
|
fs.option.ShowUIDirectoryDelete,
|
||||||
})
|
})
|
||||||
|
if err != nil {
|
||||||
|
glog.V(0).Infof("Template Execute Error: %v", err)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -109,38 +109,37 @@
|
||||||
<form class="upload-form">
|
<form class="upload-form">
|
||||||
<input type="file" id="fileElem" multiple onchange="handleFiles(this.files)">
|
<input type="file" id="fileElem" multiple onchange="handleFiles(this.files)">
|
||||||
|
|
||||||
{{if .EmptyFolder}}
|
{{ if .EmptyFolder }}
|
||||||
<div class="row add-files">
|
<div class="row add-files">
|
||||||
+
|
+
|
||||||
</div>
|
</div>
|
||||||
{{else}}
|
{{ else }}
|
||||||
<table width="100%" class="table table-hover">
|
<table width="100%" class="table table-hover">
|
||||||
{{$path := .Path }}
|
{{ $path := .Path }}
|
||||||
|
{{ $showDirDel := .ShowDirectoryDelete }}
|
||||||
{{ range $entry_index, $entry := .Entries }}
|
{{ range $entry_index, $entry := .Entries }}
|
||||||
<tr>
|
<tr>
|
||||||
<td>
|
<td>
|
||||||
{{if $entry.IsDirectory}}
|
{{ if $entry.IsDirectory }}
|
||||||
<span class="glyphicon glyphicon-folder-open" aria-hidden="true"></span>
|
<span class="glyphicon glyphicon-folder-open" aria-hidden="true"></span>
|
||||||
<a href="{{ printpath $path "/" $entry.Name "/"}}" >
|
<a href="{{ printpath $path "/" $entry.Name "/"}}" >
|
||||||
{{ $entry.Name }}
|
{{ $entry.Name }}
|
||||||
</a>
|
</a>
|
||||||
{{else}}
|
{{ else }}
|
||||||
<a href="{{ printpath $path "/" $entry.Name }}" >
|
<a href="{{ printpath $path "/" $entry.Name }}" >
|
||||||
{{ $entry.Name }}
|
{{ $entry.Name }}
|
||||||
</a>
|
</a>
|
||||||
{{end}}
|
{{ end }}
|
||||||
</td>
|
</td>
|
||||||
<td align="right" nowrap>
|
<td align="right" nowrap>
|
||||||
{{if $entry.IsDirectory}}
|
{{ if not $entry.IsDirectory }}
|
||||||
{{else}}
|
|
||||||
{{ $entry.Mime }}
|
{{ $entry.Mime }}
|
||||||
{{end}}
|
{{ end }}
|
||||||
</td>
|
</td>
|
||||||
<td align="right" nowrap>
|
<td align="right" nowrap>
|
||||||
{{if $entry.IsDirectory}}
|
{{ if not $entry.IsDirectory }}
|
||||||
{{else}}
|
|
||||||
{{ $entry.Size | humanizeBytes }}
|
{{ $entry.Size | humanizeBytes }}
|
||||||
{{end}}
|
{{ end }}
|
||||||
</td>
|
</td>
|
||||||
<td align="right" nowrap>
|
<td align="right" nowrap>
|
||||||
{{ $entry.Timestamp.Format "2006-01-02 15:04" }}
|
{{ $entry.Timestamp.Format "2006-01-02 15:04" }}
|
||||||
|
@ -150,31 +149,32 @@
|
||||||
<label class="btn" onclick="handleRename('{{ $entry.Name }}', '{{ printpath $path "/" }}')">
|
<label class="btn" onclick="handleRename('{{ $entry.Name }}', '{{ printpath $path "/" }}')">
|
||||||
<span class="glyphicon glyphicon-edit" aria-hidden="true"></span>
|
<span class="glyphicon glyphicon-edit" aria-hidden="true"></span>
|
||||||
</label>
|
</label>
|
||||||
{{if $entry.IsDirectory}}
|
{{ if and $entry.IsDirectory $showDirDel }}
|
||||||
<label class="btn" onclick="handleDelete('{{ printpath $path "/" $entry.Name "/" }}')">
|
<label class="btn" onclick="handleDelete('{{ printpath $path "/" $entry.Name "/" }}')">
|
||||||
<span class="glyphicon glyphicon-trash" aria-hidden="true"></span>
|
<span class="glyphicon glyphicon-trash" aria-hidden="true"></span>
|
||||||
</label>
|
</label>
|
||||||
{{else}}
|
{{ end }}
|
||||||
|
{{ if not $entry.IsDirectory }}
|
||||||
<label class="btn" onclick="handleDelete('{{ printpath $path "/" $entry.Name }}')">
|
<label class="btn" onclick="handleDelete('{{ printpath $path "/" $entry.Name }}')">
|
||||||
<span class="glyphicon glyphicon-trash" aria-hidden="true"></span>
|
<span class="glyphicon glyphicon-trash" aria-hidden="true"></span>
|
||||||
</label>
|
</label>
|
||||||
{{end}}
|
{{ end }}
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
</table>
|
</table>
|
||||||
{{end}}
|
{{ end }}
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{{if .ShouldDisplayLoadMore}}
|
{{ if .ShouldDisplayLoadMore }}
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<a href={{ print .Path "?limit=" .Limit "&lastFileName=" .LastFileName}} >
|
<a href={{ print .Path "?limit=" .Limit "&lastFileName=" .LastFileName }} >
|
||||||
Load more
|
Load more
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
{{end}}
|
{{ end }}
|
||||||
|
|
||||||
<br/>
|
<br/>
|
||||||
<br/>
|
<br/>
|
||||||
|
|
Loading…
Reference in a new issue