mirror of
https://gitlab.archlinux.org/archlinux/aurweb.git
synced 2025-02-03 10:43:03 +01:00
git-serve: Save last SSH login date and IP address
In addition to logging the last login date and IP address on the web
interface, store the time stamp and IP address of the last SSH login in
the database.
This simplifies user banning if one of the new SSH interface features,
such as the voting mechanism implemented in 7ee2fdd
(git-serve: Add
support for (un-)voting, 2017-01-23), is abused.
Signed-off-by: Lukas Fleischer <lfleischer@archlinux.org>
This commit is contained in:
parent
b8df10e227
commit
f8916d7e9b
3 changed files with 24 additions and 1 deletions
|
@ -410,6 +410,18 @@ def pkgbase_has_full_access(pkgbase, user):
|
||||||
return cur.fetchone()[0] > 0
|
return cur.fetchone()[0] > 0
|
||||||
|
|
||||||
|
|
||||||
|
def log_ssh_login(user, remote_addr):
|
||||||
|
conn = aurweb.db.Connection()
|
||||||
|
|
||||||
|
now = int(time.time())
|
||||||
|
conn.execute("UPDATE Users SET LastSSHLogin = ?, " +
|
||||||
|
"LastSSHLoginIPAddress = ? WHERE Username = ?",
|
||||||
|
[now, remote_addr, user])
|
||||||
|
|
||||||
|
conn.commit()
|
||||||
|
conn.close()
|
||||||
|
|
||||||
|
|
||||||
def die(msg):
|
def die(msg):
|
||||||
sys.stderr.write("{:s}\n".format(msg))
|
sys.stderr.write("{:s}\n".format(msg))
|
||||||
exit(1)
|
exit(1)
|
||||||
|
@ -451,6 +463,7 @@ def serve(action, cmdargv, user, privileged, remote_addr):
|
||||||
if enable_maintenance:
|
if enable_maintenance:
|
||||||
if remote_addr not in maintenance_exc:
|
if remote_addr not in maintenance_exc:
|
||||||
raise aurweb.exceptions.MaintenanceException
|
raise aurweb.exceptions.MaintenanceException
|
||||||
|
log_ssh_login(user, remote_addr)
|
||||||
|
|
||||||
if action == 'git' and cmdargv[1] in ('upload-pack', 'receive-pack'):
|
if action == 'git' and cmdargv[1] in ('upload-pack', 'receive-pack'):
|
||||||
action = action + '-' + cmdargv[1]
|
action = action + '-' + cmdargv[1]
|
||||||
|
|
|
@ -38,6 +38,8 @@ CREATE TABLE Users (
|
||||||
PGPKey VARCHAR(40) NULL DEFAULT NULL,
|
PGPKey VARCHAR(40) NULL DEFAULT NULL,
|
||||||
LastLogin BIGINT UNSIGNED NOT NULL DEFAULT 0,
|
LastLogin BIGINT UNSIGNED NOT NULL DEFAULT 0,
|
||||||
LastLoginIPAddress VARCHAR(45) NULL DEFAULT NULL,
|
LastLoginIPAddress VARCHAR(45) NULL DEFAULT NULL,
|
||||||
|
LastSSHLogin BIGINT UNSIGNED NOT NULL DEFAULT 0,
|
||||||
|
LastSSHLoginIPAddress VARCHAR(45) NULL DEFAULT NULL,
|
||||||
InactivityTS BIGINT UNSIGNED NOT NULL DEFAULT 0,
|
InactivityTS BIGINT UNSIGNED NOT NULL DEFAULT 0,
|
||||||
RegistrationTS TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
RegistrationTS TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||||
CommentNotify TINYINT(1) NOT NULL DEFAULT 1,
|
CommentNotify TINYINT(1) NOT NULL DEFAULT 1,
|
||||||
|
|
|
@ -3,3 +3,11 @@
|
||||||
---
|
---
|
||||||
ALTER TABLE Users ADD COLUMN Timezone VARCHAR(32) NOT NULL DEFAULT 'UTC';
|
ALTER TABLE Users ADD COLUMN Timezone VARCHAR(32) NOT NULL DEFAULT 'UTC';
|
||||||
---
|
---
|
||||||
|
|
||||||
|
2. Add LastSSHLogin and LastSSHLoginIPAddress columns to the Users table:
|
||||||
|
|
||||||
|
---
|
||||||
|
ALTER TABLE Users
|
||||||
|
ADD COLUMN LastSSHLogin BIGINT UNSIGNED NOT NULL DEFAULT 0,
|
||||||
|
ADD COLUMN LastSSHLoginIPAddress VARCHAR(45) NULL DEFAULT NULL;
|
||||||
|
---
|
||||||
|
|
Loading…
Add table
Reference in a new issue