Add totp dump type, which returns UUIDs of Users with totp setup
This commit is contained in:
parent
6ae09cde9b
commit
f4b59cf9b3
|
@ -110,7 +110,8 @@ public class MongoConfig {
|
|||
db.getCollection("users").createIndexes(ImmutableList.of(
|
||||
new IndexModel(new Document("lastUsername", 1)),
|
||||
new IndexModel(new Document("lastUsernameLower", 1)),
|
||||
new IndexModel(new Document("emailToken", 1))
|
||||
new IndexModel(new Document("emailToken", 1)),
|
||||
new IndexModel(new Document("totpSecret", 1))
|
||||
), (a, b) -> {});
|
||||
db.getCollection("userMeta").createIndexes(ImmutableList.of(
|
||||
new IndexModel(new Document("user", 1).append("serverGroup", 1))
|
||||
|
|
|
@ -92,6 +92,10 @@ public final class User {
|
|||
usersCollection.find().sort(new Document("lastSeenAt", -1)).into(new LinkedList<>(), SyncUtils.vertxWrap(callback));
|
||||
}
|
||||
|
||||
public static void findAllWithTotpSetup(SingleResultCallback<List<User>> callback) {
|
||||
usersCollection.find(new Document("totpSecret", new Document("$exists", true))).sort(new Document("lastSeenAt", -1)).into(new LinkedList<>(), SyncUtils.vertxWrap(callback));
|
||||
}
|
||||
|
||||
public static void findById(String id, SingleResultCallback<User> callback) {
|
||||
try {
|
||||
findById(UuidUtils.parseUuid(id), callback);
|
||||
|
|
|
@ -39,6 +39,7 @@ public final class GETDumpsType implements Handler<RoutingContext> {
|
|||
|
||||
private final DecimalFormat coordinateFormat = new DecimalFormat("#.#####");
|
||||
|
||||
private List<UUID> totpCache = ImmutableList.of();
|
||||
private List<UUID> banCache = ImmutableList.of();
|
||||
private List<UUID> blacklistCache = ImmutableList.of();
|
||||
private List<String> ipBanCache = ImmutableList.of();
|
||||
|
@ -48,6 +49,21 @@ public final class GETDumpsType implements Handler<RoutingContext> {
|
|||
// 5 minutes, can't use TimeUnit expression in annotation
|
||||
@Scheduled(fixedRate = 5 * 60 * 1000)
|
||||
public void updateCache() {
|
||||
User.findAllWithTotpSetup((users, error) -> {
|
||||
if (error != null) {
|
||||
error.printStackTrace();
|
||||
return;
|
||||
}
|
||||
|
||||
List<UUID> totpCache = new LinkedList<>();
|
||||
|
||||
for (User user : users) {
|
||||
totpCache.add(user.getId());
|
||||
}
|
||||
|
||||
this.totpCache = totpCache;
|
||||
});
|
||||
|
||||
Punishment.findByType(ImmutableSet.of(
|
||||
Punishment.PunishmentType.BAN,
|
||||
Punishment.PunishmentType.BLACKLIST
|
||||
|
@ -157,6 +173,9 @@ public final class GETDumpsType implements Handler<RoutingContext> {
|
|||
String dumpType = ctx.request().getParam("dumpType");
|
||||
|
||||
switch (dumpType.toLowerCase()) {
|
||||
case "totp":
|
||||
APIv3.respondJson(ctx, 200, totpCache);
|
||||
return;
|
||||
case "ban":
|
||||
APIv3.respondJson(ctx, 200, banCache);
|
||||
return;
|
||||
|
@ -246,7 +265,7 @@ public final class GETDumpsType implements Handler<RoutingContext> {
|
|||
));
|
||||
return;
|
||||
default:
|
||||
ErrorUtils.respondInvalidInput(ctx, dumpType + " is not a valid type. Not in [ban, blacklist, accessDeniable, ipBan, grant, ipIntel, ipIntelFormatted]");
|
||||
ErrorUtils.respondInvalidInput(ctx, dumpType + " is not a valid type. Not in [totp, ban, blacklist, accessDeniable, ipBan, grant, ipIntel, ipIntelFormatted]");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue