* tar xzf utvpn-src-unix-v101-7101-public-2010.06.27.tar.gz
[lab.git] / utvpn / utvpn-unix-v101-7101-public / src / Cedar / SMInner.h
1 // SoftEther UT-VPN SourceCode\r
2 // \r
3 // Copyright (C) 2004-2010 SoftEther Corporation.\r
4 // Copyright (C) 2004-2010 University of Tsukuba, Japan.\r
5 // Copyright (C) 2003-2010 Daiyuu Nobori.\r
6 // All Rights Reserved.\r
7 // \r
8 // http://utvpn.tsukuba.ac.jp/\r
9 // \r
10 // This program is free software; you can redistribute it and/or\r
11 // modify it under the terms of the GNU General Public License\r
12 // version 2 as published by the Free Software Foundation.\r
13 // \r
14 // This program is distributed in the hope that it will be useful,\r
15 // but WITHOUT ANY WARRANTY; without even the implied warranty of\r
16 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
17 // GNU General Public License for more details.\r
18 // \r
19 // You should have received a copy of the GNU General Public License version 2\r
20 // along with this program; if not, write to the Free Software\r
21 // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\r
22 // \r
23 // このファイルは GPL バージョン 2 ライセンスで公開されています。\r
24 // 誰でもこのファイルの内容を複製、改変したり、改変したバージョンを再配布\r
25 // することができます。ただし、原著作物を改変した場合は、原著作物の著作権表示\r
26 // を除去することはできません。改変した著作物を配布する場合は、改変実施者の\r
27 // 著作権表示を原著作物の著作権表示に付随して記載するようにしてください。\r
28 // \r
29 // この SoftEther UT-VPN オープンソース・プロジェクトは、日本国の\r
30 // ソフトイーサ株式会社 (SoftEther Corporation, http://www.softether.co.jp/ )\r
31 // および筑波大学 (University of Tsukuba, http://www.tsukuba.ac.jp/ ) によって\r
32 // ホストされています。\r
33 // 本プログラムの配布者は、本プログラムを、業としての利用以外のため、\r
34 // および、試験または研究のために利用が行われることを想定して配布\r
35 // しています。\r
36 // SoftEther UT-VPN プロジェクトの Web サイトは http://utvpn.tsukuba.ac.jp/ に\r
37 // あります。\r
38 // 本ソフトウェアの不具合の修正、機能改良、セキュリティホールの修復などのコード\r
39 // の改変を行った場合で、その成果物を SoftEther UT-VPN プロジェクトに提出して\r
40 // いただける場合は、 http://utvpn.tsukuba.ac.jp/ までソースコードを送付して\r
41 // ください。SoftEther UT-VPN プロジェクトの本体リリースまたはブランチリリース\r
42 // に組み込みさせていただきます。\r
43 // \r
44 // GPL に基づいて原著作物が提供される本ソフトウェアの改良版を配布、販売する\r
45 // 場合は、そのソースコードを GPL に基づいて誰にでも開示する義務が生じます。\r
46 // \r
47 // 本ソフトウェアに関連する著作権、特許権、商標権はソフトイーサ株式会社\r
48 // (SoftEther Corporation) およびその他の著作権保持者が保有しています。\r
49 // ソフトイーサ株式会社等はこれらの権利を放棄していません。本ソフトウェアの\r
50 // 二次著作物を配布、販売する場合は、これらの権利を侵害しないようにご注意\r
51 // ください。\r
52 // \r
53 // お願い: どのような通信ソフトウェアにも通常は必ず未発見の\r
54 // セキュリティホールが潜んでいます。本ソースコードをご覧いただいた結果、\r
55 // UT-VPN にセキュリティホールを発見された場合は、当該セキュリティホールの\r
56 // 情報を不特定多数に開示される前に、必ず、ソフトイーサ株式会社\r
57 // および脆弱性情報の届出を受け付ける公的機関まで通報いただき、\r
58 // 公益保護にご協力いただきますようお願い申し上げます。\r
59 // \r
60 // ソフトイーサ株式会社は、当該セキュリティホールについて迅速に対処を\r
61 // 行い、UT-VPN および UT-VPN に関連するソフトウェアのユーザー・顧客\r
62 // を保護するための努力を行います。\r
63 // \r
64 // ソフトイーサへの届出先: http://www.softether.co.jp/jp/contact/\r
65 // 日本国内の脆弱性情報届出受付公的機関:\r
66 //         独立行政法人 情報処理推進機構\r
67 //         http://www.ipa.go.jp/security/vuln/report/\r
68 // \r
69 // 上記各事項について不明な点は、ソフトイーサ株式会社までご連絡ください。\r
70 // 連絡先: http://www.softether.co.jp/jp/contact/\r
71 \r
72 // -----------------------------------------------\r
73 // [ChangeLog]\r
74 // 2010.05.20\r
75 //  新規リリース by SoftEther\r
76 // -----------------------------------------------\r
77 \r
78 // SMInner.h\r
79 // SM.c の内部向けヘッダ\r
80 \r
81 // 定数\r
82 #define SM_REG_KEY                      "Software\\SoftEther Corporation\\UT-VPN\\Server Manager"\r
83 #define SM_CERT_REG_KEY         "Software\\SoftEther Corporation\\UT-VPN\\Server Manager\\Cert Tool"\r
84 #define SM_SETTING_REG_KEY      "Software\\SoftEther Corporation\\UT-VPN\\Server Manager\\Settings"\r
85 #define SM_LASTHUB_REG_KEY      "Software\\SoftEther Corporation\\UT-VPN\\Server Manager\\Last HUB Name"\r
86 \r
87 // 定数 (古い値)\r
88 #define SM_SETTING_REG_KEY_OLD  "Software\\SoftEther Corporation\\PacketiX VPN\\Server Manager\\Settings_Dummy"\r
89 \r
90 // スプラッシュスクリーンの枠線の色\r
91 #define SM_SPLASH_BORDER_COLOR  (RGB(72, 72, 72))\r
92 \r
93 // 接続設定\r
94 typedef struct SETTING\r
95 {\r
96         wchar_t Title[MAX_SIZE];        // 設定名\r
97         bool ServerAdminMode;           // サーバー管理モード\r
98         char HubName[MAX_HUBNAME_LEN + 1];      // HUB 名\r
99         UCHAR HashedPassword[SHA1_SIZE];        // パスワード\r
100         CLIENT_OPTION ClientOption;     // クライアントオプション\r
101         UCHAR Reserved[10240 - sizeof(bool) * 7];       // 予約領域\r
102 } SETTING;\r
103 \r
104 // 構造体宣言\r
105 typedef struct SM\r
106 {\r
107         CEDAR *Cedar;                           // Cedar\r
108         LIST *SettingList;                      // 設定リスト\r
109         SETTING *TempSetting;           // 仮設定\r
110         HWND hParentWnd;                        // 親ウインドウハンドル\r
111 } SM;\r
112 \r
113 // 接続設定編集\r
114 typedef struct SM_EDIT_SETTING\r
115 {\r
116         bool EditMode;                          // 編集モード\r
117         SETTING *OldSetting;            // 以前の設定へのポインタ\r
118         SETTING *Setting;                       // 設定へのポインタ\r
119         bool Inited;                            // 初期済みフラグ\r
120 } SM_EDIT_SETTING;\r
121 \r
122 // サーバー管理ダイアログ\r
123 typedef struct SM_SERVER\r
124 {\r
125         RPC *Rpc;                                       // RPC\r
126         char ServerName[MAX_HOST_NAME_LEN + 1]; // サーバー名\r
127         wchar_t Title[MAX_SIZE];        // タイトル\r
128         bool ServerAdminMode;           // サーバー管理モード\r
129         char HubName[MAX_HUBNAME_LEN + 1];      // HUB 名\r
130         UINT ServerType;                        // サーバーの種類\r
131         bool Bridge;                            // VPN Bridge 製品\r
132         UINT PolicyVer;                         // ポリシーバージョン\r
133         RPC_SERVER_STATUS ServerStatus; // サーバー状態\r
134         RPC_SERVER_INFO ServerInfo;             // サーバー情報\r
135         CAPSLIST *CapsList;                     // Caps リスト\r
136         bool EmptyPassword;                     // 空のパスワード\r
137         SETTING *CurrentSetting;        // 現在の接続設定\r
138         wchar_t *AdminMsg;                      // 管理者向けメッセージ\r
139 } SM_SERVER;\r
140 \r
141 typedef void (SM_STATUS_INIT_PROC)(HWND hWnd, SM_SERVER *p, void *param);\r
142 typedef bool (SM_STATUS_REFRESH_PROC)(HWND hWnd, SM_SERVER *p, void *param);\r
143 \r
144 // 情報表示ダイアログ\r
145 typedef struct SM_STATUS\r
146 {\r
147         SM_SERVER *p;                           // P へのポインタ\r
148         void *Param;                            // パラメータ\r
149         UINT Icon;                                      // アイコン\r
150         wchar_t *Caption;                       // タイトル\r
151         bool show_refresh_button;       // 更新ボタンの表示\r
152         bool NoImage;                           // イメージ無し\r
153         SM_STATUS_INIT_PROC *InitProc;\r
154         SM_STATUS_REFRESH_PROC *RefreshProc;\r
155 } SM_STATUS;\r
156 \r
157 // 仮想 HUB 編集ダイアログ\r
158 typedef struct SM_EDIT_HUB\r
159 {\r
160         SM_SERVER *p;                           // P\r
161         bool EditMode;                          // 編集モード\r
162         char HubName[MAX_HUBNAME_LEN + 1];      // HUB 名\r
163 } SM_EDIT_HUB;\r
164 \r
165 // SSL 関係\r
166 typedef struct SM_SSL\r
167 {\r
168         SM_SERVER *p;                           // P\r
169         X *Cert;                                        // 証明書\r
170         K *Key;                                         // 秘密鍵\r
171         bool SetCertAndKey;                     // キーをセットする\r
172 } SM_SSL;\r
173 \r
174 // 証明書保存\r
175 typedef struct SM_SAVE_KEY_PAIR\r
176 {\r
177         X *Cert;                                        // 証明書\r
178         K *Key;                                         // 秘密鍵\r
179         char *Pass;                                     // パスフレーズ\r
180 } SM_SAVE_KEY_PAIR;\r
181 \r
182 // コネクション情報\r
183 typedef struct SM_CONNECTION_INFO\r
184 {\r
185         SM_SERVER *p;                           // P\r
186         char *ConnectionName;           // コネクション名\r
187 } SM_CONNECTION_INFO;\r
188 \r
189 // HUB の管理\r
190 typedef struct SM_HUB\r
191 {\r
192         SM_SERVER *p;                           // P\r
193         RPC *Rpc;                                       // RPC\r
194         char *HubName;                          // HUB 名\r
195 } SM_HUB;\r
196 \r
197 // ユーザーリスト表示\r
198 typedef struct SM_USER\r
199 {\r
200         SM_SERVER *p;                           // P\r
201         RPC *Rpc;                                       // RPC\r
202         SM_HUB *Hub;                            // HUB\r
203         char *GroupName;                        // グループ名でフィルタ\r
204         bool SelectMode;                        // 選択モード\r
205         char *SelectedName;                     // 選択されたユーザー名\r
206         bool AllowGroup;                        // グループの選択を許可\r
207         bool CreateNow;                         // すぐにユーザーを作成\r
208 } SM_USER;\r
209 \r
210 // ユーザーの編集\r
211 typedef struct SM_EDIT_USER\r
212 {\r
213         bool Inited;                            // 初期化済みフラグ\r
214         bool EditMode;                          // 編集モード\r
215         SM_SERVER *p;                           // P\r
216         RPC *Rpc;                                       // RPC\r
217         SM_HUB *Hub;                            // HUB\r
218         RPC_SET_USER SetUser;           // ユーザー設定\r
219 } SM_EDIT_USER;\r
220 \r
221 // ユーザー情報\r
222 typedef struct SM_USER_INFO\r
223 {\r
224         SM_SERVER *p;                           // P\r
225         RPC *Rpc;                                       // RPC\r
226         SM_HUB *Hub;                            // HUB\r
227         char *Username;                         // Username\r
228 } SM_USER_INFO;\r
229 \r
230 // ポリシー\r
231 typedef struct SM_POLICY\r
232 {\r
233         bool Inited;                            // 初期化\r
234         POLICY *Policy;                         // ポリシー\r
235         wchar_t *Caption;                       // タイトル\r
236         bool CascadeMode;                       // カスケードモード\r
237         UINT Ver;                                       // バージョン\r
238 } SM_POLICY;\r
239 \r
240 // グループリスト表示\r
241 typedef struct SM_GROUP\r
242 {\r
243         SM_SERVER *p;                           // P\r
244         RPC *Rpc;                                       // RPC\r
245         SM_HUB *Hub;                            // HUB\r
246         bool SelectMode;                        // 選択モード\r
247         char *SelectedGroupName;        // 選択されたグループ名\r
248 } SM_GROUP;\r
249 \r
250 // グループの編集\r
251 typedef struct SM_EDIT_GROUP\r
252 {\r
253         bool Inited;                            // 初期化フラグ\r
254         bool EditMode;                          // 編集モード\r
255         SM_SERVER *p;                           // P\r
256         RPC *Rpc;                                       // RPC\r
257         SM_HUB *Hub;                            // HUB\r
258         RPC_SET_GROUP SetGroup;         // グループ設定\r
259 } SM_EDIT_GROUP;\r
260 \r
261 // アクセスリスト一覧\r
262 typedef struct SM_ACCESS_LIST\r
263 {\r
264         RPC *Rpc;                                       // RPC\r
265         SM_HUB *Hub;                            // HUB\r
266         LIST *AccessList;                       // アクセスリスト\r
267 } SM_ACCESS_LIST;\r
268 \r
269 // アクセスリストの編集\r
270 typedef struct SM_EDIT_ACCESS\r
271 {\r
272         SM_HUB *Hub;                            // HUB\r
273         bool Inited;                            // 初期化フラグ\r
274         bool EditMode;                          // 編集モード\r
275         SM_ACCESS_LIST *AccessList;     // アクセスリスト\r
276         ACCESS *Access;                         // アクセスリスト項目\r
277 } SM_EDIT_ACCESS;\r
278 \r
279 // アクセスリストの状態表示\r
280 typedef struct SM_LINK\r
281 {\r
282         SM_HUB *Hub;                            // HUB\r
283         wchar_t *AccountName;           // アカウント名\r
284 } SM_LINK;\r
285 \r
286 // セッション ステータス\r
287 typedef struct SM_SESSION_STATUS\r
288 {\r
289         SM_HUB *Hub;                            // HUB\r
290         char *SessionName;                      // セッション名\r
291 } SM_SESSION_STATUS;\r
292 \r
293 // アドレステーブル\r
294 typedef struct SM_TABLE\r
295 {\r
296         SM_HUB *Hub;                            // HUB\r
297         RPC *Rpc;                                       // RPC\r
298         char *SessionName;                      // セッション名\r
299 } SM_TABLE;\r
300 \r
301 // 証明書ツール\r
302 typedef struct SM_CERT\r
303 {\r
304         X *x;                                           // 生成された証明書\r
305         K *k;                                           // 生成された秘密鍵\r
306         X *root_x;                                      // ルート証明書\r
307         K *root_k;                                      // ルート証明書の秘密鍵\r
308         bool do_not_save;                       // ファイルに保存しない\r
309         char *default_cn;                       // デフォルトの CN\r
310 } SM_CERT;\r
311 \r
312 // config 編集\r
313 typedef struct SM_CONFIG\r
314 {\r
315         SM_SERVER *s;                           // SM_SERVER\r
316         RPC_CONFIG Config;                      // Config 本体\r
317 } SM_CONFIG;\r
318 \r
319 // hub_admin_option 編集\r
320 typedef struct SM_EDIT_AO\r
321 {\r
322         SM_EDIT_HUB *e;\r
323         bool CanChange;\r
324         RPC_ADMIN_OPTION CurrentOptions;\r
325         RPC_ADMIN_OPTION DefaultOptions;\r
326         bool NewMode;\r
327         char Name[MAX_ADMIN_OPTION_NAME_LEN + 1];\r
328         UINT Value;\r
329         bool ExtOption;\r
330 } SM_EDIT_AO;\r
331 \r
332 // スイッチ編集\r
333 typedef struct SM_L3SW\r
334 {\r
335         SM_SERVER *s;\r
336         char *SwitchName;\r
337         bool Enable;\r
338 } SM_L3SW;\r
339 \r
340 // スマートカードから証明書と秘密鍵の指定\r
341 typedef struct SM_SECURE_KEYPAIR\r
342 {\r
343         UINT Id;\r
344         bool UseCert;\r
345         bool UseKey;\r
346         char CertName[MAX_SIZE];\r
347         char KeyName[MAX_SIZE];\r
348         bool Flag;\r
349         UINT BitmapId;\r
350 } SM_SECURE_KEYPAIR;\r
351 \r
352 // CRL 編集\r
353 typedef struct SM_EDIT_CRL\r
354 {\r
355         SM_HUB *s;\r
356         bool NewCrl;\r
357         UINT Key;\r
358 } SM_EDIT_CRL;\r
359 \r
360 // AC リスト編集\r
361 typedef struct SM_EDIT_AC_LIST\r
362 {\r
363         SM_EDIT_HUB *s;\r
364         LIST *AcList;\r
365 } SM_EDIT_AC_LIST;\r
366 \r
367 // AC 編集\r
368 typedef struct SM_EDIT_AC\r
369 {\r
370         SM_EDIT_AC_LIST *e;\r
371         UINT id;\r
372 } SM_EDIT_AC;\r
373 \r
374 // ログファイルダウンロード\r
375 typedef struct SM_READ_LOG_FILE\r
376 {\r
377         HWND hWnd;\r
378         SM_SERVER *s;\r
379         char *server_name;\r
380         char *filepath;\r
381         UINT totalsize;\r
382         bool cancel_flag;\r
383         BUF *Buffer;\r
384 } SM_READ_LOG_FILE;\r
385 \r
386 // セットアップダイアログ\r
387 typedef struct SM_SETUP\r
388 {\r
389         SM_SERVER *s;\r
390         RPC *Rpc;\r
391         bool IsBridge;\r
392         bool UseRemote;                 // リモートアクセス VPN\r
393         bool UseSite;                   // 拠点間接続 VPN\r
394         bool UseSiteEdge;               // 各拠点に設置する VPN Server / Bridge\r
395         char HubName[MAX_HUBNAME_LEN + 1];      // 仮想 HUB 名\r
396         bool Flag1;\r
397         bool Flag2;\r
398 } SM_SETUP;\r
399 \r
400 \r
401 // 関数プロトタイプ\r
402 void InitSM();\r
403 void SmParseCommandLine();\r
404 void MainSM();\r
405 void FreeSM();\r
406 void SmMainDlg();\r
407 UINT SmMainDlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *param);\r
408 void SmMainDlgInit(HWND hWnd);\r
409 void SmMainDlgUpdate(HWND hWnd);\r
410 void SmInitSettingList();\r
411 void SmFreeSettingList();\r
412 void SmWriteSettingList();\r
413 void SmLoadSettingList();\r
414 void SmInitDefaultSettingList();\r
415 int SmCompareSetting(void *p1, void *p2);\r
416 SETTING *SmGetSetting(wchar_t *title);\r
417 bool SmAddSetting(SETTING *s);\r
418 void SmDeleteSetting(wchar_t *title);\r
419 bool SmCheckNewName(SETTING *s, wchar_t *new_title);\r
420 void SmRefreshSetting(HWND hWnd);\r
421 void SmRefreshSettingEx(HWND hWnd, wchar_t *select_name);\r
422 bool SmAddSettingDlg(HWND hWnd, wchar_t *new_name, UINT new_name_size);\r
423 bool SmEditSettingDlg(HWND hWnd);\r
424 UINT SmEditSettingDlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *param);\r
425 void SmEditSettingDlgInit(HWND hWnd, SM_EDIT_SETTING *p);\r
426 void SmEditSettingDlgUpdate(HWND hWnd, SM_EDIT_SETTING *p);\r
427 void SmEditSettingDlgOnOk(HWND hWnd, SM_EDIT_SETTING *p);\r
428 void SmConnect(HWND hWnd, SETTING *s);\r
429 char *SmPassword(HWND hWnd, char *server_name);\r
430 UINT SmServerDlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *param);\r
431 void SmServerDlgInit(HWND hWnd, SM_SERVER *p);\r
432 void SmServerDlgUpdate(HWND hWnd, SM_SERVER *p);\r
433 void SmServerDlgRefresh(HWND hWnd, SM_SERVER *p);\r
434 void SmStatusDlg(HWND hWnd, SM_SERVER *p, void *param, bool no_image, bool show_refresh_button, wchar_t *caption, UINT icon,\r
435                                  SM_STATUS_INIT_PROC *init, SM_STATUS_REFRESH_PROC *refresh);\r
436 UINT SmStatusDlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *param);\r
437 bool SmRefreshHubStatus(HWND hWnd, SM_SERVER *p, void *param);\r
438 void SmInsertTrafficInfo(LVB *b, TRAFFIC *t);\r
439 bool SmCreateHubDlg(HWND hWnd, SM_SERVER *p);\r
440 bool SmEditHubDlg(HWND hWnd, SM_SERVER *p, char *hubname);\r
441 UINT SmEditHubProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *param);\r
442 void SmEditHubInit(HWND hWnd, SM_EDIT_HUB *s);\r
443 void SmEditHubUpdate(HWND hWnd, SM_EDIT_HUB *s);\r
444 void SmEditHubOnOk(HWND hWnd, SM_EDIT_HUB *s);\r
445 bool SmCreateListenerDlg(HWND hWnd, SM_SERVER *p);\r
446 UINT SmCreateListenerDlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *param);\r
447 void SmSslDlg(HWND hWnd, SM_SERVER *p);\r
448 UINT SmSslDlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *param);\r
449 void SmSslDlgInit(HWND hWnd, SM_SSL *s);\r
450 void SmSslDlgOnOk(HWND hWnd, SM_SSL *s);\r
451 void SmSslDlgUpdate(HWND hWnd, SM_SSL *s);\r
452 void SmGetCertInfoStr(wchar_t *str, UINT size, X *x);\r
453 bool SmSaveKeyPairDlg(HWND hWnd, X *x, K *k);\r
454 UINT SmSaveKeyPairDlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *param);\r
455 void SmSaveKeyPairDlgInit(HWND hWnd, SM_SAVE_KEY_PAIR *s);\r
456 void SmSaveKeyPairDlgUpdate(HWND hWnd, SM_SAVE_KEY_PAIR *s);\r
457 void SmSaveKeyPairDlgOnOk(HWND hWnd, SM_SAVE_KEY_PAIR *s);\r
458 bool SmRefreshServerStatus(HWND hWnd, SM_SERVER *p, void *param);\r
459 bool SmRefreshServerInfo(HWND hWnd, SM_SERVER *p, void *param);\r
460 void SmPrintNodeInfo(LVB *b, NODE_INFO *info);\r
461 wchar_t *SmGetConnectionTypeStr(UINT type);\r
462 void SmConnectionDlg(HWND hWnd, SM_SERVER *p);\r
463 UINT SmConnectionDlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *param);\r
464 void SmConnectionDlgInit(HWND hWnd, SM_SERVER *p);\r
465 void SmConnectionDlgRefresh(HWND hWnd, SM_SERVER *p);\r
466 void SmConnectionDlgUpdate(HWND hWnd, SM_SERVER *p);\r
467 bool SmRefreshConnectionStatus(HWND hWnd, SM_SERVER *p, void *param);\r
468 bool SmFarmDlg(HWND hWnd, SM_SERVER *p);\r
469 UINT SmFarmDlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *param);\r
470 void SmFarmDlgInit(HWND hWnd, SM_SERVER *p);\r
471 void SmFarmDlgUpdate(HWND hWnd, SM_SERVER *p);\r
472 void SmFarmDlgOnOk(HWND hWnd, SM_SERVER *p);\r
473 LIST *SmStrToPortList(char *str);\r
474 UINT SmFarmMemberDlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *param);\r
475 void SmFarmMemberDlgInit(HWND hWnd, SM_SERVER *p);\r
476 void SmFarmMemberDlgUpdate(HWND hWnd, SM_SERVER *p);\r
477 void SmFarmMemberDlgRefresh(HWND hWnd, SM_SERVER *p);\r
478 void SmFarmMemberDlgOnOk(HWND hWnd, SM_SERVER *p);\r
479 void SmFarmMemberCert(HWND hWnd, SM_SERVER *p, UINT id);\r
480 bool SmRefreshFarmMemberInfo(HWND hWnd, SM_SERVER *p, void *param);\r
481 bool SmRefreshFarmConnectionInfo(HWND hWnd, SM_SERVER *p, void *param);\r
482 UINT SmChangeServerPasswordDlg(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *param);\r
483 void SmHubDlg(HWND hWnd, SM_HUB *s);\r
484 UINT SmHubDlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *param);\r
485 void SmHubDlgInit(HWND hWnd, SM_HUB *s);\r
486 void SmHubDlgUpdate(HWND hWnd, SM_HUB *s);\r
487 void SmHubDlgRefresh(HWND hWnd, SM_HUB *s);\r
488 void SmUserListDlg(HWND hWnd, SM_HUB *s);\r
489 UINT SmUserListProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *param);\r
490 void SmUserListInit(HWND hWnd, SM_USER *s);\r
491 void SmUserListRefresh(HWND hWnd, SM_USER *s);\r
492 void SmUserListUpdate(HWND hWnd, SM_USER *s);\r
493 wchar_t *SmGetAuthTypeStr(UINT id);\r
494 bool SmCreateUserDlg(HWND hWnd, SM_HUB *s);\r
495 UINT SmEditUserDlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *param);\r
496 void SmEditUserDlgInit(HWND hWnd, SM_EDIT_USER *s);\r
497 void SmEditUserDlgUpdate(HWND hWnd, SM_EDIT_USER *s);\r
498 void SmEditUserDlgOk(HWND hWnd, SM_EDIT_USER *s);\r
499 bool SmPolicyDlg(HWND hWnd, POLICY *p, wchar_t *caption);\r
500 bool SmPolicyDlgEx(HWND hWnd, POLICY *p, wchar_t *caption, bool cascade_mode);\r
501 bool SmPolicyDlgEx2(HWND hWnd, POLICY *p, wchar_t *caption, bool cascade_mode, UINT ver);\r
502 UINT SmPolicyDlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *param);\r
503 void SmPolicyDlgInit(HWND hWnd, SM_POLICY *s);\r
504 void SmPolicyDlgUpdate(HWND hWnd, SM_POLICY *s);\r
505 void SmPolicyDlgOk(HWND hWnd, SM_POLICY *s);\r
506 bool SmEditUserDlg(HWND hWnd, SM_HUB *s, char *username);\r
507 bool SmRefreshUserInfo(HWND hWnd, SM_SERVER *s, void *param);\r
508 void SmGroupListDlg(HWND hWnd, SM_HUB *s);\r
509 char *SmSelectGroupDlg(HWND hWnd, SM_HUB *s, char *default_name);\r
510 UINT SmGroupListDlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *param);\r
511 void SmGroupListDlgInit(HWND hWnd, SM_GROUP *s);\r
512 void SmGroupListDlgUpdate(HWND hWnd, SM_GROUP *s);\r
513 void SmGroupListDlgRefresh(HWND hWnd, SM_GROUP *s);\r
514 bool SmCreateGroupDlg(HWND hWnd, SM_GROUP *s);\r
515 bool SmEditGroupDlg(HWND hWnd, SM_GROUP *s, char *name);\r
516 UINT SmEditGroupDlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *param);\r
517 void SmEditGroupDlgInit(HWND hWnd, SM_EDIT_GROUP *g);\r
518 void SmEditGroupDlgUpdate(HWND hWnd, SM_EDIT_GROUP *g);\r
519 void SmEditGroupDlgOnOk(HWND hWnd, SM_EDIT_GROUP *g);\r
520 void SmUserListDlgEx(HWND hWnd, SM_HUB *s, char *groupname, bool create);\r
521 void SmAccessListDlg(HWND hWnd, SM_HUB *s);\r
522 UINT SmAccessListProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *param);\r
523 void SmAccessListInit(HWND hWnd, SM_ACCESS_LIST *s);\r
524 void SmAccessListUpdate(HWND hWnd, SM_ACCESS_LIST *s);\r
525 void SmAccessListRefresh(HWND hWnd, SM_ACCESS_LIST *s);\r
526 bool SmAddAccess(HWND hWnd, SM_ACCESS_LIST *s, bool ipv6);\r
527 bool SmEditAccess(HWND hWnd, SM_ACCESS_LIST *s, ACCESS *a);\r
528 UINT SmEditAccessDlg(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *param);\r
529 void SmEditAccessInit(HWND hWnd, SM_EDIT_ACCESS *s);\r
530 void SmEditAccessUpdate(HWND hWnd, SM_EDIT_ACCESS *s);\r
531 void SmEditAccessOnOk(HWND hWnd, SM_EDIT_ACCESS *s);\r
532 UINT SmSimulationDlg(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *param);\r
533 void SmSimulationUpdate(HWND hWnd, SM_EDIT_ACCESS *s);\r
534 void SmSimulationInit(HWND hWnd, SM_EDIT_ACCESS *s);\r
535 void SmSimulationOnOk(HWND hWnd, SM_EDIT_ACCESS *s);\r
536 char *SmSelectUserDlg(HWND hWnd, SM_HUB *s, char *default_name);\r
537 char *SmSelectUserDlgEx(HWND hWnd, SM_HUB *s, char *default_name, bool allow_group);\r
538 void SmRadiusDlg(HWND hWnd, SM_HUB *s);\r
539 UINT SmRadiusDlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *param);\r
540 void SmRadiusDlgInit(HWND hWnd, SM_HUB *s);\r
541 void SmRadiusDlgUpdate(HWND hWnd, SM_HUB *s);\r
542 void SmRadiusDlgOnOk(HWND hWnd, SM_HUB *s);\r
543 void SmLinkDlg(HWND hWnd, SM_HUB *s);\r
544 void SmLinkDlgEx(HWND hWnd, SM_HUB *s, bool createNow);\r
545 UINT SmLinkDlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *param);\r
546 void SmLinkDlgInit(HWND hWnd, SM_HUB *s);\r
547 void SmLinkDlgUpdate(HWND hWnd, SM_HUB *s);\r
548 void SmLinkDlgRefresh(HWND hWnd, SM_HUB *s);\r
549 bool SmLinkCreate(HWND hWnd, SM_HUB *s);\r
550 bool SmLinkCreateEx(HWND hWnd, SM_HUB *s, bool connectNow);\r
551 bool SmLinkEdit(HWND hWnd, SM_HUB *s, wchar_t *name);\r
552 bool SmRefreshLinkStatus(HWND hWnd, SM_SERVER *s, void *param);\r
553 UINT SmLogDlg(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *param);\r
554 void SmLogDlgInit(HWND hWnd, SM_HUB *s);\r
555 void SmLogDlgUpdate(HWND hWnd, SM_HUB *s);\r
556 void SmLogDlgOnOk(HWND hWnd, SM_HUB *s);\r
557 void SmCaDlg(HWND hWnd, SM_HUB *s);\r
558 UINT SmCaDlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *param);\r
559 void SmCaDlgInit(HWND hWnd, SM_HUB *s);\r
560 void SmCaDlgRefresh(HWND hWnd, SM_HUB *s);\r
561 void SmCaDlgUpdate(HWND hWnd, SM_HUB *s);\r
562 void SmCaDlgOnOk(HWND hWnd, SM_HUB *s);\r
563 bool SmCaDlgAdd(HWND hWnd, SM_HUB *s);\r
564 void SmSessionDlg(HWND hWnd, SM_HUB *s);\r
565 UINT SmSessionDlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *param);\r
566 void SmSessionDlgInit(HWND hWnd, SM_HUB *s);\r
567 void SmSessionDlgUpdate(HWND hWnd, SM_HUB *s);\r
568 void SmSessionDlgRefresh(HWND hWnd, SM_HUB *s);\r
569 bool SmRefreshSessionStatus(HWND hWnd, SM_SERVER *s, void *param);\r
570 void SmMacTableDlg(HWND hWnd, SM_HUB *s, char *session_name);\r
571 UINT SmMacTableDlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *param);\r
572 void SmMacTableDlgInit(HWND hWnd, SM_TABLE *s);\r
573 void SmMacTableDlgUpdate(HWND hWnd, SM_TABLE *s);\r
574 void SmMacTableDlgRefresh(HWND hWnd, SM_TABLE *s);\r
575 void SmIpTableDlg(HWND hWnd, SM_HUB *s, char *session_name);\r
576 UINT SmIpTableDlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *param);\r
577 void SmIpTableDlgInit(HWND hWnd, SM_TABLE *s);\r
578 void SmIpTableDlgUpdate(HWND hWnd, SM_TABLE *s);\r
579 void SmIpTableDlgRefresh(HWND hWnd, SM_TABLE *s);\r
580 bool SmCreateCert(HWND hWnd, X **x, K **k, bool do_not_save, char *default_cn);\r
581 UINT SmCreateCertDlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *param);\r
582 void SmCreateCertDlgInit(HWND hWnd, SM_CERT *s);\r
583 void SmCreateCertDlgUpdate(HWND hWnd, SM_CERT *s);\r
584 void SmCreateCertDlgOnOk(HWND hWnd, SM_CERT *s);\r
585 UINT SmSNATDlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *param);\r
586 void SmSNATDlgUpdate(HWND hWnd, SM_HUB *s);\r
587 void SmBridgeDlg(HWND hWnd, SM_SERVER *s);\r
588 void SmInstallWinPcap(HWND hWnd, SM_SERVER *s);\r
589 UINT SmBridgeDlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *param);\r
590 void SmBridgeDlgInit(HWND hWnd, SM_SERVER *s);\r
591 void SmBridgeDlgUpdate(HWND hWnd, SM_SERVER *s);\r
592 void SmBridgeDlgRefresh(HWND hWnd, SM_SERVER *s);\r
593 void SmBridgeDlgOnOk(HWND hWnd, SM_SERVER *s);\r
594 void SmAddServerCaps(LVB *b, CAPSLIST *t);\r
595 void SmConfig(HWND hWnd, SM_SERVER *s);\r
596 UINT SmConfigDlg(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *param);\r
597 void SmConfigDlgInit(HWND hWnd, SM_CONFIG *c);\r
598 void SmHubAdminOption(HWND hWnd, SM_EDIT_HUB *e);\r
599 void SmHubExtOption(HWND hWnd, SM_EDIT_HUB *e);\r
600 UINT SmHubAdminOptionDlg(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *param);\r
601 void SmHubAdminOptionDlgUpdate(HWND hWnd, SM_EDIT_AO *a);\r
602 void SmHubAdminOptionDlgInit(HWND hWnd, SM_EDIT_AO *a);\r
603 void SmHubAdminOptionDlgOk(HWND hWnd, SM_EDIT_AO *a);\r
604 UINT SmHubAdminOptionValueDlg(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *param);\r
605 void SmHubAdminOptionValueDlgUpdate(HWND hWnd, SM_EDIT_AO *a);\r
606 void SmL3(HWND hWnd, SM_SERVER *s);\r
607 UINT SmL3Dlg(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *param);\r
608 void SmL3DlgInit(HWND hWnd, SM_SERVER *s);\r
609 void SmL3DlgUpdate(HWND hWnd, SM_SERVER *s);\r
610 void SmL3DlgRefresh(HWND hWnd, SM_SERVER *s);\r
611 UINT SmL3AddDlg(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *param);\r
612 void SmL3AddDlgUpdate(HWND hWnd, SM_SERVER *s);\r
613 UINT SmL3SwDlg(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *param);\r
614 void SmL3SwDlgInit(HWND hWnd, SM_L3SW *w);\r
615 void SmL3SwDlgUpdate(HWND hWnd, SM_L3SW *w);\r
616 void SmL3SwDlgRefresh(HWND hWnd, SM_L3SW *w);\r
617 UINT SmL3SwIfDlg(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *param);\r
618 void SmL3SwIfDlgInit(HWND hWnd, SM_L3SW *w);\r
619 void SmL3SwIfDlgUpdate(HWND hWnd, SM_L3SW *w);\r
620 UINT SmL3SwTableDlg(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *param);\r
621 void SmL3SwTableDlgInit(HWND hWnd, SM_L3SW *w);\r
622 void SmL3SwTableDlgUpdate(HWND hWnd, SM_L3SW *w);\r
623 bool SmL3IsSwActive(SM_SERVER *s, char *name);\r
624 UINT SmGetCurrentSecureId(HWND hWnd);\r
625 UINT SmGetCurrentSecureIdFromReg();\r
626 UINT SmSelectSecureId(HWND hWnd);\r
627 void SmWriteSelectSecureIdReg(UINT id);\r
628 bool SmSelectKeyPair(HWND hWnd, char *cert_name, UINT cert_name_size, char *key_name, UINT key_name_size);\r
629 bool SmSelectKeyPairEx(HWND hWnd, char *cert_name, UINT cert_name_size, char *key_name, UINT key_name_size, UINT bitmap_id);\r
630 UINT SmSelectKeyPairDlg(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *param);\r
631 void SmSelectKeyPairDlgInit(HWND hWnd, SM_SECURE_KEYPAIR *k);\r
632 void SmSelectKeyPairDlgUpdate(HWND hWnd, SM_SECURE_KEYPAIR *k);\r
633 void SmSelectKeyPairDlgRefresh(HWND hWnd, SM_SECURE_KEYPAIR *k);\r
634 void SmSecureManager(HWND hWnd);\r
635 UINT SmCrlDlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *param);\r
636 void SmCrlDlgInit(HWND hWnd, SM_HUB *s);\r
637 void SmCrlDlgUpdate(HWND hWnd, SM_HUB *s);\r
638 void SmCrlDlgRefresh(HWND hWnd, SM_HUB *s);\r
639 UINT SmEditCrlDlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *param);\r
640 void SmEditCrlDlgInit(HWND hWnd, SM_EDIT_CRL *c);\r
641 void SmEditCrlDlgUpdate(HWND hWnd, SM_EDIT_CRL *c);\r
642 void SmEditCrlDlgOnOk(HWND hWnd, SM_EDIT_CRL *c);\r
643 void SmEditCrlDlgOnLoad(HWND hWnd, SM_EDIT_CRL *c);\r
644 void SmEditCrlDlgSetName(HWND hWnd, NAME *name);\r
645 void SmEditCrlDlgSetSerial(HWND hWnd, X_SERIAL *serial);\r
646 void SmEditCrlDlgSetHash(HWND hWnd, UCHAR *hash_md5, UCHAR *hash_sha1);\r
647 void SmHubAc(HWND hWnd, SM_EDIT_HUB *s);\r
648 UINT SmHubAcDlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *param);\r
649 void SmHubAcDlgInit(HWND hWnd, SM_EDIT_AC_LIST *p);\r
650 void SmHubAcDlgUpdate(HWND hWnd, SM_EDIT_AC_LIST *p);\r
651 void SmHubAcDlgRefresh(HWND hWnd, SM_EDIT_AC_LIST *p);\r
652 UINT SmHubEditAcDlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *param);\r
653 void SmHubEditAcDlgInit(HWND hWnd, SM_EDIT_AC *p);\r
654 void SmHubEditAcDlgUpdate(HWND hWnd, SM_EDIT_AC *p);\r
655 void SmHubEditAcDlgOnOk(HWND hWnd, SM_EDIT_AC *p);\r
656 UINT SmLogFileDlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *param);\r
657 void SmLogFileDlgInit(HWND hWnd, SM_SERVER *p);\r
658 void SmLogFileDlgRefresh(HWND hWnd, SM_SERVER *p);\r
659 void SmLogFileDlgUpdate(HWND hWnd, SM_SERVER *p);\r
660 void SmLogFileStartDownload(HWND hWnd, SM_SERVER *s, char *server_name, char *filepath, UINT totalsize);\r
661 UINT SmReadLogFile(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *param);\r
662 bool SmReadLogFileProc(DOWNLOAD_PROGRESS *g);\r
663 UINT SmSaveLogProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *param);\r
664 void SmLicense(HWND hWnd, SM_SERVER *s);\r
665 UINT SmLicenseDlg(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *param);\r
666 void SmLicenseDlgInit(HWND hWnd, SM_SERVER *s);\r
667 void SmLicenseDlgRefresh(HWND hWnd, SM_SERVER *s);\r
668 void SmLicenseDlgUpdate(HWND hWnd, SM_SERVER *s);\r
669 bool SmLicenseAdd(HWND hWnd, SM_SERVER *s);\r
670 UINT SmLicenseAddDlg(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *param);\r
671 void SmLicenseAddDlgInit(HWND hWnd, SM_SERVER *s);\r
672 void SmLicenseAddDlgUpdate(HWND hWnd, SM_SERVER *s);\r
673 void SmLicenseAddDlgShiftTextItem(HWND hWnd, UINT id1, UINT id2, UINT *next_focus);\r
674 void SmLicenseAddDlgGetText(HWND hWnd, char *str, UINT size);\r
675 void SmLicenseAddDlgOnOk(HWND hWnd, SM_SERVER *s);\r
676 bool SmSetup(HWND hWnd, SM_SERVER *s);\r
677 UINT SmSetupDlg(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *param);\r
678 void SmSetupDlgInit(HWND hWnd, SM_SETUP *s);\r
679 void SmSetupDlgUpdate(HWND hWnd, SM_SETUP *s);\r
680 void SmSetupDlgOnOk(HWND hWnd, SM_SETUP *s);\r
681 UINT SmSetupHubDlg(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *param);\r
682 void SmSetupHubDlgUpdate(HWND hWnd, SM_SETUP *s);\r
683 bool SmSetupInit(HWND hWnd, SM_SETUP *s);\r
684 bool SmSetupDeleteAllHub(HWND hWnd, SM_SETUP *s);\r
685 bool SmSetupDeleteAllLocalBridge(HWND hWnd, SM_SETUP *s);\r
686 bool SmSetupDeleteAllLayer3(HWND hWnd, SM_SETUP *s);\r
687 bool SmSetupDeleteAllObjectInBridgeHub(HWND hWnd, SM_SETUP *s);\r
688 void SmSetupStep(HWND hWnd, SM_SETUP *s);\r
689 UINT SmSetupStepDlg(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *param);\r
690 void SmSetupStepDlgInit(HWND hWnd, SM_SETUP *s);\r
691 void SmSetupOnClose(HWND hWnd, SM_SETUP *s);\r
692 bool SmSetupIsNew(SM_SERVER *s);\r
693 void SmVLan(HWND hWnd, SM_SERVER *s);\r
694 UINT SmVLanDlg(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *param);\r
695 void SmVLanDlgInit(HWND hWnd, SM_SERVER *s);\r
696 void SmVLanDlgRefresh(HWND hWnd, SM_SERVER *s);\r
697 void SmVLanDlgUpdate(HWND hWnd, SM_SERVER *s);\r
698 void SmHubMsg(HWND hWnd, SM_EDIT_HUB *s);\r
699 UINT SmHubMsgDlg(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *param);\r
700 void SmHubMsgDlgInit(HWND hWnd, SM_EDIT_HUB *s);\r
701 void SmHubMsgDlgUpdate(HWND hWnd, SM_EDIT_HUB *s);\r
702 void SmHubMsgDlgOnOk(HWND hWnd, SM_EDIT_HUB *s);\r
703 \r