[O] Check username

This commit is contained in:
Azalea
2024-03-20 22:43:03 -04:00
parent e799b48877
commit f728b6ab1b
3 changed files with 15 additions and 40 deletions

View File

@@ -1,6 +1,7 @@
package icu.samnyan.aqua.sega.maimai2 package icu.samnyan.aqua.sega.maimai2
import ext.API import ext.API
import ext.popAll
import icu.samnyan.aqua.sega.general.BaseHandler import icu.samnyan.aqua.sega.general.BaseHandler
import icu.samnyan.aqua.sega.maimai2.handler.* import icu.samnyan.aqua.sega.maimai2.handler.*
import org.slf4j.LoggerFactory import org.slf4j.LoggerFactory
@@ -22,7 +23,6 @@ class Maimai2ServletController(
val getTransferFriend: GetTransferFriendHandler, val getTransferFriend: GetTransferFriendHandler,
val getUserActivity: GetUserActivityHandler, val getUserActivity: GetUserActivityHandler,
val userLogin: UserLoginHandler, val userLogin: UserLoginHandler,
val userLogout: UserLogoutHandler,
val getUserData: GetUserDataHandler, val getUserData: GetUserDataHandler,
val upsertUserAll: UpsertUserAllHandler, val upsertUserAll: UpsertUserAllHandler,
val getUserPreview: GetUserPreviewHandler, val getUserPreview: GetUserPreviewHandler,
@@ -62,7 +62,8 @@ class Maimai2ServletController(
val createToken = BaseHandler { """{"Bearer":"AQUATOKEN"}""" } val createToken = BaseHandler { """{"Bearer":"AQUATOKEN"}""" }
val cmUpsertUserPrintLog = BaseHandler { """{"returnCode":1,"orderId":"0","serialId":"FAKECARDIMAG12345678"}""" } val cmUpsertUserPrintLog = BaseHandler { """{"returnCode":1,"orderId":"0","serialId":"FAKECARDIMAG12345678"}""" }
val endpointList = listOf("GetGameEventApi", "GetGameRankingApi", "GetGameSettingApi", "GetGameTournamentInfoApi", val endpointList = mutableListOf("GetGameEventApi", "GetGameRankingApi", "GetGameSettingApi",
"GetGameTournamentInfoApi",
"GetTransferFriendApi", "GetUserActivityApi", "GetUserCardApi", "GetUserCharacterApi", "GetUserDataApi", "GetTransferFriendApi", "GetUserActivityApi", "GetUserCardApi", "GetUserCharacterApi", "GetUserDataApi",
"GetUserExtendApi", "GetUserFavoriteApi", "GetUserGhostApi", "GetUserItemApi", "GetUserLoginBonusApi", "GetUserExtendApi", "GetUserFavoriteApi", "GetUserGhostApi", "GetUserItemApi", "GetUserLoginBonusApi",
"GetUserMapApi", "GetUserMusicApi", "GetUserOptionApi", "GetUserPortraitApi", "GetUserPreviewApi", "GetUserMapApi", "GetUserMusicApi", "GetUserOptionApi", "GetUserPortraitApi", "GetUserPreviewApi",
@@ -72,12 +73,15 @@ class Maimai2ServletController(
"GetUserRecommendRateMusicApi", "GetUserRecommendSelectMusicApi", "CMGetSellingCardApi", "GetUserRecommendRateMusicApi", "GetUserRecommendSelectMusicApi", "CMGetSellingCardApi",
"CMGetUserCardApi", "CMGetUserCardPrintErrorApi", "CMGetUserCharacterApi", "CMGetUserDataApi", "CMGetUserItemApi", "CMGetUserCardApi", "CMGetUserCardPrintErrorApi", "CMGetUserCharacterApi", "CMGetUserDataApi", "CMGetUserItemApi",
"CMGetUserPreviewApi", "CMUpsertUserPrintApi", "CMGetUserPreviewApi", "CMUpsertUserPrintApi",
"CMUpsertUserPrintlogApi", "GetUserFavoriteItemApi", "GetUserRivalDataApi", "GetUserRivalMusicApi") "CMUpsertUserPrintlogApi", "GetUserFavoriteItemApi", "GetUserRivalDataApi", "GetUserRivalMusicApi",
"GetUserScoreRankingApi", "UpsertClientBookkeepingApi", "UpsertClientSettingApi",
val noopEndpoint = setOf("GetUserScoreRankingApi", "UpsertClientBookkeepingApi", "UpsertClientSettingApi",
"UpsertClientTestmodeApi", "UpsertClientUploadApi", "Ping", "RemoveTokenApi", "CMLoginApi", "CMLogoutApi", "UpsertClientTestmodeApi", "UpsertClientUploadApi", "Ping", "RemoveTokenApi", "CMLoginApi", "CMLogoutApi",
"CMUpsertBuyCardApi") "CMUpsertBuyCardApi")
val noopEndpoint = endpointList.popAll("GetUserScoreRankingApi", "UpsertClientBookkeepingApi",
"UpsertClientSettingApi", "UpsertClientTestmodeApi", "UpsertClientUploadApi", "Ping", "RemoveTokenApi",
"CMLoginApi", "CMLogoutApi", "CMUpsertBuyCardApi", "UserLogoutApi")
val members = this::class.declaredMemberProperties val members = this::class.declaredMemberProperties
val handlers: Map<String, BaseHandler> = endpointList.associateWith { api -> val handlers: Map<String, BaseHandler> = endpointList.associateWith { api ->
val name = api.replace("Api", "").lowercase() val name = api.replace("Api", "").lowercase()

View File

@@ -4,6 +4,7 @@ import com.fasterxml.jackson.core.JsonProcessingException
import ext.invoke import ext.invoke
import ext.mapApply import ext.mapApply
import ext.minus import ext.minus
import icu.samnyan.aqua.net.games.USERNAME_CHARS
import icu.samnyan.aqua.sega.general.BaseHandler import icu.samnyan.aqua.sega.general.BaseHandler
import icu.samnyan.aqua.sega.general.service.CardService import icu.samnyan.aqua.sega.general.service.CardService
import icu.samnyan.aqua.sega.maimai2.handler.UploadUserPlaylogHandler.Companion.playBacklog import icu.samnyan.aqua.sega.maimai2.handler.UploadUserPlaylogHandler.Companion.playBacklog
@@ -45,6 +46,10 @@ class UpsertUserAllHandler(
id = userData?.id ?: 0 id = userData?.id ?: 0
card = userData?.card ?: cardService.getCardByExtId(userId).orElseThrow() card = userData?.card ?: cardService.getCardByExtId(userId).orElseThrow()
isNetMember = 1 isNetMember = 1
// Verify user name
if (userName.isBlank() || userName.length > 8 || !userName.all { it in USERNAME_CHARS })
400 - "Invalid username"
}) })
// Check playlog backlog // Check playlog backlog
@@ -55,7 +60,7 @@ class UpsertUserAllHandler(
// Set users // Set users
req.run { listOf(userExtend, userOption, userCharacterList, userMapList, userLoginBonusList, userItemList, req.run { listOf(userExtend, userOption, userCharacterList, userMapList, userLoginBonusList, userItemList,
userMusicDetailList, userCourseList, userFriendSeasonRankingList, userFavoriteList) } userMusicDetailList, userCourseList, userFriendSeasonRankingList, userFavoriteList) }
.forEach { it?.forEach { it?.user = u } } .flatten().forEach { it?.user = u }
req.userExtend?.getOrNull(0)?.let { req.userExtend?.getOrNull(0)?.let {
repos.userExtend.save(it.apply { id = repos.userExtend.findSingleByUser(u)()?.id ?: 0 }) repos.userExtend.save(it.apply { id = repos.userExtend.findSingleByUser(u)()?.id ?: 0 })

View File

@@ -1,34 +0,0 @@
package icu.samnyan.aqua.sega.maimai2.handler;
import com.fasterxml.jackson.core.JsonProcessingException;
import icu.samnyan.aqua.sega.chunithm.model.response.CodeResp;
import icu.samnyan.aqua.sega.general.BaseHandler;
import icu.samnyan.aqua.sega.util.jackson.BasicMapper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import java.util.Map;
/**
* @author samnyan (privateamusement@protonmail.com)
*/
@Component("Maimai2UserLogoutHandler")
public class UserLogoutHandler implements BaseHandler {
private static final Logger logger = LoggerFactory.getLogger(UserLogoutHandler.class);
private final BasicMapper mapper;
public UserLogoutHandler(BasicMapper mapper) {
this.mapper = mapper;
}
@Override
public String handle(Map<String, Object> request) throws JsonProcessingException {
String json = mapper.write(new CodeResp(1));
logger.info("Response: " + json);
return json;
}
}