Browse Source

added option to bind the server to a specific ip address

sabrogden 5 years ago
parent
commit
1cac4c9b7f
4 changed files with 32 additions and 4 deletions
  1. 11 2
      AdvGeneral.cpp
  2. 10 0
      Options.cpp
  3. 2 1
      Options.h
  4. 9 1
      Server.cpp

+ 11 - 2
AdvGeneral.cpp

@@ -134,6 +134,7 @@ END_MESSAGE_MAP()
 #define SETTING_SEND_RECV_PORT 83
 #define SETTING_DEBUG_TO_FILE 84
 #define SETTING_DEBUG_TO_OUTPUT_STRING 85
+#define SETTING_NETWORK_BIND_IP_ADDRESS 86
 
 
 BOOL CAdvGeneral::OnInitDialog()
@@ -206,9 +207,11 @@ BOOL CAdvGeneral::OnInitDialog()
 	
 	pGroupTest->AddSubItem( new CMFCPropertyGridProperty(_T("Multi-Paste clip separator ([LF] = line feed)"), g_Opt.GetMultiPasteSeparator(false), _T(""), SETTING_CLIP_SEPARATOR));
 
-
 	AddTrueFalse(pGroupTest, _T("Multi-Paste in reverse order"), g_Opt.m_bMultiPasteReverse, SETTING_MULTIPASTE_REVERSE_ORDER);
 
+	pGroupTest->AddSubItem(new CMFCPropertyGridProperty(_T("Network Send Receive Port (default: 23443)"), (long)CGetSetOptions::GetPort(), _T(""), SETTING_SEND_RECV_PORT));
+	pGroupTest->AddSubItem(new CMFCPropertyGridProperty(_T("Network Server Bind IP (default: *)"), CGetSetOptions::GetNetworkBindIPAddress(), _T(""), SETTING_NETWORK_BIND_IP_ADDRESS));
+
 	AddTrueFalse(pGroupTest, _T("Open to group same as active exe"), CGetSetOptions::GetOpenToGroupByActiveExe(), SETTING_OPEN_TO_GROUP_AS_ACTIVE_EXE);
 
 	static TCHAR BASED_CODE szFilter[] = _T("Sounds(*.wav)|*.wav||");
@@ -228,7 +231,7 @@ BOOL CAdvGeneral::OnInitDialog()
 
 	pGroupTest->AddSubItem(new CMFCPropertyGridProperty(_T("Send Keys Delay (ms)"), (long)CGetSetOptions::RealSendKeysDelay(), _T(""), SETTING_SEND_KEYS_DELAY));
 
-	pGroupTest->AddSubItem(new CMFCPropertyGridProperty(_T("Network Send Receive Port (default: 23443)"), (long)CGetSetOptions::GetPort(), _T(""), SETTING_SEND_RECV_PORT));
+	
 
 	AddTrueFalse(pGroupTest, _T("Show Clips That are in Groups in Main List"), CGetSetOptions::GetShowAllClipsInMainList(), SETTING_SHOW_GROUP_CLIPS_IN_LIST);
 	AddTrueFalse(pGroupTest, _T("Show leading whitespace"), CGetSetOptions::GetDescShowLeadingWhiteSpace(), SETTING_SHOW_LEADING_WHITESPACE);
@@ -874,6 +877,12 @@ void CAdvGeneral::OnBnClickedOk()
 					CGetSetOptions::SetEnableOutputDebugStringLogging(val);
 				}
 				break;
+			case SETTING_NETWORK_BIND_IP_ADDRESS:
+				if (wcscmp(pNewValue->bstrVal, pOrigValue->bstrVal) != 0)
+				{
+					CGetSetOptions::SetNetworkBindIPAddress(pNewValue->bstrVal);
+				}
+				break;
 			}
 		}
 	}

+ 10 - 0
Options.cpp

@@ -2920,4 +2920,14 @@ void CGetSetOptions::SetMaintainSearchView(BOOL val)
 {
 	m_maintainSearchView = val;
 	SetProfileLong("MaintainSearchView", val);
+}
+
+CString CGetSetOptions::GetNetworkBindIPAddress()
+{
+	return GetProfileString("NetworkBindIPAddress", "*");
+}
+
+void CGetSetOptions::SetNetworkBindIPAddress(CString val)
+{
+	SetProfileString("NetworkBindIPAddress", val);
 }

+ 2 - 1
Options.h

@@ -657,7 +657,8 @@ public:
 	static BOOL GetMaintainSearchView();
 	static void SetMaintainSearchView(BOOL val);
 
-
+	static CString GetNetworkBindIPAddress();
+	static void SetNetworkBindIPAddress(CString val);
 };
 
 // global for easy access and for initialization of fast access variables

+ 9 - 1
Server.cpp

@@ -38,7 +38,15 @@ UINT  MTServerThread(LPVOID pParam)
 		return 0;
 	}
 	local.sin_family = AF_INET;
-	local.sin_addr.s_addr = INADDR_ANY;
+	CString bindToIpAddress = CGetSetOptions::GetNetworkBindIPAddress();
+	if (bindToIpAddress == _T("*"))
+	{
+		local.sin_addr.s_addr = INADDR_ANY;
+	}
+	else
+	{
+		local.sin_addr.s_addr = inet_addr(CTextConvert::ConvertToChar(bindToIpAddress));
+	}
 	local.sin_port = htons((u_short)g_Opt.m_lPort);
 	theApp.m_sSocket = socket(AF_INET, SOCK_STREAM, 0);
 	if(theApp.m_sSocket == INVALID_SOCKET)