From dc19921b0c3cf9a5bb2d72d6498afea72770b38d Mon Sep 17 00:00:00 2001 From: Nicola Murino Date: Thu, 25 Nov 2021 20:09:11 +0100 Subject: [PATCH] web client: don't show the link for expired shares --- dataprovider/admin.go | 1 + dataprovider/share.go | 9 +++++++++ templates/webadmin/admin.html | 4 ++-- templates/webclient/share.html | 4 ++-- templates/webclient/shares.html | 34 +++++++++++++++++++++++---------- 5 files changed, 38 insertions(+), 14 deletions(-) diff --git a/dataprovider/admin.go b/dataprovider/admin.go index b685d520..5b8aca7a 100644 --- a/dataprovider/admin.go +++ b/dataprovider/admin.go @@ -220,6 +220,7 @@ func (a *Admin) validate() error { if a.Email != "" && !emailRegex.MatchString(a.Email) { return util.NewValidationError(fmt.Sprintf("email %#v is not valid", a.Email)) } + a.Filters.AllowList = util.RemoveDuplicates(a.Filters.AllowList) for _, IPMask := range a.Filters.AllowList { _, _, err := net.ParseCIDR(IPMask) if err != nil { diff --git a/dataprovider/share.go b/dataprovider/share.go index 9b07ba80..ec1d10b9 100644 --- a/dataprovider/share.go +++ b/dataprovider/share.go @@ -67,6 +67,14 @@ func (s *Share) GetScopeAsString() string { } } +// IsExpired returns true if the share is expired +func (s *Share) IsExpired() bool { + if s.ExpiresAt > 0 { + return s.ExpiresAt < util.GetTimeAsMsSinceEpoch(time.Now()) + } + return false +} + // GetInfoString returns share's info as string. func (s *Share) GetInfoString() string { var result strings.Builder @@ -220,6 +228,7 @@ func (s *Share) validate() error { if err := s.hashPassword(); err != nil { return err } + s.AllowFrom = util.RemoveDuplicates(s.AllowFrom) for _, IPMask := range s.AllowFrom { _, _, err := net.ParseCIDR(IPMask) if err != nil { diff --git a/templates/webadmin/admin.html b/templates/webadmin/admin.html index b704082f..6ce1b409 100644 --- a/templates/webadmin/admin.html +++ b/templates/webadmin/admin.html @@ -80,8 +80,8 @@
- + Comma separated IP/Mask in CIDR format, for example "192.168.1.0/24,10.8.0.100/32" diff --git a/templates/webclient/share.html b/templates/webclient/share.html index 475a32d6..da62482b 100644 --- a/templates/webclient/share.html +++ b/templates/webclient/share.html @@ -118,8 +118,8 @@
- + Comma separated IP/Mask in CIDR format, for example "192.168.1.0/24,10.8.0.100/32" diff --git a/templates/webclient/shares.html b/templates/webclient/shares.html index 51f72da8..c6a870f2 100644 --- a/templates/webclient/shares.html +++ b/templates/webclient/shares.html @@ -32,6 +32,7 @@ Name Scope Info + @@ -41,6 +42,7 @@ {{.Name}} {{.GetScopeAsString}} {{.GetInfoString}} + {{if .IsExpired}}1{{else}}0{{end}} {{end}} @@ -97,6 +99,9 @@

For example:

curl -F filenames=@file1.txt -F filenames=@file2.txt "share link"

+
+ This share is no longer accessible because it has expired +