author | Michael Krelin <hacker@klever.net> | 2006-02-02 23:07:50 (UTC) |
---|---|---|
committer | Michael Krelin <hacker@klever.net> | 2006-02-02 23:07:50 (UTC) |
commit | 39bb4331674cc77560a546f4f9b14b143603d4be (patch) (unidiff) | |
tree | fbbc1006c655888a5483ddd359c52b863e7a27ab | |
parent | fedc32eb7d20e5278a2125ead3ed125dc63b5746 (diff) | |
download | pumpkin-39bb4331674cc77560a546f4f9b14b143603d4be.zip pumpkin-39bb4331674cc77560a546f4f9b14b143603d4be.tar.gz pumpkin-39bb4331674cc77560a546f4f9b14b143603d4be.tar.bz2 |
- version bump to 2.7
- year bump to 2006
- ip-based access control
- server switchable off
- logging to file
git-svn-id: http://svn.klever.net/kin/pumpkin/trunk@144 fe716a7a-6dde-0310-88d9-d003556173a8
-rw-r--r-- | ACLTargetCombo.cpp | 85 | ||||
-rw-r--r-- | ACLTargetCombo.h | 42 | ||||
-rw-r--r-- | COPYING | 2 | ||||
-rw-r--r-- | PropsACL.cpp | 290 | ||||
-rw-r--r-- | PropsACL.h | 71 | ||||
-rw-r--r-- | PropsServer.cpp | 19 | ||||
-rw-r--r-- | PropsServer.h | 3 | ||||
-rw-r--r-- | PumpKINDlg.cpp | 109 | ||||
-rw-r--r-- | PumpKINDlg.h | 178 | ||||
-rw-r--r-- | Trayer.cpp | 7 | ||||
-rw-r--r-- | Trayer.h | 1 | ||||
-rw-r--r-- | help/pumpkin.cnt | 1 | ||||
-rw-r--r-- | help/pumpkin.rtf | 15 | ||||
-rw-r--r-- | help/pumpkin.xml | 17 | ||||
-rw-r--r-- | install/Install.clw | 35 | ||||
-rw-r--r-- | install/install.cpp | 2 | ||||
-rw-r--r-- | install/install.rc | 10 | ||||
-rw-r--r-- | pumpkin.clw | 78 | ||||
-rw-r--r-- | pumpkin.mak | 362 | ||||
-rw-r--r-- | pumpkin.rc | 169 | ||||
-rw-r--r-- | res/down.ico | bin | 0 -> 766 bytes | |||
-rw-r--r-- | res/remove.ico | bin | 0 -> 766 bytes | |||
-rw-r--r-- | res/up.ico | bin | 0 -> 766 bytes | |||
-rw-r--r-- | resource.h | 29 |
24 files changed, 1394 insertions, 131 deletions
diff --git a/ACLTargetCombo.cpp b/ACLTargetCombo.cpp new file mode 100644 index 0000000..cdbd075 --- a/dev/null +++ b/ACLTargetCombo.cpp | |||
@@ -0,0 +1,85 @@ | |||
1 | // ACLTargetCombo.cpp : implementation file | ||
2 | // | ||
3 | |||
4 | #include "stdafx.h" | ||
5 | #include "PumpKIN.h" | ||
6 | #include "PumpKINDlg.h" | ||
7 | #include "ACLTargetCombo.h" | ||
8 | |||
9 | #ifdef _DEBUG | ||
10 | #define new DEBUG_NEW | ||
11 | #undef THIS_FILE | ||
12 | static char THIS_FILE[] = __FILE__; | ||
13 | #endif | ||
14 | |||
15 | ///////////////////////////////////////////////////////////////////////////// | ||
16 | // CACLTargetCombo | ||
17 | |||
18 | CACLTargetCombo::CACLTargetCombo() | ||
19 | : m_op(-1) | ||
20 | { | ||
21 | } | ||
22 | |||
23 | CACLTargetCombo::~CACLTargetCombo() | ||
24 | { | ||
25 | } | ||
26 | |||
27 | |||
28 | BEGIN_MESSAGE_MAP(CACLTargetCombo, CComboBox) | ||
29 | //{{AFX_MSG_MAP(CACLTargetCombo) | ||
30 | // NOTE - the ClassWizard will add and remove mapping macros here. | ||
31 | //}}AFX_MSG_MAP | ||
32 | END_MESSAGE_MAP() | ||
33 | |||
34 | ///////////////////////////////////////////////////////////////////////////// | ||
35 | // CACLTargetCombo message handlers | ||
36 | |||
37 | void CACLTargetCombo::SetOp(int op) | ||
38 | { | ||
39 | m_op=op; | ||
40 | ResetContent(); | ||
41 | switch(op) { | ||
42 | case tftp::opRRQ: | ||
43 | m_tmap.RemoveAll(); | ||
44 | SetItemData(m_tmap[acl_rule::rrqNone]=AddString("fallback to global"),acl_rule::rrqNone); | ||
45 | SetItemData(m_tmap[acl_rule::rrqDeny]=AddString("deny access"),acl_rule::rrqDeny); | ||
46 | SetItemData(m_tmap[acl_rule::rrqPrompt]=AddString("prompt"),acl_rule::rrqPrompt); | ||
47 | SetItemData(m_tmap[acl_rule::rrqGrant]=AddString("grant access"),CPumpKINDlg::rrqGrant); | ||
48 | SetCurSel(0); | ||
49 | EnableWindow(TRUE); | ||
50 | break; | ||
51 | case tftp::opWRQ: | ||
52 | m_tmap.RemoveAll(); | ||
53 | SetItemData(m_tmap[acl_rule::wrqNone]=AddString("fallback to global"),acl_rule::wrqNone); | ||
54 | SetItemData(m_tmap[acl_rule::wrqDeny]=AddString("deny access"),acl_rule::wrqDeny); | ||
55 | SetItemData(m_tmap[acl_rule::wrqPrompt]=AddString("prompt"),acl_rule::wrqPrompt); | ||
56 | SetItemData(m_tmap[acl_rule::wrqPromptIfExists]=AddString("prompt if file exists"),acl_rule::wrqPromptIfExists); | ||
57 | SetItemData(m_tmap[acl_rule::wrqGrant]=AddString("grant access"),acl_rule::wrqGrant); | ||
58 | SetCurSel(0); | ||
59 | EnableWindow(TRUE); | ||
60 | break; | ||
61 | default: | ||
62 | EnableWindow(FALSE); | ||
63 | break; | ||
64 | } | ||
65 | } | ||
66 | |||
67 | int CACLTargetCombo::GetTarget() | ||
68 | { | ||
69 | int cs=GetCurSel(); | ||
70 | if(cs==CB_ERR) | ||
71 | return -1; | ||
72 | return GetItemData(cs); | ||
73 | } | ||
74 | |||
75 | void CACLTargetCombo::SetTarget(int t,int op) | ||
76 | { | ||
77 | if(op>=0) | ||
78 | SetOp(op); | ||
79 | ASSERT(m_op>=0); | ||
80 | int i; | ||
81 | if(m_tmap.Lookup(t,i)) | ||
82 | SetCurSel(i); | ||
83 | else | ||
84 | SetCurSel(0); | ||
85 | } | ||
diff --git a/ACLTargetCombo.h b/ACLTargetCombo.h new file mode 100644 index 0000000..ef7baef --- a/dev/null +++ b/ACLTargetCombo.h | |||
@@ -0,0 +1,42 @@ | |||
1 | // ACLTargetCombo.h : header file | ||
2 | // | ||
3 | |||
4 | ///////////////////////////////////////////////////////////////////////////// | ||
5 | // CACLTargetCombo window | ||
6 | |||
7 | class CACLTargetCombo : public CComboBox | ||
8 | { | ||
9 | // Construction | ||
10 | public: | ||
11 | void SetTarget(int t,int op=-1); | ||
12 | int GetTarget(); | ||
13 | void SetOp(int op); | ||
14 | int m_op; | ||
15 | CACLTargetCombo(); | ||
16 | |||
17 | // Attributes | ||
18 | public: | ||
19 | CMap<int,int,int,int> m_tmap; | ||
20 | |||
21 | // Operations | ||
22 | public: | ||
23 | |||
24 | // Overrides | ||
25 | // ClassWizard generated virtual function overrides | ||
26 | //{{AFX_VIRTUAL(CACLTargetCombo) | ||
27 | //}}AFX_VIRTUAL | ||
28 | |||
29 | // Implementation | ||
30 | public: | ||
31 | virtual ~CACLTargetCombo(); | ||
32 | |||
33 | // Generated message map functions | ||
34 | protected: | ||
35 | //{{AFX_MSG(CACLTargetCombo) | ||
36 | // NOTE - the ClassWizard will add and remove member functions here. | ||
37 | //}}AFX_MSG | ||
38 | |||
39 | DECLARE_MESSAGE_MAP() | ||
40 | }; | ||
41 | |||
42 | ///////////////////////////////////////////////////////////////////////////// | ||
@@ -1,13 +1,13 @@ | |||
1 | Copyright (c) 1997-2005 Klever Group (http://www.klever.net/) | 1 | Copyright (c) 1997-2006 Klever Group (http://www.klever.net/) |
2 | 2 | ||
3 | Permission is hereby granted, free of charge, to any person obtaining a copy of | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy of |
4 | this software and associated documentation files (the "Software"), to deal in | 4 | this software and associated documentation files (the "Software"), to deal in |
5 | the Software without restriction, including without limitation the rights to | 5 | the Software without restriction, including without limitation the rights to |
6 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies | 6 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies |
7 | of the Software, and to permit persons to whom the Software is furnished to do | 7 | of the Software, and to permit persons to whom the Software is furnished to do |
8 | so, subject to the following conditions: | 8 | so, subject to the following conditions: |
9 | 9 | ||
10 | The above copyright notice and this permission notice shall be included in all | 10 | The above copyright notice and this permission notice shall be included in all |
11 | copies or substantial portions of the Software. | 11 | copies or substantial portions of the Software. |
12 | 12 | ||
13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
diff --git a/PropsACL.cpp b/PropsACL.cpp new file mode 100644 index 0000000..6d918ad --- a/dev/null +++ b/PropsACL.cpp | |||
@@ -0,0 +1,290 @@ | |||
1 | // PropsACL.cpp : implementation file | ||
2 | // | ||
3 | |||
4 | #include "stdafx.h" | ||
5 | #include "PumpKIN.h" | ||
6 | #include "PumpKINDlg.h" | ||
7 | #include "ACLTargetCombo.h" | ||
8 | #include "PropsACL.h" | ||
9 | |||
10 | #ifdef _DEBUG | ||
11 | #define new DEBUG_NEW | ||
12 | #undef THIS_FILE | ||
13 | static char THIS_FILE[] = __FILE__; | ||
14 | #endif | ||
15 | |||
16 | ///////////////////////////////////////////////////////////////////////////// | ||
17 | // CPropsACL property page | ||
18 | |||
19 | IMPLEMENT_DYNCREATE(CPropsACL, CPropertyPage) | ||
20 | |||
21 | CPropsACL::CPropsACL() : CPropertyPage(CPropsACL::IDD) | ||
22 | { | ||
23 | //{{AFX_DATA_INIT(CPropsACL) | ||
24 | //}}AFX_DATA_INIT | ||
25 | } | ||
26 | |||
27 | CPropsACL::~CPropsACL() | ||
28 | { | ||
29 | } | ||
30 | |||
31 | void CPropsACL::DoDataExchange(CDataExchange* pDX) | ||
32 | { | ||
33 | CPropertyPage::DoDataExchange(pDX); | ||
34 | //{{AFX_DATA_MAP(CPropsACL) | ||
35 | DDX_Control(pDX, IDC_ACL_REPLACE, m_ReplaceCtl); | ||
36 | DDX_Control(pDX, IDC_ACL_NETMASK, m_NetmaskCtl); | ||
37 | DDX_Control(pDX, IDC_ACL_XFER, m_XferCtl); | ||
38 | DDX_Control(pDX, IDC_ACL_UP, m_UpCtl); | ||
39 | DDX_Control(pDX, IDC_ACL_RULE, m_RuleCtl); | ||
40 | DDX_Control(pDX, IDC_ACL_REMOVE, m_RemoveCtl); | ||
41 | DDX_Control(pDX, IDC_ACL_LIST, m_ListCtl); | ||
42 | DDX_Control(pDX, IDC_ACL_DOWN, m_DownCtl); | ||
43 | DDX_Control(pDX, IDC_ACL_ADDR, m_AddrCtl); | ||
44 | DDX_Control(pDX, IDC_ACL_ADD, m_AddCtl); | ||
45 | //}}AFX_DATA_MAP | ||
46 | } | ||
47 | |||
48 | |||
49 | BEGIN_MESSAGE_MAP(CPropsACL, CPropertyPage) | ||
50 | //{{AFX_MSG_MAP(CPropsACL) | ||
51 | ON_CBN_SELCHANGE(IDC_ACL_XFER, OnSelchangeAclXfer) | ||
52 | ON_NOTIFY(LVN_ITEMCHANGED, IDC_ACL_LIST, OnItemchangedAclList) | ||
53 | ON_BN_CLICKED(IDC_ACL_ADD, OnAclAdd) | ||
54 | ON_BN_CLICKED(IDC_ACL_REPLACE, OnAclReplace) | ||
55 | ON_BN_CLICKED(IDC_ACL_REMOVE, OnAclRemove) | ||
56 | ON_BN_CLICKED(IDC_ACL_UP, OnAclUp) | ||
57 | ON_BN_CLICKED(IDC_ACL_DOWN, OnAclDown) | ||
58 | //}}AFX_MSG_MAP | ||
59 | END_MESSAGE_MAP() | ||
60 | |||
61 | ///////////////////////////////////////////////////////////////////////////// | ||
62 | // CPropsACL message handlers | ||
63 | |||
64 | BOOL CPropsACL::OnInitDialog() | ||
65 | { | ||
66 | CPropertyPage::OnInitDialog(); | ||
67 | |||
68 | m_FocusedRule=-1; | ||
69 | |||
70 | m_Images.Create(16,16,TRUE,2,1); | ||
71 | m_iRRQ = m_Images.Add(AfxGetApp()->LoadIcon(IDI_RRQ)); | ||
72 | m_iWRQ = m_Images.Add(AfxGetApp()->LoadIcon(IDI_WRQ)); | ||
73 | ASSERT(m_iRRQ>=0); ASSERT(m_iWRQ>=0); | ||
74 | m_ListCtl.SetImageList(&m_Images,LVSIL_NORMAL); | ||
75 | m_ListCtl.SetImageList(&m_Images,LVSIL_SMALL); | ||
76 | m_ListCtl.SetImageList(&m_Images,LVSIL_STATE); | ||
77 | |||
78 | CRect lrc; m_ListCtl.GetClientRect(&lrc); | ||
79 | long lrcw3 = lrc.Width()/3; | ||
80 | m_ListCtl.InsertColumn(0,"IP",LVCFMT_LEFT,lrcw3,subitemIP); | ||
81 | m_ListCtl.InsertColumn(1,"netmask",LVCFMT_LEFT,lrcw3,subitemNM); | ||
82 | m_ListCtl.InsertColumn(2,"action",LVCFMT_LEFT,lrc.Width()-lrcw3*2,subitemAction); | ||
83 | |||
84 | m_UpCtl.SetIcon(AfxGetApp()->LoadIcon(IDI_UP)); | ||
85 | m_DownCtl.SetIcon(AfxGetApp()->LoadIcon(IDI_DOWN)); | ||
86 | m_RemoveCtl.SetIcon(AfxGetApp()->LoadIcon(IDI_REMOVE)); | ||
87 | |||
88 | m_XferCtl.SetItemData(0,tftp::opRRQ); | ||
89 | m_XferCtl.SetItemData(1,tftp::opWRQ); | ||
90 | |||
91 | m_AddrCtl.SetWindowText("192.168.0.0"); | ||
92 | m_NetmaskCtl.SetWindowText("255.255.255.0"); | ||
93 | |||
94 | for(int i=0;i<m_rulist.GetSize();++i) { | ||
95 | m_ListCtl.InsertItem(i,0); | ||
96 | SetListRule(i,m_rulist[i]); | ||
97 | } | ||
98 | |||
99 | UpdateControls(); | ||
100 | |||
101 | return TRUE; // return TRUE unless you set the focus to a control | ||
102 | // EXCEPTION: OCX Property Pages should return FALSE | ||
103 | } | ||
104 | |||
105 | void CPropsACL::OnSelchangeAclXfer() { | ||
106 | int cs = m_XferCtl.GetCurSel(); | ||
107 | if(cs==CB_ERR) { | ||
108 | m_RuleCtl.EnableWindow(FALSE); | ||
109 | }else{ | ||
110 | int rq = m_XferCtl.GetItemData(cs); | ||
111 | m_RuleCtl.SetOp(rq); | ||
112 | } | ||
113 | } | ||
114 | |||
115 | void CPropsACL::OnItemchangedAclList(NMHDR* pNMHDR, LRESULT* pResult) { | ||
116 | NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR; | ||
117 | if( | ||
118 | (pNMListView->uChanged&LVIF_STATE) | ||
119 | && | ||
120 | (pNMListView->uNewState&LVIS_FOCUSED)!=(pNMListView->uOldState&LVIS_FOCUSED) | ||
121 | && | ||
122 | pNMListView->iItem>=0 && pNMListView->iItem<m_ListCtl.GetItemCount() | ||
123 | ){ | ||
124 | if(pNMListView->uNewState&LVIS_FOCUSED) | ||
125 | m_FocusedRule=pNMListView->iItem; | ||
126 | else if(pNMListView->iItem==m_FocusedRule) | ||
127 | m_FocusedRule=-1; | ||
128 | UpdateControls(); | ||
129 | } | ||
130 | |||
131 | *pResult = 0; | ||
132 | } | ||
133 | |||
134 | void CPropsACL::UpdateControls() { | ||
135 | if(m_FocusedRule>=m_rulist.GetSize()) | ||
136 | m_FocusedRule=-1; | ||
137 | if(m_FocusedRule>=0) { | ||
138 | m_UpCtl.EnableWindow(m_FocusedRule>0); | ||
139 | m_DownCtl.EnableWindow(m_FocusedRule<(m_ListCtl.GetItemCount()-1)); | ||
140 | acl_rule r; | ||
141 | GetListRule(m_FocusedRule,r); | ||
142 | SetRule(r); | ||
143 | m_AddCtl.EnableWindow(TRUE); | ||
144 | m_ReplaceCtl.EnableWindow(TRUE); | ||
145 | }else{ | ||
146 | OnSelchangeAclXfer(); | ||
147 | m_AddCtl.EnableWindow(TRUE); | ||
148 | m_ReplaceCtl.EnableWindow(FALSE); | ||
149 | } | ||
150 | m_RemoveCtl.EnableWindow(m_ListCtl.GetSelectedCount()!=0 || m_FocusedRule>=0); | ||
151 | } | ||
152 | |||
153 | void CPropsACL::OnAclAdd() { | ||
154 | acl_rule r; | ||
155 | UINT err=GetRule(r); | ||
156 | if(err) { | ||
157 | AfxMessageBox(err,MB_OK); | ||
158 | }else{ | ||
159 | int i=m_rulist.AppendRule(r); | ||
160 | ASSERT(r.op==acl_rule::opRRQ || r.op==acl_rule::opWRQ); | ||
161 | m_ListCtl.InsertItem(i,0); | ||
162 | SetListRule(i,r); | ||
163 | } | ||
164 | } | ||
165 | |||
166 | void CPropsACL::OnAclReplace() { | ||
167 | acl_rule r; | ||
168 | UINT err=GetRule(r); | ||
169 | if(err) { | ||
170 | AfxMessageBox(err,MB_OK); | ||
171 | }else{ | ||
172 | ASSERT(m_FocusedRule>=0); | ||
173 | m_rulist[m_FocusedRule]=r; | ||
174 | SetListRule(m_FocusedRule,r); | ||
175 | } | ||
176 | } | ||
177 | |||
178 | int CPropsACL::GetOp() { | ||
179 | int cs=m_XferCtl.GetCurSel(); | ||
180 | if(cs==CB_ERR) | ||
181 | return -1; | ||
182 | else | ||
183 | return m_XferCtl.GetItemData(cs); | ||
184 | } | ||
185 | |||
186 | void CPropsACL::SetOp(int op) { | ||
187 | int os=m_XferCtl.GetCount(); | ||
188 | for(int i=0;i<os;++i) { | ||
189 | if(m_XferCtl.GetItemData(i)==op) { | ||
190 | m_XferCtl.SetCurSel(i); | ||
191 | return; | ||
192 | } | ||
193 | } | ||
194 | m_XferCtl.SetCurSel(-1); | ||
195 | } | ||
196 | |||
197 | void CPropsACL::SetListRule(int i,acl_rule& r) { | ||
198 | m_ListCtl.SetItem(i,subitemIP,LVIF_TEXT|LVIF_IMAGE,r.str_addr(),(r.op==acl_rule::opRRQ)?m_iRRQ:m_iWRQ,0,0,0); | ||
199 | m_ListCtl.SetItemText(i,subitemNM,r.str_mask()); | ||
200 | m_ListCtl.SetItemText(i,subitemAction,r.str_target()); | ||
201 | } | ||
202 | |||
203 | void CPropsACL::SetRule(acl_rule& r) { | ||
204 | SetOp(r.op); | ||
205 | m_AddrCtl.SetWindowText(r.str_addr()); | ||
206 | m_NetmaskCtl.SetWindowText(r.str_mask()); | ||
207 | m_RuleCtl.SetTarget(r.target,r.op); | ||
208 | } | ||
209 | |||
210 | void CPropsACL::GetListRule(int i,acl_rule& r) { | ||
211 | r = m_rulist[i]; | ||
212 | } | ||
213 | |||
214 | UINT CPropsACL::GetRule(acl_rule& r) | ||
215 | { | ||
216 | UINT rv=0; | ||
217 | r.op=GetOp(); | ||
218 | if(r.op!=acl_rule::opRRQ && r.op!=acl_rule::opWRQ) | ||
219 | rv=IDS_NO_XFER_OP; | ||
220 | else{ | ||
221 | CString t; | ||
222 | m_AddrCtl.GetWindowText(t); | ||
223 | if(t.IsEmpty() || ( (r.addr=inet_addr((LPCSTR)t))==INADDR_NONE && t!="255.255.255.255") ) | ||
224 | rv=IDS_INVALID_IP; | ||
225 | else{ | ||
226 | m_NetmaskCtl.GetWindowText(t); | ||
227 | if(t.IsEmpty() || ( (r.mask=inet_addr((LPCSTR)t))==INADDR_NONE && t!="255.255.255.255") ) | ||
228 | rv=IDS_INVALID_NETMASK; | ||
229 | else{ | ||
230 | r.target=m_RuleCtl.GetTarget(); | ||
231 | if(!r.IsValid()) | ||
232 | rv=IDS_INVALID_RULE; | ||
233 | } | ||
234 | } | ||
235 | } | ||
236 | return rv; | ||
237 | } | ||
238 | |||
239 | void CPropsACL::OnAclRemove() { | ||
240 | ASSERT(m_FocusedRule>=0); | ||
241 | int fr=m_FocusedRule; | ||
242 | if(fr<0 || fr>=m_rulist.GetSize()) return; | ||
243 | m_rulist.DeleteRule(fr); | ||
244 | m_ListCtl.DeleteItem(fr); | ||
245 | ASSERT(m_rulist.GetSize()==m_ListCtl.GetItemCount()); | ||
246 | if(fr>=m_rulist.GetSize()) { | ||
247 | if(fr>0) { | ||
248 | fr=m_rulist.GetSize()-1; | ||
249 | } | ||
250 | }else | ||
251 | fr=-1; | ||
252 | if(fr>0) | ||
253 | SetListFocusSelection(fr); | ||
254 | m_ListCtl.SetFocus(); | ||
255 | } | ||
256 | |||
257 | void CPropsACL::OnAclUp() { | ||
258 | int s=m_FocusedRule; | ||
259 | if(s<=0) return; | ||
260 | int d=s-1; | ||
261 | acl_rule r=m_rulist[s]; | ||
262 | m_rulist[s]=m_rulist[d]; | ||
263 | m_rulist[d]=r; | ||
264 | SetListRule(d,m_rulist[d]); | ||
265 | SetListRule(s,m_rulist[s]); | ||
266 | SetListFocusSelection(d); | ||
267 | m_ListCtl.SetFocus(); | ||
268 | } | ||
269 | |||
270 | void CPropsACL::OnAclDown() { | ||
271 | int s=m_FocusedRule; | ||
272 | int d=s+1; | ||
273 | if(s<0 || d>=m_rulist.GetSize()) return; | ||
274 | acl_rule r=m_rulist[s]; | ||
275 | m_rulist[s]=m_rulist[d]; | ||
276 | m_rulist[d]=r; | ||
277 | SetListRule(d,m_rulist[d]); | ||
278 | SetListRule(s,m_rulist[s]); | ||
279 | SetListFocusSelection(d); | ||
280 | m_ListCtl.SetFocus(); | ||
281 | } | ||
282 | |||
283 | void CPropsACL::SetListFocusSelection(int i) { | ||
284 | int s=m_ListCtl.GetItemCount(); | ||
285 | for(int t=0;t<s;++t) | ||
286 | if(t!=i) | ||
287 | m_ListCtl.SetItemState(t,0,LVIS_FOCUSED|LVIS_SELECTED); | ||
288 | m_ListCtl.SetItemState(i,LVIS_FOCUSED|LVIS_SELECTED,LVIS_FOCUSED|LVIS_SELECTED); | ||
289 | } | ||
290 | |||
diff --git a/PropsACL.h b/PropsACL.h new file mode 100644 index 0000000..c8773e7 --- a/dev/null +++ b/PropsACL.h | |||
@@ -0,0 +1,71 @@ | |||
1 | // PropsACL.h : header file | ||
2 | // | ||
3 | |||
4 | ///////////////////////////////////////////////////////////////////////////// | ||
5 | // CPropsACL dialog | ||
6 | |||
7 | class CPropsACL : public CPropertyPage | ||
8 | { | ||
9 | DECLARE_DYNCREATE(CPropsACL) | ||
10 | |||
11 | // Construction | ||
12 | public: | ||
13 | void SetListFocusSelection(int i); | ||
14 | UINT GetRule(acl_rule& r); | ||
15 | void GetListRule(int i,acl_rule& r); | ||
16 | void SetOp(int op); | ||
17 | void SetRule(acl_rule& r); | ||
18 | void SetListRule(int i,acl_rule& r); | ||
19 | int m_iWRQ; | ||
20 | int m_iRRQ; | ||
21 | CImageList m_Images; | ||
22 | int GetOp(); | ||
23 | acl_rules_t m_rulist; | ||
24 | int m_FocusedRule; | ||
25 | void UpdateControls(); | ||
26 | enum { | ||
27 | subitemIP=0, subitemNM, subitemAction | ||
28 | }; | ||
29 | |||
30 | CPropsACL(); | ||
31 | ~CPropsACL(); | ||
32 | |||
33 | // Dialog Data | ||
34 | //{{AFX_DATA(CPropsACL) | ||
35 | enum { IDD = IDD_PROPS_ACL }; | ||
36 | CButtonm_ReplaceCtl; | ||
37 | CEditm_NetmaskCtl; | ||
38 | CComboBoxm_XferCtl; | ||
39 | CButtonm_UpCtl; | ||
40 | CACLTargetCombom_RuleCtl; | ||
41 | CButtonm_RemoveCtl; | ||
42 | CListCtrlm_ListCtl; | ||
43 | CButtonm_DownCtl; | ||
44 | CEditm_AddrCtl; | ||
45 | CButtonm_AddCtl; | ||
46 | //}}AFX_DATA | ||
47 | |||
48 | |||
49 | // Overrides | ||
50 | // ClassWizard generate virtual function overrides | ||
51 | //{{AFX_VIRTUAL(CPropsACL) | ||
52 | protected: | ||
53 | virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support | ||
54 | //}}AFX_VIRTUAL | ||
55 | |||
56 | // Implementation | ||
57 | protected: | ||
58 | // Generated message map functions | ||
59 | //{{AFX_MSG(CPropsACL) | ||
60 | virtual BOOL OnInitDialog(); | ||
61 | afx_msg void OnSelchangeAclXfer(); | ||
62 | afx_msg void OnItemchangedAclList(NMHDR* pNMHDR, LRESULT* pResult); | ||
63 | afx_msg void OnAclAdd(); | ||
64 | afx_msg void OnAclReplace(); | ||
65 | afx_msg void OnAclRemove(); | ||
66 | afx_msg void OnAclUp(); | ||
67 | afx_msg void OnAclDown(); | ||
68 | //}}AFX_MSG | ||
69 | DECLARE_MESSAGE_MAP() | ||
70 | |||
71 | }; | ||
diff --git a/PropsServer.cpp b/PropsServer.cpp index 6f1e08c..a3948e0 100644 --- a/PropsServer.cpp +++ b/PropsServer.cpp | |||
@@ -14,66 +14,85 @@ static char THIS_FILE[] = __FILE__; | |||
14 | ///////////////////////////////////////////////////////////////////////////// | 14 | ///////////////////////////////////////////////////////////////////////////// |
15 | // CPropsServer property page | 15 | // CPropsServer property page |
16 | 16 | ||
17 | IMPLEMENT_DYNCREATE(CPropsServer, CPropertyPage) | 17 | IMPLEMENT_DYNCREATE(CPropsServer, CPropertyPage) |
18 | 18 | ||
19 | CPropsServer::CPropsServer() : CPropertyPage(CPropsServer::IDD) | 19 | CPropsServer::CPropsServer() : CPropertyPage(CPropsServer::IDD) |
20 | { | 20 | { |
21 | //{{AFX_DATA_INIT(CPropsServer) | 21 | //{{AFX_DATA_INIT(CPropsServer) |
22 | m_RRQMode = -1; | 22 | m_RRQMode = -1; |
23 | m_TFTPRoot = _T(""); | 23 | m_TFTPRoot = _T(""); |
24 | m_TFTPSubdirs = FALSE; | 24 | m_TFTPSubdirs = FALSE; |
25 | m_WRQMode = -1; | 25 | m_WRQMode = -1; |
26 | m_LogFile = _T(""); | ||
26 | //}}AFX_DATA_INIT | 27 | //}}AFX_DATA_INIT |
27 | } | 28 | } |
28 | 29 | ||
29 | CPropsServer::~CPropsServer() | 30 | CPropsServer::~CPropsServer() |
30 | { | 31 | { |
31 | } | 32 | } |
32 | 33 | ||
33 | void CPropsServer::DoDataExchange(CDataExchange* pDX) | 34 | void CPropsServer::DoDataExchange(CDataExchange* pDX) |
34 | { | 35 | { |
35 | CPropertyPage::DoDataExchange(pDX); | 36 | CPropertyPage::DoDataExchange(pDX); |
36 | //{{AFX_DATA_MAP(CPropsServer) | 37 | //{{AFX_DATA_MAP(CPropsServer) |
38 | DDX_Control(pDX, IDC_LOGFILE_BROWSE, m_LogBrowseCtl); | ||
37 | DDX_Control(pDX, IDC_BROWSE, m_BrowseCtl); | 39 | DDX_Control(pDX, IDC_BROWSE, m_BrowseCtl); |
38 | DDX_Control(pDX, IDC_PROMPTTIMEOUT, m_PromptTimeoutCtl); | 40 | DDX_Control(pDX, IDC_PROMPTTIMEOUT, m_PromptTimeoutCtl); |
39 | DDX_Radio(pDX, IDC_RRQ_GIVEALL, m_RRQMode); | 41 | DDX_Radio(pDX, IDC_RRQ_GIVEALL, m_RRQMode); |
40 | DDX_Text(pDX, IDC_TFTPROOT, m_TFTPRoot); | 42 | DDX_Text(pDX, IDC_TFTPROOT, m_TFTPRoot); |
41 | DDX_Check(pDX, IDC_TFTPSUBDIRS, m_TFTPSubdirs); | 43 | DDX_Check(pDX, IDC_TFTPSUBDIRS, m_TFTPSubdirs); |
42 | DDX_Radio(pDX, IDC_WRQ_TAKEALL, m_WRQMode); | 44 | DDX_Radio(pDX, IDC_WRQ_TAKEALL, m_WRQMode); |
45 | DDX_Text(pDX, IDC_LOGFILE, m_LogFile); | ||
43 | //}}AFX_DATA_MAP | 46 | //}}AFX_DATA_MAP |
44 | if(pDX->m_bSaveAndValidate) | 47 | if(pDX->m_bSaveAndValidate) |
45 | m_PromptTimeOut=m_PromptTimeoutCtl.GetPos(); | 48 | m_PromptTimeOut=m_PromptTimeoutCtl.GetPos(); |
46 | else | 49 | else |
47 | m_PromptTimeoutCtl.SetPos(m_PromptTimeOut); | 50 | m_PromptTimeoutCtl.SetPos(m_PromptTimeOut); |
48 | } | 51 | } |
49 | 52 | ||
50 | 53 | ||
51 | BEGIN_MESSAGE_MAP(CPropsServer, CPropertyPage) | 54 | BEGIN_MESSAGE_MAP(CPropsServer, CPropertyPage) |
52 | //{{AFX_MSG_MAP(CPropsServer) | 55 | //{{AFX_MSG_MAP(CPropsServer) |
53 | ON_BN_CLICKED(IDC_BROWSE, OnBrowse) | 56 | ON_BN_CLICKED(IDC_BROWSE, OnBrowse) |
57 | ON_BN_CLICKED(IDC_LOGFILE_BROWSE, OnLogfileBrowse) | ||
54 | //}}AFX_MSG_MAP | 58 | //}}AFX_MSG_MAP |
55 | END_MESSAGE_MAP() | 59 | END_MESSAGE_MAP() |
56 | 60 | ||
57 | ///////////////////////////////////////////////////////////////////////////// | 61 | ///////////////////////////////////////////////////////////////////////////// |
58 | // CPropsServer message handlers | 62 | // CPropsServer message handlers |
59 | 63 | ||
60 | BOOL CPropsServer::OnInitDialog() | 64 | BOOL CPropsServer::OnInitDialog() |
61 | { | 65 | { |
62 | CPropertyPage::OnInitDialog(); | 66 | CPropertyPage::OnInitDialog(); |
63 | 67 | ||
64 | m_PromptTimeoutCtl.SetRange(5,60); | 68 | m_PromptTimeoutCtl.SetRange(5,60); |
65 | m_BrowseCtl.SetIcon(AfxGetApp()->LoadIcon(IDI_BROWSE)); | 69 | m_BrowseCtl.SetIcon(AfxGetApp()->LoadIcon(IDI_BROWSE)); |
70 | m_LogBrowseCtl.SetIcon(AfxGetApp()->LoadIcon(IDI_BROWSE)); | ||
66 | 71 | ||
67 | return TRUE; // return TRUE unless you set the focus to a control | 72 | return TRUE; // return TRUE unless you set the focus to a control |
68 | // EXCEPTION: OCX Property Pages should return FALSE | 73 | // EXCEPTION: OCX Property Pages should return FALSE |
69 | } | 74 | } |
70 | 75 | ||
71 | void CPropsServer::OnBrowse() | 76 | void CPropsServer::OnBrowse() |
72 | { | 77 | { |
73 | CString nr = m_TFTPRoot; | 78 | CString nr = m_TFTPRoot; |
74 | if(Klever::BrowseForFolder(nr,IDS_SELECT_TFTPROOT,this)){ | 79 | if(Klever::BrowseForFolder(nr,IDS_SELECT_TFTPROOT,this)){ |
75 | UpdateData(TRUE); | 80 | UpdateData(TRUE); |
76 | m_TFTPRoot=nr; | 81 | m_TFTPRoot=nr; |
77 | UpdateData(FALSE); | 82 | UpdateData(FALSE); |
78 | } | 83 | } |
79 | } | 84 | } |
85 | |||
86 | void CPropsServer::OnLogfileBrowse() | ||
87 | { | ||
88 | UpdateData(TRUE); | ||
89 | CFileDialog cfd( | ||
90 | FALSE, ".log", (LPCSTR)m_LogFile, | ||
91 | OFN_EXPLORER|OFN_HIDEREADONLY|OFN_LONGNAMES|OFN_NOCHANGEDIR|OFN_OVERWRITEPROMPT|OFN_PATHMUSTEXIST, | ||
92 | "Log files (*.log)|*.log|All Files (*.*)|*.*||", | ||
93 | this); | ||
94 | if(cfd.DoModal()==IDOK) { | ||
95 | m_LogFile = cfd.GetPathName(); | ||
96 | UpdateData(FALSE); | ||
97 | } | ||
98 | } | ||
diff --git a/PropsServer.h b/PropsServer.h index 29d85bd..1563479 100644 --- a/PropsServer.h +++ b/PropsServer.h | |||
@@ -8,38 +8,41 @@ class CPropsServer : public CPropertyPage | |||
8 | { | 8 | { |
9 | DECLARE_DYNCREATE(CPropsServer) | 9 | DECLARE_DYNCREATE(CPropsServer) |
10 | 10 | ||
11 | // Construction | 11 | // Construction |
12 | public: | 12 | public: |
13 | UINT m_PromptTimeOut; | 13 | UINT m_PromptTimeOut; |
14 | CPropsServer(); | 14 | CPropsServer(); |
15 | ~CPropsServer(); | 15 | ~CPropsServer(); |
16 | 16 | ||
17 | // Dialog Data | 17 | // Dialog Data |
18 | //{{AFX_DATA(CPropsServer) | 18 | //{{AFX_DATA(CPropsServer) |
19 | enum { IDD = IDD_PROPS_SERVER }; | 19 | enum { IDD = IDD_PROPS_SERVER }; |
20 | CButtonm_LogBrowseCtl; | ||
20 | CButtonm_BrowseCtl; | 21 | CButtonm_BrowseCtl; |
21 | CSliderCtrlm_PromptTimeoutCtl; | 22 | CSliderCtrlm_PromptTimeoutCtl; |
22 | int m_RRQMode; | 23 | int m_RRQMode; |
23 | CStringm_TFTPRoot; | 24 | CStringm_TFTPRoot; |
24 | BOOLm_TFTPSubdirs; | 25 | BOOLm_TFTPSubdirs; |
25 | int m_WRQMode; | 26 | int m_WRQMode; |
27 | CStringm_LogFile; | ||
26 | //}}AFX_DATA | 28 | //}}AFX_DATA |
27 | 29 | ||
28 | 30 | ||
29 | // Overrides | 31 | // Overrides |
30 | // ClassWizard generate virtual function overrides | 32 | // ClassWizard generate virtual function overrides |
31 | //{{AFX_VIRTUAL(CPropsServer) | 33 | //{{AFX_VIRTUAL(CPropsServer) |
32 | protected: | 34 | protected: |
33 | virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support | 35 | virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support |
34 | //}}AFX_VIRTUAL | 36 | //}}AFX_VIRTUAL |
35 | 37 | ||
36 | // Implementation | 38 | // Implementation |
37 | protected: | 39 | protected: |
38 | // Generated message map functions | 40 | // Generated message map functions |
39 | //{{AFX_MSG(CPropsServer) | 41 | //{{AFX_MSG(CPropsServer) |
40 | virtual BOOL OnInitDialog(); | 42 | virtual BOOL OnInitDialog(); |
41 | afx_msg void OnBrowse(); | 43 | afx_msg void OnBrowse(); |
44 | afx_msg void OnLogfileBrowse(); | ||
42 | //}}AFX_MSG | 45 | //}}AFX_MSG |
43 | DECLARE_MESSAGE_MAP() | 46 | DECLARE_MESSAGE_MAP() |
44 | 47 | ||
45 | }; | 48 | }; |
diff --git a/PumpKINDlg.cpp b/PumpKINDlg.cpp index b6b8a36..4cb1633 100644 --- a/PumpKINDlg.cpp +++ b/PumpKINDlg.cpp | |||
@@ -1,22 +1,24 @@ | |||
1 | // PumpKINDlg.cpp : implementation file | 1 | // PumpKINDlg.cpp : implementation file |
2 | // | 2 | // |
3 | 3 | ||
4 | #include "stdafx.h" | 4 | #include "stdafx.h" |
5 | #include "PumpKIN.h" | 5 | #include "PumpKIN.h" |
6 | #include "PumpKINDlg.h" | 6 | #include "PumpKINDlg.h" |
7 | 7 | ||
8 | #include "ACLTargetCombo.h" | ||
8 | #include "PropsServer.h" | 9 | #include "PropsServer.h" |
9 | #include "PropsNetwork.h" | 10 | #include "PropsNetwork.h" |
10 | #include "PropsSounds.h" | 11 | #include "PropsSounds.h" |
12 | #include "PropsACL.h" | ||
11 | #include "ConfirmRRQDlg.h" | 13 | #include "ConfirmRRQDlg.h" |
12 | #include "ConfirmWRQDlg.h" | 14 | #include "ConfirmWRQDlg.h" |
13 | #include "RequestDlg.h" | 15 | #include "RequestDlg.h" |
14 | #include "Resolver.h" | 16 | #include "Resolver.h" |
15 | #include "Retrier.h" | 17 | #include "Retrier.h" |
16 | #include "Trayer.h" | 18 | #include "Trayer.h" |
17 | 19 | ||
18 | #include <io.h> | 20 | #include <io.h> |
19 | 21 | ||
20 | #ifdef _DEBUG | 22 | #ifdef _DEBUG |
21 | #define new DEBUG_NEW | 23 | #define new DEBUG_NEW |
22 | #undef THIS_FILE | 24 | #undef THIS_FILE |
@@ -70,24 +72,28 @@ void CAboutDlg::DoDataExchange(CDataExchange* pDX) | |||
70 | BEGIN_MESSAGE_MAP(CAboutDlg, CDialog) | 72 | BEGIN_MESSAGE_MAP(CAboutDlg, CDialog) |
71 | //{{AFX_MSG_MAP(CAboutDlg) | 73 | //{{AFX_MSG_MAP(CAboutDlg) |
72 | ON_BN_CLICKED(IDC_KLEVERNET, OnKlevernet) | 74 | ON_BN_CLICKED(IDC_KLEVERNET, OnKlevernet) |
73 | //}}AFX_MSG_MAP | 75 | //}}AFX_MSG_MAP |
74 | END_MESSAGE_MAP() | 76 | END_MESSAGE_MAP() |
75 | 77 | ||
76 | ///////////////////////////////////////////////////////////////////////////// | 78 | ///////////////////////////////////////////////////////////////////////////// |
77 | // CPumpKINDlg dialog | 79 | // CPumpKINDlg dialog |
78 | 80 | ||
79 | CPumpKINDlg::CPumpKINDlg(CWnd* pParent /*=NULL*/) | 81 | CPumpKINDlg::CPumpKINDlg(CWnd* pParent /*=NULL*/) |
80 | : CDialog(CPumpKINDlg::IDD, pParent) | 82 | : CDialog(CPumpKINDlg::IDD, pParent) |
81 | { | 83 | { |
84 | m_Listener.m_Daddy = this; | ||
85 | |||
86 | m_bListen = TRUE; | ||
87 | |||
82 | m_ListenPort = 69; | 88 | m_ListenPort = 69; |
83 | m_bTFTPSubdirs = TRUE; | 89 | m_bTFTPSubdirs = TRUE; |
84 | m_RRQMode = rrqAlwaysConfirm; | 90 | m_RRQMode = rrqAlwaysConfirm; |
85 | m_WRQMode = wrqAlwaysConfirm; | 91 | m_WRQMode = wrqAlwaysConfirm; |
86 | m_TFTPTimeOut = CTimeSpan(0,0,0,30); | 92 | m_TFTPTimeOut = CTimeSpan(0,0,0,30); |
87 | m_RetryTimeOut = CTimeSpan(0,0,0,10); | 93 | m_RetryTimeOut = CTimeSpan(0,0,0,10); |
88 | m_LogLength = 100; | 94 | m_LogLength = 100; |
89 | m_SpeakPort = 69; | 95 | m_SpeakPort = 69; |
90 | m_PromptTimeOut=30; | 96 | m_PromptTimeOut=30; |
91 | m_bShown=TRUE; | 97 | m_bShown=TRUE; |
92 | m_bExiting=FALSE; | 98 | m_bExiting=FALSE; |
93 | m_BlockSize=1024; | 99 | m_BlockSize=1024; |
@@ -98,31 +104,41 @@ CPumpKINDlg::CPumpKINDlg(CWnd* pParent /*=NULL*/) | |||
98 | m_bnwRequest="(bang)"; m_bnwSuccess="(done)"; | 104 | m_bnwRequest="(bang)"; m_bnwSuccess="(done)"; |
99 | m_bnwAbort="(oops)"; | 105 | m_bnwAbort="(oops)"; |
100 | //{{AFX_DATA_INIT(CPumpKINDlg) | 106 | //{{AFX_DATA_INIT(CPumpKINDlg) |
101 | //}}AFX_DATA_INIT | 107 | //}}AFX_DATA_INIT |
102 | // Note that LoadIcon does not require a subsequent DestroyIcon in Win32 | 108 | // Note that LoadIcon does not require a subsequent DestroyIcon in Win32 |
103 | m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); | 109 | m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); |
104 | m_bmpBack.LoadBitmap(IDB_BACKGROUND); | 110 | m_bmpBack.LoadBitmap(IDB_BACKGROUND); |
105 | m_bmpBack.GetBitmap(&m_bitmapBack); | 111 | m_bmpBack.GetBitmap(&m_bitmapBack); |
106 | m_Retrier = new CRetrier(this); | 112 | m_Retrier = new CRetrier(this); |
107 | ASSERT(m_Retrier); | 113 | ASSERT(m_Retrier); |
108 | m_Trayer = new CTrayer(this); | 114 | m_Trayer = new CTrayer(this); |
109 | ASSERT(m_Trayer); | 115 | ASSERT(m_Trayer); |
116 | /* Ensure we're backwards compatible */ | ||
117 | ASSERT(CPumpKINDlg::rrqGiveAll==0); | ||
118 | ASSERT(CPumpKINDlg::rrqAlwaysConfirm==1); | ||
119 | ASSERT(CPumpKINDlg::rrqDenyAll==2); | ||
120 | ASSERT(CPumpKINDlg::wrqTakeAll==0); | ||
121 | ASSERT(CPumpKINDlg::wrqConfirmIfExists==1); | ||
122 | ASSERT(CPumpKINDlg::wrqAlwaysConfirm==2); | ||
123 | ASSERT(CPumpKINDlg::wrqDenyAll==3); | ||
124 | /* -- */ | ||
110 | LoadSettings(); | 125 | LoadSettings(); |
111 | } | 126 | } |
112 | 127 | ||
113 | void CPumpKINDlg::DoDataExchange(CDataExchange* pDX) | 128 | void CPumpKINDlg::DoDataExchange(CDataExchange* pDX) |
114 | { | 129 | { |
115 | CDialog::DoDataExchange(pDX); | 130 | CDialog::DoDataExchange(pDX); |
116 | //{{AFX_DATA_MAP(CPumpKINDlg) | 131 | //{{AFX_DATA_MAP(CPumpKINDlg) |
132 | DDX_Control(pDX, IDC_LISTENING, m_ListenCtl); | ||
117 | DDX_Control(pDX, IDC_ABORT, m_AbortCtl); | 133 | DDX_Control(pDX, IDC_ABORT, m_AbortCtl); |
118 | DDX_Control(pDX, IDC_OPTIONS, m_OptionsCtl); | 134 | DDX_Control(pDX, IDC_OPTIONS, m_OptionsCtl); |
119 | DDX_Control(pDX, IDC_LOG, m_Log); | 135 | DDX_Control(pDX, IDC_LOG, m_Log); |
120 | DDX_Control(pDX, IDC_CONNECTIONS, m_List); | 136 | DDX_Control(pDX, IDC_CONNECTIONS, m_List); |
121 | //}}AFX_DATA_MAP | 137 | //}}AFX_DATA_MAP |
122 | } | 138 | } |
123 | 139 | ||
124 | BEGIN_MESSAGE_MAP(CPumpKINDlg, CDialog) | 140 | BEGIN_MESSAGE_MAP(CPumpKINDlg, CDialog) |
125 | //{{AFX_MSG_MAP(CPumpKINDlg) | 141 | //{{AFX_MSG_MAP(CPumpKINDlg) |
126 | ON_WM_SYSCOMMAND() | 142 | ON_WM_SYSCOMMAND() |
127 | ON_WM_DESTROY() | 143 | ON_WM_DESTROY() |
128 | ON_WM_PAINT() | 144 | ON_WM_PAINT() |
@@ -142,24 +158,26 @@ BEGIN_MESSAGE_MAP(CPumpKINDlg, CDialog) | |||
142 | ON_COMMAND(ID_TRAY_SHOWPUMPKINWINDOW, OnTrayShowpumpkinwindow) | 158 | ON_COMMAND(ID_TRAY_SHOWPUMPKINWINDOW, OnTrayShowpumpkinwindow) |
143 | ON_COMMAND(ID_TRAY_EXIT, OnTrayExit) | 159 | ON_COMMAND(ID_TRAY_EXIT, OnTrayExit) |
144 | ON_COMMAND(ID_TRAY_ABOUTPUMPKIN, OnTrayAboutpumpkin) | 160 | ON_COMMAND(ID_TRAY_ABOUTPUMPKIN, OnTrayAboutpumpkin) |
145 | ON_COMMAND(ID_TRAY_FETCHFILE, OnTrayFetchfile) | 161 | ON_COMMAND(ID_TRAY_FETCHFILE, OnTrayFetchfile) |
146 | ON_COMMAND(ID_TRAY_HELP, OnTrayHelp) | 162 | ON_COMMAND(ID_TRAY_HELP, OnTrayHelp) |
147 | ON_COMMAND(ID_TRAY_OPTIONS, OnTrayOptions) | 163 | ON_COMMAND(ID_TRAY_OPTIONS, OnTrayOptions) |
148 | ON_COMMAND(ID_TRAY_SENDFILE, OnTraySendfile) | 164 | ON_COMMAND(ID_TRAY_SENDFILE, OnTraySendfile) |
149 | ON_WM_WINDOWPOSCHANGING() | 165 | ON_WM_WINDOWPOSCHANGING() |
150 | ON_LBN_SELCHANGE(IDC_LOG, OnSelchangeLog) | 166 | ON_LBN_SELCHANGE(IDC_LOG, OnSelchangeLog) |
151 | ON_COMMAND(ID_TRAY_OPENFILESFOLDER, OnTrayOpenfilesfolder) | 167 | ON_COMMAND(ID_TRAY_OPENFILESFOLDER, OnTrayOpenfilesfolder) |
152 | ON_WM_DROPFILES() | 168 | ON_WM_DROPFILES() |
153 | ON_BN_CLICKED(ID_HELP, OnHelp) | 169 | ON_BN_CLICKED(ID_HELP, OnHelp) |
170 | ON_BN_CLICKED(IDC_LISTENING, OnListening) | ||
171 | ON_COMMAND(ID_TRAY_LISTEN, OnTrayListen) | ||
154 | //}}AFX_MSG_MAP | 172 | //}}AFX_MSG_MAP |
155 | END_MESSAGE_MAP() | 173 | END_MESSAGE_MAP() |
156 | 174 | ||
157 | ///////////////////////////////////////////////////////////////////////////// | 175 | ///////////////////////////////////////////////////////////////////////////// |
158 | // CPumpKINDlg message handlers | 176 | // CPumpKINDlg message handlers |
159 | 177 | ||
160 | BOOL CPumpKINDlg::OnInitDialog() | 178 | BOOL CPumpKINDlg::OnInitDialog() |
161 | { | 179 | { |
162 | CDialog::OnInitDialog(); | 180 | CDialog::OnInitDialog(); |
163 | 181 | ||
164 | // Add "About..." menu item to system menu. | 182 | // Add "About..." menu item to system menu. |
165 | 183 | ||
@@ -208,24 +226,26 @@ CRect listrc; | |||
208 | SetupButtons(); | 226 | SetupButtons(); |
209 | 227 | ||
210 | CRect rc, drc; | 228 | CRect rc, drc; |
211 | GetWindowRect(rc); | 229 | GetWindowRect(rc); |
212 | GetDesktopWindow()->GetWindowRect(drc); | 230 | GetDesktopWindow()->GetWindowRect(drc); |
213 | SetWindowPos(NULL,drc.right-6-rc.Width(),6,0,0,SWP_NOACTIVATE|SWP_NOSIZE|SWP_NOZORDER); | 231 | SetWindowPos(NULL,drc.right-6-rc.Width(),6,0,0,SWP_NOACTIVATE|SWP_NOSIZE|SWP_NOZORDER); |
214 | 232 | ||
215 | if(m_bShown) | 233 | if(m_bShown) |
216 | ShowWindow(SW_SHOW); | 234 | ShowWindow(SW_SHOW); |
217 | else | 235 | else |
218 | ShowWindow(SW_HIDE); | 236 | ShowWindow(SW_HIDE); |
219 | 237 | ||
238 | m_ListenCtl.SetCheck(m_Listener.m_bListen?1:0); | ||
239 | |||
220 | // CG: The following block was added by the ToolTips component. | 240 | // CG: The following block was added by the ToolTips component. |
221 | { | 241 | { |
222 | // Create the ToolTip control. | 242 | // Create the ToolTip control. |
223 | m_tooltip.Create(this); | 243 | m_tooltip.Create(this); |
224 | m_tooltip.Activate(TRUE); | 244 | m_tooltip.Activate(TRUE); |
225 | 245 | ||
226 | m_tooltip.AddTool(&m_List,IDC_CONNECTIONS); | 246 | m_tooltip.AddTool(&m_List,IDC_CONNECTIONS); |
227 | m_tooltip.AddTool(GetDlgItem(IDC_PUT),IDC_PUT); | 247 | m_tooltip.AddTool(GetDlgItem(IDC_PUT),IDC_PUT); |
228 | m_tooltip.AddTool(GetDlgItem(IDC_GET),IDC_GET); | 248 | m_tooltip.AddTool(GetDlgItem(IDC_GET),IDC_GET); |
229 | m_tooltip.AddTool(&m_AbortCtl,IDC_ABORT); | 249 | m_tooltip.AddTool(&m_AbortCtl,IDC_ABORT); |
230 | m_tooltip.AddTool(GetDlgItem(IDC_OPTIONS),IDC_OPTIONS); | 250 | m_tooltip.AddTool(GetDlgItem(IDC_OPTIONS),IDC_OPTIONS); |
231 | m_tooltip.AddTool(GetDlgItem(IDC_EXIT),IDC_EXIT); | 251 | m_tooltip.AddTool(GetDlgItem(IDC_EXIT),IDC_EXIT); |
@@ -315,29 +335,28 @@ void CPumpKINDlg::OnPaint() | |||
315 | // The system calls this to obtain the cursor to display while the user drags | 335 | // The system calls this to obtain the cursor to display while the user drags |
316 | // the minimized window. | 336 | // the minimized window. |
317 | HCURSOR CPumpKINDlg::OnQueryDragIcon() | 337 | HCURSOR CPumpKINDlg::OnQueryDragIcon() |
318 | { | 338 | { |
319 | return (HCURSOR) m_hIcon; | 339 | return (HCURSOR) m_hIcon; |
320 | } | 340 | } |
321 | 341 | ||
322 | int CPumpKINDlg::OnCreate(LPCREATESTRUCT lpCreateStruct) | 342 | int CPumpKINDlg::OnCreate(LPCREATESTRUCT lpCreateStruct) |
323 | { | 343 | { |
324 | if (CDialog::OnCreate(lpCreateStruct) == -1) | 344 | if (CDialog::OnCreate(lpCreateStruct) == -1) |
325 | return -1; | 345 | return -1; |
326 | 346 | ||
327 | m_Listener.m_Daddy=this; | 347 | if(!m_Listener.SetListen(m_bListen)) { |
328 | if(!m_Listener.Create(m_ListenPort,SOCK_DGRAM)){ | 348 | m_bListen=FALSE; |
329 | TRACE0("Failed to create socket\n"); | 349 | TRACE0("Failed to create socket\n"); |
330 | AfxMessageBox(IDS_BOX_CANTBIND,MB_OK|MB_ICONEXCLAMATION); | 350 | AfxMessageBox(IDS_BOX_CANTBIND,MB_OK|MB_ICONEXCLAMATION); |
331 | return -1; | ||
332 | } | 351 | } |
333 | 352 | ||
334 | if(!m_Trayer->Create(NULL,"PumpKIN TrayIcon",WS_CHILD,CRect(0,0,0,0),this,0)){ | 353 | if(!m_Trayer->Create(NULL,"PumpKIN TrayIcon",WS_CHILD,CRect(0,0,0,0),this,0)){ |
335 | TRACE0("Failed to create trayer\n"); | 354 | TRACE0("Failed to create trayer\n"); |
336 | return -1; | 355 | return -1; |
337 | } | 356 | } |
338 | 357 | ||
339 | NOTIFYICONDATA nid; | 358 | NOTIFYICONDATA nid; |
340 | memset(&nid,0,sizeof(nid)); | 359 | memset(&nid,0,sizeof(nid)); |
341 | nid.cbSize=sizeof(nid); | 360 | nid.cbSize=sizeof(nid); |
342 | nid.hWnd=m_Trayer->m_hWnd; | 361 | nid.hWnd=m_Trayer->m_hWnd; |
343 | nid.uID=IDC_TRAYICON; | 362 | nid.uID=IDC_TRAYICON; |
@@ -655,35 +674,40 @@ CXferSocket::CXferSocket(CPumpKINDlg *daddy,LPCTSTR fileName,LPCTSTR type,SOCKAD | |||
655 | } | 674 | } |
656 | 675 | ||
657 | BOOL CRRQSocket::Create(LPCTSTR localFile,LPCTSTR hostName) | 676 | BOOL CRRQSocket::Create(LPCTSTR localFile,LPCTSTR hostName) |
658 | { | 677 | { |
659 | if(!CAsyncSocket::Create(0,SOCK_DGRAM)) | 678 | if(!CAsyncSocket::Create(0,SOCK_DGRAM)) |
660 | return FALSE; | 679 | return FALSE; |
661 | ASSERT(m_Daddy); | 680 | ASSERT(m_Daddy); |
662 | ASSERT(m_Peer.sin_addr.s_addr!=INADDR_NONE || hostName); | 681 | ASSERT(m_Peer.sin_addr.s_addr!=INADDR_NONE || hostName); |
663 | m_Daddy->m_Xfers[m_hSocket]=this; | 682 | m_Daddy->m_Xfers[m_hSocket]=this; |
664 | CString lFile = localFile?localFile:m_FileName; | 683 | CString lFile = localFile?localFile:m_FileName; |
665 | TurnSlashes(lFile,TRUE); | 684 | TurnSlashes(lFile,TRUE); |
666 | UpdateList(); | 685 | UpdateList(); |
667 | if(!localFile){// Check only if server | 686 | if(!localFile){// Check only for incoming requests |
668 | if(CheckBadRelativeness(m_FileName)){ | 687 | if(CheckBadRelativeness(m_FileName)){ |
669 | Deny(tftp::errAccessViolation,IDS_TFTP_ERROR_ACCESS); | 688 | Deny(tftp::errAccessViolation,IDS_TFTP_ERROR_ACCESS); |
670 | return TRUE; | 689 | return TRUE; |
671 | } | 690 | } |
672 | switch(m_Daddy->m_RRQMode){ | 691 | int atar=m_Daddy->m_aclRules.FindTarget(acl_rule::opRRQ,m_Peer.sin_addr.s_addr); |
692 | if(atar<0) | ||
693 | atar = m_Daddy->m_RRQMode; | ||
694 | switch(atar){ | ||
673 | case CPumpKINDlg::rrqGiveAll: | 695 | case CPumpKINDlg::rrqGiveAll: |
674 | break; | 696 | break; |
675 | case CPumpKINDlg::rrqAlwaysConfirm: | 697 | case CPumpKINDlg::rrqAlwaysConfirm: |
676 | if(ConfirmRequest()) | 698 | if(ConfirmRequest()) |
677 | break; | 699 | break; |
700 | default: | ||
701 | TRACE1("Unexpected access target: %d\n",atar); | ||
678 | case CPumpKINDlg::rrqDenyAll: | 702 | case CPumpKINDlg::rrqDenyAll: |
679 | Deny(tftp::errAccessViolation,IDS_TFTP_ERROR_ACCESS); | 703 | Deny(tftp::errAccessViolation,IDS_TFTP_ERROR_ACCESS); |
680 | return TRUE; | 704 | return TRUE; |
681 | } | 705 | } |
682 | } | 706 | } |
683 | CString fn = localFile?ApplyRootGently(lFile):ApplyRoot(lFile); | 707 | CString fn = localFile?ApplyRootGently(lFile):ApplyRoot(lFile); |
684 | CFileException e; | 708 | CFileException e; |
685 | if(!m_File.Open(fn,CFile::modeRead|CFile::shareDenyWrite,&e)){ | 709 | if(!m_File.Open(fn,CFile::modeRead|CFile::shareDenyWrite,&e)){ |
686 | if(localFile){ | 710 | if(localFile){ |
687 | CString tmp; | 711 | CString tmp; |
688 | tmp.Format(IDS_LOG_FAILEDLOCALFILE,fn); | 712 | tmp.Format(IDS_LOG_FAILEDLOCALFILE,fn); |
689 | m_Daddy->LogLine(tmp); | 713 | m_Daddy->LogLine(tmp); |
@@ -1098,25 +1122,25 @@ void CXferSocket::Destroy(BOOL success) | |||
1098 | m_Daddy->KillTimer(m_hSocket); | 1122 | m_Daddy->KillTimer(m_hSocket); |
1099 | m_Daddy->m_Xfers.RemoveKey(m_hSocket); | 1123 | m_Daddy->m_Xfers.RemoveKey(m_hSocket); |
1100 | LV_FINDINFO lvf; | 1124 | LV_FINDINFO lvf; |
1101 | memset(&lvf,0,sizeof(lvf)); | 1125 | memset(&lvf,0,sizeof(lvf)); |
1102 | lvf.flags=LVFI_PARAM; | 1126 | lvf.flags=LVFI_PARAM; |
1103 | lvf.lParam=(LPARAM)this; | 1127 | lvf.lParam=(LPARAM)this; |
1104 | int i = m_Daddy->m_List.FindItem(&lvf); | 1128 | int i = m_Daddy->m_List.FindItem(&lvf); |
1105 | if(i>=0) | 1129 | if(i>=0) |
1106 | m_Daddy->m_List.DeleteItem(i); | 1130 | m_Daddy->m_List.DeleteItem(i); |
1107 | delete this; | 1131 | delete this; |
1108 | } | 1132 | } |
1109 | 1133 | ||
1110 | void CPumpKINDlg::LogLine(LPCTSTR str) | 1134 | void CPumpKINDlg::LogLineToScreen(LPCTSTR str) |
1111 | { | 1135 | { |
1112 | ASSERT(m_LogLength); | 1136 | ASSERT(m_LogLength); |
1113 | while(m_Log.GetCount()>m_LogLength && m_Log.GetCount()!=LB_ERR){ | 1137 | while(m_Log.GetCount()>m_LogLength && m_Log.GetCount()!=LB_ERR){ |
1114 | CTime *t = (CTime*)m_Log.GetItemData(0); | 1138 | CTime *t = (CTime*)m_Log.GetItemData(0); |
1115 | if(((DWORD)t)!=LB_ERR){ | 1139 | if(((DWORD)t)!=LB_ERR){ |
1116 | ASSERT(t); | 1140 | ASSERT(t); |
1117 | m_LogTimes.RemoveKey(t); | 1141 | m_LogTimes.RemoveKey(t); |
1118 | delete t; | 1142 | delete t; |
1119 | } | 1143 | } |
1120 | m_Log.DeleteString(0); | 1144 | m_Log.DeleteString(0); |
1121 | } | 1145 | } |
1122 | int i = m_Log.AddString(str); | 1146 | int i = m_Log.AddString(str); |
@@ -1154,58 +1178,68 @@ CString rv = m_Daddy->m_TFTPRoot; | |||
1154 | while((!fn.IsEmpty()) && fn[0]=='\\') | 1178 | while((!fn.IsEmpty()) && fn[0]=='\\') |
1155 | fn=fn.Mid(1); | 1179 | fn=fn.Mid(1); |
1156 | rv+=fn; | 1180 | rv+=fn; |
1157 | return rv; | 1181 | return rv; |
1158 | } | 1182 | } |
1159 | 1183 | ||
1160 | void CPumpKINDlg::OnOptions() | 1184 | void CPumpKINDlg::OnOptions() |
1161 | { | 1185 | { |
1162 | CPropertySheet cps(IDS_TITLE_OPTIONS,this); | 1186 | CPropertySheet cps(IDS_TITLE_OPTIONS,this); |
1163 | CPropsServer server; | 1187 | CPropsServer server; |
1164 | CPropsNetwork network; | 1188 | CPropsNetwork network; |
1165 | CPropsSounds sounds; | 1189 | CPropsSounds sounds; |
1190 | CPropsACL acl; | ||
1166 | 1191 | ||
1167 | server.m_RRQMode=m_RRQMode; | 1192 | server.m_RRQMode=m_RRQMode; |
1168 | server.m_TFTPRoot=m_TFTPRoot; | 1193 | server.m_TFTPRoot=m_TFTPRoot; |
1169 | server.m_TFTPSubdirs=m_bTFTPSubdirs; | 1194 | server.m_TFTPSubdirs=m_bTFTPSubdirs; |
1170 | server.m_WRQMode=m_WRQMode; | 1195 | server.m_WRQMode=m_WRQMode; |
1171 | server.m_PromptTimeOut=m_PromptTimeOut; | 1196 | server.m_PromptTimeOut=m_PromptTimeOut; |
1197 | server.m_LogFile=m_LogFile; | ||
1172 | 1198 | ||
1173 | network.m_ListenPort=m_ListenPort; | 1199 | network.m_ListenPort=m_ListenPort; |
1174 | network.m_SpeakPort=m_SpeakPort; | 1200 | network.m_SpeakPort=m_SpeakPort; |
1175 | network.m_TimeOut=m_TFTPTimeOut.GetTotalSeconds(); | 1201 | network.m_TimeOut=m_TFTPTimeOut.GetTotalSeconds(); |
1176 | network.m_BlockSize=m_BlockSize; | 1202 | network.m_BlockSize=m_BlockSize; |
1177 | 1203 | ||
1178 | sounds.m_Request = m_bnwRequest; | 1204 | sounds.m_Request = m_bnwRequest; |
1179 | sounds.m_Success = m_bnwSuccess; | 1205 | sounds.m_Success = m_bnwSuccess; |
1180 | sounds.m_Abort = m_bnwAbort; | 1206 | sounds.m_Abort = m_bnwAbort; |
1181 | 1207 | ||
1208 | acl.m_rulist = m_aclRules; | ||
1209 | |||
1182 | cps.AddPage(&server); | 1210 | cps.AddPage(&server); |
1183 | cps.AddPage(&network); | 1211 | cps.AddPage(&network); |
1184 | cps.AddPage(&sounds); | 1212 | cps.AddPage(&sounds); |
1213 | cps.AddPage(&acl); | ||
1185 | if(cps.DoModal()==IDOK){ | 1214 | if(cps.DoModal()==IDOK){ |
1186 | m_RRQMode=server.m_RRQMode; | 1215 | m_RRQMode=server.m_RRQMode; |
1187 | m_TFTPRoot=server.m_TFTPRoot; | 1216 | m_TFTPRoot=server.m_TFTPRoot; |
1188 | m_bTFTPSubdirs=server.m_TFTPSubdirs; | 1217 | m_bTFTPSubdirs=server.m_TFTPSubdirs; |
1189 | m_WRQMode=server.m_WRQMode; | 1218 | m_WRQMode=server.m_WRQMode; |
1190 | m_PromptTimeOut=server.m_PromptTimeOut; | 1219 | m_PromptTimeOut=server.m_PromptTimeOut; |
1220 | m_LogFile=server.m_LogFile; | ||
1191 | 1221 | ||
1192 | m_ListenPort=network.m_ListenPort; | 1222 | m_ListenPort=network.m_ListenPort; |
1193 | m_SpeakPort=network.m_SpeakPort; | 1223 | m_SpeakPort=network.m_SpeakPort; |
1194 | m_TFTPTimeOut=CTimeSpan(network.m_TimeOut); | 1224 | m_TFTPTimeOut=CTimeSpan(network.m_TimeOut); |
1195 | m_BlockSize=network.m_BlockSize; | 1225 | m_BlockSize=network.m_BlockSize; |
1196 | 1226 | ||
1197 | m_bnwRequest = sounds.m_Request; | 1227 | m_bnwRequest = sounds.m_Request; |
1198 | m_bnwSuccess = sounds.m_Success; | 1228 | m_bnwSuccess = sounds.m_Success; |
1199 | m_bnwAbort = sounds.m_Abort; | 1229 | m_bnwAbort = sounds.m_Abort; |
1230 | |||
1231 | m_aclRules = acl.m_rulist; | ||
1232 | |||
1233 | m_lastlogerr.Empty(); | ||
1200 | } | 1234 | } |
1201 | } | 1235 | } |
1202 | 1236 | ||
1203 | BOOL CRRQSocket::ConfirmRequest() | 1237 | BOOL CRRQSocket::ConfirmRequest() |
1204 | { | 1238 | { |
1205 | CConfirmRRQDlg cd(NULL); | 1239 | CConfirmRRQDlg cd(NULL); |
1206 | cd.m_Daddy=this; | 1240 | cd.m_Daddy=this; |
1207 | cd.m_File=m_FileName; | 1241 | cd.m_File=m_FileName; |
1208 | cd.m_Host=inet_ntoa(m_Peer.sin_addr); | 1242 | cd.m_Host=inet_ntoa(m_Peer.sin_addr); |
1209 | if(cd.DoModal()==IDOK) | 1243 | if(cd.DoModal()==IDOK) |
1210 | return TRUE; | 1244 | return TRUE; |
1211 | return FALSE; | 1245 | return FALSE; |
@@ -1235,48 +1269,52 @@ CString lf; | |||
1235 | } | 1269 | } |
1236 | CString fn = localFile?ApplyRootGently(localFile):ApplyRoot(lf); | 1270 | CString fn = localFile?ApplyRootGently(localFile):ApplyRoot(lf); |
1237 | if(!localFile){// This is an incoming request.. | 1271 | if(!localFile){// This is an incoming request.. |
1238 | if(CheckBadRelativeness(m_FileName)){ | 1272 | if(CheckBadRelativeness(m_FileName)){ |
1239 | Deny(tftp::errAccessViolation,IDS_TFTP_ERROR_ACCESS); | 1273 | Deny(tftp::errAccessViolation,IDS_TFTP_ERROR_ACCESS); |
1240 | return TRUE; | 1274 | return TRUE; |
1241 | } | 1275 | } |
1242 | BOOL exists; | 1276 | BOOL exists; |
1243 | if(!_access((LPCTSTR)fn,0)) | 1277 | if(!_access((LPCTSTR)fn,0)) |
1244 | m_Rename=exists=TRUE; | 1278 | m_Rename=exists=TRUE; |
1245 | else | 1279 | else |
1246 | m_Rename=exists=FALSE; | 1280 | m_Rename=exists=FALSE; |
1247 | // *** m_WRQMode only if server transfer | 1281 | int atar=m_Daddy->m_aclRules.FindTarget(acl_rule::opWRQ,m_Peer.sin_addr.s_addr); |
1248 | switch(m_Daddy->m_WRQMode){ | 1282 | if(atar<0) |
1283 | atar=m_Daddy->m_WRQMode; | ||
1284 | switch(atar){ | ||
1249 | case CPumpKINDlg::wrqTakeAll: | 1285 | case CPumpKINDlg::wrqTakeAll: |
1250 | if(exists){ | 1286 | if(exists){ |
1251 | if(!RenameFile(fn)){ | 1287 | if(!RenameFile(fn)){ |
1252 | Deny(tftp::errDiskFull,IDS_TFTP_ERROR_FAILEDTORENAME); | 1288 | Deny(tftp::errDiskFull,IDS_TFTP_ERROR_FAILEDTORENAME); |
1253 | return TRUE; | 1289 | return TRUE; |
1254 | } | 1290 | } |
1255 | } | 1291 | } |
1256 | break; | 1292 | break; |
1257 | case CPumpKINDlg::wrqConfirmIfExists: | 1293 | case CPumpKINDlg::wrqConfirmIfExists: |
1258 | if(!exists) | 1294 | if(!exists) |
1259 | break; | 1295 | break; |
1260 | case CPumpKINDlg::wrqAlwaysConfirm: | 1296 | case CPumpKINDlg::wrqAlwaysConfirm: |
1261 | if(exists) | 1297 | if(exists) |
1262 | m_bResume=TRUE; | 1298 | m_bResume=TRUE; |
1263 | if(ConfirmRequest()){ | 1299 | if(ConfirmRequest()){ |
1264 | if(m_Rename){ | 1300 | if(m_Rename){ |
1265 | RenameFile(fn); | 1301 | RenameFile(fn); |
1266 | if(SaveAs(fn)) | 1302 | if(SaveAs(fn)) |
1267 | break; | 1303 | break; |
1268 | }else | 1304 | }else |
1269 | break; | 1305 | break; |
1270 | } | 1306 | } |
1307 | default: | ||
1308 | TRACE1("Unexpected access target: %d\n",atar); | ||
1271 | case CPumpKINDlg::wrqDenyAll: | 1309 | case CPumpKINDlg::wrqDenyAll: |
1272 | Deny(tftp::errAccessViolation,IDS_TFTP_ERROR_ACCESS); | 1310 | Deny(tftp::errAccessViolation,IDS_TFTP_ERROR_ACCESS); |
1273 | return TRUE; | 1311 | return TRUE; |
1274 | } | 1312 | } |
1275 | } | 1313 | } |
1276 | CFileException e; | 1314 | CFileException e; |
1277 | if(!m_File.Open( | 1315 | if(!m_File.Open( |
1278 | fn, | 1316 | fn, |
1279 | m_bResume | 1317 | m_bResume |
1280 | ?(CFile::modeWrite|CFile::shareDenyWrite) | 1318 | ?(CFile::modeWrite|CFile::shareDenyWrite) |
1281 | :(CFile::modeCreate|CFile::modeWrite|CFile::shareDenyWrite), | 1319 | :(CFile::modeCreate|CFile::modeWrite|CFile::shareDenyWrite), |
1282 | &e | 1320 | &e |
@@ -1786,66 +1824,72 @@ void CPumpKINDlg::OnTrayOptions() | |||
1786 | OnOptions(); | 1824 | OnOptions(); |
1787 | } | 1825 | } |
1788 | 1826 | ||
1789 | void CPumpKINDlg::OnTraySendfile() | 1827 | void CPumpKINDlg::OnTraySendfile() |
1790 | { | 1828 | { |
1791 | OnPut(); | 1829 | OnPut(); |
1792 | } | 1830 | } |
1793 | 1831 | ||
1794 | void CPumpKINDlg::LoadSettings() | 1832 | void CPumpKINDlg::LoadSettings() |
1795 | { | 1833 | { |
1796 | CWinApp *app = AfxGetApp(); | 1834 | CWinApp *app = AfxGetApp(); |
1797 | ASSERT(app); | 1835 | ASSERT(app); |
1836 | m_bListen=app->GetProfileInt("TFTPSettings","Listen",m_bListen); | ||
1798 | m_bnwRequest=app->GetProfileString("BellsNWhistles","Request",m_bnwRequest); | 1837 | m_bnwRequest=app->GetProfileString("BellsNWhistles","Request",m_bnwRequest); |
1799 | m_bnwSuccess=app->GetProfileString("BellsNWhistles","Success",m_bnwSuccess); | 1838 | m_bnwSuccess=app->GetProfileString("BellsNWhistles","Success",m_bnwSuccess); |
1800 | m_bnwAbort=app->GetProfileString("BellsNWhistles","Abort",m_bnwAbort); | 1839 | m_bnwAbort=app->GetProfileString("BellsNWhistles","Abort",m_bnwAbort); |
1801 | m_bTFTPSubdirs=app->GetProfileInt("TFTPSettings","Subdirs",m_bTFTPSubdirs); | 1840 | m_bTFTPSubdirs=app->GetProfileInt("TFTPSettings","Subdirs",m_bTFTPSubdirs); |
1802 | m_ListenPort=app->GetProfileInt("TFTPSettings","ListenPort",m_ListenPort); | 1841 | m_ListenPort=app->GetProfileInt("TFTPSettings","ListenPort",m_ListenPort); |
1803 | m_LogLength=app->GetProfileInt("UISettings","LogLength",m_LogLength); | 1842 | m_LogLength=app->GetProfileInt("UISettings","LogLength",m_LogLength); |
1804 | m_PromptTimeOut=app->GetProfileInt("UISettings","PromptTimeout",m_PromptTimeOut); | 1843 | m_PromptTimeOut=app->GetProfileInt("UISettings","PromptTimeout",m_PromptTimeOut); |
1805 | m_RRQMode=app->GetProfileInt("TFTPSettings","RRQMode",m_RRQMode); | 1844 | m_RRQMode=app->GetProfileInt("TFTPSettings","RRQMode",m_RRQMode); |
1806 | m_SpeakPort=app->GetProfileInt("TFTPSettings","SpeakPort",m_SpeakPort); | 1845 | m_SpeakPort=app->GetProfileInt("TFTPSettings","SpeakPort",m_SpeakPort); |
1807 | m_TFTPRoot=app->GetProfileString("TFTPSettings","TFTPRoot",m_TFTPRoot); | 1846 | m_TFTPRoot=app->GetProfileString("TFTPSettings","TFTPRoot",m_TFTPRoot); |
1847 | m_LogFile=app->GetProfileString("General","LogFile",m_LogFile); | ||
1808 | m_TFTPTimeOut=CTimeSpan(app->GetProfileInt("TFTPSettings","TFTPTimeout",m_TFTPTimeOut.GetTotalSeconds())); | 1848 | m_TFTPTimeOut=CTimeSpan(app->GetProfileInt("TFTPSettings","TFTPTimeout",m_TFTPTimeOut.GetTotalSeconds())); |
1809 | m_BlockSize=app->GetProfileInt("TFTPSettings","TFTPBlockSize",m_BlockSize); | 1849 | m_BlockSize=app->GetProfileInt("TFTPSettings","TFTPBlockSize",m_BlockSize); |
1810 | m_RetryTimeOut=CTimeSpan(app->GetProfileInt("TFTPSettings","RetryTimeout",m_RetryTimeOut.GetTotalSeconds())); | 1850 | m_RetryTimeOut=CTimeSpan(app->GetProfileInt("TFTPSettings","RetryTimeout",m_RetryTimeOut.GetTotalSeconds())); |
1811 | m_WRQMode=app->GetProfileInt("TFTPSettings","WRQMode",m_WRQMode); | 1851 | m_WRQMode=app->GetProfileInt("TFTPSettings","WRQMode",m_WRQMode); |
1812 | m_bShown=app->GetProfileInt("UISettings","Visble",m_bShown); | 1852 | m_bShown=app->GetProfileInt("UISettings","Visble",m_bShown); |
1813 | if(m_TFTPRoot.IsEmpty()){ | 1853 | if(m_TFTPRoot.IsEmpty()){ |
1814 | DWORD dL = ::GetCurrentDirectory(0,NULL); | 1854 | DWORD dL = ::GetCurrentDirectory(0,NULL); |
1815 | VERIFY(::GetCurrentDirectory(dL,m_TFTPRoot.GetBuffer(dL))); | 1855 | VERIFY(::GetCurrentDirectory(dL,m_TFTPRoot.GetBuffer(dL))); |
1816 | m_TFTPRoot.ReleaseBuffer(); | 1856 | m_TFTPRoot.ReleaseBuffer(); |
1817 | } | 1857 | } |
1818 | ::SetCurrentDirectory(m_TFTPRoot); | 1858 | ::SetCurrentDirectory(m_TFTPRoot); |
1859 | m_aclRules.LoadProfile(app); | ||
1819 | } | 1860 | } |
1820 | 1861 | ||
1821 | void CPumpKINDlg::SaveSettings() | 1862 | void CPumpKINDlg::SaveSettings() |
1822 | { | 1863 | { |
1823 | CWinApp *app = AfxGetApp(); | 1864 | CWinApp *app = AfxGetApp(); |
1824 | ASSERT(app); | 1865 | ASSERT(app); |
1866 | app->WriteProfileInt("TFTPSettings","Listen",m_bListen); | ||
1825 | app->WriteProfileString("BellsNWhistles","Request",m_bnwRequest); | 1867 | app->WriteProfileString("BellsNWhistles","Request",m_bnwRequest); |
1826 | app->WriteProfileString("BellsNWhistles","Success",m_bnwSuccess); | 1868 | app->WriteProfileString("BellsNWhistles","Success",m_bnwSuccess); |
1827 | app->WriteProfileString("BellsNWhistles","Abort",m_bnwAbort); | 1869 | app->WriteProfileString("BellsNWhistles","Abort",m_bnwAbort); |
1828 | app->WriteProfileInt("TFTPSettings","Subdirs",m_bTFTPSubdirs); | 1870 | app->WriteProfileInt("TFTPSettings","Subdirs",m_bTFTPSubdirs); |
1829 | app->WriteProfileInt("TFTPSettings","ListenPort",m_ListenPort); | 1871 | app->WriteProfileInt("TFTPSettings","ListenPort",m_ListenPort); |
1830 | app->WriteProfileInt("UISettings","LogLength",m_LogLength); | 1872 | app->WriteProfileInt("UISettings","LogLength",m_LogLength); |
1831 | app->WriteProfileInt("UISettings","PromptTimeout",m_PromptTimeOut); | 1873 | app->WriteProfileInt("UISettings","PromptTimeout",m_PromptTimeOut); |
1832 | app->WriteProfileInt("TFTPSettings","RRQMode",m_RRQMode); | 1874 | app->WriteProfileInt("TFTPSettings","RRQMode",m_RRQMode); |
1833 | app->WriteProfileInt("TFTPSettings","SpeakPort",m_SpeakPort); | 1875 | app->WriteProfileInt("TFTPSettings","SpeakPort",m_SpeakPort); |
1834 | app->WriteProfileString("TFTPSettings","TFTPRoot",m_TFTPRoot); | 1876 | app->WriteProfileString("TFTPSettings","TFTPRoot",m_TFTPRoot); |
1877 | app->WriteProfileString("General","LogFile",m_LogFile); | ||
1835 | app->WriteProfileInt("TFTPSettings","TFTPTimeout",m_TFTPTimeOut.GetTotalSeconds()); | 1878 | app->WriteProfileInt("TFTPSettings","TFTPTimeout",m_TFTPTimeOut.GetTotalSeconds()); |
1836 | app->WriteProfileInt("TFTPSettings","TFTPBlockSize",m_BlockSize); | 1879 | app->WriteProfileInt("TFTPSettings","TFTPBlockSize",m_BlockSize); |
1837 | app->WriteProfileInt("TFTPSettings","RetryTimeout",m_RetryTimeOut.GetTotalSeconds()); | 1880 | app->WriteProfileInt("TFTPSettings","RetryTimeout",m_RetryTimeOut.GetTotalSeconds()); |
1838 | app->WriteProfileInt("TFTPSettings","WRQMode",m_WRQMode); | 1881 | app->WriteProfileInt("TFTPSettings","WRQMode",m_WRQMode); |
1839 | app->WriteProfileInt("UISettings","Visble",m_bShown); | 1882 | app->WriteProfileInt("UISettings","Visble",m_bShown); |
1883 | m_aclRules.SaveProfile(app); | ||
1840 | } | 1884 | } |
1841 | 1885 | ||
1842 | void CPumpKINDlg::OnWindowPosChanging(WINDOWPOS FAR* lpwndpos) | 1886 | void CPumpKINDlg::OnWindowPosChanging(WINDOWPOS FAR* lpwndpos) |
1843 | { | 1887 | { |
1844 | CDialog::OnWindowPosChanging(lpwndpos); | 1888 | CDialog::OnWindowPosChanging(lpwndpos); |
1845 | if(!m_bExiting){ | 1889 | if(!m_bExiting){ |
1846 | if(m_bShown){ | 1890 | if(m_bShown){ |
1847 | lpwndpos->flags&=~SWP_HIDEWINDOW; | 1891 | lpwndpos->flags&=~SWP_HIDEWINDOW; |
1848 | lpwndpos->flags|=SWP_SHOWWINDOW; | 1892 | lpwndpos->flags|=SWP_SHOWWINDOW; |
1849 | }else{ | 1893 | }else{ |
1850 | lpwndpos->flags&=~SWP_SHOWWINDOW; | 1894 | lpwndpos->flags&=~SWP_SHOWWINDOW; |
1851 | lpwndpos->flags|=SWP_HIDEWINDOW; | 1895 | lpwndpos->flags|=SWP_HIDEWINDOW; |
@@ -1975,12 +2019,61 @@ tftp* rv = Allocate(src->length); | |||
1975 | 2019 | ||
1976 | void CXferSocket::SetTry(tftp *p) | 2020 | void CXferSocket::SetTry(tftp *p) |
1977 | { | 2021 | { |
1978 | if(m_Retry) | 2022 | if(m_Retry) |
1979 | delete m_Retry; | 2023 | delete m_Retry; |
1980 | m_Retry=p?tftp::Copy(p):NULL; | 2024 | m_Retry=p?tftp::Copy(p):NULL; |
1981 | } | 2025 | } |
1982 | 2026 | ||
1983 | void CPumpKINDlg::OnHelp() | 2027 | void CPumpKINDlg::OnHelp() |
1984 | { | 2028 | { |
1985 | AfxGetApp()->WinHelp(0,HELP_FINDER); | 2029 | AfxGetApp()->WinHelp(0,HELP_FINDER); |
1986 | } | 2030 | } |
2031 | |||
2032 | BOOL CListenSocket::SetListen(BOOL b) { | ||
2033 | ASSERT(m_Daddy); | ||
2034 | if(b==m_bListen) | ||
2035 | return TRUE; | ||
2036 | if(b) { | ||
2037 | if(!Create(m_Daddy->m_ListenPort,SOCK_DGRAM)) | ||
2038 | return FALSE; | ||
2039 | return m_bListen=TRUE; | ||
2040 | }else{ | ||
2041 | Close(); m_bListen=FALSE; | ||
2042 | return TRUE; | ||
2043 | } | ||
2044 | } | ||
2045 | |||
2046 | void CPumpKINDlg::OnListening() | ||
2047 | { | ||
2048 | if(!m_Listener.SetListen(m_ListenCtl.GetCheck()==1)) { | ||
2049 | TRACE0("Failed to create socket\n"); | ||
2050 | AfxMessageBox(IDS_BOX_CANTBIND,MB_OK|MB_ICONEXCLAMATION); | ||
2051 | } | ||
2052 | m_ListenCtl.SetCheck(m_Listener.m_bListen?1:0); | ||
2053 | m_bListen=m_Listener.m_bListen; | ||
2054 | } | ||
2055 | |||
2056 | void CPumpKINDlg::OnTrayListen() | ||
2057 | { | ||
2058 | if(!m_Listener.SetListen(!m_Listener.m_bListen)) { | ||
2059 | TRACE0("Failed to create socket\n"); | ||
2060 | AfxMessageBox(IDS_BOX_CANTBIND,MB_OK|MB_ICONEXCLAMATION); | ||
2061 | } | ||
2062 | m_ListenCtl.SetCheck(m_Listener.m_bListen?1:0); | ||
2063 | m_bListen=m_Listener.m_bListen; | ||
2064 | } | ||
2065 | |||
2066 | void CPumpKINDlg::LogLine(LPCTSTR str) | ||
2067 | { | ||
2068 | LogLineToScreen(str); | ||
2069 | if(!m_LogFile.IsEmpty()) { | ||
2070 | if(!Klever::LogRecord((LPCTSTR)m_LogFile,str)) { | ||
2071 | if(m_lastlogerr!=m_LogFile) { | ||
2072 | CString tmp; | ||
2073 | tmp.Format(IDS_LOG_LOGERROR,m_LogFile); | ||
2074 | LogLineToScreen(tmp); | ||
2075 | m_lastlogerr=m_LogFile; | ||
2076 | } | ||
2077 | } | ||
2078 | } | ||
2079 | } | ||
diff --git a/PumpKINDlg.h b/PumpKINDlg.h index 42ae62d..b247c56 100644 --- a/PumpKINDlg.h +++ b/PumpKINDlg.h | |||
@@ -104,29 +104,176 @@ public: | |||
104 | static tftp* Allocate(UINT tftpSize=0); | 104 | static tftp* Allocate(UINT tftpSize=0); |
105 | BOOL Send(CAsyncSocket *socket,SOCKADDR_IN* saddr); | 105 | BOOL Send(CAsyncSocket *socket,SOCKADDR_IN* saddr); |
106 | CString rqType(); | 106 | CString rqType(); |
107 | CString rqFileName(); | 107 | CString rqFileName(); |
108 | UINT GetOptions(tftpOptions* ops); | 108 | UINT GetOptions(tftpOptions* ops); |
109 | tftp(); | 109 | tftp(); |
110 | UINT Opcode(); | 110 | UINT Opcode(); |
111 | BOOL Receive(CAsyncSocket* socket,UINT maxLength,SOCKADDR_IN *sin=NULL); | 111 | BOOL Receive(CAsyncSocket* socket,UINT maxLength,SOCKADDR_IN *sin=NULL); |
112 | }; | 112 | }; |
113 | #define tftpHdrSize(sizeof(tftp)-sizeof(tftp::tftpPacket)) | 113 | #define tftpHdrSize(sizeof(tftp)-sizeof(tftp::tftpPacket)) |
114 | #definetftpSlackSize sizeof(tftp::tftpLength) | 114 | #definetftpSlackSize sizeof(tftp::tftpLength) |
115 | 115 | ||
116 | struct acl_rule { | ||
117 | enum { | ||
118 | opRRQ=tftp::opRRQ, opWRQ=tftp::opWRQ | ||
119 | }; | ||
120 | int op; | ||
121 | DWORD addr, mask; | ||
122 | enum { | ||
123 | rrqGrant=0, rrqPrompt, rrqDeny, | ||
124 | rrqRules, | ||
125 | rrqNone=-1 | ||
126 | }; | ||
127 | enum { | ||
128 | wrqGrant=0, wrqPromptIfExists, wrqPrompt, wrqDeny, | ||
129 | wrqRules, | ||
130 | wrqNone=-1 | ||
131 | }; | ||
132 | int target; | ||
133 | |||
134 | acl_rule() | ||
135 | : op(-1), addr(0), mask(0), target(-1) { } | ||
136 | acl_rule(int o,DWORD a,DWORD m,int t) | ||
137 | : op(o), addr(a), mask(m), target(t) { } | ||
138 | acl_rule(const acl_rule& s) | ||
139 | : op(s.op), addr(s.addr), mask(s.mask), target(s.target) { } | ||
140 | |||
141 | BOOL IsValid() { | ||
142 | if(op==opRRQ) { | ||
143 | if(target<rrqNone || target>=rrqRules) | ||
144 | return FALSE; | ||
145 | }else if(op==opWRQ) { | ||
146 | if(target<wrqNone || target>=wrqRules) | ||
147 | return FALSE; | ||
148 | }else | ||
149 | return FALSE; | ||
150 | return TRUE; | ||
151 | } | ||
152 | |||
153 | BOOL IsMatch(int o,DWORD a) { | ||
154 | if(o!=op) return FALSE; | ||
155 | if( (a&mask) != (addr&mask)) return FALSE; | ||
156 | return TRUE; | ||
157 | } | ||
158 | |||
159 | CString str_addr() { | ||
160 | return inet_ntoa(*(struct in_addr*)&addr); | ||
161 | } | ||
162 | CString str_mask() { | ||
163 | return inet_ntoa(*(struct in_addr*)&mask); | ||
164 | } | ||
165 | CString str_target() { | ||
166 | if(op==opRRQ) { | ||
167 | switch(target) { | ||
168 | case rrqNone: return "fallback"; | ||
169 | case rrqGrant: return "grant"; | ||
170 | case rrqPrompt: return "prompt"; | ||
171 | case rrqDeny: return "deny"; | ||
172 | default: return "?"; | ||
173 | } | ||
174 | }else if(op==opWRQ) { | ||
175 | switch(target) { | ||
176 | case wrqNone: return "fallback"; | ||
177 | case wrqGrant: return "grant"; | ||
178 | case wrqPromptIfExists: return "prompt if exists"; | ||
179 | case wrqPrompt: return "prompt"; | ||
180 | case wrqDeny: return "deny"; | ||
181 | default: return "?"; | ||
182 | } | ||
183 | }else | ||
184 | return "?"; | ||
185 | } | ||
186 | |||
187 | void SaveProfile(CWinApp* app,int i) { | ||
188 | CString n; n.Format("%d",i); | ||
189 | app->WriteProfileInt("ACL","op_"+n,op); | ||
190 | app->WriteProfileString("ACL","addr_"+n,str_addr()); | ||
191 | app->WriteProfileString("ACL","mask_"+n,str_mask()); | ||
192 | app->WriteProfileInt("ACL","target_"+n,target); | ||
193 | } | ||
194 | |||
195 | void LoadProfile(CWinApp* app,int i) { | ||
196 | CString n; n.Format("%d",i); | ||
197 | op=app->GetProfileInt("ACL","op_"+n,-1); | ||
198 | addr=inet_addr(app->GetProfileString("ACL","addr_"+n)); | ||
199 | mask=inet_addr(app->GetProfileString("ACL","mask_"+n)); | ||
200 | target=app->GetProfileInt("ACL","target_"+n,-1); | ||
201 | } | ||
202 | |||
203 | }; | ||
204 | |||
205 | class acl_rules_t : public CArray<acl_rule,acl_rule&> { | ||
206 | public: | ||
207 | |||
208 | acl_rules_t& operator=(const acl_rules_t& s) { | ||
209 | // Copy(s); XXX: unsuprisingly, there's a bug in MFC Copy, *pDst++=*pSrc (no ++ for Src) | ||
210 | RemoveAll(); | ||
211 | int ns = s.GetSize(); | ||
212 | SetSize(ns); | ||
213 | for(int i=0;i<ns;++i) | ||
214 | m_pData[i]=s.m_pData[i]; | ||
215 | return *this; | ||
216 | } | ||
217 | |||
218 | int AppendRule(acl_rule& r) { | ||
219 | return Add(r); | ||
220 | } | ||
221 | |||
222 | void DeleteRule(int r) { | ||
223 | RemoveAt(r); | ||
224 | } | ||
225 | |||
226 | int FindRule(int op,DWORD ip) { | ||
227 | for(int i=0;i<GetSize();++i) | ||
228 | if(m_pData[i].IsMatch(op,ip)) | ||
229 | return i; | ||
230 | return -1; | ||
231 | } | ||
232 | |||
233 | int FindTarget(int op,DWORD ip) { | ||
234 | int r=FindRule(op,ip); | ||
235 | if(r<0) return -1; | ||
236 | return m_pData[r].target; | ||
237 | } | ||
238 | |||
239 | void SaveProfile(CWinApp* app) { | ||
240 | int s=GetSize(); | ||
241 | for(int i=0;i<s;++i) | ||
242 | m_pData[i].SaveProfile(app,i); | ||
243 | app->WriteProfileInt("ACL","rules",s); | ||
244 | } | ||
245 | void LoadProfile(CWinApp* app) { | ||
246 | RemoveAll(); | ||
247 | int s=app->GetProfileInt("ACL","rules",0); | ||
248 | for(int i=0;i<s;++i) { | ||
249 | acl_rule r; | ||
250 | r.LoadProfile(app,i); | ||
251 | if(r.IsValid()) | ||
252 | Add(r); | ||
253 | } | ||
254 | } | ||
255 | }; | ||
256 | |||
116 | class CPumpKINDlg; | 257 | class CPumpKINDlg; |
117 | class CListenSocket : public CAsyncSocket{ | 258 | class CListenSocket : public CAsyncSocket{ |
118 | public: | 259 | public: |
119 | virtual void OnReceive(int nErrorCode); | ||
120 | CPumpKINDlg* m_Daddy; | 260 | CPumpKINDlg* m_Daddy; |
261 | BOOL m_bListen; | ||
262 | |||
263 | CListenSocket() | ||
264 | : m_bListen(FALSE), m_Daddy(0) { } | ||
265 | |||
266 | BOOL SetListen(BOOL b); | ||
267 | virtual void OnReceive(int nErrorCode); | ||
121 | }; | 268 | }; |
122 | 269 | ||
123 | typedef CList<tftp*,tftp*>CTFTPList; | 270 | typedef CList<tftp*,tftp*>CTFTPList; |
124 | class CResolver; | 271 | class CResolver; |
125 | class CXferSocket : public CAsyncSocket{ | 272 | class CXferSocket : public CAsyncSocket{ |
126 | public: | 273 | public: |
127 | UINT m__timeOut; | 274 | UINT m__timeOut; |
128 | UINT m__blkSize; | 275 | UINT m__blkSize; |
129 | tftp::tftpOptions m_Options; | 276 | tftp::tftpOptions m_Options; |
130 | LONG m_xferSize; | 277 | LONG m_xferSize; |
131 | UINT m_timeOut; | 278 | UINT m_timeOut; |
132 | UINT m_blkSize; | 279 | UINT m_blkSize; |
@@ -211,77 +358,88 @@ public: | |||
211 | typedef CMap<SOCKET,SOCKET,CXferSocket*,CXferSocket*>CTIDMap; | 358 | typedef CMap<SOCKET,SOCKET,CXferSocket*,CXferSocket*>CTIDMap; |
212 | typedef CMap<CTime*,CTime*,CTime*,CTime*> CTimeMap; | 359 | typedef CMap<CTime*,CTime*,CTime*,CTime*> CTimeMap; |
213 | 360 | ||
214 | ///////////////////////////////////////////////////////////////////////////// | 361 | ///////////////////////////////////////////////////////////////////////////// |
215 | // CPumpKINDlg dialog | 362 | // CPumpKINDlg dialog |
216 | 363 | ||
217 | class CTrayer; | 364 | class CTrayer; |
218 | class CRetrier; | 365 | class CRetrier; |
219 | class CPumpKINDlg : public CDialog | 366 | class CPumpKINDlg : public CDialog |
220 | { | 367 | { |
221 | // Construction | 368 | // Construction |
222 | public: | 369 | public: |
370 | CString m_lastlogerr; | ||
371 | void LogLine(LPCTSTR str); | ||
372 | CString m_LogFile; | ||
373 | BOOL m_bListen; | ||
374 | acl_rules_t m_aclRules; | ||
223 | CString m_bnwRequest; | 375 | CString m_bnwRequest; |
224 | CString m_bnwSuccess; | 376 | CString m_bnwSuccess; |
225 | CString m_bnwAbort; | 377 | CString m_bnwAbort; |
226 | CBellsNWhistles m_bnw; | 378 | CBellsNWhistles m_bnw; |
227 | CTrayer *m_Trayer; | 379 | CTrayer *m_Trayer; |
228 | CTimeSpan m_RetryTimeOut; | 380 | CTimeSpan m_RetryTimeOut; |
229 | virtual ~CPumpKINDlg(); | 381 | virtual ~CPumpKINDlg(); |
230 | CRetrier* m_Retrier; | 382 | CRetrier* m_Retrier; |
231 | virtual BOOL PreTranslateMessage(MSG* pMsg); | 383 | virtual BOOL PreTranslateMessage(MSG* pMsg); |
232 | BOOL m_bShown; | 384 | BOOL m_bShown; |
233 | BOOL m_bExiting; | 385 | BOOL m_bExiting; |
234 | void SaveSettings(); | 386 | void SaveSettings(); |
235 | void LoadSettings(); | 387 | void LoadSettings(); |
236 | void SetupButtons(); | 388 | void SetupButtons(); |
237 | BITMAP m_bitmapBack; | 389 | BITMAP m_bitmapBack; |
238 | CBitmap m_bmpBack; | 390 | CBitmap m_bmpBack; |
239 | UINT m_PromptTimeOut; | 391 | UINT m_PromptTimeOut; |
240 | UINT m_SpeakPort; | 392 | UINT m_SpeakPort; |
241 | void LogLine(UINT msgID); | 393 | void LogLine(UINT msgID); |
242 | CTimeMap m_LogTimes; | 394 | CTimeMap m_LogTimes; |
243 | void LogLine(LPCTSTR str); | 395 | void LogLineToFile(LPCTSTR str); |
396 | void LogLineToScreen(LPCTSTR str); | ||
244 | int m_LogLength; | 397 | int m_LogLength; |
245 | enum{ | 398 | enum{ |
246 | subitemFile=0, subitemType, subitemPeer, subitemBytes, subitemTSize | 399 | subitemFile=0, subitemType, subitemPeer, subitemBytes, subitemTSize |
247 | }; | 400 | }; |
248 | int m_iWRQ; | 401 | int m_iWRQ; |
249 | int m_iRRQ; | 402 | int m_iRRQ; |
250 | CImageList m_Images; | 403 | CImageList m_Images; |
251 | CTIDMap m_Xfers; | 404 | CTIDMap m_Xfers; |
252 | CTimeSpan m_TFTPTimeOut; | 405 | CTimeSpan m_TFTPTimeOut; |
253 | enum{ | 406 | enum{ |
254 | rrqGiveAll=0, | 407 | rrqGiveAll=acl_rule::rrqGrant, |
255 | rrqAlwaysConfirm, | 408 | rrqAlwaysConfirm=acl_rule::rrqPrompt, |
256 | rrqDenyAll | 409 | rrqDenyAll=acl_rule::rrqDeny, |
410 | rrqFallback=acl_rule::rrqNone, | ||
411 | rrqGrant=rrqGiveAll, rrqDeny=rrqDenyAll, rrqPrompt=rrqAlwaysConfirm | ||
257 | }; | 412 | }; |
258 | enum{ | 413 | enum{ |
259 | wrqTakeAll=0, | 414 | wrqTakeAll=acl_rule::wrqGrant, |
260 | wrqConfirmIfExists, | 415 | wrqConfirmIfExists=acl_rule::wrqPromptIfExists, |
261 | wrqAlwaysConfirm, | 416 | wrqAlwaysConfirm=acl_rule::wrqPrompt, |
262 | wrqDenyAll | 417 | wrqDenyAll=acl_rule::wrqDeny, |
418 | wrqFallback=acl_rule::wrqNone, | ||
419 | wrqGrant=wrqTakeAll,wrqDeny=wrqDenyAll, wrqPrompt=wrqAlwaysConfirm | ||
263 | }; | 420 | }; |
264 | UINT m_RRQMode; | 421 | UINT m_RRQMode; |
265 | UINT m_WRQMode; | 422 | UINT m_WRQMode; |
266 | BOOL m_bTFTPSubdirs; | 423 | BOOL m_bTFTPSubdirs; |
267 | CString m_TFTPRoot; | 424 | CString m_TFTPRoot; |
268 | UINT m_ListenPort; | 425 | UINT m_ListenPort; |
269 | UINT m_BlockSize; | 426 | UINT m_BlockSize; |
270 | CListenSocket m_Listener; | 427 | CListenSocket m_Listener; |
271 | CPumpKINDlg(CWnd* pParent = NULL);// standard constructor | 428 | CPumpKINDlg(CWnd* pParent = NULL);// standard constructor |
272 | 429 | ||
273 | // Dialog Data | 430 | // Dialog Data |
274 | //{{AFX_DATA(CPumpKINDlg) | 431 | //{{AFX_DATA(CPumpKINDlg) |
275 | enum { IDD = IDD_PUMPKIN_DIALOG }; | 432 | enum { IDD = IDD_PUMPKIN_DIALOG }; |
433 | CButtonm_ListenCtl; | ||
276 | CButtonm_AbortCtl; | 434 | CButtonm_AbortCtl; |
277 | CButtonm_OptionsCtl; | 435 | CButtonm_OptionsCtl; |
278 | CListBoxm_Log; | 436 | CListBoxm_Log; |
279 | CListCtrlm_List; | 437 | CListCtrlm_List; |
280 | //}}AFX_DATA | 438 | //}}AFX_DATA |
281 | 439 | ||
282 | // ClassWizard generated virtual function overrides | 440 | // ClassWizard generated virtual function overrides |
283 | //{{AFX_VIRTUAL(CPumpKINDlg) | 441 | //{{AFX_VIRTUAL(CPumpKINDlg) |
284 | protected: | 442 | protected: |
285 | virtual void DoDataExchange(CDataExchange* pDX);// DDX/DDV support | 443 | virtual void DoDataExchange(CDataExchange* pDX);// DDX/DDV support |
286 | //}}AFX_VIRTUAL | 444 | //}}AFX_VIRTUAL |
287 | 445 | ||
@@ -301,27 +459,29 @@ protected: | |||
301 | afx_msg void OnOptions(); | 459 | afx_msg void OnOptions(); |
302 | afx_msg void OnTimer(UINT nIDEvent); | 460 | afx_msg void OnTimer(UINT nIDEvent); |
303 | afx_msg void OnExit(); | 461 | afx_msg void OnExit(); |
304 | afx_msg void OnPut(); | 462 | afx_msg void OnPut(); |
305 | afx_msg void OnGet(); | 463 | afx_msg void OnGet(); |
306 | afx_msg void OnDeleteallitemsConnections(NMHDR* pNMHDR, LRESULT* pResult); | 464 | afx_msg void OnDeleteallitemsConnections(NMHDR* pNMHDR, LRESULT* pResult); |
307 | afx_msg void OnDeleteitemConnections(NMHDR* pNMHDR, LRESULT* pResult); | 465 | afx_msg void OnDeleteitemConnections(NMHDR* pNMHDR, LRESULT* pResult); |
308 | afx_msg void OnInsertitemConnections(NMHDR* pNMHDR, LRESULT* pResult); | 466 | afx_msg void OnInsertitemConnections(NMHDR* pNMHDR, LRESULT* pResult); |
309 | afx_msg void OnItemchangedConnections(NMHDR* pNMHDR, LRESULT* pResult); | 467 | afx_msg void OnItemchangedConnections(NMHDR* pNMHDR, LRESULT* pResult); |
310 | afx_msg void OnAbort(); | 468 | afx_msg void OnAbort(); |
311 | afx_msg void OnClose(); | 469 | afx_msg void OnClose(); |
312 | afx_msg void OnTrayShowpumpkinwindow(); | 470 | afx_msg void OnTrayShowpumpkinwindow(); |
471 | afx_msg void OnTrayListen(); | ||
313 | afx_msg void OnTrayExit(); | 472 | afx_msg void OnTrayExit(); |
314 | afx_msg void OnTrayAboutpumpkin(); | 473 | afx_msg void OnTrayAboutpumpkin(); |
315 | afx_msg void OnTrayFetchfile(); | 474 | afx_msg void OnTrayFetchfile(); |
316 | afx_msg void OnTrayHelp(); | 475 | afx_msg void OnTrayHelp(); |
317 | afx_msg void OnTrayOptions(); | 476 | afx_msg void OnTrayOptions(); |
318 | afx_msg void OnTraySendfile(); | 477 | afx_msg void OnTraySendfile(); |
319 | afx_msg void OnWindowPosChanging(WINDOWPOS FAR* lpwndpos); | 478 | afx_msg void OnWindowPosChanging(WINDOWPOS FAR* lpwndpos); |
320 | afx_msg void OnSelchangeLog(); | 479 | afx_msg void OnSelchangeLog(); |
321 | afx_msg void OnTrayOpenfilesfolder(); | 480 | afx_msg void OnTrayOpenfilesfolder(); |
322 | afx_msg void OnDropFiles(HDROP hDropInfo); | 481 | afx_msg void OnDropFiles(HDROP hDropInfo); |
323 | virtual void OnCancel(); | 482 | virtual void OnCancel(); |
324 | afx_msg void OnHelp(); | 483 | afx_msg void OnHelp(); |
484 | afx_msg void OnListening(); | ||
325 | //}}AFX_MSG | 485 | //}}AFX_MSG |
326 | DECLARE_MESSAGE_MAP() | 486 | DECLARE_MESSAGE_MAP() |
327 | }; | 487 | }; |
@@ -28,24 +28,25 @@ CTrayer::~CTrayer() | |||
28 | 28 | ||
29 | BEGIN_MESSAGE_MAP(CTrayer, CWnd) | 29 | BEGIN_MESSAGE_MAP(CTrayer, CWnd) |
30 | //{{AFX_MSG_MAP(CTrayer) | 30 | //{{AFX_MSG_MAP(CTrayer) |
31 | ON_MESSAGE(WM_TRAYICON, OnTray) | 31 | ON_MESSAGE(WM_TRAYICON, OnTray) |
32 | ON_COMMAND(ID_TRAY_ABOUTPUMPKIN, OnTrayAboutpumpkin) | 32 | ON_COMMAND(ID_TRAY_ABOUTPUMPKIN, OnTrayAboutpumpkin) |
33 | ON_COMMAND(ID_TRAY_EXIT, OnTrayExit) | 33 | ON_COMMAND(ID_TRAY_EXIT, OnTrayExit) |
34 | ON_COMMAND(ID_TRAY_FETCHFILE, OnTrayFetchfile) | 34 | ON_COMMAND(ID_TRAY_FETCHFILE, OnTrayFetchfile) |
35 | ON_COMMAND(ID_TRAY_HELP, OnTrayHelp) | 35 | ON_COMMAND(ID_TRAY_HELP, OnTrayHelp) |
36 | ON_COMMAND(ID_TRAY_OPENFILESFOLDER, OnTrayOpenfilesfolder) | 36 | ON_COMMAND(ID_TRAY_OPENFILESFOLDER, OnTrayOpenfilesfolder) |
37 | ON_COMMAND(ID_TRAY_OPTIONS, OnTrayOptions) | 37 | ON_COMMAND(ID_TRAY_OPTIONS, OnTrayOptions) |
38 | ON_COMMAND(ID_TRAY_SENDFILE, OnTraySendfile) | 38 | ON_COMMAND(ID_TRAY_SENDFILE, OnTraySendfile) |
39 | ON_COMMAND(ID_TRAY_SHOWPUMPKINWINDOW, OnTrayShowpumpkinwindow) | 39 | ON_COMMAND(ID_TRAY_SHOWPUMPKINWINDOW, OnTrayShowpumpkinwindow) |
40 | ON_COMMAND(ID_TRAY_LISTEN, OnTrayListen) | ||
40 | //}}AFX_MSG_MAP | 41 | //}}AFX_MSG_MAP |
41 | END_MESSAGE_MAP() | 42 | END_MESSAGE_MAP() |
42 | 43 | ||
43 | 44 | ||
44 | ///////////////////////////////////////////////////////////////////////////// | 45 | ///////////////////////////////////////////////////////////////////////////// |
45 | // CTrayer message handlers | 46 | // CTrayer message handlers |
46 | 47 | ||
47 | CTrayer::CTrayer(CPumpKINDlg* daddy) | 48 | CTrayer::CTrayer(CPumpKINDlg* daddy) |
48 | : m_Daddy(daddy) | 49 | : m_Daddy(daddy) |
49 | { | 50 | { |
50 | m_inMenu=0; | 51 | m_inMenu=0; |
51 | } | 52 | } |
@@ -56,24 +57,25 @@ LRESULT CTrayer::OnTray(WPARAM wP,LPARAM lP) | |||
56 | switch(lP){ | 57 | switch(lP){ |
57 | case WM_RBUTTONDOWN: | 58 | case WM_RBUTTONDOWN: |
58 | { | 59 | { |
59 | CMenu menu; | 60 | CMenu menu; |
60 | VERIFY(menu.LoadMenu(IDM_POPUPS)); | 61 | VERIFY(menu.LoadMenu(IDM_POPUPS)); |
61 | CMenu *popUp = menu.GetSubMenu(0); | 62 | CMenu *popUp = menu.GetSubMenu(0); |
62 | ASSERT(popUp); | 63 | ASSERT(popUp); |
63 | CPoint pt; | 64 | CPoint pt; |
64 | VERIFY(::GetCursorPos(&pt)); | 65 | VERIFY(::GetCursorPos(&pt)); |
65 | m_inMenu++; | 66 | m_inMenu++; |
66 | SetForegroundWindow(); | 67 | SetForegroundWindow(); |
67 | popUp->CheckMenuItem(ID_TRAY_SHOWPUMPKINWINDOW,MF_BYCOMMAND|(IsWindowVisible()?MF_CHECKED:MF_UNCHECKED)); | 68 | popUp->CheckMenuItem(ID_TRAY_SHOWPUMPKINWINDOW,MF_BYCOMMAND|(IsWindowVisible()?MF_CHECKED:MF_UNCHECKED)); |
69 | popUp->CheckMenuItem(ID_TRAY_LISTEN,MF_BYCOMMAND|(m_Daddy->m_Listener.m_bListen?MF_CHECKED:MF_UNCHECKED)); | ||
68 | popUp->TrackPopupMenu(TPM_RIGHTALIGN|TPM_LEFTBUTTON|TPM_RIGHTBUTTON,pt.x,pt.y,this); | 70 | popUp->TrackPopupMenu(TPM_RIGHTALIGN|TPM_LEFTBUTTON|TPM_RIGHTBUTTON,pt.x,pt.y,this); |
69 | m_inMenu--; | 71 | m_inMenu--; |
70 | SendMessage(WM_NULL); | 72 | SendMessage(WM_NULL); |
71 | } | 73 | } |
72 | break; | 74 | break; |
73 | case WM_LBUTTONDOWN: | 75 | case WM_LBUTTONDOWN: |
74 | m_Daddy->SendMessage(WM_COMMAND,ID_TRAY_SHOWPUMPKINWINDOW); | 76 | m_Daddy->SendMessage(WM_COMMAND,ID_TRAY_SHOWPUMPKINWINDOW); |
75 | break; | 77 | break; |
76 | } | 78 | } |
77 | return 0; | 79 | return 0; |
78 | } | 80 | } |
79 | 81 | ||
@@ -107,12 +109,17 @@ void CTrayer::OnTrayOptions() | |||
107 | m_Daddy->SendMessage(WM_COMMAND,ID_TRAY_OPTIONS); | 109 | m_Daddy->SendMessage(WM_COMMAND,ID_TRAY_OPTIONS); |
108 | } | 110 | } |
109 | 111 | ||
110 | void CTrayer::OnTraySendfile() | 112 | void CTrayer::OnTraySendfile() |
111 | { | 113 | { |
112 | m_Daddy->SendMessage(WM_COMMAND,ID_TRAY_SENDFILE); | 114 | m_Daddy->SendMessage(WM_COMMAND,ID_TRAY_SENDFILE); |
113 | } | 115 | } |
114 | 116 | ||
115 | void CTrayer::OnTrayShowpumpkinwindow() | 117 | void CTrayer::OnTrayShowpumpkinwindow() |
116 | { | 118 | { |
117 | m_Daddy->SendMessage(WM_COMMAND,ID_TRAY_SHOWPUMPKINWINDOW); | 119 | m_Daddy->SendMessage(WM_COMMAND,ID_TRAY_SHOWPUMPKINWINDOW); |
118 | } | 120 | } |
121 | |||
122 | void CTrayer::OnTrayListen() | ||
123 | { | ||
124 | m_Daddy->SendMessage(WM_COMMAND,ID_TRAY_LISTEN); | ||
125 | } | ||
@@ -32,17 +32,18 @@ public: | |||
32 | // Generated message map functions | 32 | // Generated message map functions |
33 | protected: | 33 | protected: |
34 | //{{AFX_MSG(CTrayer) | 34 | //{{AFX_MSG(CTrayer) |
35 | afx_msg LRESULT OnTray(WPARAM,LPARAM); | 35 | afx_msg LRESULT OnTray(WPARAM,LPARAM); |
36 | afx_msg void OnTrayAboutpumpkin(); | 36 | afx_msg void OnTrayAboutpumpkin(); |
37 | afx_msg void OnTrayExit(); | 37 | afx_msg void OnTrayExit(); |
38 | afx_msg void OnTrayFetchfile(); | 38 | afx_msg void OnTrayFetchfile(); |
39 | afx_msg void OnTrayHelp(); | 39 | afx_msg void OnTrayHelp(); |
40 | afx_msg void OnTrayOpenfilesfolder(); | 40 | afx_msg void OnTrayOpenfilesfolder(); |
41 | afx_msg void OnTrayOptions(); | 41 | afx_msg void OnTrayOptions(); |
42 | afx_msg void OnTraySendfile(); | 42 | afx_msg void OnTraySendfile(); |
43 | afx_msg void OnTrayShowpumpkinwindow(); | 43 | afx_msg void OnTrayShowpumpkinwindow(); |
44 | afx_msg void OnTrayListen(); | ||
44 | //}}AFX_MSG | 45 | //}}AFX_MSG |
45 | DECLARE_MESSAGE_MAP() | 46 | DECLARE_MESSAGE_MAP() |
46 | }; | 47 | }; |
47 | 48 | ||
48 | ///////////////////////////////////////////////////////////////////////////// | 49 | ///////////////////////////////////////////////////////////////////////////// |
diff --git a/help/pumpkin.cnt b/help/pumpkin.cnt index 0e09da3..dfe42e5 100644 --- a/help/pumpkin.cnt +++ b/help/pumpkin.cnt | |||
@@ -3,12 +3,13 @@ | |||
3 | 1 PumpKIN | 3 | 1 PumpKIN |
4 | 2 About PumpKIN=About | 4 | 2 About PumpKIN=About |
5 | 2 What's New=News | 5 | 2 What's New=News |
6 | 2 Using PumpKIN=Using | 6 | 2 Using PumpKIN=Using |
7 | 1 PumpKIN Dialogs | 7 | 1 PumpKIN Dialogs |
8 | 2 Confirm Read Request Dialog=ConfirmRRQ | 8 | 2 Confirm Read Request Dialog=ConfirmRRQ |
9 | 2 Confirm Write Request Dialog=ConfirmWRQ | 9 | 2 Confirm Write Request Dialog=ConfirmWRQ |
10 | 2 Request Dialog=Request | 10 | 2 Request Dialog=Request |
11 | 1 PumpKIN Options | 11 | 1 PumpKIN Options |
12 | 2 Server Options=ServerOptions | 12 | 2 Server Options=ServerOptions |
13 | 2 Network Options=NetworkOptions | 13 | 2 Network Options=NetworkOptions |
14 | 2 Sounds Options=SoundsOptions | 14 | 2 Sounds Options=SoundsOptions |
15 | 2 Access Lists=ACL | ||
diff --git a/help/pumpkin.rtf b/help/pumpkin.rtf index b39ca9c..9c02ca9 100644 --- a/help/pumpkin.rtf +++ b/help/pumpkin.rtf | |||
@@ -9,34 +9,37 @@ DO NOT MODIFY THIS FILE DIRECTLY. EDIT XML DOCUMENT INSTEAD | |||
9 | \red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128; | 9 | \red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128; |
10 | \red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;} | 10 | \red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;} |
11 | 11 | ||
12 | \pard\plain\keepn | 12 | \pard\plain\keepn |
13 | #{\footnote About} | 13 | #{\footnote About} |
14 | ${\footnote About PumpKIN} | 14 | ${\footnote About PumpKIN} |
15 | K{\footnote about} | 15 | K{\footnote about} |
16 | { \f1\fs18\b\sb120 About {\b PumpKIN}} | 16 | { \f1\fs18\b\sb120 About {\b PumpKIN}} |
17 | \par\sa120\sb120\qj\pard \f1\fs18\sb120 {\b PumpKIN} is a program designed to send and receive files over the net while having {\uldb {\b T42}}{\v %!ExecFile("http://kin.klever.net/T42/")} or {\b\cf6 Wintalk} session running using {\i TFTP} ({\uldb {\b RFC1350}}{\v %!ExecFile("http://www.rfc-editor.org/rfc/rfc1350.txt")}) protocol. It includes full-functional {\i TFTP} server/client so it may be useful for maintaining {\uldb CISCO}{\v %!ExecFile("http://www.cisco.com/")} routers and other network equipment. | 17 | \par\sa120\sb120\qj\pard \f1\fs18\sb120 {\b PumpKIN} is a program designed to send and receive files over the net while having {\uldb {\b T42}}{\v %!ExecFile("http://kin.klever.net/T42/")} or {\b\cf6 Wintalk} session running using {\i TFTP} ({\uldb {\b RFC1350}}{\v %!ExecFile("http://www.rfc-editor.org/rfc/rfc1350.txt")}) protocol. It includes full-functional {\i TFTP} server/client so it may be useful for maintaining {\uldb CISCO}{\v %!ExecFile("http://www.cisco.com/")} routers and other network equipment. |
18 | \par\sa120\sb120\qj\pard \f1\fs18\sb120 | 18 | \par\sa120\sb120\qj\pard \f1\fs18\sb120 |
19 | \par\sa120\sb120\qj\pard \f1\fs18\sb120 {\b {\i Enjoy!}} | 19 | \par\sa120\sb120\qj\pard \f1\fs18\sb120 {\b {\i Enjoy!}} |
20 | { | 20 | { |
21 | \par\pard\plain\sb360\sa120 \f1\fs16 Copyright (c) 1997-2005 {\uldb\cf0 Klever Group (http://www.klever.net/)}{\v %!ExecFile("http://www.klever.net/")} | 21 | \par\pard\plain\sb360\sa120 \f1\fs16 Copyright (c) 1997-2006 {\uldb\cf0 Klever Group (http://www.klever.net/)}{\v %!ExecFile("http://www.klever.net/")} |
22 | \par\qj\sb120\sa120Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: | 22 | \par\qj\sb120\sa120Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: |
23 | \par The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. | 23 | \par The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. |
24 | \par \sa360 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | 24 | \par \sa360 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
25 | } | 25 | } |
26 | \page | 26 | \page |
27 | 27 | ||
28 | \pard\plain | 28 | \pard\plain |
29 | #{\footnote News} | 29 | #{\footnote News} |
30 | ${\footnote What's New} | 30 | ${\footnote What's New} |
31 | \par\pard\plain\f1\fs24\qc\cf2\b 2.7 - February 1st, 2006 | ||
32 | \par\pard\plain\fi0\li0\f1\fs18 \bullet Added acess lists based on request IP address and TFTP opcode for automating access policy | ||
33 | \par\pard\plain\fi0\li0\f1\fs18 \bullet Added possibility to start/stop TFTP server, while keeping client functionality intact | ||
31 | \par\pard\plain\f1\fs24\qc\cf2\b 2.6 - August 6th, 2005 | 34 | \par\pard\plain\f1\fs24\qc\cf2\b 2.6 - August 6th, 2005 |
32 | \par\pard\plain\fi0\li0\f1\fs18 \bullet more robust solution to the backslash/slash dilemma | 35 | \par\pard\plain\fi0\li0\f1\fs18 \bullet more robust solution to the backslash/slash dilemma |
33 | \par\pard\plain\fi0\li0\f1\fs18 \bullet A bit more elaborate error reporting | 36 | \par\pard\plain\fi0\li0\f1\fs18 \bullet A bit more elaborate error reporting |
34 | \par\pard\plain\fi0\li0\f1\fs18 \bullet Fixed uninstall procedure so that it works on XP | 37 | \par\pard\plain\fi0\li0\f1\fs18 \bullet Fixed uninstall procedure so that it works on XP |
35 | \par\pard\plain\f1\fs24\qc\cf2\b 2.5 - July 11th, 2004 | 38 | \par\pard\plain\f1\fs24\qc\cf2\b 2.5 - July 11th, 2004 |
36 | \par\pard\plain\fi0\li0\f1\fs18 \bullet Change of {\uldb license}{\v About} and opening the source. | 39 | \par\pard\plain\fi0\li0\f1\fs18 \bullet Change of {\uldb license}{\v About} and opening the source. |
37 | \par\pard\plain\fi0\li0\f1\fs18 \bullet Minor cosmetic changes | 40 | \par\pard\plain\fi0\li0\f1\fs18 \bullet Minor cosmetic changes |
38 | \par\pard\plain\f1\fs24\qc\cf2\b 2.0 - June 13th, 1998 | 41 | \par\pard\plain\f1\fs24\qc\cf2\b 2.0 - June 13th, 1998 |
39 | \par\pard\plain\fi0\li0\f1\fs18 \bullet Sounds customization. Now you can customize {\b PumpKIN} bells and whistles or turn them off completely. | 42 | \par\pard\plain\fi0\li0\f1\fs18 \bullet Sounds customization. Now you can customize {\b PumpKIN} bells and whistles or turn them off completely. |
40 | \par\pard\plain\fi0\li0\f1\fs18 \bullet Previous version of {\b PumpKIN} had a bug causing it to misbehave when you're requesting file from remote {\i tftp} server using {\b IP Address} (as opposed to {\b hostname}). | 43 | \par\pard\plain\fi0\li0\f1\fs18 \bullet Previous version of {\b PumpKIN} had a bug causing it to misbehave when you're requesting file from remote {\i tftp} server using {\b IP Address} (as opposed to {\b hostname}). |
41 | \par\pard\plain\fi0\li0\f1\fs18 \bullet Typo causing {\b PumpKIN} to log outgoing request in reverse (i.e. {\i Requesting 'hostname' from 'filename'}) fixed. | 44 | \par\pard\plain\fi0\li0\f1\fs18 \bullet Typo causing {\b PumpKIN} to log outgoing request in reverse (i.e. {\i Requesting 'hostname' from 'filename'}) fixed. |
42 | \par\pard\plain\fi0\li0\f1\fs18 \bullet Something else that you may not notice and I can not remember. | 45 | \par\pard\plain\fi0\li0\f1\fs18 \bullet Something else that you may not notice and I can not remember. |
@@ -103,19 +106,27 @@ ${\footnote Network Options} | |||
103 | \pard\plain\keepn | 106 | \pard\plain\keepn |
104 | #{\footnote ServerOptions} | 107 | #{\footnote ServerOptions} |
105 | ${\footnote Server Options} | 108 | ${\footnote Server Options} |
106 | { \f1\fs18\b\sb120 Server Options}\pard | 109 | { \f1\fs18\b\sb120 Server Options}\pard |
107 | \par \fi0\li0 \bullet {\b TFTP Filesystem root} - Specifies the location of files you're transmitting or where to start looking for them from. Defaults to the directory you start {\b PumpKIN} for the first time from. | 110 | \par \fi0\li0 \bullet {\b TFTP Filesystem root} - Specifies the location of files you're transmitting or where to start looking for them from. Defaults to the directory you start {\b PumpKIN} for the first time from. |
108 | \par \fi0\li0 \bullet {\b Allow access to subdirectories} - specifies whether you want allow access to the whole subtree of {\b TFTP Root} or only to the directory itself. | 111 | \par \fi0\li0 \bullet {\b Allow access to subdirectories} - specifies whether you want allow access to the whole subtree of {\b TFTP Root} or only to the directory itself. |
109 | \par \fi0\li0 \bullet {\b Read Request Behavior} - You may choose to automatically agree to give all files requested, to be prompted to confirm these operations, or to deny all requests as if you're not even here. | 112 | \par \fi0\li0 \bullet {\b Read Request Behavior} - You may choose to automatically agree to give all files requested, to be prompted to confirm these operations, or to deny all requests as if you're not even here. |
110 | \par \fi0\li0 \bullet {\b Write Request Behavior} - You may chose to {\b take all files} ({\i not recommended}), to {\b prompt only if file exists already}, {\b Always prompt} or {\b Deny all requests}. | 113 | \par \fi0\li0 \bullet {\b Write Request Behavior} - You may chose to {\b take all files} ({\i not recommended}), to {\b prompt only if file exists already}, {\b Always prompt} or {\b Deny all requests}. |
111 | \par \fi0\li0 \bullet {#{\footnote ConfirmationTimeOut}}{\b Confirmation timeout} - this is the time {\b PumpKIN} will wait for you to accept or deny request before it will give up and take default action which is always deny.\pard | 114 | \par \fi0\li0 \bullet {#{\footnote ConfirmationTimeOut}}{\b Confirmation timeout} - this is the time {\b PumpKIN} will wait for you to accept or deny request before it will give up and take default action which is always deny.\pard |
112 | \page | 115 | \page |
113 | 116 | ||
114 | \pard\plain\keepn | 117 | \pard\plain\keepn |
115 | #{\footnote SoundsOptoins} | 118 | #{\footnote SoundsOptions} |
116 | ${\footnote Sounds Options} | 119 | ${\footnote Sounds Options} |
117 | { \f1\fs18\b\sb120 Sounds} | 120 | { \f1\fs18\b\sb120 Sounds} |
118 | \par\sa120\sb120\qj\pard \f1\fs18\sb120 You can customize {\b PumpKIN} sounds notifications here. There are three customizable sounds defined - {\b Incoming request}, which notifies you about incoming request prompt if you're set to be prompted whenever incoming request occurs. {\b xfer Aborted} - which happens to sound every time transfer is interrupted for whatever reason - time out, explicit kill, denied access, etc. {\b xfer Finished} means that your file was successfully transmitted. | 121 | \par\sa120\sb120\qj\pard \f1\fs18\sb120 You can customize {\b PumpKIN} sounds notifications here. There are three customizable sounds defined - {\b Incoming request}, which notifies you about incoming request prompt if you're set to be prompted whenever incoming request occurs. {\b xfer Aborted} - which happens to sound every time transfer is interrupted for whatever reason - time out, explicit kill, denied access, etc. {\b xfer Finished} means that your file was successfully transmitted. |
119 | \par\sa120\sb120\qj\pard \f1\fs18\sb120 You can select any {\b .wav} file or one of the predefined sounds from the dropdown list. | 122 | \par\sa120\sb120\qj\pard \f1\fs18\sb120 You can select any {\b .wav} file or one of the predefined sounds from the dropdown list. |
120 | \page | 123 | \page |
124 | |||
125 | \pard\plain\keepn | ||
126 | #{\footnote ACL} | ||
127 | ${\footnote Access Lists} | ||
128 | { \f1\fs18\b\sb120 Access Lists} | ||
129 | \par\sa120\sb120\qj\pard \f1\fs18\sb120 You can slightly automate your access policies by setting up read/write request behavior for different incoming requests. | ||
130 | \par\sa120\sb120\qj\pard \f1\fs18\sb120 The rule consists of {\b request type}, source networke ({\b ip} and {\b netmask}) and {\b action} to take (see also {\uldb Server Options}{\v ServerOptions}). | ||
131 | \page | ||
121 | } \ No newline at end of file | 132 | } \ No newline at end of file |
diff --git a/help/pumpkin.xml b/help/pumpkin.xml index 38c54ca..944bb54 100644 --- a/help/pumpkin.xml +++ b/help/pumpkin.xml | |||
@@ -1,23 +1,27 @@ | |||
1 | <?xml version="1.0"?> | 1 | <?xml version="1.0"?> |
2 | <winhelp> | 2 | <winhelp> |
3 | <topic id="About" title="About PumpKIN" keywords="about"> | 3 | <topic id="About" title="About PumpKIN" keywords="about"> |
4 | <heading scroll="no">About <kin>PumpKIN</kin></heading> | 4 | <heading scroll="no">About <kin>PumpKIN</kin></heading> |
5 | <p><kin>PumpKIN</kin> is a program designed to send and receive files over the net while having <kin href="http://kin.klever.net/T42/">T42</kin> or <product>Wintalk</product> session running using <term>TFTP</term> (<rfc num="1350"/>) protocol. It includes full-functional <term>TFTP</term> server/client so it may be useful for maintaining <a href="http://www.cisco.com/">CISCO</a> routers and other network equipment.</p> | 5 | <p><kin>PumpKIN</kin> is a program designed to send and receive files over the net while having <kin href="http://kin.klever.net/T42/">T42</kin> or <product>Wintalk</product> session running using <term>TFTP</term> (<rfc num="1350"/>) protocol. It includes full-functional <term>TFTP</term> server/client so it may be useful for maintaining <a href="http://www.cisco.com/">CISCO</a> routers and other network equipment.</p> |
6 | <p/> | 6 | <p/> |
7 | <p><b><i>Enjoy!</i></b></p> | 7 | <p><b><i>Enjoy!</i></b></p> |
8 | <license years="1997-2005"/> | 8 | <license years="1997-2006"/> |
9 | <credist/> | 9 | <credist/> |
10 | </topic> | 10 | </topic> |
11 | <topic id="News" title="What's New"> | 11 | <topic id="News" title="What's New"> |
12 | <newsfor version="2.7" date=""> | ||
13 | <ni>Added acess lists based on request IP address and TFTP opcode for automating access policy</ni> | ||
14 | <ni>Added possibility to start/stop TFTP server, while keeping client functionality intact</ni> | ||
15 | </newsfor> | ||
12 | <newsfor version="2.6" date="August 6th, 2005"> | 16 | <newsfor version="2.6" date="August 6th, 2005"> |
13 | <ni>more robust solution to the backslash/slash dilemma</ni> | 17 | <ni>more robust solution to the backslash/slash dilemma</ni> |
14 | <ni>A bit more elaborate error reporting</ni> | 18 | <ni>A bit more elaborate error reporting</ni> |
15 | <ni>Fixed uninstall procedure so that it works on XP</ni> | 19 | <ni>Fixed uninstall procedure so that it works on XP</ni> |
16 | </newsfor> | 20 | </newsfor> |
17 | <newsfor version="2.5" date="July 11th, 2004"> | 21 | <newsfor version="2.5" date="July 11th, 2004"> |
18 | <ni>Change of <a href="#About">license</a> and opening the source.</ni> | 22 | <ni>Change of <a href="#About">license</a> and opening the source.</ni> |
19 | <ni>Minor cosmetic changes</ni> | 23 | <ni>Minor cosmetic changes</ni> |
20 | </newsfor> | 24 | </newsfor> |
21 | <newsfor version="2.0" date="June 13th, 1998"> | 25 | <newsfor version="2.0" date="June 13th, 1998"> |
22 | <ni>Sounds customization. Now you can customize <kin>PumpKIN</kin> bells and whistles or turn them off completely.</ni> | 26 | <ni>Sounds customization. Now you can customize <kin>PumpKIN</kin> bells and whistles or turn them off completely.</ni> |
23 | <ni>Previous version of <kin>PumpKIN</kin> had a bug causing it to misbehave when you're requesting file from remote <term>tftp</term> server using <b>IP Address</b> (as opposed to <b>hostname</b>).</ni> | 27 | <ni>Previous version of <kin>PumpKIN</kin> had a bug causing it to misbehave when you're requesting file from remote <term>tftp</term> server using <b>IP Address</b> (as opposed to <b>hostname</b>).</ni> |
@@ -27,24 +31,25 @@ | |||
27 | <newsfor version="1.5" date="February 12th, 1998"> | 31 | <newsfor version="1.5" date="February 12th, 1998"> |
28 | <ni>Transfer resumes. No checking on file contents is done, so it's up to you to decide whether you want to start transmission from the beginning or resume unfinished transfer.</ni> | 32 | <ni>Transfer resumes. No checking on file contents is done, so it's up to you to decide whether you want to start transmission from the beginning or resume unfinished transfer.</ni> |
29 | <ni>Support for <b>block size</b>, <b>trasnfer size</b> and <b>transfer timeout</b> options as described in <rfc num="1782"/>, <rfc num="1783"/> and <rfc num="1784"/>. I'm not sure if there are any other <term>TFTP</term> implementations supporting this, but at least it makes sense if you use <kin>PumpKIN</kin> on both ends.</ni> | 33 | <ni>Support for <b>block size</b>, <b>trasnfer size</b> and <b>transfer timeout</b> options as described in <rfc num="1782"/>, <rfc num="1783"/> and <rfc num="1784"/>. I'm not sure if there are any other <term>TFTP</term> implementations supporting this, but at least it makes sense if you use <kin>PumpKIN</kin> on both ends.</ni> |
30 | <ni>New Install program</ni> | 34 | <ni>New Install program</ni> |
31 | </newsfor> | 35 | </newsfor> |
32 | </topic> | 36 | </topic> |
33 | <topic id="Using" title="Using PumpKIN"> | 37 | <topic id="Using" title="Using PumpKIN"> |
34 | <heading scroll="no">Using <kin>PumpKIN</kin></heading> | 38 | <heading scroll="no">Using <kin>PumpKIN</kin></heading> |
35 | <p>This is a simple program for file exchange between two parties. It allows you to send files over the network to your party while having a <kin href="http://kin.klever.net/T42/">T42</kin> or <product>Wintalk</product> conversation. It uses open sessions to determine IP address of your party. Also you may use it as a <term>TFTP</term> client/server by itself. To get/put files from/to <term>TFTP</term> server you need to enter host name/IP address manually in the <a href="#Request">Request Dialog</a>.</p> | 39 | <p>This is a simple program for file exchange between two parties. It allows you to send files over the network to your party while having a <kin href="http://kin.klever.net/T42/">T42</kin> or <product>Wintalk</product> conversation. It uses open sessions to determine IP address of your party. Also you may use it as a <term>TFTP</term> client/server by itself. To get/put files from/to <term>TFTP</term> server you need to enter host name/IP address manually in the <a href="#Request">Request Dialog</a>.</p> |
36 | <p>To Abort transfer(s) currently in progress - select transfer(s) you want to terminate in the list and click <b>Abort xfer</b> button.</p> | 40 | <p>To Abort transfer(s) currently in progress - select transfer(s) you want to terminate in the list and click <b>Abort xfer</b> button.</p> |
37 | <p>You may want to hide <kin>PumpKIN</kin> window and leave it as a tray icon only. Just click the <image source="pumpkin.bmp"/> icon in the tray or simply close the window.</p> | 41 | <p>You may want to hide <kin>PumpKIN</kin> window and leave it as a tray icon only. Just click the <image source="pumpkin.bmp"/> icon in the tray or simply close the window.</p> |
38 | <p>Use <a href="#Options">Options</a> button to set <kin>PumpKIN</kin> options.</p> | 42 | <p>Use <a href="#Options">Options</a> button to set <kin>PumpKIN</kin> options.</p> |
43 | <p>You can start and stop <kin>PumpKIN</kin>'s <term>TFTP</term> server by checking and unchecking the <b>Server is running</b> checkbox in the lower right corner of main <kin>PumpKIN</kin> window.</p> | ||
39 | </topic> | 44 | </topic> |
40 | <topic id="ConfirmRRQ" title="Confirm Read Request Dialog"> | 45 | <topic id="ConfirmRRQ" title="Confirm Read Request Dialog"> |
41 | <heading scroll="no">Confirm Read Request Dialog</heading> | 46 | <heading scroll="no">Confirm Read Request Dialog</heading> |
42 | <p>When the file is requested from your <term>TFTP</term> server you may choose to <b>Grant Access</b> to this file or to <b>Deny Access</b>. If you hesitate to answer for <a href="#ConfirmationTimeout"><b>Confirmation timeout</b></a> (<i>default - 30 seconds</i>) <kin>PumpKIN</kin> defaults to denial of all requests.</p> | 47 | <p>When the file is requested from your <term>TFTP</term> server you may choose to <b>Grant Access</b> to this file or to <b>Deny Access</b>. If you hesitate to answer for <a href="#ConfirmationTimeout"><b>Confirmation timeout</b></a> (<i>default - 30 seconds</i>) <kin>PumpKIN</kin> defaults to denial of all requests.</p> |
43 | </topic> | 48 | </topic> |
44 | <topic id="ConfirmWRQ" title="Confirm Write Request Dialog"> | 49 | <topic id="ConfirmWRQ" title="Confirm Write Request Dialog"> |
45 | <heading scroll="no">Confirm Write Request Dialog</heading> | 50 | <heading scroll="no">Confirm Write Request Dialog</heading> |
46 | <p>Whenever your party sends you a file you have always a choice to accept it or not. You can also save the file under a different name by choosing the <b>Rename</b> option. If you already have file with such name you may chose to <b>resume</b> transfer. No checking on file contents is done. This option may or may not work depending on remote implementation of protocol. It does work if you use <kin>PumpKIN</kin> on both ends. If you are still unsure for <a href="#ConfirmationTimeOut"><b>Confirmation timeout</b></a> (<i>default - 30 seconds</i>) <kin>PumpKIN</kin> will make safe decision for you (deny).</p> | 51 | <p>Whenever your party sends you a file you have always a choice to accept it or not. You can also save the file under a different name by choosing the <b>Rename</b> option. If you already have file with such name you may chose to <b>resume</b> transfer. No checking on file contents is done. This option may or may not work depending on remote implementation of protocol. It does work if you use <kin>PumpKIN</kin> on both ends. If you are still unsure for <a href="#ConfirmationTimeOut"><b>Confirmation timeout</b></a> (<i>default - 30 seconds</i>) <kin>PumpKIN</kin> will make safe decision for you (deny).</p> |
47 | </topic> | 52 | </topic> |
48 | <topic id="Request" title="Request Dialog"> | 53 | <topic id="Request" title="Request Dialog"> |
49 | <heading scroll="no">Request Dialog</heading> | 54 | <heading scroll="no">Request Dialog</heading> |
50 | <p>Request dialog is aimed to let you form read or write request. You may set the following options:</p> | 55 | <p>Request dialog is aimed to let you form read or write request. You may set the following options:</p> |
@@ -74,18 +79,26 @@ | |||
74 | </ul> | 79 | </ul> |
75 | </topic> | 80 | </topic> |
76 | <topic id="ServerOptions" title="Server Options"> | 81 | <topic id="ServerOptions" title="Server Options"> |
77 | <heading scroll="no">Server Options</heading> | 82 | <heading scroll="no">Server Options</heading> |
78 | <ul> | 83 | <ul> |
79 | <li><b>TFTP Filesystem root</b> - Specifies the location of files you're transmitting or where to start looking for them from. Defaults to the directory you start <kin>PumpKIN</kin> for the first time from.</li> | 84 | <li><b>TFTP Filesystem root</b> - Specifies the location of files you're transmitting or where to start looking for them from. Defaults to the directory you start <kin>PumpKIN</kin> for the first time from.</li> |
80 | <li><b>Allow access to subdirectories</b> - specifies whether you want allow access to the whole subtree of <b>TFTP Root</b> or only to the directory itself.</li> | 85 | <li><b>Allow access to subdirectories</b> - specifies whether you want allow access to the whole subtree of <b>TFTP Root</b> or only to the directory itself.</li> |
81 | <li><b>Read Request Behavior</b> - You may choose to automatically agree to give all files requested, to be prompted to confirm these operations, or to deny all requests as if you're not even here.</li> | 86 | <li><b>Read Request Behavior</b> - You may choose to automatically agree to give all files requested, to be prompted to confirm these operations, or to deny all requests as if you're not even here.</li> |
82 | <li><b>Write Request Behavior</b> - You may chose to <b>take all files</b> (<i>not recommended</i>), to <b>prompt only if file exists already</b>, <b>Always prompt</b> or <b>Deny all requests</b>.</li> | 87 | <li><b>Write Request Behavior</b> - You may chose to <b>take all files</b> (<i>not recommended</i>), to <b>prompt only if file exists already</b>, <b>Always prompt</b> or <b>Deny all requests</b>.</li> |
83 | <li><a name="ConfirmationTimeOut"/><b>Confirmation timeout</b> - this is the time <kin>PumpKIN</kin> will wait for you to accept or deny request before it will give up and take default action which is always deny.</li> | 88 | <li><a name="ConfirmationTimeOut"/><b>Confirmation timeout</b> - this is the time <kin>PumpKIN</kin> will wait for you to accept or deny request before it will give up and take default action which is always deny.</li> |
84 | </ul> | 89 | </ul> |
85 | </topic> | 90 | </topic> |
86 | <topic id="SoundsOptoins" title="Sounds Options"> | 91 | <topic id="SoundsOptions" title="Sounds Options"> |
87 | <heading scroll="no">Sounds</heading> | 92 | <heading scroll="no">Sounds</heading> |
88 | <p>You can customize <kin>PumpKIN</kin> sounds notifications here. There are three customizable sounds defined - <b>Incoming request</b>, which notifies you about incoming request prompt if you're set to be prompted whenever incoming request occurs. <b>xfer Aborted</b> - which happens to sound every time transfer is interrupted for whatever reason - time out, explicit kill, denied access, etc. <b>xfer Finished</b> means that your file was successfully transmitted.</p> | 93 | <p>You can customize <kin>PumpKIN</kin> sounds notifications here. There are three customizable sounds defined - <b>Incoming request</b>, which notifies you about incoming request prompt if you're set to be prompted whenever incoming request occurs. <b>xfer Aborted</b> - which happens to sound every time transfer is interrupted for whatever reason - time out, explicit kill, denied access, etc. <b>xfer Finished</b> means that your file was successfully transmitted.</p> |
89 | <p>You can select any <b>.wav</b> file or one of the predefined sounds from the dropdown list.</p> | 94 | <p>You can select any <b>.wav</b> file or one of the predefined sounds from the dropdown list.</p> |
90 | </topic> | 95 | </topic> |
96 | <topic id="ACL" title="Access Lists"> | ||
97 | <heading scroll="no">Access Lists</heading> | ||
98 | <p>You can slightly automate your access policies by setting up read/write request behavior for different incoming requests.</p> | ||
99 | <p>The rule consists of <b>request type</b>, source network (<b>ip</b> and <b>netmask</b>) and <b>action</b> to take (see also <a href="#ServerOptions">Server Options</a>).</p> | ||
100 | <p>When <kin>PumpKIN</kin> receives request it goes through the list of rules and bases its decision on the first matching rule. To rearrange order of rules, select the rule you wish to move and use up and down arrows buttons on the right. To remove rule, use the cross button.</p> | ||
101 | <p>To add a new rule fill in the information about <b>request type</b>, source <b>address</b> and <b>netmask</b> and desired action. Then click on the 'Add new rule' button.</p> | ||
102 | <p>If you wish to amend the rule, select it in the rules list, change parameters below and click the 'Replace rule' button.</p> | ||
103 | </topic> | ||
91 | </winhelp> | 104 | </winhelp> |
diff --git a/install/Install.clw b/install/Install.clw new file mode 100644 index 0000000..6775b4c --- a/dev/null +++ b/install/Install.clw | |||
@@ -0,0 +1,35 @@ | |||
1 | ; CLW file contains information for the MFC ClassWizard | ||
2 | |||
3 | [General Info] | ||
4 | Version=1 | ||
5 | LastClass= | ||
6 | LastTemplate=CDialog | ||
7 | NewFileInclude1=#include "stdafx.h" | ||
8 | NewFileInclude2=#include "install.h" | ||
9 | LastPage=0 | ||
10 | |||
11 | ClassCount=0 | ||
12 | |||
13 | ResourceCount=2 | ||
14 | Resource1=IDD_INSTALLING (FALSE) | ||
15 | Resource2=IDD_PATH | ||
16 | |||
17 | [DLG:IDD_INSTALLING (FALSE)] | ||
18 | Type=1 | ||
19 | Class=? | ||
20 | ControlCount=4 | ||
21 | Control1=IDCANCEL,button,1342295808 | ||
22 | Control2=IDC_DISKS,SysAnimate32,1342242822 | ||
23 | Control3=IDC_STATE,static,1342308736 | ||
24 | Control4=IDC_PROGRESS,msctls_progress32,1342177280 | ||
25 | |||
26 | [DLG:IDD_PATH] | ||
27 | Type=1 | ||
28 | Class=? | ||
29 | ControlCount=5 | ||
30 | Control1=IDC_PROMPT,static,1342308352 | ||
31 | Control2=IDC_PATH,edit,1350631552 | ||
32 | Control3=IDC_BROWSE,button,1342242816 | ||
33 | Control4=IDOK,button,1342242817 | ||
34 | Control5=IDCANCEL,button,1342242816 | ||
35 | |||
diff --git a/install/install.cpp b/install/install.cpp index d11de03..cfe4d27 100644 --- a/install/install.cpp +++ b/install/install.cpp | |||
@@ -1,16 +1,16 @@ | |||
1 | #include "resource.h" | 1 | #include "resource.h" |
2 | #include "../shared-code/install.h" | 2 | #include "../shared-code/install.h" |
3 | 3 | ||
4 | #define VERSION "2.6" | 4 | #define VERSION "2.7" |
5 | #defineKINAME "PumpKIN " VERSION | 5 | #defineKINAME "PumpKIN " VERSION |
6 | #define SKINAME "PumpKIN" | 6 | #define SKINAME "PumpKIN" |
7 | 7 | ||
8 | BOOL Install(void) | 8 | BOOL Install(void) |
9 | { | 9 | { |
10 | STRING dPath = strFETCH_REG_KEY(HKEY_LOCAL_MACHINE,"Software\\Klever Group",SKINAME "Path"); | 10 | STRING dPath = strFETCH_REG_KEY(HKEY_LOCAL_MACHINE,"Software\\Klever Group",SKINAME "Path"); |
11 | STRING kPath = strFETCH_REG_KEY(HKEY_LOCAL_MACHINE,"Software\\Klever Group","KINPath"); | 11 | STRING kPath = strFETCH_REG_KEY(HKEY_LOCAL_MACHINE,"Software\\Klever Group","KINPath"); |
12 | LPCSTR qPath = ((LPCSTR)dPath)?(LPCSTR)dPath:(((LPCSTR)kPath)?(LPSTR)kPath:"C:\\Program Files\\Klever\\Nothings"); | 12 | LPCSTR qPath = ((LPCSTR)dPath)?(LPCSTR)dPath:(((LPCSTR)kPath)?(LPSTR)kPath:"C:\\Program Files\\Klever\\Nothings"); |
13 | STRING path = REQUESTPATH(" " KINAME,"\nEnter destination path:",qPath); | 13 | STRING path = REQUESTPATH(" " KINAME,"\nEnter destination path:",qPath); |
14 | if(!path) | 14 | if(!path) |
15 | return NULL; | 15 | return NULL; |
16 | 16 | ||
diff --git a/install/install.rc b/install/install.rc index cc621ad..9a03edb 100644 --- a/install/install.rc +++ b/install/install.rc | |||
@@ -122,49 +122,49 @@ END | |||
122 | 122 | ||
123 | // Icon with lowest ID value placed first to ensure application icon | 123 | // Icon with lowest ID value placed first to ensure application icon |
124 | // remains consistent on all systems. | 124 | // remains consistent on all systems. |
125 | IDI_ICON ICON DISCARDABLE "../shared-data/install-icon.ico" | 125 | IDI_ICON ICON DISCARDABLE "../shared-data/install-icon.ico" |
126 | 126 | ||
127 | #ifndef _MAC | 127 | #ifndef _MAC |
128 | ///////////////////////////////////////////////////////////////////////////// | 128 | ///////////////////////////////////////////////////////////////////////////// |
129 | // | 129 | // |
130 | // Version | 130 | // Version |
131 | // | 131 | // |
132 | 132 | ||
133 | VS_VERSION_INFO VERSIONINFO | 133 | VS_VERSION_INFO VERSIONINFO |
134 | FILEVERSION 2,6,0,0 | 134 | FILEVERSION 2,7,0,0 |
135 | PRODUCTVERSION 2,6,0,0 | 135 | PRODUCTVERSION 2,7,0,0 |
136 | FILEFLAGSMASK 0x3fL | 136 | FILEFLAGSMASK 0x3fL |
137 | #ifdef _DEBUG | 137 | #ifdef _DEBUG |
138 | FILEFLAGS 0x1L | 138 | FILEFLAGS 0x1L |
139 | #else | 139 | #else |
140 | FILEFLAGS 0x0L | 140 | FILEFLAGS 0x0L |
141 | #endif | 141 | #endif |
142 | FILEOS 0x40004L | 142 | FILEOS 0x40004L |
143 | FILETYPE 0x1L | 143 | FILETYPE 0x1L |
144 | FILESUBTYPE 0x0L | 144 | FILESUBTYPE 0x0L |
145 | BEGIN | 145 | BEGIN |
146 | BLOCK "StringFileInfo" | 146 | BLOCK "StringFileInfo" |
147 | BEGIN | 147 | BEGIN |
148 | BLOCK "040904b0" | 148 | BLOCK "040904b0" |
149 | BEGIN | 149 | BEGIN |
150 | VALUE "CompanyName", "Klever Group (http://www.klever.net/)\0" | 150 | VALUE "CompanyName", "Klever Group (http://www.klever.net/)\0" |
151 | VALUE "FileDescription", "INSTALL: PumpKIN, tftp client/daemon\0" | 151 | VALUE "FileDescription", "INSTALL: PumpKIN, tftp client/daemon\0" |
152 | VALUE "FileVersion", "2, 6, 0, 0\0" | 152 | VALUE "FileVersion", "2, 7, 0, 0\0" |
153 | VALUE "InternalName", "INSTALL\0" | 153 | VALUE "InternalName", "INSTALL\0" |
154 | VALUE "LegalCopyright", "Copyright © 1997-2005 Klever Group (http://www.klever.net/)\0" | 154 | VALUE "LegalCopyright", "Copyright © 1997-2006 Klever Group (http://www.klever.net/)\0" |
155 | VALUE "LegalTrademarks", "Klever Group (http://www.klever.net/)\0" | 155 | VALUE "LegalTrademarks", "Klever Group (http://www.klever.net/)\0" |
156 | VALUE "OriginalFilename", "INSTALL.EXE\0" | 156 | VALUE "OriginalFilename", "INSTALL.EXE\0" |
157 | VALUE "ProductName", "PumpKIN\0" | 157 | VALUE "ProductName", "PumpKIN\0" |
158 | VALUE "ProductVersion", "2, 6, 0, 0\0" | 158 | VALUE "ProductVersion", "2, 7, 0, 0\0" |
159 | END | 159 | END |
160 | END | 160 | END |
161 | BLOCK "VarFileInfo" | 161 | BLOCK "VarFileInfo" |
162 | BEGIN | 162 | BEGIN |
163 | VALUE "Translation", 0x409, 1200 | 163 | VALUE "Translation", 0x409, 1200 |
164 | END | 164 | END |
165 | END | 165 | END |
166 | 166 | ||
167 | #endif // !_MAC | 167 | #endif // !_MAC |
168 | 168 | ||
169 | #endif // English (U.S.) resources | 169 | #endif // English (U.S.) resources |
170 | ///////////////////////////////////////////////////////////////////////////// | 170 | ///////////////////////////////////////////////////////////////////////////// |
diff --git a/pumpkin.clw b/pumpkin.clw index 4ae747b..5344bfd 100644 --- a/pumpkin.clw +++ b/pumpkin.clw | |||
@@ -1,113 +1,120 @@ | |||
1 | ; CLW file contains information for the MFC ClassWizard | 1 | ; CLW file contains information for the MFC ClassWizard |
2 | 2 | ||
3 | [General Info] | 3 | [General Info] |
4 | Version=1 | 4 | Version=1 |
5 | LastClass=CPropsSounds | 5 | LastClass=CPropsServer |
6 | LastTemplate=CPropertyPage | 6 | LastTemplate=CComboBox |
7 | NewFileInclude1=#include "stdafx.h" | 7 | NewFileInclude1=#include "stdafx.h" |
8 | NewFileInclude2=#include "PumpKIN.h" | 8 | NewFileInclude2=#include "PumpKIN.h" |
9 | 9 | ||
10 | ClassCount=12 | 10 | ClassCount=14 |
11 | Class1=CPumpKINApp | 11 | Class1=CPumpKINApp |
12 | Class2=CPumpKINDlg | 12 | Class2=CPumpKINDlg |
13 | Class3=CAboutDlg | 13 | Class3=CAboutDlg |
14 | 14 | ||
15 | ResourceCount=9 | 15 | ResourceCount=10 |
16 | Resource1=IDD_REQUEST | 16 | Resource1=IDD_REQUEST |
17 | Resource2=IDD_PROPS_SERVER | 17 | Resource2=IDD_PROPS_NETWORK |
18 | Resource3=IDD_CONFIRM_RRQ | 18 | Resource3=IDD_CONFIRM_RRQ |
19 | Resource4=IDD_ABOUTBOX | 19 | Resource4=IDD_ABOUTBOX |
20 | Class4=CPropsServer | 20 | Class4=CPropsServer |
21 | Class5=CPropsNetwork | 21 | Class5=CPropsNetwork |
22 | Resource5=IDD_CONFIRM_WRQ | 22 | Resource5=IDD_CONFIRM_WRQ |
23 | Resource6=IDD_PROPS_NETWORK | 23 | Resource6=IDD_PROPS_ACL |
24 | Class6=CConfirmRRQDlg | 24 | Class6=CConfirmRRQDlg |
25 | Class7=CConfirmWRQDlg | 25 | Class7=CConfirmWRQDlg |
26 | Resource7=IDD_PUMPKIN_DIALOG | 26 | Resource7=IDD_PUMPKIN_DIALOG |
27 | Class8=CRequestDlg | 27 | Class8=CRequestDlg |
28 | Class9=CResolver | 28 | Class9=CResolver |
29 | Class10=CRetrier | 29 | Class10=CRetrier |
30 | Class11=CTrayer | 30 | Class11=CTrayer |
31 | Resource8=IDD_PROPS_SOUNDS | 31 | Resource8=IDD_PROPS_SOUNDS |
32 | Class12=CPropsSounds | 32 | Class12=CPropsSounds |
33 | Resource9=IDM_POPUPS | 33 | Resource9=IDM_POPUPS |
34 | Class13=CPropsACL | ||
35 | Class14=CACLTargetCombo | ||
36 | Resource10=IDD_PROPS_SERVER | ||
34 | 37 | ||
35 | [CLS:CPumpKINApp] | 38 | [CLS:CPumpKINApp] |
36 | Type=0 | 39 | Type=0 |
37 | HeaderFile=PumpKIN.h | 40 | HeaderFile=PumpKIN.h |
38 | ImplementationFile=PumpKIN.cpp | 41 | ImplementationFile=PumpKIN.cpp |
39 | Filter=N | 42 | Filter=N |
40 | 43 | ||
41 | [CLS:CPumpKINDlg] | 44 | [CLS:CPumpKINDlg] |
42 | Type=0 | 45 | Type=0 |
43 | HeaderFile=PumpKINDlg.h | 46 | HeaderFile=PumpKINDlg.h |
44 | ImplementationFile=PumpKINDlg.cpp | 47 | ImplementationFile=PumpKINDlg.cpp |
45 | Filter=W | 48 | Filter=W |
46 | BaseClass=CDialog | 49 | BaseClass=CDialog |
47 | VirtualFilter=dWC | 50 | VirtualFilter=dWC |
48 | LastObject=ID_HELP | 51 | LastObject=CPumpKINDlg |
49 | 52 | ||
50 | [CLS:CAboutDlg] | 53 | [CLS:CAboutDlg] |
51 | Type=0 | 54 | Type=0 |
52 | HeaderFile=PumpKINDlg.h | 55 | HeaderFile=PumpKINDlg.h |
53 | ImplementationFile=PumpKINDlg.cpp | 56 | ImplementationFile=PumpKINDlg.cpp |
54 | Filter=D | 57 | Filter=D |
55 | BaseClass=CDialog | 58 | BaseClass=CDialog |
56 | VirtualFilter=dWC | 59 | VirtualFilter=dWC |
57 | LastObject=CAboutDlg | 60 | LastObject=CAboutDlg |
58 | 61 | ||
59 | [DLG:IDD_ABOUTBOX] | 62 | [DLG:IDD_ABOUTBOX] |
60 | Type=1 | 63 | Type=1 |
61 | Class=CAboutDlg | 64 | Class=CAboutDlg |
62 | ControlCount=5 | 65 | ControlCount=5 |
63 | Control1=IDC_STATIC,static,1342177283 | 66 | Control1=IDC_STATIC,static,1342177283 |
64 | Control2=IDC_STATIC,static,1342308480 | 67 | Control2=IDC_STATIC,static,1342308480 |
65 | Control3=IDC_STATIC,static,1342308352 | 68 | Control3=IDC_STATIC,static,1342308352 |
66 | Control4=IDOK,button,1342373889 | 69 | Control4=IDOK,button,1342373889 |
67 | Control5=IDC_KLEVERNET,button,1342242816 | 70 | Control5=IDC_KLEVERNET,button,1342242816 |
68 | 71 | ||
69 | [DLG:IDD_PUMPKIN_DIALOG] | 72 | [DLG:IDD_PUMPKIN_DIALOG] |
70 | Type=1 | 73 | Type=1 |
71 | Class=CPumpKINDlg | 74 | Class=CPumpKINDlg |
72 | ControlCount=9 | 75 | ControlCount=10 |
73 | Control1=IDC_CONNECTIONS,SysListView32,1350631681 | 76 | Control1=IDC_CONNECTIONS,SysListView32,1350631681 |
74 | Control2=IDC_GET,button,1342259200 | 77 | Control2=IDC_GET,button,1342259200 |
75 | Control3=IDC_PUT,button,1342259200 | 78 | Control3=IDC_PUT,button,1342259200 |
76 | Control4=IDC_ABORT,button,1342259200 | 79 | Control4=IDC_ABORT,button,1342259200 |
77 | Control5=IDC_OPTIONS,button,1342259200 | 80 | Control5=IDC_OPTIONS,button,1342259200 |
78 | Control6=IDC_EXIT,button,1342259200 | 81 | Control6=IDC_EXIT,button,1342259200 |
79 | Control7=ID_HELP,button,1342259200 | 82 | Control7=ID_HELP,button,1342259200 |
80 | Control8=IDC_LOG,listbox,1353728129 | 83 | Control8=IDC_LOG,listbox,1353728129 |
81 | Control9=IDCANCEL,button,1073741824 | 84 | Control9=IDCANCEL,button,1073741824 |
85 | Control10=IDC_LISTENING,button,1342275619 | ||
82 | 86 | ||
83 | [DLG:IDD_PROPS_SERVER] | 87 | [DLG:IDD_PROPS_SERVER] |
84 | Type=1 | 88 | Type=1 |
85 | Class=CPropsServer | 89 | Class=CPropsServer |
86 | ControlCount=15 | 90 | ControlCount=18 |
87 | Control1=IDC_STATIC,button,1342177287 | 91 | Control1=IDC_STATIC,button,1342177287 |
88 | Control2=IDC_TFTPROOT,edit,1350631552 | 92 | Control2=IDC_TFTPROOT,edit,1350631552 |
89 | Control3=IDC_BROWSE,button,1342242880 | 93 | Control3=IDC_BROWSE,button,1342242880 |
90 | Control4=IDC_TFTPSUBDIRS,button,1342242819 | 94 | Control4=IDC_TFTPSUBDIRS,button,1342242819 |
91 | Control5=IDC_STATIC,button,1342177287 | 95 | Control5=IDC_STATIC,button,1342177287 |
92 | Control6=IDC_RRQ_GIVEALL,button,1342324745 | 96 | Control6=IDC_RRQ_GIVEALL,button,1342324745 |
93 | Control7=IDC_RRQ_ALWAYSCONFIRM,button,1342193673 | 97 | Control7=IDC_RRQ_ALWAYSCONFIRM,button,1342193673 |
94 | Control8=IDC_RRQ_DENYALL,button,1342193673 | 98 | Control8=IDC_RRQ_DENYALL,button,1342193673 |
95 | Control9=IDC_STATIC,button,1342308359 | 99 | Control9=IDC_STATIC,button,1342308359 |
96 | Control10=IDC_WRQ_TAKEALL,button,1342308361 | 100 | Control10=IDC_WRQ_TAKEALL,button,1342308361 |
97 | Control11=IDC_WRQ_PROMPTEXISTING,button,1342177289 | 101 | Control11=IDC_WRQ_PROMPTEXISTING,button,1342177289 |
98 | Control12=IDC_WRQ_ALWAYSCONFIRM,button,1342177289 | 102 | Control12=IDC_WRQ_ALWAYSCONFIRM,button,1342177289 |
99 | Control13=IDC_WRQ_DENYALL,button,1342177289 | 103 | Control13=IDC_WRQ_DENYALL,button,1342177289 |
100 | Control14=IDC_STATIC,static,1342308609 | 104 | Control14=IDC_STATIC,static,1342308609 |
101 | Control15=IDC_PROMPTTIMEOUT,msctls_trackbar32,1342242823 | 105 | Control15=IDC_PROMPTTIMEOUT,msctls_trackbar32,1342242823 |
106 | Control16=IDC_STATIC,button,1342177287 | ||
107 | Control17=IDC_LOGFILE,edit,1350631552 | ||
108 | Control18=IDC_LOGFILE_BROWSE,button,1342242880 | ||
102 | 109 | ||
103 | [DLG:IDD_PROPS_NETWORK] | 110 | [DLG:IDD_PROPS_NETWORK] |
104 | Type=1 | 111 | Type=1 |
105 | Class=CPropsNetwork | 112 | Class=CPropsNetwork |
106 | ControlCount=15 | 113 | ControlCount=15 |
107 | Control1=IDC_STATIC,button,1342177287 | 114 | Control1=IDC_STATIC,button,1342177287 |
108 | Control2=IDC_STATIC,static,1342308354 | 115 | Control2=IDC_STATIC,static,1342308354 |
109 | Control3=IDC_LISTENPORT,edit,1350631552 | 116 | Control3=IDC_LISTENPORT,edit,1350631552 |
110 | Control4=IDC_LISTENSPIN,msctls_updown32,1342177463 | 117 | Control4=IDC_LISTENSPIN,msctls_updown32,1342177463 |
111 | Control5=IDC_STATIC,static,1342308354 | 118 | Control5=IDC_STATIC,static,1342308354 |
112 | Control6=IDC_SPEAKPORT,edit,1350631552 | 119 | Control6=IDC_SPEAKPORT,edit,1350631552 |
113 | Control7=IDC_SPEAKSPIN,msctls_updown32,1342177463 | 120 | Control7=IDC_SPEAKSPIN,msctls_updown32,1342177463 |
@@ -118,34 +125,34 @@ Control11=IDC_STATIC,static,1342308352 | |||
118 | Control12=IDC_STATIC,static,1342308352 | 125 | Control12=IDC_STATIC,static,1342308352 |
119 | Control13=IDC_STATIC,static,1342308352 | 126 | Control13=IDC_STATIC,static,1342308352 |
120 | Control14=IDC_BLOCKSIZE,edit,1350639744 | 127 | Control14=IDC_BLOCKSIZE,edit,1350639744 |
121 | Control15=IDC_BSIZESPIN,msctls_updown32,1342177463 | 128 | Control15=IDC_BSIZESPIN,msctls_updown32,1342177463 |
122 | 129 | ||
123 | [CLS:CPropsServer] | 130 | [CLS:CPropsServer] |
124 | Type=0 | 131 | Type=0 |
125 | HeaderFile=PropsServer.h | 132 | HeaderFile=PropsServer.h |
126 | ImplementationFile=PropsServer.cpp | 133 | ImplementationFile=PropsServer.cpp |
127 | BaseClass=CPropertyPage | 134 | BaseClass=CPropertyPage |
128 | Filter=D | 135 | Filter=D |
129 | VirtualFilter=idWC | 136 | VirtualFilter=idWC |
130 | LastObject=CPropsServer | 137 | LastObject=IDC_LOGFILE_BROWSE |
131 | 138 | ||
132 | [CLS:CPropsNetwork] | 139 | [CLS:CPropsNetwork] |
133 | Type=0 | 140 | Type=0 |
134 | HeaderFile=PropsNetwork.h | 141 | HeaderFile=PropsNetwork.h |
135 | ImplementationFile=PropsNetwork.cpp | 142 | ImplementationFile=PropsNetwork.cpp |
136 | BaseClass=CPropertyPage | 143 | BaseClass=CPropertyPage |
137 | Filter=D | 144 | Filter=D |
138 | VirtualFilter=idWC | 145 | VirtualFilter=idWC |
139 | LastObject=CPropsNetwork | 146 | LastObject=IDC_BLOCKSIZE |
140 | 147 | ||
141 | [DLG:IDD_CONFIRM_RRQ] | 148 | [DLG:IDD_CONFIRM_RRQ] |
142 | Type=1 | 149 | Type=1 |
143 | Class=CConfirmRRQDlg | 150 | Class=CConfirmRRQDlg |
144 | ControlCount=9 | 151 | ControlCount=9 |
145 | Control1=IDOK,button,1342242817 | 152 | Control1=IDOK,button,1342242817 |
146 | Control2=IDCANCEL,button,1342242816 | 153 | Control2=IDCANCEL,button,1342242816 |
147 | Control3=IDC_STATIC,static,1342308352 | 154 | Control3=IDC_STATIC,static,1342308352 |
148 | Control4=IDC_HOST,static,1350701313 | 155 | Control4=IDC_HOST,static,1350701313 |
149 | Control5=IDC_STATIC,static,1342308353 | 156 | Control5=IDC_STATIC,static,1342308353 |
150 | Control6=IDC_FILE,static,1350701313 | 157 | Control6=IDC_FILE,static,1350701313 |
151 | Control7=IDC_STATIC,static,1342177296 | 158 | Control7=IDC_STATIC,static,1342177296 |
@@ -221,30 +228,31 @@ HeaderFile=Resolver.h | |||
221 | ImplementationFile=Resolver.cpp | 228 | ImplementationFile=Resolver.cpp |
222 | BaseClass=CWnd | 229 | BaseClass=CWnd |
223 | Filter=W | 230 | Filter=W |
224 | LastObject=CResolver | 231 | LastObject=CResolver |
225 | VirtualFilter=WC | 232 | VirtualFilter=WC |
226 | 233 | ||
227 | [MNU:IDM_POPUPS] | 234 | [MNU:IDM_POPUPS] |
228 | Type=1 | 235 | Type=1 |
229 | Class=CPumpKINDlg | 236 | Class=CPumpKINDlg |
230 | Command1=ID_TRAY_SENDFILE | 237 | Command1=ID_TRAY_SENDFILE |
231 | Command2=ID_TRAY_FETCHFILE | 238 | Command2=ID_TRAY_FETCHFILE |
232 | Command3=ID_TRAY_OPTIONS | 239 | Command3=ID_TRAY_OPTIONS |
233 | Command4=ID_TRAY_SHOWPUMPKINWINDOW | 240 | Command4=ID_TRAY_LISTEN |
234 | Command5=ID_TRAY_OPENFILESFOLDER | 241 | Command5=ID_TRAY_SHOWPUMPKINWINDOW |
235 | Command6=ID_TRAY_HELP | 242 | Command6=ID_TRAY_OPENFILESFOLDER |
236 | Command7=ID_TRAY_ABOUTPUMPKIN | 243 | Command7=ID_TRAY_HELP |
237 | Command8=ID_TRAY_EXIT | 244 | Command8=ID_TRAY_ABOUTPUMPKIN |
238 | CommandCount=8 | 245 | Command9=ID_TRAY_EXIT |
246 | CommandCount=9 | ||
239 | 247 | ||
240 | [CLS:CRetrier] | 248 | [CLS:CRetrier] |
241 | Type=0 | 249 | Type=0 |
242 | HeaderFile=Retrier.h | 250 | HeaderFile=Retrier.h |
243 | ImplementationFile=Retrier.cpp | 251 | ImplementationFile=Retrier.cpp |
244 | BaseClass=CWnd | 252 | BaseClass=CWnd |
245 | Filter=W | 253 | Filter=W |
246 | LastObject=CRetrier | 254 | LastObject=CRetrier |
247 | VirtualFilter=WC | 255 | VirtualFilter=WC |
248 | 256 | ||
249 | [CLS:CTrayer] | 257 | [CLS:CTrayer] |
250 | Type=0 | 258 | Type=0 |
@@ -272,12 +280,48 @@ Control10=IDC_ABORTED,combobox,1344340290 | |||
272 | Control11=IDC_ABORTED_BROWSE,button,1342242880 | 280 | Control11=IDC_ABORTED_BROWSE,button,1342242880 |
273 | Control12=IDC_ABORTED_PLAY,button,1342242880 | 281 | Control12=IDC_ABORTED_PLAY,button,1342242880 |
274 | 282 | ||
275 | [CLS:CPropsSounds] | 283 | [CLS:CPropsSounds] |
276 | Type=0 | 284 | Type=0 |
277 | HeaderFile=PropsSounds.h | 285 | HeaderFile=PropsSounds.h |
278 | ImplementationFile=PropsSounds.cpp | 286 | ImplementationFile=PropsSounds.cpp |
279 | BaseClass=CPropertyPage | 287 | BaseClass=CPropertyPage |
280 | Filter=D | 288 | Filter=D |
281 | LastObject=CPropsSounds | 289 | LastObject=CPropsSounds |
282 | VirtualFilter=idWC | 290 | VirtualFilter=idWC |
283 | 291 | ||
292 | [DLG:IDD_PROPS_ACL] | ||
293 | Type=1 | ||
294 | Class=CPropsACL | ||
295 | ControlCount=14 | ||
296 | Control1=IDC_ACL_LIST,SysListView32,1350631425 | ||
297 | Control2=IDC_ACL_UP,button,1342246720 | ||
298 | Control3=IDC_ACL_DOWN,button,1342246720 | ||
299 | Control4=IDC_ACL_REMOVE,button,1342246720 | ||
300 | Control5=IDC_STATIC,static,1342308352 | ||
301 | Control6=IDC_ACL_XFER,combobox,1344339971 | ||
302 | Control7=IDC_STATIC,static,1342308352 | ||
303 | Control8=IDC_ACL_ADDR,edit,1350631552 | ||
304 | Control9=IDC_STATIC,static,1342308352 | ||
305 | Control10=IDC_ACL_NETMASK,edit,1350631552 | ||
306 | Control11=IDC_STATIC,static,1342308352 | ||
307 | Control12=IDC_ACL_RULE,combobox,1344339971 | ||
308 | Control13=IDC_ACL_ADD,button,1342242816 | ||
309 | Control14=IDC_ACL_REPLACE,button,1342242816 | ||
310 | |||
311 | [CLS:CPropsACL] | ||
312 | Type=0 | ||
313 | HeaderFile=PropsACL.h | ||
314 | ImplementationFile=PropsACL.cpp | ||
315 | BaseClass=CPropertyPage | ||
316 | Filter=D | ||
317 | LastObject=CPropsACL | ||
318 | VirtualFilter=idWC | ||
319 | |||
320 | [CLS:CACLTargetCombo] | ||
321 | Type=0 | ||
322 | HeaderFile=ACLTargetCombo.h | ||
323 | ImplementationFile=ACLTargetCombo.cpp | ||
324 | BaseClass=CComboBox | ||
325 | Filter=W | ||
326 | LastObject=CACLTargetCombo | ||
327 | |||
diff --git a/pumpkin.mak b/pumpkin.mak index bd466fe..7d2ec22 100644 --- a/pumpkin.mak +++ b/pumpkin.mak | |||
@@ -57,26 +57,28 @@ MTL=mktyplib.exe | |||
57 | # PROP Target_Dir "" | 57 | # PROP Target_Dir "" |
58 | OUTDIR=.\Release | 58 | OUTDIR=.\Release |
59 | INTDIR=.\Release | 59 | INTDIR=.\Release |
60 | # Begin Custom Macros | 60 | # Begin Custom Macros |
61 | OutDir=.\Release | 61 | OutDir=.\Release |
62 | TargetName=pumpkin | 62 | TargetName=pumpkin |
63 | # End Custom Macros | 63 | # End Custom Macros |
64 | 64 | ||
65 | ALL : "$(OUTDIR)\pumpkin.exe" "$(OUTDIR)\pumpkin.ex_" "$(OUTDIR)\pumpkin.hlp"\ | 65 | ALL : "$(OUTDIR)\pumpkin.exe" "$(OUTDIR)\pumpkin.ex_" "$(OUTDIR)\pumpkin.hlp"\ |
66 | "$(OUTDIR)\pumpkin.cnt" "$(OUTDIR)\pumpkin.hl_" "$(OUTDIR)\pumpkin.cn_" | 66 | "$(OUTDIR)\pumpkin.cnt" "$(OUTDIR)\pumpkin.hl_" "$(OUTDIR)\pumpkin.cn_" |
67 | 67 | ||
68 | CLEAN : | 68 | CLEAN : |
69 | -@erase "$(INTDIR)\ACLTargetCombo.obj" | ||
69 | -@erase "$(INTDIR)\ConfirmRRQDlg.obj" | 70 | -@erase "$(INTDIR)\ConfirmRRQDlg.obj" |
70 | -@erase "$(INTDIR)\ConfirmWRQDlg.obj" | 71 | -@erase "$(INTDIR)\ConfirmWRQDlg.obj" |
72 | -@erase "$(INTDIR)\PropsACL.obj" | ||
71 | -@erase "$(INTDIR)\PropsNetwork.obj" | 73 | -@erase "$(INTDIR)\PropsNetwork.obj" |
72 | -@erase "$(INTDIR)\PropsServer.obj" | 74 | -@erase "$(INTDIR)\PropsServer.obj" |
73 | -@erase "$(INTDIR)\PropsSounds.obj" | 75 | -@erase "$(INTDIR)\PropsSounds.obj" |
74 | -@erase "$(INTDIR)\pumpkin.cn_" | 76 | -@erase "$(INTDIR)\pumpkin.cn_" |
75 | -@erase "$(INTDIR)\pumpkin.cnt" | 77 | -@erase "$(INTDIR)\pumpkin.cnt" |
76 | -@erase "$(INTDIR)\pumpkin.hl_" | 78 | -@erase "$(INTDIR)\pumpkin.hl_" |
77 | -@erase "$(INTDIR)\pumpkin.hlp" | 79 | -@erase "$(INTDIR)\pumpkin.hlp" |
78 | -@erase "$(INTDIR)\PumpKIN.obj" | 80 | -@erase "$(INTDIR)\PumpKIN.obj" |
79 | -@erase "$(INTDIR)\pumpkin.pch" | 81 | -@erase "$(INTDIR)\pumpkin.pch" |
80 | -@erase "$(INTDIR)\pumpkin.res" | 82 | -@erase "$(INTDIR)\pumpkin.res" |
81 | -@erase "$(INTDIR)\PumpKINDlg.obj" | 83 | -@erase "$(INTDIR)\PumpKINDlg.obj" |
82 | -@erase "$(INTDIR)\RequestDlg.obj" | 84 | -@erase "$(INTDIR)\RequestDlg.obj" |
@@ -106,26 +108,28 @@ RSC_PROJ=/l 0x409 /fo"$(INTDIR)/pumpkin.res" /d "NDEBUG" /d "_AFXDLL" | |||
106 | BSC32=bscmake.exe | 108 | BSC32=bscmake.exe |
107 | # ADD BASE BSC32 /nologo | 109 | # ADD BASE BSC32 /nologo |
108 | # ADD BSC32 /nologo | 110 | # ADD BSC32 /nologo |
109 | BSC32_FLAGS=/nologo /o"$(OUTDIR)/pumpkin.bsc" | 111 | BSC32_FLAGS=/nologo /o"$(OUTDIR)/pumpkin.bsc" |
110 | BSC32_SBRS= \ | 112 | BSC32_SBRS= \ |
111 | 113 | ||
112 | LINK32=link.exe | 114 | LINK32=link.exe |
113 | # ADD BASE LINK32 /nologo /subsystem:windows /machine:I386 | 115 | # ADD BASE LINK32 /nologo /subsystem:windows /machine:I386 |
114 | # ADD LINK32 /nologo /subsystem:windows /machine:I386 | 116 | # ADD LINK32 /nologo /subsystem:windows /machine:I386 |
115 | LINK32_FLAGS=/nologo /subsystem:windows /incremental:no\ | 117 | LINK32_FLAGS=/nologo /subsystem:windows /incremental:no\ |
116 | /pdb:"$(OUTDIR)/pumpkin.pdb" /machine:I386 /out:"$(OUTDIR)/pumpkin.exe" | 118 | /pdb:"$(OUTDIR)/pumpkin.pdb" /machine:I386 /out:"$(OUTDIR)/pumpkin.exe" |
117 | LINK32_OBJS= \ | 119 | LINK32_OBJS= \ |
120 | "$(INTDIR)\ACLTargetCombo.obj" \ | ||
118 | "$(INTDIR)\ConfirmRRQDlg.obj" \ | 121 | "$(INTDIR)\ConfirmRRQDlg.obj" \ |
119 | "$(INTDIR)\ConfirmWRQDlg.obj" \ | 122 | "$(INTDIR)\ConfirmWRQDlg.obj" \ |
123 | "$(INTDIR)\PropsACL.obj" \ | ||
120 | "$(INTDIR)\PropsNetwork.obj" \ | 124 | "$(INTDIR)\PropsNetwork.obj" \ |
121 | "$(INTDIR)\PropsServer.obj" \ | 125 | "$(INTDIR)\PropsServer.obj" \ |
122 | "$(INTDIR)\PropsSounds.obj" \ | 126 | "$(INTDIR)\PropsSounds.obj" \ |
123 | "$(INTDIR)\PumpKIN.obj" \ | 127 | "$(INTDIR)\PumpKIN.obj" \ |
124 | "$(INTDIR)\pumpkin.res" \ | 128 | "$(INTDIR)\pumpkin.res" \ |
125 | "$(INTDIR)\PumpKINDlg.obj" \ | 129 | "$(INTDIR)\PumpKINDlg.obj" \ |
126 | "$(INTDIR)\RequestDlg.obj" \ | 130 | "$(INTDIR)\RequestDlg.obj" \ |
127 | "$(INTDIR)\Resolver.obj" \ | 131 | "$(INTDIR)\Resolver.obj" \ |
128 | "$(INTDIR)\Retrier.obj" \ | 132 | "$(INTDIR)\Retrier.obj" \ |
129 | "$(INTDIR)\StdAfx.obj" \ | 133 | "$(INTDIR)\StdAfx.obj" \ |
130 | "$(INTDIR)\Trayer.obj" | 134 | "$(INTDIR)\Trayer.obj" |
131 | 135 | ||
@@ -160,28 +164,32 @@ SOURCE=$(InputPath) | |||
160 | OUTDIR=.\Debug | 164 | OUTDIR=.\Debug |
161 | INTDIR=.\Debug | 165 | INTDIR=.\Debug |
162 | # Begin Custom Macros | 166 | # Begin Custom Macros |
163 | OutDir=.\Debug | 167 | OutDir=.\Debug |
164 | TargetName=pumpkin | 168 | TargetName=pumpkin |
165 | # End Custom Macros | 169 | # End Custom Macros |
166 | 170 | ||
167 | ALL : "$(OUTDIR)\pumpkin.exe" "$(OUTDIR)\pumpkin.bsc" "$(OUTDIR)\pumpkin.ex_"\ | 171 | ALL : "$(OUTDIR)\pumpkin.exe" "$(OUTDIR)\pumpkin.bsc" "$(OUTDIR)\pumpkin.ex_"\ |
168 | "$(OUTDIR)\pumpkin.hlp" "$(OUTDIR)\pumpkin.cnt" "$(OUTDIR)\pumpkin.hl_"\ | 172 | "$(OUTDIR)\pumpkin.hlp" "$(OUTDIR)\pumpkin.cnt" "$(OUTDIR)\pumpkin.hl_"\ |
169 | "$(OUTDIR)\pumpkin.cn_" | 173 | "$(OUTDIR)\pumpkin.cn_" |
170 | 174 | ||
171 | CLEAN : | 175 | CLEAN : |
176 | -@erase "$(INTDIR)\ACLTargetCombo.obj" | ||
177 | -@erase "$(INTDIR)\ACLTargetCombo.sbr" | ||
172 | -@erase "$(INTDIR)\ConfirmRRQDlg.obj" | 178 | -@erase "$(INTDIR)\ConfirmRRQDlg.obj" |
173 | -@erase "$(INTDIR)\ConfirmRRQDlg.sbr" | 179 | -@erase "$(INTDIR)\ConfirmRRQDlg.sbr" |
174 | -@erase "$(INTDIR)\ConfirmWRQDlg.obj" | 180 | -@erase "$(INTDIR)\ConfirmWRQDlg.obj" |
175 | -@erase "$(INTDIR)\ConfirmWRQDlg.sbr" | 181 | -@erase "$(INTDIR)\ConfirmWRQDlg.sbr" |
182 | -@erase "$(INTDIR)\PropsACL.obj" | ||
183 | -@erase "$(INTDIR)\PropsACL.sbr" | ||
176 | -@erase "$(INTDIR)\PropsNetwork.obj" | 184 | -@erase "$(INTDIR)\PropsNetwork.obj" |
177 | -@erase "$(INTDIR)\PropsNetwork.sbr" | 185 | -@erase "$(INTDIR)\PropsNetwork.sbr" |
178 | -@erase "$(INTDIR)\PropsServer.obj" | 186 | -@erase "$(INTDIR)\PropsServer.obj" |
179 | -@erase "$(INTDIR)\PropsServer.sbr" | 187 | -@erase "$(INTDIR)\PropsServer.sbr" |
180 | -@erase "$(INTDIR)\PropsSounds.obj" | 188 | -@erase "$(INTDIR)\PropsSounds.obj" |
181 | -@erase "$(INTDIR)\PropsSounds.sbr" | 189 | -@erase "$(INTDIR)\PropsSounds.sbr" |
182 | -@erase "$(INTDIR)\pumpkin.cn_" | 190 | -@erase "$(INTDIR)\pumpkin.cn_" |
183 | -@erase "$(INTDIR)\pumpkin.cnt" | 191 | -@erase "$(INTDIR)\pumpkin.cnt" |
184 | -@erase "$(INTDIR)\pumpkin.hl_" | 192 | -@erase "$(INTDIR)\pumpkin.hl_" |
185 | -@erase "$(INTDIR)\pumpkin.hlp" | 193 | -@erase "$(INTDIR)\pumpkin.hlp" |
186 | -@erase "$(INTDIR)\PumpKIN.obj" | 194 | -@erase "$(INTDIR)\PumpKIN.obj" |
187 | -@erase "$(INTDIR)\pumpkin.pch" | 195 | -@erase "$(INTDIR)\pumpkin.pch" |
@@ -219,50 +227,54 @@ CPP_OBJS=.\Debug/ | |||
219 | CPP_SBRS=.\Debug/ | 227 | CPP_SBRS=.\Debug/ |
220 | # ADD BASE MTL /nologo /D "_DEBUG" /win32 | 228 | # ADD BASE MTL /nologo /D "_DEBUG" /win32 |
221 | # ADD MTL /nologo /D "_DEBUG" /win32 | 229 | # ADD MTL /nologo /D "_DEBUG" /win32 |
222 | MTL_PROJ=/nologo /D "_DEBUG" /win32 | 230 | MTL_PROJ=/nologo /D "_DEBUG" /win32 |
223 | # ADD BASE RSC /l 0x409 /d "_DEBUG" /d "_AFXDLL" | 231 | # ADD BASE RSC /l 0x409 /d "_DEBUG" /d "_AFXDLL" |
224 | # ADD RSC /l 0x409 /d "_DEBUG" /d "_AFXDLL" | 232 | # ADD RSC /l 0x409 /d "_DEBUG" /d "_AFXDLL" |
225 | RSC_PROJ=/l 0x409 /fo"$(INTDIR)/pumpkin.res" /d "_DEBUG" /d "_AFXDLL" | 233 | RSC_PROJ=/l 0x409 /fo"$(INTDIR)/pumpkin.res" /d "_DEBUG" /d "_AFXDLL" |
226 | BSC32=bscmake.exe | 234 | BSC32=bscmake.exe |
227 | # ADD BASE BSC32 /nologo | 235 | # ADD BASE BSC32 /nologo |
228 | # ADD BSC32 /nologo | 236 | # ADD BSC32 /nologo |
229 | BSC32_FLAGS=/nologo /o"$(OUTDIR)/pumpkin.bsc" | 237 | BSC32_FLAGS=/nologo /o"$(OUTDIR)/pumpkin.bsc" |
230 | BSC32_SBRS= \ | 238 | BSC32_SBRS= \ |
239 | "$(INTDIR)\ACLTargetCombo.sbr" \ | ||
231 | "$(INTDIR)\ConfirmRRQDlg.sbr" \ | 240 | "$(INTDIR)\ConfirmRRQDlg.sbr" \ |
232 | "$(INTDIR)\ConfirmWRQDlg.sbr" \ | 241 | "$(INTDIR)\ConfirmWRQDlg.sbr" \ |
242 | "$(INTDIR)\PropsACL.sbr" \ | ||
233 | "$(INTDIR)\PropsNetwork.sbr" \ | 243 | "$(INTDIR)\PropsNetwork.sbr" \ |
234 | "$(INTDIR)\PropsServer.sbr" \ | 244 | "$(INTDIR)\PropsServer.sbr" \ |
235 | "$(INTDIR)\PropsSounds.sbr" \ | 245 | "$(INTDIR)\PropsSounds.sbr" \ |
236 | "$(INTDIR)\PumpKIN.sbr" \ | 246 | "$(INTDIR)\PumpKIN.sbr" \ |
237 | "$(INTDIR)\PumpKINDlg.sbr" \ | 247 | "$(INTDIR)\PumpKINDlg.sbr" \ |
238 | "$(INTDIR)\RequestDlg.sbr" \ | 248 | "$(INTDIR)\RequestDlg.sbr" \ |
239 | "$(INTDIR)\Resolver.sbr" \ | 249 | "$(INTDIR)\Resolver.sbr" \ |
240 | "$(INTDIR)\Retrier.sbr" \ | 250 | "$(INTDIR)\Retrier.sbr" \ |
241 | "$(INTDIR)\StdAfx.sbr" \ | 251 | "$(INTDIR)\StdAfx.sbr" \ |
242 | "$(INTDIR)\Trayer.sbr" | 252 | "$(INTDIR)\Trayer.sbr" |
243 | 253 | ||
244 | "$(OUTDIR)\pumpkin.bsc" : "$(OUTDIR)" $(BSC32_SBRS) | 254 | "$(OUTDIR)\pumpkin.bsc" : "$(OUTDIR)" $(BSC32_SBRS) |
245 | $(BSC32) @<< | 255 | $(BSC32) @<< |
246 | $(BSC32_FLAGS) $(BSC32_SBRS) | 256 | $(BSC32_FLAGS) $(BSC32_SBRS) |
247 | << | 257 | << |
248 | 258 | ||
249 | LINK32=link.exe | 259 | LINK32=link.exe |
250 | # ADD BASE LINK32 /nologo /subsystem:windows /debug /machine:I386 | 260 | # ADD BASE LINK32 /nologo /subsystem:windows /debug /machine:I386 |
251 | # ADD LINK32 /nologo /subsystem:windows /debug /machine:I386 | 261 | # ADD LINK32 /nologo /subsystem:windows /debug /machine:I386 |
252 | LINK32_FLAGS=/nologo /subsystem:windows /incremental:yes\ | 262 | LINK32_FLAGS=/nologo /subsystem:windows /incremental:yes\ |
253 | /pdb:"$(OUTDIR)/pumpkin.pdb" /debug /machine:I386 /out:"$(OUTDIR)/pumpkin.exe" | 263 | /pdb:"$(OUTDIR)/pumpkin.pdb" /debug /machine:I386 /out:"$(OUTDIR)/pumpkin.exe" |
254 | LINK32_OBJS= \ | 264 | LINK32_OBJS= \ |
265 | "$(INTDIR)\ACLTargetCombo.obj" \ | ||
255 | "$(INTDIR)\ConfirmRRQDlg.obj" \ | 266 | "$(INTDIR)\ConfirmRRQDlg.obj" \ |
256 | "$(INTDIR)\ConfirmWRQDlg.obj" \ | 267 | "$(INTDIR)\ConfirmWRQDlg.obj" \ |
268 | "$(INTDIR)\PropsACL.obj" \ | ||
257 | "$(INTDIR)\PropsNetwork.obj" \ | 269 | "$(INTDIR)\PropsNetwork.obj" \ |
258 | "$(INTDIR)\PropsServer.obj" \ | 270 | "$(INTDIR)\PropsServer.obj" \ |
259 | "$(INTDIR)\PropsSounds.obj" \ | 271 | "$(INTDIR)\PropsSounds.obj" \ |
260 | "$(INTDIR)\PumpKIN.obj" \ | 272 | "$(INTDIR)\PumpKIN.obj" \ |
261 | "$(INTDIR)\pumpkin.res" \ | 273 | "$(INTDIR)\pumpkin.res" \ |
262 | "$(INTDIR)\PumpKINDlg.obj" \ | 274 | "$(INTDIR)\PumpKINDlg.obj" \ |
263 | "$(INTDIR)\RequestDlg.obj" \ | 275 | "$(INTDIR)\RequestDlg.obj" \ |
264 | "$(INTDIR)\Resolver.obj" \ | 276 | "$(INTDIR)\Resolver.obj" \ |
265 | "$(INTDIR)\Retrier.obj" \ | 277 | "$(INTDIR)\Retrier.obj" \ |
266 | "$(INTDIR)\StdAfx.obj" \ | 278 | "$(INTDIR)\StdAfx.obj" \ |
267 | "$(INTDIR)\Trayer.obj" | 279 | "$(INTDIR)\Trayer.obj" |
268 | 280 | ||
@@ -296,26 +308,28 @@ SOURCE=$(InputPath) | |||
296 | # PROP Target_Dir "" | 308 | # PROP Target_Dir "" |
297 | OUTDIR=.\Releast | 309 | OUTDIR=.\Releast |
298 | INTDIR=.\Releast | 310 | INTDIR=.\Releast |
299 | # Begin Custom Macros | 311 | # Begin Custom Macros |
300 | OutDir=.\Releast | 312 | OutDir=.\Releast |
301 | TargetName=pumpkin | 313 | TargetName=pumpkin |
302 | # End Custom Macros | 314 | # End Custom Macros |
303 | 315 | ||
304 | ALL : "$(OUTDIR)\pumpkin.exe" "$(OUTDIR)\pumpkin.ex_" "$(OUTDIR)\pumpkin.hlp"\ | 316 | ALL : "$(OUTDIR)\pumpkin.exe" "$(OUTDIR)\pumpkin.ex_" "$(OUTDIR)\pumpkin.hlp"\ |
305 | "$(OUTDIR)\pumpkin.cnt" "$(OUTDIR)\pumpkin.hl_" "$(OUTDIR)\pumpkin.cn_" | 317 | "$(OUTDIR)\pumpkin.cnt" "$(OUTDIR)\pumpkin.hl_" "$(OUTDIR)\pumpkin.cn_" |
306 | 318 | ||
307 | CLEAN : | 319 | CLEAN : |
320 | -@erase "$(INTDIR)\ACLTargetCombo.obj" | ||
308 | -@erase "$(INTDIR)\ConfirmRRQDlg.obj" | 321 | -@erase "$(INTDIR)\ConfirmRRQDlg.obj" |
309 | -@erase "$(INTDIR)\ConfirmWRQDlg.obj" | 322 | -@erase "$(INTDIR)\ConfirmWRQDlg.obj" |
323 | -@erase "$(INTDIR)\PropsACL.obj" | ||
310 | -@erase "$(INTDIR)\PropsNetwork.obj" | 324 | -@erase "$(INTDIR)\PropsNetwork.obj" |
311 | -@erase "$(INTDIR)\PropsServer.obj" | 325 | -@erase "$(INTDIR)\PropsServer.obj" |
312 | -@erase "$(INTDIR)\PropsSounds.obj" | 326 | -@erase "$(INTDIR)\PropsSounds.obj" |
313 | -@erase "$(INTDIR)\pumpkin.cn_" | 327 | -@erase "$(INTDIR)\pumpkin.cn_" |
314 | -@erase "$(INTDIR)\pumpkin.cnt" | 328 | -@erase "$(INTDIR)\pumpkin.cnt" |
315 | -@erase "$(INTDIR)\pumpkin.hl_" | 329 | -@erase "$(INTDIR)\pumpkin.hl_" |
316 | -@erase "$(INTDIR)\pumpkin.hlp" | 330 | -@erase "$(INTDIR)\pumpkin.hlp" |
317 | -@erase "$(INTDIR)\PumpKIN.obj" | 331 | -@erase "$(INTDIR)\PumpKIN.obj" |
318 | -@erase "$(INTDIR)\pumpkin.pch" | 332 | -@erase "$(INTDIR)\pumpkin.pch" |
319 | -@erase "$(INTDIR)\pumpkin.res" | 333 | -@erase "$(INTDIR)\pumpkin.res" |
320 | -@erase "$(INTDIR)\PumpKINDlg.obj" | 334 | -@erase "$(INTDIR)\PumpKINDlg.obj" |
321 | -@erase "$(INTDIR)\RequestDlg.obj" | 335 | -@erase "$(INTDIR)\RequestDlg.obj" |
@@ -344,26 +358,28 @@ RSC_PROJ=/l 0x409 /fo"$(INTDIR)/pumpkin.res" /d "NDEBUG" | |||
344 | BSC32=bscmake.exe | 358 | BSC32=bscmake.exe |
345 | # ADD BASE BSC32 /nologo | 359 | # ADD BASE BSC32 /nologo |
346 | # ADD BSC32 /nologo | 360 | # ADD BSC32 /nologo |
347 | BSC32_FLAGS=/nologo /o"$(OUTDIR)/pumpkin.bsc" | 361 | BSC32_FLAGS=/nologo /o"$(OUTDIR)/pumpkin.bsc" |
348 | BSC32_SBRS= \ | 362 | BSC32_SBRS= \ |
349 | 363 | ||
350 | LINK32=link.exe | 364 | LINK32=link.exe |
351 | # ADD BASE LINK32 /nologo /subsystem:windows /machine:I386 | 365 | # ADD BASE LINK32 /nologo /subsystem:windows /machine:I386 |
352 | # ADD LINK32 /nologo /subsystem:windows /machine:I386 | 366 | # ADD LINK32 /nologo /subsystem:windows /machine:I386 |
353 | LINK32_FLAGS=/nologo /subsystem:windows /incremental:no\ | 367 | LINK32_FLAGS=/nologo /subsystem:windows /incremental:no\ |
354 | /pdb:"$(OUTDIR)/pumpkin.pdb" /machine:I386 /out:"$(OUTDIR)/pumpkin.exe" | 368 | /pdb:"$(OUTDIR)/pumpkin.pdb" /machine:I386 /out:"$(OUTDIR)/pumpkin.exe" |
355 | LINK32_OBJS= \ | 369 | LINK32_OBJS= \ |
370 | "$(INTDIR)\ACLTargetCombo.obj" \ | ||
356 | "$(INTDIR)\ConfirmRRQDlg.obj" \ | 371 | "$(INTDIR)\ConfirmRRQDlg.obj" \ |
357 | "$(INTDIR)\ConfirmWRQDlg.obj" \ | 372 | "$(INTDIR)\ConfirmWRQDlg.obj" \ |
373 | "$(INTDIR)\PropsACL.obj" \ | ||
358 | "$(INTDIR)\PropsNetwork.obj" \ | 374 | "$(INTDIR)\PropsNetwork.obj" \ |
359 | "$(INTDIR)\PropsServer.obj" \ | 375 | "$(INTDIR)\PropsServer.obj" \ |
360 | "$(INTDIR)\PropsSounds.obj" \ | 376 | "$(INTDIR)\PropsSounds.obj" \ |
361 | "$(INTDIR)\PumpKIN.obj" \ | 377 | "$(INTDIR)\PumpKIN.obj" \ |
362 | "$(INTDIR)\pumpkin.res" \ | 378 | "$(INTDIR)\pumpkin.res" \ |
363 | "$(INTDIR)\PumpKINDlg.obj" \ | 379 | "$(INTDIR)\PumpKINDlg.obj" \ |
364 | "$(INTDIR)\RequestDlg.obj" \ | 380 | "$(INTDIR)\RequestDlg.obj" \ |
365 | "$(INTDIR)\Resolver.obj" \ | 381 | "$(INTDIR)\Resolver.obj" \ |
366 | "$(INTDIR)\Retrier.obj" \ | 382 | "$(INTDIR)\Retrier.obj" \ |
367 | "$(INTDIR)\StdAfx.obj" \ | 383 | "$(INTDIR)\StdAfx.obj" \ |
368 | "$(INTDIR)\Trayer.obj" | 384 | "$(INTDIR)\Trayer.obj" |
369 | 385 | ||
@@ -661,99 +677,150 @@ LINK32_OBJS= \ | |||
661 | !IF "$(CFG)" == "PumpKIN - Win32 Release" | 677 | !IF "$(CFG)" == "PumpKIN - Win32 Release" |
662 | 678 | ||
663 | !ELSEIF "$(CFG)" == "PumpKIN - Win32 Debug" | 679 | !ELSEIF "$(CFG)" == "PumpKIN - Win32 Debug" |
664 | 680 | ||
665 | !ELSEIF "$(CFG)" == "PumpKIN - Win32 Static" | 681 | !ELSEIF "$(CFG)" == "PumpKIN - Win32 Static" |
666 | 682 | ||
667 | !ENDIF | 683 | !ENDIF |
668 | 684 | ||
669 | ################################################################################ | 685 | ################################################################################ |
670 | # Begin Source File | 686 | # Begin Source File |
671 | 687 | ||
672 | SOURCE=.\PumpKIN.cpp | 688 | SOURCE=.\PumpKIN.cpp |
689 | |||
690 | !IF "$(CFG)" == "PumpKIN - Win32 Release" | ||
691 | |||
673 | DEP_CPP_PUMPK=\ | 692 | DEP_CPP_PUMPK=\ |
674 | ".\PumpKIN.h"\ | 693 | ".\pumpkin.h"\ |
675 | ".\PumpKINDlg.h"\ | 694 | ".\PumpKINDlg.h"\ |
676 | ".\shared-code\BellsNWhistles.h"\ | 695 | ".\shared-code\BellsNWhistles.h"\ |
677 | ".\shared-code\kHelpers.h"\ | 696 | ".\shared-code\kHelpers.h"\ |
678 | ".\stdafx.h"\ | 697 | ".\stdafx.h"\ |
679 | 698 | ||
680 | 699 | ||
681 | !IF "$(CFG)" == "PumpKIN - Win32 Release" | ||
682 | |||
683 | |||
684 | "$(INTDIR)\PumpKIN.obj" : $(SOURCE) $(DEP_CPP_PUMPK) "$(INTDIR)"\ | 700 | "$(INTDIR)\PumpKIN.obj" : $(SOURCE) $(DEP_CPP_PUMPK) "$(INTDIR)"\ |
685 | "$(INTDIR)\pumpkin.pch" | 701 | "$(INTDIR)\pumpkin.pch" |
686 | 702 | ||
687 | 703 | ||
688 | !ELSEIF "$(CFG)" == "PumpKIN - Win32 Debug" | 704 | !ELSEIF "$(CFG)" == "PumpKIN - Win32 Debug" |
689 | 705 | ||
706 | DEP_CPP_PUMPK=\ | ||
707 | ".\pumpkin.h"\ | ||
708 | ".\PumpKINDlg.h"\ | ||
709 | ".\shared-code\kHelpers.h"\ | ||
710 | ".\stdafx.h"\ | ||
711 | |||
690 | 712 | ||
691 | "$(INTDIR)\PumpKIN.obj" : $(SOURCE) $(DEP_CPP_PUMPK) "$(INTDIR)"\ | 713 | "$(INTDIR)\PumpKIN.obj" : $(SOURCE) $(DEP_CPP_PUMPK) "$(INTDIR)"\ |
692 | "$(INTDIR)\pumpkin.pch" | 714 | "$(INTDIR)\pumpkin.pch" |
693 | 715 | ||
694 | "$(INTDIR)\PumpKIN.sbr" : $(SOURCE) $(DEP_CPP_PUMPK) "$(INTDIR)"\ | 716 | "$(INTDIR)\PumpKIN.sbr" : $(SOURCE) $(DEP_CPP_PUMPK) "$(INTDIR)"\ |
695 | "$(INTDIR)\pumpkin.pch" | 717 | "$(INTDIR)\pumpkin.pch" |
696 | 718 | ||
697 | 719 | ||
698 | !ELSEIF "$(CFG)" == "PumpKIN - Win32 Static" | 720 | !ELSEIF "$(CFG)" == "PumpKIN - Win32 Static" |
699 | 721 | ||
722 | DEP_CPP_PUMPK=\ | ||
723 | ".\pumpkin.h"\ | ||
724 | ".\PumpKINDlg.h"\ | ||
725 | ".\shared-code\BellsNWhistles.h"\ | ||
726 | ".\shared-code\kHelpers.h"\ | ||
727 | ".\stdafx.h"\ | ||
728 | |||
700 | 729 | ||
701 | "$(INTDIR)\PumpKIN.obj" : $(SOURCE) $(DEP_CPP_PUMPK) "$(INTDIR)"\ | 730 | "$(INTDIR)\PumpKIN.obj" : $(SOURCE) $(DEP_CPP_PUMPK) "$(INTDIR)"\ |
702 | "$(INTDIR)\pumpkin.pch" | 731 | "$(INTDIR)\pumpkin.pch" |
703 | 732 | ||
704 | 733 | ||
705 | !ENDIF | 734 | !ENDIF |
706 | 735 | ||
707 | # End Source File | 736 | # End Source File |
708 | ################################################################################ | 737 | ################################################################################ |
709 | # Begin Source File | 738 | # Begin Source File |
710 | 739 | ||
711 | SOURCE=.\PumpKINDlg.cpp | 740 | SOURCE=.\PumpKINDlg.cpp |
741 | |||
742 | !IF "$(CFG)" == "PumpKIN - Win32 Release" | ||
743 | |||
712 | DEP_CPP_PUMPKI=\ | 744 | DEP_CPP_PUMPKI=\ |
745 | ".\ACLTargetCombo.h"\ | ||
713 | ".\ConfirmRRQDlg.h"\ | 746 | ".\ConfirmRRQDlg.h"\ |
714 | ".\ConfirmWRQDlg.h"\ | 747 | ".\ConfirmWRQDlg.h"\ |
748 | ".\PropsACL.h"\ | ||
715 | ".\PropsNetwork.h"\ | 749 | ".\PropsNetwork.h"\ |
716 | ".\PropsServer.h"\ | 750 | ".\PropsServer.h"\ |
717 | ".\PropsSounds.h"\ | 751 | ".\PropsSounds.h"\ |
718 | ".\PumpKIN.h"\ | 752 | ".\pumpkin.h"\ |
719 | ".\PumpKINDlg.h"\ | 753 | ".\PumpKINDlg.h"\ |
720 | ".\RequestDlg.h"\ | 754 | ".\RequestDlg.h"\ |
721 | ".\Resolver.h"\ | 755 | ".\Resolver.h"\ |
722 | ".\Retrier.h"\ | 756 | ".\Retrier.h"\ |
723 | ".\shared-code\BellsNWhistles.h"\ | 757 | ".\shared-code\BellsNWhistles.h"\ |
724 | ".\shared-code\kHelpers.h"\ | 758 | ".\shared-code\kHelpers.h"\ |
725 | ".\stdafx.h"\ | 759 | ".\stdafx.h"\ |
726 | ".\Trayer.h"\ | 760 | ".\Trayer.h"\ |
727 | 761 | ||
728 | 762 | ||
729 | !IF "$(CFG)" == "PumpKIN - Win32 Release" | ||
730 | |||
731 | |||
732 | "$(INTDIR)\PumpKINDlg.obj" : $(SOURCE) $(DEP_CPP_PUMPKI) "$(INTDIR)"\ | 763 | "$(INTDIR)\PumpKINDlg.obj" : $(SOURCE) $(DEP_CPP_PUMPKI) "$(INTDIR)"\ |
733 | "$(INTDIR)\pumpkin.pch" | 764 | "$(INTDIR)\pumpkin.pch" |
734 | 765 | ||
735 | 766 | ||
736 | !ELSEIF "$(CFG)" == "PumpKIN - Win32 Debug" | 767 | !ELSEIF "$(CFG)" == "PumpKIN - Win32 Debug" |
737 | 768 | ||
769 | DEP_CPP_PUMPKI=\ | ||
770 | ".\ACLTargetCombo.h"\ | ||
771 | ".\ConfirmRRQDlg.h"\ | ||
772 | ".\ConfirmWRQDlg.h"\ | ||
773 | ".\PropsACL.h"\ | ||
774 | ".\PropsNetwork.h"\ | ||
775 | ".\PropsServer.h"\ | ||
776 | ".\PropsSounds.h"\ | ||
777 | ".\pumpkin.h"\ | ||
778 | ".\PumpKINDlg.h"\ | ||
779 | ".\RequestDlg.h"\ | ||
780 | ".\Resolver.h"\ | ||
781 | ".\Retrier.h"\ | ||
782 | ".\shared-code\BellsNWhistles.h"\ | ||
783 | ".\shared-code\kHelpers.h"\ | ||
784 | ".\stdafx.h"\ | ||
785 | ".\Trayer.h"\ | ||
786 | |||
738 | 787 | ||
739 | "$(INTDIR)\PumpKINDlg.obj" : $(SOURCE) $(DEP_CPP_PUMPKI) "$(INTDIR)"\ | 788 | "$(INTDIR)\PumpKINDlg.obj" : $(SOURCE) $(DEP_CPP_PUMPKI) "$(INTDIR)"\ |
740 | "$(INTDIR)\pumpkin.pch" | 789 | "$(INTDIR)\pumpkin.pch" |
741 | 790 | ||
742 | "$(INTDIR)\PumpKINDlg.sbr" : $(SOURCE) $(DEP_CPP_PUMPKI) "$(INTDIR)"\ | 791 | "$(INTDIR)\PumpKINDlg.sbr" : $(SOURCE) $(DEP_CPP_PUMPKI) "$(INTDIR)"\ |
743 | "$(INTDIR)\pumpkin.pch" | 792 | "$(INTDIR)\pumpkin.pch" |
744 | 793 | ||
745 | 794 | ||
746 | !ELSEIF "$(CFG)" == "PumpKIN - Win32 Static" | 795 | !ELSEIF "$(CFG)" == "PumpKIN - Win32 Static" |
747 | 796 | ||
797 | DEP_CPP_PUMPKI=\ | ||
798 | ".\ACLTargetCombo.h"\ | ||
799 | ".\ConfirmRRQDlg.h"\ | ||
800 | ".\ConfirmWRQDlg.h"\ | ||
801 | ".\PropsACL.h"\ | ||
802 | ".\PropsNetwork.h"\ | ||
803 | ".\PropsServer.h"\ | ||
804 | ".\PropsSounds.h"\ | ||
805 | ".\pumpkin.h"\ | ||
806 | ".\PumpKINDlg.h"\ | ||
807 | ".\RequestDlg.h"\ | ||
808 | ".\Resolver.h"\ | ||
809 | ".\Retrier.h"\ | ||
810 | ".\shared-code\BellsNWhistles.h"\ | ||
811 | ".\shared-code\kHelpers.h"\ | ||
812 | ".\stdafx.h"\ | ||
813 | ".\Trayer.h"\ | ||
814 | |||
748 | 815 | ||
749 | "$(INTDIR)\PumpKINDlg.obj" : $(SOURCE) $(DEP_CPP_PUMPKI) "$(INTDIR)"\ | 816 | "$(INTDIR)\PumpKINDlg.obj" : $(SOURCE) $(DEP_CPP_PUMPKI) "$(INTDIR)"\ |
750 | "$(INTDIR)\pumpkin.pch" | 817 | "$(INTDIR)\pumpkin.pch" |
751 | 818 | ||
752 | 819 | ||
753 | !ENDIF | 820 | !ENDIF |
754 | 821 | ||
755 | # End Source File | 822 | # End Source File |
756 | ################################################################################ | 823 | ################################################################################ |
757 | # Begin Source File | 824 | # Begin Source File |
758 | 825 | ||
759 | SOURCE=.\StdAfx.cpp | 826 | SOURCE=.\StdAfx.cpp |
@@ -813,30 +880,33 @@ BuildCmds= \ | |||
813 | 880 | ||
814 | "$(INTDIR)\pumpkin.pch" : $(SOURCE) $(DEP_CPP_STDAF) "$(INTDIR)" | 881 | "$(INTDIR)\pumpkin.pch" : $(SOURCE) $(DEP_CPP_STDAF) "$(INTDIR)" |
815 | $(BuildCmds) | 882 | $(BuildCmds) |
816 | 883 | ||
817 | !ENDIF | 884 | !ENDIF |
818 | 885 | ||
819 | # End Source File | 886 | # End Source File |
820 | ################################################################################ | 887 | ################################################################################ |
821 | # Begin Source File | 888 | # Begin Source File |
822 | 889 | ||
823 | SOURCE=.\pumpkin.rc | 890 | SOURCE=.\pumpkin.rc |
824 | DEP_RSC_PUMPKIN=\ | 891 | DEP_RSC_PUMPKIN=\ |
892 | ".\res\down.ico"\ | ||
825 | ".\res\failed.wav"\ | 893 | ".\res\failed.wav"\ |
826 | ".\res\finished.wav"\ | 894 | ".\res\finished.wav"\ |
827 | ".\res\PumpKIN.ico"\ | 895 | ".\res\PumpKIN.ico"\ |
828 | ".\res\pumpkin.rc2"\ | 896 | ".\res\pumpkin.rc2"\ |
897 | ".\res\remove.ico"\ | ||
829 | ".\res\ring.wav"\ | 898 | ".\res\ring.wav"\ |
830 | ".\res\rrq.ico"\ | 899 | ".\res\rrq.ico"\ |
900 | ".\res\up.ico"\ | ||
831 | ".\res\wrq.ico"\ | 901 | ".\res\wrq.ico"\ |
832 | ".\shared-data\browse-icon.ico"\ | 902 | ".\shared-data\browse-icon.ico"\ |
833 | ".\shared-data\klever-background.bmp"\ | 903 | ".\shared-data\klever-background.bmp"\ |
834 | ".\shared-data\play-icon.ico"\ | 904 | ".\shared-data\play-icon.ico"\ |
835 | 905 | ||
836 | 906 | ||
837 | !IF "$(CFG)" == "PumpKIN - Win32 Release" | 907 | !IF "$(CFG)" == "PumpKIN - Win32 Release" |
838 | 908 | ||
839 | 909 | ||
840 | "$(INTDIR)\pumpkin.res" : $(SOURCE) $(DEP_RSC_PUMPKIN) "$(INTDIR)" | 910 | "$(INTDIR)\pumpkin.res" : $(SOURCE) $(DEP_RSC_PUMPKIN) "$(INTDIR)" |
841 | $(RSC) $(RSC_PROJ) $(SOURCE) | 911 | $(RSC) $(RSC_PROJ) $(SOURCE) |
842 | 912 | ||
@@ -942,66 +1012,79 @@ BuildCmds= \ | |||
942 | 1012 | ||
943 | "$(OutDir)\$(TargetName).cn_" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" | 1013 | "$(OutDir)\$(TargetName).cn_" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" |
944 | $(BuildCmds) | 1014 | $(BuildCmds) |
945 | # End Custom Build | 1015 | # End Custom Build |
946 | 1016 | ||
947 | !ENDIF | 1017 | !ENDIF |
948 | 1018 | ||
949 | # End Source File | 1019 | # End Source File |
950 | ################################################################################ | 1020 | ################################################################################ |
951 | # Begin Source File | 1021 | # Begin Source File |
952 | 1022 | ||
953 | SOURCE=.\PropsServer.cpp | 1023 | SOURCE=.\PropsServer.cpp |
1024 | |||
1025 | !IF "$(CFG)" == "PumpKIN - Win32 Release" | ||
1026 | |||
954 | DEP_CPP_PROPS=\ | 1027 | DEP_CPP_PROPS=\ |
955 | ".\PropsServer.h"\ | 1028 | ".\PropsServer.h"\ |
956 | ".\PumpKIN.h"\ | 1029 | ".\pumpkin.h"\ |
957 | ".\shared-code\BellsNWhistles.h"\ | 1030 | ".\shared-code\BellsNWhistles.h"\ |
958 | ".\shared-code\kHelpers.h"\ | 1031 | ".\shared-code\kHelpers.h"\ |
959 | ".\stdafx.h"\ | 1032 | ".\stdafx.h"\ |
960 | 1033 | ||
961 | 1034 | ||
962 | !IF "$(CFG)" == "PumpKIN - Win32 Release" | ||
963 | |||
964 | |||
965 | "$(INTDIR)\PropsServer.obj" : $(SOURCE) $(DEP_CPP_PROPS) "$(INTDIR)"\ | 1035 | "$(INTDIR)\PropsServer.obj" : $(SOURCE) $(DEP_CPP_PROPS) "$(INTDIR)"\ |
966 | "$(INTDIR)\pumpkin.pch" | 1036 | "$(INTDIR)\pumpkin.pch" |
967 | 1037 | ||
968 | 1038 | ||
969 | !ELSEIF "$(CFG)" == "PumpKIN - Win32 Debug" | 1039 | !ELSEIF "$(CFG)" == "PumpKIN - Win32 Debug" |
970 | 1040 | ||
1041 | DEP_CPP_PROPS=\ | ||
1042 | ".\PropsServer.h"\ | ||
1043 | ".\pumpkin.h"\ | ||
1044 | ".\shared-code\kHelpers.h"\ | ||
1045 | ".\stdafx.h"\ | ||
1046 | |||
971 | 1047 | ||
972 | "$(INTDIR)\PropsServer.obj" : $(SOURCE) $(DEP_CPP_PROPS) "$(INTDIR)"\ | 1048 | "$(INTDIR)\PropsServer.obj" : $(SOURCE) $(DEP_CPP_PROPS) "$(INTDIR)"\ |
973 | "$(INTDIR)\pumpkin.pch" | 1049 | "$(INTDIR)\pumpkin.pch" |
974 | 1050 | ||
975 | "$(INTDIR)\PropsServer.sbr" : $(SOURCE) $(DEP_CPP_PROPS) "$(INTDIR)"\ | 1051 | "$(INTDIR)\PropsServer.sbr" : $(SOURCE) $(DEP_CPP_PROPS) "$(INTDIR)"\ |
976 | "$(INTDIR)\pumpkin.pch" | 1052 | "$(INTDIR)\pumpkin.pch" |
977 | 1053 | ||
978 | 1054 | ||
979 | !ELSEIF "$(CFG)" == "PumpKIN - Win32 Static" | 1055 | !ELSEIF "$(CFG)" == "PumpKIN - Win32 Static" |
980 | 1056 | ||
1057 | DEP_CPP_PROPS=\ | ||
1058 | ".\PropsServer.h"\ | ||
1059 | ".\pumpkin.h"\ | ||
1060 | ".\shared-code\BellsNWhistles.h"\ | ||
1061 | ".\shared-code\kHelpers.h"\ | ||
1062 | ".\stdafx.h"\ | ||
1063 | |||
981 | 1064 | ||
982 | "$(INTDIR)\PropsServer.obj" : $(SOURCE) $(DEP_CPP_PROPS) "$(INTDIR)"\ | 1065 | "$(INTDIR)\PropsServer.obj" : $(SOURCE) $(DEP_CPP_PROPS) "$(INTDIR)"\ |
983 | "$(INTDIR)\pumpkin.pch" | 1066 | "$(INTDIR)\pumpkin.pch" |
984 | 1067 | ||
985 | 1068 | ||
986 | !ENDIF | 1069 | !ENDIF |
987 | 1070 | ||
988 | # End Source File | 1071 | # End Source File |
989 | ################################################################################ | 1072 | ################################################################################ |
990 | # Begin Source File | 1073 | # Begin Source File |
991 | 1074 | ||
992 | SOURCE=.\PropsNetwork.cpp | 1075 | SOURCE=.\PropsNetwork.cpp |
993 | DEP_CPP_PROPSN=\ | 1076 | DEP_CPP_PROPSN=\ |
994 | ".\PropsNetwork.h"\ | 1077 | ".\PropsNetwork.h"\ |
995 | ".\PumpKIN.h"\ | 1078 | ".\pumpkin.h"\ |
996 | ".\shared-code\BellsNWhistles.h"\ | 1079 | ".\shared-code\BellsNWhistles.h"\ |
997 | ".\shared-code\kHelpers.h"\ | 1080 | ".\shared-code\kHelpers.h"\ |
998 | ".\stdafx.h"\ | 1081 | ".\stdafx.h"\ |
999 | 1082 | ||
1000 | 1083 | ||
1001 | !IF "$(CFG)" == "PumpKIN - Win32 Release" | 1084 | !IF "$(CFG)" == "PumpKIN - Win32 Release" |
1002 | 1085 | ||
1003 | 1086 | ||
1004 | "$(INTDIR)\PropsNetwork.obj" : $(SOURCE) $(DEP_CPP_PROPSN) "$(INTDIR)"\ | 1087 | "$(INTDIR)\PropsNetwork.obj" : $(SOURCE) $(DEP_CPP_PROPSN) "$(INTDIR)"\ |
1005 | "$(INTDIR)\pumpkin.pch" | 1088 | "$(INTDIR)\pumpkin.pch" |
1006 | 1089 | ||
1007 | 1090 | ||
@@ -1020,106 +1103,136 @@ DEP_CPP_PROPSN=\ | |||
1020 | 1103 | ||
1021 | "$(INTDIR)\PropsNetwork.obj" : $(SOURCE) $(DEP_CPP_PROPSN) "$(INTDIR)"\ | 1104 | "$(INTDIR)\PropsNetwork.obj" : $(SOURCE) $(DEP_CPP_PROPSN) "$(INTDIR)"\ |
1022 | "$(INTDIR)\pumpkin.pch" | 1105 | "$(INTDIR)\pumpkin.pch" |
1023 | 1106 | ||
1024 | 1107 | ||
1025 | !ENDIF | 1108 | !ENDIF |
1026 | 1109 | ||
1027 | # End Source File | 1110 | # End Source File |
1028 | ################################################################################ | 1111 | ################################################################################ |
1029 | # Begin Source File | 1112 | # Begin Source File |
1030 | 1113 | ||
1031 | SOURCE=.\ConfirmRRQDlg.cpp | 1114 | SOURCE=.\ConfirmRRQDlg.cpp |
1115 | |||
1116 | !IF "$(CFG)" == "PumpKIN - Win32 Release" | ||
1117 | |||
1032 | DEP_CPP_CONFI=\ | 1118 | DEP_CPP_CONFI=\ |
1033 | ".\ConfirmRRQDlg.h"\ | 1119 | ".\ConfirmRRQDlg.h"\ |
1034 | ".\PumpKIN.h"\ | 1120 | ".\pumpkin.h"\ |
1035 | ".\PumpKINDlg.h"\ | 1121 | ".\PumpKINDlg.h"\ |
1036 | ".\shared-code\BellsNWhistles.h"\ | 1122 | ".\shared-code\BellsNWhistles.h"\ |
1037 | ".\shared-code\kHelpers.h"\ | 1123 | ".\shared-code\kHelpers.h"\ |
1038 | ".\stdafx.h"\ | 1124 | ".\stdafx.h"\ |
1039 | 1125 | ||
1040 | 1126 | ||
1041 | !IF "$(CFG)" == "PumpKIN - Win32 Release" | ||
1042 | |||
1043 | |||
1044 | "$(INTDIR)\ConfirmRRQDlg.obj" : $(SOURCE) $(DEP_CPP_CONFI) "$(INTDIR)"\ | 1127 | "$(INTDIR)\ConfirmRRQDlg.obj" : $(SOURCE) $(DEP_CPP_CONFI) "$(INTDIR)"\ |
1045 | "$(INTDIR)\pumpkin.pch" | 1128 | "$(INTDIR)\pumpkin.pch" |
1046 | 1129 | ||
1047 | 1130 | ||
1048 | !ELSEIF "$(CFG)" == "PumpKIN - Win32 Debug" | 1131 | !ELSEIF "$(CFG)" == "PumpKIN - Win32 Debug" |
1049 | 1132 | ||
1133 | DEP_CPP_CONFI=\ | ||
1134 | ".\ConfirmRRQDlg.h"\ | ||
1135 | ".\pumpkin.h"\ | ||
1136 | ".\PumpKINDlg.h"\ | ||
1137 | ".\shared-code\kHelpers.h"\ | ||
1138 | ".\stdafx.h"\ | ||
1139 | |||
1050 | 1140 | ||
1051 | "$(INTDIR)\ConfirmRRQDlg.obj" : $(SOURCE) $(DEP_CPP_CONFI) "$(INTDIR)"\ | 1141 | "$(INTDIR)\ConfirmRRQDlg.obj" : $(SOURCE) $(DEP_CPP_CONFI) "$(INTDIR)"\ |
1052 | "$(INTDIR)\pumpkin.pch" | 1142 | "$(INTDIR)\pumpkin.pch" |
1053 | 1143 | ||
1054 | "$(INTDIR)\ConfirmRRQDlg.sbr" : $(SOURCE) $(DEP_CPP_CONFI) "$(INTDIR)"\ | 1144 | "$(INTDIR)\ConfirmRRQDlg.sbr" : $(SOURCE) $(DEP_CPP_CONFI) "$(INTDIR)"\ |
1055 | "$(INTDIR)\pumpkin.pch" | 1145 | "$(INTDIR)\pumpkin.pch" |
1056 | 1146 | ||
1057 | 1147 | ||
1058 | !ELSEIF "$(CFG)" == "PumpKIN - Win32 Static" | 1148 | !ELSEIF "$(CFG)" == "PumpKIN - Win32 Static" |
1059 | 1149 | ||
1150 | DEP_CPP_CONFI=\ | ||
1151 | ".\ConfirmRRQDlg.h"\ | ||
1152 | ".\pumpkin.h"\ | ||
1153 | ".\PumpKINDlg.h"\ | ||
1154 | ".\shared-code\BellsNWhistles.h"\ | ||
1155 | ".\shared-code\kHelpers.h"\ | ||
1156 | ".\stdafx.h"\ | ||
1157 | |||
1060 | 1158 | ||
1061 | "$(INTDIR)\ConfirmRRQDlg.obj" : $(SOURCE) $(DEP_CPP_CONFI) "$(INTDIR)"\ | 1159 | "$(INTDIR)\ConfirmRRQDlg.obj" : $(SOURCE) $(DEP_CPP_CONFI) "$(INTDIR)"\ |
1062 | "$(INTDIR)\pumpkin.pch" | 1160 | "$(INTDIR)\pumpkin.pch" |
1063 | 1161 | ||
1064 | 1162 | ||
1065 | !ENDIF | 1163 | !ENDIF |
1066 | 1164 | ||
1067 | # End Source File | 1165 | # End Source File |
1068 | ################################################################################ | 1166 | ################################################################################ |
1069 | # Begin Source File | 1167 | # Begin Source File |
1070 | 1168 | ||
1071 | SOURCE=.\ConfirmWRQDlg.cpp | 1169 | SOURCE=.\ConfirmWRQDlg.cpp |
1170 | |||
1171 | !IF "$(CFG)" == "PumpKIN - Win32 Release" | ||
1172 | |||
1072 | DEP_CPP_CONFIR=\ | 1173 | DEP_CPP_CONFIR=\ |
1073 | ".\ConfirmWRQDlg.h"\ | 1174 | ".\ConfirmWRQDlg.h"\ |
1074 | ".\PumpKIN.h"\ | 1175 | ".\pumpkin.h"\ |
1075 | ".\PumpKINDlg.h"\ | 1176 | ".\PumpKINDlg.h"\ |
1076 | ".\shared-code\BellsNWhistles.h"\ | 1177 | ".\shared-code\BellsNWhistles.h"\ |
1077 | ".\shared-code\kHelpers.h"\ | 1178 | ".\shared-code\kHelpers.h"\ |
1078 | ".\stdafx.h"\ | 1179 | ".\stdafx.h"\ |
1079 | 1180 | ||
1080 | 1181 | ||
1081 | !IF "$(CFG)" == "PumpKIN - Win32 Release" | ||
1082 | |||
1083 | |||
1084 | "$(INTDIR)\ConfirmWRQDlg.obj" : $(SOURCE) $(DEP_CPP_CONFIR) "$(INTDIR)"\ | 1182 | "$(INTDIR)\ConfirmWRQDlg.obj" : $(SOURCE) $(DEP_CPP_CONFIR) "$(INTDIR)"\ |
1085 | "$(INTDIR)\pumpkin.pch" | 1183 | "$(INTDIR)\pumpkin.pch" |
1086 | 1184 | ||
1087 | 1185 | ||
1088 | !ELSEIF "$(CFG)" == "PumpKIN - Win32 Debug" | 1186 | !ELSEIF "$(CFG)" == "PumpKIN - Win32 Debug" |
1089 | 1187 | ||
1188 | DEP_CPP_CONFIR=\ | ||
1189 | ".\ConfirmWRQDlg.h"\ | ||
1190 | ".\pumpkin.h"\ | ||
1191 | ".\PumpKINDlg.h"\ | ||
1192 | ".\shared-code\kHelpers.h"\ | ||
1193 | ".\stdafx.h"\ | ||
1194 | |||
1090 | 1195 | ||
1091 | "$(INTDIR)\ConfirmWRQDlg.obj" : $(SOURCE) $(DEP_CPP_CONFIR) "$(INTDIR)"\ | 1196 | "$(INTDIR)\ConfirmWRQDlg.obj" : $(SOURCE) $(DEP_CPP_CONFIR) "$(INTDIR)"\ |
1092 | "$(INTDIR)\pumpkin.pch" | 1197 | "$(INTDIR)\pumpkin.pch" |
1093 | 1198 | ||
1094 | "$(INTDIR)\ConfirmWRQDlg.sbr" : $(SOURCE) $(DEP_CPP_CONFIR) "$(INTDIR)"\ | 1199 | "$(INTDIR)\ConfirmWRQDlg.sbr" : $(SOURCE) $(DEP_CPP_CONFIR) "$(INTDIR)"\ |
1095 | "$(INTDIR)\pumpkin.pch" | 1200 | "$(INTDIR)\pumpkin.pch" |
1096 | 1201 | ||
1097 | 1202 | ||
1098 | !ELSEIF "$(CFG)" == "PumpKIN - Win32 Static" | 1203 | !ELSEIF "$(CFG)" == "PumpKIN - Win32 Static" |
1099 | 1204 | ||
1205 | DEP_CPP_CONFIR=\ | ||
1206 | ".\ConfirmWRQDlg.h"\ | ||
1207 | ".\pumpkin.h"\ | ||
1208 | ".\PumpKINDlg.h"\ | ||
1209 | ".\shared-code\BellsNWhistles.h"\ | ||
1210 | ".\shared-code\kHelpers.h"\ | ||
1211 | ".\stdafx.h"\ | ||
1212 | |||
1100 | 1213 | ||
1101 | "$(INTDIR)\ConfirmWRQDlg.obj" : $(SOURCE) $(DEP_CPP_CONFIR) "$(INTDIR)"\ | 1214 | "$(INTDIR)\ConfirmWRQDlg.obj" : $(SOURCE) $(DEP_CPP_CONFIR) "$(INTDIR)"\ |
1102 | "$(INTDIR)\pumpkin.pch" | 1215 | "$(INTDIR)\pumpkin.pch" |
1103 | 1216 | ||
1104 | 1217 | ||
1105 | !ENDIF | 1218 | !ENDIF |
1106 | 1219 | ||
1107 | # End Source File | 1220 | # End Source File |
1108 | ################################################################################ | 1221 | ################################################################################ |
1109 | # Begin Source File | 1222 | # Begin Source File |
1110 | 1223 | ||
1111 | SOURCE=.\RequestDlg.cpp | 1224 | SOURCE=.\RequestDlg.cpp |
1112 | DEP_CPP_REQUE=\ | 1225 | DEP_CPP_REQUE=\ |
1113 | ".\PumpKIN.h"\ | 1226 | ".\pumpkin.h"\ |
1114 | ".\RequestDlg.h"\ | 1227 | ".\RequestDlg.h"\ |
1115 | ".\shared-code\BellsNWhistles.h"\ | 1228 | ".\shared-code\BellsNWhistles.h"\ |
1116 | ".\shared-code\kHelpers.h"\ | 1229 | ".\shared-code\kHelpers.h"\ |
1117 | ".\stdafx.h"\ | 1230 | ".\stdafx.h"\ |
1118 | 1231 | ||
1119 | 1232 | ||
1120 | !IF "$(CFG)" == "PumpKIN - Win32 Release" | 1233 | !IF "$(CFG)" == "PumpKIN - Win32 Release" |
1121 | 1234 | ||
1122 | 1235 | ||
1123 | "$(INTDIR)\RequestDlg.obj" : $(SOURCE) $(DEP_CPP_REQUE) "$(INTDIR)"\ | 1236 | "$(INTDIR)\RequestDlg.obj" : $(SOURCE) $(DEP_CPP_REQUE) "$(INTDIR)"\ |
1124 | "$(INTDIR)\pumpkin.pch" | 1237 | "$(INTDIR)\pumpkin.pch" |
1125 | 1238 | ||
@@ -1139,132 +1252,177 @@ DEP_CPP_REQUE=\ | |||
1139 | 1252 | ||
1140 | "$(INTDIR)\RequestDlg.obj" : $(SOURCE) $(DEP_CPP_REQUE) "$(INTDIR)"\ | 1253 | "$(INTDIR)\RequestDlg.obj" : $(SOURCE) $(DEP_CPP_REQUE) "$(INTDIR)"\ |
1141 | "$(INTDIR)\pumpkin.pch" | 1254 | "$(INTDIR)\pumpkin.pch" |
1142 | 1255 | ||
1143 | 1256 | ||
1144 | !ENDIF | 1257 | !ENDIF |
1145 | 1258 | ||
1146 | # End Source File | 1259 | # End Source File |
1147 | ################################################################################ | 1260 | ################################################################################ |
1148 | # Begin Source File | 1261 | # Begin Source File |
1149 | 1262 | ||
1150 | SOURCE=.\Resolver.cpp | 1263 | SOURCE=.\Resolver.cpp |
1264 | |||
1265 | !IF "$(CFG)" == "PumpKIN - Win32 Release" | ||
1266 | |||
1151 | DEP_CPP_RESOL=\ | 1267 | DEP_CPP_RESOL=\ |
1152 | ".\PumpKIN.h"\ | 1268 | ".\pumpkin.h"\ |
1153 | ".\PumpKINDlg.h"\ | 1269 | ".\PumpKINDlg.h"\ |
1154 | ".\Resolver.h"\ | 1270 | ".\Resolver.h"\ |
1155 | ".\shared-code\BellsNWhistles.h"\ | 1271 | ".\shared-code\BellsNWhistles.h"\ |
1156 | ".\shared-code\kHelpers.h"\ | 1272 | ".\shared-code\kHelpers.h"\ |
1157 | ".\stdafx.h"\ | 1273 | ".\stdafx.h"\ |
1158 | 1274 | ||
1159 | 1275 | ||
1160 | !IF "$(CFG)" == "PumpKIN - Win32 Release" | ||
1161 | |||
1162 | |||
1163 | "$(INTDIR)\Resolver.obj" : $(SOURCE) $(DEP_CPP_RESOL) "$(INTDIR)"\ | 1276 | "$(INTDIR)\Resolver.obj" : $(SOURCE) $(DEP_CPP_RESOL) "$(INTDIR)"\ |
1164 | "$(INTDIR)\pumpkin.pch" | 1277 | "$(INTDIR)\pumpkin.pch" |
1165 | 1278 | ||
1166 | 1279 | ||
1167 | !ELSEIF "$(CFG)" == "PumpKIN - Win32 Debug" | 1280 | !ELSEIF "$(CFG)" == "PumpKIN - Win32 Debug" |
1168 | 1281 | ||
1282 | DEP_CPP_RESOL=\ | ||
1283 | ".\pumpkin.h"\ | ||
1284 | ".\PumpKINDlg.h"\ | ||
1285 | ".\Resolver.h"\ | ||
1286 | ".\shared-code\kHelpers.h"\ | ||
1287 | ".\stdafx.h"\ | ||
1288 | |||
1169 | 1289 | ||
1170 | "$(INTDIR)\Resolver.obj" : $(SOURCE) $(DEP_CPP_RESOL) "$(INTDIR)"\ | 1290 | "$(INTDIR)\Resolver.obj" : $(SOURCE) $(DEP_CPP_RESOL) "$(INTDIR)"\ |
1171 | "$(INTDIR)\pumpkin.pch" | 1291 | "$(INTDIR)\pumpkin.pch" |
1172 | 1292 | ||
1173 | "$(INTDIR)\Resolver.sbr" : $(SOURCE) $(DEP_CPP_RESOL) "$(INTDIR)"\ | 1293 | "$(INTDIR)\Resolver.sbr" : $(SOURCE) $(DEP_CPP_RESOL) "$(INTDIR)"\ |
1174 | "$(INTDIR)\pumpkin.pch" | 1294 | "$(INTDIR)\pumpkin.pch" |
1175 | 1295 | ||
1176 | 1296 | ||
1177 | !ELSEIF "$(CFG)" == "PumpKIN - Win32 Static" | 1297 | !ELSEIF "$(CFG)" == "PumpKIN - Win32 Static" |
1178 | 1298 | ||
1299 | DEP_CPP_RESOL=\ | ||
1300 | ".\pumpkin.h"\ | ||
1301 | ".\PumpKINDlg.h"\ | ||
1302 | ".\Resolver.h"\ | ||
1303 | ".\shared-code\BellsNWhistles.h"\ | ||
1304 | ".\shared-code\kHelpers.h"\ | ||
1305 | ".\stdafx.h"\ | ||
1306 | |||
1179 | 1307 | ||
1180 | "$(INTDIR)\Resolver.obj" : $(SOURCE) $(DEP_CPP_RESOL) "$(INTDIR)"\ | 1308 | "$(INTDIR)\Resolver.obj" : $(SOURCE) $(DEP_CPP_RESOL) "$(INTDIR)"\ |
1181 | "$(INTDIR)\pumpkin.pch" | 1309 | "$(INTDIR)\pumpkin.pch" |
1182 | 1310 | ||
1183 | 1311 | ||
1184 | !ENDIF | 1312 | !ENDIF |
1185 | 1313 | ||
1186 | # End Source File | 1314 | # End Source File |
1187 | ################################################################################ | 1315 | ################################################################################ |
1188 | # Begin Source File | 1316 | # Begin Source File |
1189 | 1317 | ||
1190 | SOURCE=.\Retrier.cpp | 1318 | SOURCE=.\Retrier.cpp |
1319 | |||
1320 | !IF "$(CFG)" == "PumpKIN - Win32 Release" | ||
1321 | |||
1191 | DEP_CPP_RETRI=\ | 1322 | DEP_CPP_RETRI=\ |
1192 | ".\PumpKIN.h"\ | 1323 | ".\pumpkin.h"\ |
1193 | ".\PumpKINDlg.h"\ | 1324 | ".\PumpKINDlg.h"\ |
1194 | ".\Retrier.h"\ | 1325 | ".\Retrier.h"\ |
1195 | ".\shared-code\BellsNWhistles.h"\ | 1326 | ".\shared-code\BellsNWhistles.h"\ |
1196 | ".\shared-code\kHelpers.h"\ | 1327 | ".\shared-code\kHelpers.h"\ |
1197 | ".\stdafx.h"\ | 1328 | ".\stdafx.h"\ |
1198 | 1329 | ||
1199 | 1330 | ||
1200 | !IF "$(CFG)" == "PumpKIN - Win32 Release" | ||
1201 | |||
1202 | |||
1203 | "$(INTDIR)\Retrier.obj" : $(SOURCE) $(DEP_CPP_RETRI) "$(INTDIR)"\ | 1331 | "$(INTDIR)\Retrier.obj" : $(SOURCE) $(DEP_CPP_RETRI) "$(INTDIR)"\ |
1204 | "$(INTDIR)\pumpkin.pch" | 1332 | "$(INTDIR)\pumpkin.pch" |
1205 | 1333 | ||
1206 | 1334 | ||
1207 | !ELSEIF "$(CFG)" == "PumpKIN - Win32 Debug" | 1335 | !ELSEIF "$(CFG)" == "PumpKIN - Win32 Debug" |
1208 | 1336 | ||
1337 | DEP_CPP_RETRI=\ | ||
1338 | ".\pumpkin.h"\ | ||
1339 | ".\PumpKINDlg.h"\ | ||
1340 | ".\Retrier.h"\ | ||
1341 | ".\shared-code\kHelpers.h"\ | ||
1342 | ".\stdafx.h"\ | ||
1343 | |||
1209 | 1344 | ||
1210 | "$(INTDIR)\Retrier.obj" : $(SOURCE) $(DEP_CPP_RETRI) "$(INTDIR)"\ | 1345 | "$(INTDIR)\Retrier.obj" : $(SOURCE) $(DEP_CPP_RETRI) "$(INTDIR)"\ |
1211 | "$(INTDIR)\pumpkin.pch" | 1346 | "$(INTDIR)\pumpkin.pch" |
1212 | 1347 | ||
1213 | "$(INTDIR)\Retrier.sbr" : $(SOURCE) $(DEP_CPP_RETRI) "$(INTDIR)"\ | 1348 | "$(INTDIR)\Retrier.sbr" : $(SOURCE) $(DEP_CPP_RETRI) "$(INTDIR)"\ |
1214 | "$(INTDIR)\pumpkin.pch" | 1349 | "$(INTDIR)\pumpkin.pch" |
1215 | 1350 | ||
1216 | 1351 | ||
1217 | !ELSEIF "$(CFG)" == "PumpKIN - Win32 Static" | 1352 | !ELSEIF "$(CFG)" == "PumpKIN - Win32 Static" |
1218 | 1353 | ||
1354 | DEP_CPP_RETRI=\ | ||
1355 | ".\pumpkin.h"\ | ||
1356 | ".\PumpKINDlg.h"\ | ||
1357 | ".\Retrier.h"\ | ||
1358 | ".\shared-code\BellsNWhistles.h"\ | ||
1359 | ".\shared-code\kHelpers.h"\ | ||
1360 | ".\stdafx.h"\ | ||
1361 | |||
1219 | 1362 | ||
1220 | "$(INTDIR)\Retrier.obj" : $(SOURCE) $(DEP_CPP_RETRI) "$(INTDIR)"\ | 1363 | "$(INTDIR)\Retrier.obj" : $(SOURCE) $(DEP_CPP_RETRI) "$(INTDIR)"\ |
1221 | "$(INTDIR)\pumpkin.pch" | 1364 | "$(INTDIR)\pumpkin.pch" |
1222 | 1365 | ||
1223 | 1366 | ||
1224 | !ENDIF | 1367 | !ENDIF |
1225 | 1368 | ||
1226 | # End Source File | 1369 | # End Source File |
1227 | ################################################################################ | 1370 | ################################################################################ |
1228 | # Begin Source File | 1371 | # Begin Source File |
1229 | 1372 | ||
1230 | SOURCE=.\Trayer.cpp | 1373 | SOURCE=.\Trayer.cpp |
1374 | |||
1375 | !IF "$(CFG)" == "PumpKIN - Win32 Release" | ||
1376 | |||
1231 | DEP_CPP_TRAYE=\ | 1377 | DEP_CPP_TRAYE=\ |
1232 | ".\PumpKIN.h"\ | 1378 | ".\pumpkin.h"\ |
1233 | ".\PumpKINDlg.h"\ | 1379 | ".\PumpKINDlg.h"\ |
1234 | ".\shared-code\BellsNWhistles.h"\ | 1380 | ".\shared-code\BellsNWhistles.h"\ |
1235 | ".\shared-code\kHelpers.h"\ | 1381 | ".\shared-code\kHelpers.h"\ |
1236 | ".\stdafx.h"\ | 1382 | ".\stdafx.h"\ |
1237 | ".\Trayer.h"\ | 1383 | ".\Trayer.h"\ |
1238 | 1384 | ||
1239 | 1385 | ||
1240 | !IF "$(CFG)" == "PumpKIN - Win32 Release" | ||
1241 | |||
1242 | |||
1243 | "$(INTDIR)\Trayer.obj" : $(SOURCE) $(DEP_CPP_TRAYE) "$(INTDIR)"\ | 1386 | "$(INTDIR)\Trayer.obj" : $(SOURCE) $(DEP_CPP_TRAYE) "$(INTDIR)"\ |
1244 | "$(INTDIR)\pumpkin.pch" | 1387 | "$(INTDIR)\pumpkin.pch" |
1245 | 1388 | ||
1246 | 1389 | ||
1247 | !ELSEIF "$(CFG)" == "PumpKIN - Win32 Debug" | 1390 | !ELSEIF "$(CFG)" == "PumpKIN - Win32 Debug" |
1248 | 1391 | ||
1392 | DEP_CPP_TRAYE=\ | ||
1393 | ".\pumpkin.h"\ | ||
1394 | ".\PumpKINDlg.h"\ | ||
1395 | ".\shared-code\kHelpers.h"\ | ||
1396 | ".\stdafx.h"\ | ||
1397 | ".\Trayer.h"\ | ||
1398 | |||
1249 | 1399 | ||
1250 | "$(INTDIR)\Trayer.obj" : $(SOURCE) $(DEP_CPP_TRAYE) "$(INTDIR)"\ | 1400 | "$(INTDIR)\Trayer.obj" : $(SOURCE) $(DEP_CPP_TRAYE) "$(INTDIR)"\ |
1251 | "$(INTDIR)\pumpkin.pch" | 1401 | "$(INTDIR)\pumpkin.pch" |
1252 | 1402 | ||
1253 | "$(INTDIR)\Trayer.sbr" : $(SOURCE) $(DEP_CPP_TRAYE) "$(INTDIR)"\ | 1403 | "$(INTDIR)\Trayer.sbr" : $(SOURCE) $(DEP_CPP_TRAYE) "$(INTDIR)"\ |
1254 | "$(INTDIR)\pumpkin.pch" | 1404 | "$(INTDIR)\pumpkin.pch" |
1255 | 1405 | ||
1256 | 1406 | ||
1257 | !ELSEIF "$(CFG)" == "PumpKIN - Win32 Static" | 1407 | !ELSEIF "$(CFG)" == "PumpKIN - Win32 Static" |
1258 | 1408 | ||
1409 | DEP_CPP_TRAYE=\ | ||
1410 | ".\pumpkin.h"\ | ||
1411 | ".\PumpKINDlg.h"\ | ||
1412 | ".\shared-code\BellsNWhistles.h"\ | ||
1413 | ".\shared-code\kHelpers.h"\ | ||
1414 | ".\stdafx.h"\ | ||
1415 | ".\Trayer.h"\ | ||
1416 | |||
1259 | 1417 | ||
1260 | "$(INTDIR)\Trayer.obj" : $(SOURCE) $(DEP_CPP_TRAYE) "$(INTDIR)"\ | 1418 | "$(INTDIR)\Trayer.obj" : $(SOURCE) $(DEP_CPP_TRAYE) "$(INTDIR)"\ |
1261 | "$(INTDIR)\pumpkin.pch" | 1419 | "$(INTDIR)\pumpkin.pch" |
1262 | 1420 | ||
1263 | 1421 | ||
1264 | !ENDIF | 1422 | !ENDIF |
1265 | 1423 | ||
1266 | # End Source File | 1424 | # End Source File |
1267 | ################################################################################ | 1425 | ################################################################################ |
1268 | # Begin Source File | 1426 | # Begin Source File |
1269 | 1427 | ||
1270 | SOURCE=.\help\pumpkin.cnt | 1428 | SOURCE=.\help\pumpkin.cnt |
@@ -1279,60 +1437,188 @@ SOURCE=.\help\pumpkin.cnt | |||
1279 | 1437 | ||
1280 | !ELSEIF "$(CFG)" == "PumpKIN - Win32 Static" | 1438 | !ELSEIF "$(CFG)" == "PumpKIN - Win32 Static" |
1281 | 1439 | ||
1282 | # PROP Exclude_From_Build 1 | 1440 | # PROP Exclude_From_Build 1 |
1283 | 1441 | ||
1284 | !ENDIF | 1442 | !ENDIF |
1285 | 1443 | ||
1286 | # End Source File | 1444 | # End Source File |
1287 | ################################################################################ | 1445 | ################################################################################ |
1288 | # Begin Source File | 1446 | # Begin Source File |
1289 | 1447 | ||
1290 | SOURCE=.\PropsSounds.cpp | 1448 | SOURCE=.\PropsSounds.cpp |
1449 | |||
1450 | !IF "$(CFG)" == "PumpKIN - Win32 Release" | ||
1451 | |||
1291 | DEP_CPP_PROPSS=\ | 1452 | DEP_CPP_PROPSS=\ |
1292 | ".\PropsSounds.h"\ | 1453 | ".\PropsSounds.h"\ |
1293 | ".\PumpKIN.h"\ | 1454 | ".\pumpkin.h"\ |
1294 | ".\PumpKINDlg.h"\ | 1455 | ".\PumpKINDlg.h"\ |
1295 | ".\shared-code\BellsNWhistles.h"\ | 1456 | ".\shared-code\BellsNWhistles.h"\ |
1296 | ".\shared-code\kHelpers.h"\ | 1457 | ".\shared-code\kHelpers.h"\ |
1297 | ".\stdafx.h"\ | 1458 | ".\stdafx.h"\ |
1298 | 1459 | ||
1299 | 1460 | ||
1300 | !IF "$(CFG)" == "PumpKIN - Win32 Release" | ||
1301 | |||
1302 | |||
1303 | "$(INTDIR)\PropsSounds.obj" : $(SOURCE) $(DEP_CPP_PROPSS) "$(INTDIR)"\ | 1461 | "$(INTDIR)\PropsSounds.obj" : $(SOURCE) $(DEP_CPP_PROPSS) "$(INTDIR)"\ |
1304 | "$(INTDIR)\pumpkin.pch" | 1462 | "$(INTDIR)\pumpkin.pch" |
1305 | 1463 | ||
1306 | 1464 | ||
1307 | !ELSEIF "$(CFG)" == "PumpKIN - Win32 Debug" | 1465 | !ELSEIF "$(CFG)" == "PumpKIN - Win32 Debug" |
1308 | 1466 | ||
1467 | DEP_CPP_PROPSS=\ | ||
1468 | ".\PropsSounds.h"\ | ||
1469 | ".\pumpkin.h"\ | ||
1470 | ".\PumpKINDlg.h"\ | ||
1471 | ".\shared-code\kHelpers.h"\ | ||
1472 | ".\stdafx.h"\ | ||
1473 | |||
1309 | 1474 | ||
1310 | "$(INTDIR)\PropsSounds.obj" : $(SOURCE) $(DEP_CPP_PROPSS) "$(INTDIR)"\ | 1475 | "$(INTDIR)\PropsSounds.obj" : $(SOURCE) $(DEP_CPP_PROPSS) "$(INTDIR)"\ |
1311 | "$(INTDIR)\pumpkin.pch" | 1476 | "$(INTDIR)\pumpkin.pch" |
1312 | 1477 | ||
1313 | "$(INTDIR)\PropsSounds.sbr" : $(SOURCE) $(DEP_CPP_PROPSS) "$(INTDIR)"\ | 1478 | "$(INTDIR)\PropsSounds.sbr" : $(SOURCE) $(DEP_CPP_PROPSS) "$(INTDIR)"\ |
1314 | "$(INTDIR)\pumpkin.pch" | 1479 | "$(INTDIR)\pumpkin.pch" |
1315 | 1480 | ||
1316 | 1481 | ||
1317 | !ELSEIF "$(CFG)" == "PumpKIN - Win32 Static" | 1482 | !ELSEIF "$(CFG)" == "PumpKIN - Win32 Static" |
1318 | 1483 | ||
1484 | DEP_CPP_PROPSS=\ | ||
1485 | ".\PropsSounds.h"\ | ||
1486 | ".\pumpkin.h"\ | ||
1487 | ".\PumpKINDlg.h"\ | ||
1488 | ".\shared-code\BellsNWhistles.h"\ | ||
1489 | ".\shared-code\kHelpers.h"\ | ||
1490 | ".\stdafx.h"\ | ||
1491 | |||
1319 | 1492 | ||
1320 | "$(INTDIR)\PropsSounds.obj" : $(SOURCE) $(DEP_CPP_PROPSS) "$(INTDIR)"\ | 1493 | "$(INTDIR)\PropsSounds.obj" : $(SOURCE) $(DEP_CPP_PROPSS) "$(INTDIR)"\ |
1321 | "$(INTDIR)\pumpkin.pch" | 1494 | "$(INTDIR)\pumpkin.pch" |
1322 | 1495 | ||
1323 | 1496 | ||
1324 | !ENDIF | 1497 | !ENDIF |
1325 | 1498 | ||
1326 | # End Source File | 1499 | # End Source File |
1500 | ################################################################################ | ||
1501 | # Begin Source File | ||
1502 | |||
1503 | SOURCE=.\PropsACL.cpp | ||
1504 | |||
1505 | !IF "$(CFG)" == "PumpKIN - Win32 Release" | ||
1506 | |||
1507 | DEP_CPP_PROPSA=\ | ||
1508 | ".\ACLTargetCombo.h"\ | ||
1509 | ".\PropsACL.h"\ | ||
1510 | ".\pumpkin.h"\ | ||
1511 | ".\PumpKINDlg.h"\ | ||
1512 | ".\shared-code\BellsNWhistles.h"\ | ||
1513 | ".\shared-code\kHelpers.h"\ | ||
1514 | ".\stdafx.h"\ | ||
1515 | |||
1516 | |||
1517 | "$(INTDIR)\PropsACL.obj" : $(SOURCE) $(DEP_CPP_PROPSA) "$(INTDIR)"\ | ||
1518 | "$(INTDIR)\pumpkin.pch" | ||
1519 | |||
1520 | |||
1521 | !ELSEIF "$(CFG)" == "PumpKIN - Win32 Debug" | ||
1522 | |||
1523 | DEP_CPP_PROPSA=\ | ||
1524 | ".\ACLTargetCombo.h"\ | ||
1525 | ".\PropsACL.h"\ | ||
1526 | ".\pumpkin.h"\ | ||
1527 | ".\PumpKINDlg.h"\ | ||
1528 | ".\shared-code\kHelpers.h"\ | ||
1529 | ".\stdafx.h"\ | ||
1530 | |||
1531 | |||
1532 | "$(INTDIR)\PropsACL.obj" : $(SOURCE) $(DEP_CPP_PROPSA) "$(INTDIR)"\ | ||
1533 | "$(INTDIR)\pumpkin.pch" | ||
1534 | |||
1535 | "$(INTDIR)\PropsACL.sbr" : $(SOURCE) $(DEP_CPP_PROPSA) "$(INTDIR)"\ | ||
1536 | "$(INTDIR)\pumpkin.pch" | ||
1537 | |||
1538 | |||
1539 | !ELSEIF "$(CFG)" == "PumpKIN - Win32 Static" | ||
1540 | |||
1541 | DEP_CPP_PROPSA=\ | ||
1542 | ".\ACLTargetCombo.h"\ | ||
1543 | ".\PropsACL.h"\ | ||
1544 | ".\pumpkin.h"\ | ||
1545 | ".\PumpKINDlg.h"\ | ||
1546 | ".\shared-code\BellsNWhistles.h"\ | ||
1547 | ".\shared-code\kHelpers.h"\ | ||
1548 | ".\stdafx.h"\ | ||
1549 | |||
1550 | |||
1551 | "$(INTDIR)\PropsACL.obj" : $(SOURCE) $(DEP_CPP_PROPSA) "$(INTDIR)"\ | ||
1552 | "$(INTDIR)\pumpkin.pch" | ||
1553 | |||
1554 | |||
1555 | !ENDIF | ||
1556 | |||
1557 | # End Source File | ||
1558 | ################################################################################ | ||
1559 | # Begin Source File | ||
1560 | |||
1561 | SOURCE=.\ACLTargetCombo.cpp | ||
1562 | |||
1563 | !IF "$(CFG)" == "PumpKIN - Win32 Release" | ||
1564 | |||
1565 | DEP_CPP_ACLTA=\ | ||
1566 | ".\ACLTargetCombo.h"\ | ||
1567 | ".\pumpkin.h"\ | ||
1568 | ".\PumpKINDlg.h"\ | ||
1569 | ".\shared-code\BellsNWhistles.h"\ | ||
1570 | ".\shared-code\kHelpers.h"\ | ||
1571 | ".\stdafx.h"\ | ||
1572 | |||
1573 | |||
1574 | "$(INTDIR)\ACLTargetCombo.obj" : $(SOURCE) $(DEP_CPP_ACLTA) "$(INTDIR)"\ | ||
1575 | "$(INTDIR)\pumpkin.pch" | ||
1576 | |||
1577 | |||
1578 | !ELSEIF "$(CFG)" == "PumpKIN - Win32 Debug" | ||
1579 | |||
1580 | DEP_CPP_ACLTA=\ | ||
1581 | ".\ACLTargetCombo.h"\ | ||
1582 | ".\pumpkin.h"\ | ||
1583 | ".\PumpKINDlg.h"\ | ||
1584 | ".\shared-code\kHelpers.h"\ | ||
1585 | ".\stdafx.h"\ | ||
1586 | |||
1587 | |||
1588 | "$(INTDIR)\ACLTargetCombo.obj" : $(SOURCE) $(DEP_CPP_ACLTA) "$(INTDIR)"\ | ||
1589 | "$(INTDIR)\pumpkin.pch" | ||
1590 | |||
1591 | "$(INTDIR)\ACLTargetCombo.sbr" : $(SOURCE) $(DEP_CPP_ACLTA) "$(INTDIR)"\ | ||
1592 | "$(INTDIR)\pumpkin.pch" | ||
1593 | |||
1594 | |||
1595 | !ELSEIF "$(CFG)" == "PumpKIN - Win32 Static" | ||
1596 | |||
1597 | DEP_CPP_ACLTA=\ | ||
1598 | ".\ACLTargetCombo.h"\ | ||
1599 | ".\pumpkin.h"\ | ||
1600 | ".\PumpKINDlg.h"\ | ||
1601 | ".\shared-code\BellsNWhistles.h"\ | ||
1602 | ".\shared-code\kHelpers.h"\ | ||
1603 | ".\stdafx.h"\ | ||
1604 | |||
1605 | |||
1606 | "$(INTDIR)\ACLTargetCombo.obj" : $(SOURCE) $(DEP_CPP_ACLTA) "$(INTDIR)"\ | ||
1607 | "$(INTDIR)\pumpkin.pch" | ||
1608 | |||
1609 | |||
1610 | !ENDIF | ||
1611 | |||
1612 | # End Source File | ||
1327 | # End Target | 1613 | # End Target |
1328 | ################################################################################ | 1614 | ################################################################################ |
1329 | # Begin Target | 1615 | # Begin Target |
1330 | 1616 | ||
1331 | # Name "Install - Win32 Debug" | 1617 | # Name "Install - Win32 Debug" |
1332 | # Name "Install - Win32 Pure" | 1618 | # Name "Install - Win32 Pure" |
1333 | # Name "Install - Win32 Static" | 1619 | # Name "Install - Win32 Static" |
1334 | # Name "Install - Win32 Canned" | 1620 | # Name "Install - Win32 Canned" |
1335 | 1621 | ||
1336 | !IF "$(CFG)" == "Install - Win32 Debug" | 1622 | !IF "$(CFG)" == "Install - Win32 Debug" |
1337 | 1623 | ||
1338 | !ELSEIF "$(CFG)" == "Install - Win32 Pure" | 1624 | !ELSEIF "$(CFG)" == "Install - Win32 Pure" |
@@ -61,110 +61,121 @@ END | |||
61 | ///////////////////////////////////////////////////////////////////////////// | 61 | ///////////////////////////////////////////////////////////////////////////// |
62 | // | 62 | // |
63 | // Icon | 63 | // Icon |
64 | // | 64 | // |
65 | 65 | ||
66 | // Icon with lowest ID value placed first to ensure application icon | 66 | // Icon with lowest ID value placed first to ensure application icon |
67 | // remains consistent on all systems. | 67 | // remains consistent on all systems. |
68 | IDI_RRQ ICON DISCARDABLE "res\\wrq.ico" | 68 | IDI_RRQ ICON DISCARDABLE "res\\wrq.ico" |
69 | IDI_WRQ ICON DISCARDABLE "res\\rrq.ico" | 69 | IDI_WRQ ICON DISCARDABLE "res\\rrq.ico" |
70 | IDI_BROWSE ICON DISCARDABLE "shared-data/browse-icon.ico" | 70 | IDI_BROWSE ICON DISCARDABLE "shared-data/browse-icon.ico" |
71 | IDR_MAINFRAME ICON DISCARDABLE "res\\pumpkin.ico" | 71 | IDR_MAINFRAME ICON DISCARDABLE "res\\pumpkin.ico" |
72 | IDI_PLAY ICON DISCARDABLE "shared-data/play-icon.ico" | 72 | IDI_PLAY ICON DISCARDABLE "shared-data/play-icon.ico" |
73 | IDI_UP ICON DISCARDABLE "res\\up.ico" | ||
74 | IDI_DOWN ICON DISCARDABLE "res\\down.ico" | ||
75 | IDI_REMOVE ICON DISCARDABLE "res\\remove.ico" | ||
73 | 76 | ||
74 | ///////////////////////////////////////////////////////////////////////////// | 77 | ///////////////////////////////////////////////////////////////////////////// |
75 | // | 78 | // |
76 | // Dialog | 79 | // Dialog |
77 | // | 80 | // |
78 | 81 | ||
79 | IDD_ABOUTBOX DIALOG DISCARDABLE 0, 0, 217, 74 | 82 | IDD_ABOUTBOX DIALOG DISCARDABLE 0, 0, 217, 74 |
80 | STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | 83 | STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU |
81 | CAPTION "About PumpKIN" | 84 | CAPTION "About PumpKIN" |
82 | FONT 8, "MS Sans Serif" | 85 | FONT 8, "MS Sans Serif" |
83 | BEGIN | 86 | BEGIN |
84 | ICON IDR_MAINFRAME,IDC_STATIC,7,17,18,20 | 87 | ICON IDR_MAINFRAME,IDC_STATIC,7,17,18,20 |
85 | LTEXT "PumpKIN, Version 2.6",IDC_STATIC,40,15,119,8, | 88 | LTEXT "PumpKIN, Version 2.7",IDC_STATIC,40,15,119,8, |
86 | SS_NOPREFIX | 89 | SS_NOPREFIX |
87 | LTEXT "Copyright © 1997-2005 Klever Group",IDC_STATIC,40,30, | 90 | LTEXT "Copyright © 1997-2006 Klever Group",IDC_STATIC,40,30, |
88 | 170,8 | 91 | 170,8 |
89 | DEFPUSHBUTTON "OK",IDOK,178,7,32,14,WS_GROUP | 92 | DEFPUSHBUTTON "OK",IDOK,178,7,32,14,WS_GROUP |
90 | PUSHBUTTON "http://www.klever.net/",IDC_KLEVERNET,124,53,86,14 | 93 | PUSHBUTTON "http://www.klever.net/",IDC_KLEVERNET,124,53,86,14 |
91 | END | 94 | END |
92 | 95 | ||
93 | IDD_PUMPKIN_DIALOG DIALOGEX 0, 0, 362, 191 | 96 | IDD_PUMPKIN_DIALOG DIALOGEX 0, 0, 362, 193 |
94 | STYLE DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | | 97 | STYLE DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | |
95 | WS_SYSMENU | 98 | WS_SYSMENU |
96 | EXSTYLE WS_EX_ACCEPTFILES | WS_EX_APPWINDOW | 99 | EXSTYLE WS_EX_ACCEPTFILES | WS_EX_APPWINDOW |
97 | CAPTION " PumpKIN" | 100 | CAPTION " PumpKIN" |
98 | FONT 8, "MS Sans Serif", 0, 0, 0x1 | 101 | FONT 8, "MS Sans Serif" |
99 | BEGIN | 102 | BEGIN |
100 | CONTROL "List1",IDC_CONNECTIONS,"SysListView32",LVS_REPORT | | 103 | CONTROL "List1",IDC_CONNECTIONS,"SysListView32",LVS_REPORT | |
101 | LVS_AUTOARRANGE | WS_BORDER | WS_TABSTOP,7,7,295,108, | 104 | LVS_AUTOARRANGE | WS_BORDER | WS_TABSTOP,7,7,295,108, |
102 | WS_EX_DLGMODALFRAME | 105 | WS_EX_DLGMODALFRAME |
103 | PUSHBUTTON "&Get File",IDC_GET,305,7,50,17,BS_NOTIFY, | 106 | PUSHBUTTON "&Get File",IDC_GET,305,7,50,17,BS_NOTIFY, |
104 | WS_EX_CLIENTEDGE | 107 | WS_EX_CLIENTEDGE |
105 | PUSHBUTTON "&Put File",IDC_PUT,305,25,50,17,BS_NOTIFY, | 108 | PUSHBUTTON "&Put File",IDC_PUT,305,25,50,17,BS_NOTIFY, |
106 | WS_EX_CLIENTEDGE | 109 | WS_EX_CLIENTEDGE |
107 | PUSHBUTTON "&Abort xfer",IDC_ABORT,305,43,50,17,BS_NOTIFY, | 110 | PUSHBUTTON "&Abort xfer",IDC_ABORT,305,43,50,17,BS_NOTIFY, |
108 | WS_EX_CLIENTEDGE | 111 | WS_EX_CLIENTEDGE |
109 | PUSHBUTTON "&Options",IDC_OPTIONS,305,61,50,17,BS_NOTIFY, | 112 | PUSHBUTTON "&Options",IDC_OPTIONS,305,61,50,17,BS_NOTIFY, |
110 | WS_EX_CLIENTEDGE | 113 | WS_EX_CLIENTEDGE |
111 | PUSHBUTTON "E&xit",IDC_EXIT,305,79,50,17,BS_NOTIFY,WS_EX_CLIENTEDGE | 114 | PUSHBUTTON "E&xit",IDC_EXIT,305,79,50,17,BS_NOTIFY,WS_EX_CLIENTEDGE |
112 | PUSHBUTTON "&Help",ID_HELP,305,97,50,17,BS_NOTIFY,WS_EX_CLIENTEDGE | 115 | PUSHBUTTON "&Help",ID_HELP,305,97,50,17,BS_NOTIFY,WS_EX_CLIENTEDGE |
113 | LISTBOX IDC_LOG,7,115,348,69,LBS_USETABSTOPS | LBS_NOSEL | | 116 | LISTBOX IDC_LOG,7,115,348,65,LBS_USETABSTOPS | LBS_NOSEL | |
114 | WS_VSCROLL | WS_HSCROLL,WS_EX_DLGMODALFRAME | 117 | WS_VSCROLL | WS_HSCROLL,WS_EX_DLGMODALFRAME |
115 | PUSHBUTTON "..",IDCANCEL,0,183,6,7,NOT WS_VISIBLE | NOT WS_TABSTOP | 118 | PUSHBUTTON "..",IDCANCEL,0,183,6,7,NOT WS_VISIBLE | NOT WS_TABSTOP |
119 | CONTROL "&Server is running",IDC_LISTENING,"Button", | ||
120 | BS_AUTOCHECKBOX | BS_LEFTTEXT | BS_FLAT | WS_TABSTOP,286, | ||
121 | 180,69,11,WS_EX_TRANSPARENT | WS_EX_STATICEDGE | ||
116 | END | 122 | END |
117 | 123 | ||
118 | IDD_PROPS_SERVER DIALOG DISCARDABLE 0, 0, 210, 154 | 124 | IDD_PROPS_SERVER DIALOG DISCARDABLE 0, 0, 300, 201 |
119 | STYLE WS_CHILD | WS_DISABLED | WS_CAPTION | 125 | STYLE WS_CHILD | WS_DISABLED | WS_CAPTION |
120 | CAPTION "Server" | 126 | CAPTION "Server" |
121 | FONT 8, "MS Sans Serif" | 127 | FONT 8, "MS Sans Serif" |
122 | BEGIN | 128 | BEGIN |
123 | GROUPBOX "TFTP filesystem &root (download path)",IDC_STATIC,7,7, | 129 | GROUPBOX "TFTP filesystem &root (download path)",IDC_STATIC,7,7, |
124 | 196,38 | 130 | 286,38 |
125 | EDITTEXT IDC_TFTPROOT,13,16,170,13,ES_AUTOHSCROLL | 131 | EDITTEXT IDC_TFTPROOT,13,16,256,13,ES_AUTOHSCROLL |
126 | PUSHBUTTON "&B",IDC_BROWSE,186,16,13,13,BS_ICON | 132 | PUSHBUTTON "&B",IDC_BROWSE,274,16,13,13,BS_ICON |
127 | CONTROL "Allow access to &subdirectories",IDC_TFTPSUBDIRS, | 133 | CONTROL "Allow access to &subdirectories",IDC_TFTPSUBDIRS, |
128 | "Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,31,111,10 | 134 | "Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,31,111,10 |
129 | GROUPBOX "Read Request Behavior",IDC_STATIC,7,48,153,42 | 135 | GROUPBOX "Read Request Behavior",IDC_STATIC,7,48,243,56 |
130 | CONTROL "Give &all files",IDC_RRQ_GIVEALL,"Button", | 136 | CONTROL "Give &all files",IDC_RRQ_GIVEALL,"Button", |
131 | BS_AUTORADIOBUTTON | BS_NOTIFY | WS_GROUP,13,57,53,10 | 137 | BS_AUTORADIOBUTTON | BS_NOTIFY | WS_GROUP,13,63,53,10 |
132 | CONTROL "&Prompt before giving file",IDC_RRQ_ALWAYSCONFIRM, | 138 | CONTROL "&Prompt before giving file",IDC_RRQ_ALWAYSCONFIRM, |
133 | "Button",BS_AUTORADIOBUTTON | BS_NOTIFY,23,67,91,10 | 139 | "Button",BS_AUTORADIOBUTTON | BS_NOTIFY,43,75,91,10 |
134 | CONTROL "&Deny all requests",IDC_RRQ_DENYALL,"Button", | 140 | CONTROL "&Deny all requests",IDC_RRQ_DENYALL,"Button", |
135 | BS_AUTORADIOBUTTON | BS_NOTIFY,33,77,70,10 | 141 | BS_AUTORADIOBUTTON | BS_NOTIFY,73,87,70,10 |
136 | GROUPBOX "Write Request Behavior",IDC_STATIC,7,93,172,54,WS_GROUP | 142 | GROUPBOX "Write Request Behavior",IDC_STATIC,7,106,243,56, |
143 | WS_GROUP | ||
137 | CONTROL "Take a&ll files",IDC_WRQ_TAKEALL,"Button", | 144 | CONTROL "Take a&ll files",IDC_WRQ_TAKEALL,"Button", |
138 | BS_AUTORADIOBUTTON | WS_GROUP,13,103,55,10 | 145 | BS_AUTORADIOBUTTON | WS_GROUP,13,116,55,10 |
139 | CONTROL "Prompt if file &exists",IDC_WRQ_PROMPTEXISTING,"Button", | 146 | CONTROL "Prompt if file &exists",IDC_WRQ_PROMPTEXISTING,"Button", |
140 | BS_AUTORADIOBUTTON,23,113,73,10 | 147 | BS_AUTORADIOBUTTON,43,126,73,10 |
141 | CONTROL "Always pro&mpt before accepting file", | 148 | CONTROL "Always pro&mpt before accepting file", |
142 | IDC_WRQ_ALWAYSCONFIRM,"Button",BS_AUTORADIOBUTTON,33,123, | 149 | IDC_WRQ_ALWAYSCONFIRM,"Button",BS_AUTORADIOBUTTON,73,136, |
143 | 139,10 | 150 | 139,10 |
144 | CONTROL "D&eny all requests",IDC_WRQ_DENYALL,"Button", | 151 | CONTROL "D&eny all requests",IDC_WRQ_DENYALL,"Button", |
145 | BS_AUTORADIOBUTTON,43,133,70,10 | 152 | BS_AUTORADIOBUTTON,103,146,70,10 |
146 | CTEXT "Confirmation &timeout",IDC_STATIC,163,52,40,19, | 153 | CTEXT "Confirmation &timeout",IDC_STATIC,253,52,40,19, |
147 | SS_NOTIFY | 154 | SS_NOTIFY |
148 | CONTROL "Slider1",IDC_PROMPTTIMEOUT,"msctls_trackbar32", | 155 | CONTROL "Slider1",IDC_PROMPTTIMEOUT,"msctls_trackbar32", |
149 | TBS_AUTOTICKS | TBS_VERT | TBS_TOP | WS_TABSTOP,182,73, | 156 | TBS_AUTOTICKS | TBS_VERT | TBS_TOP | WS_TABSTOP,272,72, |
150 | 21,74 | 157 | 21,90 |
158 | GROUPBOX "Log file (leave empty to disable logging to file)", | ||
159 | IDC_STATIC,7,165,286,29 | ||
160 | EDITTEXT IDC_LOGFILE,13,175,256,13,ES_AUTOHSCROLL | ||
161 | PUSHBUTTON "",IDC_LOGFILE_BROWSE,274,175,13,13,BS_ICON | ||
151 | END | 162 | END |
152 | 163 | ||
153 | IDD_PROPS_NETWORK DIALOG DISCARDABLE 0, 0, 210, 154 | 164 | IDD_PROPS_NETWORK DIALOG DISCARDABLE 0, 0, 300, 201 |
154 | STYLE WS_CHILD | WS_DISABLED | WS_CAPTION | 165 | STYLE WS_CHILD | WS_DISABLED | WS_CAPTION |
155 | CAPTION "Network" | 166 | CAPTION "Network" |
156 | FONT 8, "MS Sans Serif" | 167 | FONT 8, "MS Sans Serif" |
157 | BEGIN | 168 | BEGIN |
158 | GROUPBOX "UDP Ports",IDC_STATIC,7,7,196,40 | 169 | GROUPBOX "UDP Ports",IDC_STATIC,7,7,286,40 |
159 | RTEXT "Listen for &incoming requests on port:",IDC_STATIC,13, | 170 | RTEXT "Listen for &incoming requests on port:",IDC_STATIC,13, |
160 | 18,135,8 | 171 | 18,135,8 |
161 | EDITTEXT IDC_LISTENPORT,154,16,40,13,ES_AUTOHSCROLL | 172 | EDITTEXT IDC_LISTENPORT,154,16,40,13,ES_AUTOHSCROLL |
162 | CONTROL "Spin1",IDC_LISTENSPIN,"msctls_updown32",UDS_WRAP | | 173 | CONTROL "Spin1",IDC_LISTENSPIN,"msctls_updown32",UDS_WRAP | |
163 | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | | 174 | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | |
164 | UDS_ARROWKEYS | UDS_NOTHOUSANDS,183,16,11,13 | 175 | UDS_ARROWKEYS | UDS_NOTHOUSANDS,183,16,11,13 |
165 | RTEXT "Send &outging requests to port:",IDC_STATIC,13,31,135,8 | 176 | RTEXT "Send &outging requests to port:",IDC_STATIC,13,31,135,8 |
166 | EDITTEXT IDC_SPEAKPORT,154,29,40,13,ES_AUTOHSCROLL | 177 | EDITTEXT IDC_SPEAKPORT,154,29,40,13,ES_AUTOHSCROLL |
167 | CONTROL "Spin1",IDC_SPEAKSPIN,"msctls_updown32",UDS_WRAP | | 178 | CONTROL "Spin1",IDC_SPEAKSPIN,"msctls_updown32",UDS_WRAP | |
168 | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | | 179 | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | |
169 | UDS_ARROWKEYS | UDS_NOTHOUSANDS,183,29,11,13 | 180 | UDS_ARROWKEYS | UDS_NOTHOUSANDS,183,29,11,13 |
170 | LTEXT "Default connection timeout:",IDC_STATIC,7,52,88,8 | 181 | LTEXT "Default connection timeout:",IDC_STATIC,7,52,88,8 |
@@ -248,79 +259,107 @@ BEGIN | |||
248 | WS_EX_CLIENTEDGE | 259 | WS_EX_CLIENTEDGE |
249 | LTEXT "&Type:",IDC_STATIC,58,34,19,8 | 260 | LTEXT "&Type:",IDC_STATIC,58,34,19,8 |
250 | COMBOBOX IDC_TYPE,80,31,43,41,CBS_DROPDOWN | CBS_AUTOHSCROLL | | 261 | COMBOBOX IDC_TYPE,80,31,43,41,CBS_DROPDOWN | CBS_AUTOHSCROLL | |
251 | CBS_LOWERCASE | WS_VSCROLL | WS_TABSTOP | 262 | CBS_LOWERCASE | WS_VSCROLL | WS_TABSTOP |
252 | LTEXT "&Block:",IDC_STATIC,127,34,21,8 | 263 | LTEXT "&Block:",IDC_STATIC,127,34,21,8 |
253 | COMBOBOX IDC_BSIZE,149,31,35,53,CBS_DROPDOWN | WS_VSCROLL | | 264 | COMBOBOX IDC_BSIZE,149,31,35,53,CBS_DROPDOWN | WS_VSCROLL | |
254 | WS_TABSTOP | 265 | WS_TABSTOP |
255 | DEFPUSHBUTTON "OK",IDOK,35,140,50,14 | 266 | DEFPUSHBUTTON "OK",IDOK,35,140,50,14 |
256 | PUSHBUTTON "Cancel",IDCANCEL,101,140,50,14 | 267 | PUSHBUTTON "Cancel",IDCANCEL,101,140,50,14 |
257 | CONTROL "",IDC_STATIC,"Static",SS_ETCHEDVERT,52,32,1,11 | 268 | CONTROL "",IDC_STATIC,"Static",SS_ETCHEDVERT,52,32,1,11 |
258 | END | 269 | END |
259 | 270 | ||
260 | IDD_PROPS_SOUNDS DIALOG DISCARDABLE 0, 0, 210, 154 | 271 | IDD_PROPS_SOUNDS DIALOG DISCARDABLE 0, 0, 300, 201 |
261 | STYLE WS_CHILD | WS_DISABLED | WS_CAPTION | 272 | STYLE WS_CHILD | WS_DISABLED | WS_CAPTION |
262 | CAPTION "Sounds" | 273 | CAPTION "Sounds" |
263 | FONT 8, "MS Sans Serif" | 274 | FONT 8, "MS Sans Serif" |
264 | BEGIN | 275 | BEGIN |
265 | LTEXT "&Incoming request:",IDC_STATIC,7,9,57,8 | 276 | LTEXT "&Incoming request:",IDC_STATIC,7,9,57,8 |
266 | COMBOBOX IDC_RING,70,7,103,100,CBS_DROPDOWN | CBS_AUTOHSCROLL | | 277 | COMBOBOX IDC_RING,70,7,188,100,CBS_DROPDOWN | CBS_AUTOHSCROLL | |
267 | CBS_SORT | WS_VSCROLL | WS_TABSTOP | 278 | CBS_SORT | WS_VSCROLL | WS_TABSTOP |
268 | PUSHBUTTON "browse",IDC_RING_BROWSE,175,7,13,13,BS_ICON | 279 | PUSHBUTTON "browse",IDC_RING_BROWSE,263,7,13,13,BS_ICON |
269 | PUSHBUTTON "play",IDC_RING_PLAY,190,7,13,13,BS_ICON | 280 | PUSHBUTTON "play",IDC_RING_PLAY,280,7,13,13,BS_ICON |
270 | LTEXT "xfer &finished:",IDC_STATIC,7,25,57,8 | 281 | LTEXT "xfer &finished:",IDC_STATIC,7,25,57,8 |
271 | COMBOBOX IDC_FINISHED,70,22,103,100,CBS_DROPDOWN | | 282 | COMBOBOX IDC_FINISHED,70,22,188,100,CBS_DROPDOWN | |
272 | CBS_AUTOHSCROLL | CBS_SORT | WS_VSCROLL | WS_TABSTOP | 283 | CBS_AUTOHSCROLL | CBS_SORT | WS_VSCROLL | WS_TABSTOP |
273 | PUSHBUTTON "browse",IDC_FINISHED_BROWSE,175,22,13,13,BS_ICON | 284 | PUSHBUTTON "browse",IDC_FINISHED_BROWSE,263,22,13,13,BS_ICON |
274 | PUSHBUTTON "play",IDC_FINISHED_PLAY,190,22,13,13,BS_ICON | 285 | PUSHBUTTON "play",IDC_FINISHED_PLAY,280,22,13,13,BS_ICON |
275 | LTEXT "xfer &aborted:",IDC_STATIC,7,40,57,8 | 286 | LTEXT "xfer &aborted:",IDC_STATIC,7,40,57,8 |
276 | COMBOBOX IDC_ABORTED,70,37,103,100,CBS_DROPDOWN | CBS_AUTOHSCROLL | | 287 | COMBOBOX IDC_ABORTED,70,37,188,100,CBS_DROPDOWN | CBS_AUTOHSCROLL | |
277 | CBS_SORT | WS_VSCROLL | WS_TABSTOP | 288 | CBS_SORT | WS_VSCROLL | WS_TABSTOP |
278 | PUSHBUTTON "browse",IDC_ABORTED_BROWSE,175,37,13,13,BS_ICON | 289 | PUSHBUTTON "browse",IDC_ABORTED_BROWSE,263,37,13,13,BS_ICON |
279 | PUSHBUTTON "play",IDC_ABORTED_PLAY,190,37,13,13,BS_ICON | 290 | PUSHBUTTON "play",IDC_ABORTED_PLAY,280,37,13,13,BS_ICON |
291 | END | ||
292 | |||
293 | IDD_PROPS_ACL DIALOG DISCARDABLE 0, 0, 300, 201 | ||
294 | STYLE WS_CHILD | WS_DISABLED | WS_CAPTION | ||
295 | CAPTION "Access Lists" | ||
296 | FONT 8, "MS Sans Serif" | ||
297 | BEGIN | ||
298 | CONTROL "List1",IDC_ACL_LIST,"SysListView32",LVS_REPORT | | ||
299 | WS_BORDER | WS_TABSTOP,7,7,258,110 | ||
300 | PUSHBUTTON "&Up",IDC_ACL_UP,273,7,20,30,BS_ICON | BS_CENTER | | ||
301 | BS_VCENTER | ||
302 | PUSHBUTTON "&Down",IDC_ACL_DOWN,273,87,20,30,BS_ICON | BS_CENTER | | ||
303 | BS_VCENTER | ||
304 | PUSHBUTTON "&Remove",IDC_ACL_REMOVE,273,47,20,30,BS_ICON | | ||
305 | BS_CENTER | BS_VCENTER | ||
306 | LTEXT "If",IDC_STATIC,13,128,8,8 | ||
307 | COMBOBOX IDC_ACL_XFER,21,125,48,67,CBS_DROPDOWNLIST | WS_VSCROLL | | ||
308 | WS_TABSTOP | ||
309 | LTEXT "request comes from the address in the network", | ||
310 | IDC_STATIC,71,128,122,8 | ||
311 | EDITTEXT IDC_ACL_ADDR,47,143,80,12,ES_AUTOHSCROLL | ||
312 | LTEXT "with netmask",IDC_STATIC,129,145,41,8 | ||
313 | EDITTEXT IDC_ACL_NETMASK,173,143,80,12,ES_AUTOHSCROLL | ||
314 | LTEXT "then",IDC_STATIC,124,160,15,8 | ||
315 | COMBOBOX IDC_ACL_RULE,143,158,123,117,CBS_DROPDOWNLIST | | ||
316 | WS_VSCROLL | WS_TABSTOP | ||
317 | PUSHBUTTON "&Add new rule",IDC_ACL_ADD,7,178,130,16 | ||
318 | PUSHBUTTON "&Replace rule",IDC_ACL_REPLACE,152,178,130,16 | ||
280 | END | 319 | END |
281 | 320 | ||
282 | 321 | ||
283 | #ifndef _MAC | 322 | #ifndef _MAC |
284 | ///////////////////////////////////////////////////////////////////////////// | 323 | ///////////////////////////////////////////////////////////////////////////// |
285 | // | 324 | // |
286 | // Version | 325 | // Version |
287 | // | 326 | // |
288 | 327 | ||
289 | VS_VERSION_INFO VERSIONINFO | 328 | VS_VERSION_INFO VERSIONINFO |
290 | FILEVERSION 2,6,0,0 | 329 | FILEVERSION 2,7,0,0 |
291 | PRODUCTVERSION 2,6,0,0 | 330 | PRODUCTVERSION 2,7,0,0 |
292 | FILEFLAGSMASK 0x3fL | 331 | FILEFLAGSMASK 0x3fL |
293 | #ifdef _DEBUG | 332 | #ifdef _DEBUG |
294 | FILEFLAGS 0x1L | 333 | FILEFLAGS 0x1L |
295 | #else | 334 | #else |
296 | FILEFLAGS 0x0L | 335 | FILEFLAGS 0x0L |
297 | #endif | 336 | #endif |
298 | FILEOS 0x4L | 337 | FILEOS 0x4L |
299 | FILETYPE 0x1L | 338 | FILETYPE 0x1L |
300 | FILESUBTYPE 0x0L | 339 | FILESUBTYPE 0x0L |
301 | BEGIN | 340 | BEGIN |
302 | BLOCK "StringFileInfo" | 341 | BLOCK "StringFileInfo" |
303 | BEGIN | 342 | BEGIN |
304 | BLOCK "040904b0" | 343 | BLOCK "040904b0" |
305 | BEGIN | 344 | BEGIN |
306 | VALUE "CompanyName", "Klever Group (http://www.klever.net/)\0" | 345 | VALUE "CompanyName", "Klever Group (http://www.klever.net/)\0" |
307 | VALUE "FileDescription", "PumpKIN, tftp client/daemon\0" | 346 | VALUE "FileDescription", "PumpKIN, tftp client/daemon\0" |
308 | VALUE "FileVersion", "2, 6, 0, 0\0" | 347 | VALUE "FileVersion", "2, 7, 0, 0\0" |
309 | VALUE "InternalName", "PUMPKIN\0" | 348 | VALUE "InternalName", "PUMPKIN\0" |
310 | VALUE "LegalCopyright", "Copyright © 1997-2005 Klever Group (http://www.klever.net)\0" | 349 | VALUE "LegalCopyright", "Copyright © 1997-2006 Klever Group (http://www.klever.net)\0" |
311 | VALUE "LegalTrademarks", "Klever Group (http://www.klever.net/)\0" | 350 | VALUE "LegalTrademarks", "Klever Group (http://www.klever.net/)\0" |
312 | VALUE "OriginalFilename", "PUMPKIN.EXE\0" | 351 | VALUE "OriginalFilename", "PUMPKIN.EXE\0" |
313 | VALUE "ProductName", "PumpKIN\0" | 352 | VALUE "ProductName", "PumpKIN\0" |
314 | VALUE "ProductVersion", "2, 6, 0, 0\0" | 353 | VALUE "ProductVersion", "2, 7, 0, 0\0" |
315 | END | 354 | END |
316 | END | 355 | END |
317 | BLOCK "VarFileInfo" | 356 | BLOCK "VarFileInfo" |
318 | BEGIN | 357 | BEGIN |
319 | VALUE "Translation", 0x409, 1200 | 358 | VALUE "Translation", 0x409, 1200 |
320 | END | 359 | END |
321 | END | 360 | END |
322 | 361 | ||
323 | #endif // !_MAC | 362 | #endif // !_MAC |
324 | 363 | ||
325 | 364 | ||
326 | ///////////////////////////////////////////////////////////////////////////// | 365 | ///////////////////////////////////////////////////////////////////////////// |
@@ -335,42 +374,42 @@ BEGIN | |||
335 | BEGIN | 374 | BEGIN |
336 | LEFTMARGIN, 7 | 375 | LEFTMARGIN, 7 |
337 | RIGHTMARGIN, 210 | 376 | RIGHTMARGIN, 210 |
338 | TOPMARGIN, 7 | 377 | TOPMARGIN, 7 |
339 | BOTTOMMARGIN, 67 | 378 | BOTTOMMARGIN, 67 |
340 | END | 379 | END |
341 | 380 | ||
342 | IDD_PUMPKIN_DIALOG, DIALOG | 381 | IDD_PUMPKIN_DIALOG, DIALOG |
343 | BEGIN | 382 | BEGIN |
344 | LEFTMARGIN, 7 | 383 | LEFTMARGIN, 7 |
345 | RIGHTMARGIN, 355 | 384 | RIGHTMARGIN, 355 |
346 | TOPMARGIN, 7 | 385 | TOPMARGIN, 7 |
347 | BOTTOMMARGIN, 184 | 386 | BOTTOMMARGIN, 186 |
348 | HORZGUIDE, 115 | 387 | HORZGUIDE, 115 |
349 | END | 388 | END |
350 | 389 | ||
351 | IDD_PROPS_SERVER, DIALOG | 390 | IDD_PROPS_SERVER, DIALOG |
352 | BEGIN | 391 | BEGIN |
353 | LEFTMARGIN, 7 | 392 | LEFTMARGIN, 7 |
354 | RIGHTMARGIN, 203 | 393 | RIGHTMARGIN, 293 |
355 | TOPMARGIN, 7 | 394 | TOPMARGIN, 7 |
356 | BOTTOMMARGIN, 147 | 395 | BOTTOMMARGIN, 194 |
357 | END | 396 | END |
358 | 397 | ||
359 | IDD_PROPS_NETWORK, DIALOG | 398 | IDD_PROPS_NETWORK, DIALOG |
360 | BEGIN | 399 | BEGIN |
361 | LEFTMARGIN, 7 | 400 | LEFTMARGIN, 7 |
362 | RIGHTMARGIN, 203 | 401 | RIGHTMARGIN, 293 |
363 | TOPMARGIN, 7 | 402 | TOPMARGIN, 7 |
364 | BOTTOMMARGIN, 147 | 403 | BOTTOMMARGIN, 194 |
365 | END | 404 | END |
366 | 405 | ||
367 | IDD_CONFIRM_RRQ, DIALOG | 406 | IDD_CONFIRM_RRQ, DIALOG |
368 | BEGIN | 407 | BEGIN |
369 | LEFTMARGIN, 7 | 408 | LEFTMARGIN, 7 |
370 | RIGHTMARGIN, 174 | 409 | RIGHTMARGIN, 174 |
371 | TOPMARGIN, 7 | 410 | TOPMARGIN, 7 |
372 | BOTTOMMARGIN, 72 | 411 | BOTTOMMARGIN, 72 |
373 | END | 412 | END |
374 | 413 | ||
375 | IDD_CONFIRM_WRQ, DIALOG | 414 | IDD_CONFIRM_WRQ, DIALOG |
376 | BEGIN | 415 | BEGIN |
@@ -382,27 +421,37 @@ BEGIN | |||
382 | 421 | ||
383 | IDD_REQUEST, DIALOG | 422 | IDD_REQUEST, DIALOG |
384 | BEGIN | 423 | BEGIN |
385 | LEFTMARGIN, 7 | 424 | LEFTMARGIN, 7 |
386 | RIGHTMARGIN, 184 | 425 | RIGHTMARGIN, 184 |
387 | TOPMARGIN, 7 | 426 | TOPMARGIN, 7 |
388 | BOTTOMMARGIN, 154 | 427 | BOTTOMMARGIN, 154 |
389 | END | 428 | END |
390 | 429 | ||
391 | IDD_PROPS_SOUNDS, DIALOG | 430 | IDD_PROPS_SOUNDS, DIALOG |
392 | BEGIN | 431 | BEGIN |
393 | LEFTMARGIN, 7 | 432 | LEFTMARGIN, 7 |
394 | RIGHTMARGIN, 203 | 433 | RIGHTMARGIN, 293 |
395 | TOPMARGIN, 7 | 434 | TOPMARGIN, 7 |
396 | BOTTOMMARGIN, 147 | 435 | BOTTOMMARGIN, 194 |
436 | END | ||
437 | |||
438 | IDD_PROPS_ACL, DIALOG | ||
439 | BEGIN | ||
440 | LEFTMARGIN, 7 | ||
441 | RIGHTMARGIN, 293 | ||
442 | TOPMARGIN, 7 | ||
443 | BOTTOMMARGIN, 194 | ||
444 | HORZGUIDE, 117 | ||
445 | HORZGUIDE, 125 | ||
397 | END | 446 | END |
398 | END | 447 | END |
399 | #endif // APSTUDIO_INVOKED | 448 | #endif // APSTUDIO_INVOKED |
400 | 449 | ||
401 | 450 | ||
402 | ///////////////////////////////////////////////////////////////////////////// | 451 | ///////////////////////////////////////////////////////////////////////////// |
403 | // | 452 | // |
404 | // Bitmap | 453 | // Bitmap |
405 | // | 454 | // |
406 | 455 | ||
407 | IDB_BACKGROUND BITMAP DISCARDABLE "shared-data/klever-background.bmp" | 456 | IDB_BACKGROUND BITMAP DISCARDABLE "shared-data/klever-background.bmp" |
408 | 457 | ||
@@ -430,37 +479,57 @@ BEGIN | |||
430 | 0x3135, 0x0032, | 479 | 0x3135, 0x0032, |
431 | IDC_BSIZE, 0x403, 5, 0 | 480 | IDC_BSIZE, 0x403, 5, 0 |
432 | 0x3031, 0x3432, "\000" | 481 | 0x3031, 0x3432, "\000" |
433 | IDC_BSIZE, 0x403, 5, 0 | 482 | IDC_BSIZE, 0x403, 5, 0 |
434 | 0x3032, 0x3834, "\000" | 483 | 0x3032, 0x3834, "\000" |
435 | IDC_BSIZE, 0x403, 5, 0 | 484 | IDC_BSIZE, 0x403, 5, 0 |
436 | 0x3034, 0x3639, "\000" | 485 | 0x3034, 0x3639, "\000" |
437 | IDC_BSIZE, 0x403, 5, 0 | 486 | IDC_BSIZE, 0x403, 5, 0 |
438 | 0x3138, 0x3239, "\000" | 487 | 0x3138, 0x3239, "\000" |
439 | 0 | 488 | 0 |
440 | END | 489 | END |
441 | 490 | ||
491 | IDD_PROPS_ACL DLGINIT | ||
492 | BEGIN | ||
493 | IDC_ACL_XFER, 0x403, 5, 0 | ||
494 | 0x6572, 0x6461, "\000" | ||
495 | IDC_ACL_XFER, 0x403, 6, 0 | ||
496 | 0x7277, 0x7469, 0x0065, | ||
497 | IDC_ACL_RULE, 0x403, 12, 0 | ||
498 | 0x6361, 0x6563, 0x7470, 0x6620, 0x6c69, 0x0065, | ||
499 | IDC_ACL_RULE, 0x403, 33, 0 | ||
500 | 0x6361, 0x6563, 0x7470, 0x6120, 0x646e, 0x7220, 0x6e65, 0x6d61, 0x2065, | ||
501 | 0x6669, 0x6620, 0x6c69, 0x2065, 0x7865, 0x7369, 0x7374, "\000" | ||
502 | IDC_ACL_RULE, 0x403, 12, 0 | ||
503 | 0x6572, 0x656a, 0x7463, 0x6620, 0x6c69, 0x0065, | ||
504 | IDC_ACL_RULE, 0x403, 31, 0 | ||
505 | 0x6166, 0x6c6c, 0x6162, 0x6b63, 0x7420, 0x206f, 0x6874, 0x2065, 0x6c67, | ||
506 | 0x626f, 0x6c61, 0x7320, 0x7465, 0x6974, 0x676e, "\000" | ||
507 | 0 | ||
508 | END | ||
509 | |||
442 | 510 | ||
443 | ///////////////////////////////////////////////////////////////////////////// | 511 | ///////////////////////////////////////////////////////////////////////////// |
444 | // | 512 | // |
445 | // Menu | 513 | // Menu |
446 | // | 514 | // |
447 | 515 | ||
448 | IDM_POPUPS MENU DISCARDABLE | 516 | IDM_POPUPS MENU DISCARDABLE |
449 | BEGIN | 517 | BEGIN |
450 | POPUP "&Tray" | 518 | POPUP "&Tray" |
451 | BEGIN | 519 | BEGIN |
452 | MENUITEM "&Send File", ID_TRAY_SENDFILE | 520 | MENUITEM "&Send File", ID_TRAY_SENDFILE |
453 | MENUITEM "F&etch file", ID_TRAY_FETCHFILE | 521 | MENUITEM "F&etch file", ID_TRAY_FETCHFILE |
454 | MENUITEM "&Options", ID_TRAY_OPTIONS | 522 | MENUITEM "&Options", ID_TRAY_OPTIONS |
523 | MENUITEM "&Listen to requests", ID_TRAY_LISTEN | ||
455 | MENUITEM "Show &PumpKIN Window", ID_TRAY_SHOWPUMPKINWINDOW | 524 | MENUITEM "Show &PumpKIN Window", ID_TRAY_SHOWPUMPKINWINDOW |
456 | MENUITEM "Open &Files Folder", ID_TRAY_OPENFILESFOLDER | 525 | MENUITEM "Open &Files Folder", ID_TRAY_OPENFILESFOLDER |
457 | MENUITEM SEPARATOR | 526 | MENUITEM SEPARATOR |
458 | MENUITEM "&Help Topics", ID_TRAY_HELP | 527 | MENUITEM "&Help Topics", ID_TRAY_HELP |
459 | MENUITEM "&About PumpKIN", ID_TRAY_ABOUTPUMPKIN | 528 | MENUITEM "&About PumpKIN", ID_TRAY_ABOUTPUMPKIN |
460 | MENUITEM SEPARATOR | 529 | MENUITEM SEPARATOR |
461 | MENUITEM "E&xit", ID_TRAY_EXIT | 530 | MENUITEM "E&xit", ID_TRAY_EXIT |
462 | END | 531 | END |
463 | END | 532 | END |
464 | 533 | ||
465 | 534 | ||
466 | ///////////////////////////////////////////////////////////////////////////// | 535 | ///////////////////////////////////////////////////////////////////////////// |
@@ -524,24 +593,25 @@ BEGIN | |||
524 | END | 593 | END |
525 | 594 | ||
526 | STRINGTABLE DISCARDABLE | 595 | STRINGTABLE DISCARDABLE |
527 | BEGIN | 596 | BEGIN |
528 | ID_TRAY_HELP "Read the help on PumpKIN" | 597 | ID_TRAY_HELP "Read the help on PumpKIN" |
529 | ID_TRAY_ABOUTPUMPKIN "Learn about PumpKIN and it's creator" | 598 | ID_TRAY_ABOUTPUMPKIN "Learn about PumpKIN and it's creator" |
530 | ID_TRAY_EXIT "Close PumpKIN" | 599 | ID_TRAY_EXIT "Close PumpKIN" |
531 | ID_TRAY_SENDFILE "Send file over the network to your tete-a-tete" | 600 | ID_TRAY_SENDFILE "Send file over the network to your tete-a-tete" |
532 | ID_TRAY_FETCHFILE "Fetch file from remote computer" | 601 | ID_TRAY_FETCHFILE "Fetch file from remote computer" |
533 | ID_TRAY_OPTIONS "Set PumpKIN options" | 602 | ID_TRAY_OPTIONS "Set PumpKIN options" |
534 | ID_TRAY_SHOWPUMPKINWINDOW "Show main window" | 603 | ID_TRAY_SHOWPUMPKINWINDOW "Show main window" |
535 | ID_TRAY_OPENFILESFOLDER "Explore TFTP root folder" | 604 | ID_TRAY_OPENFILESFOLDER "Explore TFTP root folder" |
605 | ID_TRAY_LISTEN "Listen for incoming requests" | ||
536 | END | 606 | END |
537 | 607 | ||
538 | STRINGTABLE DISCARDABLE | 608 | STRINGTABLE DISCARDABLE |
539 | BEGIN | 609 | BEGIN |
540 | IDC_CONNECTIONS "Active transfers" | 610 | IDC_CONNECTIONS "Active transfers" |
541 | IDC_LOG "PumpKIN Activity Log" | 611 | IDC_LOG "PumpKIN Activity Log" |
542 | IDC_GET "Fetch file from remote server" | 612 | IDC_GET "Fetch file from remote server" |
543 | IDC_PUT "Send file over the net" | 613 | IDC_PUT "Send file over the net" |
544 | IDC_ABORT "Abort transfer currently in progress" | 614 | IDC_ABORT "Abort transfer currently in progress" |
545 | IDC_EXIT "Close PumpKIN" | 615 | IDC_EXIT "Close PumpKIN" |
546 | END | 616 | END |
547 | 617 | ||
@@ -563,31 +633,40 @@ BEGIN | |||
563 | IDS_NOMULTIPLEDROP_TEXT "You can't drop more than one file here. Only the first one will be accepted" | 633 | IDS_NOMULTIPLEDROP_TEXT "You can't drop more than one file here. Only the first one will be accepted" |
564 | IDS_LOG_REQUESTING "Requesting '%s' from '%s'" | 634 | IDS_LOG_REQUESTING "Requesting '%s' from '%s'" |
565 | IDS_LOG_SENDING "Sending '%s' to '%s'" | 635 | IDS_LOG_SENDING "Sending '%s' to '%s'" |
566 | IDS_WTALKAT "@" | 636 | IDS_WTALKAT "@" |
567 | IDS_OTALXAT " at " | 637 | IDS_OTALXAT " at " |
568 | IDS_TFTP_ERROR_TSIZE "Invalid transfer size" | 638 | IDS_TFTP_ERROR_TSIZE "Invalid transfer size" |
569 | IDS_TFTP_ERROR_BSIZE "Invalid block size" | 639 | IDS_TFTP_ERROR_BSIZE "Invalid block size" |
570 | IDS_TFTP_ERROR_TOUT "Invalid timeout" | 640 | IDS_TFTP_ERROR_TOUT "Invalid timeout" |
571 | IDS_SELECT_TFTPROOT "Select TFTP filesystem root.." | 641 | IDS_SELECT_TFTPROOT "Select TFTP filesystem root.." |
572 | IDS_FILTER_WAV "Sound Files (*.wav)|*.wav||" | 642 | IDS_FILTER_WAV "Sound Files (*.wav)|*.wav||" |
573 | IDS_TITLE_WAV "Select sound.." | 643 | IDS_TITLE_WAV "Select sound.." |
574 | IDS_BOX_CANTBIND "Failed to create listening socket. The port may be in use by another application." | 644 | IDS_BOX_CANTBIND "Failed to create listening socket. The port may be in use by another application." |
645 | IDS_NO_XFER_OP "No request type specified." | ||
646 | IDS_INVALID_IP "Invalid IP address." | ||
647 | IDS_INVALID_NETMASK "Invalid netmask." | ||
575 | END | 648 | END |
576 | 649 | ||
577 | STRINGTABLE DISCARDABLE | 650 | STRINGTABLE DISCARDABLE |
578 | BEGIN | 651 | BEGIN |
579 | AFX_IDS_APP_TITLE "PUMPKIN" | 652 | AFX_IDS_APP_TITLE "PUMPKIN" |
580 | END | 653 | END |
581 | 654 | ||
655 | STRINGTABLE DISCARDABLE | ||
656 | BEGIN | ||
657 | IDS_INVALID_RULE "Invalid access rule." | ||
658 | IDS_LOG_LOGERROR "Error logging to '%s'" | ||
659 | END | ||
660 | |||
582 | #endif // English (U.S.) resources | 661 | #endif // English (U.S.) resources |
583 | ///////////////////////////////////////////////////////////////////////////// | 662 | ///////////////////////////////////////////////////////////////////////////// |
584 | 663 | ||
585 | 664 | ||
586 | 665 | ||
587 | #ifndef APSTUDIO_INVOKED | 666 | #ifndef APSTUDIO_INVOKED |
588 | ///////////////////////////////////////////////////////////////////////////// | 667 | ///////////////////////////////////////////////////////////////////////////// |
589 | // | 668 | // |
590 | // Generated from the TEXTINCLUDE 3 resource. | 669 | // Generated from the TEXTINCLUDE 3 resource. |
591 | // | 670 | // |
592 | #define _AFX_NO_SPLITTER_RESOURCES | 671 | #define _AFX_NO_SPLITTER_RESOURCES |
593 | #define _AFX_NO_OLE_RESOURCES | 672 | #define _AFX_NO_OLE_RESOURCES |
diff --git a/res/down.ico b/res/down.ico new file mode 100644 index 0000000..433e718 --- a/dev/null +++ b/res/down.ico | |||
Binary files differ | |||
diff --git a/res/remove.ico b/res/remove.ico new file mode 100644 index 0000000..8e4473d --- a/dev/null +++ b/res/remove.ico | |||
Binary files differ | |||
diff --git a/res/up.ico b/res/up.ico new file mode 100644 index 0000000..32f684b --- a/dev/null +++ b/res/up.ico | |||
Binary files differ | |||
@@ -64,30 +64,39 @@ | |||
64 | #define IDS_KLEVERNET_URL 142 | 64 | #define IDS_KLEVERNET_URL 142 |
65 | #define IDR_WAVE_ABORTED 142 | 65 | #define IDR_WAVE_ABORTED 142 |
66 | #define IDS_LOGTIMEFORMAT 143 | 66 | #define IDS_LOGTIMEFORMAT 143 |
67 | #define IDS_DROPFILES_TITLE 144 | 67 | #define IDS_DROPFILES_TITLE 144 |
68 | #define IDS_NOMULTIPLEDROP_TEXT 145 | 68 | #define IDS_NOMULTIPLEDROP_TEXT 145 |
69 | #define IDI_BROWSE 145 | 69 | #define IDI_BROWSE 145 |
70 | #define IDS_LOG_REQUESTING 146 | 70 | #define IDS_LOG_REQUESTING 146 |
71 | #define IDS_LOG_SENDING 147 | 71 | #define IDS_LOG_SENDING 147 |
72 | #define IDS_WTALKAT 148 | 72 | #define IDS_WTALKAT 148 |
73 | #define IDS_OTALXAT 149 | 73 | #define IDS_OTALXAT 149 |
74 | #define IDI_PLAY 149 | 74 | #define IDI_PLAY 149 |
75 | #define IDS_TFTP_ERROR_TSIZE 150 | 75 | #define IDS_TFTP_ERROR_TSIZE 150 |
76 | #define IDD_PROPS_ACL 150 | ||
76 | #define IDS_TFTP_ERROR_BSIZE 151 | 77 | #define IDS_TFTP_ERROR_BSIZE 151 |
77 | #define IDS_TFTP_ERROR_TOUT 152 | 78 | #define IDS_TFTP_ERROR_TOUT 152 |
79 | #define IDI_UP 152 | ||
78 | #define IDS_SELECT_TFTPROOT 153 | 80 | #define IDS_SELECT_TFTPROOT 153 |
81 | #define IDI_DOWN 153 | ||
79 | #define IDS_FILTER_WAV 154 | 82 | #define IDS_FILTER_WAV 154 |
83 | #define IDI_REMOVE 154 | ||
80 | #define IDS_TITLE_WAV 155 | 84 | #define IDS_TITLE_WAV 155 |
81 | #define IDS_BOX_CANTBIND 156 | 85 | #define IDS_BOX_CANTBIND 156 |
86 | #define IDS_NO_XFER_OP 157 | ||
87 | #define IDS_INVALID_IP 158 | ||
88 | #define IDS_INVALID_NETMASK 159 | ||
89 | #define IDS_INVALID_RULE 160 | ||
90 | #define IDS_LOG_LOGERROR 161 | ||
82 | #define IDC_KLEVERNET 1000 | 91 | #define IDC_KLEVERNET 1000 |
83 | #define IDC_CONNECTIONS 1001 | 92 | #define IDC_CONNECTIONS 1001 |
84 | #define IDC_LOG 1003 | 93 | #define IDC_LOG 1003 |
85 | #define IDC_GET 1004 | 94 | #define IDC_GET 1004 |
86 | #define IDC_PUT 1005 | 95 | #define IDC_PUT 1005 |
87 | #define IDC_ABORT 1006 | 96 | #define IDC_ABORT 1006 |
88 | #define IDC_EXIT 1007 | 97 | #define IDC_EXIT 1007 |
89 | #define IDC_TFTPROOT 1008 | 98 | #define IDC_TFTPROOT 1008 |
90 | #define IDC_TFTPSUBDIRS 1009 | 99 | #define IDC_TFTPSUBDIRS 1009 |
91 | #define IDC_RRQ_GIVEALL 1010 | 100 | #define IDC_RRQ_GIVEALL 1010 |
92 | #define IDC_RRQ_ALWAYSCONFIRM 1011 | 101 | #define IDC_RRQ_ALWAYSCONFIRM 1011 |
93 | #define IDC_RRQ_DENYALL 1012 | 102 | #define IDC_RRQ_DENYALL 1012 |
@@ -112,37 +121,51 @@ | |||
112 | #define IDC_RENAME 1030 | 121 | #define IDC_RENAME 1030 |
113 | #define IDC_REMOTEFILE 1030 | 122 | #define IDC_REMOTEFILE 1030 |
114 | #define IDC_RESUME 1031 | 123 | #define IDC_RESUME 1031 |
115 | #define IDC_REFRESH 1032 | 124 | #define IDC_REFRESH 1032 |
116 | #define IDC_BROWSE 1034 | 125 | #define IDC_BROWSE 1034 |
117 | #define IDC_TALKS 1035 | 126 | #define IDC_TALKS 1035 |
118 | #define IDC_LOCALFILE 1036 | 127 | #define IDC_LOCALFILE 1036 |
119 | #define IDC_TYPE 1037 | 128 | #define IDC_TYPE 1037 |
120 | #define IDC_BSIZE 1039 | 129 | #define IDC_BSIZE 1039 |
121 | #define IDC_RING 1041 | 130 | #define IDC_RING 1041 |
122 | #define IDC_RING_BROWSE 1042 | 131 | #define IDC_RING_BROWSE 1042 |
123 | #define IDC_RING_PLAY 1043 | 132 | #define IDC_RING_PLAY 1043 |
133 | #define IDC_ACL_LIST 1043 | ||
124 | #define IDC_FINISHED 1044 | 134 | #define IDC_FINISHED 1044 |
135 | #define IDC_ACL_UP 1044 | ||
125 | #define IDC_FINISHED_BROWSE 1045 | 136 | #define IDC_FINISHED_BROWSE 1045 |
137 | #define IDC_ACL_DOWN 1045 | ||
126 | #define IDC_FINISHED_PLAY 1046 | 138 | #define IDC_FINISHED_PLAY 1046 |
139 | #define IDC_ACL_REMOVE 1046 | ||
127 | #define IDC_ABORTED 1047 | 140 | #define IDC_ABORTED 1047 |
141 | #define IDC_ACL_ADDR 1047 | ||
128 | #define IDC_ABORTED_BROWSE 1048 | 142 | #define IDC_ABORTED_BROWSE 1048 |
143 | #define IDC_ACL_RULE 1048 | ||
129 | #define IDC_ABORTED_PLAY 1049 | 144 | #define IDC_ABORTED_PLAY 1049 |
145 | #define IDC_ACL_NETMASK 1049 | ||
146 | #define IDC_ACL_ADD 1050 | ||
147 | #define IDC_ACL_XFER 1051 | ||
148 | #define IDC_ACL_REPLACE 1052 | ||
149 | #define IDC_LISTENING 1052 | ||
150 | #define IDC_LOGFILE 1053 | ||
151 | #define IDC_LOGFILE_BROWSE 1054 | ||
130 | #define ID_TRAY_HELP 32771 | 152 | #define ID_TRAY_HELP 32771 |
131 | #define ID_TRAY_ABOUTPUMPKIN 32772 | 153 | #define ID_TRAY_ABOUTPUMPKIN 32772 |
132 | #define ID_TRAY_EXIT 32773 | 154 | #define ID_TRAY_EXIT 32773 |
133 | #define ID_TRAY_SENDFILE 32774 | 155 | #define ID_TRAY_SENDFILE 32774 |
134 | #define ID_TRAY_FETCHFILE 32775 | 156 | #define ID_TRAY_FETCHFILE 32775 |
135 | #define ID_TRAY_OPTIONS 32776 | 157 | #define ID_TRAY_OPTIONS 32776 |
136 | #define ID_TRAY_SHOWPUMPKINWINDOW 32777 | 158 | #define ID_TRAY_SHOWPUMPKINWINDOW 32777 |
137 | #define ID_TRAY_OPENFILESFOLDER 32778 | 159 | #define ID_TRAY_OPENFILESFOLDER 32778 |
160 | #define ID_TRAY_LISTEN 32780 | ||
138 | 161 | ||
139 | // Next default values for new objects | 162 | // Next default values for new objects |
140 | // | 163 | // |
141 | #ifdef APSTUDIO_INVOKED | 164 | #ifdef APSTUDIO_INVOKED |
142 | #ifndef APSTUDIO_READONLY_SYMBOLS | 165 | #ifndef APSTUDIO_READONLY_SYMBOLS |
143 | #define _APS_NEXT_RESOURCE_VALUE 150 | 166 | #define _APS_NEXT_RESOURCE_VALUE 155 |
144 | #define _APS_NEXT_COMMAND_VALUE 32780 | 167 | #define _APS_NEXT_COMMAND_VALUE 32781 |
145 | #define _APS_NEXT_CONTROL_VALUE 1043 | 168 | #define _APS_NEXT_CONTROL_VALUE 1055 |
146 | #define _APS_NEXT_SYMED_VALUE 102 | 169 | #define _APS_NEXT_SYMED_VALUE 102 |
147 | #endif | 170 | #endif |
148 | #endif | 171 | #endif |