@xmobitea/gn-server 2.6.3 → 2.6.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -38,6 +38,12 @@ export interface IEventCallbackCloudScriptService {
38
38
  executePre(eventName: string, request: {
39
39
  [k: string]: any;
40
40
  }, secretInfo: SecretInfo, operationRequest: OperationRequest): Promise<OperationResponse>;
41
+ executeAuthenticate(eventName: string, request: {
42
+ userId: string;
43
+ ipAddress: string;
44
+ isNewUser: boolean;
45
+ authenticationType: string;
46
+ }, secretInfo: SecretInfo, operationRequest: OperationRequest, operationResponse: OperationResponse): Promise<void>;
41
47
  addCloudScriptFunction(eventName: string, script: string): Promise<{
42
48
  success: boolean;
43
49
  errorMessage?: string;
@@ -96,6 +102,12 @@ export declare class EventCallbackCloudScriptService implements IEventCallbackCl
96
102
  executePre(eventName: string, request: {
97
103
  [k: string]: any;
98
104
  }, secretInfo: SecretInfo, operationRequest: OperationRequest): Promise<OperationResponse>;
105
+ executeAuthenticate(eventName: string, request: {
106
+ userId: string;
107
+ ipAddress: string;
108
+ isNewUser: boolean;
109
+ authenticationType: string;
110
+ }, secretInfo: SecretInfo, operationRequest: OperationRequest, operationResponse: OperationResponse): Promise<void>;
99
111
  executePost(eventName: string, request: {
100
112
  [k: string]: any;
101
113
  }, secretInfo: SecretInfo, operationRequest: OperationRequest, operationResponse: OperationResponse): Promise<void>;
@@ -119,6 +131,12 @@ export declare class PostEventCallbackService implements IPostEventCallbackServi
119
131
  setEventCallbackCollection(eventCallbackCollection: mongoDB.Collection<mongoDB.Document>): void;
120
132
  setCloudScriptService(cloudScriptService: IEventCallbackCloudScriptService): void;
121
133
  onEvent(eventName: string, request: {}, secretInfo: SecretInfo, operationRequest: OperationRequest, operationResponse: OperationResponse): Promise<void>;
134
+ onAuthenticateEvent(eventName: string, request: {
135
+ userId: string;
136
+ ipAddress: string;
137
+ isNewUser: boolean;
138
+ authenticationType: string;
139
+ }, secretInfo: SecretInfo, operationRequest: OperationRequest, operationResponse: OperationResponse): Promise<void>;
122
140
  }
123
141
  export declare class PreEventCallbackService implements IPreEventCallbackService {
124
142
  private eventDict;
@@ -8,6 +8,12 @@ export interface IPostEventCallbackService {
8
8
  subscriberEvent(eventName: string, callbackFunction: OnPostCallbackFunction): void;
9
9
  unSubscriberEvent(eventName: string, callbackFunction: OnPostCallbackFunction): void;
10
10
  onEvent(eventName: string, request: {}, secretInfo: SecretInfo, operationRequest: OperationRequest, operationResponse: OperationResponse): Promise<void>;
11
+ onAuthenticateEvent(eventName: string, request: {
12
+ userId: string;
13
+ ipAddress: string;
14
+ isNewUser: boolean;
15
+ authenticationType: string;
16
+ }, secretInfo: SecretInfo, operationRequest: OperationRequest, operationResponse: OperationResponse): Promise<void>;
11
17
  }
12
18
  export interface OnPreCallbackFunction {
13
19
  (request: {}, secretInfo: SecretInfo, operationRequest: OperationRequest): Promise<OperationResponse>;
@@ -25,6 +25,11 @@
25
25
  "script": "\nsystemMatchmakingHandlers.system_RequestServerDetail = async (gameId: string, matchmakingTicketCanMatch: MatchmakingTicketCanMatch, log: (log: any) => void): Promise<{ success: boolean }> => {\n\t//call matchmaking.confirmServerDetail(gameId, matchmakingTicketCanMatch, { ipV4Address: '127.0.0.1', ports: [{ name: 'GamePort', publicPort: 2202, privatePort: 3000, protocol: 1 }] }); // after setup success a dedicated server;\n\treturn { success: false };\n}\n",
26
26
  "hasEdit": false
27
27
  },
28
+ {
29
+ "eventName": "system_OnAuthenticateSuccess",
30
+ "script": "\nsystemAuthenticateHandlers.system_OnAuthenticateSuccess = async (request: { userId: string, ipAddress: string, isNewUser: boolean, authenticationType: string }, secretInfo: SecretInfo, operationRequest: OperationRequest, operationResponse: OperationResponse, log: (log: any) => void) => {\nreturn operationResponse;\n}\n",
31
+ "hasEdit": false
32
+ },
28
33
  {
29
34
  "eventName": "system_SendEventTo",
30
35
  "script": "\neventHandlers.system_SendEventTo = async (request: { userId: string }, operationEvent: OperationEvent, log: (log: any) => void) => {\n\n}\n",
@@ -136,14 +136,14 @@ import {
136
136
  GroupStatus,
137
137
  GNDebug,
138
138
  ItemType,
139
- StoreItemType,
139
+ StoreItemType,
140
140
  LogType,
141
141
  GNSupport,
142
142
  PostType,
143
143
  GetAuthInfoResponse,
144
144
  PushPlatformType,
145
145
  StoreReceiveType,
146
- GNUtils,
146
+ GNUtils,
147
147
  } from "@xmobitea/gn-typescript-client";
148
148
 
149
149
  import * as mongodb from "mongodb";
@@ -176,35 +176,35 @@ class CloudScriptAdmin {
176
176
  public readonly multiplayer = GNNetwork.multiplayer.admin;
177
177
  public readonly cloudScript = GNNetwork.cloudScript.admin;
178
178
  public readonly dashboard = {
179
- getAdminAccountList: GNNetwork.dashboard.getAdminAccountList,
180
- getAdminAccountListAsync: GNNetwork.dashboard.getAdminAccountListAsync,
181
- getGameInformation: GNNetwork.dashboard.getGameInformation,
182
- getGameInformationAsync: GNNetwork.dashboard.getGameInformationAsync,
183
- getGameList: GNNetwork.dashboard.getGameList,
184
- getGameListAsync: GNNetwork.dashboard.getGameListAsync,
185
- getMasterGameSettings: GNNetwork.dashboard.getMasterGameSettings,
186
- getMasterGameSettingsAsync: GNNetwork.dashboard.getMasterGameSettingsAsync,
187
- getSecretInfoInformation: GNNetwork.dashboard.getSecretInfoInformation,
188
- getSecretInfoInformationAsync: GNNetwork.dashboard.getSecretInfoInformationAsync,
189
- getSecretInfoList: GNNetwork.dashboard.getSecretInfoList,
190
- getSecretInfoListAsync: GNNetwork.dashboard.getSecretInfoListAsync,
191
- getServerLog: GNNetwork.dashboard.getServerLog,
192
- getServerLogAsync: GNNetwork.dashboard.getServerLogAsync,
193
- setGameInformation: GNNetwork.dashboard.setGameInformation,
194
- setGameInformationAsync: GNNetwork.dashboard.setGameInformationAsync,
195
- getUsernameAdminAccount: GNNetwork.dashboard.getUsernameAdminAccount,
196
- getUsernameAdminAccountAsync: GNNetwork.dashboard.getUsernameAdminAccountAsync,
197
- getAnalytics: GNNetwork.dashboard.getAnalytics,
198
- getAnalyticsAsync: GNNetwork.dashboard.getAnalyticsAsync,
199
- resetStatisticsLeaderboard: GNNetwork.dashboard.resetStatisticsLeaderboard,
200
- resetStatisticsLeaderboardAsync: GNNetwork.dashboard.resetStatisticsLeaderboardAsync,
201
- getBackupStatisticsLeaderboardVersion: GNNetwork.dashboard.getBackupStatisticsLeaderboardVersion,
202
- getBackupStatisticsLeaderboardVersionAsync: GNNetwork.dashboard.getBackupStatisticsLeaderboardVersionAsync,
203
- getServerGameData: GNNetwork.dashboard.getServerGameData,
204
- getServerGameDataAsync: GNNetwork.dashboard.getServerGameDataAsync,
205
- deleteInDatabase: GNNetwork.dashboard.deleteInDatabase,
206
- deleteInDatabaseAsync: GNNetwork.dashboard.deleteInDatabaseAsync,
207
- };
179
+ getAdminAccountList: GNNetwork.dashboard.getAdminAccountList,
180
+ getAdminAccountListAsync: GNNetwork.dashboard.getAdminAccountListAsync,
181
+ getGameInformation: GNNetwork.dashboard.getGameInformation,
182
+ getGameInformationAsync: GNNetwork.dashboard.getGameInformationAsync,
183
+ getGameList: GNNetwork.dashboard.getGameList,
184
+ getGameListAsync: GNNetwork.dashboard.getGameListAsync,
185
+ getMasterGameSettings: GNNetwork.dashboard.getMasterGameSettings,
186
+ getMasterGameSettingsAsync: GNNetwork.dashboard.getMasterGameSettingsAsync,
187
+ getSecretInfoInformation: GNNetwork.dashboard.getSecretInfoInformation,
188
+ getSecretInfoInformationAsync: GNNetwork.dashboard.getSecretInfoInformationAsync,
189
+ getSecretInfoList: GNNetwork.dashboard.getSecretInfoList,
190
+ getSecretInfoListAsync: GNNetwork.dashboard.getSecretInfoListAsync,
191
+ getServerLog: GNNetwork.dashboard.getServerLog,
192
+ getServerLogAsync: GNNetwork.dashboard.getServerLogAsync,
193
+ setGameInformation: GNNetwork.dashboard.setGameInformation,
194
+ setGameInformationAsync: GNNetwork.dashboard.setGameInformationAsync,
195
+ getUsernameAdminAccount: GNNetwork.dashboard.getUsernameAdminAccount,
196
+ getUsernameAdminAccountAsync: GNNetwork.dashboard.getUsernameAdminAccountAsync,
197
+ getAnalytics: GNNetwork.dashboard.getAnalytics,
198
+ getAnalyticsAsync: GNNetwork.dashboard.getAnalyticsAsync,
199
+ resetStatisticsLeaderboard: GNNetwork.dashboard.resetStatisticsLeaderboard,
200
+ resetStatisticsLeaderboardAsync: GNNetwork.dashboard.resetStatisticsLeaderboardAsync,
201
+ getBackupStatisticsLeaderboardVersion: GNNetwork.dashboard.getBackupStatisticsLeaderboardVersion,
202
+ getBackupStatisticsLeaderboardVersionAsync: GNNetwork.dashboard.getBackupStatisticsLeaderboardVersionAsync,
203
+ getServerGameData: GNNetwork.dashboard.getServerGameData,
204
+ getServerGameDataAsync: GNNetwork.dashboard.getServerGameDataAsync,
205
+ deleteInDatabase: GNNetwork.dashboard.deleteInDatabase,
206
+ deleteInDatabaseAsync: GNNetwork.dashboard.deleteInDatabaseAsync,
207
+ };
208
208
  public send(
209
209
  requestType: RequestType,
210
210
  requestRole: RequestRole,
@@ -347,160 +347,160 @@ class CloudScriptSocket {
347
347
  }
348
348
 
349
349
  private async sendEvent(event: CloudScriptEvent) {
350
- if (process?.send)
351
- process.send(event);
350
+ if (process?.send)
351
+ process.send(event);
352
352
  }
353
353
  }
354
354
 
355
355
  class CloudScriptMatchmaking {
356
356
  public async confirmServerDetail(gameId: string, matchmakingTicketCanMatch: MatchmakingTicketCanMatch, serverDetail: ServerDetail) {
357
357
  if (process?.send)
358
- process.send({
359
- eventType: 10,
360
- receiver: null,
361
- operationEvent: {
362
- eventCode: 0,
363
- encrypted: false,
364
- parameters: {
365
- gameId: gameId,
366
- matchmakingTicketCanMatch: matchmakingTicketCanMatch,
367
- serverDetail: serverDetail,
368
- },
369
- },
370
- });
358
+ process.send({
359
+ eventType: 10,
360
+ receiver: null,
361
+ operationEvent: {
362
+ eventCode: 0,
363
+ encrypted: false,
364
+ parameters: {
365
+ gameId: gameId,
366
+ matchmakingTicketCanMatch: matchmakingTicketCanMatch,
367
+ serverDetail: serverDetail,
368
+ },
369
+ },
370
+ });
371
371
  }
372
372
  }
373
373
 
374
374
  class CloudScriptMail {
375
375
  public async send(email: string, subject: string, contentHtml: string) {
376
376
  if (process?.send)
377
- process.send({
378
- eventType: 20,
379
- receiver: null,
380
- operationEvent: {
381
- eventCode: 0,
382
- encrypted: false,
383
- parameters: {
384
- email: email,
385
- subject: subject,
386
- contentHtml: contentHtml,
387
- },
388
- },
389
- });
377
+ process.send({
378
+ eventType: 20,
379
+ receiver: null,
380
+ operationEvent: {
381
+ eventCode: 0,
382
+ encrypted: false,
383
+ parameters: {
384
+ email: email,
385
+ subject: subject,
386
+ contentHtml: contentHtml,
387
+ },
388
+ },
389
+ });
390
390
  }
391
391
 
392
392
  public async sendToMore(emails: string[], subject: string, contentHtml: string) {
393
393
  if (process?.send)
394
- process.send({
395
- eventType: 21,
396
- receiver: null,
397
- operationEvent: {
398
- eventCode: 0,
399
- encrypted: false,
400
- parameters: {
401
- emails: emails,
402
- subject: subject,
403
- contentHtml: contentHtml,
404
- },
405
- },
406
- });
394
+ process.send({
395
+ eventType: 21,
396
+ receiver: null,
397
+ operationEvent: {
398
+ eventCode: 0,
399
+ encrypted: false,
400
+ parameters: {
401
+ emails: emails,
402
+ subject: subject,
403
+ contentHtml: contentHtml,
404
+ },
405
+ },
406
+ });
407
407
  }
408
408
  }
409
409
 
410
410
  class CloudScriptPushNotification {
411
411
  public async send(token: string, title: string, body: string, badge?: number, sound?: string, icon?: string, data?: { [k: string]: any }) {
412
412
  if (process?.send)
413
- process.send({
414
- eventType: 30,
415
- receiver: null,
416
- operationEvent: {
417
- eventCode: 0,
418
- encrypted: false,
419
- parameters: {
420
- token: token,
421
- title: title,
422
- body: body,
423
- badge: badge,
424
- sound: sound,
425
- icon: icon,
426
- data: data,
427
- },
428
- },
429
- });
413
+ process.send({
414
+ eventType: 30,
415
+ receiver: null,
416
+ operationEvent: {
417
+ eventCode: 0,
418
+ encrypted: false,
419
+ parameters: {
420
+ token: token,
421
+ title: title,
422
+ body: body,
423
+ badge: badge,
424
+ sound: sound,
425
+ icon: icon,
426
+ data: data,
427
+ },
428
+ },
429
+ });
430
430
  }
431
431
 
432
432
  public async sendToMore(tokens: string[], title: string, body: string, badge?: number, sound?: string, icon?: string, data?: { [k: string]: any }) {
433
433
  if (process?.send)
434
- process.send({
435
- eventType: 31,
436
- receiver: null,
437
- operationEvent: {
438
- eventCode: 0,
439
- encrypted: false,
440
- parameters: {
441
- tokens: tokens,
442
- title: title,
443
- body: body,
444
- badge: badge,
445
- sound: sound,
446
- icon: icon,
447
- data: data,
448
- },
449
- },
450
- });
434
+ process.send({
435
+ eventType: 31,
436
+ receiver: null,
437
+ operationEvent: {
438
+ eventCode: 0,
439
+ encrypted: false,
440
+ parameters: {
441
+ tokens: tokens,
442
+ title: title,
443
+ body: body,
444
+ badge: badge,
445
+ sound: sound,
446
+ icon: icon,
447
+ data: data,
448
+ },
449
+ },
450
+ });
451
451
  }
452
452
 
453
453
  public async sendToTopic(topic: string, title: string, body: string, badge?: number, sound?: string, icon?: string, data?: { [k: string]: any }) {
454
454
  if (process?.send)
455
- process.send({
456
- eventType: 32,
457
- receiver: null,
458
- operationEvent: {
459
- eventCode: 0,
460
- encrypted: false,
461
- parameters: {
462
- topic: topic,
463
- title: title,
464
- body: body,
465
- badge: badge,
466
- sound: sound,
467
- icon: icon,
468
- data: data,
469
- },
470
- },
471
- });
472
- }
473
-
474
- public async subscribeToTopic(tokens: string[], topic: string) {
455
+ process.send({
456
+ eventType: 32,
457
+ receiver: null,
458
+ operationEvent: {
459
+ eventCode: 0,
460
+ encrypted: false,
461
+ parameters: {
462
+ topic: topic,
463
+ title: title,
464
+ body: body,
465
+ badge: badge,
466
+ sound: sound,
467
+ icon: icon,
468
+ data: data,
469
+ },
470
+ },
471
+ });
472
+ }
473
+
474
+ public async subscribeToTopic(tokens: string[], topic: string) {
475
475
  if (process?.send)
476
- process.send({
477
- eventType: 33,
478
- receiver: null,
479
- operationEvent: {
480
- eventCode: 0,
481
- encrypted: false,
482
- parameters: {
483
- tokens: tokens,
484
- topic: topic,
485
- },
486
- },
487
- });
488
- }
489
-
490
- public async unsubscribeFromTopic(tokens: string[], topic: string) {
476
+ process.send({
477
+ eventType: 33,
478
+ receiver: null,
479
+ operationEvent: {
480
+ eventCode: 0,
481
+ encrypted: false,
482
+ parameters: {
483
+ tokens: tokens,
484
+ topic: topic,
485
+ },
486
+ },
487
+ });
488
+ }
489
+
490
+ public async unsubscribeFromTopic(tokens: string[], topic: string) {
491
491
  if (process?.send)
492
- process.send({
493
- eventType: 34,
494
- receiver: null,
495
- operationEvent: {
496
- eventCode: 0,
497
- encrypted: false,
498
- parameters: {
499
- tokens: tokens,
500
- topic: topic,
501
- },
502
- },
503
- });
492
+ process.send({
493
+ eventType: 34,
494
+ receiver: null,
495
+ operationEvent: {
496
+ eventCode: 0,
497
+ encrypted: false,
498
+ parameters: {
499
+ tokens: tokens,
500
+ topic: topic,
501
+ },
502
+ },
503
+ });
504
504
  }
505
505
  }
506
506
 
@@ -508,7 +508,7 @@ enum EventCallbackType {
508
508
  Pre = 0,
509
509
  Post = 1,
510
510
  System = 2,
511
- Event = 3,
511
+ Event = 3,
512
512
  }
513
513
 
514
514
  interface CloudScriptRequest {
@@ -524,6 +524,7 @@ interface CloudScriptRequest {
524
524
  permission: SecretPermissionItem;
525
525
  gameId: string;
526
526
  isDefault: boolean;
527
+ displayName: string;
527
528
  onlyMasterAdmin: boolean;
528
529
  };
529
530
  operationRequest: {
@@ -581,143 +582,193 @@ interface FunctionResponse {
581
582
  }
582
583
 
583
584
  process?.on("message", async (request: CloudScriptRequest) => {
584
- let startTime = performance.now();
585
- let startMemoryUsage = process.memoryUsage();
586
-
587
- let logs: string[] = [];
588
-
589
- let handleResponse: FunctionResponse = null as any;
590
-
591
- if (request.eventType == EventCallbackType.System) {
592
- if (request.eventName == "system_RequestServerDetail") {
593
- let functionRequest: FunctionRequest = {
594
- eventName: request.eventName,
595
- operationRequest: null as any,
596
- secretInfo: null as any,
597
- request: request.request,
598
- log(log: any) {
599
- logs.push(JSON.stringify(log));
600
- },
601
- };
602
-
603
- handleResponse = await ___handleMatchmakingFunction(functionRequest);
604
- }
605
- else {
606
- let functionRequest: FunctionRequest = {
607
- eventName: request.eventName,
608
- operationRequest: null as any,
609
- secretInfo: null as any,
610
- request: null as any,
611
- log(log: any) {
612
- logs.push(JSON.stringify(log));
613
- },
614
- };
615
-
616
- handleResponse = await ___handleSystemFunction(functionRequest);
617
- }
618
- } else if (request.eventType == EventCallbackType.Event) {
619
- let originOperationEvent = request.operationRequest;
620
-
621
- let operationEvent = new OperationEvent(originOperationEvent.operationCode, (originOperationEvent.parameters ? GNHashtable.builder().addAll(originOperationEvent.parameters).build() : null as any), originOperationEvent.encrypted);
622
-
623
- let functionRequest: FunctionRequest = {
624
- eventName: request.eventName,
625
- operationRequest: null as any,
626
- secretInfo: null as any,
627
- request: {
628
- operationEvent: operationEvent,
629
- request: request.request,
630
- },
631
- log(log: any) {
632
- logs.push(JSON.stringify(log));
633
- },
634
- };
635
-
636
- handleResponse = await ___handleEventFunction(functionRequest);
637
- } else {
638
- let originOperationRequest = request.operationRequest;
639
- let operationRequest = new OperationRequest(originOperationRequest.operationCode, originOperationRequest.encrypted);
640
- if (originOperationRequest.parameters) {
641
- operationRequest.setParameters(GNHashtable.builder().addAll(originOperationRequest.parameters).build());
642
- }
643
-
644
- let originSecretInfo = request.secretInfo;
645
- let secretInfo: SecretInfo = null as any;
646
- if (originSecretInfo) {
647
- secretInfo = SecretInfo.Builder()
648
- .setSecretKey(originSecretInfo.secretKey)
649
- .setRole(originSecretInfo.role)
650
- .setIsRemove(originSecretInfo.remove)
651
- .setTsExpire(originSecretInfo.tsExpire)
652
- .setPermission(originSecretInfo.permission)
653
- .setGameId(originSecretInfo.gameId)
654
- .setIsDefault(originSecretInfo.isDefault)
655
- .setIsOnlyMasterAdmin(originSecretInfo.onlyMasterAdmin)
656
- .build();
657
- }
658
-
659
- if (request.eventType == EventCallbackType.Pre) {
660
- let functionRequest: FunctionRequest = {
661
- eventName: request.eventName,
662
- operationRequest: operationRequest,
663
- secretInfo: secretInfo,
664
- request: request.request,
665
- log(log: any) {
666
- logs.push(JSON.stringify(log));
667
- },
668
- };
669
-
670
- handleResponse = await ___handlePreFunction(functionRequest);
671
- } else if (request.eventType == EventCallbackType.Post) {
672
- let originOperationResponse = request.operationResponse;
673
- let operationResponse: OperationResponse = null as any;
674
-
675
- if (originOperationResponse) {
676
- operationResponse = new OperationResponse(originOperationRequest.operationCode, originOperationRequest.requestId, originOperationRequest.encrypted);
677
- operationResponse.setReturnCode(originOperationResponse.returnCode);
678
- operationResponse.setDebugMessage(originOperationResponse.debugMessage);
679
-
680
- if (originOperationResponse.parameters) {
681
- operationResponse.setParameters(GNHashtable.builder().addAll(originOperationResponse.parameters).build());
682
- }
683
- }
684
-
685
- let functionRequest: FunctionRequest = {
686
- eventName: request.eventName,
687
- operationRequest: operationRequest,
688
- operationResponse: operationResponse,
689
- secretInfo: secretInfo,
690
- request: request.request,
691
- log(log: any) {
692
- logs.push(JSON.stringify(log));
693
- },
694
- };
695
-
696
- handleResponse = await ___handlePostFunction(functionRequest);
697
- }
698
- }
699
-
700
- let endTime = performance.now();
701
- let endMemoryUsage = process.memoryUsage();
702
-
703
- let memoryUsedInBytes = endMemoryUsage.heapUsed - startMemoryUsage.heapUsed;
704
- if (memoryUsedInBytes <= 0) memoryUsedInBytes = 8192;
705
- let executeTimeInMs = endTime - startTime;
706
-
707
- //let cost = (memoryUsedInGb * executeTime) / 1000 * 0.022;
708
-
709
- let response: CloudScriptResponse = {
710
- responseId: request.requestId,
711
- response: handleResponse as any,
712
- stats: {
713
- executeTimeInMs: executeTimeInMs,
714
- memoryUsedInBytes: memoryUsedInBytes,
715
- },
716
- logs: logs,
717
- };
718
-
719
- if (process?.send)
720
- process.send(response);
585
+ let startTime = performance.now();
586
+ let startMemoryUsage = process.memoryUsage();
587
+
588
+ let logs: string[] = [];
589
+
590
+ let handleResponse: FunctionResponse = null as any;
591
+
592
+ if (request.eventType == EventCallbackType.System) {
593
+ if (request.eventName == "system_RequestServerDetail") {
594
+ let functionRequest: FunctionRequest = {
595
+ eventName: request.eventName,
596
+ operationRequest: null as any,
597
+ secretInfo: null as any,
598
+ request: request.request,
599
+ log(log: any) {
600
+ logs.push(JSON.stringify(log));
601
+ },
602
+ };
603
+
604
+ handleResponse = await ___handleMatchmakingFunction(functionRequest);
605
+ }
606
+ else if (request.eventName == "system_OnAuthenticateSuccess") {
607
+ let originOperationRequest = request.operationRequest;
608
+ let operationRequest = new OperationRequest(originOperationRequest.operationCode, originOperationRequest.encrypted);
609
+ if (originOperationRequest.parameters) {
610
+ operationRequest.setParameters(GNHashtable.builder().addAll(originOperationRequest.parameters).build());
611
+ }
612
+
613
+ let originSecretInfo = request.secretInfo;
614
+ let secretInfo: SecretInfo = null as any;
615
+ if (originSecretInfo) {
616
+ secretInfo = SecretInfo.Builder()
617
+ .setSecretKey(originSecretInfo.secretKey)
618
+ .setDisplayName(originSecretInfo.displayName)
619
+ .setRole(originSecretInfo.role)
620
+ .setIsRemove(originSecretInfo.remove)
621
+ .setTsExpire(originSecretInfo.tsExpire)
622
+ .setPermission(originSecretInfo.permission)
623
+ .setGameId(originSecretInfo.gameId)
624
+ .setIsDefault(originSecretInfo.isDefault)
625
+ .setIsOnlyMasterAdmin(originSecretInfo.onlyMasterAdmin)
626
+ .build();
627
+ }
628
+
629
+ let originOperationResponse = request.operationResponse;
630
+ let operationResponse: OperationResponse = null as any;
631
+
632
+ if (originOperationResponse) {
633
+ operationResponse = new OperationResponse(originOperationRequest.operationCode, originOperationRequest.requestId, originOperationRequest.encrypted);
634
+ operationResponse.setReturnCode(originOperationResponse.returnCode);
635
+ operationResponse.setDebugMessage(originOperationResponse.debugMessage);
636
+
637
+ if (originOperationResponse.parameters) {
638
+ operationResponse.setParameters(GNHashtable.builder().addAll(originOperationResponse.parameters).build());
639
+ }
640
+ }
641
+
642
+ let functionRequest: FunctionRequest = {
643
+ eventName: request.eventName,
644
+ operationRequest: operationRequest,
645
+ operationResponse: operationResponse,
646
+ secretInfo: secretInfo,
647
+ request: request.request,
648
+ log(log: any) {
649
+ logs.push(JSON.stringify(log));
650
+ },
651
+ };
652
+
653
+ handleResponse = await ___handleSystemAuthenticateFunction(functionRequest);
654
+ }
655
+ else {
656
+ let functionRequest: FunctionRequest = {
657
+ eventName: request.eventName,
658
+ operationRequest: null as any,
659
+ secretInfo: null as any,
660
+ request: null as any,
661
+ log(log: any) {
662
+ logs.push(JSON.stringify(log));
663
+ },
664
+ };
665
+
666
+ handleResponse = await ___handleSystemFunction(functionRequest);
667
+ }
668
+ } else if (request.eventType == EventCallbackType.Event) {
669
+ let originOperationEvent = request.operationRequest;
670
+
671
+ let operationEvent = new OperationEvent(originOperationEvent.operationCode, (originOperationEvent.parameters ? GNHashtable.builder().addAll(originOperationEvent.parameters).build() : null as any), originOperationEvent.encrypted);
672
+
673
+ let functionRequest: FunctionRequest = {
674
+ eventName: request.eventName,
675
+ operationRequest: null as any,
676
+ secretInfo: null as any,
677
+ request: {
678
+ operationEvent: operationEvent,
679
+ request: request.request,
680
+ },
681
+ log(log: any) {
682
+ logs.push(JSON.stringify(log));
683
+ },
684
+ };
685
+
686
+ handleResponse = await ___handleEventFunction(functionRequest);
687
+ } else {
688
+ let originOperationRequest = request.operationRequest;
689
+ let operationRequest = new OperationRequest(originOperationRequest.operationCode, originOperationRequest.encrypted);
690
+ if (originOperationRequest.parameters) {
691
+ operationRequest.setParameters(GNHashtable.builder().addAll(originOperationRequest.parameters).build());
692
+ }
693
+
694
+ let originSecretInfo = request.secretInfo;
695
+ let secretInfo: SecretInfo = null as any;
696
+ if (originSecretInfo) {
697
+ secretInfo = SecretInfo.Builder()
698
+ .setSecretKey(originSecretInfo.secretKey)
699
+ .setDisplayName(originSecretInfo.displayName)
700
+ .setRole(originSecretInfo.role)
701
+ .setIsRemove(originSecretInfo.remove)
702
+ .setTsExpire(originSecretInfo.tsExpire)
703
+ .setPermission(originSecretInfo.permission)
704
+ .setGameId(originSecretInfo.gameId)
705
+ .setIsDefault(originSecretInfo.isDefault)
706
+ .setIsOnlyMasterAdmin(originSecretInfo.onlyMasterAdmin)
707
+ .build();
708
+ }
709
+
710
+ if (request.eventType == EventCallbackType.Pre) {
711
+ let functionRequest: FunctionRequest = {
712
+ eventName: request.eventName,
713
+ operationRequest: operationRequest,
714
+ secretInfo: secretInfo,
715
+ request: request.request,
716
+ log(log: any) {
717
+ logs.push(JSON.stringify(log));
718
+ },
719
+ };
720
+
721
+ handleResponse = await ___handlePreFunction(functionRequest);
722
+ } else if (request.eventType == EventCallbackType.Post) {
723
+ let originOperationResponse = request.operationResponse;
724
+ let operationResponse: OperationResponse = null as any;
725
+
726
+ if (originOperationResponse) {
727
+ operationResponse = new OperationResponse(originOperationRequest.operationCode, originOperationRequest.requestId, originOperationRequest.encrypted);
728
+ operationResponse.setReturnCode(originOperationResponse.returnCode);
729
+ operationResponse.setDebugMessage(originOperationResponse.debugMessage);
730
+
731
+ if (originOperationResponse.parameters) {
732
+ operationResponse.setParameters(GNHashtable.builder().addAll(originOperationResponse.parameters).build());
733
+ }
734
+ }
735
+
736
+ let functionRequest: FunctionRequest = {
737
+ eventName: request.eventName,
738
+ operationRequest: operationRequest,
739
+ operationResponse: operationResponse,
740
+ secretInfo: secretInfo,
741
+ request: request.request,
742
+ log(log: any) {
743
+ logs.push(JSON.stringify(log));
744
+ },
745
+ };
746
+
747
+ handleResponse = await ___handlePostFunction(functionRequest);
748
+ }
749
+ }
750
+
751
+ let endTime = performance.now();
752
+ let endMemoryUsage = process.memoryUsage();
753
+
754
+ let memoryUsedInBytes = endMemoryUsage.heapUsed - startMemoryUsage.heapUsed;
755
+ if (memoryUsedInBytes <= 0) memoryUsedInBytes = 8192;
756
+ let executeTimeInMs = endTime - startTime;
757
+
758
+ //let cost = (memoryUsedInGb * executeTime) / 1000 * 0.022;
759
+
760
+ let response: CloudScriptResponse = {
761
+ responseId: request.requestId,
762
+ response: handleResponse as any,
763
+ stats: {
764
+ executeTimeInMs: executeTimeInMs,
765
+ memoryUsedInBytes: memoryUsedInBytes,
766
+ },
767
+ logs: logs,
768
+ };
769
+
770
+ if (process?.send)
771
+ process.send(response);
721
772
  });
722
773
 
723
774
  async function ___handleMatchmakingFunction(request: FunctionRequest): Promise<FunctionResponse> {
@@ -752,6 +803,45 @@ async function ___handleMatchmakingFunction(request: FunctionRequest): Promise<F
752
803
  return answer;
753
804
  }
754
805
 
806
+ async function ___handleSystemAuthenticateFunction(request: FunctionRequest): Promise<FunctionResponse> {
807
+ let handler = systemAuthenticateHandlers[request.eventName];
808
+
809
+ if (handler == null) {
810
+ return {
811
+ status: ExecuteResponseStatus.FunctionNameNotFound,
812
+ result: null,
813
+ errorMessage: null,
814
+ request: null,
815
+ };
816
+ }
817
+
818
+ let answer: FunctionResponse = {
819
+ status: ExecuteResponseStatus.Ok,
820
+ errorMessage: null,
821
+ result: null,
822
+ request: null,
823
+ };
824
+
825
+ try {
826
+ let result = await handler(request.request as any, request.secretInfo, request.operationRequest, request.operationResponse as any, request.log);
827
+
828
+ if (result) {
829
+ answer.result = {
830
+ returnCode: result.getReturnCode(),
831
+ debugMessage: result.getDebugMessage(),
832
+ encrypted: result.isEncrypted(),
833
+ parameters: result.getParameters()?.toData(),
834
+ };
835
+ }
836
+
837
+ } catch (err: any) {
838
+ answer.status = ExecuteResponseStatus.Exception;
839
+ answer.errorMessage = err.message;
840
+ }
841
+
842
+ return answer;
843
+ }
844
+
755
845
  async function ___handleSystemFunction(request: FunctionRequest): Promise<FunctionResponse> {
756
846
  let handler = systemHandlers[request.eventName];
757
847
 
@@ -782,7 +872,7 @@ async function ___handleSystemFunction(request: FunctionRequest): Promise<Functi
782
872
  }
783
873
 
784
874
  async function ___handleEventFunction(request: FunctionRequest): Promise<FunctionResponse> {
785
- let handler = eventHandlers[request.eventName];
875
+ let handler = eventHandlers[request.eventName];
786
876
 
787
877
  if (handler == null) {
788
878
  return {
@@ -803,16 +893,16 @@ async function ___handleEventFunction(request: FunctionRequest): Promise<Functio
803
893
  try {
804
894
  await handler(request.request.request, request.request.operationEvent, request.log);
805
895
 
806
- let operationEvent = request.request.operationEvent;
896
+ let operationEvent = request.request.operationEvent;
807
897
 
808
- answer.result = {
809
- returnCode: operationEvent.getEventCode(),
810
- debugMessage: null as any,
811
- encrypted: operationEvent.isEncrypted(),
812
- parameters: operationEvent.getParameters()?.toData(),
813
- };
898
+ answer.result = {
899
+ returnCode: operationEvent.getEventCode(),
900
+ debugMessage: null as any,
901
+ encrypted: operationEvent.isEncrypted(),
902
+ parameters: operationEvent.getParameters()?.toData(),
903
+ };
814
904
 
815
- answer.request = request.request.request;
905
+ answer.request = request.request.request;
816
906
  } catch (err: any) {
817
907
  answer.status = ExecuteResponseStatus.Exception;
818
908
  answer.errorMessage = err.message;
@@ -882,12 +972,14 @@ async function ___handlePostFunction(request: FunctionRequest): Promise<Function
882
972
  try {
883
973
  let result = await handler(request.request, request.secretInfo, request.operationRequest, request.operationResponse as any, request.log);
884
974
 
885
- answer.result = {
886
- returnCode: result.getReturnCode(),
887
- debugMessage: result.getDebugMessage(),
888
- encrypted: result.isEncrypted(),
889
- parameters: result.getParameters()?.toData(),
890
- };
975
+ if (result) {
976
+ answer.result = {
977
+ returnCode: result.getReturnCode(),
978
+ debugMessage: result.getDebugMessage(),
979
+ encrypted: result.isEncrypted(),
980
+ parameters: result.getParameters()?.toData(),
981
+ };
982
+ }
891
983
  } catch (err: any) {
892
984
  answer.status = ExecuteResponseStatus.Exception;
893
985
  answer.errorMessage = err.message;
@@ -931,4 +1023,6 @@ const eventHandlers: Record<string, (request: any, operationEvent: OperationEven
931
1023
 
932
1024
  const systemMatchmakingHandlers: Record<string, (gameId: string, matchmakingTicketCanMatch: MatchmakingTicketCanMatch, log: (log: any) => void) => Promise<{ success: boolean }>> = {};
933
1025
 
934
- //$replaceScript
1026
+ const systemAuthenticateHandlers: Record<string, (request: { userId: string, ipAddress: string, isNewUser: boolean, authenticationType: string }, secretInfo: SecretInfo, operationRequest: OperationRequest, operationResponse: OperationResponse, log: (log: any) => void) => Promise<OperationResponse>> = {};
1027
+
1028
+ //$replaceScript
package/dist/index.js CHANGED
@@ -2966,6 +2966,96 @@ class EventCallbackCloudScriptService {
2966
2966
  }
2967
2967
  return null;
2968
2968
  }
2969
+ async executeAuthenticate(eventName, request, secretInfo, operationRequest, operationResponse) {
2970
+ let cloudFunction = this.cloudScriptFunctionDict.get("system");
2971
+ if (cloudFunction == null) {
2972
+ return;
2973
+ }
2974
+ let cloudScriptWorker = this.loadCloudScriptFunctionWorkerFromCache(cloudFunction.type, eventName);
2975
+ if (cloudScriptWorker == null) {
2976
+ Debug.logError("[GearN] [SystemEventCallback] worker not found at " + cloudFunction.type);
2977
+ return;
2978
+ }
2979
+ let requestId = StringUtility.generateRandomString(10, 0);
2980
+ let finalSecretInfo = null;
2981
+ if (secretInfo) {
2982
+ finalSecretInfo = {
2983
+ gameId: secretInfo.getGameId(),
2984
+ isDefault: secretInfo.getIsDefault(),
2985
+ onlyMasterAdmin: secretInfo.getIsOnlyMasterAdmin(),
2986
+ permission: secretInfo.getPermission(),
2987
+ remove: secretInfo.isRemove(),
2988
+ role: secretInfo.getRole(),
2989
+ secretKey: secretInfo.getSecretKey(),
2990
+ tsExpire: secretInfo.getTsExpire(),
2991
+ };
2992
+ }
2993
+ let cloudScriptRequest = {
2994
+ requestId: requestId,
2995
+ eventName: eventName,
2996
+ eventType: EventCallbackType.System,
2997
+ operationRequest: {
2998
+ operationCode: operationRequest.getOperationCode(),
2999
+ encrypted: operationRequest.isEncrypted(),
3000
+ parameters: operationRequest.getParameters()?.toData(),
3001
+ requestId: operationRequest.getRequestId(),
3002
+ },
3003
+ operationResponse: {
3004
+ debugMessage: operationResponse.getDebugMessage(),
3005
+ encrypted: operationResponse.isEncrypted(),
3006
+ parameters: operationResponse.getParameters()?.toData(),
3007
+ returnCode: operationResponse.getReturnCode(),
3008
+ },
3009
+ request: request,
3010
+ secretInfo: finalSecretInfo,
3011
+ };
3012
+ cloudScriptWorker.send(cloudScriptRequest);
3013
+ let thiz = this;
3014
+ let isResolved = false;
3015
+ let cloudScriptResponse = await new Promise((resolve) => {
3016
+ let timeout = setTimeout(() => {
3017
+ if (isResolved)
3018
+ return;
3019
+ isResolved = true;
3020
+ resolve({
3021
+ responseId: requestId,
3022
+ response: {
3023
+ status: ExecuteResponseStatus.Timeout,
3024
+ errorMessage: "function execute timeout",
3025
+ result: null,
3026
+ request: null,
3027
+ },
3028
+ stats: null,
3029
+ logs: [],
3030
+ });
3031
+ }, EventCallbackCloudScriptService.ExecuteTimeoutInMs);
3032
+ thiz.cloudScriptWaitingResponseCallbackDict.set(requestId, (cloudScriptResponse) => {
3033
+ if (isResolved)
3034
+ return;
3035
+ isResolved = true;
3036
+ clearTimeout(timeout);
3037
+ resolve(cloudScriptResponse);
3038
+ });
3039
+ });
3040
+ this.cloudScriptWaitingResponseCallbackDict.delete(requestId);
3041
+ if (cloudScriptResponse.logs.length != 0)
3042
+ Debug.log(JSON.stringify(cloudScriptResponse.logs));
3043
+ if (cloudScriptResponse.response.status == ExecuteResponseStatus.Ok) {
3044
+ if (cloudScriptResponse.response.result) {
3045
+ let responseOperationResponse = cloudScriptResponse.response.result;
3046
+ operationResponse.setReturnCode(responseOperationResponse.returnCode);
3047
+ operationResponse.setDebugMessage(responseOperationResponse.debugMessage);
3048
+ operationResponse.setEncrypted(responseOperationResponse.encrypted);
3049
+ if (responseOperationResponse.parameters)
3050
+ operationResponse.setParameters(GNHashtable.builder().addAll(responseOperationResponse.parameters).build());
3051
+ }
3052
+ }
3053
+ else if (cloudScriptResponse.response.status == ExecuteResponseStatus.FunctionNameNotFound) {
3054
+ }
3055
+ else {
3056
+ operationResponse.setParameter(GNParameterCode.Message, cloudScriptResponse.response.errorMessage);
3057
+ }
3058
+ }
2969
3059
  async executePost(eventName, request, secretInfo, operationRequest, operationResponse) {
2970
3060
  let cloudScriptWorker = this.loadCloudScriptFunctionWorkerFromCache(eventName.split("_")[0], eventName);
2971
3061
  if (cloudScriptWorker == null) {
@@ -3297,9 +3387,6 @@ class PostEventCallbackService {
3297
3387
  this.cloudScriptService = cloudScriptService;
3298
3388
  }
3299
3389
  async onEvent(eventName, request, secretInfo, operationRequest, operationResponse) {
3300
- if (this.cloudScriptService) {
3301
- this.cloudScriptService.executePost(eventName, request, secretInfo, operationRequest, operationResponse);
3302
- }
3303
3390
  let operationResponseToData = OperationHelper.toDataOperationResponse(operationResponse);
3304
3391
  this.eventCallbackCollection.insertOne({
3305
3392
  eventName: eventName,
@@ -3311,6 +3398,9 @@ class PostEventCallbackService {
3311
3398
  customTags: operationRequest.getParameters().getGNHashtable("CustomTags"),
3312
3399
  responseSize: Buffer.byteLength(JSON.stringify(operationResponseToData), "utf-8"),
3313
3400
  });
3401
+ if (this.cloudScriptService) {
3402
+ await this.cloudScriptService.executePost(eventName, request, secretInfo, operationRequest, operationResponse);
3403
+ }
3314
3404
  if (!this.eventLstDict.has(eventName)) {
3315
3405
  return;
3316
3406
  }
@@ -3324,6 +3414,11 @@ class PostEventCallbackService {
3324
3414
  }
3325
3415
  }
3326
3416
  }
3417
+ async onAuthenticateEvent(eventName, request, secretInfo, operationRequest, operationResponse) {
3418
+ if (this.cloudScriptService) {
3419
+ await this.cloudScriptService.executeAuthenticate(eventName, request, secretInfo, operationRequest, operationResponse);
3420
+ }
3421
+ }
3327
3422
  }
3328
3423
  class PreEventCallbackService {
3329
3424
  eventDict;
@@ -17918,6 +18013,12 @@ class LoginByAccountRequestHandler extends LoginBaseRequestHandler {
17918
18013
  operationResponse.setParameter(GNParameterCode.UserId, masterPlayer.getUserId());
17919
18014
  operationResponse.setParameter(GNParameterCode.InfoResponseParameters, this.generateInfoResponseParameters(masterPlayer, request.infoRequestParam));
17920
18015
  this.setupAuthInfo(operationResponse, masterPlayer, secretInfo);
18016
+ await this.gnServer.getPostEventCallbackService().onAuthenticateEvent("system_OnAuthenticateSuccess", {
18017
+ authenticationType: "LoginByAccount",
18018
+ userId: masterPlayer.getUserId(),
18019
+ ipAddress: request.ipAddress,
18020
+ isNewUser: false,
18021
+ }, secretInfo, operationRequest, operationResponse);
17921
18022
  await this.gnServer.getPostEventCallbackService().onEvent("authenticate_LoginByAccount", request, secretInfo, operationRequest, operationResponse);
17922
18023
  return operationResponse;
17923
18024
  }
@@ -18044,6 +18145,12 @@ class LoginByAndroidDeviceIdRequestHandler extends LoginBaseRequestHandler {
18044
18145
  operationResponse.setParameter(GNParameterCode.UserId, masterPlayer.getUserId());
18045
18146
  operationResponse.setParameter(GNParameterCode.InfoResponseParameters, this.generateInfoResponseParameters(masterPlayer, request.infoRequestParam));
18046
18147
  this.setupAuthInfo(operationResponse, masterPlayer, secretInfo);
18148
+ await this.gnServer.getPostEventCallbackService().onAuthenticateEvent("system_OnAuthenticateSuccess", {
18149
+ authenticationType: "LoginByAndroidDeviceId",
18150
+ userId: masterPlayer.getUserId(),
18151
+ ipAddress: request.ipAddress,
18152
+ isNewUser: operationResponse.getParameters().getBoolean(GNParameterCode.NewlyCreated, false),
18153
+ }, secretInfo, operationRequest, operationResponse);
18047
18154
  await this.gnServer.getPostEventCallbackService().onEvent("authenticate_LoginByAndroidDeviceId", request, secretInfo, operationRequest, operationResponse);
18048
18155
  return operationResponse;
18049
18156
  }
@@ -18181,6 +18288,12 @@ class LoginByAppleRequestHandler extends LoginBaseRequestHandler {
18181
18288
  operationResponse.setParameter(GNParameterCode.UserId, masterPlayer.getUserId());
18182
18289
  operationResponse.setParameter(GNParameterCode.InfoResponseParameters, this.generateInfoResponseParameters(masterPlayer, request.infoRequestParam));
18183
18290
  this.setupAuthInfo(operationResponse, masterPlayer, secretInfo);
18291
+ await this.gnServer.getPostEventCallbackService().onAuthenticateEvent("system_OnAuthenticateSuccess", {
18292
+ authenticationType: "LoginByApple",
18293
+ userId: masterPlayer.getUserId(),
18294
+ ipAddress: request.ipAddress,
18295
+ isNewUser: operationResponse.getParameters().getBoolean(GNParameterCode.NewlyCreated, false),
18296
+ }, secretInfo, operationRequest, operationResponse);
18184
18297
  await this.gnServer.getPostEventCallbackService().onEvent("authenticate_LoginByApple", request, secretInfo, operationRequest, operationResponse);
18185
18298
  return operationResponse;
18186
18299
  }
@@ -18307,6 +18420,12 @@ class LoginByCustomDeviceIdRequestHandler extends LoginBaseRequestHandler {
18307
18420
  operationResponse.setParameter(GNParameterCode.UserId, masterPlayer.getUserId());
18308
18421
  operationResponse.setParameter(GNParameterCode.InfoResponseParameters, this.generateInfoResponseParameters(masterPlayer, request.infoRequestParam));
18309
18422
  this.setupAuthInfo(operationResponse, masterPlayer, secretInfo);
18423
+ await this.gnServer.getPostEventCallbackService().onAuthenticateEvent("system_OnAuthenticateSuccess", {
18424
+ authenticationType: "LoginByCustomDeviceId",
18425
+ userId: masterPlayer.getUserId(),
18426
+ ipAddress: request.ipAddress,
18427
+ isNewUser: operationResponse.getParameters().getBoolean(GNParameterCode.NewlyCreated, false),
18428
+ }, secretInfo, operationRequest, operationResponse);
18310
18429
  await this.gnServer.getPostEventCallbackService().onEvent("authenticate_LoginByCustomDeviceId", request, secretInfo, operationRequest, operationResponse);
18311
18430
  return operationResponse;
18312
18431
  }
@@ -18433,6 +18552,12 @@ class LoginByCustomIdRequestHandler extends LoginBaseRequestHandler {
18433
18552
  operationResponse.setParameter(GNParameterCode.UserId, masterPlayer.getUserId());
18434
18553
  operationResponse.setParameter(GNParameterCode.InfoResponseParameters, this.generateInfoResponseParameters(masterPlayer, request.infoRequestParam));
18435
18554
  this.setupAuthInfo(operationResponse, masterPlayer, secretInfo);
18555
+ await this.gnServer.getPostEventCallbackService().onAuthenticateEvent("system_OnAuthenticateSuccess", {
18556
+ authenticationType: "LoginByCustomId",
18557
+ userId: masterPlayer.getUserId(),
18558
+ ipAddress: request.ipAddress,
18559
+ isNewUser: operationResponse.getParameters().getBoolean(GNParameterCode.NewlyCreated, false),
18560
+ }, secretInfo, operationRequest, operationResponse);
18436
18561
  await this.gnServer.getPostEventCallbackService().onEvent("authenticate_LoginByCustomId", request, secretInfo, operationRequest, operationResponse);
18437
18562
  return operationResponse;
18438
18563
  }
@@ -18573,6 +18698,12 @@ class LoginByFacebookRequestHandler extends LoginBaseRequestHandler {
18573
18698
  operationResponse.setParameter(GNParameterCode.UserId, masterPlayer.getUserId());
18574
18699
  operationResponse.setParameter(GNParameterCode.InfoResponseParameters, this.generateInfoResponseParameters(masterPlayer, request.infoRequestParam));
18575
18700
  this.setupAuthInfo(operationResponse, masterPlayer, secretInfo);
18701
+ await this.gnServer.getPostEventCallbackService().onAuthenticateEvent("system_OnAuthenticateSuccess", {
18702
+ authenticationType: "LoginByFacebook",
18703
+ userId: masterPlayer.getUserId(),
18704
+ ipAddress: request.ipAddress,
18705
+ isNewUser: operationResponse.getParameters().getBoolean(GNParameterCode.NewlyCreated, false),
18706
+ }, secretInfo, operationRequest, operationResponse);
18576
18707
  await this.gnServer.getPostEventCallbackService().onEvent("authenticate_LoginByFacebook", request, secretInfo, operationRequest, operationResponse);
18577
18708
  return operationResponse;
18578
18709
  }
@@ -18730,6 +18861,12 @@ class LoginByGenericServiceRequestHandler extends LoginBaseRequestHandler {
18730
18861
  operationResponse.setParameter(GNParameterCode.UserId, masterPlayer.getUserId());
18731
18862
  operationResponse.setParameter(GNParameterCode.InfoResponseParameters, this.generateInfoResponseParameters(masterPlayer, request.infoRequestParam));
18732
18863
  this.setupAuthInfo(operationResponse, masterPlayer, secretInfo);
18864
+ await this.gnServer.getPostEventCallbackService().onAuthenticateEvent("system_OnAuthenticateSuccess", {
18865
+ authenticationType: "LoginByGenericService",
18866
+ userId: masterPlayer.getUserId(),
18867
+ ipAddress: request.ipAddress,
18868
+ isNewUser: operationResponse.getParameters().getBoolean(GNParameterCode.NewlyCreated, false),
18869
+ }, secretInfo, operationRequest, operationResponse);
18733
18870
  await this.gnServer.getPostEventCallbackService().onEvent("authenticate_LoginByGenericService", request, secretInfo, operationRequest, operationResponse);
18734
18871
  return operationResponse;
18735
18872
  }
@@ -18877,6 +19014,12 @@ class LoginByGoogleRequestHandler extends LoginBaseRequestHandler {
18877
19014
  operationResponse.setParameter(GNParameterCode.UserId, masterPlayer.getUserId());
18878
19015
  operationResponse.setParameter(GNParameterCode.InfoResponseParameters, this.generateInfoResponseParameters(masterPlayer, request.infoRequestParam));
18879
19016
  this.setupAuthInfo(operationResponse, masterPlayer, secretInfo);
19017
+ await this.gnServer.getPostEventCallbackService().onAuthenticateEvent("system_OnAuthenticateSuccess", {
19018
+ authenticationType: "LoginByGoogle",
19019
+ userId: masterPlayer.getUserId(),
19020
+ ipAddress: request.ipAddress,
19021
+ isNewUser: operationResponse.getParameters().getBoolean(GNParameterCode.NewlyCreated, false),
19022
+ }, secretInfo, operationRequest, operationResponse);
18880
19023
  await this.gnServer.getPostEventCallbackService().onEvent("authenticate_LoginByGoogle", request, secretInfo, operationRequest, operationResponse);
18881
19024
  return operationResponse;
18882
19025
  }
@@ -19017,6 +19160,12 @@ class LoginByGooglePlayGameServiceRequestHandler extends LoginBaseRequestHandler
19017
19160
  operationResponse.setParameter(GNParameterCode.UserId, masterPlayer.getUserId());
19018
19161
  operationResponse.setParameter(GNParameterCode.InfoResponseParameters, this.generateInfoResponseParameters(masterPlayer, request.infoRequestParam));
19019
19162
  this.setupAuthInfo(operationResponse, masterPlayer, secretInfo);
19163
+ await this.gnServer.getPostEventCallbackService().onAuthenticateEvent("system_OnAuthenticateSuccess", {
19164
+ authenticationType: "LoginByGooglePlayGameService",
19165
+ userId: masterPlayer.getUserId(),
19166
+ ipAddress: request.ipAddress,
19167
+ isNewUser: operationResponse.getParameters().getBoolean(GNParameterCode.NewlyCreated, false),
19168
+ }, secretInfo, operationRequest, operationResponse);
19020
19169
  await this.gnServer.getPostEventCallbackService().onEvent("authenticate_LoginByGooglePlayGameService", request, secretInfo, operationRequest, operationResponse);
19021
19170
  return operationResponse;
19022
19171
  }
@@ -19194,6 +19343,12 @@ class LoginByGameCenterRequestHandler extends LoginBaseRequestHandler {
19194
19343
  operationResponse.setParameter(GNParameterCode.UserId, masterPlayer.getUserId());
19195
19344
  operationResponse.setParameter(GNParameterCode.InfoResponseParameters, this.generateInfoResponseParameters(masterPlayer, request.infoRequestParam));
19196
19345
  this.setupAuthInfo(operationResponse, masterPlayer, secretInfo);
19346
+ await this.gnServer.getPostEventCallbackService().onAuthenticateEvent("system_OnAuthenticateSuccess", {
19347
+ authenticationType: "LoginByGameCenter",
19348
+ userId: masterPlayer.getUserId(),
19349
+ ipAddress: request.ipAddress,
19350
+ isNewUser: operationResponse.getParameters().getBoolean(GNParameterCode.NewlyCreated, false),
19351
+ }, secretInfo, operationRequest, operationResponse);
19197
19352
  await this.gnServer.getPostEventCallbackService().onEvent("authenticate_LoginByGameCenter", request, secretInfo, operationRequest, operationResponse);
19198
19353
  return operationResponse;
19199
19354
  }
@@ -19320,6 +19475,12 @@ class LoginByiOSDeviceIdRequestHandler extends LoginBaseRequestHandler {
19320
19475
  operationResponse.setParameter(GNParameterCode.UserId, masterPlayer.getUserId());
19321
19476
  operationResponse.setParameter(GNParameterCode.InfoResponseParameters, this.generateInfoResponseParameters(masterPlayer, request.infoRequestParam));
19322
19477
  this.setupAuthInfo(operationResponse, masterPlayer, secretInfo);
19478
+ await this.gnServer.getPostEventCallbackService().onAuthenticateEvent("system_OnAuthenticateSuccess", {
19479
+ authenticationType: "LoginByiOSDeviceId",
19480
+ userId: masterPlayer.getUserId(),
19481
+ ipAddress: request.ipAddress,
19482
+ isNewUser: operationResponse.getParameters().getBoolean(GNParameterCode.NewlyCreated, false),
19483
+ }, secretInfo, operationRequest, operationResponse);
19323
19484
  await this.gnServer.getPostEventCallbackService().onEvent("authenticate_LoginByiOSDeviceId", request, secretInfo, operationRequest, operationResponse);
19324
19485
  return operationResponse;
19325
19486
  }
@@ -19446,6 +19607,12 @@ class LoginByWindowsPhoneDeviceIdRequestHandler extends LoginBaseRequestHandler
19446
19607
  operationResponse.setParameter(GNParameterCode.UserId, masterPlayer.getUserId());
19447
19608
  operationResponse.setParameter(GNParameterCode.InfoResponseParameters, this.generateInfoResponseParameters(masterPlayer, request.infoRequestParam));
19448
19609
  this.setupAuthInfo(operationResponse, masterPlayer, secretInfo);
19610
+ await this.gnServer.getPostEventCallbackService().onAuthenticateEvent("system_OnAuthenticateSuccess", {
19611
+ authenticationType: "LoginByWindowsPhoneDeviceId",
19612
+ userId: masterPlayer.getUserId(),
19613
+ ipAddress: request.ipAddress,
19614
+ isNewUser: operationResponse.getParameters().getBoolean(GNParameterCode.NewlyCreated, false),
19615
+ }, secretInfo, operationRequest, operationResponse);
19449
19616
  await this.gnServer.getPostEventCallbackService().onEvent("authenticate_LoginByWindowsPhoneDeviceId", request, secretInfo, operationRequest, operationResponse);
19450
19617
  return operationResponse;
19451
19618
  }
@@ -19555,6 +19722,12 @@ class RegisterAccountRequestHandler extends LoginBaseRequestHandler {
19555
19722
  masterPlayer.setTsLastLogin(xDatetime.getCurrentMilliseconds());
19556
19723
  masterPlayer.saveAsync();
19557
19724
  this.setupAuthInfo(operationResponse, masterPlayer, secretInfo);
19725
+ await this.gnServer.getPostEventCallbackService().onAuthenticateEvent("system_OnAuthenticateSuccess", {
19726
+ authenticationType: "RegisterAccount",
19727
+ userId: masterPlayer.getUserId(),
19728
+ ipAddress: request.ipAddress,
19729
+ isNewUser: true,
19730
+ }, secretInfo, operationRequest, operationResponse);
19558
19731
  await this.gnServer.getPostEventCallbackService().onEvent("authenticate_RegisterAccount", request, secretInfo, operationRequest, operationResponse);
19559
19732
  return operationResponse;
19560
19733
  }
@@ -19681,6 +19854,12 @@ class LoginByEditorDeviceIdRequestHandler extends LoginBaseRequestHandler {
19681
19854
  operationResponse.setParameter(GNParameterCode.UserId, masterPlayer.getUserId());
19682
19855
  operationResponse.setParameter(GNParameterCode.InfoResponseParameters, this.generateInfoResponseParameters(masterPlayer, request.infoRequestParam));
19683
19856
  this.setupAuthInfo(operationResponse, masterPlayer, secretInfo);
19857
+ await this.gnServer.getPostEventCallbackService().onAuthenticateEvent("system_OnAuthenticateSuccess", {
19858
+ authenticationType: "LoginByEditorDeviceId",
19859
+ userId: masterPlayer.getUserId(),
19860
+ ipAddress: request.ipAddress,
19861
+ isNewUser: operationResponse.getParameters().getBoolean(GNParameterCode.NewlyCreated, false),
19862
+ }, secretInfo, operationRequest, operationResponse);
19684
19863
  await this.gnServer.getPostEventCallbackService().onEvent("authenticate_LoginByEditorDeviceId", request, secretInfo, operationRequest, operationResponse);
19685
19864
  return operationResponse;
19686
19865
  }
@@ -19807,6 +19986,12 @@ class LoginByLinuxDeviceIdRequestHandler extends LoginBaseRequestHandler {
19807
19986
  operationResponse.setParameter(GNParameterCode.UserId, masterPlayer.getUserId());
19808
19987
  operationResponse.setParameter(GNParameterCode.InfoResponseParameters, this.generateInfoResponseParameters(masterPlayer, request.infoRequestParam));
19809
19988
  this.setupAuthInfo(operationResponse, masterPlayer, secretInfo);
19989
+ await this.gnServer.getPostEventCallbackService().onAuthenticateEvent("system_OnAuthenticateSuccess", {
19990
+ authenticationType: "LoginByLinuxDeviceId",
19991
+ userId: masterPlayer.getUserId(),
19992
+ ipAddress: request.ipAddress,
19993
+ isNewUser: operationResponse.getParameters().getBoolean(GNParameterCode.NewlyCreated, false),
19994
+ }, secretInfo, operationRequest, operationResponse);
19810
19995
  await this.gnServer.getPostEventCallbackService().onEvent("authenticate_LoginByLinuxDeviceId", request, secretInfo, operationRequest, operationResponse);
19811
19996
  return operationResponse;
19812
19997
  }
@@ -19933,6 +20118,12 @@ class LoginByMacOSDeviceIdRequestHandler extends LoginBaseRequestHandler {
19933
20118
  operationResponse.setParameter(GNParameterCode.UserId, masterPlayer.getUserId());
19934
20119
  operationResponse.setParameter(GNParameterCode.InfoResponseParameters, this.generateInfoResponseParameters(masterPlayer, request.infoRequestParam));
19935
20120
  this.setupAuthInfo(operationResponse, masterPlayer, secretInfo);
20121
+ await this.gnServer.getPostEventCallbackService().onAuthenticateEvent("system_OnAuthenticateSuccess", {
20122
+ authenticationType: "LoginByMacOSDeviceId",
20123
+ userId: masterPlayer.getUserId(),
20124
+ ipAddress: request.ipAddress,
20125
+ isNewUser: operationResponse.getParameters().getBoolean(GNParameterCode.NewlyCreated, false),
20126
+ }, secretInfo, operationRequest, operationResponse);
19936
20127
  await this.gnServer.getPostEventCallbackService().onEvent("authenticate_LoginByMacOSDeviceId", request, secretInfo, operationRequest, operationResponse);
19937
20128
  return operationResponse;
19938
20129
  }
@@ -20059,6 +20250,12 @@ class LoginByWindowsDeviceIdRequestHandler extends LoginBaseRequestHandler {
20059
20250
  operationResponse.setParameter(GNParameterCode.UserId, masterPlayer.getUserId());
20060
20251
  operationResponse.setParameter(GNParameterCode.InfoResponseParameters, this.generateInfoResponseParameters(masterPlayer, request.infoRequestParam));
20061
20252
  this.setupAuthInfo(operationResponse, masterPlayer, secretInfo);
20253
+ await this.gnServer.getPostEventCallbackService().onAuthenticateEvent("system_OnAuthenticateSuccess", {
20254
+ authenticationType: "LoginByWindowsDeviceId",
20255
+ userId: masterPlayer.getUserId(),
20256
+ ipAddress: request.ipAddress,
20257
+ isNewUser: operationResponse.getParameters().getBoolean(GNParameterCode.NewlyCreated, false),
20258
+ }, secretInfo, operationRequest, operationResponse);
20062
20259
  await this.gnServer.getPostEventCallbackService().onEvent("authenticate_LoginByWindowsDeviceId", request, secretInfo, operationRequest, operationResponse);
20063
20260
  return operationResponse;
20064
20261
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xmobitea/gn-server",
3
- "version": "2.6.3",
3
+ "version": "2.6.4",
4
4
  "description": "GearN Server by XmobiTea (Pro)",
5
5
  "types": "dist/index.d.ts",
6
6
  "main": "dist/index.js",