-rw-r--r-- | DipstickDlg.cpp | 62 |
1 files changed, 52 insertions, 10 deletions
diff --git a/DipstickDlg.cpp b/DipstickDlg.cpp index ace2aff..f27b219 100644 --- a/DipstickDlg.cpp +++ b/DipstickDlg.cpp | |||
@@ -60,126 +60,129 @@ void CAboutDlg::DoDataExchange(CDataExchange* pDX) | |||
60 | //{{AFX_DATA_MAP(CAboutDlg) | 60 | //{{AFX_DATA_MAP(CAboutDlg) |
61 | //}}AFX_DATA_MAP | 61 | //}}AFX_DATA_MAP |
62 | } | 62 | } |
63 | 63 | ||
64 | BEGIN_MESSAGE_MAP(CAboutDlg, CDialog) | 64 | BEGIN_MESSAGE_MAP(CAboutDlg, CDialog) |
65 | //{{AFX_MSG_MAP(CAboutDlg) | 65 | //{{AFX_MSG_MAP(CAboutDlg) |
66 | ON_BN_CLICKED(IDC_KLEVERNET, OnKlevernet) | 66 | ON_BN_CLICKED(IDC_KLEVERNET, OnKlevernet) |
67 | //}}AFX_MSG_MAP | 67 | //}}AFX_MSG_MAP |
68 | END_MESSAGE_MAP() | 68 | END_MESSAGE_MAP() |
69 | 69 | ||
70 | ///////////////////////////////////////////////////////////////////////////// | 70 | ///////////////////////////////////////////////////////////////////////////// |
71 | // CDipstickDlg dialog | 71 | // CDipstickDlg dialog |
72 | 72 | ||
73 | CDipstickDlg::CDipstickDlg(CWnd* pParent /*=NULL*/) | 73 | CDipstickDlg::CDipstickDlg(CWnd* pParent /*=NULL*/) |
74 | : CDialog(CDipstickDlg::IDD, pParent), | 74 | : CDialog(CDipstickDlg::IDD, pParent), |
75 | m_DragPad(NULL), m_PingsPerHost(10), m_PingSize(32), m_TimeOut(5000), m_Interval(500), | 75 | m_DragPad(NULL), m_PingsPerHost(10), m_PingSize(32), m_TimeOut(5000), m_Interval(500), |
76 | m_SortCriteria(sortAvg), m_bShown(FALSE), m_MaxThreads(10), m_bExiting(FALSE), | 76 | m_SortCriteria(sortAvg), m_bShown(FALSE), m_MaxThreads(10), m_bExiting(FALSE), |
77 | m_bMSWorkAround(TRUE), m_MinSize(-1,-1), m_bAutoBest(TRUE), m_bSmartAdjust(TRUE), | 77 | m_bMSWorkAround(TRUE), m_MinSize(-1,-1), m_bAutoBest(TRUE), m_bSmartAdjust(TRUE), |
78 | m_bAdjustInnermost(TRUE), m_ActiveThreads(0), m_bIgnorelative(TRUE) | 78 | m_bAdjustInnermost(TRUE), m_ActiveThreads(0), m_bIgnorelative(TRUE) |
79 | { | 79 | { |
80 | CWinApp *app = AfxGetApp(); | 80 | CWinApp *app = AfxGetApp(); |
81 | ASSERT(app); | 81 | ASSERT(app); |
82 | WORD hi,lo; | 82 | WORD hi,lo; |
83 | hi=app->GetProfileInt("Options","IntervalHi",HIWORD(m_Interval)); | 83 | hi=app->GetProfileInt("Options","IntervalHi",HIWORD(m_Interval)); |
84 | lo=app->GetProfileInt("Options","IntervalLo",LOWORD(m_Interval)); | 84 | lo=app->GetProfileInt("Options","IntervalLo",LOWORD(m_Interval)); |
85 | m_Interval=MAKELONG(lo,hi); | 85 | m_Interval=MAKELONG(lo,hi); |
86 | m_MaxThreads=app->GetProfileInt("Options","MaxThreads",m_MaxThreads); | 86 | m_MaxThreads=app->GetProfileInt("Options","MaxThreads",m_MaxThreads); |
87 | m_PingSize=app->GetProfileInt("Options","PingSize",m_PingSize); | 87 | m_PingSize=app->GetProfileInt("Options","PingSize",m_PingSize); |
88 | m_PingsPerHost=app->GetProfileInt("Options","PingsPerHost",m_PingsPerHost); | 88 | m_PingsPerHost=app->GetProfileInt("Options","PingsPerHost",m_PingsPerHost); |
89 | m_SortCriteria=app->GetProfileInt("Options","SortBy",m_SortCriteria); | 89 | m_SortCriteria=app->GetProfileInt("Options","SortBy",m_SortCriteria); |
90 | hi=app->GetProfileInt("Options","TimeOutHi",HIWORD(m_TimeOut)); | 90 | hi=app->GetProfileInt("Options","TimeOutHi",HIWORD(m_TimeOut)); |
91 | lo=app->GetProfileInt("Options","TimeOutLo",LOWORD(m_TimeOut)); | 91 | lo=app->GetProfileInt("Options","TimeOutLo",LOWORD(m_TimeOut)); |
92 | m_TimeOut=MAKELONG(lo,hi); | 92 | m_TimeOut=MAKELONG(lo,hi); |
93 | m_bMSWorkAround = app->GetProfileInt("Options","InnermostURL",m_bMSWorkAround); | 93 | m_bMSWorkAround = app->GetProfileInt("Options","InnermostURL",m_bMSWorkAround); |
94 | m_bAutoBest = app->GetProfileInt("Options","AutoBest",m_bAutoBest); | 94 | m_bAutoBest = app->GetProfileInt("Options","AutoBest",m_bAutoBest); |
95 | m_bSmartAdjust = app->GetProfileInt("Options","SmartAdjust",m_bSmartAdjust); | 95 | m_bSmartAdjust = app->GetProfileInt("Options","SmartAdjust",m_bSmartAdjust); |
96 | m_bAdjustInnermost = app->GetProfileInt("Options","AdjustInnermost",m_bAdjustInnermost); | 96 | m_bAdjustInnermost = app->GetProfileInt("Options","AdjustInnermost",m_bAdjustInnermost); |
97 | m_bIgnorelative = app->GetProfileInt("Options","IgnoreRelative",m_bIgnorelative); | 97 | m_bIgnorelative = app->GetProfileInt("Options","IgnoreRelative",m_bIgnorelative); |
98 | m_impexPath = app->GetProfileString("Options","ImportExportPath",m_impexPath); | 98 | m_impexPath = app->GetProfileString("Options","ImportExportPath",m_impexPath); |
99 | //{{AFX_DATA_INIT(CDipstickDlg) | 99 | //{{AFX_DATA_INIT(CDipstickDlg) |
100 | //}}AFX_DATA_INIT | 100 | //}}AFX_DATA_INIT |
101 | // Note that LoadIcon does not require a subsequent DestroyIcon in Win32 | 101 | // Note that LoadIcon does not require a subsequent DestroyIcon in Win32 |
102 | m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); | 102 | m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); |
103 | m_bmpBack.LoadBitmap(IDB_DIABACK); | 103 | m_bmpBack.LoadBitmap(IDB_DIABACK); |
104 | m_bmpBack.GetBitmap(&m_bitmapBack); | 104 | m_bmpBack.GetBitmap(&m_bitmapBack); |
105 | CString tmp; | 105 | CString tmp; |
106 | VERIFY(tmp.LoadString(IDS_REGEX_HTMLURL)); | 106 | VERIFY(tmp.LoadString(IDS_REGEX_HTMLURL)); |
107 | VERIFY(m_reHTMLURL.Compile(tmp,CRegEx::regExtended|CRegEx::regIgnoreCase)); | 107 | VERIFY(m_reHTMLURL.Compile(tmp,CRegEx::regExtended|CRegEx::regIgnoreCase)); |
108 | VERIFY(tmp.LoadString(IDS_REGEX_URL)); | ||
109 | VERIFY(m_reURL.Compile(tmp,CRegEx::regExtended|CRegEx::regIgnoreCase)); | ||
108 | } | 110 | } |
109 | 111 | ||
110 | CDipstickDlg::~CDipstickDlg() | 112 | CDipstickDlg::~CDipstickDlg() |
111 | { | 113 | { |
112 | } | 114 | } |
113 | 115 | ||
114 | void CDipstickDlg::DoDataExchange(CDataExchange* pDX) | 116 | void CDipstickDlg::DoDataExchange(CDataExchange* pDX) |
115 | { | 117 | { |
116 | CDialog::DoDataExchange(pDX); | 118 | CDialog::DoDataExchange(pDX); |
117 | //{{AFX_DATA_MAP(CDipstickDlg) | 119 | //{{AFX_DATA_MAP(CDipstickDlg) |
118 | DDX_Control(pDX, IDC_ADVANCED, m_AdvancedCtl); | 120 | DDX_Control(pDX, IDC_ADVANCED, m_AdvancedCtl); |
119 | DDX_Control(pDX, ID_HELP, m_HelpCtl); | 121 | DDX_Control(pDX, ID_HELP, m_HelpCtl); |
120 | DDX_Control(pDX, IDC_EXIT, m_ExitCtl); | 122 | DDX_Control(pDX, IDC_EXIT, m_ExitCtl); |
121 | DDX_Control(pDX, IDC_OPTIONS, m_OptionsCtl); | 123 | DDX_Control(pDX, IDC_OPTIONS, m_OptionsCtl); |
122 | DDX_Control(pDX, IDC_MANUALPING, m_ManualPingCtl); | 124 | DDX_Control(pDX, IDC_MANUALPING, m_ManualPingCtl); |
123 | DDX_Control(pDX, IDC_REMOVE, m_RemoveCtl); | 125 | DDX_Control(pDX, IDC_REMOVE, m_RemoveCtl); |
124 | DDX_Control(pDX, IDC_REPINGALL, m_RepingAllCtl); | 126 | DDX_Control(pDX, IDC_REPINGALL, m_RepingAllCtl); |
125 | DDX_Control(pDX, IDC_REPING, m_RepingCtl); | 127 | DDX_Control(pDX, IDC_REPING, m_RepingCtl); |
126 | DDX_Control(pDX, IDC_CLEAR, m_ClearListCtl); | 128 | DDX_Control(pDX, IDC_CLEAR, m_ClearListCtl); |
127 | DDX_Control(pDX, IDC_HOSTLIST, m_HostList); | 129 | DDX_Control(pDX, IDC_HOSTLIST, m_HostList); |
128 | //}}AFX_DATA_MAP | 130 | //}}AFX_DATA_MAP |
129 | } | 131 | } |
130 | 132 | ||
131 | BEGIN_MESSAGE_MAP(CDipstickDlg, CDialog) | 133 | BEGIN_MESSAGE_MAP(CDipstickDlg, CDialog) |
132 | //{{AFX_MSG_MAP(CDipstickDlg) | 134 | //{{AFX_MSG_MAP(CDipstickDlg) |
133 | ON_WM_SYSCOMMAND() | 135 | ON_WM_SYSCOMMAND() |
134 | ON_WM_PAINT() | 136 | ON_WM_PAINT() |
135 | ON_WM_QUERYDRAGICON() | 137 | ON_WM_QUERYDRAGICON() |
136 | ON_WM_DESTROY() | 138 | ON_WM_DESTROY() |
137 | ON_BN_CLICKED(IDC_OPTIONS, OnOptions) | 139 | ON_BN_CLICKED(IDC_OPTIONS, OnOptions) |
140 | ON_MESSAGE(WM_DNP_URLSPING, OnURLSPing) | ||
138 | ON_MESSAGE(WM_DNP_URLPING, OnUrlPing) | 141 | ON_MESSAGE(WM_DNP_URLPING, OnUrlPing) |
139 | ON_MESSAGE(WM_DNP_ACTIVITYCOUNT, OnActivityCount) | 142 | ON_MESSAGE(WM_DNP_ACTIVITYCOUNT, OnActivityCount) |
140 | ON_MESSAGE(WM_DNP_UPDATEHOSTDATA, OnUpdateHostData) | 143 | ON_MESSAGE(WM_DNP_UPDATEHOSTDATA, OnUpdateHostData) |
141 | ON_MESSAGE(WM_DNP_HTML, OnHTMLTransfer) | 144 | ON_MESSAGE(WM_DNP_HTML, OnHTMLTransfer) |
142 | ON_NOTIFY(LVN_COLUMNCLICK, IDC_HOSTLIST, OnColumnclickHostlist) | 145 | ON_NOTIFY(LVN_COLUMNCLICK, IDC_HOSTLIST, OnColumnclickHostlist) |
143 | ON_WM_WINDOWPOSCHANGING() | 146 | ON_WM_WINDOWPOSCHANGING() |
144 | ON_COMMAND(ID_DRAGPAD_OPTIONS, OnDragpadOptions) | 147 | ON_COMMAND(ID_DRAGPAD_OPTIONS, OnDragpadOptions) |
145 | ON_COMMAND(ID_DRAGPAD_SHOWMAINWINDOW, OnDragpadShowmainwindow) | 148 | ON_COMMAND(ID_DRAGPAD_SHOWMAINWINDOW, OnDragpadShowmainwindow) |
146 | ON_COMMAND(ID_DRAGPAD_HELP, OnDragpadHelp) | 149 | ON_COMMAND(ID_DRAGPAD_HELP, OnDragpadHelp) |
147 | ON_COMMAND(ID_DRAGPAD_ABOUT, OnDragpadAbout) | 150 | ON_COMMAND(ID_DRAGPAD_ABOUT, OnDragpadAbout) |
148 | ON_COMMAND(ID_DRAGPAD_EXIT, OnDragpadExit) | 151 | ON_COMMAND(ID_DRAGPAD_EXIT, OnDragpadExit) |
149 | ON_BN_CLICKED(IDC_MANUALPING, OnManualping) | 152 | ON_BN_CLICKED(IDC_MANUALPING, OnManualping) |
150 | ON_COMMAND(ID_DRAGPAD_MANUALPING, OnDragpadManualping) | 153 | ON_COMMAND(ID_DRAGPAD_MANUALPING, OnDragpadManualping) |
151 | ON_COMMAND(ID_DRAGPAD_REPINGALL, OnDragpadRepingAll) | 154 | ON_COMMAND(ID_DRAGPAD_REPINGALL, OnDragpadRepingAll) |
152 | ON_COMMAND(ID_DRAGPAD_REMOVEALL, OnDragpadRemoveAll) | 155 | ON_COMMAND(ID_DRAGPAD_REMOVEALL, OnDragpadRemoveAll) |
153 | ON_BN_CLICKED(IDC_REPING, OnReping) | 156 | ON_BN_CLICKED(IDC_REPING, OnReping) |
154 | ON_BN_CLICKED(IDC_REPINGALL, OnRepingall) | 157 | ON_BN_CLICKED(IDC_REPINGALL, OnRepingall) |
155 | ON_BN_CLICKED(IDC_CLEAR, OnClear) | 158 | ON_BN_CLICKED(IDC_CLEAR, OnClear) |
156 | ON_NOTIFY(LVN_INSERTITEM, IDC_HOSTLIST, OnInsertitemHostlist) | 159 | ON_NOTIFY(LVN_INSERTITEM, IDC_HOSTLIST, OnInsertitemHostlist) |
157 | ON_NOTIFY(LVN_DELETEITEM, IDC_HOSTLIST, OnDeleteitemHostlist) | 160 | ON_NOTIFY(LVN_DELETEITEM, IDC_HOSTLIST, OnDeleteitemHostlist) |
158 | ON_NOTIFY(LVN_DELETEALLITEMS, IDC_HOSTLIST, OnDeleteallitemsHostlist) | 161 | ON_NOTIFY(LVN_DELETEALLITEMS, IDC_HOSTLIST, OnDeleteallitemsHostlist) |
159 | ON_BN_CLICKED(IDC_EXIT, OnExit) | 162 | ON_BN_CLICKED(IDC_EXIT, OnExit) |
160 | ON_NOTIFY(LVN_ITEMCHANGED, IDC_HOSTLIST, OnItemchangedHostlist) | 163 | ON_NOTIFY(LVN_ITEMCHANGED, IDC_HOSTLIST, OnItemchangedHostlist) |
161 | ON_BN_CLICKED(IDC_REMOVE, OnRemove) | 164 | ON_BN_CLICKED(IDC_REMOVE, OnRemove) |
162 | ON_NOTIFY(NM_RCLICK, IDC_HOSTLIST, OnRclickHostlist) | 165 | ON_NOTIFY(NM_RCLICK, IDC_HOSTLIST, OnRclickHostlist) |
163 | ON_COMMAND(ID_HOSTLIST_REPING, OnHostListReping) | 166 | ON_COMMAND(ID_HOSTLIST_REPING, OnHostListReping) |
164 | ON_COMMAND(ID_HOSTLIST_REMOVE, OnHostListRemove) | 167 | ON_COMMAND(ID_HOSTLIST_REMOVE, OnHostListRemove) |
165 | ON_COMMAND(ID_HOSTLIST_REPINGALL, OnHostListRepingAll) | 168 | ON_COMMAND(ID_HOSTLIST_REPINGALL, OnHostListRepingAll) |
166 | ON_COMMAND(ID_HOSTLIST_REMOVEALL, OnHostListRemoveAll) | 169 | ON_COMMAND(ID_HOSTLIST_REMOVEALL, OnHostListRemoveAll) |
167 | ON_COMMAND(ID_HOSTLIST_OPENURL, OnHostListOpenURL) | 170 | ON_COMMAND(ID_HOSTLIST_OPENURL, OnHostListOpenURL) |
168 | ON_COMMAND(ID_HOSTLIST_PROPERTIES, OnHostListProperties) | 171 | ON_COMMAND(ID_HOSTLIST_PROPERTIES, OnHostListProperties) |
169 | ON_NOTIFY(NM_DBLCLK, IDC_HOSTLIST, OnDblclkHostlist) | 172 | ON_NOTIFY(NM_DBLCLK, IDC_HOSTLIST, OnDblclkHostlist) |
170 | ON_WM_CLOSE() | 173 | ON_WM_CLOSE() |
171 | ON_WM_GETMINMAXINFO() | 174 | ON_WM_GETMINMAXINFO() |
172 | ON_WM_SIZE() | 175 | ON_WM_SIZE() |
173 | ON_BN_CLICKED(ID_HELP, OnHelp) | 176 | ON_BN_CLICKED(ID_HELP, OnHelp) |
174 | ON_NOTIFY(LVN_BEGINDRAG, IDC_HOSTLIST, OnBegindragHostlist) | 177 | ON_NOTIFY(LVN_BEGINDRAG, IDC_HOSTLIST, OnBegindragHostlist) |
175 | ON_COMMAND(ID_HOSTLIST_PASTEURL, OnPasteurl) | 178 | ON_COMMAND(ID_HOSTLIST_PASTEURL, OnPasteurl) |
176 | ON_COMMAND(ID_HOSTLIST_COPYURL, OnHostlistCopyurl) | 179 | ON_COMMAND(ID_HOSTLIST_COPYURL, OnHostlistCopyurl) |
177 | ON_WM_HELPINFO() | 180 | ON_WM_HELPINFO() |
178 | ON_WM_DROPFILES() | 181 | ON_WM_DROPFILES() |
179 | ON_BN_CLICKED(IDC_ADVANCED, OnAdvanced) | 182 | ON_BN_CLICKED(IDC_ADVANCED, OnAdvanced) |
180 | ON_COMMAND(ID_ADVANCED_EXPORTLIST, OnAdvancedExportlist) | 183 | ON_COMMAND(ID_ADVANCED_EXPORTLIST, OnAdvancedExportlist) |
181 | ON_COMMAND(ID_ADVANCED_IMPORTLIST, OnAdvancedImportlist) | 184 | ON_COMMAND(ID_ADVANCED_IMPORTLIST, OnAdvancedImportlist) |
182 | ON_COMMAND(ID_DRAGPAD_PASTEURL, OnPasteurl) | 185 | ON_COMMAND(ID_DRAGPAD_PASTEURL, OnPasteurl) |
183 | ON_COMMAND(ID_DRAGPAD_ADVANCED_EXPORTLIST, OnDragpadAdvancedExportlist) | 186 | ON_COMMAND(ID_DRAGPAD_ADVANCED_EXPORTLIST, OnDragpadAdvancedExportlist) |
184 | ON_COMMAND(ID_DRAGPAD_ADVANCED_IMPORTLIST, OnDragpadAdvancedImportlist) | 187 | ON_COMMAND(ID_DRAGPAD_ADVANCED_IMPORTLIST, OnDragpadAdvancedImportlist) |
185 | //}}AFX_MSG_MAP | 188 | //}}AFX_MSG_MAP |
@@ -1140,168 +1143,207 @@ UINT cfNIF = RegisterClipboardFormat("Netscape Image Format"); | |||
1140 | } | 1143 | } |
1141 | if(pDO->IsDataAvailable(cfHTML)){ | 1144 | if(pDO->IsDataAvailable(cfHTML)){ |
1142 | HGLOBAL hg = pDO->GetGlobalData(cfHTML); | 1145 | HGLOBAL hg = pDO->GetGlobalData(cfHTML); |
1143 | ASSERT(hg); | 1146 | ASSERT(hg); |
1144 | LPCTSTR lps = (LPCTSTR)GlobalLock(hg); | 1147 | LPCTSTR lps = (LPCTSTR)GlobalLock(hg); |
1145 | ASSERT(lps); | 1148 | ASSERT(lps); |
1146 | BOOL rv = FALSE; | 1149 | BOOL rv = FALSE; |
1147 | do{ | 1150 | do{ |
1148 | static LPCTSTR v10 = "Version:1.0\r\n"; | 1151 | static LPCTSTR v10 = "Version:1.0\r\n"; |
1149 | if(memcmp(v10,lps,strlen(v10))) | 1152 | if(memcmp(v10,lps,strlen(v10))) |
1150 | break; | 1153 | break; |
1151 | static LPCTSTR strStartSelection = "StartSelection:"; | 1154 | static LPCTSTR strStartSelection = "StartSelection:"; |
1152 | static LPCTSTR strEndSelection = "EndSelection:"; | 1155 | static LPCTSTR strEndSelection = "EndSelection:"; |
1153 | static LPCTSTR strSourceURL = "SourceURL:"; | 1156 | static LPCTSTR strSourceURL = "SourceURL:"; |
1154 | LPTSTR subs = strstr(lps,strStartSelection); | 1157 | LPTSTR subs = strstr(lps,strStartSelection); |
1155 | if(!subs) | 1158 | if(!subs) |
1156 | break; | 1159 | break; |
1157 | LONG startSelection = atol(&subs[strlen(strStartSelection)]); | 1160 | LONG startSelection = atol(&subs[strlen(strStartSelection)]); |
1158 | if(!startSelection) | 1161 | if(!startSelection) |
1159 | break; | 1162 | break; |
1160 | if(!(subs=strstr(lps,strEndSelection))) | 1163 | if(!(subs=strstr(lps,strEndSelection))) |
1161 | break; | 1164 | break; |
1162 | LONG endSelection = atol(&subs[strlen(strEndSelection)]); | 1165 | LONG endSelection = atol(&subs[strlen(strEndSelection)]); |
1163 | if(!endSelection) | 1166 | if(!endSelection) |
1164 | break; | 1167 | break; |
1165 | if(!(subs=strstr(lps,strSourceURL))) | 1168 | if(!(subs=strstr(lps,strSourceURL))) |
1166 | break; | 1169 | break; |
1167 | subs = &subs[strlen(strSourceURL)]; | 1170 | subs = &subs[strlen(strSourceURL)]; |
1168 | LPTSTR eol = strchr(subs,'\r'); | 1171 | LPTSTR eol = strchr(subs,'\r'); |
1169 | if(!eol) | 1172 | if(!eol) |
1170 | break; | 1173 | break; |
1171 | (*eol)=0; | 1174 | (*eol)=0; |
1172 | CString sourceURL = subs; | 1175 | CString sourceURL = subs; |
1173 | if(!sourceURL.GetLength()) | 1176 | if(!sourceURL.GetLength()) |
1174 | break; | 1177 | break; |
1175 | TRACE0("SourceURL = "+sourceURL+"\n"); | 1178 | TRACE0("SourceURL = "+sourceURL+"\n"); |
1176 | _xferHTML* xf = new _xferHTML; | 1179 | _xferHTML* xf = new _xferHTML; |
1177 | VERIFY(xf->src.Crack(sourceURL)); | 1180 | VERIFY(xf->src.Crack(sourceURL)); |
1178 | LPTSTR htmlBuff = xf->html.GetBuffer(endSelection-startSelection+2); | 1181 | LPTSTR htmlBuff = xf->html.GetBuffer(endSelection-startSelection+2); |
1179 | ASSERT(htmlBuff); | 1182 | ASSERT(htmlBuff); |
1180 | memmove(htmlBuff,&lps[startSelection],endSelection-startSelection+1); | 1183 | memmove(htmlBuff,&lps[startSelection],endSelection-startSelection+1); |
1181 | htmlBuff[endSelection-startSelection+1]=0; | 1184 | htmlBuff[endSelection-startSelection+1]=0; |
1182 | xf->html.ReleaseBuffer(); | 1185 | xf->html.ReleaseBuffer(); |
1183 | if(bTestOnly){ | 1186 | if(bTestOnly){ |
1184 | rv = m_reHTMLURL.Match(xf->html); | 1187 | rv = m_reHTMLURL.Match(xf->html); |
1185 | delete xf; | 1188 | delete xf; |
1186 | }else{ | 1189 | }else{ |
1187 | PostMessage(WM_DNP_HTML,0,(LPARAM)xf); | 1190 | PostMessage(WM_DNP_HTML,0,(LPARAM)xf); |
1191 | rv = TRUE; | ||
1188 | } | 1192 | } |
1189 | }while(FALSE); | 1193 | }while(FALSE); |
1190 | GlobalUnlock(hg); | 1194 | GlobalUnlock(hg); |
1191 | GlobalFree(hg); | 1195 | GlobalFree(hg); |
1192 | return rv; | 1196 | return rv; |
1193 | } | 1197 | } |
1194 | if(pDO->IsDataAvailable(cfNIF)){ | 1198 | if(pDO->IsDataAvailable(cfNIF)){ |
1195 | if(!bTestOnly){ | 1199 | if(!bTestOnly){ |
1196 | HGLOBAL hg = pDO->GetGlobalData(cfNIF); | 1200 | HGLOBAL hg = pDO->GetGlobalData(cfNIF); |
1197 | ASSERT(hg); | 1201 | ASSERT(hg); |
1198 | LPVOID lpv = GlobalLock(hg); | 1202 | LPVOID lpv = GlobalLock(hg); |
1199 | ASSERT(lpv); | 1203 | ASSERT(lpv); |
1200 | struct _nif{ | 1204 | struct _nif{ |
1201 | BYTE data[0x20]; | 1205 | BYTE data[0x20]; |
1202 | DWORD m_offDescr; | 1206 | DWORD m_offDescr; |
1203 | DWORD m_offURL; | 1207 | DWORD m_offURL; |
1204 | DWORD m_offToImage; | 1208 | DWORD m_offToImage; |
1205 | } *nif = (_nif*)lpv; | 1209 | } *nif = (_nif*)lpv; |
1206 | PostMessage(WM_DNP_URLPING,0,(LPARAM)new CString((LPCTSTR)&nif->data[nif->m_offURL])); | 1210 | PostMessage(WM_DNP_URLPING,0,(LPARAM)new CString((LPCTSTR)&nif->data[nif->m_offURL])); |
1207 | GlobalUnlock(hg); | 1211 | GlobalUnlock(hg); |
1208 | GlobalFree(hg); | 1212 | GlobalFree(hg); |
1209 | } | 1213 | } |
1210 | return TRUE; | 1214 | return TRUE; |
1211 | } | 1215 | } |
1212 | if(pDO->IsDataAvailable(CF_TEXT)){ | 1216 | if(pDO->IsDataAvailable(CF_TEXT)){ |
1213 | if(!bTestOnly){ | 1217 | BOOL rv = FALSE; |
1214 | HGLOBAL hg = pDO->GetGlobalData(CF_TEXT); | 1218 | HGLOBAL hg = pDO->GetGlobalData(CF_TEXT); |
1215 | ASSERT(hg); | 1219 | ASSERT(hg); |
1216 | LPVOID lpv = GlobalLock(hg); | 1220 | LPVOID lpv = GlobalLock(hg); |
1217 | ASSERT(lpv); | 1221 | ASSERT(lpv); |
1218 | PostMessage(WM_DNP_URLPING,0,(LPARAM)new CString((LPCTSTR)lpv)); | 1222 | if(bTestOnly){ |
1219 | GlobalUnlock(hg); | 1223 | rv = m_reURL.Match((LPCSTR)lpv); |
1220 | GlobalFree(hg); | 1224 | }else{ |
1225 | CString sel = (LPCSTR)lpv; | ||
1226 | if(m_reURL.Match(sel)) { | ||
1227 | rv = TRUE; | ||
1228 | CString tmp = m_reURL.GetMatch(CRegEx::matchPostMatch); | ||
1229 | if(m_reURL.Match(tmp)) { | ||
1230 | PostMessage(WM_DNP_URLSPING,0,(LPARAM)new CString((LPCSTR)lpv)); | ||
1231 | }else{ | ||
1232 | PostMessage(WM_DNP_URLPING,0,(LPARAM)new CString((LPCTSTR)lpv)); | ||
1233 | } | ||
1234 | } | ||
1221 | } | 1235 | } |
1222 | return TRUE; | 1236 | GlobalUnlock(hg); |
1237 | GlobalFree(hg); | ||
1238 | return rv; | ||
1223 | } | 1239 | } |
1224 | return FALSE; | 1240 | return FALSE; |
1225 | } | 1241 | } |
1226 | 1242 | ||
1227 | LRESULT CDipstickDlg::OnHTMLTransfer(WPARAM wP, LPARAM lP) | 1243 | LRESULT CDipstickDlg::OnHTMLTransfer(WPARAM wP, LPARAM lP) |
1228 | { | 1244 | { |
1229 | _xferHTML* xf = (_xferHTML*)lP; | 1245 | _xferHTML* xf = (_xferHTML*)lP; |
1230 | CSelectURLsDlg su; | 1246 | CSelectURLsDlg su; |
1231 | su.m_bAdjust = m_bSmartAdjust; | 1247 | su.m_bAdjust = m_bSmartAdjust; |
1232 | su.m_bAdjustInnermost = m_bAdjustInnermost; | 1248 | su.m_bAdjustInnermost = m_bAdjustInnermost; |
1233 | BeginWaitCursor(); | 1249 | BeginWaitCursor(); |
1234 | while(m_reHTMLURL.Match(xf->html)){ | 1250 | while(m_reHTMLURL.Match(xf->html)){ |
1235 | CString url = m_reHTMLURL.GetMatch(1); | 1251 | CString url = m_reHTMLURL.GetMatch(1); |
1236 | xf->html = m_reHTMLURL.GetMatch(CRegEx::matchPostMatch); | 1252 | xf->html = m_reHTMLURL.GetMatch(CRegEx::matchPostMatch); |
1237 | if(CCrackURL::GetHostName(url)==url){ | 1253 | if(CCrackURL::GetHostName(url)==url){ |
1238 | if(m_bIgnorelative) | 1254 | if(m_bIgnorelative) |
1239 | continue; | 1255 | continue; |
1240 | CCrackURL cracked; | 1256 | CCrackURL cracked; |
1241 | VERIFY(cracked.Crack(url)); | 1257 | VERIFY(cracked.Crack(url)); |
1242 | cracked.Adjust(xf->src); | 1258 | cracked.Adjust(xf->src); |
1243 | url = cracked.Build(); | 1259 | url = cracked.Build(); |
1244 | } | 1260 | } |
1245 | if(!su.m_URLs.Find(url)) | 1261 | if(!su.m_URLs.Find(url)) |
1246 | VERIFY(su.m_URLs.AddTail(url)); | 1262 | VERIFY(su.m_URLs.AddTail(url)); |
1247 | } | 1263 | } |
1248 | EndWaitCursor(); | 1264 | EndWaitCursor(); |
1249 | delete xf; | 1265 | delete xf; |
1250 | if(su.DoModal()==IDOK){ | 1266 | if(su.DoModal()==IDOK){ |
1251 | POSITION p = su.m_URLs.GetHeadPosition(); | 1267 | POSITION p = su.m_URLs.GetHeadPosition(); |
1252 | while(p){ | 1268 | while(p){ |
1253 | CString url = su.m_URLs.GetNext(p); | 1269 | CString url = su.m_URLs.GetNext(p); |
1254 | PostMessage(WM_DNP_URLPING,0,(LPARAM)new CString(url)); | 1270 | PostMessage(WM_DNP_URLPING,0,(LPARAM)new CString(url)); |
1255 | } | 1271 | } |
1256 | } | 1272 | } |
1257 | return 0; | 1273 | return 0; |
1258 | } | 1274 | } |
1259 | 1275 | ||
1276 | LRESULT CDipstickDlg::OnURLSPing(WPARAM wP,LPARAM lP) | ||
1277 | { | ||
1278 | CString *sel = (CString*)lP; | ||
1279 | TRACE1("URLS: %s\n",(LPCTSTR)*sel); | ||
1280 | CSelectURLsDlg su; | ||
1281 | su.m_bAdjust = m_bSmartAdjust; | ||
1282 | su.m_bAdjustInnermost = m_bAdjustInnermost; | ||
1283 | BeginWaitCursor(); | ||
1284 | while(m_reURL.Match(*sel)){ | ||
1285 | CString url = m_reURL.GetMatch(CRegEx::matchMatch); | ||
1286 | (*sel) = m_reURL.GetMatch(CRegEx::matchPostMatch); | ||
1287 | if(!su.m_URLs.Find(url)) | ||
1288 | VERIFY(su.m_URLs.AddTail(url)); | ||
1289 | } | ||
1290 | EndWaitCursor(); | ||
1291 | delete sel; | ||
1292 | if(su.DoModal()==IDOK){ | ||
1293 | POSITION p = su.m_URLs.GetHeadPosition(); | ||
1294 | while(p){ | ||
1295 | CString url = su.m_URLs.GetNext(p); | ||
1296 | PostMessage(WM_DNP_URLPING,0,(LPARAM)new CString(url)); | ||
1297 | } | ||
1298 | } | ||
1299 | return 0; | ||
1300 | } | ||
1301 | |||
1260 | UINT CPingyHost::PingProc(LPVOID pParam) | 1302 | UINT CPingyHost::PingProc(LPVOID pParam) |
1261 | { | 1303 | { |
1262 | CPingyHost* pThis = (CPingyHost*)pParam; | 1304 | CPingyHost* pThis = (CPingyHost*)pParam; |
1263 | ASSERT(pThis->m_Daddy); | 1305 | ASSERT(pThis->m_Daddy); |
1264 | return pThis->DoPing(); | 1306 | return pThis->DoPing(); |
1265 | } | 1307 | } |
1266 | 1308 | ||
1267 | UINT CPingyHost::DoPing() | 1309 | UINT CPingyHost::DoPing() |
1268 | { | 1310 | { |
1269 | CSingleLock slock(&m_mutex); | 1311 | CSingleLock slock(&m_mutex); |
1270 | if(!slock.Lock(2000)){ | 1312 | if(!slock.Lock(2000)){ |
1271 | m_Status.LoadString(IDS_PS_FAILEDTOLOCK); | 1313 | m_Status.LoadString(IDS_PS_FAILEDTOLOCK); |
1272 | return 1; | 1314 | return 1; |
1273 | } | 1315 | } |
1274 | m_Pinging = TRUE; | 1316 | m_Pinging = TRUE; |
1275 | m_bToPing = FALSE; | 1317 | m_bToPing = FALSE; |
1276 | VERIFY(m_Daddy->m_eveStartup.SetEvent()); | 1318 | VERIFY(m_Daddy->m_eveStartup.SetEvent()); |
1277 | m_Daddy->PostMessage(WM_DNP_UPDATEHOSTDATA,0,(LPARAM)this); | 1319 | m_Daddy->PostMessage(WM_DNP_UPDATEHOSTDATA,0,(LPARAM)this); |
1278 | in_addr ip; | 1320 | in_addr ip; |
1279 | UINT packets, lost; | 1321 | UINT packets, lost; |
1280 | packets=lost=0; | 1322 | packets=lost=0; |
1281 | CICMP* pICMP = NULL; | 1323 | CICMP* pICMP = NULL; |
1282 | UINT dataSize = m_Daddy->m_PingSize; | 1324 | UINT dataSize = m_Daddy->m_PingSize; |
1283 | intploss = 100; | 1325 | intploss = 100; |
1284 | do{ | 1326 | do{ |
1285 | if(m_HostName.IsEmpty()){ | 1327 | if(m_HostName.IsEmpty()){ |
1286 | ip.s_addr = m_IP; | 1328 | ip.s_addr = m_IP; |
1287 | hostent *he = gethostbyaddr((char*)&ip,4,PF_INET); | 1329 | hostent *he = gethostbyaddr((char*)&ip,4,PF_INET); |
1288 | if(!he) | 1330 | if(!he) |
1289 | m_HostName.Empty(); | 1331 | m_HostName.Empty(); |
1290 | else | 1332 | else |
1291 | m_HostName = he->h_name; | 1333 | m_HostName = he->h_name; |
1292 | }else{ | 1334 | }else{ |
1293 | hostent *he = gethostbyname(m_HostName); | 1335 | hostent *he = gethostbyname(m_HostName); |
1294 | if(!he){ | 1336 | if(!he){ |
1295 | m_Status.LoadString(IDS_PS_FAILEDTORESOLVE); | 1337 | m_Status.LoadString(IDS_PS_FAILEDTORESOLVE); |
1296 | m_IP = 0; | 1338 | m_IP = 0; |
1297 | break; | 1339 | break; |
1298 | } | 1340 | } |
1299 | memmove(&ip.s_addr,he->h_addr,sizeof(ip.s_addr)); | 1341 | memmove(&ip.s_addr,he->h_addr,sizeof(ip.s_addr)); |
1300 | m_IP = ip.s_addr; | 1342 | m_IP = ip.s_addr; |
1301 | } | 1343 | } |
1302 | pICMP = CICMP::CreateICMP(); | 1344 | pICMP = CICMP::CreateICMP(); |
1303 | if(!(pICMP && pICMP->Initialize())){ | 1345 | if(!(pICMP && pICMP->Initialize())){ |
1304 | m_Status.LoadString(IDS_PS_UNABLETOICMP); | 1346 | m_Status.LoadString(IDS_PS_UNABLETOICMP); |
1305 | break; | 1347 | break; |
1306 | } | 1348 | } |
1307 | m_Daddy->PostMessage(WM_DNP_UPDATEHOSTDATA,0,(LPARAM)this); | 1349 | m_Daddy->PostMessage(WM_DNP_UPDATEHOSTDATA,0,(LPARAM)this); |
@@ -1538,49 +1580,49 @@ BOOL CDipstickDlg::ExportLocations(LPCTSTR file) | |||
1538 | while(p){ | 1580 | while(p){ |
1539 | CPingyHost *host = m_Hosts.GetNext(p); | 1581 | CPingyHost *host = m_Hosts.GetNext(p); |
1540 | ASSERT(host); | 1582 | ASSERT(host); |
1541 | CString ph; | 1583 | CString ph; |
1542 | ph.Format("\"%s\",%s,%s,%lu,%lu,%lu,%d%%\n",host->m_URL,host->m_HostName,inet_ntoa(*(in_addr*)&host->m_IP), | 1584 | ph.Format("\"%s\",%s,%s,%lu,%lu,%lu,%d%%\n",host->m_URL,host->m_HostName,inet_ntoa(*(in_addr*)&host->m_IP), |
1543 | host->m_MinRTT,host->m_AvgRTT,host->m_MaxRTT,host->m_Packetloss | 1585 | host->m_MinRTT,host->m_AvgRTT,host->m_MaxRTT,host->m_Packetloss |
1544 | ); | 1586 | ); |
1545 | f.WriteString(ph); | 1587 | f.WriteString(ph); |
1546 | } | 1588 | } |
1547 | f.Close(); | 1589 | f.Close(); |
1548 | }catch(CException* e){ | 1590 | }catch(CException* e){ |
1549 | TRACE0("Failed to export URLList\n"); | 1591 | TRACE0("Failed to export URLList\n"); |
1550 | e->Delete(); | 1592 | e->Delete(); |
1551 | return FALSE; | 1593 | return FALSE; |
1552 | } | 1594 | } |
1553 | return TRUE; | 1595 | return TRUE; |
1554 | } | 1596 | } |
1555 | 1597 | ||
1556 | void CDipstickDlg::OnDragpadAdvancedExportlist() | 1598 | void CDipstickDlg::OnDragpadAdvancedExportlist() |
1557 | { | 1599 | { |
1558 | OnAdvancedExportlist(); | 1600 | OnAdvancedExportlist(); |
1559 | } | 1601 | } |
1560 | 1602 | ||
1561 | void CDipstickDlg::OnDragpadAdvancedImportlist() | 1603 | void CDipstickDlg::OnDragpadAdvancedImportlist() |
1562 | { | 1604 | { |
1563 | OnAdvancedImportlist(); | 1605 | OnAdvancedImportlist(); |
1564 | } | 1606 | } |
1565 | 1607 | ||
1566 | void CPingyHost::Suicide() | 1608 | void CPingyHost::Suicide() |
1567 | { | 1609 | { |
1568 | CSingleLock sl(&m_mutex); | 1610 | CSingleLock sl(&m_mutex); |
1569 | if(sl.Lock(10)){ | 1611 | if(sl.Lock(10)){ |
1570 | sl.Unlock(); | 1612 | sl.Unlock(); |
1571 | delete this; | 1613 | delete this; |
1572 | }else{ | 1614 | }else{ |
1573 | if(!AfxBeginThread(CPingyHost::SuicideProc,this)) | 1615 | if(!AfxBeginThread(CPingyHost::SuicideProc,this)) |
1574 | ASSERT(FALSE); | 1616 | ASSERT(FALSE); |
1575 | } | 1617 | } |
1576 | } | 1618 | } |
1577 | 1619 | ||
1578 | UINT CPingyHost::SuicideProc(LPVOID pParam) | 1620 | UINT CPingyHost::SuicideProc(LPVOID pParam) |
1579 | { | 1621 | { |
1580 | CPingyHost* pThis = (CPingyHost*)pParam; | 1622 | CPingyHost* pThis = (CPingyHost*)pParam; |
1581 | CSingleLock sl(&pThis->m_mutex); | 1623 | CSingleLock sl(&pThis->m_mutex); |
1582 | sl.Lock(); | 1624 | sl.Lock(); |
1583 | VERIFY(sl.Unlock()); | 1625 | VERIFY(sl.Unlock()); |
1584 | delete pThis; | 1626 | delete pThis; |
1585 | return 0; | 1627 | return 0; |
1586 | } | 1628 | } \ No newline at end of file |