summaryrefslogtreecommitdiffabout
path: root/PumpKINDlg.cpp
authorMichael Krelin <hacker@klever.net>2011-04-27 14:18:48 (UTC)
committer Michael Krelin <hacker@klever.net>2011-04-27 14:18:48 (UTC)
commitc3b240e06bae3b663505e2b1c52eb67c34ddd3ea (patch) (unidiff)
tree06793f5d56a8129bfdaaee441fc34fbb361ddb13 /PumpKINDlg.cpp
parentd097b824b7fcad001c9581fb2e322bf3e3e5961d (diff)
downloadpumpkin-c3b240e06bae3b663505e2b1c52eb67c34ddd3ea.zip
pumpkin-c3b240e06bae3b663505e2b1c52eb67c34ddd3ea.tar.gz
pumpkin-c3b240e06bae3b663505e2b1c52eb67c34ddd3ea.tar.bz2
network settings: bind to specific ip address
Signed-off-by: Michael Krelin <hacker@klever.net>
Diffstat (limited to 'PumpKINDlg.cpp') (more/less context) (ignore whitespace changes)
-rwxr-xr-xPumpKINDlg.cpp16
1 files changed, 9 insertions, 7 deletions
diff --git a/PumpKINDlg.cpp b/PumpKINDlg.cpp
index 3ff1500..0c5c19b 100755
--- a/PumpKINDlg.cpp
+++ b/PumpKINDlg.cpp
@@ -1183,119 +1183,121 @@ CTime *t = new CTime(CTime::GetCurrentTime());
1183 1183
1184void CPumpKINDlg::LogLine(UINT msgID) 1184void CPumpKINDlg::LogLine(UINT msgID)
1185{ 1185{
1186CString tmp; 1186CString tmp;
1187 tmp.Format(msgID); 1187 tmp.Format(msgID);
1188 LogLine(tmp); 1188 LogLine(tmp);
1189} 1189}
1190 1190
1191void CXferSocket::TurnSlashes(CString& fn,BOOL bBack) 1191void CXferSocket::TurnSlashes(CString& fn,BOOL bBack)
1192{ 1192{
1193 ints = fn.Find(bBack?'/':'\\'); 1193 ints = fn.Find(bBack?'/':'\\');
1194 while(s>=0){ 1194 while(s>=0){
1195 fn.SetAt(s,bBack?'\\':'/'); 1195 fn.SetAt(s,bBack?'\\':'/');
1196 s = fn.Find(bBack?'/':'\\'); 1196 s = fn.Find(bBack?'/':'\\');
1197 } 1197 }
1198} 1198}
1199 1199
1200CString CXferSocket::ApplyRoot(LPCTSTR fileName) 1200CString CXferSocket::ApplyRoot(LPCTSTR fileName)
1201{ 1201{
1202 ASSERT(m_Daddy); 1202 ASSERT(m_Daddy);
1203CString fn = fileName; 1203CString fn = fileName;
1204CString rv = m_Daddy->m_TFTPRoot; 1204CString rv = m_Daddy->m_TFTPRoot;
1205 if(rv.IsEmpty()) 1205 if(rv.IsEmpty())
1206 rv = "."; 1206 rv = ".";
1207 if(rv[rv.GetLength()-1]!='\\') 1207 if(rv[rv.GetLength()-1]!='\\')
1208 rv+="\\"; 1208 rv+="\\";
1209 while((!fn.IsEmpty()) && fn[0]=='\\') 1209 while((!fn.IsEmpty()) && fn[0]=='\\')
1210 fn=fn.Mid(1); 1210 fn=fn.Mid(1);
1211 rv+=fn; 1211 rv+=fn;
1212 return rv; 1212 return rv;
1213} 1213}
1214 1214
1215void CPumpKINDlg::OnOptions() 1215void CPumpKINDlg::OnOptions()
1216{ 1216{
1217CPropertySheet cps(IDS_TITLE_OPTIONS,this); 1217CPropertySheet cps(IDS_TITLE_OPTIONS,this);
1218CPropsServer server; 1218CPropsServer server;
1219CPropsNetwork network; 1219CPropsNetwork network;
1220CPropsSounds sounds; 1220CPropsSounds sounds;
1221CPropsACL acl; 1221CPropsACL acl;
1222 1222
1223 server.m_RRQMode=m_RRQMode; 1223 server.m_RRQMode=m_RRQMode;
1224 server.m_TFTPRoot=m_TFTPRoot; 1224 server.m_TFTPRoot=m_TFTPRoot;
1225 server.m_TFTPSubdirs=m_bTFTPSubdirs; 1225 server.m_TFTPSubdirs=m_bTFTPSubdirs;
1226 server.m_WRQMode=m_WRQMode; 1226 server.m_WRQMode=m_WRQMode;
1227 server.m_PromptTimeOut=m_PromptTimeOut; 1227 server.m_PromptTimeOut=m_PromptTimeOut;
1228 server.m_LogFile=m_LogFile; 1228 server.m_LogFile=m_LogFile;
1229 1229
1230 network.m_ListenPort=m_ListenPort; 1230 network.m_ListenPort=m_ListenPort;
1231 network.m_ListenAddress=m_ListenAddress;
1231 network.m_SpeakPort=m_SpeakPort; 1232 network.m_SpeakPort=m_SpeakPort;
1232 network.m_TimeOut=m_TFTPTimeOut.GetTotalSeconds(); 1233 network.m_TimeOut=m_TFTPTimeOut.GetTotalSeconds();
1233 network.m_BlockSize=m_BlockSize; 1234 network.m_BlockSize=m_BlockSize;
1234 1235
1235 sounds.m_Request = m_bnwRequest; 1236 sounds.m_Request = m_bnwRequest;
1236 sounds.m_Success = m_bnwSuccess; 1237 sounds.m_Success = m_bnwSuccess;
1237 sounds.m_Abort = m_bnwAbort; 1238 sounds.m_Abort = m_bnwAbort;
1238 1239
1239 acl.m_rulist = m_aclRules; 1240 acl.m_rulist = m_aclRules;
1240 1241
1241 cps.AddPage(&server); 1242 cps.AddPage(&server);
1242 cps.AddPage(&network); 1243 cps.AddPage(&network);
1243 cps.AddPage(&sounds); 1244 cps.AddPage(&sounds);
1244 cps.AddPage(&acl); 1245 cps.AddPage(&acl);
1245 if(cps.DoModal()==IDOK){ 1246 if(cps.DoModal()==IDOK){
1246 m_RRQMode=server.m_RRQMode; 1247 m_RRQMode=server.m_RRQMode;
1247 m_TFTPRoot=server.m_TFTPRoot; 1248 m_TFTPRoot=server.m_TFTPRoot;
1248 m_bTFTPSubdirs=server.m_TFTPSubdirs; 1249 m_bTFTPSubdirs=server.m_TFTPSubdirs;
1249 m_WRQMode=server.m_WRQMode; 1250 m_WRQMode=server.m_WRQMode;
1250 m_PromptTimeOut=server.m_PromptTimeOut; 1251 m_PromptTimeOut=server.m_PromptTimeOut;
1251 m_LogFile=server.m_LogFile; 1252 m_LogFile=server.m_LogFile;
1252 1253
1253 m_ListenPort=network.m_ListenPort; 1254 m_ListenPort=network.m_ListenPort;
1255 m_ListenAddress=network.m_ListenAddress;
1254 m_SpeakPort=network.m_SpeakPort; 1256 m_SpeakPort=network.m_SpeakPort;
1255 m_TFTPTimeOut=CTimeSpan(network.m_TimeOut); 1257 m_TFTPTimeOut=CTimeSpan(network.m_TimeOut);
1256 m_BlockSize=network.m_BlockSize; 1258 m_BlockSize=network.m_BlockSize;
1257 1259
1258 m_bnwRequest = sounds.m_Request; 1260 m_bnwRequest = sounds.m_Request;
1259 m_bnwSuccess = sounds.m_Success; 1261 m_bnwSuccess = sounds.m_Success;
1260 m_bnwAbort = sounds.m_Abort; 1262 m_bnwAbort = sounds.m_Abort;
1261 1263
1262 m_aclRules = acl.m_rulist; 1264 m_aclRules = acl.m_rulist;
1263 1265
1264 m_lastlogerr.Empty(); 1266 m_lastlogerr.Empty();
1265 } 1267 }
1266} 1268}
1267 1269
1268BOOL CRRQSocket::ConfirmRequest() 1270BOOL CRRQSocket::ConfirmRequest()
1269{ 1271{
1270CConfirmRRQDlg cd(NULL); 1272CConfirmRRQDlg cd(NULL);
1271 cd.m_Daddy=this; 1273 cd.m_Daddy=this;
1272 cd.m_File=m_FileName; 1274 cd.m_File=m_FileName;
1273 cd.m_Host=inet_ntoa(m_Peer.sin_addr); 1275 cd.m_Host=inet_ntoa(m_Peer.sin_addr);
1274 if(cd.DoModal()==IDOK) 1276 if(cd.DoModal()==IDOK)
1275 return TRUE; 1277 return TRUE;
1276 return FALSE; 1278 return FALSE;
1277} 1279}
1278 1280
1279CWRQSocket::CWRQSocket(CPumpKINDlg* daddy,LPCTSTR fileName,LPCTSTR type,SOCKADDR_IN *sin) 1281CWRQSocket::CWRQSocket(CPumpKINDlg* daddy,LPCTSTR fileName,LPCTSTR type,SOCKADDR_IN *sin)
1280 : CXferSocket(daddy,fileName,type,sin) 1282 : CXferSocket(daddy,fileName,type,sin)
1281{ 1283{
1282 state=stateNone; 1284 state=stateNone;
1283 m_ACK=0; 1285 m_ACK=0;
1284 m_LastSlack=0; 1286 m_LastSlack=0;
1285 m_bResume=FALSE; 1287 m_bResume=FALSE;
1286} 1288}
1287 1289
1288BOOL CWRQSocket::Create(LPCTSTR localFile,LPCTSTR hostName) 1290BOOL CWRQSocket::Create(LPCTSTR localFile,LPCTSTR hostName)
1289{ 1291{
1290 if(!CAsyncSocket::Create(0,SOCK_DGRAM)) 1292 if(!CAsyncSocket::Create(0,SOCK_DGRAM))
1291 return FALSE; 1293 return FALSE;
1292 ASSERT(m_Daddy); 1294 ASSERT(m_Daddy);
1293 ASSERT(m_Peer.sin_addr.s_addr!=INADDR_NONE || hostName); 1295 ASSERT(m_Peer.sin_addr.s_addr!=INADDR_NONE || hostName);
1294 m_Daddy->m_Xfers[m_hSocket]=this; 1296 m_Daddy->m_Xfers[m_hSocket]=this;
1295 UpdateList(); 1297 UpdateList();
1296CString lf; 1298CString lf;
1297 if(!localFile) { 1299 if(!localFile) {
1298 lf = m_FileName; 1300 lf = m_FileName;
1299 TurnSlashes(lf,TRUE); 1301 TurnSlashes(lf,TRUE);
1300 } 1302 }
1301CString fn = localFile?ApplyRootGently(localFile):ApplyRoot(lf); 1303CString fn = localFile?ApplyRootGently(localFile):ApplyRoot(lf);
@@ -1830,126 +1832,128 @@ void CPumpKINDlg::OnTrayShowpumpkinwindow()
1830 m_bShown=TRUE; 1832 m_bShown=TRUE;
1831 ShowWindow(SW_SHOW); 1833 ShowWindow(SW_SHOW);
1832 SetForegroundWindow(); 1834 SetForegroundWindow();
1833 SetFocus(); 1835 SetFocus();
1834 } 1836 }
1835} 1837}
1836 1838
1837void CPumpKINDlg::OnTrayExit() 1839void CPumpKINDlg::OnTrayExit()
1838{ 1840{
1839 OnExit(); 1841 OnExit();
1840} 1842}
1841 1843
1842void CPumpKINDlg::OnTrayAboutpumpkin() 1844void CPumpKINDlg::OnTrayAboutpumpkin()
1843{ 1845{
1844CAboutDlg dlgAbout; 1846CAboutDlg dlgAbout;
1845 dlgAbout.DoModal(); 1847 dlgAbout.DoModal();
1846} 1848}
1847 1849
1848void CPumpKINDlg::OnTrayFetchfile() 1850void CPumpKINDlg::OnTrayFetchfile()
1849{ 1851{
1850 OnGet(); 1852 OnGet();
1851} 1853}
1852 1854
1853void CPumpKINDlg::OnTrayHelp() 1855void CPumpKINDlg::OnTrayHelp()
1854{ 1856{
1855 OnHelp(); 1857 OnHelp();
1856} 1858}
1857 1859
1858void CPumpKINDlg::OnTrayOptions() 1860void CPumpKINDlg::OnTrayOptions()
1859{ 1861{
1860 OnOptions(); 1862 OnOptions();
1861} 1863}
1862 1864
1863void CPumpKINDlg::OnTraySendfile() 1865void CPumpKINDlg::OnTraySendfile()
1864{ 1866{
1865 OnPut(); 1867 OnPut();
1866} 1868}
1867 1869
1868void CPumpKINDlg::LoadSettings() 1870void CPumpKINDlg::LoadSettings()
1869{ 1871{
1870CWinApp *app = AfxGetApp(); 1872CWinApp *app = AfxGetApp();
1871 ASSERT(app); 1873 ASSERT(app);
1872 m_bListen=app->GetProfileInt("TFTPSettings","Listen",m_bListen); 1874 m_bListen=app->GetProfileInt("TFTPSettings","Listen",m_bListen);
1873 m_bnwRequest=app->GetProfileString("BellsNWhistles","Request",m_bnwRequest); 1875 m_bnwRequest=app->GetProfileString("BellsNWhistles","Request",m_bnwRequest);
1874 m_bnwSuccess=app->GetProfileString("BellsNWhistles","Success",m_bnwSuccess); 1876 m_bnwSuccess=app->GetProfileString("BellsNWhistles","Success",m_bnwSuccess);
1875 m_bnwAbort=app->GetProfileString("BellsNWhistles","Abort",m_bnwAbort); 1877 m_bnwAbort=app->GetProfileString("BellsNWhistles","Abort",m_bnwAbort);
1876 m_bTFTPSubdirs=app->GetProfileInt("TFTPSettings","Subdirs",m_bTFTPSubdirs); 1878 m_bTFTPSubdirs=app->GetProfileInt("TFTPSettings","Subdirs",m_bTFTPSubdirs);
1877 m_ListenPort=app->GetProfileInt("TFTPSettings","ListenPort",m_ListenPort); 1879 m_ListenPort=app->GetProfileInt("TFTPSettings","ListenPort",m_ListenPort);
1880 m_ListenAddress=app->GetProfileString("TFTPSettings","ListenAddress",m_ListenAddress);
1878 m_LogLength=app->GetProfileInt("UISettings","LogLength",m_LogLength); 1881 m_LogLength=app->GetProfileInt("UISettings","LogLength",m_LogLength);
1879 m_PromptTimeOut=app->GetProfileInt("UISettings","PromptTimeout",m_PromptTimeOut); 1882 m_PromptTimeOut=app->GetProfileInt("UISettings","PromptTimeout",m_PromptTimeOut);
1880 m_RRQMode=app->GetProfileInt("TFTPSettings","RRQMode",m_RRQMode); 1883 m_RRQMode=app->GetProfileInt("TFTPSettings","RRQMode",m_RRQMode);
1881 m_SpeakPort=app->GetProfileInt("TFTPSettings","SpeakPort",m_SpeakPort); 1884 m_SpeakPort=app->GetProfileInt("TFTPSettings","SpeakPort",m_SpeakPort);
1882 m_TFTPRoot=app->GetProfileString("TFTPSettings","TFTPRoot",m_TFTPRoot); 1885 m_TFTPRoot=app->GetProfileString("TFTPSettings","TFTPRoot",m_TFTPRoot);
1883 m_LogFile=app->GetProfileString("General","LogFile",m_LogFile); 1886 m_LogFile=app->GetProfileString("General","LogFile",m_LogFile);
1884 m_TFTPTimeOut=CTimeSpan(app->GetProfileInt("TFTPSettings","TFTPTimeout",m_TFTPTimeOut.GetTotalSeconds())); 1887 m_TFTPTimeOut=CTimeSpan(app->GetProfileInt("TFTPSettings","TFTPTimeout",m_TFTPTimeOut.GetTotalSeconds()));
1885 m_BlockSize=app->GetProfileInt("TFTPSettings","TFTPBlockSize",m_BlockSize); 1888 m_BlockSize=app->GetProfileInt("TFTPSettings","TFTPBlockSize",m_BlockSize);
1886 m_RetryTimeOut=CTimeSpan(app->GetProfileInt("TFTPSettings","RetryTimeout",m_RetryTimeOut.GetTotalSeconds())); 1889 m_RetryTimeOut=CTimeSpan(app->GetProfileInt("TFTPSettings","RetryTimeout",m_RetryTimeOut.GetTotalSeconds()));
1887 m_WRQMode=app->GetProfileInt("TFTPSettings","WRQMode",m_WRQMode); 1890 m_WRQMode=app->GetProfileInt("TFTPSettings","WRQMode",m_WRQMode);
1888 m_bShown=app->GetProfileInt("UISettings","Visble",m_bShown); 1891 m_bShown=app->GetProfileInt("UISettings","Visble",m_bShown);
1889 if(m_TFTPRoot.IsEmpty()){ 1892 if(m_TFTPRoot.IsEmpty()){
1890 DWORD dL = ::GetCurrentDirectory(0,NULL); 1893 DWORD dL = ::GetCurrentDirectory(0,NULL);
1891 VERIFY(::GetCurrentDirectory(dL,m_TFTPRoot.GetBuffer(dL))); 1894 VERIFY(::GetCurrentDirectory(dL,m_TFTPRoot.GetBuffer(dL)));
1892 m_TFTPRoot.ReleaseBuffer(); 1895 m_TFTPRoot.ReleaseBuffer();
1893 } 1896 }
1894 ::SetCurrentDirectory(m_TFTPRoot); 1897 ::SetCurrentDirectory(m_TFTPRoot);
1895 m_aclRules.LoadProfile(app); 1898 m_aclRules.LoadProfile(app);
1896} 1899}
1897 1900
1898void CPumpKINDlg::SaveSettings() 1901void CPumpKINDlg::SaveSettings()
1899{ 1902{
1900CWinApp *app = AfxGetApp(); 1903CWinApp *app = AfxGetApp();
1901 ASSERT(app); 1904 ASSERT(app);
1902 app->WriteProfileInt("TFTPSettings","Listen",m_bListen); 1905 app->WriteProfileInt("TFTPSettings","Listen",m_bListen);
1903 app->WriteProfileString("BellsNWhistles","Request",m_bnwRequest); 1906 app->WriteProfileString("BellsNWhistles","Request",m_bnwRequest);
1904 app->WriteProfileString("BellsNWhistles","Success",m_bnwSuccess); 1907 app->WriteProfileString("BellsNWhistles","Success",m_bnwSuccess);
1905 app->WriteProfileString("BellsNWhistles","Abort",m_bnwAbort); 1908 app->WriteProfileString("BellsNWhistles","Abort",m_bnwAbort);
1906 app->WriteProfileInt("TFTPSettings","Subdirs",m_bTFTPSubdirs); 1909 app->WriteProfileInt("TFTPSettings","Subdirs",m_bTFTPSubdirs);
1907 app->WriteProfileInt("TFTPSettings","ListenPort",m_ListenPort); 1910 app->WriteProfileInt("TFTPSettings","ListenPort",m_ListenPort);
1911 app->WriteProfileString("TFTPSettings","ListenAddress",m_ListenAddress);
1908 app->WriteProfileInt("UISettings","LogLength",m_LogLength); 1912 app->WriteProfileInt("UISettings","LogLength",m_LogLength);
1909 app->WriteProfileInt("UISettings","PromptTimeout",m_PromptTimeOut); 1913 app->WriteProfileInt("UISettings","PromptTimeout",m_PromptTimeOut);
1910 app->WriteProfileInt("TFTPSettings","RRQMode",m_RRQMode); 1914 app->WriteProfileInt("TFTPSettings","RRQMode",m_RRQMode);
1911 app->WriteProfileInt("TFTPSettings","SpeakPort",m_SpeakPort); 1915 app->WriteProfileInt("TFTPSettings","SpeakPort",m_SpeakPort);
1912 app->WriteProfileString("TFTPSettings","TFTPRoot",m_TFTPRoot); 1916 app->WriteProfileString("TFTPSettings","TFTPRoot",m_TFTPRoot);
1913 app->WriteProfileString("General","LogFile",m_LogFile); 1917 app->WriteProfileString("General","LogFile",m_LogFile);
1914 app->WriteProfileInt("TFTPSettings","TFTPTimeout",m_TFTPTimeOut.GetTotalSeconds()); 1918 app->WriteProfileInt("TFTPSettings","TFTPTimeout",m_TFTPTimeOut.GetTotalSeconds());
1915 app->WriteProfileInt("TFTPSettings","TFTPBlockSize",m_BlockSize); 1919 app->WriteProfileInt("TFTPSettings","TFTPBlockSize",m_BlockSize);
1916 app->WriteProfileInt("TFTPSettings","RetryTimeout",m_RetryTimeOut.GetTotalSeconds()); 1920 app->WriteProfileInt("TFTPSettings","RetryTimeout",m_RetryTimeOut.GetTotalSeconds());
1917 app->WriteProfileInt("TFTPSettings","WRQMode",m_WRQMode); 1921 app->WriteProfileInt("TFTPSettings","WRQMode",m_WRQMode);
1918 app->WriteProfileInt("UISettings","Visble",m_bShown); 1922 app->WriteProfileInt("UISettings","Visble",m_bShown);
1919 m_aclRules.SaveProfile(app); 1923 m_aclRules.SaveProfile(app);
1920} 1924}
1921 1925
1922void CPumpKINDlg::OnWindowPosChanging(WINDOWPOS FAR* lpwndpos) 1926void CPumpKINDlg::OnWindowPosChanging(WINDOWPOS FAR* lpwndpos)
1923{ 1927{
1924 CDialog::OnWindowPosChanging(lpwndpos); 1928 CDialog::OnWindowPosChanging(lpwndpos);
1925 if(!m_bExiting){ 1929 if(!m_bExiting){
1926 if(m_bShown){ 1930 if(m_bShown){
1927 lpwndpos->flags&=~SWP_HIDEWINDOW; 1931 lpwndpos->flags&=~SWP_HIDEWINDOW;
1928 lpwndpos->flags|=SWP_SHOWWINDOW; 1932 lpwndpos->flags|=SWP_SHOWWINDOW;
1929 }else{ 1933 }else{
1930 lpwndpos->flags&=~SWP_SHOWWINDOW; 1934 lpwndpos->flags&=~SWP_SHOWWINDOW;
1931 lpwndpos->flags|=SWP_HIDEWINDOW; 1935 lpwndpos->flags|=SWP_HIDEWINDOW;
1932 if(::GetForegroundWindow()==m_hWnd && (m_Trayer && !m_Trayer->m_inMenu)) 1936 if(::GetForegroundWindow()==m_hWnd && (m_Trayer && !m_Trayer->m_inMenu))
1933 GetDesktopWindow()->SetForegroundWindow(); 1937 GetDesktopWindow()->SetForegroundWindow();
1934 } 1938 }
1935 } 1939 }
1936} 1940}
1937 1941
1938CString CXferSocket::ApplyRootGently(LPCTSTR fn) 1942CString CXferSocket::ApplyRootGently(LPCTSTR fn)
1939{ 1943{
1940CString f = fn; 1944CString f = fn;
1941CString rv = f; 1945CString rv = f;
1942 if((!f.IsEmpty()) && f[0]!='\\' && f.Find(":")<0 && f.Find("\\")<0) 1946 if((!f.IsEmpty()) && f[0]!='\\' && f.Find(":")<0 && f.Find("\\")<0)
1943 rv = ApplyRoot(f); 1947 rv = ApplyRoot(f);
1944 return rv; 1948 return rv;
1945} 1949}
1946 1950
1947BOOL CXferSocket::CheckBadRelativeness(LPCTSTR file) 1951BOOL CXferSocket::CheckBadRelativeness(LPCTSTR file)
1948{ 1952{
1949CString tmp = file; 1953CString tmp = file;
1950 if(tmp.IsEmpty()) 1954 if(tmp.IsEmpty())
1951 return FALSE; 1955 return FALSE;
1952 if(tmp.Find("..")>=0) 1956 if(tmp.Find("..")>=0)
1953 return TRUE; 1957 return TRUE;
1954 if(tmp.Find(":")>=0) 1958 if(tmp.Find(":")>=0)
1955 return TRUE; 1959 return TRUE;
@@ -2022,106 +2026,104 @@ UINT files = ::DragQueryFile(hDropInfo,0xFFFFFFFF,NULL,0);
2022 2026
2023void CPumpKINDlg::OnCancel() 2027void CPumpKINDlg::OnCancel()
2024{ 2028{
2025 OnClose(); 2029 OnClose();
2026} 2030}
2027 2031
2028CPumpKINDlg::~CPumpKINDlg() 2032CPumpKINDlg::~CPumpKINDlg()
2029{ 2033{
2030 delete m_Trayer; 2034 delete m_Trayer;
2031 delete m_Retrier; 2035 delete m_Retrier;
2032} 2036}
2033 2037
2034void CXferSocket::OnRetry() 2038void CXferSocket::OnRetry()
2035{ 2039{
2036 if(!m_Retry){ 2040 if(!m_Retry){
2037 TRACE("Retrying unretriable..\n"); 2041 TRACE("Retrying unretriable..\n");
2038 return; 2042 return;
2039 } 2043 }
2040 TRACE0("Retrying..\n"); 2044 TRACE0("Retrying..\n");
2041 m_bRetry=TRUE; 2045 m_bRetry=TRUE;
2042 PostTFTP(tftp::Copy(m_Retry)); 2046 PostTFTP(tftp::Copy(m_Retry));
2043 m_bRetry=FALSE; 2047 m_bRetry=FALSE;
2044} 2048}
2045 2049
2046tftp* tftp::Copy(tftp *src) 2050tftp* tftp::Copy(tftp *src)
2047{ 2051{
2048 ASSERT(src); 2052 ASSERT(src);
2049 ASSERT(src->length); 2053 ASSERT(src->length);
2050tftp* rv = Allocate(src->length); 2054tftp* rv = Allocate(src->length);
2051 ASSERT(rv); 2055 ASSERT(rv);
2052 memmove(rv,src,tftpSlackSize+src->length); 2056 memmove(rv,src,tftpSlackSize+src->length);
2053 return rv; 2057 return rv;
2054} 2058}
2055 2059
2056void CXferSocket::SetTry(tftp *p) 2060void CXferSocket::SetTry(tftp *p)
2057{ 2061{
2058 if(m_Retry) 2062 if(m_Retry)
2059 delete m_Retry; 2063 delete m_Retry;
2060 m_Retry=p?tftp::Copy(p):NULL; 2064 m_Retry=p?tftp::Copy(p):NULL;
2061} 2065}
2062 2066
2063void CPumpKINDlg::OnHelp() 2067void CPumpKINDlg::OnHelp()
2064{ 2068{
2065 AfxGetApp()->WinHelp(0,HELP_FINDER); 2069 AfxGetApp()->WinHelp(0,HELP_FINDER);
2066} 2070}
2067 2071
2068BOOL CListenSocket::SetListen(BOOL b) { 2072BOOL CListenSocket::SetListen(BOOL b) {
2069 ASSERT(m_Daddy); 2073 ASSERT(m_Daddy);
2070 if(b==m_bListen) 2074 if(b==m_bListen) return TRUE;
2071 return TRUE; 2075 if(!b) {
2072 if(b) {
2073 if(!Create(m_Daddy->m_ListenPort,SOCK_DGRAM))
2074 return FALSE;
2075 return m_bListen=TRUE;
2076 }else{
2077 Close(); m_bListen=FALSE; 2076 Close(); m_bListen=FALSE;
2078 return TRUE; 2077 return TRUE;
2079 } 2078 }
2079 return m_bListen=Create(m_Daddy->m_ListenPort,SOCK_DGRAM,
2080 FD_READ|FD_WRITE|FD_OOB|FD_ACCEPT|FD_CONNECT|FD_CLOSE,
2081 m_Daddy->m_ListenAddress.IsEmpty()?NULL:(LPCTSTR)m_Daddy->m_ListenAddress);
2080} 2082}
2081 2083
2082void CPumpKINDlg::OnListening() 2084void CPumpKINDlg::OnListening()
2083{ 2085{
2084 if(!m_Listener.SetListen(m_ListenCtl.GetCheck()==1)) { 2086 if(!m_Listener.SetListen(m_ListenCtl.GetCheck()==1)) {
2085 TRACE0("Failed to create socket\n"); 2087 TRACE0("Failed to create socket\n");
2086 AfxMessageBox(IDS_BOX_CANTBIND,MB_OK|MB_ICONEXCLAMATION); 2088 AfxMessageBox(IDS_BOX_CANTBIND,MB_OK|MB_ICONEXCLAMATION);
2087 } 2089 }
2088 m_ListenCtl.SetCheck(m_Listener.m_bListen?1:0); 2090 m_ListenCtl.SetCheck(m_Listener.m_bListen?1:0);
2089 m_bListen=m_Listener.m_bListen; 2091 m_bListen=m_Listener.m_bListen;
2090} 2092}
2091 2093
2092void CPumpKINDlg::OnTrayListen() 2094void CPumpKINDlg::OnTrayListen()
2093{ 2095{
2094 if(!m_Listener.SetListen(!m_Listener.m_bListen)) { 2096 if(!m_Listener.SetListen(!m_Listener.m_bListen)) {
2095 TRACE0("Failed to create socket\n"); 2097 TRACE0("Failed to create socket\n");
2096 AfxMessageBox(IDS_BOX_CANTBIND,MB_OK|MB_ICONEXCLAMATION); 2098 AfxMessageBox(IDS_BOX_CANTBIND,MB_OK|MB_ICONEXCLAMATION);
2097 } 2099 }
2098 m_ListenCtl.SetCheck(m_Listener.m_bListen?1:0); 2100 m_ListenCtl.SetCheck(m_Listener.m_bListen?1:0);
2099 m_bListen=m_Listener.m_bListen; 2101 m_bListen=m_Listener.m_bListen;
2100} 2102}
2101 2103
2102void CPumpKINDlg::LogLine(LPCTSTR str) 2104void CPumpKINDlg::LogLine(LPCTSTR str)
2103{ 2105{
2104 LogLineToScreen(str); 2106 LogLineToScreen(str);
2105 if(!m_LogFile.IsEmpty()) { 2107 if(!m_LogFile.IsEmpty()) {
2106 if(!Klever::LogRecord((LPCTSTR)m_LogFile,str)) { 2108 if(!Klever::LogRecord((LPCTSTR)m_LogFile,str)) {
2107 if(m_lastlogerr!=m_LogFile) { 2109 if(m_lastlogerr!=m_LogFile) {
2108 CString tmp; 2110 CString tmp;
2109 tmp.Format(IDS_LOG_LOGERROR,m_LogFile); 2111 tmp.Format(IDS_LOG_LOGERROR,m_LogFile);
2110 LogLineToScreen(tmp); 2112 LogLineToScreen(tmp);
2111 m_lastlogerr=m_LogFile; 2113 m_lastlogerr=m_LogFile;
2112 } 2114 }
2113 } 2115 }
2114 } 2116 }
2115} 2117}
2116 2118
2117void CPumpKINDlg::OnGetMinMaxInfo(MINMAXINFO FAR* lpMMI) 2119void CPumpKINDlg::OnGetMinMaxInfo(MINMAXINFO FAR* lpMMI)
2118{ 2120{
2119 CDialog::OnGetMinMaxInfo(lpMMI); 2121 CDialog::OnGetMinMaxInfo(lpMMI);
2120 if(m_MinSize.cx>0 && m_MinSize.cy>0){ 2122 if(m_MinSize.cx>0 && m_MinSize.cy>0){
2121 lpMMI->ptMinTrackSize.x = m_MinSize.cx; 2123 lpMMI->ptMinTrackSize.x = m_MinSize.cx;
2122 lpMMI->ptMinTrackSize.y = m_MinSize.cy; 2124 lpMMI->ptMinTrackSize.y = m_MinSize.cy;
2123 } 2125 }
2124} 2126}
2125 2127
2126void CPumpKINDlg::OnSize(UINT nType, int cx, int cy) 2128void CPumpKINDlg::OnSize(UINT nType, int cx, int cy)
2127{ 2129{