Commit Graph

198 Commits

Author SHA1 Message Date
Nicholas Wiersma
6be4bebc0c chore: switch from interface{} to any (#1837) 2023-06-23 15:41:27 +02:00
LINKIWI
e5aa5974e1 Support Unix domain sockets for proxy server listener (#1865) 2023-05-06 11:35:06 +02:00
Richard Hillmann
e35007b3a2 feat: Publish multi-arch docker image (amd64 and arm64) (#1862)
* add arm64 to goreleaser
2023-05-04 09:11:47 +02:00
Manu Gupta
4b0169ce38 Update alpine to 3.17 and build smaller binary. (#1850)
This PR updates alpine to 3.17 and builds smaller athens binary.
By using these flags; we are saving around 14M in athens binary
size.
2023-03-13 10:37:00 +02:00
Nicholas Wiersma
4090b0620a feat: update to Go 1.20 (#1838)
Co-authored-by: Manu Gupta <manugupt1@gmail.com>
2023-03-12 22:12:39 -07:00
Nicholas Wiersma
96f7cb8975 feat: add non-root user to docker image (#1843) 2023-03-08 20:13:01 -08:00
Nicholas Wiersma
d932d50232 chore: lint code with golangci-lint (#1828)
* feat: add golangci-lint linting

* chore: fix linter issues

* feat: add linting into the workflow

* docs: update lint docs

* fix: cr suggestions

* fix: remove old formatting and vetting scripts

* fix: add docker make target

* fix: action go caching

* fix: depreciated actions checkout version

* fix: cr suggestion

* fix: cr suggestions

---------

Co-authored-by: Manu Gupta <manugupt1@gmail.com>
2023-02-24 20:39:17 -08:00
Mike Seplowitz
f35a5406a3 Pass Athens's logger to the Redis package (#1817)
Co-authored-by: Ashish Ranjan <ashishranjan2912@gmail.com>
2023-01-30 12:22:49 +08:00
Nicholas Wiersma
ab64133949 feat: replace ioutil with io and os (#1816) 2023-01-27 20:42:47 +05:30
Rob Prentiss
6baf7c9033 Handle SIGTERM on unix-like OS (#1805) 2023-01-24 18:04:56 -08:00
Rob Prentiss
a1553999bb Make shutdown timeout configurable (#1806)
Currently, when shutting down the server (via SIGINT or SIGTERM), the
shutdown closes any open connections after only 10 seconds (via a
context.WithTimeout). This does not provie a lot of time for longer
operations, such as listing versions, or downloading a larger module zip
file.

When running in Kubernetes, and scaling instances or changing config,
this causes a lot of dropped connections and gateway errors. 10 seconds
is arguably much too short, and should be configurable.

This commit increases that default to 60 seconds, and adds a config
variable to allow users to specify their desired timeout.
2023-01-23 22:02:45 -08:00
Ashish Ranjan
b7dd8a85de upgrade go version to 1.19 (#1814)
* upgrade go version to 1.19

* update base image
2023-01-19 22:32:08 -08:00
Ashish Ranjan
cc496afbf1 read redis lock options from config to support custom TTL & timeout (#1791)
* read redis lock options from config to support custom TTL & timeout

* fix test

* fix typo

* downgrade to bsm/redislock@v0.7.2 to prevent usage of beta go-redis version

* revert test changes

* return error for invalid lock config

* update config parsing test

* udpate docs to include redis lock config

* fix test

* set default max retries to 10

* reduce default redis lock timeout to 15s

* update default TTL to 15mins

Co-authored-by: Manu Gupta <manugupt1@gmail.com>
2022-09-28 22:53:06 -07:00
Zhongpeng Lin
e97cb5f5df Passing http client to S3 client (#1786) 2022-08-26 09:03:56 -04:00
Manu Gupta
69f7a1f902 Update to go1.18 (#1768) 2022-03-21 10:47:41 -07:00
Manu Gupta
be203340be Remove deprecated GOPROXY in favor of GoBinaryEnvVars (#1759) 2022-02-18 10:24:44 -08:00
Manu Gupta
898673c600 Deprecate bzr as it is unmaintained. (#1742)
Alpine moved bzr to unmaintained status. See
https://gitlab.alpinelinux.org/alpine/abuild/-/issues/10000
2021-12-04 22:46:27 -05:00
jason-liew
535c26b0e0 Upgrade GOLANG_VERSION to 1.17 (#1741)
* Upgrade GOLANG_VERSION to 1.17

Fixes ##1740

* feat: upgrade to go1.17

Co-authored-by: shangji.liu <shangji.liu@qingteng.cn>
Co-authored-by: Marwan Sulaiman <marwan.sameer@gmail.com>
2021-12-03 00:56:05 -05:00
Shimin Guo
bb0788dd5c Update alpine version to latest (#1732)
3.11 will reach end of support on 2021-11-01
2021-09-30 14:30:00 -04:00
Marwan Sulaiman
151c4922fb Enable Athens to work in offline mode (#1717)
Co-authored-by: Aaron Schlesinger <70865+arschles@users.noreply.github.com>
2021-08-18 19:09:14 -04:00
Latchezar Tzvetkoff
6991d6347b Fix permissions for /config/config.toml so Athens can run as non-root (#1699)
Fixes #1695.

Co-authored-by: Aaron Schlesinger <70865+arschles@users.noreply.github.com>
2021-03-31 11:20:23 -07:00
Aaron Schlesinger
1acdf17a4a Reverting passthrough auth (#1700)
* Reverting PR 1650

https://github.com/gomods/athens/pull/1650 was a big change to the
authentication/authorization code, which we have decided to pull
out and potentially move into a separate process/project

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* removing commented, unused code

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* removing more commented, unused code

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>

* removing more unused code

Signed-off-by: Aaron Schlesinger <aaron@ecomaz.net>
2021-03-11 11:28:15 -08:00
Marwan Sulaiman
dfb7887080 Allow Athens to Propagate Authentication to Mod Download (#1650)
* Allow Athens to Propagate Authentication to Mod Download

* update readme

* add pattern matching to auth propagation

* Propagate authentication to pre declared static host

* quote redis test

* fix flaky redis error message

* fix config tests

* fix config tests

* Update config.dev.toml

Co-authored-by: Ted Wexler <ted@stuckinacan.com>

* gofmt

Co-authored-by: Ted Wexler <ted@stuckinacan.com>
2020-07-30 17:06:53 -04:00
Marwan Sulaiman
81906b918f pkg/requestid: add Request ID to Athens requests and logs (#1655)
Co-authored-by: Ted Wexler <ted@stuckinacan.com>
2020-07-27 12:37:36 -04:00
Marwan Sulaiman
408fd74a9c actions: add index handler tests (#1637) 2020-07-03 11:00:24 -04:00
Marwan Sulaiman
ef15c3458b Allow users to specify the module fetcher's temporary directory (#1636) 2020-06-25 17:15:15 -04:00
Marwan Sulaiman
52934cfa46 implement /index endpoint (#1630)
* implement /index endpoint

* rename to Module to Path
2020-06-24 14:29:30 -04:00
Marwan Sulaiman
f01c645305 pkg/middleware: add tracing to ValidationHook (#1627) 2020-06-15 16:34:24 -04:00
Marwan Sulaiman
38a6a6fe0b Add client tracing to external storage requests (#1626) 2020-06-14 11:03:48 -04:00
Elliot Morrison-Reed
c08aa890cb Fix sumdb/* paths when config.PathPrefix is set (#1620)
* Fix sumdb/* paths when config.PathPrefix is set

http.StripPrefix will look at the entire request path when called,
if we do not include config.PathPrefix then the StripPrefix call
will never receive a valid path from the application and the user
will always get a 404 error.

There were no test where I could easily check this regression so
I also added a few endpoint tests, the last test will fail with
a 404 instead of 403 if this change in not applied.

* Update cmd/proxy/actions/app_proxy.go

Co-authored-by: Marwan Sulaiman <marwan-at-work@github.com>

* Update cmd/proxy/actions/app_proxy_test.go

Co-authored-by: Marwan Sulaiman <marwan-at-work@github.com>

* Update cmd/proxy/actions/app_proxy_test.go

Co-authored-by: Marwan Sulaiman <marwan-at-work@github.com>

* Update cmd/proxy/actions/app_proxy_test.go

Co-authored-by: Marwan Sulaiman <marwan-at-work@github.com>

* Removed unneeded import of logrus

Co-authored-by: Marwan Sulaiman <marwan-at-work@github.com>
2020-06-05 12:01:38 -04:00
Chris Mills
05438234ed Fix issue with build arg in drone deployment (#1602)
The ARG before the FROM call in multistage builds is dropped with the
previous container. We need to define it globally

Signed-off-by: Chris M <millscj01@gmail.com>
2020-04-13 15:29:29 -07:00
Aaron Schlesinger
a8467661c2 Adding build arg for the alpine version the docker image is based on (#1585)
* Adding build arg for the alpine version the docker image is based on

* Actually using the arg

* Using Alpine 3.11.5

Co-authored-by: Ted Wexler <ted@stuckinacan.com>
2020-04-07 15:50:02 -04:00
Marwan Sulaiman
3c4db4ce86 pkg/storage: add External implementation (#1587)
* pkg/storage: add External implementation

* fix conflicts

* use newly instantiated client
2020-03-27 13:35:52 -04:00
Aaron Schlesinger
94a97fe9e9 "sumdbPoxy" ==> "sumdbProxy" (#1569)
Co-authored-by: Ted Wexler <ted@stuckinacan.com>
2020-03-20 15:18:51 -04:00
Marwan Sulaiman
0bb95c7351 pkg/storage: make Checker optional in storage.Backend (#1580)
* pkg/storage: make Checker optional in storage.Backend

* pass storage
2020-03-18 19:07:00 -04:00
Ted Wexler
939e695526 Adds redis sentinel support (#1554)
* Adds redis sentinel support

Fixes #1553

* Fix redis-sentinel test hostnames

* Fix redis master name again

* Fix redis sentinel port in tests

* Upgrade the redis client

* Rmoeve accidental config change

* Fix default config

* Addresses review comments

* Add documentation on single flight mechanisms

* Fix spelling issues

* Fix formatting

Co-authored-by: Aaron Schlesinger <70865+arschles@users.noreply.github.com>
2020-03-17 13:04:37 -07:00
Ted Wexler
53232f726d Update builds for Go 1.14 (#1558)
* Update .drone.yml for Go 1.14

* Update appveyor.yml for Go 1.14

* Update Dockerfile.test for Go 1.14

* Update Dockerfile for Go 1.14

* Update scripts/build-image/Dockerfile
2020-02-26 15:53:12 -08:00
Matthew Plachter
71c57ef7ee add config options for redis password (#1545)
* add config options for redis password

* redis password test and failure test

* changed redis name and made a minimal redis.conf

add drone volume

volume fix

remove volumes from drone.

repoint redis path

Co-authored-by: Aaron Schlesinger <70865+arschles@users.noreply.github.com>
Co-authored-by: Marwan Sulaiman <marwan.sameer@gmail.com>
2020-02-25 16:18:04 -08:00
Marwan Sulaiman
34f55365a2 always use request logging middleware (#1522)
* always use request logging middleware

* reads better

* rm http-url as it is redundant

* gopls being redundant

* add color name
2020-01-20 18:25:48 -05:00
Marwan Sulaiman
86da1590bc Dockerfile: ensure right perms for production setting (#1530) 2020-01-19 19:14:49 -05:00
Bruno M. Custódio
221c451b6a Read basic auth credentials from a secret. (#1466)
Signed-off-by: Bruno Miguel Custódio <brunomcustodio@gmail.com>
2019-12-02 18:07:54 -08:00
Arne Bahlo
6ee9e0932c Install git-lfs on proxy container (#1455)
For repositories that store some files in git-lfs, the checksum will
differ for clients with and without git-lfs. Clients without git-lfs
will use the git-lfs pointer [0] for calculation, clients with will use
the real files.
This adds git-lfs to the container to match expected behaviour and
resolve checksum mismatches in these cases.

[0] https://github.com/git-lfs/git-lfs/blob/master/docs/spec.md
2019-11-11 13:17:50 -08:00
David Farrell
ab8caa2fc4 Remove G_ENV=production from proxy Dockerfile (#1443) 2019-11-06 19:38:55 -05:00
David Farrell
000d2b92a1 Add GOLANG_VERSION arg support to proxy-docker make target + Dockerfile (#1430)
* Add GOLANG_VERSION arg to proxy-docker

* Set default GOLANG_VERSION to 1.13 in Makefile

* Add note in proxy Dockerfile re: GOLANG_VERSION

* Add GOLANG_VERSION to docker-compose dev target
2019-11-06 11:32:59 -08:00
Rob Prentiss
ed66d85f3f Use glob matching for package paths (#1409)
- Match the behavior of GOPRIVATE/GONOPROXY/GONOSUMDB
2019-10-02 08:45:58 -04:00
Marwan Sulaiman
298c6cd74d cmd/proxy/actions: pass NoSumPatterns to GoGetFetcher (#1391)
* cmd/proxy/actions: pass NoSumPatterns to GoGetFetcher

* add gosum unit tests

* upgrade appveyor to 1.13

* fix test typo

* check appveyor version

* AppVeyor has no 1.13

* use logger
2019-09-23 12:47:40 -04:00
Marwan Sulaiman
68ba75078b proxy/actions/sumdb: copy Go behavior for pattern matching (#1388) 2019-09-20 12:17:03 -04:00
oliverch
874d27158d feat: add /robots.txt (#1355)
* feat: add /robots.txt

* disallow all crawler by default.
2019-09-16 16:21:08 -05:00
Marwan Sulaiman
8db652e04c Upgrade to Go 1.13 (#1377) 2019-09-13 13:48:28 -04:00
Yi Tang
ca10728887 ref: upstream lister and it's impl to module pkg (#1309) 2019-07-25 20:40:03 -04:00