WebClient: remove remaining inline onclick events
Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
This commit is contained in:
parent
37b0c229fc
commit
61e6cc6985
13 changed files with 402 additions and 249 deletions
46
go.mod
46
go.mod
|
@ -9,15 +9,15 @@ require (
|
|||
github.com/GehirnInc/crypt v0.0.0-20230320061759-8cc1b52080c5
|
||||
github.com/alexedwards/argon2id v1.0.0
|
||||
github.com/amoghe/go-crypt v0.0.0-20220222110647-20eada5f5964
|
||||
github.com/aws/aws-sdk-go-v2 v1.22.2
|
||||
github.com/aws/aws-sdk-go-v2/config v1.23.0
|
||||
github.com/aws/aws-sdk-go-v2/credentials v1.15.2
|
||||
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.14.3
|
||||
github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.13.5
|
||||
github.com/aws/aws-sdk-go-v2/service/marketplacemetering v1.18.1
|
||||
github.com/aws/aws-sdk-go-v2/service/s3 v1.42.1
|
||||
github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.23.1
|
||||
github.com/aws/aws-sdk-go-v2/service/sts v1.25.1
|
||||
github.com/aws/aws-sdk-go-v2 v1.23.0
|
||||
github.com/aws/aws-sdk-go-v2/config v1.25.1
|
||||
github.com/aws/aws-sdk-go-v2/credentials v1.16.1
|
||||
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.14.4
|
||||
github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.13.8
|
||||
github.com/aws/aws-sdk-go-v2/service/marketplacemetering v1.18.2
|
||||
github.com/aws/aws-sdk-go-v2/service/s3 v1.42.2
|
||||
github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.23.2
|
||||
github.com/aws/aws-sdk-go-v2/service/sts v1.25.2
|
||||
github.com/bmatcuk/doublestar/v4 v4.6.1
|
||||
github.com/cockroachdb/cockroach-go/v2 v2.3.5
|
||||
github.com/coreos/go-oidc/v3 v3.7.0
|
||||
|
@ -38,7 +38,7 @@ require (
|
|||
github.com/hashicorp/go-retryablehttp v0.7.5
|
||||
github.com/jackc/pgx/v5 v5.5.0
|
||||
github.com/jlaffaye/ftp v0.0.0-20201112195030-9aae4d151126
|
||||
github.com/klauspost/compress v1.17.2
|
||||
github.com/klauspost/compress v1.17.3
|
||||
github.com/lestrrat-go/jwx/v2 v2.0.16
|
||||
github.com/lithammer/shortuuid/v3 v3.0.7
|
||||
github.com/mattn/go-sqlite3 v1.14.18
|
||||
|
@ -85,18 +85,18 @@ require (
|
|||
cloud.google.com/go/iam v1.1.5 // indirect
|
||||
github.com/Azure/azure-sdk-for-go/sdk/internal v1.5.0 // indirect
|
||||
github.com/ajg/form v1.5.1 // indirect
|
||||
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.5.0 // indirect
|
||||
github.com/aws/aws-sdk-go-v2/internal/configsources v1.2.2 // indirect
|
||||
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.5.2 // indirect
|
||||
github.com/aws/aws-sdk-go-v2/internal/ini v1.6.0 // indirect
|
||||
github.com/aws/aws-sdk-go-v2/internal/v4a v1.2.2 // indirect
|
||||
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.10.0 // indirect
|
||||
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.2.2 // indirect
|
||||
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.10.2 // indirect
|
||||
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.16.2 // indirect
|
||||
github.com/aws/aws-sdk-go-v2/service/sso v1.17.1 // indirect
|
||||
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.19.1 // indirect
|
||||
github.com/aws/smithy-go v1.16.0 // indirect
|
||||
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.5.1 // indirect
|
||||
github.com/aws/aws-sdk-go-v2/internal/configsources v1.2.3 // indirect
|
||||
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.5.3 // indirect
|
||||
github.com/aws/aws-sdk-go-v2/internal/ini v1.7.0 // indirect
|
||||
github.com/aws/aws-sdk-go-v2/internal/v4a v1.2.3 // indirect
|
||||
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.10.1 // indirect
|
||||
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.2.3 // indirect
|
||||
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.10.3 // indirect
|
||||
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.16.3 // indirect
|
||||
github.com/aws/aws-sdk-go-v2/service/sso v1.17.2 // indirect
|
||||
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.19.2 // indirect
|
||||
github.com/aws/smithy-go v1.17.0 // indirect
|
||||
github.com/beorn7/perks v1.0.1 // indirect
|
||||
github.com/boombuler/barcode v1.0.1 // indirect
|
||||
github.com/cenkalti/backoff/v4 v4.2.1 // indirect
|
||||
|
@ -134,7 +134,7 @@ require (
|
|||
github.com/mattn/go-colorable v0.1.13 // indirect
|
||||
github.com/mattn/go-isatty v0.0.20 // indirect
|
||||
github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0 // indirect
|
||||
github.com/miekg/dns v1.1.56 // indirect
|
||||
github.com/miekg/dns v1.1.57 // indirect
|
||||
github.com/mitchellh/go-testing-interface v1.14.1 // indirect
|
||||
github.com/mitchellh/mapstructure v1.5.0 // indirect
|
||||
github.com/oklog/run v1.1.0 // indirect
|
||||
|
|
92
go.sum
92
go.sum
|
@ -71,48 +71,48 @@ github.com/alexedwards/argon2id v1.0.0 h1:wJzDx66hqWX7siL/SRUmgz3F8YMrd/nfX/xHHc
|
|||
github.com/alexedwards/argon2id v1.0.0/go.mod h1:tYKkqIjzXvZdzPvADMWOEZ+l6+BD6CtBXMj5fnJppiw=
|
||||
github.com/amoghe/go-crypt v0.0.0-20220222110647-20eada5f5964 h1:I9YN9WMo3SUh7p/4wKeNvD/IQla3U3SUa61U7ul+xM4=
|
||||
github.com/amoghe/go-crypt v0.0.0-20220222110647-20eada5f5964/go.mod h1:eFiR01PwTcpbzXtdMces7zxg6utvFM5puiWHpWB8D/k=
|
||||
github.com/aws/aws-sdk-go-v2 v1.22.2 h1:lV0U8fnhAnPz8YcdmZVV60+tr6CakHzqA6P8T46ExJI=
|
||||
github.com/aws/aws-sdk-go-v2 v1.22.2/go.mod h1:Kd0OJtkW3Q0M0lUWGszapWjEvrXDzRW+D21JNsroB+c=
|
||||
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.5.0 h1:hHgLiIrTRtddC0AKcJr5s7i/hLgcpTt+q/FKxf1Zayk=
|
||||
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.5.0/go.mod h1:w4I/v3NOWgD+qvs1NPEwhd++1h3XPHFaVxasfY6HlYQ=
|
||||
github.com/aws/aws-sdk-go-v2/config v1.23.0 h1:kqzEfGGDIrRJpfJckgwuZfFTbU9NB1jZnRcaO9MpOqE=
|
||||
github.com/aws/aws-sdk-go-v2/config v1.23.0/go.mod h1:p7wbxKXXjS1GGQOss7VXOazVMFF9bjUGq85/4wR/fSw=
|
||||
github.com/aws/aws-sdk-go-v2/credentials v1.15.2 h1:rKH7khRMxPdD0u3dHecd0Q7NOVw3EUe7AqdkUOkiOGI=
|
||||
github.com/aws/aws-sdk-go-v2/credentials v1.15.2/go.mod h1:tXM8wmaeAhfC7nZoCxb0FzM/aRaB1m1WQ7x0qlBLq80=
|
||||
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.14.3 h1:G5KawTAkyHH6WyKQCdHiW4h3PmAXNJpOgwKg3H7sDRE=
|
||||
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.14.3/go.mod h1:hugKmSFnZB+HgNI1sYGT14BUPZkO6alC/e0AWu+0IAQ=
|
||||
github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.13.5 h1:P/xwilRdRLLg1PzfviDq0Zjb74weOoDCrh8J5lRCQAY=
|
||||
github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.13.5/go.mod h1:9cLHf2IwX6Jyw0KjLVbXly/g6DmzExgUzB1w/AQPGQE=
|
||||
github.com/aws/aws-sdk-go-v2/internal/configsources v1.2.2 h1:AaQsr5vvGR7rmeSWBtTCcw16tT9r51mWijuCQhzLnq8=
|
||||
github.com/aws/aws-sdk-go-v2/internal/configsources v1.2.2/go.mod h1:o1IiRn7CWocIFTXJjGKJDOwxv1ibL53NpcvcqGWyRBA=
|
||||
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.5.2 h1:UZx8SXZ0YtzRiALzYAWcjb9Y9hZUR7MBKaBQ5ouOjPs=
|
||||
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.5.2/go.mod h1:ipuRpcSaklmxR6C39G187TpBAO132gUfleTGccUPs8c=
|
||||
github.com/aws/aws-sdk-go-v2/internal/ini v1.6.0 h1:hwZB07/beLiCopuRKF0t+dEHmP39iN4YtDh3X5d3hrg=
|
||||
github.com/aws/aws-sdk-go-v2/internal/ini v1.6.0/go.mod h1:rdAuXeHWhI/zkpYcO5n8WCpaIgY9MUxFyBsuqq3kjyA=
|
||||
github.com/aws/aws-sdk-go-v2/internal/v4a v1.2.2 h1:pyVrNAf7Hwz0u39dLKN5t+n0+K/3rMYKuiOoIum3AsU=
|
||||
github.com/aws/aws-sdk-go-v2/internal/v4a v1.2.2/go.mod h1:mydrfOb9uiOYCxuCPR8YHQNQyGQwUQ7gPMZGBKbH8NY=
|
||||
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.10.0 h1:CJxo7ZBbaIzmXfV3hjcx36n9V87gJsIUPJflwqEHl3Q=
|
||||
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.10.0/go.mod h1:yjVfjuY4nD1EW9i387Kau+I6V5cBA5YnC/mWNopjZrI=
|
||||
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.2.2 h1:f2LhPofnjcdOQKRtumKjMvIHkfSQ8aH/rwKUDEQ/SB4=
|
||||
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.2.2/go.mod h1:q+xX0H4OfuWDuBy7y/LDi4v8IBOWuF+vtp8Z6ex+lw4=
|
||||
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.10.2 h1:h7j73yuAVVjic8pqswh+L/7r2IHP43QwRyOu6zcCDDE=
|
||||
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.10.2/go.mod h1:H07AHdK5LSy8F7EJUQhoxyiCNkePoHj2D8P2yGTWafo=
|
||||
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.16.2 h1:gbIaOzpXixUpoPK+js/bCBK1QBDXM22SigsnzGZio0U=
|
||||
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.16.2/go.mod h1:p+S7RNbdGN8qgHDSg2SCQJ9FeMAmvcETQiVpeGhYnNM=
|
||||
github.com/aws/aws-sdk-go-v2/service/marketplacemetering v1.18.1 h1:/CQ/XwDvcKS9wlVgdjfKNT4jUpU5PckWyp19VpmPBTs=
|
||||
github.com/aws/aws-sdk-go-v2/service/marketplacemetering v1.18.1/go.mod h1:kZxmW3E6zOoBhQWTzbdBeYROG5iqrPe7HcK1BY0QH+s=
|
||||
github.com/aws/aws-sdk-go-v2/service/s3 v1.42.1 h1:o6MCcX1rJW8Y3g+hvg2xpjF6JR6DftuYhfl3Nc1WV9Q=
|
||||
github.com/aws/aws-sdk-go-v2/service/s3 v1.42.1/go.mod h1:UDtxEWbREX6y4KREapT+jjtjoH0TiVSS6f5nfaY1UaM=
|
||||
github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.23.1 h1:xK86ln1cEDa0cUpLaCbFFX/BABPw4ognfzpGfbF4PkY=
|
||||
github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.23.1/go.mod h1:eqTdeirkcyBiDviU/N1JMcImS9zEJDn5wOzX3BsU4wU=
|
||||
github.com/aws/aws-sdk-go-v2/service/sso v1.17.1 h1:km+ZNjtLtpXYf42RdaDZnNHm9s7SYAuDGTafy6nd89A=
|
||||
github.com/aws/aws-sdk-go-v2/service/sso v1.17.1/go.mod h1:aHBr3pvBSD5MbzOvQtYutyPLLRPbl/y9x86XyJJnUXQ=
|
||||
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.19.1 h1:iRFNqZH4a67IqPvK8xxtyQYnyrlsvwmpHOe9r55ggBA=
|
||||
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.19.1/go.mod h1:pTy5WM+6sNv2tB24JNKFtn6EvciQ5k40ZJ0pq/Iaxj0=
|
||||
github.com/aws/aws-sdk-go-v2/service/sts v1.25.1 h1:txgVXIXWPXyqdiVn92BV6a/rgtpX31HYdsOYj0sVQQQ=
|
||||
github.com/aws/aws-sdk-go-v2/service/sts v1.25.1/go.mod h1:VAiJiNaoP1L89STFlEMgmHX1bKixY+FaP+TpRFrmyZ4=
|
||||
github.com/aws/smithy-go v1.16.0 h1:gJZEH/Fqh+RsvlJ1Zt4tVAtV6bKkp3cC+R6FCZMNzik=
|
||||
github.com/aws/smithy-go v1.16.0/go.mod h1:NukqUGpCZIILqqiV0NIjeFh24kd/FAa4beRb6nbIUPE=
|
||||
github.com/aws/aws-sdk-go-v2 v1.23.0 h1:PiHAzmiQQr6JULBUdvR8fKlA+UPKLT/8KbiqpFBWiAo=
|
||||
github.com/aws/aws-sdk-go-v2 v1.23.0/go.mod h1:i1XDttT4rnf6vxc9AuskLc6s7XBee8rlLilKlc03uAA=
|
||||
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.5.1 h1:ZY3108YtBNq96jNZTICHxN1gSBSbnvIdYwwqnvCV4Mc=
|
||||
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.5.1/go.mod h1:t8PYl/6LzdAqsU4/9tz28V/kU+asFePvpOMkdul0gEQ=
|
||||
github.com/aws/aws-sdk-go-v2/config v1.25.1 h1:YsjngBOl2mx4l3egkVWndr6/6TqtkdsWJFZIsQ924Ek=
|
||||
github.com/aws/aws-sdk-go-v2/config v1.25.1/go.mod h1:yV6h7TRVzhdIFmUk9WWDRpWwYGg1woEzKr0k1IYz2Tk=
|
||||
github.com/aws/aws-sdk-go-v2/credentials v1.16.1 h1:WessyrdgyFN5TB+eLQdrFSlN/3oMnqukIFhDxK6z8h0=
|
||||
github.com/aws/aws-sdk-go-v2/credentials v1.16.1/go.mod h1:RQJyPxKcr+m4ArlIG1LUhMOrjposVfzbX6H8oR6oCgE=
|
||||
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.14.4 h1:9wKDWEjwSnXZre0/O3+ZwbBl1SmlgWYBbrTV10X/H1s=
|
||||
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.14.4/go.mod h1:t4i+yGHMCcUNIX1x7YVYa6bH/Do7civ5I6cG/6PMfyA=
|
||||
github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.13.8 h1:wuOjvalpd2CnXffks74Vq6n3yv9vunKCoy4R1sjStGk=
|
||||
github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.13.8/go.mod h1:vywwjy6VnrR48Izg136JoSUXC4mH9QeUi3g0EH9DSrA=
|
||||
github.com/aws/aws-sdk-go-v2/internal/configsources v1.2.3 h1:DUwbD79T8gyQ23qVXFUthjzVMTviSHi3y4z58KvghhM=
|
||||
github.com/aws/aws-sdk-go-v2/internal/configsources v1.2.3/go.mod h1:7sGSz1JCKHWWBHq98m6sMtWQikmYPpxjqOydDemiVoM=
|
||||
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.5.3 h1:AplLJCtIaUZDCbr6+gLYdsYNxne4iuaboJhVt9d+WXI=
|
||||
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.5.3/go.mod h1:ify42Rb7nKeDDPkFjKn7q1bPscVPu/+gmHH8d2c+anU=
|
||||
github.com/aws/aws-sdk-go-v2/internal/ini v1.7.0 h1:usgqiJtamuGIBj+OvYmMq89+Z1hIKkMJToz1WpoeNUY=
|
||||
github.com/aws/aws-sdk-go-v2/internal/ini v1.7.0/go.mod h1:6fQQgfuGmw8Al/3M2IgIllycxV7ZW7WCdVSqfBeUiCY=
|
||||
github.com/aws/aws-sdk-go-v2/internal/v4a v1.2.3 h1:lMwCXiWJlrtZot0NJTjbC8G9zl+V3i68gBTBBvDeEXA=
|
||||
github.com/aws/aws-sdk-go-v2/internal/v4a v1.2.3/go.mod h1:5yzAuE9i2RkVAttBl8yxZgQr5OCq4D5yDnG7j9x2L0U=
|
||||
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.10.1 h1:rpkF4n0CyFcrJUG/rNNohoTmhtWlFTRI4BsZOh9PvLs=
|
||||
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.10.1/go.mod h1:l9ymW25HOqymeU2m1gbUQ3rUIsTwKs8gYHXkqDQUhiI=
|
||||
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.2.3 h1:xbwRyCy7kXrOj89iIKLB6NfE2WCpP9HoKyk8dMDvnIQ=
|
||||
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.2.3/go.mod h1:R+/S1O4TYpcktbVwddeOYg+uwUfLhADP2S/x4QwsCTM=
|
||||
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.10.3 h1:kJOolE8xBAD13xTCgOakByZkyP4D/owNmvEiioeUNAg=
|
||||
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.10.3/go.mod h1:Owv1I59vaghv1Ax8zz8ELY8DN7/Y0rGS+WWAmjgi950=
|
||||
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.16.3 h1:KV0z2RDc7euMtg8aUT1czv5p29zcLlXALNFsd3jkkEc=
|
||||
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.16.3/go.mod h1:KZgs2ny8HsxRIRbDwgvJcHHBZPOzQr/+NtGwnP+w2ec=
|
||||
github.com/aws/aws-sdk-go-v2/service/marketplacemetering v1.18.2 h1:UaKsLxZ4sHdYlyX2cRZ+7YznCQS7jwHHgVy1hKkNKfE=
|
||||
github.com/aws/aws-sdk-go-v2/service/marketplacemetering v1.18.2/go.mod h1:4L1Z3QlQqkGEPSRH9fYPuHLxNEK54VgExjw4J/ShjbM=
|
||||
github.com/aws/aws-sdk-go-v2/service/s3 v1.42.2 h1:NnduxUd9+Fq9DcCDdJK8v6l9lR1xDX4usvog+JuQAno=
|
||||
github.com/aws/aws-sdk-go-v2/service/s3 v1.42.2/go.mod h1:NXRKkiRF+erX2hnybnVU660cYT5/KChRD4iUgJ97cI8=
|
||||
github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.23.2 h1:M5NodszNDBfyfFBKoAzJY0flmkkQCg7MGk6+/vBGjCM=
|
||||
github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.23.2/go.mod h1:+8dYLQz+I30HIGyhp+6htf3+yyGTqBzzTOG90Ai8lWs=
|
||||
github.com/aws/aws-sdk-go-v2/service/sso v1.17.2 h1:V47N5eKgVZoRSvx2+RQ0EpAEit/pqOhqeSQFiS4OFEQ=
|
||||
github.com/aws/aws-sdk-go-v2/service/sso v1.17.2/go.mod h1:/pE21vno3q1h4bbhUOEi+6Zu/aT26UK2WKkDXd+TssQ=
|
||||
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.19.2 h1:sMAcO7VHVw28HTAdZpTULDzFirHOsVm/x25CxhUH0jA=
|
||||
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.19.2/go.mod h1:dWqm5G767qwKPuayKfzm4rjzFmVjiBFbOJrpSPnAMDs=
|
||||
github.com/aws/aws-sdk-go-v2/service/sts v1.25.2 h1:vwyiRTnXLqsak/6WAQ+uTRhVqKI6vxUQ0HJXjKij0zM=
|
||||
github.com/aws/aws-sdk-go-v2/service/sts v1.25.2/go.mod h1:4EqRHDCKP78hq3zOnmFXu5k0j4bXbRFfCh/zQ6KnEfQ=
|
||||
github.com/aws/smithy-go v1.17.0 h1:wWJD7LX6PBV6etBUwO0zElG0nWN9rUhp0WdYeHSHAaI=
|
||||
github.com/aws/smithy-go v1.17.0/go.mod h1:NukqUGpCZIILqqiV0NIjeFh24kd/FAa4beRb6nbIUPE=
|
||||
github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
|
||||
github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
|
||||
github.com/bmatcuk/doublestar/v4 v4.6.1 h1:FH9SifrbvJhnlQpztAx++wlkk70QBf0iBWDwNy7PA4I=
|
||||
|
@ -327,8 +327,8 @@ github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfC
|
|||
github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU=
|
||||
github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk=
|
||||
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
|
||||
github.com/klauspost/compress v1.17.2 h1:RlWWUY/Dr4fL8qk9YG7DTZ7PDgME2V4csBXA8L/ixi4=
|
||||
github.com/klauspost/compress v1.17.2/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE=
|
||||
github.com/klauspost/compress v1.17.3 h1:qkRjuerhUU1EmXLYGkSH6EZL+vPSxIrYjLNAK4slzwA=
|
||||
github.com/klauspost/compress v1.17.3/go.mod h1:/dCuZOvVtNoHsyb+cuJD3itjs3NbnF6KH9zAO4BDxPM=
|
||||
github.com/kr/fs v0.1.0 h1:Jskdu9ieNAYnjxsi0LbQp1ulIKZV1LAFgK1tWhpZgl8=
|
||||
github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg=
|
||||
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
|
||||
|
@ -378,8 +378,8 @@ github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0 h1:jWpvCLoY8Z/e3VKvls
|
|||
github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0/go.mod h1:QUyp042oQthUoa9bqDv0ER0wrtXnBruoNd7aNjkbP+k=
|
||||
github.com/mhale/smtpd v0.8.0 h1:5JvdsehCg33PQrZBvFyDMMUDQmvbzVpZgKob7eYBJc0=
|
||||
github.com/mhale/smtpd v0.8.0/go.mod h1:MQl+y2hwIEQCXtNhe5+55n0GZOjSmeqORDIXbqUL3x4=
|
||||
github.com/miekg/dns v1.1.56 h1:5imZaSeoRNvpM9SzWNhEcP9QliKiz20/dA2QabIGVnE=
|
||||
github.com/miekg/dns v1.1.56/go.mod h1:cRm6Oo2C8TY9ZS/TqsSrseAcncm74lfK5G+ikN2SWWY=
|
||||
github.com/miekg/dns v1.1.57 h1:Jzi7ApEIzwEPLHWRcafCN9LZSBbqQpxjt/wpgvg7wcM=
|
||||
github.com/miekg/dns v1.1.57/go.mod h1:uqRjCRUuEAA6qsOiJvDd+CFo/vW+y5WR6SNmHE55hZk=
|
||||
github.com/minio/sio v0.3.1 h1:d59r5RTHb1OsQaSl1EaTWurzMMDRLA5fgNmjzD4eVu4=
|
||||
github.com/minio/sio v0.3.1/go.mod h1:S0ovgVgc+sTlQyhiXA1ppBLv7REM7TYi5yyq2qL/Y6o=
|
||||
github.com/mitchellh/go-testing-interface v1.14.1 h1:jrgshOhYAUVNMAJiKbEu7EqAwgJJ2JqpQmpLJOu07cU=
|
||||
|
|
|
@ -169,6 +169,7 @@ type shareLoginPage struct {
|
|||
Version string
|
||||
Error string
|
||||
CSRFToken string
|
||||
CSPNonce string
|
||||
StaticURL string
|
||||
Branding UIBranding
|
||||
}
|
||||
|
@ -594,12 +595,13 @@ func (s *httpdServer) renderClientResetPwdPage(w http.ResponseWriter, r *http.Re
|
|||
renderClientTemplate(w, templateResetPassword, data)
|
||||
}
|
||||
|
||||
func (s *httpdServer) renderShareLoginPage(w http.ResponseWriter, currentURL, error, ip string) {
|
||||
func (s *httpdServer) renderShareLoginPage(w http.ResponseWriter, r *http.Request, error, ip string) {
|
||||
data := shareLoginPage{
|
||||
CurrentURL: currentURL,
|
||||
CurrentURL: r.RequestURI,
|
||||
Version: version.Get().Version,
|
||||
Error: error,
|
||||
CSRFToken: createCSRFToken(ip),
|
||||
CSPNonce: secure.CSPNonce(r.Context()),
|
||||
StaticURL: webStaticFilesPath,
|
||||
Branding: s.binding.Branding.WebClient,
|
||||
}
|
||||
|
@ -1763,29 +1765,29 @@ func (s *httpdServer) ensurePDF(w http.ResponseWriter, r *http.Request, name str
|
|||
|
||||
func (s *httpdServer) handleClientShareLoginGet(w http.ResponseWriter, r *http.Request) {
|
||||
r.Body = http.MaxBytesReader(w, r.Body, maxLoginBodySize)
|
||||
s.renderShareLoginPage(w, r.RequestURI, "", util.GetIPFromRemoteAddress(r.RemoteAddr))
|
||||
s.renderShareLoginPage(w, r, "", util.GetIPFromRemoteAddress(r.RemoteAddr))
|
||||
}
|
||||
|
||||
func (s *httpdServer) handleClientShareLoginPost(w http.ResponseWriter, r *http.Request) {
|
||||
r.Body = http.MaxBytesReader(w, r.Body, maxLoginBodySize)
|
||||
ipAddr := util.GetIPFromRemoteAddress(r.RemoteAddr)
|
||||
if err := r.ParseForm(); err != nil {
|
||||
s.renderShareLoginPage(w, r.RequestURI, err.Error(), ipAddr)
|
||||
s.renderShareLoginPage(w, r, err.Error(), ipAddr)
|
||||
return
|
||||
}
|
||||
if err := verifyCSRFToken(r.Form.Get(csrfFormToken), ipAddr); err != nil {
|
||||
s.renderShareLoginPage(w, r.RequestURI, err.Error(), ipAddr)
|
||||
s.renderShareLoginPage(w, r, err.Error(), ipAddr)
|
||||
return
|
||||
}
|
||||
shareID := getURLParam(r, "id")
|
||||
share, err := dataprovider.ShareExists(shareID, "")
|
||||
if err != nil {
|
||||
s.renderShareLoginPage(w, r.RequestURI, dataprovider.ErrInvalidCredentials.Error(), ipAddr)
|
||||
s.renderShareLoginPage(w, r, dataprovider.ErrInvalidCredentials.Error(), ipAddr)
|
||||
return
|
||||
}
|
||||
match, err := share.CheckCredentials(strings.TrimSpace(r.Form.Get("share_password")))
|
||||
if !match || err != nil {
|
||||
s.renderShareLoginPage(w, r.RequestURI, dataprovider.ErrInvalidCredentials.Error(), ipAddr)
|
||||
s.renderShareLoginPage(w, r, dataprovider.ErrInvalidCredentials.Error(), ipAddr)
|
||||
return
|
||||
}
|
||||
c := jwtTokenClaims{
|
||||
|
@ -1793,7 +1795,7 @@ func (s *httpdServer) handleClientShareLoginPost(w http.ResponseWriter, r *http.
|
|||
}
|
||||
err = c.createAndSetCookie(w, r, s.tokenAuth, tokenAudienceWebShare, ipAddr)
|
||||
if err != nil {
|
||||
s.renderShareLoginPage(w, r.RequestURI, common.ErrInternalFailure.Error(), ipAddr)
|
||||
s.renderShareLoginPage(w, r, common.ErrInternalFailure.Error(), ipAddr)
|
||||
return
|
||||
}
|
||||
next := path.Clean(r.URL.Query().Get("next"))
|
||||
|
|
6
static/vendor/pdfobject/pdfobject.min.js
vendored
6
static/vendor/pdfobject/pdfobject.min.js
vendored
File diff suppressed because one or more lines are too long
|
@ -123,6 +123,40 @@ explicit grant from the SFTPGo Team (support@sftpgo.com).
|
|||
+' '+(e?'KMGTPEZY'[--e]+'iB':'Bytes')
|
||||
}
|
||||
|
||||
function initRepeaterItems() {
|
||||
let repeaterDeleteButtons = document.querySelectorAll('[data-repeater-delete]');
|
||||
let repeaterCreateButtons = document.querySelectorAll('[data-repeater-create]');
|
||||
|
||||
repeaterDeleteButtons.forEach(d => {
|
||||
d.addEventListener("click", function(e){
|
||||
e.preventDefault();
|
||||
});
|
||||
});
|
||||
|
||||
repeaterCreateButtons.forEach(d => {
|
||||
d.addEventListener("click", function(e){
|
||||
e.preventDefault();
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function initRepeater(selector) {
|
||||
$(selector).repeater({
|
||||
initEmpty: false,
|
||||
|
||||
show: function () {
|
||||
$(this).slideDown();
|
||||
$(this).find('[data-repeater-delete]').on("click", function(e){
|
||||
e.preventDefault();
|
||||
});
|
||||
},
|
||||
|
||||
hide: function (deleteElement) {
|
||||
$(this).slideUp(deleteElement);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
KTUtil.onDOMContentLoaded(function () {
|
||||
var dismissErrorBtn = $('#id_dismiss_error_msg');
|
||||
if (dismissErrorBtn){
|
||||
|
|
|
@ -63,7 +63,7 @@ explicit grant from the SFTPGo Team (support@sftpgo.com).
|
|||
{{end}}
|
||||
|
||||
{{- define "extra_js"}}
|
||||
<script type="text/javascript" {{- if .CSPNonce}} nonce="{{.}}"{{- end}}>
|
||||
<script type="text/javascript" {{- if .CSPNonce}} nonce="{{.CSPNonce}}"{{- end}}>
|
||||
KTUtil.onDOMContentLoaded(function () {
|
||||
$('#change_pwd_form').submit(function (event) {
|
||||
let submitButton = document.querySelector('#form_submit');
|
||||
|
|
|
@ -101,7 +101,7 @@ explicit grant from the SFTPGo Team (support@sftpgo.com).
|
|||
|
||||
{{- define "extra_js"}}
|
||||
<script src="{{.StaticURL}}/vendor/codemirror/cm6.bundle.min.js"></script>
|
||||
<script type="text/javascript" {{- if .CSPNonce}} nonce="{{.}}"{{- end}}>
|
||||
<script type="text/javascript" {{- if .CSPNonce}} nonce="{{.CSPNonce}}"{{- end}}>
|
||||
var cmView;
|
||||
|
||||
function keepAlive() {
|
||||
|
|
|
@ -183,8 +183,8 @@ explicit grant from the SFTPGo Team (support@sftpgo.com).
|
|||
<script src="{{.StaticURL}}/vendor/glightbox/glightbox.min.js"></script>
|
||||
<script src="{{.StaticURL}}/vendor/pdfobject/pdfobject.min.js"></script>
|
||||
<script src="{{.StaticURL}}/vendor/video-js/video.min.js"></script>
|
||||
{{- if not .ShareUploadBaseURL}}
|
||||
<script type="text/javascript" {{- if .CSPNonce}} nonce="{{.CSPNonce}}"{{- end}}>
|
||||
//{{- if not .ShareUploadBaseURL}}
|
||||
const supportedEditExtensions = ["csv", "bat", "dyalog", "apl", "asc", "pgp", "sig", "asn", "asn1", "b", "bf",
|
||||
"c", "h", "ino", "cpp", "c++", "cc", "cxx", "hpp", "h++", "hh", "hxx", "cob", "cpy", "cbl", "cs", "clj",
|
||||
"cljc", "cljx", "cljs", "gss", "cmake", "cmake.in", "coffee", "cl", "lisp", "el", "cyp", "cypher",
|
||||
|
@ -203,9 +203,7 @@ explicit grant from the SFTPGo Team (support@sftpgo.com).
|
|||
"vtl", "vhd", "vhdl", "vue", "xml", "xsl", "xsd", "svg", "xy", "xquery", "ys", "yaml", "yml", "z80",
|
||||
"mscgen", "mscin", "msc", "xu", "msgenny", "wat", "wast"];
|
||||
const supportedEditFilenames = ["readme", "dockerfile", "pkgbuild"]
|
||||
</script>
|
||||
{{- end}}
|
||||
<script type="text/javascript" {{- if .CSPNonce}} nonce="{{.CSPNonce}}"{{- end}}>
|
||||
//{{- end}}
|
||||
function keepAlive() {
|
||||
//{{- if not .ShareUploadBaseURL}}
|
||||
axios.get('{{.PingURL}}',{
|
||||
|
@ -255,13 +253,12 @@ explicit grant from the SFTPGo Team (support@sftpgo.com).
|
|||
render: function (data, type, row) {
|
||||
if (type === 'display') {
|
||||
data = escapeHTML(data);
|
||||
let dirPath = row['dir_path'];
|
||||
return `<div class="d-flex align-items-center">
|
||||
<i class="ki-duotone ki-folder fs-1 text-primary me-4">
|
||||
<i class="path1"></i>
|
||||
<i class="path2"></i>
|
||||
</i>
|
||||
<a href="#" onclick="onDirBrowserClick('${dirPath}');" class="text-gray-700 text-hover-primary">${data}</a>
|
||||
<a href="#" class="text-gray-700 text-hover-primary" data-dirbrowser-table-row="open">${data}</a>
|
||||
</div>`
|
||||
}
|
||||
return data;
|
||||
|
@ -289,8 +286,22 @@ explicit grant from the SFTPGo Team (support@sftpgo.com).
|
|||
});
|
||||
|
||||
dt.on('draw', function () {
|
||||
let navHTML = `<i class="ki-duotone ki-home fs-1 text-primary me-3"></i>
|
||||
<a href="#" onclick="onDirBrowserClick('%2F');">Home</a>`;
|
||||
let dirBrowserNav = document.getElementById("dirs_browser_nav");
|
||||
while (dirBrowserNav.firstChild) {
|
||||
dirBrowserNav.removeChild(dirBrowserNav.firstChild);
|
||||
}
|
||||
let mainNavIcon = document.createElement("i");
|
||||
mainNavIcon.classList.add("ki-duotone", "ki-home", "fs-1", "text-primary", "me-3");
|
||||
let mainNavLink = document.createElement("a");
|
||||
mainNavLink.textContent = "Home";
|
||||
mainNavLink.href = "#";
|
||||
mainNavLink.addEventListener("click", function(e){
|
||||
e.preventDefault();
|
||||
onDirBrowserClick("%2F");
|
||||
});
|
||||
dirBrowserNav.appendChild(mainNavIcon);
|
||||
dirBrowserNav.appendChild(mainNavLink);
|
||||
|
||||
let p = "/";
|
||||
if (curDir && curDir != "%2F") {
|
||||
p = decodeURIComponent(curDir.replace(/\+/g, '%20'));
|
||||
|
@ -305,13 +316,24 @@ explicit grant from the SFTPGo Team (support@sftpgo.com).
|
|||
fullPath += encodeURIComponent("/" + dir);
|
||||
}
|
||||
dir = escapeHTML(dir);
|
||||
navHTML += `<i class="ki-duotone ki-right fs-2x text-primary mx-1"></i>
|
||||
<a href="#" onclick="onDirBrowserClick('${fullPath}');">${dir}</a>`;
|
||||
let navIcon = document.createElement("i");
|
||||
navIcon.classList.add("ki-duotone", "ki-right", "fs-2x", "text-primary", "mx-1");
|
||||
let navLink = document.createElement("a");
|
||||
navLink.textContent = dir;
|
||||
navLink.href = "#";
|
||||
let pathCopy = fullPath
|
||||
navLink.addEventListener("click", function(e){
|
||||
e.preventDefault();
|
||||
onDirBrowserClick(pathCopy);
|
||||
});
|
||||
dirBrowserNav.appendChild(navIcon);
|
||||
dirBrowserNav.appendChild(navLink);
|
||||
}
|
||||
}
|
||||
}
|
||||
document.getElementById("dirs_browser_nav").innerHTML = navHTML;
|
||||
|
||||
$('#move_copy_folder').val(p);
|
||||
handleRowActions();
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -367,6 +389,18 @@ explicit grant from the SFTPGo Team (support@sftpgo.com).
|
|||
});
|
||||
}
|
||||
|
||||
function handleRowActions(){
|
||||
const openLinks = document.querySelectorAll('[data-dirbrowser-table-row="open"]');
|
||||
|
||||
openLinks.forEach(d => {
|
||||
d.addEventListener("click", function(e){
|
||||
e.preventDefault();
|
||||
const parent = e.target.closest('tr');
|
||||
onDirBrowserClick(dt.row(parent).data()['dir_path']);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
return {
|
||||
init: function (url, dirPath) {
|
||||
curDir = dirPath;
|
||||
|
@ -524,19 +558,8 @@ explicit grant from the SFTPGo Team (support@sftpgo.com).
|
|||
case "ogg":
|
||||
case "mp3":
|
||||
case "wav":
|
||||
let mediaType = 'video/mp4';
|
||||
if (extension == 'webm'){
|
||||
mediaType = 'video/webm';
|
||||
} else if (extension == 'ogg' || extension == 'ogv') {
|
||||
mediaType = 'video/ogg';
|
||||
} else if (extension == 'mp3'){
|
||||
mediaType = 'audio/mpeg';
|
||||
} else if (extension == 'wav'){
|
||||
mediaType = 'audio/wav';
|
||||
}
|
||||
let name = b64EncodeUnicode(row["name"]);
|
||||
previewDiv = `<div class="ms-2" data-kt-filemanger-table="view_item">
|
||||
<a href="#" onclick="openVideoPlayer('${name}', '${row['url']}', '${mediaType}');" class="btn btn-sm btn-icon btn-light btn-active-light-primary">
|
||||
<a href="#" class="btn btn-sm btn-icon btn-light btn-active-light-primary" data-kt-filemanager-table-action="view_media">
|
||||
<i class="ki-duotone ki-eye fs-5 m-0">
|
||||
<span class="path1"></span>
|
||||
<span class="path2"></span>
|
||||
|
@ -576,7 +599,6 @@ explicit grant from the SFTPGo Team (support@sftpgo.com).
|
|||
//{{- end}}
|
||||
}
|
||||
}
|
||||
let meta = b64EncodeUnicode(row["meta"]);
|
||||
let more = `{{- if not .ShareUploadBaseURL}}
|
||||
{{- if or .CanRename .CanAddFiles .CanShare .CanDelete }}
|
||||
<div class="ms-2">
|
||||
|
@ -591,22 +613,22 @@ explicit grant from the SFTPGo Team (support@sftpgo.com).
|
|||
<div class="menu menu-sub menu-sub-dropdown menu-column menu-rounded menu-gray-700 menu-state-bg-light-primary fw-semibold fs-7 w-150px py-4" data-kt-menu="true">
|
||||
{{- if .CanRename}}
|
||||
<div class="menu-item px-3">
|
||||
<a href="#" onclick="renameItem('${meta}');" class="menu-link px-3" data-kt-filemanager-table="rename">Rename</a>
|
||||
<a href="#" class="menu-link px-3" data-kt-filemanager-table-action="rename">Rename</a>
|
||||
</div>
|
||||
{{- end}}
|
||||
{{- if or .CanRename .CanAddFiles}}
|
||||
<div class="menu-item px-3">
|
||||
<a href="#" onclick="moveOrCopyItem('${meta}');" class="menu-link px-3" data-kt-filemanager-table-filter="move_or_copy">Move or copy</a>
|
||||
<a href="#" class="menu-link px-3" data-kt-filemanager-table-action="move_or_copy">Move or copy</a>
|
||||
</div>
|
||||
{{- end}}
|
||||
{{- if .CanShare}}
|
||||
<div class="menu-item px-3">
|
||||
<a href="#" onclick="shareItem('${meta}');" class="menu-link px-3" data-kt-filemanager-table="share">Share</a>
|
||||
<a href="#" class="menu-link px-3" data-kt-filemanager-table-action="share">Share</a>
|
||||
</div>
|
||||
{{- end}}
|
||||
{{- if .CanDelete}}
|
||||
<div class="menu-item px-3">
|
||||
<a href="#" onclick="deleteItem('${meta}');" class="menu-link text-danger px-3" data-kt-filemanager-table-filter="delete">Delete</a>
|
||||
<a href="#" class="menu-link text-danger px-3" data-kt-filemanager-table-action="delete">Delete</a>
|
||||
</div>
|
||||
{{- end}}
|
||||
</div>
|
||||
|
@ -682,6 +704,7 @@ explicit grant from the SFTPGo Team (support@sftpgo.com).
|
|||
});
|
||||
}
|
||||
toggleToolbars();
|
||||
handleRowActions();
|
||||
});
|
||||
|
||||
dt.on('user-select', function(e, dt, type, cell, originalEvent){
|
||||
|
@ -750,6 +773,59 @@ explicit grant from the SFTPGo Team (support@sftpgo.com).
|
|||
}
|
||||
}
|
||||
|
||||
function handleRowActions() {
|
||||
const renameButtons = document.querySelectorAll('[data-kt-filemanager-table-action="rename"]');
|
||||
|
||||
renameButtons.forEach(d => {
|
||||
d.addEventListener("click", function(e){
|
||||
e.preventDefault();
|
||||
const parent = e.target.closest('tr');
|
||||
renameItem(dt.row(parent).data()["meta"]);
|
||||
});
|
||||
});
|
||||
|
||||
const moveCopyButtons = document.querySelectorAll('[data-kt-filemanager-table-action="move_or_copy"]');
|
||||
|
||||
moveCopyButtons.forEach(d => {
|
||||
d.addEventListener("click", function(e){
|
||||
e.preventDefault();
|
||||
const parent = e.target.closest('tr');
|
||||
moveOrCopyItem(dt.row(parent).data()["meta"]);
|
||||
});
|
||||
});
|
||||
|
||||
const shareButtons = document.querySelectorAll('[data-kt-filemanager-table-action="share"]');
|
||||
|
||||
shareButtons.forEach(d => {
|
||||
d.addEventListener("click", function(e){
|
||||
e.preventDefault();
|
||||
const parent = e.target.closest('tr');
|
||||
shareItem(dt.row(parent).data()["meta"]);
|
||||
});
|
||||
});
|
||||
|
||||
const deleteButtons = document.querySelectorAll('[data-kt-filemanager-table-action="delete"]');
|
||||
|
||||
deleteButtons.forEach(d => {
|
||||
d.addEventListener("click", function(e){
|
||||
e.preventDefault();
|
||||
const parent = e.target.closest('tr');
|
||||
deleteItem(dt.row(parent).data()["meta"]);
|
||||
});
|
||||
});
|
||||
|
||||
const viewMediaLinks = document.querySelectorAll('[data-kt-filemanager-table-action="view_media"]');
|
||||
|
||||
viewMediaLinks.forEach(d => {
|
||||
d.addEventListener("click", function(e){
|
||||
e.preventDefault();
|
||||
const parent = e.target.closest('tr');
|
||||
let rowData = dt.row(parent).data();
|
||||
openVideoPlayer(rowData["name"], rowData["url"]);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
var initLightbox = function() {
|
||||
lightbox = GLightbox({
|
||||
slideHTML: `<div class="gslide">
|
||||
|
@ -985,10 +1061,9 @@ explicit grant from the SFTPGo Team (support@sftpgo.com).
|
|||
|
||||
function moveOrCopyItem(meta) {
|
||||
$('#errorMsg').addClass("d-none");
|
||||
let decodedMeta = UnicodeDecodeB64(meta);
|
||||
$('#move_copy_name_container').removeClass("d-none");
|
||||
$('#move_copy_source').val(meta);
|
||||
$('#move_copy_name').val(getNameFromMeta(decodedMeta));
|
||||
$('#move_copy_name').val(getNameFromMeta(meta));
|
||||
$('#modal_move_or_copy').modal('show');
|
||||
KTDatatablesFoldersExplorer.init('{{.DirsURL}}?dirtree=1&path={{.CurrentDir}}', '{{.CurrentDir}}');
|
||||
}
|
||||
|
@ -1017,7 +1092,7 @@ explicit grant from the SFTPGo Team (support@sftpgo.com).
|
|||
});
|
||||
});
|
||||
} else {
|
||||
let meta = UnicodeDecodeB64($('#move_copy_source').val());
|
||||
let meta = $('#move_copy_source').val();
|
||||
let sourceName = getNameFromMeta(meta);
|
||||
items.push({
|
||||
targetDir: targetDir,
|
||||
|
@ -1204,7 +1279,6 @@ explicit grant from the SFTPGo Team (support@sftpgo.com).
|
|||
let errDivEl = $('#errorMsg');
|
||||
let errTxtEl = $('#errorTxt');
|
||||
errDivEl.addClass("d-none");
|
||||
meta = UnicodeDecodeB64(meta);
|
||||
let itemName = getNameFromMeta(meta);
|
||||
|
||||
ModalAlert.fire({
|
||||
|
@ -1251,7 +1325,6 @@ explicit grant from the SFTPGo Team (support@sftpgo.com).
|
|||
}
|
||||
|
||||
function shareItem(meta) {
|
||||
meta = UnicodeDecodeB64(meta);
|
||||
let filesArray = [];
|
||||
filesArray.push(getNameFromMeta(meta));
|
||||
let files = encodeURIComponent(JSON.stringify(filesArray));
|
||||
|
@ -1263,8 +1336,7 @@ explicit grant from the SFTPGo Team (support@sftpgo.com).
|
|||
|
||||
function renameItem(meta) {
|
||||
$('#errorMsg').addClass("d-none");
|
||||
let decodedMeta = UnicodeDecodeB64(meta);
|
||||
let oldName = getNameFromMeta(decodedMeta);
|
||||
let oldName = getNameFromMeta(meta);
|
||||
$('#rename_old_name').val(meta);
|
||||
$('#rename_new_name').val(oldName);
|
||||
$('#rename_title').text(`Rename "${oldName}"`);
|
||||
|
@ -1272,8 +1344,8 @@ explicit grant from the SFTPGo Team (support@sftpgo.com).
|
|||
}
|
||||
|
||||
function doRename() {
|
||||
let decodedMeta = UnicodeDecodeB64($('#rename_old_name').val());
|
||||
let oldName = getNameFromMeta(decodedMeta);
|
||||
let meta = $('#rename_old_name').val();
|
||||
let oldName = getNameFromMeta(meta);
|
||||
let newName = $('#rename_new_name').val();
|
||||
let errDivEl = $('#errorMsg');
|
||||
let errTxtEl = $('#errorTxt');
|
||||
|
@ -1474,7 +1546,19 @@ explicit grant from the SFTPGo Team (support@sftpgo.com).
|
|||
uploadFile();
|
||||
}
|
||||
|
||||
function openVideoPlayer(name, url, videoType){
|
||||
function openVideoPlayer(name, url){
|
||||
let extension = name.slice((name.lastIndexOf(".") - 1 >>> 0) + 2).toLowerCase();
|
||||
let videoType = 'video/mp4';
|
||||
if (extension == 'webm') {
|
||||
videoType = 'video/webm';
|
||||
} else if (extension == 'ogg' || extension == 'ogv') {
|
||||
videoType = 'video/ogg';
|
||||
} else if (extension == 'mp3') {
|
||||
videoType = 'audio/mpeg';
|
||||
} else if (extension == 'wav') {
|
||||
videoType = 'audio/wav';
|
||||
}
|
||||
|
||||
if (!player){
|
||||
player = videojs('video_player', {
|
||||
controls: true,
|
||||
|
@ -1482,7 +1566,7 @@ explicit grant from the SFTPGo Team (support@sftpgo.com).
|
|||
preload: 'auto'
|
||||
});
|
||||
}
|
||||
$("#video_title").text(UnicodeDecodeB64(name));
|
||||
$("#video_title").text(name);
|
||||
$('#modal_video_player').modal('show');
|
||||
player.src({
|
||||
type: videoType,
|
||||
|
|
|
@ -139,20 +139,10 @@ explicit grant from the SFTPGo Team (support@sftpgo.com).
|
|||
{{- define "extra_js"}}
|
||||
{{- if .LoggedUser.CanManagePublicKeys}}
|
||||
<script src="{{.StaticURL}}/assets/plugins/custom/formrepeater/formrepeater.bundle.js"></script>
|
||||
<script type="text/javascript" {{- if .CSPNonce}} nonce="{{.}}"{{- end}}>
|
||||
<script type="text/javascript" {{- if .CSPNonce}} nonce="{{.CSPNonce}}"{{- end}}>
|
||||
KTUtil.onDOMContentLoaded(function () {
|
||||
$('#public_keys').repeater({
|
||||
initEmpty: false,
|
||||
|
||||
show: function () {
|
||||
$(this).slideDown();
|
||||
},
|
||||
|
||||
hide: function (deleteElement) {
|
||||
$(this).slideUp(deleteElement);
|
||||
}
|
||||
});
|
||||
|
||||
initRepeater('#public_keys');
|
||||
initRepeaterItems();
|
||||
|
||||
$("#page_form").submit(function (event) {
|
||||
let submitButton = document.querySelector('#form_submit');
|
||||
|
|
|
@ -191,17 +191,8 @@ explicit grant from the SFTPGo Team (support@sftpgo.com).
|
|||
<script src="{{.StaticURL}}/assets/plugins/custom/formrepeater/formrepeater.bundle.js"></script>
|
||||
<script type="text/javascript" {{- if .CSPNonce}} nonce="{{.CSPNonce}}"{{- end}}>
|
||||
KTUtil.onDOMContentLoaded(function () {
|
||||
$('#paths').repeater({
|
||||
initEmpty: false,
|
||||
|
||||
show: function () {
|
||||
$(this).slideDown();
|
||||
},
|
||||
|
||||
hide: function (deleteElement) {
|
||||
$(this).slideUp(deleteElement);
|
||||
}
|
||||
});
|
||||
initRepeater('#paths');
|
||||
initRepeaterItems();
|
||||
|
||||
const picker = new tempusDominus.TempusDominus(document.getElementById("id_expiration"), {
|
||||
localization: {
|
||||
|
@ -209,7 +200,7 @@ explicit grant from the SFTPGo Team (support@sftpgo.com).
|
|||
}
|
||||
});
|
||||
//{{ if gt .Share.ExpiresAt 0 }}
|
||||
let input_dt = moment('{{.Share.ExpiresAt }}','x').toDate();
|
||||
let input_dt = moment('{{.Share.ExpiresAt }}', 'x').toDate();
|
||||
picker.dates.setValue(tempusDominus.DateTime.convert(input_dt));
|
||||
//{{ end }}
|
||||
|
||||
|
@ -232,6 +223,5 @@ explicit grant from the SFTPGo Team (support@sftpgo.com).
|
|||
return true;
|
||||
});
|
||||
});
|
||||
|
||||
</script>
|
||||
{{- end}}
|
|
@ -161,121 +161,174 @@ explicit grant from the SFTPGo Team (support@sftpgo.com).
|
|||
}
|
||||
|
||||
function showShareLink(shareID, shareScope, isExpired) {
|
||||
if (isExpired == "1") {
|
||||
$('#expiredShare').show();
|
||||
if (isExpired == "1") {
|
||||
$('#expiredShare').show();
|
||||
$('#writeShare').hide();
|
||||
$('#readShare').hide();
|
||||
} else {
|
||||
let shareURL = '{{.BasePublicSharesURL}}' + "/" + fixedEncodeURIComponent(shareID);
|
||||
if (shareScope == 'Read') {
|
||||
$('#expiredShare').hide();
|
||||
$('#writeShare').hide();
|
||||
$('#readShare').hide();
|
||||
$('#readShare').show();
|
||||
$('#readLink').attr("href", shareURL);
|
||||
$('#readLink').attr("title", shareURL);
|
||||
$('#readUncompressedLink').attr("href", shareURL + "?compress=false");
|
||||
$('#readUncompressedLink').attr("title", shareURL + "?compress=false");
|
||||
$('#readBrowseLink').attr("href", shareURL + "/browse");
|
||||
$('#readBrowseLink').attr("title", shareURL + "/browse");
|
||||
} else {
|
||||
let shareURL = '{{.BasePublicSharesURL}}' + "/" + fixedEncodeURIComponent(shareID);
|
||||
if (shareScope == 'Read') {
|
||||
$('#expiredShare').hide();
|
||||
$('#writeShare').hide();
|
||||
$('#readShare').show();
|
||||
$('#readLink').attr("href", shareURL);
|
||||
$('#readLink').attr("title", shareURL);
|
||||
$('#readUncompressedLink').attr("href", shareURL + "?compress=false");
|
||||
$('#readUncompressedLink').attr("title", shareURL + "?compress=false");
|
||||
$('#readBrowseLink').attr("href", shareURL + "/browse");
|
||||
$('#readBrowseLink').attr("title", shareURL + "/browse");
|
||||
} else {
|
||||
$('#expiredShare').hide();
|
||||
$('#writeShare').show();
|
||||
$('#readShare').hide();
|
||||
$('#writePageLink').attr("href", shareURL + "/upload");
|
||||
$('#writePageLink').attr("title", shareURL + "/upload");
|
||||
}
|
||||
$('#expiredShare').hide();
|
||||
$('#writeShare').show();
|
||||
$('#readShare').hide();
|
||||
$('#writePageLink').attr("href", shareURL + "/upload");
|
||||
$('#writePageLink').attr("title", shareURL + "/upload");
|
||||
}
|
||||
$('#link_modal').modal('show');
|
||||
}
|
||||
$('#link_modal').modal('show');
|
||||
}
|
||||
|
||||
KTUtil.onDOMContentLoaded(function () {
|
||||
const tableData = [];
|
||||
{{- range .Shares}}
|
||||
tableData.push(['{{.Name}}','{{.GetScopeAsString}}','{{.GetInfoString}}','{{.ShareID}}','{{- if .IsExpired}}1{{- else}}0{{- end}}']);
|
||||
{{- end}}
|
||||
const tableData = [];
|
||||
{{- range .Shares}}
|
||||
tableData.push(['{{.Name}}','{{.GetScopeAsString}}','{{.GetInfoString}}','{{.ShareID}}','{{- if .IsExpired}}1{{- else}}0{{- end}}']);
|
||||
{{- end}}
|
||||
|
||||
let dt = $('#dataTable').DataTable({
|
||||
data: tableData,
|
||||
columnDefs: [
|
||||
{
|
||||
targets: 3,
|
||||
searchable: false,
|
||||
orderable: false,
|
||||
className: 'text-end',
|
||||
render: function (data, type, row) {
|
||||
if (type === 'display') {
|
||||
return `<div class="d-flex justify-content-end">
|
||||
<div class="ms-2">
|
||||
<a href="#" onclick="showShareLink('${row[3]}','${row[1]}','${row[4]}')" class="btn btn-sm btn-icon btn-light btn-active-light-primary">
|
||||
<i class="ki-duotone ki-fasten fs-5 m-0">
|
||||
<span class="path1"></span>
|
||||
<span class="path2"></span>
|
||||
</i>
|
||||
</a>
|
||||
</div>
|
||||
<div class="ms-2">
|
||||
<button type="button" class="btn btn-sm btn-icon btn-light btn-active-light-primary"
|
||||
data-kt-menu-trigger="click" data-kt-menu-placement="bottom-end">
|
||||
<i class="ki-duotone ki-dots-square fs-5 m-0">
|
||||
<span class="path1"></span>
|
||||
<span class="path2"></span>
|
||||
<span class="path3"></span>
|
||||
<span class="path4"></span>
|
||||
</i>
|
||||
</button>
|
||||
<div class="menu menu-sub menu-sub-dropdown menu-column menu-rounded menu-gray-600 menu-state-bg-light-primary fw-semibold fs-7 w-150px py-4" data-kt-menu="true">
|
||||
<div class="menu-item px-3">
|
||||
<a href="#" onclick="editAction('${row[3]}');" class="menu-link px-3">Edit</a>
|
||||
</div>
|
||||
<div class="menu-item px-3">
|
||||
<a href="#" onclick="deleteAction('${row[3]}');" class="menu-link text-danger px-3">Delete</a>
|
||||
var sharesDatatable = function(){
|
||||
var dt;
|
||||
|
||||
var initDatatable = function () {
|
||||
dt = $('#dataTable').DataTable({
|
||||
data: tableData,
|
||||
columnDefs: [
|
||||
{
|
||||
targets: 3,
|
||||
searchable: false,
|
||||
orderable: false,
|
||||
className: 'text-end',
|
||||
render: function (data, type, row) {
|
||||
if (type === 'display') {
|
||||
return `<div class="d-flex justify-content-end">
|
||||
<div class="ms-2">
|
||||
<a href="#" class="btn btn-sm btn-icon btn-light btn-active-light-primary" data-share-table-action="show_link">
|
||||
<i class="ki-duotone ki-fasten fs-5 m-0">
|
||||
<span class="path1"></span>
|
||||
<span class="path2"></span>
|
||||
</i>
|
||||
</a>
|
||||
</div>
|
||||
<div class="ms-2">
|
||||
<button type="button" class="btn btn-sm btn-icon btn-light btn-active-light-primary"
|
||||
data-kt-menu-trigger="click" data-kt-menu-placement="bottom-end">
|
||||
<i class="ki-duotone ki-dots-square fs-5 m-0">
|
||||
<span class="path1"></span>
|
||||
<span class="path2"></span>
|
||||
<span class="path3"></span>
|
||||
<span class="path4"></span>
|
||||
</i>
|
||||
</button>
|
||||
<div class="menu menu-sub menu-sub-dropdown menu-column menu-rounded menu-gray-600 menu-state-bg-light-primary fw-semibold fs-7 w-150px py-4" data-kt-menu="true">
|
||||
<div class="menu-item px-3">
|
||||
<a href="#" class="menu-link px-3" data-share-table-action="edit_row">Edit</a>
|
||||
</div>
|
||||
<div class="menu-item px-3">
|
||||
<a href="#" class="menu-link text-danger px-3" data-share-table-action="delete_row">Delete</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>`;
|
||||
</div>`;
|
||||
}
|
||||
return "";
|
||||
}
|
||||
},
|
||||
{
|
||||
targets: [0, 2],
|
||||
render: function (data, type, row) {
|
||||
if (type === 'display') {
|
||||
return escapeHTML(data);
|
||||
}
|
||||
return data
|
||||
}
|
||||
return "";
|
||||
}
|
||||
],
|
||||
deferRender: true,
|
||||
stateSave: true,
|
||||
stateDuration: 0,
|
||||
stateLoadParams: function (settings, data) {
|
||||
if (data.search.search){
|
||||
const filterSearch = document.querySelector('[data-share-table-filter="search"]');
|
||||
filterSearch.value = data.search.search;
|
||||
}
|
||||
},
|
||||
language: {
|
||||
emptyTable: "No share defined"
|
||||
},
|
||||
{
|
||||
targets: [0, 2],
|
||||
render: function (data, type, row) {
|
||||
if (type === 'display') {
|
||||
return escapeHTML(data);
|
||||
}
|
||||
return data
|
||||
}
|
||||
order: [[1, 'asc']],
|
||||
initComplete: function(settings, json) {
|
||||
$('#loader').addClass("d-none");
|
||||
$('#card_content').removeClass("d-none");
|
||||
let api = $.fn.dataTable.Api(settings);
|
||||
api.columns.adjust().draw();
|
||||
KTMenu.createInstances();
|
||||
handleRowActions();
|
||||
}
|
||||
],
|
||||
deferRender: true,
|
||||
stateSave: true,
|
||||
stateDuration: 0,
|
||||
stateLoadParams: function (settings, data) {
|
||||
if (data.search.search){
|
||||
const filterSearch = document.querySelector('[data-share-table-filter="search"]');
|
||||
filterSearch.value = data.search.search;
|
||||
}
|
||||
},
|
||||
language: {
|
||||
emptyTable: "No share defined"
|
||||
},
|
||||
order: [[1, 'asc']],
|
||||
initComplete: function(settings, json) {
|
||||
$('#loader').addClass("d-none");
|
||||
$('#card_content').removeClass("d-none");
|
||||
$.fn.dataTable.Api(settings).columns.adjust().draw();
|
||||
});
|
||||
|
||||
dt.on('draw', function () {
|
||||
KTMenu.createInstances();
|
||||
handleRowActions();
|
||||
});
|
||||
}
|
||||
|
||||
var handleSearchDatatable = function () {
|
||||
const filterSearch = document.querySelector('[data-share-table-filter="search"]');
|
||||
filterSearch.addEventListener('keyup', function (e) {
|
||||
dt.rows().deselect();
|
||||
dt.search(e.target.value, true, false).draw();
|
||||
});
|
||||
}
|
||||
|
||||
function handleRowActions() {
|
||||
const editButtons = document.querySelectorAll('[data-share-table-action="edit_row"]');
|
||||
|
||||
editButtons.forEach(d => {
|
||||
d.addEventListener("click", function(e){
|
||||
e.preventDefault();
|
||||
const parent = e.target.closest('tr');
|
||||
editAction(dt.row(parent).data()[3]);
|
||||
});
|
||||
});
|
||||
|
||||
const deleteButtons = document.querySelectorAll('[data-share-table-action="delete_row"]');
|
||||
|
||||
deleteButtons.forEach(d => {
|
||||
d.addEventListener("click", function(e){
|
||||
e.preventDefault();
|
||||
const parent = e.target.closest('tr');
|
||||
deleteAction(dt.row(parent).data()[3]);
|
||||
});
|
||||
});
|
||||
|
||||
const showLinkButtons = document.querySelectorAll('[data-share-table-action="show_link"]');
|
||||
|
||||
showLinkButtons.forEach(d => {
|
||||
d.addEventListener("click", function(e){
|
||||
e.preventDefault();
|
||||
let rowData = dt.row(e.target.closest('tr')).data();
|
||||
showShareLink(rowData[3], rowData[1], rowData[4]);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
return {
|
||||
init: function () {
|
||||
initDatatable();
|
||||
handleSearchDatatable();
|
||||
}
|
||||
});
|
||||
|
||||
document.querySelector('[data-share-table-filter="search"]').addEventListener('keyup', function(e){
|
||||
dt.search(e.target.value, true, false).draw();
|
||||
});
|
||||
|
||||
dt.on('draw', function () {
|
||||
KTMenu.createInstances();
|
||||
});
|
||||
}
|
||||
}();
|
||||
|
||||
KTUtil.onDOMContentLoaded(function () {
|
||||
sharesDatatable.init();
|
||||
});
|
||||
</script>
|
||||
{{end}}
|
|
@ -54,7 +54,7 @@ explicit grant from the SFTPGo Team (support@sftpgo.com).
|
|||
{{- end}}
|
||||
|
||||
{{- define "extra_js"}}
|
||||
<script type="text/javascript" {{- if .CSPNonce}} nonce="{{.}}"{{- end}}>
|
||||
<script type="text/javascript" {{- if .CSPNonce}} nonce="{{.CSPNonce}}"{{- end}}>
|
||||
|
||||
function uploadFiles(files) {
|
||||
let has_errors = false;
|
||||
|
|
|
@ -27,7 +27,7 @@ explicit grant from the SFTPGo Team (support@sftpgo.com).
|
|||
|
||||
<body>
|
||||
<script src="{{.StaticURL}}/vendor/pdfobject/pdfobject.min.js"></script>
|
||||
<script type="text/javascript" {{- if .CSPNonce}} nonce="{{.}}"{{- end}}>
|
||||
<script type="text/javascript" {{- if .CSPNonce}} nonce="{{.CSPNonce}}"{{- end}}>
|
||||
PDFObject.embed("{{.URL}}", document.body);
|
||||
</script>
|
||||
</body>
|
||||
|
|
Loading…
Add table
Reference in a new issue