Skip to content

Commit 5644c8d

Browse files
committed
gitadora in-title
1 parent e4ea4a5 commit 5644c8d

File tree

9 files changed

+243
-21
lines changed

9 files changed

+243
-21
lines changed

src/controllers/default.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ export class DefaultService {
1717

1818
p2d()(undefined, undefined, descriptor);
1919
return descriptor.value();
20-
} else if (ctx.service.name === 'sdvx') {
20+
} else if (ctx.service.name === 'sdvx' || ctx.service.name == 'gitadora') {
2121
const result = {
2222
status: v.s32(0),
2323
error_code: v.s32(0),
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
export class AcRelay {
2+
3+
}

src/controllers/gitadora/index.ts

Lines changed: 154 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,154 @@
1+
import { gitadora } from "../../decorators/eacnet.js";
2+
import { Combine } from "../../utils/combine.js";
3+
import config from "../../utils/config.js";
4+
import { Serializable, v } from "../../utils/kxml-value.js";
5+
import { AcRelay } from "./ac-relay.js";
6+
import { singleton } from "tsyringe";
7+
import { User } from "./user.js";
8+
import { Music } from "./music.js";
9+
10+
@singleton()
11+
export default class extends Combine(AcRelay, User, Music) {
12+
constructor(
13+
) {
14+
super();
15+
}
16+
17+
@gitadora()
18+
async heartbeat(): Promise<Serializable> {
19+
return {
20+
status: v.s32(0),
21+
error_code: v.s32(0),
22+
response: {
23+
state: v.s32(1),
24+
next_clock: v.u64(new Date().valueOf() + 36e5),
25+
server_state: v.s32(1),
26+
mainte_start_clock: v.u64(0),
27+
mainte_end_clock: v.u64(0),
28+
usta_boot_status: v.s32(1),
29+
usta_time_remain: v.s32(0),
30+
}
31+
};
32+
}
33+
34+
@gitadora()
35+
async checkVersion(): Promise<Serializable> {
36+
return {
37+
status: v.s32(0),
38+
error_code: v.s32(0),
39+
response: {
40+
permission: v.s32(1),
41+
}
42+
};
43+
}
44+
45+
@gitadora()
46+
async getServerClock(): Promise<Serializable> {
47+
return {
48+
status: v.s32(0),
49+
error_code: v.s32(0),
50+
response: {
51+
server_clock: v.u64(new Date().valueOf()),
52+
}
53+
}
54+
}
55+
56+
@gitadora()
57+
async getServerState(): Promise<Serializable> {
58+
return {
59+
status: v.s32(0),
60+
error_code: v.s32(0),
61+
response: {
62+
server_state: v.s32(1),
63+
mainte_start_clock: v.u64(0),
64+
mainte_end_clock: v.u64(0),
65+
}
66+
}
67+
}
68+
69+
@gitadora('SHIFT_JIS')
70+
async getServices(): Promise<Serializable> {
71+
return {
72+
status: v.s32(0),
73+
error_code: v.s32(0),
74+
response: {
75+
service_num: v.s32(18),
76+
service: [
77+
{
78+
service_name: v.str('acRelay'),
79+
url: v.str(`${config.selfUrl}/need_auth/AcRelay`),
80+
},
81+
{
82+
service_name: v.str('cancelReserveConsumeItem'),
83+
url: v.str(`${config.selfUrl}/need_auth/CancelReserveConsumeItem`),
84+
},
85+
{
86+
service_name: v.str('checkGameStart'),
87+
url: v.str(`${config.selfUrl}/need_auth/CheckGameStart`),
88+
},
89+
{
90+
service_name: v.str('checkVersion'),
91+
url: v.str(`${config.selfUrl}/needless_auth/CheckVersion`),
92+
},
93+
{
94+
service_name: v.str('consumeItem'),
95+
url: v.str(`${config.selfUrl}/need_auth/ConsumeItem`),
96+
},
97+
{
98+
service_name: v.str('getGoodsList'),
99+
url: v.str(`${config.selfUrl}/needless_auth/GetGoodsList`),
100+
},
101+
{
102+
service_name: v.str('getHash'),
103+
url: v.str(`${config.selfUrl}/needless_auth/GetHash`),
104+
},
105+
{
106+
service_name: v.str('getItemList'),
107+
url: v.str(`${config.selfUrl}/need_auth/GetItemList`),
108+
},
109+
{
110+
service_name: v.str('getLauncherData'),
111+
url: v.str(`${config.selfUrl}/needless_auth/GetLauncherData`),
112+
},
113+
{
114+
service_name: v.str('getResourceInfo'),
115+
url: v.str(`${config.selfUrl}/needless_auth/GetResourceInfo`),
116+
},
117+
{
118+
service_name: v.str('getServerClock'),
119+
url: v.str(`${config.selfUrl}/pre_process/GetServerClock`),
120+
},
121+
{
122+
service_name: v.str('getServerState'),
123+
url: v.str(`${config.selfUrl}/pre_process/GetServerStatus`),
124+
},
125+
{
126+
service_name: v.str('getServices'),
127+
url: v.str(`${config.selfUrl}/pre_process/GetServices`),
128+
},
129+
{
130+
service_name: v.str('getSubscriptionStatus'),
131+
url: v.str(`${config.selfUrl}/need_auth/GetSubscriptionStatus`),
132+
},
133+
{
134+
service_name: v.str('getUserIDs'),
135+
url: v.str(`${config.selfUrl}/need_auth/GetUserId`),
136+
},
137+
{
138+
service_name: v.str('heartbeat'),
139+
url: v.str(`${config.selfUrl}/need_auth/Heartbeat`),
140+
},
141+
{
142+
service_name: v.str('reserveConsumeItem'),
143+
url: v.str(`${config.selfUrl}/need_auth/ReserveConsumeItem`),
144+
},
145+
{
146+
service_name: v.str('uploadFile'),
147+
url: v.str(`${config.selfUrl}/needless_auth/UploadFile`),
148+
},
149+
150+
],
151+
}
152+
};
153+
}
154+
}

src/controllers/gitadora/music.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
export class Music {
2+
3+
}

src/controllers/gitadora/user.ts

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
/* eslint-disable @typescript-eslint/no-unused-vars */
2+
import { tokenToCardNumber, tokenToHash, tokenToSnsId } from "../../utils/laochan-id.js";
3+
import { Context } from "../../types.js";
4+
import { gitadora } from '../../decorators/eacnet.js';
5+
import { Serializable, v } from '../../utils/kxml-value.js';
6+
7+
export class User {
8+
@gitadora()
9+
async getItemList(): Promise<Serializable> {
10+
return {
11+
status: v.s32(0),
12+
error_code: v.s32(0),
13+
response: {
14+
item_num: v.s32(0),
15+
item: {},
16+
}
17+
};
18+
}
19+
20+
@gitadora()
21+
async getGoodsList(): Promise<Serializable> {
22+
return {
23+
status: v.s32(0),
24+
error_code: v.s32(0),
25+
response: {
26+
goods_num: v.s32(0),
27+
}
28+
};
29+
}
30+
31+
@gitadora()
32+
async getUserIDs(ctx: Context): Promise<Serializable> {
33+
return {
34+
status: v.s32(0),
35+
error_code: v.s32(0),
36+
response: {
37+
card_num: v.str(tokenToCardNumber(ctx.token)),
38+
ref_id: v.str(tokenToHash(ctx.token)),
39+
data_id: v.str(tokenToHash(ctx.token)),
40+
sns_id: v.str(tokenToSnsId(ctx.token)),
41+
}
42+
};
43+
}
44+
45+
@gitadora()
46+
async getSubscriptionStatus(): Promise<Serializable> {
47+
return {
48+
status: v.s32(0),
49+
error_code: v.s32(0),
50+
response: {
51+
subscription: {
52+
name: v.str('eacgitadora'),
53+
},
54+
}
55+
};
56+
}
57+
58+
}

src/controllers/sdvx/user.ts

Lines changed: 2 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -2,27 +2,11 @@ import * as data from '../../datas/sdvx.js';
22
import { tokenToCardNumber, tokenToHash, tokenToSnsId } from "../../utils/laochan-id.js";
33
import { Context } from "../../types.js";
44
import { sdvx } from '../../decorators/eacnet.js';
5-
import { KValueG, Serializable, ValueTypes, v } from '../../utils/kxml-value.js';
5+
import { Serializable, v } from '../../utils/kxml-value.js';
66
import { UserService } from '../../services/sdvx/user.js';
77
import { Item, Param } from '../../types/sdvx/savedata.js';
88
import { dateToString } from '../../utils/time.js';
9-
10-
function trySet<T>(kvalue: KValueG<ValueTypes, T>, value: T) {
11-
if (value === undefined || value === null)
12-
return;
13-
14-
kvalue.__value = value;
15-
}
16-
17-
function tryAdd(kvalue: KValueG<ValueTypes, number>, value: number) {
18-
if (value === undefined || value === null)
19-
return;
20-
21-
if (kvalue.__value instanceof Array)
22-
return;
23-
24-
kvalue.__value += value;
25-
}
9+
import { tryAdd, trySet } from '../../utils/combine.js';
2610

2711
export function tryMergeItem(params: Item[], newParams: object[]) {
2812
if (!params) {

src/decorators/eacnet.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,3 +22,4 @@ export function eacnet(protocol_name: string, topName: string, dataOffset: numbe
2222

2323
export const p2d = eacnet('P2D:2015091800', 'p2d', 0x2E);
2424
export const sdvx = eacnet('2020090800', 'eacnet', 0x2A);
25+
export const gitadora = sdvx;

src/services/p2d/user.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -157,8 +157,8 @@ export class UserService {
157157
}
158158

159159
upsertPDataBinary(player: string, pdata: Buffer, check_sum: string) {
160-
const unpacked = fromKBinXml(pdata) as { pdata: Pdata };
161-
const { djname, infinitas_id } = unpacked.pdata.player;
160+
const { pdata: unpacked } = fromKBinXml(pdata) as { pdata: Pdata };
161+
const { djname, infinitas_id } = unpacked.player;
162162

163163
return this.playDataCol
164164
.updateOne({ _id: player }, {

src/utils/combine.ts

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import { KValueG, ValueTypes } from "./kxml-value.js";
2+
13
export function Combine(...modules: ({ new(): any })[]) {
24
class Modules {
35
constructor() {
@@ -19,3 +21,20 @@ export function Combine(...modules: ({ new(): any })[]) {
1921

2022
return Modules;
2123
}
24+
25+
export function trySet<T>(kvalue: KValueG<ValueTypes, T>, value: T) {
26+
if (value === undefined || value === null)
27+
return;
28+
29+
kvalue.__value = value;
30+
}
31+
32+
export function tryAdd(kvalue: KValueG<ValueTypes, number>, value: number) {
33+
if (value === undefined || value === null)
34+
return;
35+
36+
if (kvalue.__value instanceof Array)
37+
return;
38+
39+
kvalue.__value += value;
40+
}

0 commit comments

Comments
 (0)