Add a dedicated ShareHostDlg with a "Use Shine protocol" checkbox (default checked) so the operator can choose Shine (0) or HELL (1) when sharing or transferring a host. The chosen protocol is appended to the wire payload as a trailing colon field: "IP:PORT:0/1" for share and "IP:PORT:days:0/1" for transfer. The client parses the trailing field from COMMAND_SHARE and COMMAND_ASSIGN_MASTER, applies it to new connections, and persists it so auto-share/auto-transfer on restart keeps the same protocol. Old clients ignore the extra field, and old/missing payloads fall back to -1 (baked-in HELL), preserving compatibility with existing servers and share_list entries. Co-Authored-By: deepseek-v4-pro
46 lines
1.1 KiB
C++
46 lines
1.1 KiB
C++
#pragma once
|
|
|
|
#include "resource.h"
|
|
#include "LangManager.h"
|
|
|
|
// 分享主机 / 转移主机 专用对话框(带 Shine/HELL 协议勾选)
|
|
|
|
class CShareHostDlg : public CDialogLangEx
|
|
{
|
|
public:
|
|
CShareHostDlg(CWnd* pParent = nullptr, BOOL bNeedDays = FALSE);
|
|
virtual ~CShareHostDlg();
|
|
|
|
enum { IDD = IDD_DIALOG_SHARE_HOST };
|
|
|
|
void Init(LPCTSTR caption, LPCTSTR prompt);
|
|
void InitDays(LPCTSTR name, LPCTSTR defaultValue); // 仅转移主机显示
|
|
void SetHistoryKey(LPCTSTR historyKey);
|
|
|
|
// 结果
|
|
CString m_str; // 地址 IP:PORT
|
|
CString m_sDays; // 天数(转移主机)
|
|
BOOL m_bShine; // TRUE=Shine(0), FALSE=HELL(1)
|
|
|
|
protected:
|
|
virtual void DoDataExchange(CDataExchange* pDX);
|
|
virtual BOOL OnInitDialog();
|
|
virtual void OnOK();
|
|
|
|
DECLARE_MESSAGE_MAP()
|
|
|
|
CString m_sCaption;
|
|
CString m_sPrompt;
|
|
CString m_sDaysName;
|
|
CString m_sHistoryKey;
|
|
BOOL m_bNeedDays;
|
|
|
|
CComboBox m_ComboInput;
|
|
CStatic m_StaticDays;
|
|
CEdit m_EditDays;
|
|
CButton m_CheckShine;
|
|
|
|
void LoadHistory();
|
|
void SaveHistory();
|
|
};
|