67 Commits

Author SHA1 Message Date
8b7d8d0cc6 Assume no User-Agent is Kindle
All checks were successful
continuous-integration/drone/push Build is passing
2025-01-26 22:52:07 +01:00
6e9ebab87b Dependencies for prev change.
All checks were successful
continuous-integration/drone/push Build is passing
2025-01-24 17:26:35 +01:00
f41910d9f4 Use ASCII7 file names to support Kobo web browser
Some checks failed
continuous-integration/drone/push Build is failing
2025-01-24 17:23:24 +01:00
f3f0c77b62 Drone CI
All checks were successful
continuous-integration/drone Build is passing
2025-01-24 17:12:52 +01:00
dependabot[bot]
baab651482 build(deps): bump github.com/knadh/koanf/providers/file from 1.1.0 to 1.1.2 (#19)
Bumps [github.com/knadh/koanf/providers/file](https://github.com/knadh/koanf) from 1.1.0 to 1.1.2.
- [Release notes](https://github.com/knadh/koanf/releases)
- [Commits](https://github.com/knadh/koanf/compare/v1.1.0...providers/file/v1.1.2)

---
updated-dependencies:
- dependency-name: github.com/knadh/koanf/providers/file
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-11 10:46:48 -05:00
dependabot[bot]
c2a29b5cb3 build(deps): bump actions/setup-go from 5.0.2 to 5.1.0 (#21)
Bumps [actions/setup-go](https://github.com/actions/setup-go) from 5.0.2 to 5.1.0.
- [Release notes](https://github.com/actions/setup-go/releases)
- [Commits](0a12ed9d6a...41dfa10bad)

---
updated-dependencies:
- dependency-name: actions/setup-go
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-11 10:46:27 -05:00
dependabot[bot]
9cb0fa32b5 build(deps): bump docker/build-push-action from 6.7.0 to 6.9.0 (#15)
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 6.7.0 to 6.9.0.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](5cd11c3a4c...4f58ea7922)

---
updated-dependencies:
- dependency-name: docker/build-push-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-11 10:46:02 -05:00
dependabot[bot]
a02d0b582f build(deps): bump docker/setup-buildx-action from 3.6.1 to 3.7.1 (#17)
Bumps [docker/setup-buildx-action](https://github.com/docker/setup-buildx-action) from 3.6.1 to 3.7.1.
- [Release notes](https://github.com/docker/setup-buildx-action/releases)
- [Commits](988b5a0280...c47758b77c)

---
updated-dependencies:
- dependency-name: docker/setup-buildx-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-11 10:45:47 -05:00
dependabot[bot]
8e6a5d2234 build(deps): bump actions/checkout from 4.1.7 to 4.2.2 (#22)
Bumps [actions/checkout](https://github.com/actions/checkout) from 4.1.7 to 4.2.2.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](692973e3d9...11bd71901b)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-11 10:45:28 -05:00
dependabot[bot]
3612201c77 build(deps): bump google-github-actions/auth from 2.1.5 to 2.1.7 (#23)
Bumps [google-github-actions/auth](https://github.com/google-github-actions/auth) from 2.1.5 to 2.1.7.
- [Release notes](https://github.com/google-github-actions/auth/releases)
- [Changelog](https://github.com/google-github-actions/auth/blob/main/CHANGELOG.md)
- [Commits](62cf5bd3e4...6fc4af4b14)

---
updated-dependencies:
- dependency-name: google-github-actions/auth
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-11 10:45:09 -05:00
dependabot[bot]
05203649d8 build(deps): bump google-github-actions/auth from 2.1.4 to 2.1.5 (#14)
Bumps [google-github-actions/auth](https://github.com/google-github-actions/auth) from 2.1.4 to 2.1.5.
- [Release notes](https://github.com/google-github-actions/auth/releases)
- [Changelog](https://github.com/google-github-actions/auth/blob/main/CHANGELOG.md)
- [Commits](f112390a2d...62cf5bd3e4)

---
updated-dependencies:
- dependency-name: google-github-actions/auth
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-31 12:22:02 -04:00
dependabot[bot]
3d01b5eac5 build(deps): bump docker/build-push-action from 6.6.1 to 6.7.0 (#13)
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 6.6.1 to 6.7.0.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](16ebe778df...5cd11c3a4c)

---
updated-dependencies:
- dependency-name: docker/build-push-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-22 17:23:51 -04:00
Evan Buss
0f0540549d feat: request deduplication / debouncing
Kobo eReaders have a buggy browser that makes 2 requests for
the same HTTP resource when you click a link.

This change ensures that requests within a certain time frame
from the same IP, for the same path  / query params will only
be executed a single time.

We record the http request response and replay it for the second
request. If we get 2 simultaneous requests, we use the
sync/singleflight library to ensure only the first request is actually
processed. The second waits for the shared result of the first.

This probably adds latency since some requests are blocked while
we determine if we already have a cache entry, but for a simple
service like this I don't think it matters.
2024-08-18 18:37:42 +00:00
dependabot[bot]
5d45afd419 build(deps): bump github.com/knadh/koanf/providers/file from 1.0.0 to 1.1.0 (#11)
Bumps [github.com/knadh/koanf/providers/file](https://github.com/knadh/koanf) from 1.0.0 to 1.1.0.
- [Release notes](https://github.com/knadh/koanf/releases)
- [Commits](https://github.com/knadh/koanf/compare/v1.0.0...v1.1.0)

---
updated-dependencies:
- dependency-name: github.com/knadh/koanf/providers/file
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-12 10:02:07 -04:00
dependabot[bot]
129aa984cd build(deps): bump docker/setup-buildx-action from 3.0.0 to 3.6.1 (#10)
Bumps [docker/setup-buildx-action](https://github.com/docker/setup-buildx-action) from 3.0.0 to 3.6.1.
- [Release notes](https://github.com/docker/setup-buildx-action/releases)
- [Commits](f95db51fdd...988b5a0280)

---
updated-dependencies:
- dependency-name: docker/setup-buildx-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-12 10:01:51 -04:00
Evan Buss
3e3b662aa9 fix: mobile device scale
Add `viewport` meta tag so site scales properly on mobile devices
2024-08-12 13:57:50 +00:00
Evan Buss
105a72c931 ci: use correct cloud run name 2024-08-11 19:42:35 -04:00
Evan Buss
03664b3f58 build: automatic deploy to cloud run 2024-08-11 23:20:56 +00:00
Evan Buss
33ab199b21 fix: panic when auth not specified v0.2.1 2024-08-11 20:20:41 +00:00
Evan Buss
7e80ae1718 ci: fix build-args v0.2.0 2024-08-11 15:33:03 -04:00
Evan Buss
54687383d1 ci: fix ldflags 2024-08-11 19:20:48 +00:00
Evan Buss
9da7ea1bbc feat: environment configuration
Environment variables can now be used to configure any
config property including the feeds list.

This makes it easier to use in environments without access
to config files like GCR. Some may prefer not to have a separate
config file as well.

Also added build metadata to the docker image and binaries.
2024-08-11 18:47:46 +00:00
Evan Buss
d8d35b6cef ci: pin action versions to specific commit 2024-08-11 11:16:07 -04:00
Evan Buss
1ad71172f1 docs: update getting started 2024-08-11 05:25:20 +00:00
Evan Buss
c4a5f54a62 ci: goreleaser missing github token v0.1.1 2024-08-11 00:46:59 -04:00
Evan Buss
45b13d3a68 docs: use absolute image href
The dockerhub description action doesn't seem to be able
to auto-convert relative  links inside `<img />` tags.
v0.1.0
2024-08-11 00:36:03 -04:00
dependabot[bot]
6425fba27e build(deps): bump docker/metadata-action from 5.0.0 to 5.5.1 (#7)
Bumps [docker/metadata-action](https://github.com/docker/metadata-action) from 5.0.0 to 5.5.1.
- [Release notes](https://github.com/docker/metadata-action/releases)
- [Commits](96383f4557...8e5442c4ef)

---
updated-dependencies:
- dependency-name: docker/metadata-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-11 00:22:55 -04:00
dependabot[bot]
be88d138d6 build(deps): bump docker/build-push-action from 5.0.0 to 6.6.1 (#9)
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 5.0.0 to 6.6.1.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](0565240e2d...16ebe778df)

---
updated-dependencies:
- dependency-name: docker/build-push-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-11 00:22:47 -04:00
dependabot[bot]
2fad8cae4f build(deps): bump docker/login-action from 3.0.0 to 3.3.0 (#8)
Bumps [docker/login-action](https://github.com/docker/login-action) from 3.0.0 to 3.3.0.
- [Release notes](https://github.com/docker/login-action/releases)
- [Commits](343f7c4344...9780b0c442)

---
updated-dependencies:
- dependency-name: docker/login-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-11 00:22:34 -04:00
Evan Buss
37098e0549 ci: minor fixes
- Fix docker casing warning
- Fix docker hub relative image URL resolution
- More restrictive goreleaser changelog filtering
2024-08-11 04:20:05 +00:00
Evan Buss
e3d97b8e5f ci: fix permissions
again?
2024-08-11 04:11:47 +00:00
Evan Buss
a8ee848d75 ci: fix permissions
maybe?
2024-08-11 00:05:49 -04:00
Evan Buss
879b8ed5b7 ci: build / release action (#6)
Create docker images on github and docker hub on each
commit to `main`. Create release images on git tag as well
as Github release with executables.
2024-08-11 00:00:24 -04:00
Evan Buss
041d8d5e22 fix: only try to split host/port for RemoteAddr 2024-08-10 21:52:53 +00:00
Evan Buss
6c41117af1 feat: automatic redirect if single configured feed 2024-08-10 21:36:52 +00:00
Evan Buss
e21a648506 feat: "local only" automatic authentication
Often you want to expose your library publicly, which requires
authentication to prevent unknown users from seeing your
content.

In my case, I also expose the library on a local domain using a local DNS server which doesn't have these security issues.

This change adds a `local_only` option to the feed auth
config which will only supply the provided username/password
when the request comes from a private IP address.

Omitting `local_only` or setting to false will keep the current
logic of sending the credentials no matter the origin of the
request.
2024-08-10 21:34:23 +00:00
Evan Buss
ccc6217014 feat: structured logging improvements
This change adds a child logger with request information to the
http request context. Also improved the log format for clarity.

- Unescaped the query string
- Use JSON log format when not in dev mode.
- Added request ip to the request child logger.
- The child logger is passed to the converter so we can associate
  any errors with a specific request / file.
- Add book file name as a logger attribute
- Add user agent header as a logger attribute
- Log the "X-Forwarded-For" header, falling back to RemoteAddr
2024-08-10 20:03:34 +00:00
Evan Buss
be78d83bd6 fix: single conversion at a time
See the notes for a full explanation, but basically
Kobo is making simultaneous requests and the
files were conflicting because there were 2 being
downloaded / converted at the same time which
resulted in unreliable behavior.

The solution is to protect the conversion
section to allow a single conversion to complete
before allowing the next one to start.
2024-07-14 19:56:00 +00:00
Evan Buss
56cb81bbb4 fix: return after handleError 2024-07-13 20:52:29 +00:00
Evan Buss
7f0e8f8dfb docs: fix typo 2024-07-13 16:09:34 -04:00
Evan Buss
a637e93ee3 docs: reduce image size 2024-07-13 16:08:54 -04:00
Evan Buss
4281c08b8a docs: update config instructions 2024-07-13 20:00:54 +00:00
Evan Buss
3d4af0bd61 refactor: cleanup
naming and other things
2024-07-13 19:37:57 +00:00
Evan Buss
349e86f0b1 feat: server-side feed credentials
If a feed requires credentials, OPDS Proxy can transparently
set them server side by reading the feed configuration.

This is useful in scenarios where the server operator sets up their
own authentication in front of OPDS Proxy and doesn't want to
have users remember separate credentials for each of the configured
feeds.
2024-07-13 18:24:10 +00:00
Evan Buss
28d3a7d761 feat: secure cookie keys config
If keys aren't specified they will be generated. The downside
of this is that the keys will change every server restart
which will invalidate previously generated cookies.

If the keys are specified in the config.yml, they are
used between restarts and all previously generated
cookies remain valid.
2024-07-13 18:01:19 +00:00
Evan Buss
9094e780d0 feat: search 2024-07-13 17:16:38 +00:00
Evan Buss
4f3948943a feat: cookie authentication
use encrypted cookies to authenticate
basic auth feeds. most eReader browsers
don't support basic auth
2024-07-13 01:55:48 +00:00
Evan Buss
f4408abeae refactor: dry conversion code 2024-07-12 19:36:08 +00:00
Evan Buss
b683d0c9b6 feat: set up configuration
A YAML file is used to set the available feeds.
The CLI args can set the port and the path to the YAML file.
2024-07-12 15:10:48 +00:00
Evan Buss
1f2183f141 feat: mobi conversion
Will automatically convert .epub to .mobi on Kindle
2024-07-11 19:47:55 +00:00