Commit graph

238 commits

Author SHA1 Message Date
Michael Mayer
86dc89c4b9 Config: Show error if originals and storage path seem identical #1642
Signed-off-by: Michael Mayer <michael@photoprism.app>
2024-01-21 14:22:16 +01:00
Michael Mayer
89ca0d8899 Index: Ignore nested storage folder in the originals path #1642
This creates a .ppstorage file in the storage folder so that it can be
automatically ignored if found in the originals path while indexing.

Signed-off-by: Michael Mayer <michael@photoprism.app>
2024-01-20 17:32:10 +01:00
Michael Mayer
01da5bdec7 CRC32: Move checksum generation to a dedicated package
Signed-off-by: Michael Mayer <michael@photoprism.app>
2024-01-20 14:56:07 +01:00
Michael Mayer
2df0b6e4b1 Server: Exclude .mp4 and .zip from compression and refactor vary #4018
Signed-off-by: Michael Mayer <michael@photoprism.app>
2024-01-20 12:48:42 +01:00
Michael Mayer
58bb52022f Server: Refactor middleware registration #4018
Signed-off-by: Michael Mayer <michael@photoprism.app>
2024-01-20 11:47:39 +01:00
Michael Mayer
d98a1cb2ab GZIP: Enable compression before API routes are registered #4018
Signed-off-by: Michael Mayer <michael@photoprism.app>
2024-01-19 22:46:31 +01:00
Michael Mayer
a4e2bb33b9 2FA: Rename "Auth Secret" to "App Password" for more clarity #782 #808
Signed-off-by: Michael Mayer <michael@photoprism.app>
2024-01-19 18:10:01 +01:00
Michael Mayer
7e7ba69982 Auth: Add client_uid and client_name to auth_sessions table #808 #3943
This also adds the ability to change the client role if needed and
improves the usage information and output of the CLI commands.

Signed-off-by: Michael Mayer <michael@photoprism.app>
2024-01-18 16:53:05 +01:00
Michael Mayer
2912ac9464 Security: Refactor cache headers, auth token validation & UI #782 #808
Signed-off-by: Michael Mayer <michael@photoprism.app>
2024-01-17 14:16:02 +01:00
Michael Mayer
127b30dd31 Config: Allow CORS for additional file types when using a CDN #3931
Signed-off-by: Michael Mayer <michael@photoprism.app>
2024-01-16 21:25:29 +01:00
Michael Mayer
3946e2a16f API: Refactor "404 Not Found" response handler #3931
Signed-off-by: Michael Mayer <michael@photoprism.app>
2024-01-16 20:56:43 +01:00
Michael Mayer
abfea6354c Config: Allow CORS for fonts and CSS when using a CDN #3931
see https://www.w3.org/TR/css-fonts-3/#font-fetching-requirements

Signed-off-by: Michael Mayer <michael@photoprism.app>
2024-01-16 20:04:36 +01:00
Michael Mayer
da10b30fdf API: Add auth token to vary header for caching proxies and CDNs #3931
Signed-off-by: Michael Mayer <michael@photoprism.app>
2024-01-16 16:42:21 +01:00
Michael Mayer
c3b9b73d1d API: Only allow CDNs to cache GET, HEAD, and OPTIONS requests #3931
Signed-off-by: Michael Mayer <michael@photoprism.app>
2024-01-16 16:17:16 +01:00
Michael Mayer
02a1b12edb Config: Update CORS header defaults and add /api/v1/echo endpoint #3931
Signed-off-by: Michael Mayer <michael@photoprism.app>
2024-01-16 14:36:08 +01:00
Michael Mayer
239708f00f Config: Add options to configure CORS origin, headers and methods #3931
Signed-off-by: Michael Mayer <michael@photoprism.app>
2024-01-16 12:14:06 +01:00
Michael Mayer
c5f6a28448 Config: Add PHOTOPRISM_HTTP_CORS option for CDN users #3931 #3940
In addition, the Access-Control-Allow-Origin header is set to the same
URL if an Origin header is found in the request (experimental).

Signed-off-by: Michael Mayer <michael@photoprism.app>
2024-01-15 13:06:27 +01:00
Michael Mayer
fed1d8ad95 Auth: Accept access token as passwd with fail rate limit #782 #808 #3943
Signed-off-by: Michael Mayer <michael@photoprism.app>
2024-01-14 18:28:17 +01:00
Michael Mayer
cf71582e3f WebDAV: Require username when authenticating with basic auth #808 #3943
Signed-off-by: Michael Mayer <michael@photoprism.app>
2024-01-11 18:51:38 +01:00
Michael Mayer
e8ca9b8db2 WebDAV: Check if basic auth user matches the token, if set #808 #3943
Signed-off-by: Michael Mayer <michael@photoprism.app>
2024-01-11 12:49:31 +01:00
Michael Mayer
d481bc3d34 WebDAV: Add token authentication tests #808 #3943
Signed-off-by: Michael Mayer <michael@photoprism.app>
2024-01-11 12:08:39 +01:00
Michael Mayer
eff130cf90 WebDAV: Allow authentication with auth token and any username #808 #3943
Signed-off-by: Michael Mayer <michael@photoprism.app>
2024-01-11 11:37:36 +01:00
Michael Mayer
cc356abe03 WebDAV: Allow authentication with auth token and no username #808 #3943
Signed-off-by: Michael Mayer <michael@photoprism.app>
2024-01-10 18:03:38 +01:00
Michael Mayer
94e361a8fd WebDAV: Add authorization check based on auth tokens #782 #808 #3943
Signed-off-by: Michael Mayer <michael@photoprism.app>
2024-01-10 16:54:13 +01:00
Michael Mayer
7ef544fa53 Docs: Improve inline comments of the internal/server package #782 #3943
Signed-off-by: Michael Mayer <michael@photoprism.app>
2024-01-10 12:46:00 +01:00
Michael Mayer
7a05c5553b OAuth2: Add "POST /api/v1/oauth/revoke" API endpoint #782 #808 #3943
Signed-off-by: Michael Mayer <michael@photoprism.app>
2024-01-10 12:21:43 +01:00
Michael Mayer
63ad161b96 WebDAV: Refactor authentication and HTTP request handlers #3942 #3959
Signed-off-by: Michael Mayer <michael@photoprism.app>
2024-01-10 09:56:46 +01:00
Michael Mayer
3e924b70c7 API: Move handling of HTTP auth headers to pkg/header #808 #3943 #3959
Signed-off-by: Michael Mayer <michael@photoprism.app>
2024-01-09 10:58:47 +01:00
Michael Mayer
8db853109e WebDAV: Set file mod time based on the "X-OC-MTime" header #3942 #3959
Note that this is still experimental and the implementation needs to be
tested with a WebDAV client that sends a valid "X-OC-MTime" header.

Signed-off-by: Michael Mayer <michael@photoprism.app>
2024-01-08 18:46:42 +01:00
Michael Mayer
64b8ed572d API: Add .well-known/openid-configuration route handler #808 #3943
This adds an initial "/.well-known/openid-configuration" service
discovery endpoint for use by OpenID Connect clients.

Signed-off-by: Michael Mayer <michael@photoprism.app>
2024-01-08 17:25:07 +01:00
Michael Mayer
0e4d81853c API: Add .well-known/oauth-authorization-server route handler #808 #3943
This commit also adds an /api/v1/oauth/logout endpoint that allows
clients to delete their sessions (access tokens) as needed.

Signed-off-by: Michael Mayer <michael@photoprism.app>
2024-01-08 14:53:39 +01:00
Michael Mayer
f8e0615cc8 Auth: Ensure backwards compatibility for existing API clients #808 #3943
These changes ensure that the new (SHA256) session ID is returned in the
"session_id" field, so that developers have time to update their client
implementations to use the new "access_token" field.

Signed-off-by: Michael Mayer <michael@photoprism.app>
2024-01-07 12:25:56 +01:00
Michael Mayer
0d2f8be522 Auth: Use hashed auth tokens for enhanced security #3943 #808 #782
Signed-off-by: Michael Mayer <michael@photoprism.app>
2024-01-06 17:35:19 +01:00
Michael Mayer
0ca37b2c92 Docs: Update year in backend and frontend package file headers
Signed-off-by: Michael Mayer <michael@photoprism.app>
2024-01-05 16:38:36 +01:00
Michael Mayer
467f7b1585 OAuth2: Add Client Credentials Authentication #213 #782 #808 #3730 #3943
This adds standard OAuth2 client credentials and bearer token support as
well as scope-based authorization checks for REST API clients. Note that
this initial implementation should not be used in production and that
the access token limit has not been implemented yet.

Signed-off-by: Michael Mayer <michael@photoprism.app>
2023-12-12 18:42:50 +01:00
Brandon Richardson
3d962e2382 Backend: Expose prometheus-style metrics endpoint
Expose a new API which can be scraped by prometheus to gather useful
metrics from an instance. The new endpoint exposes photoprism build
version information, golang version, edition and various count metrics.
2023-12-06 08:13:24 +01:00
Michael Mayer
cfe1ff3299 Config: Change "web server" to "Web server" in the docs for consistency
Signed-off-by: Michael Mayer <michael@photoprism.app>
2023-09-24 18:05:49 +02:00
Michael Mayer
91cc358fc5 Clean: Shorten error log sanitization function name #439 #3588
Signed-off-by: Michael Mayer <michael@photoprism.app>
2023-08-15 17:05:55 +02:00
Michael Mayer
7f13218229 Logs: Add LogError() func to sanitize error messages #439 #3588
Signed-off-by: Michael Mayer <michael@photoprism.app>
2023-08-15 08:12:52 +02:00
Michael Mayer
c82a4b2287 HTTP: Refactor Unix socket support #2337 #3595
Signed-off-by: Michael Mayer <michael@photoprism.app>
2023-08-14 10:43:05 +02:00
Silver Bullet
2bf50082f5
Backend: Support listening on Unix Socket #2337 #3595
When HTTP listening address starts with unix: and contains /, listen
at given path instead of a TCP socket.

TLS or AutoTLS will not work since there is no TLS layer when using
the unix domain socket.
2023-08-14 10:00:35 +02:00
Michael Mayer
36bac7ab48 Faces: Add POST REST endpoint to manually create new file markers #1548
Signed-off-by: Michael Mayer <michael@photoprism.app>
2023-07-27 19:13:00 +02:00
Michael Mayer
a45f8d40cf Server: Add "Access-Control-Allow-Origin" to header/security.go
Signed-off-by: Michael Mayer <michael@photoprism.app>
2023-06-06 14:49:28 +02:00
Michael Mayer
7a7ffbced2 CLI: Reduce logging output in production environments #3370
Signed-off-by: Michael Mayer <michael@photoprism.app>
2023-05-05 09:55:00 +02:00
Michael Mayer
3e4121cc78 Server: Add "restart required" flag and button to restart the server
Signed-off-by: Michael Mayer <michael@photoprism.app>
2023-03-27 19:27:19 +02:00
Michael Mayer
9ad86ac017 Edit: Change image orientation through the user interface #464
Signed-off-by: Michael Mayer <michael@photoprism.app>
2023-03-20 16:18:27 +01:00
Michael Mayer
addc5e8251 Auth: Refactor users path configuration and base path default
Signed-off-by: Michael Mayer <michael@photoprism.app>
2023-03-14 21:47:14 +01:00
Michael Mayer
60162b3fc5 Auth: Refactor user management API and CLI commands #98
Signed-off-by: Michael Mayer <michael@photoprism.app>
2023-03-08 23:30:39 +01:00
Michael Mayer
826addb4c1 PWA: Create manifest.json in code without using a template #3181
Signed-off-by: Michael Mayer <michael@photoprism.app>
2023-02-10 15:53:01 +01:00
Michael Mayer
a7b1c1b11e WebDAV: Allow read access in read-only mode and improve logs #3177 #3183
Signed-off-by: Michael Mayer <michael@photoprism.app>
2023-02-09 13:14:56 +01:00