Commit 078f7256 authored by Lukas Fleischer's avatar Lukas Fleischer
Browse files

Support exceptions in the maintenance mode



Allow for excluding certain IP addresses from the maintenance mode. This
allows administrators to view the web page while the site is still under
maintenance for the rest of the world.

Signed-off-by: Lukas Fleischer's avatarLukas Fleischer <lfleischer@archlinux.org>
parent a45b5073
......@@ -29,6 +29,7 @@ pkgbuild_uri = https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=%s
log_uri = https://aur.archlinux.org/cgit/aur.git/log/?h=%s
snapshot_uri = https://aur.archlinux.org/cgit/aur.git/snapshot/%s.tar.gz
enable-maintenance = 1
maintenance-exceptions = 127.0.0.1
[auth]
valid-keytypes = ssh-rsa ssh-dss ecdsa-sha2-nistp256 ecdsa-sha2-nistp384 ecdsa-sha2-nistp521 ssh-ed25519
......
......@@ -22,6 +22,7 @@ git_shell_cmd = config.get('serve', 'git-shell-cmd')
ssh_cmdline = config.get('serve', 'ssh-cmdline')
enable_maintenance = config.getboolean('options', 'enable-maintenance')
maintenance_exc = config.get('options', 'maintenance-exceptions').split()
def pkgbase_exists(pkgbase):
db = mysql.connector.connect(host=aur_db_host, user=aur_db_user,
......@@ -113,7 +114,9 @@ cmdargv = shlex.split(cmd)
action = cmdargv[0]
if enable_maintenance:
die("The AUR is down due to maintenance. We will be back soon.")
remote_addr = os.environ["SSH_CLIENT"].split(" ")[0]
if not remote_addr in maintenance_exc:
die("The AUR is down due to maintenance. We will be back soon.")
if action == 'git-upload-pack' or action == 'git-receive-pack':
if len(cmdargv) < 2:
......
......@@ -8,9 +8,11 @@ $path = $_SERVER['PATH_INFO'];
$tokens = explode('/', $path);
if (config_get_bool('options', 'enable-maintenance') && (empty($tokens[1]) || ($tokens[1] != "css" && $tokens[1] != "images"))) {
header("HTTP/1.0 503 Service Unavailable");
include "./503.php";
return;
if (!in_array($_SERVER['REMOTE_ADDR'], explode(" ", config_get('options', 'maintenance-exceptions')))) {
header("HTTP/1.0 503 Service Unavailable");
include "./503.php";
return;
}
}
if (!empty($tokens[1]) && '/' . $tokens[1] == get_pkg_route()) {
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment