lvfengfree b92e1119ae fix: 修复菜单为空问题 - 移除后端过滤home路由的错误逻辑
- 修复RouteService中错误过滤home路由的问题
- 后端现在正确返回所有用户有权限的路由
- 添加设备管理相关功能(列表、在线监控、电源管理、远程监控)
- 添加详细的修复文档和重启脚本
- 更新权限配置脚本

问题根源:后端代码中有逻辑会过滤掉home路由,导致前端收到空数组,无法生成菜单
解决方案:移除过滤home路由的逻辑,让后端返回所有有权限的路由
2026-03-01 09:50:19 +08:00

102 lines
2.5 KiB
C++

//----------------------------------------------------------------------------
//
// Copyright (C) Intel Corporation, 2006 - 2007.
//
// File: SOCKSv5.cpp
//
// Contents:
//
// Notes:
//----------------------------------------------------------------------------
//===================================================
// INCLUDES
//===================================================
#include "SOCKSv5.h"
#include <ace/SOCK_Stream.h>
#include <ace/Message_Block.h>
//===================================================
// Socksv5 Implementation
//===================================================
STATUS SOCKSv5_ClientVersion::read(ACE_SOCK_Stream &stream)
{
READ_ERROR(stream, VER);
READ_ERROR(stream, NMETHODS);
for (int i=0; i < NMETHODS; i++)
{
READ_ERROR(stream, METHODS[i]);
}
return STATUS_SUCCESS;
}
void SOCKSv5_ServerVersion::write(ACE_Message_Block* &mb)
{
mb = new ACE_Message_Block (this->size(), ACE_Message_Block::MB_DATA);
Protocol_BasicMessage::write(mb, (ACE_UINT8) VER);
Protocol_BasicMessage::write(mb, (ACE_UINT8) METHOD);
}
STATUS SOCKSv5_ClientRequest::read(ACE_SOCK_Stream &stream)
{
ACE_UINT8 addr_size = 0;
READ_ERROR(stream, VER);
READ_ERROR(stream, CMD);
READ_ERROR(stream, RSV);
READ_ERROR(stream, ATYP);
switch (ATYP)
{
case IPV4:
ADDR_LEN = 4;
break;
case DOMAINNAME:
READ_ERROR(stream, ADDR_LEN);
break;
case IPV6:
ADDR_LEN = 16;
break;
default:
return STATUS_ILLEGAL_SOCKS_MESSAGE;
}
READ_STR_ERROR(stream, DST_ADDR, ADDR_LEN);
READ_ERROR(stream, DST_PORT);
return STATUS_SUCCESS;
}
void SOCKSv5_ServerReply::write(ACE_Message_Block* &mb)
{
mb = new ACE_Message_Block (this->size(), ACE_Message_Block::MB_DATA);
Protocol_BasicMessage::write(mb, VER);
Protocol_BasicMessage::write(mb, REP);
Protocol_BasicMessage::write(mb, RSV);
Protocol_BasicMessage::write(mb, ATYP);
if (ATYP == DOMAINNAME)
Protocol_BasicMessage::write(mb, BND_ADR_LEN);
Protocol_BasicMessage::write(mb, BND_ADDR, BND_ADR_LEN);
Protocol_BasicMessage::write(mb, BND_PORT);
}
STATUS SOCKSv5_UssrPwdSubNegotiate::read(ACE_SOCK_Stream &stream)
{
READ_ERROR(stream, VER);
if (VER != 1)
return STATUS_ILLEGAL_SOCKS_MESSAGE;
READ_ERROR(stream, ULEN);
READ_STR_ERROR(stream, UNAME, ULEN);
READ_ERROR(stream, PLEN);
READ_STR_ERROR(stream, PWD, PLEN);
return STATUS_SUCCESS;
}
void SOCKSv5_UssrPwdSubNegotiateReply::write(ACE_Message_Block* &mb)
{
mb = new ACE_Message_Block (this->size(), ACE_Message_Block::MB_DATA);
Protocol_BasicMessage::write(mb, VER);
Protocol_BasicMessage::write(mb, AUTH_REPLAY);
}