mirror of
https://github.com/mailcow/mailcow-dockerized.git
synced 2026-11-05 16:08:21 +00:00
[Nginx][Web] Pass the client address to sogo-auth for EAS/DAV logins
This commit is contained in:
3 files changed
+12
No files matched your search
@@ -47,6 +47,12 @@ http {
|
|||||||
default "";
|
default "";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# client of an internal auth request, X-Real-IP is set by /sogo-auth-verify
|
||||||
|
map $server_port $sogo_auth_client_ip {
|
||||||
|
65510 $http_x_real_ip;
|
||||||
|
default "";
|
||||||
|
}
|
||||||
|
|
||||||
{% if HTTP_REDIRECT %}
|
{% if HTTP_REDIRECT %}
|
||||||
# HTTP to HTTPS redirect
|
# HTTP to HTTPS redirect
|
||||||
server {
|
server {
|
||||||
|
|||||||
@@ -119,6 +119,7 @@ location ~ \.php$ {
|
|||||||
fastcgi_param HTTP_X_REAL_IP $remote_addr;
|
fastcgi_param HTTP_X_REAL_IP $remote_addr;
|
||||||
# trusted internal-auth marker; empty for external clients (see nginx.conf map)
|
# trusted internal-auth marker; empty for external clients (see nginx.conf map)
|
||||||
fastcgi_param SOGO_AUTH_INTERNAL $sogo_auth_internal;
|
fastcgi_param SOGO_AUTH_INTERNAL $sogo_auth_internal;
|
||||||
|
fastcgi_param SOGO_AUTH_CLIENT_IP $sogo_auth_client_ip;
|
||||||
fastcgi_read_timeout 3600;
|
fastcgi_read_timeout 3600;
|
||||||
fastcgi_send_timeout 3600;
|
fastcgi_send_timeout 3600;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,6 +12,11 @@ $session_var_pass = 'sogo-sso-pass';
|
|||||||
// external clients can never supply it (bare fastcgi param, not an HTTP header)
|
// external clients can never supply it (bare fastcgi param, not an HTTP header)
|
||||||
$is_internal_auth = (($_SERVER['SOGO_AUTH_INTERNAL'] ?? '') === '1');
|
$is_internal_auth = (($_SERVER['SOGO_AUTH_INTERNAL'] ?? '') === '1');
|
||||||
|
|
||||||
|
// the loopback is no client: use the client of the original request for logs, netfilter and API IP checks
|
||||||
|
if ($is_internal_auth && filter_var($_SERVER['SOGO_AUTH_CLIENT_IP'] ?? '', FILTER_VALIDATE_IP)) {
|
||||||
|
$_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_X_REAL_IP'] = $_SERVER['SOGO_AUTH_CLIENT_IP'];
|
||||||
|
}
|
||||||
|
|
||||||
// validate credentials for basic auth requests
|
// validate credentials for basic auth requests
|
||||||
if ($is_internal_auth && isset($_SERVER['PHP_AUTH_USER'])) {
|
if ($is_internal_auth && isset($_SERVER['PHP_AUTH_USER'])) {
|
||||||
// load prerequisites only when required
|
// load prerequisites only when required
|
||||||
|
|||||||
Reference in new issue
Block a user