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

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

150 lines
4.3 KiB
C++

//----------------------------------------------------------------------------
//
// Copyright (C) Intel Corporation, 2006 - 2007.
//
// File: SOCKSv5.h
//
// Contents: SOCKS Protocol Version 5 definitions
//
// Notes:
//----------------------------------------------------------------------------
#ifndef _SOCKS_V5_H__
#define _SOCKS_V5_H__
//mps headers:
#include "ProtocolBasicMessage.h"
#define SOCKS_MAX_STRING_SIZE 256
#define SOCKS_V5_MAX_ADDRESS_SIZE 256
// Protocol version
#define SOCKS_V5_PROTOCOL_VERSION 5
#define MAX_HOST_NAME_LEN 256
// Enumerations
enum SOCKS_V5_METHOD
{
NO_AUTH =0,
GSSAPI =1,
USER_PASS =2,
NOT_ACCEPTABLE =0xFF
};
enum SOCKS_V5_ADDRESS
{
IPV4 =1,
DOMAINNAME =3,
IPV6 =4
};
enum SOCKS_V5_CMD
{
CONNECT =1,
BIND =2,
UDP_ASSOCIATE =3
};
enum SOCKS_V5_REP
{
SOCKS_SUCCEEDED =0,
SERVER_FAILURE =1,
CONNECTION_NOT_ALLOWED =2,
NETWORK_UNREACHABLE =3,
HOST_UNREACHABLE =4,
CONNECTION_REFUESED =5,
TTL_EXPIRED =6,
COMMAND_NOT_SUPPORTED =7,
ADDRESS_TYPE_NOT_SUPPORTED =8
};
class SOCKS_BasicMessage: public Protocol_BasicMessage{
public:
virtual unsigned int maxSize(){return SOCKS_MAX_STRING_SIZE;}
};
class SOCKSv5_ClientVersion: public SOCKS_BasicMessage{
public:
ACE_UINT8 VER = 0; // Protocol version - X'05' for this version of the protocol
ACE_UINT8 NMETHODS = 0; // Number of method identifier octets that appear in the METHODS field
ACE_UINT8 METHODS[256]; // Array of methods that the client supports
//derived from Protocol_BasicMessage:
size_t size() {return NMETHODS+2;}
STATUS read (ACE_SOCK_Stream &stream);
void write (ACE_Message_Block *&mb) {};
};
class SOCKSv5_ServerVersion: public SOCKS_BasicMessage {
public:
ACE_UINT8 VER = 0; // Protocol version - X'05' for this version of the protocol
ACE_UINT8 METHOD = 0; // Method that was selected by the server
//derived from Protocol_BasicMessage:
size_t size() {return 2;}
STATUS read (ACE_SOCK_Stream &stream) {return STATUS_OPERATION_NOT_SUPPORTED;};
void write (ACE_Message_Block *&mb);
};
class SOCKSv5_ClientRequest: public SOCKS_BasicMessage {
public:
ACE_UINT8 VER; // Protocol version - X'05' for this version of the protocol
ACE_UINT8 CMD; // Connect - X'01', Bind - X'02' or UDP Associate - X'03'
ACE_UINT8 RSV; // X'00'
ACE_UINT8 ATYP; // IPv4 address - X'01', domain name - X'03', IPv6 address - X'04'
ACE_CString DST_ADDR; // Desired destination address
ACE_UINT16 DST_PORT; // Desired destination port in network octet
ACE_UINT8 ADDR_LEN; //received in DST_ADDR[0]
//derived from Protocol_BasicMessage:
size_t size() {return ADDR_LEN+6;}
STATUS read (ACE_SOCK_Stream &stream);
void write (ACE_Message_Block *&mb) {};
};
class SOCKSv5_ServerReply: public SOCKS_BasicMessage {
public:
ACE_UINT8 VER; // Protocol version - X'05' for this version of the protocol
ACE_UINT8 REP; // Reply field.
ACE_UINT8 RSV; // X'00'
ACE_UINT8 ATYP; // IPv4 address - X'01',
// domain name - X'03'
// IPv6 address - X'04'
ACE_CString BND_ADDR; // Server bound address
ACE_UINT16 BND_PORT; // Server bound port in network octet
ACE_UINT8 BND_ADR_LEN;// This is not part of the protocol.
// if ATYP = Domain this value is equal to BND_ADDR[0]
// else: 4 if IPv4, 16 if IPv6
// derived from Protocol_BasicMessage:
size_t size() {return BND_ADR_LEN+6;}
STATUS read (ACE_SOCK_Stream &stream) {return STATUS_OPERATION_NOT_SUPPORTED;}
void write (ACE_Message_Block *&mb);
};
class SOCKSv5_UssrPwdSubNegotiate: public SOCKS_BasicMessage {
public:
ACE_UINT8 VER; //version of the subnegotiation, which is X'01'
ACE_UINT8 ULEN; // contains the length of the UNAME field
ACE_CString UNAME; // contains the username
ACE_UINT8 PLEN ; // length of the PASSWD field
ACE_CString PWD; // client password
// derived from Protocol_BasicMessage:
size_t size() {return ULEN+PLEN+3;}
STATUS read (ACE_SOCK_Stream &stream) ;
void write (ACE_Message_Block *&mb){}
};
class SOCKSv5_UssrPwdSubNegotiateReply: public SOCKS_BasicMessage {
public:
ACE_UINT8 VER = 0; //version
ACE_UINT8 AUTH_REPLAY = 0; // replay
// derived from Protocol_BasicMessage:
size_t size() {return 2;}
STATUS read (ACE_SOCK_Stream &stream) {return STATUS_OPERATION_NOT_SUPPORTED;}
void write (ACE_Message_Block *&mb);
};
#endif //_SOCKS_V5_H__