Commit Graph

33 Commits

Author SHA1 Message Date
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
Evan Buss
c00f6a9750 chore: rename project
No longer "Kobo" specific
2024-07-10 01:27:49 +00:00
Evan Buss
80d370d71c docs: add readme 2024-07-10 01:17:51 +00:00
Evan Buss
cbaf2e166f feat: devcontainer 2024-07-10 01:17:38 +00:00
Evan Buss
46a01ed3dc ci: docker image 2024-07-08 23:54:00 -04:00
Evan Buss
7170d35962 style: full width links
Wrap all content in the anchor tag rather than just the title so
the user can click anywhere on the item to navigate / download
2024-07-08 23:38:33 -04:00
Evan Buss
1099f67641 style: tweakss 2024-07-08 23:17:14 -04:00
Evan Buss
2e21c6c2d5 build: strip debugging symbols from docker image 2024-07-08 22:56:13 -04:00
Evan Buss
85c497f70c feat: kepub conversions
Working *.epub to *.kepub.epub file conversions when
using a Kobo reader. Updated docker file to include
`kepubify` to convert to kepub. If not available the
file is just sent without conversion.
2024-07-08 22:20:25 -04:00
Evan Buss
7e066fafee refactor 2024-07-06 17:59:54 -04:00
Evan Buss
c63b20551f refactor: home page / url passing
We now allow multiple OPDS feeds to be pre-defined and displayed
on the homepage. As a result we need to pass the feed navigation
URLs via query parameter rather than a subpath which would only
support proxying to a single OPDS feed.

The feed is passed via the q= query parameter and any relative
links from the OPDS XML are resolved to a complete URL with
domain / scheme.

We also check the "Content-Type" header in the response
received from the OPDS feed to determine whether to parse
an OPDS catalog or just proxy the raw response back (images / files).
2024-07-06 16:06:08 -04:00
Evan Buss
8e42b71dc7 style: fixed top navigation bar 2024-07-06 14:52:20 -04:00
Evan Buss
a39936fbaa feat: dockerfile 2024-07-06 13:12:54 -04:00
Evan Buss
4ba16c728d style: more "kobo-native" appearance 2024-07-06 13:12:43 -04:00
Evan Buss
5b68923ba9 refactor: simplify template by using a view model
Convert the raw OPDS format to a view model that
is easier to work with. Biggest change is that
we construct a single "Link" from an entry with
an array of Links with different "TypeLinks" and "Rel"
attributes.
2024-07-05 00:57:50 -04:00
Evan Buss
7c63b06e05 it mostly works 2024-07-04 23:52:14 -04:00
Evan Buss
9daf7bf8b9 init 2024-07-04 14:39:25 -04:00
Evan Buss
5276d9fc1e Initial commit 2024-07-04 14:36:27 -04:00