Compare commits

...

25 Commits

Author SHA1 Message Date
Henrique Dias
2d63c288e4 chore: version 1.7.0
Former-commit-id: fad547009e94abcf390a7a9a5fbda912890f5558 [formerly 38266b3eac1f5b6f45d12fdfa83afcf7daa98e60] [formerly e36ec6f4c2b25002be967b4a5dc9566749ac8d42 [formerly 97d26e2348]]
Former-commit-id: 59730ce4eac5932e9d52ffd5dbe810f52f69f548 [formerly 327efa168ad4669b585228fd6b7ced76b261e1f7]
Former-commit-id: d325631f00a18d8fc6009f571b66192809cb8875
2018-03-10 13:25:46 +00:00
Henrique Dias
218a96eebd chore: update dependencies
Former-commit-id: 17c4e043823582d827f3de6a50fc48f2c60250a7 [formerly b1783b936da0e7ede97e128c0d73d20c4c0f5c1b] [formerly b170eca4528721f3269451f6fabeffa54d08fcb9 [formerly fbf49d61d6]]
Former-commit-id: b34516564cf6520f8c21693e287c092bc65b76e9 [formerly b45a4f2367831aee0e5def4096e34b6afb4b8a83]
Former-commit-id: b06ebe48ba6311fa50488aa26b0cc74118d4dfd7
2018-03-10 13:25:11 +00:00
Henrique Dias
4fbef557ee chore: setting untracked version [ci skip]
Former-commit-id: 0fbfd17b4531b45f781fb8517eb155ec953a98f2 [formerly 3a6821e11c979bc638eeb1d31458f1ff7605f69e] [formerly 0ecb209c4172fc504860f25325e03d78f4a12408 [formerly dc97fb7dc6]]
Former-commit-id: 18dc494d9c4b250dc451316ee6c342e0bc26a5e0 [formerly e375068391bba6b1e4c477895bcf054574c7865a]
Former-commit-id: eed4fd2cddeb199b22843a293e8471cb3a40ab0a
2018-03-10 09:00:56 +00:00
Henrique Dias
0a4c803650 chore: version 1.6.0
Former-commit-id: 9b5297726d87eb6617a8c99a1f8e23c9b4d7f1e2 [formerly e227cf02e128ba194fba68f9aca3ea61476e65f4] [formerly 4d23059dc7db2615079ea2364ea5db10663a27e5 [formerly 5f9d216542]]
Former-commit-id: 7676703b8cf5c681fd671a7fe457f4bcdeafcdc2 [formerly 13e2b075b1db00a8de95742ac1a377bdb8272585]
Former-commit-id: 64bfe1b140a3d98c1e6c77b1d225cfb7e5ed5055
2018-03-10 09:00:46 +00:00
Henrique Dias
68c5b8cd52 chore: remove failing arches
Former-commit-id: bca9d8ef1c447c295b564711e52271c233ee76aa [formerly a8b9b2c7706199b9e655f77f51193540af9dcdaa] [formerly e03e1f77be77d2f9ae853472c03197183e3d000e [formerly 4c197176fc]]
Former-commit-id: 0a904664f8bf4177eb1e573a3dbd2e71ffbd86b4 [formerly 74c0785f2cd7b5c92c910f9043b9ccc06433acbc]
Former-commit-id: 70a547ce5220e833f393a9c94b1d70c76fa708d1
2018-03-10 09:00:24 +00:00
Equim
0cff87be24 alternative ReCaptcha, close #366
Former-commit-id: c8c9baff75891868283bd353c83a19d38e6bc0e9 [formerly 88aeffc35a402c44c9c92a534c8cd271124826a7] [formerly 39cfd0e090894509e913100aa2f9b325ad6e5b68 [formerly 6e1c6a4a8c]]
Former-commit-id: a49c1046af3ba28c469e93e7d88013f5a6b1d062 [formerly 07c801b64ed03b187bb1dd9bbfb502b92572af44]
Former-commit-id: aa69ed3d4d78f8942b8b2c924c73c8e4c4965520
2018-02-27 17:12:54 +00:00
Equim
a2fcb8b3b0 feat: 6 bytes version of share link, close #331
Former-commit-id: a4a4edf89a32e9b8338474eb3322de69e12da83e [formerly 57124e6118adfbf0ae38ec77ce6816f6351174ad] [formerly 6d9e5b81bf0f52373147cb46d3c71d7e8e1362a7 [formerly f0a703baa7]]
Former-commit-id: 7da431b8bf791bdfe66fca2b0f87fc4b4918543b [formerly 4d02e3f0a697b912fb639b09857ae5daa0851ebf]
Former-commit-id: 87af8b945b414dad82d1c6769d6ec014e097aa22
2018-02-27 17:06:23 +00:00
Equim
5eb9e95720 chore: use dep to manage vendor (#364)
Former-commit-id: a5262bb5a3ca329e8d9d7f68bbcd932bcd4f5aa0 [formerly 38cda564a25a09a12a849a5ac756b55e895d8ac7] [formerly b70c0cf897f19e468259148fc75e9a60de5252ab [formerly a184b775b3]]
Former-commit-id: 1de8ed7a5b316b7a64cad814c0efc80b67a9668f [formerly 5ef584fce122832b7e9200e6a7c6259a2b0e3c09]
Former-commit-id: 7e11fda1d06bd57d16a03a17d7c3a644e46c451a
2018-02-25 08:55:48 +00:00
Henrique Dias
967d4e28de chore: setting untracked version [ci skip]
Former-commit-id: 093104cb4d68178bf5de22289d58c465fca10552 [formerly 17499e5eec1c3c54f9e1c699818ea823be3d6728] [formerly 0e561b7ea77348ba12e29173607062c6badccc88 [formerly 4bd2e8e333]]
Former-commit-id: 992c37c538e5aa2aec9b6504cf836f2dd6aea2c9 [formerly cf3727500421de16876ddc84462d48b5600e1946]
Former-commit-id: af2ab326c2092bc169a44622e56b10000d6091dc
2018-02-24 08:45:44 +00:00
Henrique Dias
ee53803fc2 chore: version 1.5.5
Former-commit-id: cee33f264a3b98f9e635203f38793a5b4147792f [formerly 0619dbb1ca27fb4b3f030a77c2a1eae4233f3c87] [formerly eb56b144bfc0ec579fac4abd31aae495f3ba3498 [formerly 04096b6d1e]]
Former-commit-id: 4630f7870de9502b05b9bfd84c0feb022220b20b [formerly 029af42ac358788458facfba9236265e78bf681a]
Former-commit-id: b4471eb6375f7a46fe7344f6e301ea88722d389e
2018-02-24 08:45:16 +00:00
Henrique Dias
fa2ab280aa chore: bump frontend version
Former-commit-id: a381a7cf11629dc1fd8c847299f90b931accf2c6 [formerly 8da5f9853d69fb4a77a9d563be75408a1c0abf26] [formerly d7eaec9372fea8b12154755ccfb5a527e7d4a105 [formerly b0e3ec25ba]]
Former-commit-id: d745e4d51195a9d054bec17809f6a2c4da296c94 [formerly 03513fff5e0c16d3a2d694e5e2a76465157b1bb1]
Former-commit-id: c94620ff90019ee0e725fd1fa16017368a8d9715
2018-02-24 08:44:31 +00:00
Henrique Dias
395801016b chore: setting untracked version [ci skip]
Former-commit-id: f35ba7ce165f0d16b5943a26f713cfdd701d1ea1 [formerly 6a439c90d9c04a9d7c946444f1177b328f2b4735] [formerly 85ae45844946d0f4575b5fb1929fecb9a9a56b1b [formerly 52803ddb26]]
Former-commit-id: 1678fc7a028b881e4e7c7a721adaf51120877b04 [formerly c5a6dcf31959b2444d38a93705edb7ade958122d]
Former-commit-id: 73bd93eac053a1857d034f30af66a3f1fee3bd36
2018-02-18 12:27:49 +00:00
Henrique Dias
30ed82a70f chore: version 1.5.4
Former-commit-id: 1ad07843678a00d0f24d490dbdbbe5c211782c91 [formerly f0328a485087490f0f6fb1bdb8751ce0377edb63] [formerly 381a1863aa910ba03b89b47769b575f6dc2869d6 [formerly 83af6f2720]]
Former-commit-id: 8bdb8c1913820d84a3b504a7d55c98cd675baa58 [formerly 6b84fde09c4e03b8d9504d9786ae953e69d83402]
Former-commit-id: 9ddd4867df78fcbf7cd8302ab408fef3cdbf8906
2018-02-18 12:27:38 +00:00
Henrique Dias
ab643cd0c4 fix: not being able to change settings (#359)
Former-commit-id: 6230e0e979ca561a778be5f1aa245e85adb808e9 [formerly a14bfa497f716aa95a6b24d04e09361f06ff0b31] [formerly 008421161a7563ce29631cd103eef34597dd211a [formerly 7e962180b2]]
Former-commit-id: 3ac8515e4d0d2fff862af27ef14b23a8a66226a6 [formerly 83798c187f0df689f85f4118140661f04c051d60]
Former-commit-id: 1edf72e1db7824b1a64fbd97889835d20d9af500
2018-02-18 12:26:07 +00:00
Henrique Dias
85e5beaa4a chore: setting untracked version [ci skip]
Former-commit-id: c61d0cbd94e07432d75926fdc2c23dc365674351 [formerly f48aae15e3a532a9988b63be960185fd839db46d] [formerly 7807dcf654b3a05c2743b63fbd63d3a42e4381fc [formerly d117e4d005]]
Former-commit-id: a8fcba07f677764ee58f5bde4f10cb7dddf18bef [formerly aba5eff7c0ea571e728322e33070a977323f194c]
Former-commit-id: 3eb36b35a1672e254b046131309556ee22b1845d
2018-02-18 10:03:45 +00:00
Henrique Dias
3cab34c68b chore: version 1.5.3
Former-commit-id: fdf8f683da6bfb0c9c5f653f89969ed28a5fac86 [formerly ba0afcdbb13ea6040a77397d9b5cc1844b04d3df] [formerly c5625bc490f452970645719cec512f62796da98e [formerly 13030c7ace]]
Former-commit-id: d3fd31bf729a46295c53b3bbd9f7d2c09ce1ed13 [formerly 8278bc090fd8b99ef07b3d376d1243f14c8aa7aa]
Former-commit-id: ca391495213b2523fbde1c2aef1ee7a7818715e2
2018-02-18 10:03:34 +00:00
Henrique Dias
8299f8ed06 chore: go 1.10 and fix linters
Former-commit-id: 289bceb9a90eb2422a69010863e7f2691eae357f [formerly b0cbba626a1185f95c6ce98d453cce99ee208e97] [formerly 90388476afb899550d56c82f836203e3d7942df6 [formerly 5c188d9dd4]]
Former-commit-id: a318b0f544706102d05a1f6faaeb2bbbd11ede29 [formerly 05b5bf7216959990c8cdccebae5fd91769aa9596]
Former-commit-id: af8ef1c7dc5926a9f6912249b2c0a334452c239b
2018-02-18 09:59:49 +00:00
Henrique Dias
da05c5048e fix: bypass errors on symbolic links
Former-commit-id: 20cd8429be62bbe7c4f2ee48f7dddc2f389d5117 [formerly f857fe8d323a25e00e193f959aac605d742d7f15] [formerly 2c4ef521c756b902b7914a42958c163db85c2cc3 [formerly df453ca634]]
Former-commit-id: a638071b19674d82400639a142cb32085c20d1d9 [formerly aaabe20901f149ec00f4eea1ac730a6cf9f30856]
Former-commit-id: 43a13d56401f6b18fee8cff4806f960cd5683314
2018-02-18 09:49:40 +00:00
Henrique Dias
071e1ec19b chore: setting untracked version [ci skip]
Former-commit-id: d3e7532c6a00a899c1447cca4cd995e1f8feab73 [formerly 4d445abd785ae0adb8c8d0d748efbffa4ac2d001] [formerly 098e184c167f80cf3780e043ce941b3b36ddb41e [formerly 22327703fd]]
Former-commit-id: 84da73349f055e544276fafd9d3b4663ebe4e7d9 [formerly 28a71db5fb466aedb66045068a20647f192d12ad]
Former-commit-id: dbdc0c0a3953dbdd941cd3310bedbfc3d957362a
2018-02-04 00:40:16 +01:00
Henrique Dias
8884e68806 chore: version 1.5.2
Former-commit-id: 590181d208cd1a1addabbffa5c860afe234fbc60 [formerly d04974b17bc5cb290eca029c8e99af7d8a8555e8] [formerly a138ec0dba4609b2093dea1091ec8a4141504ae9 [formerly 60026f943b]]
Former-commit-id: 09ecb88b44745c160aa1db5262d299ce249b95bc [formerly 8458b1c621fa766998da3a886ac990495cf771ae]
Former-commit-id: 0a0bb60c235a1a2a8b98282d9e63ca5defb7d90f
2018-02-04 00:40:06 +01:00
Henrique Dias
68bfbe5103 feat: readd caddy to this repo
Former-commit-id: cf48e35cd8c5ceff57d1353c75ffacd1de96e9ad [formerly d62bc138c736881547184977110cd622f2d31847] [formerly 4270b9fb5c907097ce6babffcedafccb5a8b6356 [formerly 385cfba0ff]]
Former-commit-id: 04e6142a81d677781664c9a79e960465fadd3eb4 [formerly 2152b2410fb078914c788bf7f15ca8028af54c58]
Former-commit-id: e88a3fce1b9d16421ce9c1aa9c63c90705878bd2
2018-02-04 00:38:07 +01:00
Henrique Dias
4a7bdfc59b chore: setting untracked version [ci skip]
Former-commit-id: bf80464d9d029dbe2ad94e6a0578767051edcd0e [formerly 338f2cc8d8e86b6666d692fa1497da3acf0bd5f7] [formerly 2ed27b9f856328760b427bc0ad19eb62a04aabc0 [formerly 05cca04f2e]]
Former-commit-id: a7f4dd93d50011d538a206f6d5e317407c33f8bf [formerly 2386141b2825821c379d15bb183fddad6eb80b4d]
Former-commit-id: 5014565536c407489923ec844f0818b9f671d2f4
2018-02-03 00:15:05 +01:00
Henrique Dias
b54a5cda59 chore: version 1.5.1
Former-commit-id: 8b5c4c9bb6373d53f0e8aee54b338c717e53a8bb [formerly 67714d7f475bbfddf77427860f038cec27764eaf] [formerly 3d1eb5103718e6519089467f9e0e3daa0f40479b [formerly ce06238423]]
Former-commit-id: 3e2400fd4b834a53fe6ecd8392d0f23a40bf45ed [formerly f15d2d67c065605ca52cf4fe32a644fe5b1c3553]
Former-commit-id: 11c1a8703cbac67cb5b4aed103e81e3db99e5851
2018-02-03 00:14:53 +01:00
Henrique Dias
418ce4fa15 feat: add german translation
Former-commit-id: 5021b155e5e191373a738f209450e968faab5014 [formerly 1f22f637a5d4d33fbed4519ca07881a407e629c1] [formerly a4de3ae977d9bbf7562544d6b31e795877fba167 [formerly 7392c9637e]]
Former-commit-id: 058499b5e728c54e8d2530093e824fb06e969206 [formerly 2d351f9a003955c7b7ed9986a7cf8ecce099a755]
Former-commit-id: ea6d9c2dbc2d2b230977ac06a9ad1a947c3f9b3e
2018-02-03 00:14:31 +01:00
Henrique Dias
6e27059f25 chore: setting untracked version [ci skip]
Former-commit-id: dbd4a231305b18e0c44ed6bfe2579ce57daa86d3 [formerly 7b516acecac4a5115aeeea00069568d7a4258a73] [formerly 629208fd6a67debd2ce9914b4607a5c92cd4a278 [formerly 8bf8bc3a15]]
Former-commit-id: d7556c9c4943edf716afec49b87ef789e7544d8f [formerly 9cc4bf24fc00ff27f97ba391e4faf2fef341de3f]
Former-commit-id: 01c3a4ad98ec88352dd20fb7c371920d71668075
2018-02-01 16:19:18 +00:00
20 changed files with 1037 additions and 63 deletions

View File

@@ -2,20 +2,23 @@ version: 2
jobs:
linting:
docker:
- image: circleci/golang:1.9
- image: circleci/golang:1.10
working_directory: /go/src/github.com/filebrowser/filebrowser
steps:
- checkout
- run:
name: Install Dependencies
command: |
cd cmd/filebrowser && go get ./... && cd ../..
curl -sL -o $GOPATH/bin/dep https://github.com/golang/dep/releases/download/v0.4.1/dep-linux-amd64
chmod +x $GOPATH/bin/dep
dep ensure -v
go get github.com/alecthomas/gometalinter
gometalinter --install
- run:
name: Run linting
command: |
gometalinter --exclude="rice-box.go" \
--deadline=300s \
-D goconst \
-D gocyclo \
-D vetshadow \
@@ -24,30 +27,31 @@ jobs:
-D gas
build:
docker:
- image: circleci/golang:1.9
- image: circleci/golang:1.10
working_directory: /go/src/github.com/filebrowser/filebrowser
steps:
- checkout
- run:
name: Install Dependencies
command: |
cd cmd/filebrowser
go get ./...
curl -sL -o $GOPATH/bin/dep https://github.com/golang/dep/releases/download/v0.4.1/dep-linux-amd64
chmod +x $GOPATH/bin/dep
dep ensure -v
- run:
name: Building
command: go build
command: go build github.com/filebrowser/filebrowser/cmd/filebrowser
deploy:
docker:
- image: circleci/golang:1.9
- image: circleci/golang:1.10
working_directory: /go/src/github.com/filebrowser/filebrowser
steps:
- checkout
- run:
name: Install Dependencies
command: |
cd cmd/filebrowser
go get ./...
cd ../..
curl -sL -o $GOPATH/bin/dep https://github.com/golang/dep/releases/download/v0.4.1/dep-linux-amd64
chmod +x $GOPATH/bin/dep
dep ensure -v
- run:
name: Deploy
command: curl -sL https://git.io/goreleaser | bash

3
.gitignore vendored
View File

@@ -9,4 +9,5 @@ yarn-error.log*
.idea
.vscode
package-lock.json
yarn.lock
yarn.lock
vendor

View File

@@ -15,10 +15,6 @@ build:
- 386
- arm
- arm64
- mips
- mips64
- mipsle
- mips64le
ignore:
- goos: openbsd
goarch: arm

View File

@@ -1,24 +1,25 @@
FROM golang:alpine
COPY . /go/src/github.com/filebrowser/filebrowser
WORKDIR /go/src/github.com/filebrowser/filebrowser
RUN apk add --no-cache git
RUN go get ./...
WORKDIR /go/src/github.com/filebrowser/filebrowser/cmd/filebrowser
RUN CGO_ENABLED=0 go build -a
RUN mv filebrowser /go/bin/filebrowser
FROM scratch
COPY --from=0 /go/bin/filebrowser /filebrowser
VOLUME /tmp
VOLUME /srv
EXPOSE 80
COPY Docker.json /config.json
ENTRYPOINT ["/filebrowser"]
CMD ["--config", "/config.json"]
FROM golang:alpine
COPY . /go/src/github.com/filebrowser/filebrowser
WORKDIR /go/src/github.com/filebrowser/filebrowser
RUN apk add --no-cache git curl && \
curl -fsSL -o /usr/local/bin/dep https://github.com/golang/dep/releases/download/v0.4.1/dep-linux-amd64 && \
chmod +x /usr/local/bin/dep
RUN dep ensure -vendor-only
WORKDIR /go/src/github.com/filebrowser/filebrowser/cmd/filebrowser
RUN CGO_ENABLED=0 go build -a
RUN mv filebrowser /go/bin/filebrowser
FROM scratch
COPY --from=0 /go/bin/filebrowser /filebrowser
VOLUME /tmp
VOLUME /srv
EXPOSE 80
COPY Docker.json /config.json
ENTRYPOINT ["/filebrowser"]
CMD ["--config", "/config.json"]

423
Gopkg.lock generated Normal file
View File

@@ -0,0 +1,423 @@
# This file is autogenerated, do not edit; changes may be undone by the next 'dep ensure'.
[[projects]]
branch = "master"
name = "github.com/BurntSushi/toml"
packages = ["."]
revision = "a368813c5e648fee92e5f6c30e3944ff9d5e8895"
[[projects]]
branch = "master"
name = "github.com/GeertJohan/go.rice"
packages = [
".",
"embedded"
]
revision = "c02ca9a983da5807ddf7d796784928f5be4afd09"
[[projects]]
branch = "master"
name = "github.com/aead/chacha20"
packages = [
".",
"chacha"
]
revision = "c8d29375923a8e1d2a0f0dc0fc1d8a0aba5b97ba"
[[projects]]
name = "github.com/asdine/storm"
packages = [
".",
"codec",
"codec/json",
"index",
"internal",
"q"
]
revision = "68fc73b635f890fe7ba2f3b15ce80c85b28a744f"
version = "v2.0.2"
[[projects]]
branch = "master"
name = "github.com/bifurcation/mint"
packages = [
".",
"syntax"
]
revision = "340be3ae8c0ff8edce24cf59e7acdb1432bd5ce5"
[[projects]]
name = "github.com/chaseadamsio/goorgeous"
packages = ["."]
revision = "dcf1ef873b8987bf12596fe6951c48347986eb2f"
version = "v1.1.0"
[[projects]]
branch = "master"
name = "github.com/codahale/aesnicheck"
packages = ["."]
revision = "349fcc471aaccc29cd074e1275f1a494323826cd"
[[projects]]
name = "github.com/coreos/bbolt"
packages = ["."]
revision = "583e8937c61f1af6513608ccc75c97b6abdf4ff9"
version = "v1.3.0"
[[projects]]
branch = "master"
name = "github.com/daaku/go.zipexe"
packages = ["."]
revision = "a5fe2436ffcb3236e175e5149162b41cd28bd27d"
[[projects]]
name = "github.com/dgrijalva/jwt-go"
packages = [
".",
"request"
]
revision = "dbeaa9332f19a944acb5736b4456cfcc02140e29"
version = "v3.1.0"
[[projects]]
branch = "master"
name = "github.com/dsnet/compress"
packages = [
".",
"bzip2",
"bzip2/internal/sais",
"internal",
"internal/errors",
"internal/prefix"
]
revision = "cc9eb1d7ad760af14e8f918698f745e80377af4f"
[[projects]]
branch = "master"
name = "github.com/flynn/go-shlex"
packages = ["."]
revision = "3f9db97f856818214da2e1057f8ad84803971cff"
[[projects]]
name = "github.com/fsnotify/fsnotify"
packages = ["."]
revision = "c2828203cd70a50dcccfb2761f8b1f8ceef9a8e9"
version = "v1.4.7"
[[projects]]
name = "github.com/gohugoio/hugo"
packages = ["parser"]
revision = "25e88ccabe9b04c42ffb43528c86743f623fac46"
version = "v0.36.1"
[[projects]]
branch = "master"
name = "github.com/golang/snappy"
packages = ["."]
revision = "553a641470496b2327abcac10b36396bd98e45c9"
[[projects]]
name = "github.com/gorilla/websocket"
packages = ["."]
revision = "ea4d1f681babbce9545c9c5f3d5194a789c89f5b"
version = "v1.2.0"
[[projects]]
branch = "master"
name = "github.com/hacdias/fileutils"
packages = ["."]
revision = "76b1c6ab906773727a1ce2f7fb22830685166f85"
[[projects]]
branch = "master"
name = "github.com/hacdias/varutils"
packages = ["."]
revision = "82d3b57f667a756cfc4b1535951b46878881f3e1"
[[projects]]
branch = "master"
name = "github.com/hashicorp/go-syslog"
packages = ["."]
revision = "326bf4a7f709d263f964a6a96558676b103f3534"
[[projects]]
branch = "master"
name = "github.com/hashicorp/golang-lru"
packages = [
".",
"simplelru"
]
revision = "0fb14efe8c47ae851c0034ed7a448854d3d34cf3"
[[projects]]
branch = "master"
name = "github.com/hashicorp/hcl"
packages = [
".",
"hcl/ast",
"hcl/parser",
"hcl/scanner",
"hcl/strconv",
"hcl/token",
"json/parser",
"json/scanner",
"json/token"
]
revision = "23c074d0eceb2b8a5bfdbb271ab780cde70f05a8"
[[projects]]
branch = "master"
name = "github.com/kardianos/osext"
packages = ["."]
revision = "ae77be60afb1dcacde03767a8c37337fad28ac14"
[[projects]]
branch = "master"
name = "github.com/lucas-clemente/aes12"
packages = ["."]
revision = "cd47fb39b79f867c6e4e5cd39cf7abd799f71670"
[[projects]]
branch = "master"
name = "github.com/lucas-clemente/fnv128a"
packages = ["."]
revision = "393af48d391698c6ae4219566bfbdfef67269997"
[[projects]]
name = "github.com/lucas-clemente/quic-go"
packages = [
".",
"h2quic",
"internal/ackhandler",
"internal/congestion",
"internal/crypto",
"internal/flowcontrol",
"internal/handshake",
"internal/protocol",
"internal/utils",
"internal/wire",
"qerr"
]
revision = "30851b9a3b4e958490b476fe72adafa67641361a"
version = "v0.7.0"
[[projects]]
branch = "master"
name = "github.com/lucas-clemente/quic-go-certificates"
packages = ["."]
revision = "d2f86524cced5186554df90d92529757d22c1cb6"
[[projects]]
name = "github.com/magiconair/properties"
packages = ["."]
revision = "c3beff4c2358b44d0493c7dda585e7db7ff28ae6"
version = "v1.7.6"
[[projects]]
name = "github.com/mholt/archiver"
packages = ["."]
revision = "26cf5bb32d07aa4e8d0de15f56ce516f4641d7df"
[[projects]]
name = "github.com/mholt/caddy"
packages = [
".",
"caddyfile",
"caddyhttp/httpserver",
"caddyhttp/staticfiles",
"caddytls"
]
revision = "d3f338ddab9ee24b376b5c9c51e202581e2d43ba"
version = "v0.10.11"
[[projects]]
name = "github.com/miekg/dns"
packages = ["."]
revision = "5364553f1ee9cddc7ac8b62dce148309c386695b"
version = "v1.0.4"
[[projects]]
branch = "master"
name = "github.com/mitchellh/mapstructure"
packages = ["."]
revision = "00c29f56e2386353d58c599509e8dc3801b0d716"
[[projects]]
branch = "master"
name = "github.com/nwaples/rardecode"
packages = ["."]
revision = "e06696f847aeda6f39a8f0b7cdff193b7690aef6"
[[projects]]
name = "github.com/pelletier/go-toml"
packages = ["."]
revision = "acdc4509485b587f5e675510c4f2c63e90ff68a8"
version = "v1.1.0"
[[projects]]
name = "github.com/pierrec/lz4"
packages = ["."]
revision = "2fcda4cb7018ce05a25959d2fe08c83e3329f169"
version = "v1.1"
[[projects]]
name = "github.com/pierrec/xxHash"
packages = ["xxHash32"]
revision = "f051bb7f1d1aaf1b5a665d74fb6b0217712c69f7"
version = "v0.1.1"
[[projects]]
name = "github.com/robfig/cron"
packages = ["."]
revision = "b024fc5ea0e34bc3f83d9941c8d60b0622bfaca4"
version = "v1"
[[projects]]
name = "github.com/russross/blackfriday"
packages = ["."]
revision = "4048872b16cc0fc2c5fd9eacf0ed2c2fedaa0c8c"
version = "v1.5"
[[projects]]
branch = "master"
name = "github.com/shurcooL/sanitized_anchor_name"
packages = ["."]
revision = "86672fcb3f950f35f2e675df2240550f2a50762f"
[[projects]]
name = "github.com/spf13/afero"
packages = [
".",
"mem"
]
revision = "bb8f1927f2a9d3ab41c9340aa034f6b803f4359c"
version = "v1.0.2"
[[projects]]
name = "github.com/spf13/cast"
packages = ["."]
revision = "8965335b8c7107321228e3e3702cab9832751bac"
version = "v1.2.0"
[[projects]]
branch = "master"
name = "github.com/spf13/jwalterweatherman"
packages = ["."]
revision = "7c0cea34c8ece3fbeb2b27ab9b59511d360fb394"
[[projects]]
name = "github.com/spf13/pflag"
packages = ["."]
revision = "e57e3eeb33f795204c1ca35f56c44f83227c6e66"
version = "v1.0.0"
[[projects]]
name = "github.com/spf13/viper"
packages = ["."]
revision = "25b30aa063fc18e48662b86996252eabdcf2f0c7"
version = "v1.0.0"
[[projects]]
name = "github.com/ulikunitz/xz"
packages = [
".",
"internal/hash",
"internal/xlog",
"lzma"
]
revision = "0c6b41e72360850ca4f98dc341fd999726ea007f"
version = "v0.5.4"
[[projects]]
name = "github.com/xenolf/lego"
packages = ["acme"]
revision = "67c86d860a797ce2483f50d9174d4ed24984bef2"
version = "v0.4.1"
[[projects]]
branch = "master"
name = "golang.org/x/crypto"
packages = [
"bcrypt",
"blowfish",
"curve25519",
"ed25519",
"ed25519/internal/edwards25519",
"hkdf",
"ocsp"
]
revision = "49796115aa4b964c318aad4f3084fdb41e9aa067"
[[projects]]
branch = "master"
name = "golang.org/x/net"
packages = [
"bpf",
"http2",
"http2/hpack",
"idna",
"internal/iana",
"internal/socket",
"ipv4",
"ipv6",
"lex/httplex",
"publicsuffix"
]
revision = "cbe0f9307d0156177f9dd5dc85da1a31abc5f2fb"
[[projects]]
branch = "master"
name = "golang.org/x/sys"
packages = ["unix"]
revision = "88d2dcc510266da9f7f8c7f34e1940716cab5f5c"
[[projects]]
name = "golang.org/x/text"
packages = [
"collate",
"collate/build",
"internal/colltab",
"internal/gen",
"internal/tag",
"internal/triegen",
"internal/ucd",
"language",
"secure/bidirule",
"transform",
"unicode/bidi",
"unicode/cldr",
"unicode/norm",
"unicode/rangetable"
]
revision = "f21a4dfb5e38f5895301dc265a8def02365cc3d0"
version = "v0.3.0"
[[projects]]
name = "gopkg.in/natefinch/lumberjack.v2"
packages = ["."]
revision = "a96e63847dc3c67d17befa69c303767e2f84e54f"
version = "v2.1"
[[projects]]
name = "gopkg.in/square/go-jose.v1"
packages = [
".",
"cipher",
"json"
]
revision = "aa2e30fdd1fe9dd3394119af66451ae790d50e0d"
version = "v1.1.0"
[[projects]]
name = "gopkg.in/yaml.v2"
packages = ["."]
revision = "7f97868eec74b32b0982dd158a51a446d1da7eb5"
version = "v2.1.1"
[solve-meta]
analyzer-name = "dep"
analyzer-version = 1
inputs-digest = "1f68bed4490068370884abaa296aa651c27b3f2e0d0451a1ab567f059d44f820"
solver-name = "gps-cdcl"
solver-version = 1

70
Gopkg.toml Normal file
View File

@@ -0,0 +1,70 @@
[[constraint]]
branch = "master"
name = "github.com/GeertJohan/go.rice"
[[constraint]]
name = "github.com/asdine/storm"
version = "2.0.2"
[[constraint]]
name = "github.com/dgrijalva/jwt-go"
version = "3.1.0"
[[constraint]]
name = "github.com/gohugoio/hugo"
version = "0.36.1"
[[constraint]]
name = "github.com/gorilla/websocket"
version = "1.2.0"
[[constraint]]
branch = "master"
name = "github.com/hacdias/fileutils"
[[constraint]]
branch = "master"
name = "github.com/hacdias/varutils"
[[constraint]]
name = "github.com/mholt/archiver"
# TODO: switch to version when it's available
# this is for Archiver.Write() which was introduced in 548c791
revision = "26cf5bb32d07aa4e8d0de15f56ce516f4641d7df"
# version = "2.0.0"
[[constraint]]
name = "github.com/mholt/caddy"
version = "0.10.11"
[[constraint]]
branch = "master"
name = "github.com/mitchellh/mapstructure"
[[constraint]]
name = "github.com/robfig/cron"
version = "1.0.0"
[[constraint]]
name = "github.com/spf13/pflag"
version = "1.0.0"
[[constraint]]
name = "github.com/spf13/viper"
version = "1.0.0"
[[constraint]]
branch = "master"
name = "golang.org/x/crypto"
[[constraint]]
name = "gopkg.in/natefinch/lumberjack.v2"
version = "2.1.0"
[[override]]
name = "github.com/russross/blackfriday"
version = "^1.0.0"
[prune]
go-tests = true
unused-packages = true

View File

@@ -0,0 +1,52 @@
package filemanager
import (
"net/http"
"github.com/filebrowser/filebrowser"
"github.com/filebrowser/filebrowser/caddy/parser"
h "github.com/filebrowser/filebrowser/http"
"github.com/mholt/caddy"
"github.com/mholt/caddy/caddyhttp/httpserver"
)
func init() {
caddy.RegisterPlugin("filemanager", caddy.Plugin{
ServerType: "http",
Action: setup,
})
}
type plugin struct {
Next httpserver.Handler
Configs []*filebrowser.FileBrowser
}
// ServeHTTP determines if the request is for this plugin, and if all prerequisites are met.
func (f plugin) ServeHTTP(w http.ResponseWriter, r *http.Request) (int, error) {
for i := range f.Configs {
// Checks if this Path should be handled by File Manager.
if !httpserver.Path(r.URL.Path).Matches(f.Configs[i].BaseURL) {
continue
}
h.Handler(f.Configs[i]).ServeHTTP(w, r)
return 0, nil
}
return f.Next.ServeHTTP(w, r)
}
// setup configures a new FileManager middleware instance.
func setup(c *caddy.Controller) error {
configs, err := parser.Parse(c, "")
if err != nil {
return err
}
httpserver.GetConfig(c).AddMiddleware(func(next httpserver.Handler) httpserver.Handler {
return plugin{Configs: configs, Next: next}
})
return nil
}

52
caddy/hugo/hugo.go Normal file
View File

@@ -0,0 +1,52 @@
package hugo
import (
"net/http"
"github.com/filebrowser/filebrowser"
"github.com/filebrowser/filebrowser/caddy/parser"
h "github.com/filebrowser/filebrowser/http"
"github.com/mholt/caddy"
"github.com/mholt/caddy/caddyhttp/httpserver"
)
func init() {
caddy.RegisterPlugin("hugo", caddy.Plugin{
ServerType: "http",
Action: setup,
})
}
type plugin struct {
Next httpserver.Handler
Configs []*filebrowser.FileBrowser
}
// ServeHTTP determines if the request is for this plugin, and if all prerequisites are met.
func (f plugin) ServeHTTP(w http.ResponseWriter, r *http.Request) (int, error) {
for i := range f.Configs {
// Checks if this Path should be handled by File Manager.
if !httpserver.Path(r.URL.Path).Matches(f.Configs[i].BaseURL) {
continue
}
h.Handler(f.Configs[i]).ServeHTTP(w, r)
return 0, nil
}
return f.Next.ServeHTTP(w, r)
}
// setup configures a new FileManager middleware instance.
func setup(c *caddy.Controller) error {
configs, err := parser.Parse(c, "hugo")
if err != nil {
return err
}
httpserver.GetConfig(c).AddMiddleware(func(next httpserver.Handler) httpserver.Handler {
return plugin{Configs: configs, Next: next}
})
return nil
}

52
caddy/jekyll/jekyll.go Normal file
View File

@@ -0,0 +1,52 @@
package jekyll
import (
"net/http"
"github.com/filebrowser/filebrowser"
"github.com/filebrowser/filebrowser/caddy/parser"
h "github.com/filebrowser/filebrowser/http"
"github.com/mholt/caddy"
"github.com/mholt/caddy/caddyhttp/httpserver"
)
func init() {
caddy.RegisterPlugin("jekyll", caddy.Plugin{
ServerType: "http",
Action: setup,
})
}
type plugin struct {
Next httpserver.Handler
Configs []*filebrowser.FileBrowser
}
// ServeHTTP determines if the request is for this plugin, and if all prerequisites are met.
func (f plugin) ServeHTTP(w http.ResponseWriter, r *http.Request) (int, error) {
for i := range f.Configs {
// Checks if this Path should be handled by File Manager.
if !httpserver.Path(r.URL.Path).Matches(f.Configs[i].BaseURL) {
continue
}
h.Handler(f.Configs[i]).ServeHTTP(w, r)
return 0, nil
}
return f.Next.ServeHTTP(w, r)
}
// setup configures a new FileManager middleware instance.
func setup(c *caddy.Controller) error {
configs, err := parser.Parse(c, "jekyll")
if err != nil {
return err
}
httpserver.GetConfig(c).AddMiddleware(func(next httpserver.Handler) httpserver.Handler {
return plugin{Configs: configs, Next: next}
})
return nil
}

312
caddy/parser/parser.go Normal file
View File

@@ -0,0 +1,312 @@
package parser
import (
"crypto/md5"
"encoding/hex"
"fmt"
"io/ioutil"
"os"
"path/filepath"
"strconv"
"strings"
"github.com/asdine/storm"
"github.com/filebrowser/filebrowser"
"github.com/filebrowser/filebrowser/bolt"
"github.com/filebrowser/filebrowser/staticgen"
"github.com/hacdias/fileutils"
"github.com/mholt/caddy"
"github.com/mholt/caddy/caddyhttp/httpserver"
)
var databases = map[string]*storm.DB{}
// Parse ...
func Parse(c *caddy.Controller, plugin string) ([]*filebrowser.FileBrowser, error) {
var (
configs []*filebrowser.FileBrowser
err error
)
for c.Next() {
u := &filebrowser.User{
Locale: "en",
AllowCommands: true,
AllowEdit: true,
AllowNew: true,
AllowPublish: true,
Commands: []string{"git", "svn", "hg"},
CSS: "",
ViewMode: "mosaic",
Rules: []*filebrowser.Rule{{
Regex: true,
Allow: false,
Regexp: &filebrowser.Regexp{Raw: "\\/\\..+"},
}},
}
baseURL := "/"
scope := "."
database := ""
noAuth := false
alterRecaptcha := false
reCaptchaKey := ""
reCaptchaSecret := ""
if plugin != "" {
baseURL = "/admin"
}
// Get the baseURL and scope
args := c.RemainingArgs()
if plugin == "" {
if len(args) >= 1 {
baseURL = args[0]
}
if len(args) > 1 {
scope = args[1]
}
} else {
if len(args) >= 1 {
scope = args[0]
}
if len(args) > 1 {
baseURL = args[1]
}
}
for c.NextBlock() {
switch c.Val() {
case "database":
if !c.NextArg() {
return nil, c.ArgErr()
}
database = c.Val()
case "locale":
if !c.NextArg() {
return nil, c.ArgErr()
}
u.Locale = c.Val()
case "allow_commands":
if !c.NextArg() {
u.AllowCommands = true
continue
}
u.AllowCommands, err = strconv.ParseBool(c.Val())
if err != nil {
return nil, err
}
case "allow_edit":
if !c.NextArg() {
u.AllowEdit = true
continue
}
u.AllowEdit, err = strconv.ParseBool(c.Val())
if err != nil {
return nil, err
}
case "allow_new":
if !c.NextArg() {
u.AllowNew = true
continue
}
u.AllowNew, err = strconv.ParseBool(c.Val())
if err != nil {
return nil, err
}
case "allow_publish":
if !c.NextArg() {
u.AllowPublish = true
continue
}
u.AllowPublish, err = strconv.ParseBool(c.Val())
if err != nil {
return nil, err
}
case "commands":
if !c.NextArg() {
return nil, c.ArgErr()
}
u.Commands = strings.Split(c.Val(), " ")
case "css":
if !c.NextArg() {
return nil, c.ArgErr()
}
file := c.Val()
css, err := ioutil.ReadFile(file)
if err != nil {
return nil, err
}
u.CSS = string(css)
case "view_mode":
if !c.NextArg() {
return nil, c.ArgErr()
}
u.ViewMode = c.Val()
if u.ViewMode != filebrowser.MosaicViewMode && u.ViewMode != filebrowser.ListViewMode {
return nil, c.ArgErr()
}
case "alternative_recaptcha":
if !c.NextArg() {
alterRecaptcha = true
continue
}
alterRecaptcha, err = strconv.ParseBool(c.Val())
if err != nil {
return nil, err
}
case "recaptcha_key":
if !c.NextArg() {
return nil, c.ArgErr()
}
reCaptchaKey = c.Val()
case "recaptcha_secret":
if !c.NextArg() {
return nil, c.ArgErr()
}
reCaptchaSecret = c.Val()
case "no_auth":
if !c.NextArg() {
noAuth = true
continue
}
noAuth, err = strconv.ParseBool(c.Val())
if err != nil {
return nil, err
}
}
}
caddyConf := httpserver.GetConfig(c)
path := filepath.Join(caddy.AssetsPath(), "filemanager")
err := os.MkdirAll(path, 0700)
if err != nil {
return nil, err
}
// if there is a database path and it is not absolute,
// it will be relative to Caddy folder.
if !filepath.IsAbs(database) && database != "" {
database = filepath.Join(path, database)
}
// If there is no database path on the settings,
// store one in .caddy/filemanager/name.db.
if database == "" {
// The name of the database is the hashed value of a string composed
// by the host, address path and the baseurl of this File Manager
// instance.
hasher := md5.New()
hasher.Write([]byte(caddyConf.Addr.Host + caddyConf.Addr.Path + baseURL))
sha := hex.EncodeToString(hasher.Sum(nil))
database = filepath.Join(path, sha+".db")
fmt.Println("[WARNING] A database is going to be created for your File Manager instance at " + database +
". It is highly recommended that you set the 'database' option to '" + sha + ".db'\n")
}
u.Scope = scope
u.FileSystem = fileutils.Dir(scope)
var db *storm.DB
if stored, ok := databases[database]; ok {
db = stored
} else {
db, err = storm.Open(database)
databases[database] = db
}
if err != nil {
return nil, err
}
recaptchaHost := "https://www.google.com"
if alterRecaptcha {
recaptchaHost = "https://recaptcha.net"
}
m := &filebrowser.FileBrowser{
NoAuth: noAuth,
BaseURL: "",
PrefixURL: "",
ReCaptchaHost: recaptchaHost,
ReCaptchaKey: reCaptchaKey,
ReCaptchaSecret: reCaptchaSecret,
DefaultUser: u,
Store: &filebrowser.Store{
Config: bolt.ConfigStore{DB: db},
Users: bolt.UsersStore{DB: db},
Share: bolt.ShareStore{DB: db},
},
NewFS: func(scope string) filebrowser.FileSystem {
return fileutils.Dir(scope)
},
}
err = m.Setup()
if err != nil {
return nil, err
}
switch plugin {
case "hugo":
// Initialize the default settings for Hugo.
hugo := &staticgen.Hugo{
Root: scope,
Public: filepath.Join(scope, "public"),
Args: []string{},
CleanPublic: true,
}
// Attaches Hugo plugin to this file manager instance.
err = m.Attach(hugo)
if err != nil {
return nil, err
}
case "jekyll":
// Initialize the default settings for Jekyll.
jekyll := &staticgen.Jekyll{
Root: scope,
Public: filepath.Join(scope, "_site"),
Args: []string{},
CleanPublic: true,
}
// Attaches Hugo plugin to this file manager instance.
err = m.Attach(jekyll)
if err != nil {
return nil, err
}
}
if err != nil {
return nil, err
}
m.NoAuth = noAuth
m.SetBaseURL(baseURL)
m.SetPrefixURL(strings.TrimSuffix(caddyConf.Addr.Path, "/"))
configs = append(configs, m)
}
return configs, nil
}

View File

@@ -44,6 +44,7 @@ var (
allowNew bool
allowPublish bool
showVer bool
alterRecaptcha bool
)
func init() {
@@ -64,6 +65,7 @@ func init() {
flag.BoolVar(&allowPublish, "allow-publish", true, "Default allow publish option for new users")
flag.BoolVar(&allowNew, "allow-new", true, "Default allow new option for new users")
flag.BoolVar(&noAuth, "no-auth", false, "Disables authentication")
flag.BoolVar(&alterRecaptcha, "alternative-recaptcha", false, "Use recaptcha.net for serving and handling, useful in China")
flag.StringVar(&locale, "locale", "", "Default locale for new users, set it empty to enable auto detect from browser")
flag.StringVar(&staticg, "staticgen", "", "Static Generator you want to enable")
flag.BoolVarP(&showVer, "version", "v", false, "Show version")
@@ -86,6 +88,7 @@ func setupViper() {
viper.SetDefault("BaseURL", "")
viper.SetDefault("PrefixURL", "")
viper.SetDefault("ViewMode", filebrowser.MosaicViewMode)
viper.SetDefault("AlternativeRecaptcha", false)
viper.SetDefault("ReCaptchaKey", "")
viper.SetDefault("ReCaptchaSecret", "")
@@ -105,6 +108,7 @@ func setupViper() {
viper.BindPFlag("BaseURL", flag.Lookup("baseurl"))
viper.BindPFlag("PrefixURL", flag.Lookup("prefixurl"))
viper.BindPFlag("ViewMode", flag.Lookup("view-mode"))
viper.BindPFlag("AlternativeRecaptcha", flag.Lookup("alternative-recaptcha"))
viper.BindPFlag("ReCaptchaKey", flag.Lookup("recaptcha-key"))
viper.BindPFlag("ReCaptchaSecret", flag.Lookup("recaptcha-secret"))
@@ -186,10 +190,16 @@ func handler() http.Handler {
log.Fatal(err)
}
recaptchaHost := "https://www.google.com"
if viper.GetBool("AlternativeRecaptcha") {
recaptchaHost = "https://recaptcha.net"
}
fm := &filebrowser.FileBrowser{
NoAuth: viper.GetBool("NoAuth"),
BaseURL: viper.GetString("BaseURL"),
PrefixURL: viper.GetString("PrefixURL"),
ReCaptchaHost: recaptchaHost,
ReCaptchaKey: viper.GetString("ReCaptchaKey"),
ReCaptchaSecret: viper.GetString("ReCaptchaSecret"),
DefaultUser: &filebrowser.User{

View File

@@ -134,13 +134,12 @@ func (i *File) GetListing(u *User, r *http.Request) error {
}
if strings.HasPrefix(f.Mode().String(), "L") {
// It's a symbolic link
// The FileInfo from Readdir treats symbolic link as a file only.
// It's a symbolic link. We try to follow it. If it doesn't work,
// we stay with the link information instead if the target's.
info, err := os.Stat(f.Name())
if err != nil {
return err
if err == nil {
f = info
}
f = info
}
if f.IsDir() {

View File

@@ -23,7 +23,7 @@ import (
const (
// Version is the current File Manager version.
Version = "1.5.0"
Version = "1.7.0"
ListViewMode = "list"
MosaicViewMode = "mosaic"
@@ -71,7 +71,8 @@ type FileBrowser struct {
// there will only exist one user, called "admin".
NoAuth bool
// ReCaptcha Site key and secret.
// ReCaptcha host, key and secret.
ReCaptchaHost string
ReCaptchaKey string
ReCaptchaSecret string

View File

@@ -12,7 +12,7 @@ import (
fm "github.com/filebrowser/filebrowser"
)
const reCaptchaAPI = "https://www.google.com/recaptcha/api/siteverify"
const reCaptchaAPI = "/recaptcha/api/siteverify"
type cred struct {
Password string `json:"password"`
@@ -21,14 +21,14 @@ type cred struct {
}
// reCaptcha checks the reCaptcha code.
func reCaptcha(secret string, response string) (bool, error) {
func reCaptcha(host, secret, response string) (bool, error) {
body := url.Values{}
body.Set("secret", secret)
body.Add("response", response)
client := &http.Client{}
resp, err := client.Post(reCaptchaAPI, "application/x-www-form-urlencoded", strings.NewReader(body.Encode()))
resp, err := client.Post(host+reCaptchaAPI, "application/x-www-form-urlencoded", strings.NewReader(body.Encode()))
if err != nil {
return false, err
}
@@ -69,7 +69,7 @@ func authHandler(c *fm.Context, w http.ResponseWriter, r *http.Request) (int, er
// If ReCaptcha is enabled, check the code.
if len(c.ReCaptchaSecret) > 0 {
ok, err := reCaptcha(c.ReCaptchaSecret, cred.ReCaptcha)
ok, err := reCaptcha(c.ReCaptchaHost, c.ReCaptchaSecret, cred.ReCaptcha)
if err != nil {
return http.StatusForbidden, err
}

View File

@@ -223,12 +223,13 @@ func renderFile(c *fm.Context, w http.ResponseWriter, file string) (int, error)
w.Header().Set("Content-Type", contentType+"; charset=utf-8")
data := map[string]interface{}{
"BaseURL": c.RootURL(),
"NoAuth": c.NoAuth,
"Version": fm.Version,
"CSS": template.CSS(c.CSS),
"ReCaptcha": c.ReCaptchaKey != "" && c.ReCaptchaSecret != "",
"ReCaptchaKey": c.ReCaptchaKey,
"BaseURL": c.RootURL(),
"NoAuth": c.NoAuth,
"Version": fm.Version,
"CSS": template.CSS(c.CSS),
"ReCaptcha": c.ReCaptchaKey != "" && c.ReCaptchaSecret != "",
"ReCaptchaHost": c.ReCaptchaHost,
"ReCaptchaKey": c.ReCaptchaKey,
}
if c.StaticGen != nil {

View File

@@ -11,7 +11,7 @@ import (
)
type modifySettingsRequest struct {
*modifyRequest
modifyRequest
Data struct {
CSS string `json:"css"`
Commands map[string][]string `json:"commands"`

View File

@@ -1,7 +1,7 @@
package http
import (
"encoding/hex"
"encoding/base64"
"net/http"
"path/filepath"
"strconv"
@@ -67,12 +67,12 @@ func sharePostHandler(c *fm.Context, w http.ResponseWriter, r *http.Request) (in
}
}
bytes, err := fm.GenerateRandomBytes(32)
bytes, err := fm.GenerateRandomBytes(6)
if err != nil {
return http.StatusInternalServerError, err
}
str := hex.EncodeToString(bytes)
str := base64.URLEncoding.EncodeToString(bytes)
s = &fm.ShareLink{
Path: path,

View File

@@ -18,7 +18,7 @@ type modifyRequest struct {
}
type modifyUserRequest struct {
*modifyRequest
modifyRequest
Data *fm.User `json:"data"`
}

View File

@@ -3,6 +3,6 @@
"author": "File Browser contributors",
"private": true,
"dependencies": {
"filebrowser-frontend": "^1.0.2"
"filebrowser-frontend": "1.2.0"
}
}

View File

@@ -1 +1 @@
26d1ae7f36e23f48110c279ac4c9e8222a803fe2
1cc4a2b953e20dc9d36a8a240d446b5fa179dc26