forked from Hay1tsme/artemis
Compare commits
12 Commits
mai2_budpl
...
master
Author | SHA1 | Date | |
---|---|---|---|
d400a0be4b | |||
31ca45fc68 | |||
ee667b9ea5 | |||
c12272feab | |||
2a8a4880c2 | |||
5c497032f1 | |||
06a7fdb1b1 | |||
d09f3e9907 | |||
add85aeab7 | |||
a497a9806d | |||
e88e1f82f8 | |||
1e84a50330 |
30
changelog.md
30
changelog.md
@ -1,6 +1,36 @@
|
||||
# Changelog
|
||||
Documenting updates to ARTEMiS, to be updated every time the master branch is pushed to.
|
||||
|
||||
## 20240811
|
||||
### System
|
||||
+ Change backend from Twisted to Starlette
|
||||
+ Implement async handlers
|
||||
+ Reboot times for multiple games have been fixed (thanks zaphkito!)
|
||||
|
||||
### Frontend
|
||||
+ Edit button changed to View on the user page, and is where you can edit the card memo
|
||||
+ Add card now works as it should
|
||||
+ Add event log viewer in the `sys` page for sysadmins
|
||||
+ Add pages for Pokken, SAO, and maimai
|
||||
|
||||
### AimeDB
|
||||
+ Now rejects all-zero access codes
|
||||
+ Stores card IDm (for AmusementIC) and MiFare ID (for old aime/banapass)
|
||||
+ ...unless that MiFare ID is 0x01020304 (the default for segatools)
|
||||
|
||||
### maimai
|
||||
+ Add support for BUDDiES
|
||||
+ Rivals and Favorite Music support
|
||||
|
||||
### Wacca
|
||||
+ Add option to block unregistered serials from accessing the title server
|
||||
|
||||
### DIVA
|
||||
+ Fix for reading modded content (Thanks ThatzOkay!)
|
||||
|
||||
### CHUNITHM
|
||||
+ Save net battle info
|
||||
|
||||
## 20240630
|
||||
### DIVA
|
||||
+ Added configurable festa options'
|
||||
|
@ -479,7 +479,8 @@ class FE_User(FE_Base):
|
||||
'chip_id': c['chip_id'],
|
||||
'idm': c['idm'],
|
||||
'type': c_type,
|
||||
"memo": c['memo']
|
||||
"memo": c['memo'],
|
||||
"id": c['id'],
|
||||
})
|
||||
|
||||
if "e" in request.query_params:
|
||||
@ -522,39 +523,100 @@ class FE_User(FE_Base):
|
||||
return RedirectResponse("/gate/", 303)
|
||||
|
||||
frm = await request.form()
|
||||
ac = frm.get("add_access_code", None)
|
||||
cid = frm.get("card_edit_frm_card_id", None)
|
||||
if not cid:
|
||||
return RedirectResponse("/user/?e=999", 303)
|
||||
|
||||
ac = frm.get("card_edit_frm_access_code", None)
|
||||
if not ac:
|
||||
return RedirectResponse("/user/?e=999", 303)
|
||||
|
||||
card = await self.data.card.get_card_by_access_code(ac)
|
||||
card = await self.data.card.get_card_by_id(cid)
|
||||
if not card:
|
||||
return RedirectResponse("/user/?e=2", 303)
|
||||
|
||||
if card['user'] != usr_sesh.user_id and not self.test_perm_minimum(usr_sesh.permissions, PermissionOffset.USERMOD):
|
||||
return RedirectResponse("/user/?e=11", 303)
|
||||
|
||||
if frm.get("add_memo", None):
|
||||
if frm.get("add_memo", None) or frm.get("add_memo", None) == "":
|
||||
memo = frm.get("add_memo")
|
||||
if len(memo) > 16 or len(memo) == 0:
|
||||
if len(memo) > 16:
|
||||
return RedirectResponse("/user/?e=4", 303)
|
||||
await self.data.card.set_memo_by_access_code(ac, memo)
|
||||
|
||||
if frm.get("add_felica_idm", None):
|
||||
idm = frm.get('add_felica_idm')
|
||||
if not all(c in string.hexdigits for c in idm):
|
||||
return RedirectResponse("/user/?e=4", 303)
|
||||
await self.data.card.set_idm_by_access_code(ac, idm)
|
||||
if False: # Saving this in case I want to allow editing idm/chip ID down the line
|
||||
if frm.get("add_felica_idm", None):
|
||||
idm = frm.get('add_felica_idm')
|
||||
if not all(c in string.hexdigits for c in idm):
|
||||
return RedirectResponse("/user/?e=4", 303)
|
||||
await self.data.card.set_idm_by_access_code(ac, idm)
|
||||
|
||||
if frm.get("add_mifare_chip_id", None):
|
||||
chip_id: str = frm.get('add_mifare_chip_id')
|
||||
if not all(c in string.hexdigits for c in idm):
|
||||
return RedirectResponse("/user/?e=4", 303)
|
||||
await self.data.card.set_chip_id_by_access_code(ac, int(chip_id, 16))
|
||||
if frm.get("add_mifare_chip_id", None):
|
||||
chip_id: str = frm.get('add_mifare_chip_id')
|
||||
if not all(c in string.hexdigits for c in idm):
|
||||
return RedirectResponse("/user/?e=4", 303)
|
||||
await self.data.card.set_chip_id_by_access_code(ac, int(chip_id, 16))
|
||||
|
||||
return RedirectResponse("/user/?s=4", 303)
|
||||
|
||||
async def add_card(self, request: Request) -> RedirectResponse:
|
||||
return RedirectResponse("/user/", 303)
|
||||
frm = await request.form()
|
||||
card_type = frm.get("card_add_frm_type", None)
|
||||
access_code = frm.get("add_access_code", None)
|
||||
idm = frm.get("add_idm", None)
|
||||
idm_caps = None
|
||||
|
||||
usr_sesh = self.validate_session(request)
|
||||
if not usr_sesh or not self.test_perm(usr_sesh.permissions, PermissionOffset.USERMOD):
|
||||
return RedirectResponse("/gate/", 303)
|
||||
|
||||
if not len(access_code) == 20 or (not access_code.startswith("5") and not access_code.startswith("3") \
|
||||
and not access_code.startswith("010") and not access_code.startswith("0008")):
|
||||
return RedirectResponse("/user/?e=4", 303)
|
||||
|
||||
if card_type == "0" and access_code.startswith("5") and len(idm) == 16:
|
||||
idm_caps = idm.upper()
|
||||
|
||||
if not all([x in string.hexdigits for x in idm_caps]):
|
||||
return RedirectResponse("/user/?e=4", 303)
|
||||
|
||||
if access_code.startswith("5") and not idm_caps:
|
||||
return RedirectResponse("/user/?e=13", 303)
|
||||
|
||||
test = await self.data.card.get_card_by_access_code(access_code)
|
||||
if test:
|
||||
return RedirectResponse("/user/?e=12", 303)
|
||||
|
||||
if idm_caps:
|
||||
test = await self.data.card.get_card_by_idm(idm_caps)
|
||||
if test and test['user'] != usr_sesh.user_id:
|
||||
return RedirectResponse("/user/?e=12", 303)
|
||||
|
||||
test = await self.data.card.get_card_by_access_code(self.data.card.to_access_code(idm_caps))
|
||||
if test:
|
||||
if test['user'] != usr_sesh.user_id:
|
||||
return RedirectResponse("/user/?e=12", 303)
|
||||
|
||||
await self.data.card.set_access_code_by_access_code(test['access_code'], access_code)
|
||||
self.logger.info(f"Update card {test['id']} from {test['access_code']} to {access_code} for user {usr_sesh.user_id}")
|
||||
|
||||
await self.data.card.set_idm_by_access_code(access_code, idm_caps)
|
||||
self.logger.info(f"Set IDm for card {access_code} to {idm_caps}")
|
||||
return RedirectResponse("/user/?s=1", 303)
|
||||
|
||||
if card_type == "0" and access_code.startswith("0008"):
|
||||
test = await self.data.card.get_card_by_idm(self.data.card.to_idm(access_code))
|
||||
if test:
|
||||
return RedirectResponse("/user/?e=12", 303)
|
||||
|
||||
new_card = await self.data.card.create_card(usr_sesh.user_id, access_code)
|
||||
self.logger.info(f"Created new card {new_card} with access code {access_code} for user {usr_sesh.user_id}")
|
||||
|
||||
if idm_caps:
|
||||
await self.data.card.set_idm_by_access_code(access_code, idm_caps)
|
||||
self.logger.info(f"Set IDm for card {access_code} to {idm_caps}")
|
||||
|
||||
return RedirectResponse("/user/?s=1", 303)
|
||||
|
||||
async def render_POST(self, request: Request):
|
||||
frm = await request.form()
|
||||
|
@ -28,12 +28,28 @@ function toggle_add_card_form() {
|
||||
}
|
||||
}
|
||||
|
||||
function prep_edit_form(access_code, chip_id, idm, card_type, u_memo) {
|
||||
function toggle_idm_disabled(is_disabled) {
|
||||
document.getElementById("btn_add_card");
|
||||
let dv = document.getElementById("add_card_container")
|
||||
|
||||
if (dv.style['display'] != "") {
|
||||
btn.innerText = "Cancel";
|
||||
dv.style['display'] = "";
|
||||
} else {
|
||||
btn.innerText = "Add";
|
||||
dv.style['display'] = "none";
|
||||
}
|
||||
}
|
||||
|
||||
function prep_edit_form(access_code, chip_id, idm, card_type, u_memo, card_id) {
|
||||
ac = document.getElementById("card_edit_frm_access_code");
|
||||
cid = document.getElementById("card_edit_frm_chip_id");
|
||||
fidm = document.getElementById("card_edit_frm_idm");
|
||||
memo = document.getElementById("card_edit_frm_memo");
|
||||
|
||||
|
||||
document.getElementById("card_edit_frm_card_id").value = card_id;
|
||||
|
||||
if (chip_id == "None" || chip_id == undefined) {
|
||||
chip_id = ""
|
||||
}
|
||||
@ -52,7 +68,7 @@ function prep_edit_form(access_code, chip_id, idm, card_type, u_memo) {
|
||||
if (access_code.startsWith("3") || access_code.startsWith("010")) {
|
||||
cid.disabled = false;
|
||||
fidm.disabled = true;
|
||||
} else if (access_code.startsWith("5")) {
|
||||
} else if (access_code.startsWith("5") || access_code.startsWith("0008")) {
|
||||
cid.disabled = true;
|
||||
fidm.disabled = false;
|
||||
} else {
|
||||
@ -87,9 +103,23 @@ Card added successfully
|
||||
{% endif %}
|
||||
<div id="add_card_container" style="display: none; max-width: 33%;">
|
||||
<form action="/user/add.card" method="post", id="frm_add_card">
|
||||
<div class="form-check">
|
||||
<input type="radio" id="card_add_frm_type_aicc" value="0" name="card_add_frm_type" aria-describedby="aicc_help" onclick="document.getElementById('card_add_frm_idm').disabled = false;">
|
||||
<label class="form-label" for="card_add_frm_type_aicc">AmusementIC</label>
|
||||
<div id="aicc_help" class="form-text">Starts with 5. If you don't have the IDm, use the 0008 access code shown in-game</div>
|
||||
<br>
|
||||
<input type="radio" id="card_add_frm_type_old" value="1" name="card_add_frm_type" aria-describedby="old_help" onclick="document.getElementById('card_add_frm_idm').disabled = true;">
|
||||
<label class="form-label" for="card_add_frm_type_old">Old Aime/Banapass</label>
|
||||
<div id="old_help" class="form-text">Starts with 010 (aime) or 3 (banapass)</div>
|
||||
</div>
|
||||
|
||||
<label class="form-label" for="card_add_frm_access_code">Access Code:</label>
|
||||
<input class="form-control" name="add_access_code" id="card_add_frm_access_code" maxlength="20" type="text" required aria-describedby="ac_help">
|
||||
<div id="ac_help" class="form-text">20 digit code on the back of the card.</div>
|
||||
<label class="form-label" for="card_add_frm_access_code">IDm:</label>
|
||||
<input class="form-control" name="add_idm" id="card_add_frm_idm" maxlength="16" type="text" aria-describedby="idm_help">
|
||||
<div id="idm_help" class="form-text">AmusementIC cards only! 16 hexidecimal digits, sometimes called the serial number, gotten by scanning the card with a reader.</div>
|
||||
<br>
|
||||
<button type="submit" class="btn btn-primary">Add</button>
|
||||
</form>
|
||||
<br>
|
||||
@ -101,7 +131,7 @@ Update successful
|
||||
{% endif %}
|
||||
<ul style="font-size: 20px;">
|
||||
{% for c in cards %}
|
||||
<li>{{ c.access_code }} ({{ c.type if c.memo is none or not c.memo else c.memo }}): {{ c.status }} <button onclick="prep_edit_form('{{ c.access_code }}', '{{ c.chip_id}}', '{{ c.idm }}', '{{ c.type }}', '{{ c.memo }}')" data-bs-toggle="modal" data-bs-target="#card_edit" class="btn btn-secondary" id="btn_edit_card_{{ c.access_code }}">Edit</button> {% if c.status == 'Active'%}<button class="btn-warning btn">Lock</button>{% elif c.status == 'Locked' %}<button class="btn-warning btn">Unlock</button>{% endif %} <button class="btn-danger btn" {{ "disabled" if cards|length == 1 else ""}}>Delete</button></li>
|
||||
<li>{{ c.access_code }} ({{ c.type if c.memo is none or not c.memo else c.memo }}): {{ c.status }} <button onclick="prep_edit_form('{{ c.access_code }}', '{{ c.chip_id}}', '{{ c.idm }}', '{{ c.type }}', '{{ c.memo }}', '{{ c.id }}')" data-bs-toggle="modal" data-bs-target="#card_edit" class="btn btn-secondary" id="btn_edit_card_{{ c.access_code }}">View</button> {% if c.status == 'Active'%}<button class="btn-warning btn">Lock</button>{% elif c.status == 'Locked' %}<button class="btn-warning btn">Unlock</button>{% endif %} <button class="btn-danger btn" {{ "disabled" if cards|length == 1 else ""}}>Delete</button></li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
|
||||
@ -150,31 +180,31 @@ Update successful
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h1 class="modal-title fs-5" id="card_edit_label">Edit Card</h1>
|
||||
<h1 class="modal-title fs-5" id="card_edit_label">Card Information</h1>
|
||||
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<form action="/user/edit.card" method="post" id="frm_edit_card">
|
||||
<input type="hidden" readonly name="card_edit_frm_card_id" id="card_edit_frm_card_id">
|
||||
<label class="form-label" for="card_edit_frm_access_code">Access Code:</label>
|
||||
<input class="form-control" readonly name="add_access_code" id="card_edit_frm_access_code" maxlength="20" type="text" required aria-describedby="ac_help">
|
||||
<input class="form-control-plaintext" readonly name="card_edit_frm_access_code" id="card_edit_frm_access_code" maxlength="20" type="text" required aria-describedby="ac_help">
|
||||
<div id="ac_help" class="form-text">20 digit code on the back of the card. If this is incorrect, contact a sysadmin.</div>
|
||||
|
||||
<label class="form-label" for="card_edit_frm_idm" id="card_edit_frm_idm_lbl">FeliCa IDm:</label>
|
||||
<input class="form-control-plaintext" aria-describedby="idm_help" name="add_felica_idm" id="card_edit_frm_idm" maxlength="16" type="text" readonly>
|
||||
<div id="idm_help" class="form-text">8 bytes that uniquly idenfites a FeliCa card. Obtained by reading the card with an NFC reader.</div>
|
||||
|
||||
<label class="form-label" for="card_edit_frm_chip_id" id="card_edit_frm_chip_id_lbl">Mifare UID:</label>
|
||||
<input class="form-control-plaintext" aria-describedby="chip_id_help" name="add_mifare_chip_id" id="card_edit_frm_chip_id" maxlength="8" type="text" readonly>
|
||||
<div id="chip_id_help" class="form-text">4 byte integer that uniquly identifies a Mifare card. Obtained by reading the card with an NFC reader.</div>
|
||||
|
||||
<label class="form-label" for="card_edit_frm_memo" id="card_edit_frm_memo_lbl">Memo:</label>
|
||||
<input class="form-control" aria-describedby="memo_help" name="add_memo" id="card_edit_frm_memo" maxlength="16" type="text">
|
||||
<div id="memo_help" class="form-text">Must be 16 characters or less.</div>
|
||||
|
||||
<label class="form-label" for="card_edit_frm_idm" id="card_edit_frm_idm_lbl">FeliCa IDm:</label>
|
||||
<input class="form-control" aria-describedby="idm_help" name="add_felica_idm" id="card_edit_frm_idm" maxlength="16" type="text">
|
||||
<div id="idm_help" class="form-text">8 bytes that uniquly idenfites a FeliCa card. Obtained by reading the card with an NFC reader.</div>
|
||||
|
||||
<label class="form-label" for="card_edit_frm_chip_id" id="card_edit_frm_chip_id_lbl">Mifare UID:</label>
|
||||
<input class="form-control" aria-describedby="chip_id_help" name="add_mifare_chip_id" id="card_edit_frm_chip_id" maxlength="8" type="text">
|
||||
<div id="chip_id_help" class="form-text">4 byte integer that uniquly identifies a Mifare card. Obtained by reading the card with an NFC reader.</div>
|
||||
</form>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="submit" class="btn btn-primary" form="frm_edit_card">Edit</button>
|
||||
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button>
|
||||
<button type="submit" class="btn btn-primary">Update Memo</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -23,6 +23,10 @@ You must be logged in to preform this action
|
||||
Invalid serial number
|
||||
{% elif error == 11 %}
|
||||
Access Denied
|
||||
{% elif error == 12 %}
|
||||
Card already registered
|
||||
{% elif error == 13 %}
|
||||
AmusementIC Access Codes beginning with 5 must have IDm
|
||||
{% else %}
|
||||
An unknown error occoured
|
||||
{% endif %}
|
||||
|
@ -216,7 +216,6 @@ Presents are items given to the user when they login, with a little animation (f
|
||||
| SDEZ | 19 | maimai DX FESTiVAL |
|
||||
| SDEZ | 20 | maimai DX FESTiVAL PLUS |
|
||||
| SDEZ | 21 | maimai DX BUDDiES |
|
||||
| SDEZ | 22 | maimai DX BUDDiES PLUS |
|
||||
|
||||
### Importer
|
||||
|
||||
|
@ -29,6 +29,7 @@ Games listed below have been tested and confirmed working. Only game versions ol
|
||||
+ NEW PLUS
|
||||
+ SUN
|
||||
+ SUN PLUS
|
||||
+ LUMINOUS
|
||||
|
||||
+ crossbeats REV.
|
||||
+ Crossbeats REV.
|
||||
|
@ -207,7 +207,6 @@ class CardMakerReader(BaseReader):
|
||||
"1.30": Mai2Constants.VER_MAIMAI_DX_FESTIVAL,
|
||||
"1.35": Mai2Constants.VER_MAIMAI_DX_FESTIVAL_PLUS,
|
||||
"1.40": Mai2Constants.VER_MAIMAI_DX_BUDDIES,
|
||||
"1.45": Mai2Constants.VER_MAIMAI_DX_BUDDIES_PLUS,
|
||||
}
|
||||
|
||||
for root, dirs, files in os.walk(base_dir):
|
||||
|
@ -23,7 +23,7 @@ class DivaFrontend(FE_Base):
|
||||
self.game_cfg.update(
|
||||
yaml.safe_load(open(f"{cfg_dir}/{DivaConstants.CONFIG_NAME}"))
|
||||
)
|
||||
self.nav_name = "diva"
|
||||
self.nav_name = "Project Diva"
|
||||
|
||||
def get_routes(self) -> List[Route]:
|
||||
return [
|
||||
|
@ -1,69 +0,0 @@
|
||||
from typing import Dict
|
||||
|
||||
from core.config import CoreConfig
|
||||
from titles.mai2.buddies import Mai2Buddies
|
||||
from titles.mai2.const import Mai2Constants
|
||||
from titles.mai2.config import Mai2Config
|
||||
|
||||
|
||||
class Mai2BuddiesPlus(Mai2Buddies):
|
||||
def __init__(self, cfg: CoreConfig, game_cfg: Mai2Config) -> None:
|
||||
super().__init__(cfg, game_cfg)
|
||||
self.version = Mai2Constants.VER_MAIMAI_DX_BUDDIES_PLUS
|
||||
|
||||
async def handle_cm_get_user_preview_api_request(self, data: Dict) -> Dict:
|
||||
user_data = await super().handle_cm_get_user_preview_api_request(data)
|
||||
|
||||
# hardcode lastDataVersion for CardMaker
|
||||
user_data["lastDataVersion"] = "1.45.00"
|
||||
return user_data
|
||||
|
||||
async def handle_get_game_weekly_data_api_request(self, data: Dict) -> Dict:
|
||||
return {
|
||||
"gameWeeklyData": {
|
||||
"missionCategory": 0,
|
||||
"updateDate": "2000-01-01 00:00:00",
|
||||
"beforeDate": "2099-12-31 23:59:59"
|
||||
}
|
||||
}
|
||||
|
||||
async def handle_get_user_mission_data_api_request(self, data: Dict) -> Dict:
|
||||
user_id = data["userId"]
|
||||
return {
|
||||
"userId": user_id,
|
||||
"userWeeklyData":{
|
||||
"lastLoginWeek": "1900/01/01",
|
||||
"beforeLoginWeek": "1900/01/01",
|
||||
"friendBonusFlag": False
|
||||
},
|
||||
"userMissionDataList":[]
|
||||
}
|
||||
|
||||
async def handle_get_user_friend_bonus_api_request(self, data: Dict) -> Dict:
|
||||
user_id = data["userId"]
|
||||
return {
|
||||
"userId": user_id,
|
||||
"returnCode": 0,
|
||||
"getMiles": 0
|
||||
}
|
||||
|
||||
async def handle_get_user_friend_regist_api_request(self, data: Dict) -> Dict:
|
||||
return {
|
||||
"returnCode1": 0,
|
||||
"returnCode2": 0
|
||||
}
|
||||
|
||||
async def handle_get_user_shop_stock_api_request(self, data: Dict) -> Dict:
|
||||
user_id = data["userId"]
|
||||
return {
|
||||
"userId": user_id,
|
||||
"userShopStockList": []
|
||||
}
|
||||
|
||||
async def handle_get_user_intimate_api_request(self, data: Dict) -> Dict:
|
||||
user_id = data["userId"]
|
||||
return {
|
||||
"userId": user_id,
|
||||
"length": 0,
|
||||
"userIntimateList": []
|
||||
}
|
@ -55,7 +55,6 @@ class Mai2Constants:
|
||||
VER_MAIMAI_DX_FESTIVAL = 19
|
||||
VER_MAIMAI_DX_FESTIVAL_PLUS = 20
|
||||
VER_MAIMAI_DX_BUDDIES = 21
|
||||
VER_MAIMAI_DX_BUDDIES_PLUS = 22
|
||||
|
||||
VERSION_STRING = (
|
||||
"maimai",
|
||||
@ -79,8 +78,7 @@ class Mai2Constants:
|
||||
"maimai DX UNiVERSE PLUS",
|
||||
"maimai DX FESTiVAL",
|
||||
"maimai DX FESTiVAL PLUS",
|
||||
"maimai DX BUDDiES",
|
||||
"maimai DX BUDDiES PLUS",
|
||||
"maimai DX BUDDiES"
|
||||
)
|
||||
|
||||
@classmethod
|
||||
|
@ -259,20 +259,6 @@ class Mai2DX(Mai2Base):
|
||||
if "user2pPlaylog" in upsert:
|
||||
await self.data.score.put_playlog_2p(user_id, upsert["user2pPlaylog"])
|
||||
|
||||
# if "userFavouritemusicList" in upsert:
|
||||
|
||||
# if "userGetPointList" in upsert:
|
||||
|
||||
# if "userIntimateList" in upsert:
|
||||
|
||||
# if "userMissionDataList" in upsert:
|
||||
|
||||
# if "userShopItemStockList" in upsert:
|
||||
|
||||
# if "userTrideItemList" in upsert:
|
||||
|
||||
# if "userWeeklyData" in upsert:
|
||||
|
||||
return {"returnCode": 1, "apiName": "UpsertUserAllApi"}
|
||||
|
||||
async def handle_get_user_data_api_request(self, data: Dict) -> Dict:
|
||||
|
@ -30,7 +30,6 @@ from .universeplus import Mai2UniversePlus
|
||||
from .festival import Mai2Festival
|
||||
from .festivalplus import Mai2FestivalPlus
|
||||
from .buddies import Mai2Buddies
|
||||
from .buddiesplus import Mai2BuddiesPlus
|
||||
|
||||
|
||||
class Mai2Servlet(BaseServlet):
|
||||
@ -65,8 +64,7 @@ class Mai2Servlet(BaseServlet):
|
||||
Mai2UniversePlus,
|
||||
Mai2Festival,
|
||||
Mai2FestivalPlus,
|
||||
Mai2Buddies,
|
||||
Mai2BuddiesPlus,
|
||||
Mai2Buddies
|
||||
]
|
||||
|
||||
self.logger = logging.getLogger("mai2")
|
||||
@ -304,10 +302,8 @@ class Mai2Servlet(BaseServlet):
|
||||
internal_ver = Mai2Constants.VER_MAIMAI_DX_FESTIVAL
|
||||
elif version >= 135 and version < 140: # FESTiVAL PLUS
|
||||
internal_ver = Mai2Constants.VER_MAIMAI_DX_FESTIVAL_PLUS
|
||||
elif version >= 140 and version < 145: # BUDDiES
|
||||
elif version >= 140: # BUDDiES
|
||||
internal_ver = Mai2Constants.VER_MAIMAI_DX_BUDDIES
|
||||
elif version >= 145: # BUDDiES PLUS
|
||||
internal_ver = Mai2Constants.VER_MAIMAI_DX_BUDDIES_PLUS
|
||||
elif game_code == "SDGA": # Int
|
||||
if version < 105: # 1.0
|
||||
internal_ver = Mai2Constants.VER_MAIMAI_DX
|
||||
@ -325,10 +321,6 @@ class Mai2Servlet(BaseServlet):
|
||||
internal_ver = Mai2Constants.VER_MAIMAI_DX_FESTIVAL
|
||||
elif version >= 135 and version < 140: # FESTiVAL PLUS
|
||||
internal_ver = Mai2Constants.VER_MAIMAI_DX_FESTIVAL_PLUS
|
||||
elif version >= 140 and version < 145: # BUDDiES
|
||||
internal_ver = Mai2Constants.VER_MAIMAI_DX_BUDDIES
|
||||
elif version >= 145: # BUDDiES PLUS
|
||||
internal_ver = Mai2Constants.VER_MAIMAI_DX_BUDDIES_PLUS
|
||||
|
||||
if all(c in string.hexdigits for c in endpoint) and len(endpoint) == 32:
|
||||
# If we get a 32 character long hex string, it's a hash and we're
|
||||
|
@ -43,12 +43,6 @@ detail = Table(
|
||||
Column("currentPlayCount", Integer), # new with buddies
|
||||
Column("renameCredit", Integer), # new with buddies
|
||||
Column("mapStock", Integer), # new with fes+
|
||||
Column("point", Integer), # new with bud+
|
||||
Column("totalPoint", Integer), # new with bud+
|
||||
Column("viewIconId", Integer), # new with bud+
|
||||
Column("viewTitleId", Integer), # new with bud+
|
||||
Column("viewPlateId", Integer), # new with bud+
|
||||
Column("viewFrameId", Integer), # new with bud+
|
||||
Column("eventWatchedDate", String(25)),
|
||||
Column("lastGameId", String(25)),
|
||||
Column("lastRomVersion", String(25)),
|
||||
@ -103,7 +97,6 @@ detail = Table(
|
||||
Column("playerOldRating", BigInteger),
|
||||
Column("playerNewRating", BigInteger),
|
||||
Column("dateTime", BigInteger),
|
||||
Column("friendRegistSkip", Integer), # new with bud+
|
||||
Column("banState", Integer), # new with uni+
|
||||
UniqueConstraint("user", "version", name="mai2_profile_detail_uk"),
|
||||
mysql_charset="utf8mb4",
|
||||
|
Loading…
Reference in New Issue
Block a user