source: lab/vendor/utvpn/utvpn-unix-v101-7101-public/src/Cedar/CMInner.h @ 146

Last change on this file since 146 was 146, checked in by mitty, 12 years ago
  • tar xzf utvpn-src-unix-v101-7101-public-2010.06.27.tar.gz
File size: 24.0 KB
Line 
1// SoftEther UT-VPN SourceCode
2//
3// Copyright (C) 2004-2010 SoftEther Corporation.
4// Copyright (C) 2004-2010 University of Tsukuba, Japan.
5// Copyright (C) 2003-2010 Daiyuu Nobori.
6// All Rights Reserved.
7//
8// http://utvpn.tsukuba.ac.jp/
9//
10// This program is free software; you can redistribute it and/or
11// modify it under the terms of the GNU General Public License
12// version 2 as published by the Free Software Foundation.
13//
14// This program is distributed in the hope that it will be useful,
15// but WITHOUT ANY WARRANTY; without even the implied warranty of
16// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17// GNU General Public License for more details.
18//
19// You should have received a copy of the GNU General Public License version 2
20// along with this program; if not, write to the Free Software
21// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
22//
23// このファイルは GPL バージョン 2 ライセンスで公開されています。
24// 誰でもこのファイルの内容を複製、改変したり、改変したバージョンを再配布
25// することができます。ただし、原著作物を改変した場合は、原著作物の著作権表示
26// を除去することはできません。改変した著作物を配布する場合は、改変実施者の
27// 著作権表示を原著作物の著作権表示に付随して記載するようにしてください。
28//
29// この SoftEther UT-VPN オープンソース・プロジェクトは、日本国の
30// ソフトイーサ株式会社 (SoftEther Corporation, http://www.softether.co.jp/ )
31// および筑波大学 (University of Tsukuba, http://www.tsukuba.ac.jp/ ) によって
32// ホストされています。
33// 本プログラムの配布者は、本プログラムを、業としての利用以外のため、
34// および、試験または研究のために利用が行われることを想定して配布
35// しています。
36// SoftEther UT-VPN プロジェクトの Web サイトは http://utvpn.tsukuba.ac.jp/ に
37// あります。
38// 本ソフトウェアの不具合の修正、機能改良、セキュリティホールの修復などのコード
39// の改変を行った場合で、その成果物を SoftEther UT-VPN プロジェクトに提出して
40// いただける場合は、 http://utvpn.tsukuba.ac.jp/ までソースコードを送付して
41// ください。SoftEther UT-VPN プロジェクトの本体リリースまたはブランチリリース
42// に組み込みさせていただきます。
43//
44// GPL に基づいて原著作物が提供される本ソフトウェアの改良版を配布、販売する
45// 場合は、そのソースコードを GPL に基づいて誰にでも開示する義務が生じます。
46//
47// 本ソフトウェアに関連する著作権、特許権、商標権はソフトイーサ株式会社
48// (SoftEther Corporation) およびその他の著作権保持者が保有しています。
49// ソフトイーサ株式会社等はこれらの権利を放棄していません。本ソフトウェアの
50// 二次著作物を配布、販売する場合は、これらの権利を侵害しないようにご注意
51// ください。
52//
53// お願い: どのような通信ソフトウェアにも通常は必ず未発見の
54// セキュリティホールが潜んでいます。本ソースコードをご覧いただいた結果、
55// UT-VPN にセキュリティホールを発見された場合は、当該セキュリティホールの
56// 情報を不特定多数に開示される前に、必ず、ソフトイーサ株式会社
57// および脆弱性情報の届出を受け付ける公的機関まで通報いただき、
58// 公益保護にご協力いただきますようお願い申し上げます。
59//
60// ソフトイーサ株式会社は、当該セキュリティホールについて迅速に対処を
61// 行い、UT-VPN および UT-VPN に関連するソフトウェアのユーザー・顧客
62// を保護するための努力を行います。
63//
64// ソフトイーサへの届出先: http://www.softether.co.jp/jp/contact/
65// 日本国内の脆弱性情報届出受付公的機関:
66//         独立行政法人 情報処理推進機構
67//         http://www.ipa.go.jp/security/vuln/report/
68//
69// 上記各事項について不明な点は、ソフトイーサ株式会社までご連絡ください。
70// 連絡先: http://www.softether.co.jp/jp/contact/
71
72// -----------------------------------------------
73// [ChangeLog]
74// 2010.05.20
75//  新規リリース by SoftEther
76// -----------------------------------------------
77
78// CMInner.h
79// CM.c の内部向けヘッダ
80
81#define STARTUP_MUTEX_NAME  "utvpncmgr_startup_mutex"
82
83void CmVoice(char *name);
84
85typedef struct CM_UAC_HELPER
86{
87    THREAD *Thread;
88    volatile bool Halt;
89    EVENT *HaltEvent;
90} CM_UAC_HELPER;
91
92typedef struct CM_VOICE
93{
94    UINT voice_id;
95    char *perfix;
96} CM_VOICE;
97
98static CM_VOICE cm_voice[] =
99{
100    {VOICE_SSK,     "ssk"       },
101    {VOICE_AHO,     "aho"       },
102};
103
104typedef struct CM_ENUM_HUB
105{
106    HWND hWnd;
107    THREAD *Thread;
108    SESSION *Session;
109    CLIENT_OPTION *ClientOption;
110    TOKEN_LIST *Hub;
111} CM_ENUM_HUB;
112
113#define CM_SETTING_INIT_NONE        0
114#define CM_SETTING_INIT_EASY        1   // 簡易モードへ遷移
115#define CM_SETTING_INIT_NORMAL      2   // 通常モードへ遷移
116#define CM_SETTING_INIT_SELECT      3   // 選択画面を表示
117
118typedef struct CM
119{
120    HWND hMainWnd;
121    HWND hStatusBar;
122    REMOTE_CLIENT *Client;
123    char *server_name;
124    wchar_t *import_file_name;
125    bool HideStatusBar;
126    bool HideTrayIcon;
127    bool ShowGrid;
128    bool VistaStyle;
129    bool ShowPort;
130    wchar_t StatudBar1[MAX_SIZE];
131    wchar_t StatudBar2[MAX_SIZE];
132    wchar_t StatudBar3[MAX_SIZE];
133    HICON Icon2, Icon3;
134    bool IconView;
135    THREAD *NotifyClientThread;
136    NOTIFY_CLIENT *NotifyClient;
137    volatile bool Halt;
138    bool OnCloseDispatched;
139    LIST *StatusWindowList;
140    CEDAR *Cedar;
141    LIST *EnumHubList;
142    UINT WindowCount;
143    bool DisableVoice;
144    UINT VoiceId;
145    UINT OldConnectedNum;
146    bool UpdateConnectedNumFlag;
147    UCHAR ShortcutKey[SHA1_SIZE];
148    bool TrayInited;
149    bool TrayAnimation;
150    bool TraySpeedAnimation;
151    UINT TrayAnimationCounter;
152    bool StartupMode;
153    THREAD *TryExecUiHelperThread;
154    volatile bool TryExecUiHelperHalt;
155    HANDLE TryExecUiHelperProcessHandle;
156    EVENT *TryExecUiHelperHaltEvent;
157    bool WindowsShutdowning;
158    bool CmSettingSupported;
159    bool CmEasyModeSupported;
160    bool CmSettingInitialFlag;
161    CM_SETTING CmSetting;
162    HWND hEasyWnd;
163    bool StartupFinished;
164    bool ConnectStartedFlag;
165    bool PositiveDisconnectFlag;
166    wchar_t EasyLastSelectedAccountName[MAX_ACCOUNT_NAME_LEN + 1];
167    WINDOWPLACEMENT FakeWindowPlacement;
168    INSTANCE *StartupMutex;
169    bool BadProcessChecked;
170    bool MenuPopuping;
171    bool SplashHasBeenShown;
172} CM;
173
174typedef struct CM_STATUS
175{
176    wchar_t AccountName[MAX_ACCOUNT_NAME_LEN + 1];      // アカウント名
177    HWND hWndPolicy;                    // ポリシーダイアログ
178} CM_STATUS;
179
180typedef struct CM_POLICY
181{
182    HWND hWnd;
183    wchar_t AccountName[MAX_ACCOUNT_NAME_LEN + 1];      // アカウント名
184    POLICY *Policy;                     // ポリシーダイアログ
185    CM_STATUS *CmStatus;                // CM_STATUS
186    bool Extension;                     // 拡張
187} CM_POLICY;
188
189typedef struct CM_ACCOUNT
190{
191    bool EditMode;                      // 編集モード (false: 新規作成モード)
192    bool LinkMode;                      // リンクモード
193    bool NatMode;                       // NAT モード
194    CLIENT_OPTION *ClientOption;        // クライアントオプション
195    CLIENT_AUTH *ClientAuth;            // 認証データ
196    bool Startup;                       // スタートアップアカウント
197    bool CheckServerCert;               // サーバー証明書のチェック
198    X *ServerCert;                      // サーバー証明書
199    char old_server_name[MAX_HOST_NAME_LEN + 1];    // 古いサーバー名
200    bool Inited;                        // 初期化フラグ
201    POLICY Policy;                      // ポリシー (リンクモードのみ)
202    struct SM_HUB *Hub;                 // HUB
203    RPC *Rpc;                           // RPC
204    bool OnlineFlag;                    // オンライン フラグ
205    bool Flag1;                         // フラグ 1
206    bool HideClientCertAuth;            // クライアント認証を隠す
207    bool HideSecureAuth;                // スマートカード認証を隠す
208    bool HideTrustCert;                 // 信頼する証明機関ボタンを隠す
209    UCHAR ShortcutKey[SHA1_SIZE];       // ショートカットキー
210    bool LockMode;                      // 設定ロックモード
211    bool Link_ConnectNow;               // すぐに接続を開始する
212    UINT PolicyVer;                     // ポリシーバージョン
213} CM_ACCOUNT;
214
215typedef struct CM_CHANGE_PASSWORD
216{
217    CLIENT_OPTION *ClientOption;        // クライアントオプション
218    char Username[MAX_USERNAME_LEN + 1];    // ユーザー名
219    char HubName[MAX_HUBNAME_LEN + 1];      // HUB 名
220} CM_CHANGE_PASSWORD;
221
222typedef struct CM_TRAFFIC
223{
224    bool ServerMode;        // サーバーモード
225    bool Double;            // 2 倍モード
226    bool Raw;               // 生データモード
227    UINT Port;              // ポート番号
228    char Host[MAX_HOST_NAME_LEN + 1];   // ホスト名
229    UINT NumTcp;            // TCP コネクション数
230    UINT Type;              // 種類
231    UINT Span;              // 期間
232} CM_TRAFFIC;
233
234typedef struct CM_TRAFFIC_DLG
235{
236    HWND hWnd;              // ウインドウハンドル
237    CM_TRAFFIC *Setting;    // 設定
238    TTS *Tts;               // 測定サーバー
239    TTC *Ttc;               // 測定クライアント
240    THREAD *HaltThread;     // 停止用スレッド
241    THREAD *ClientEndWaitThread;    // クライアントが終了するのを待機するスレッド
242    bool Started;           // 開始フラグ
243    bool Stopping;          // 停止中
244    UINT RetCode;           // 戻り値
245    TT_RESULT Result;       // 結果
246    EVENT *ResultShowEvent; // 結果表示イベント
247    bool CloseDialogAfter;  // ダイアログを閉じるかどうかのフラグ
248} CM_TRAFFIC_DLG;
249
250// インターネット接続設定
251typedef struct CM_INTERNET_SETTING
252{
253    UINT ProxyType;                             // プロキシサーバーの種類
254    char ProxyHostName[MAX_HOST_NAME_LEN + 1];  // プロキシサーバーホスト名
255    UINT ProxyPort;                             // プロキシサーバーポート番号
256    char ProxyUsername[MAX_USERNAME_LEN + 1];   // プロキシサーバーユーザー名
257    char ProxyPassword[MAX_USERNAME_LEN + 1];   // プロキシサーバーパスワード
258} CM_INTERNET_SETTING;
259
260static CM *cm = NULL;
261
262void CmFreeTrayExternal(void *hWnd);
263
264// 通常 RPC 呼び出しマクロ
265__forceinline static bool CALL(HWND hWnd, UINT code)
266{
267    UINT ret = code;
268    if (ret != ERR_NO_ERROR)
269    {
270        if (ret == ERR_DISCONNECTED)
271        {
272            if (cm != NULL)
273            {
274                Close(cm->hMainWnd);
275            }
276            else
277            {
278                MsgBox(hWnd, MB_ICONSTOP, _UU("SM_DISCONNECTED"));
279            }
280
281            if (cm != NULL)
282            {
283                CmFreeTrayExternal((void *)cm->hMainWnd);
284            }
285            exit(0);
286        }
287        else
288        {
289            UINT flag = MB_ICONEXCLAMATION;
290            if (ret == ERR_VLAN_IS_USED)
291            {
292                CmVoice("using_vlan");
293            }
294            if (hWnd != NULL && cm != NULL && cm->hEasyWnd != NULL)
295            {
296                hWnd = cm->hEasyWnd;
297            }
298            if (hWnd != NULL && cm != NULL && hWnd == cm->hEasyWnd)
299            {
300                flag |= MB_SETFOREGROUND | MB_TOPMOST;
301            }
302            MsgBox(hWnd, flag, _E(ret));
303        }
304    }
305
306    if (ret == ERR_NO_ERROR)
307    {
308        return true;
309    }
310    else
311    {
312        return false;
313    }
314}
315
316// 拡張 RPC 呼び出しマクロ (エラー値を取得する)
317__forceinline static UINT CALLEX(HWND hWnd, UINT code)
318{
319    UINT ret = code;
320    if (ret != ERR_NO_ERROR)
321    {
322        if (ret == ERR_DISCONNECTED)
323        {
324            if (cm != NULL)
325            {
326                Close(cm->hMainWnd);
327            }
328            else
329            {
330                MsgBox(hWnd, MB_ICONSTOP, _UU("SM_DISCONNECTED"));
331            }
332            if (cm != NULL)
333            {
334                CmFreeTrayExternal((void *)cm->hMainWnd);
335            }
336            exit(0);
337        }
338    }
339
340    return ret;
341}
342
343typedef struct CM_LOADX
344{
345    X *x;
346} CM_LOADX;
347
348typedef struct CM_SETTING_DLG
349{
350    bool CheckPassword;
351    UCHAR HashedPassword[SHA1_SIZE];
352} CM_SETTING_DLG;
353
354typedef struct CM_EASY_DLG
355{
356    bool EndDialogCalled;
357} CM_EASY_DLG;
358
359
360// タスクトレイ関係
361#define WM_CM_TRAY_MESSAGE          (WM_APP + 44)
362#define WM_CM_SETTING_CHANGED_MESSAGE   (WM_APP + 45)
363#define WM_CM_EASY_REFRESH          (WM_APP + 46)
364#define WM_CM_SHOW                  (WM_APP + 47)
365#define CMD_EASY_DBLCLICK           40697
366#define CM_TRAY_ANIMATION_INTERVAL  3000
367#define CM_TRAY_MAX_ITEMS           4096
368#define CM_TRAY_MENU_ID_START       12000
369#define CM_TRAY_MENU_CONNECT_ID_START   (CM_TRAY_MENU_ID_START + CM_TRAY_MAX_ITEMS)
370#define CM_TRAY_MENU_STATUS_ID_START    (CM_TRAY_MENU_CONNECT_ID_START + CM_TRAY_MAX_ITEMS)
371#define CM_TRAY_MENU_DISCONNECT_ID_START    (CM_TRAY_MENU_STATUS_ID_START + CM_TRAY_MAX_ITEMS)
372#define CM_TRAY_MENU_RECENT_ID_START    (CM_TRAY_MENU_DISCONNECT_ID_START + CM_TRAY_MAX_ITEMS)
373#define CM_TRAY_IS_CONNECT_ID(id)   (((id) >= CM_TRAY_MENU_CONNECT_ID_START) && (id) < CM_TRAY_MENU_STATUS_ID_START)
374#define CM_TRAY_IS_STATUS_ID(id)    (((id) >= CM_TRAY_MENU_STATUS_ID_START) && (id) < CM_TRAY_MENU_DISCONNECT_ID_START)
375#define CM_TRAY_IS_DISCONNECT_ID(id)    (((id) >= CM_TRAY_MENU_DISCONNECT_ID_START) && (id) < (CM_TRAY_MENU_DISCONNECT_ID_START + CM_TRAY_MAX_ITEMS))
376#define CM_TRAY_IS_RECENT_ID(id)    (((id) >= CM_TRAY_MENU_RECENT_ID_START) && (id) < (CM_TRAY_MENU_RECENT_ID_START + CM_TRAY_MAX_ITEMS))
377
378// スプラッシュスクリーンの枠線の色
379#define CM_SPLASH_BORDER_COLOR  (RGB(102, 0, 204))
380
381
382// 関数プロトタイプ
383void InitCM();
384void FreeCM();
385void MainCM();
386bool LoginCM();
387void LogoutCM();
388UINT CmLoginDlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *param);
389void MainCMWindow();
390void CmSendImportMessage(HWND hWnd, wchar_t *filename, UINT msg);
391UINT CmMainWindowProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *param);
392void CmMainWindowOnSize(HWND hWnd);
393void CmMainWindowOnInit(HWND hWnd);
394void CmMainWindowOnQuit(HWND hWnd);
395void CmSaveMainWindowPos(HWND hWnd);
396void CmMainWindowOnCommand(HWND hWnd, WPARAM wParam, LPARAM lParam);
397void CmMainWindowOnCommandEx(HWND hWnd, WPARAM wParam, LPARAM lParam, bool easy);
398bool CmIsEnabled(HWND hWnd, UINT id);
399bool CmIsChecked(UINT id);
400bool CmIsBold(UINT id);
401void CmMainWindowOnPopupMenu(HWND hWnd, HMENU hMenu, UINT pos);
402void CmSaveMainWindowPos(HWND hWnd);
403void CmRedrawStatusBar(HWND hWnd);
404void CmRefresh(HWND hWnd);
405void CmRefreshEx(HWND hWnd, bool style_changed);
406void CmSetForegroundProcessToCnService();
407void CmInitAccountList(HWND hWnd);
408void CmInitAccountListEx(HWND hWnd, bool easy);
409void CmInitVLanList(HWND hWnd);
410void CmRefreshAccountList(HWND hWnd);
411void CmRefreshAccountListEx(HWND hWnd, bool easy);
412void CmRefreshAccountListEx2(HWND hWnd, bool easy, bool style_changed);
413void CmRefreshVLanList(HWND hWnd);
414void CmRefreshVLanListEx(HWND hWnd, bool style_changed);
415void CmSaveAccountListPos(HWND hWnd);
416void CmSaveVLanListPos(HWND hWnd);
417wchar_t *CmGetProtocolName(UINT n);
418void CmVLanNameToPrintName(char *str, UINT size, char *name);
419bool CmPrintNameToVLanName(char *name, UINT size, char *str);
420void CmMainWindowOnNotify(HWND hWnd, NMHDR *n);
421void CmOnKey(HWND hWnd, bool ctrl, bool alt, UINT key);
422void CmAccountListRightClick(HWND hWnd);
423void CmVLanListRightClick(HWND hWnd);
424void CmConnect(HWND hWnd, wchar_t *account_name);
425void CmDisconnect(HWND hWnd, wchar_t *account_name);
426void CmInitNotifyClientThread();
427void CmFreeNotifyClientThread();
428void CmNotifyClientThread(THREAD *thread, void *param);
429void CmDeleteAccount(HWND hWnd, wchar_t *account_name);
430void CmStatus(HWND hWnd, wchar_t *account_name);
431void CmStatusDlg(HWND hWnd, wchar_t *account_name);
432UINT CmStatusDlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *param);
433void CmStatusDlgPrint(HWND hWnd, CM_STATUS *cmst);
434void CmPrintStatusToListView(LVB *b, RPC_CLIENT_GET_CONNECTION_STATUS *s);
435void CmPrintStatusToListViewEx(LVB *b, RPC_CLIENT_GET_CONNECTION_STATUS *s, bool server_mode);
436void CmStatusDlgPrintCert(HWND hWnd, CM_STATUS *st, bool server);
437void CmPolicyDlg(HWND hWnd, CM_STATUS *st);
438UINT CmPolicyDlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *param);
439void CmPolicyDlgPrint(HWND hWnd, CM_POLICY *p);
440void CmPolicyDlgPrintEx(HWND hWnd, CM_POLICY *p, bool cascade_mode);
441void CmPolicyDlgPrintEx2(HWND hWnd, CM_POLICY *p, bool cascade_mode, bool ver);
442void CmNewAccount(HWND hWnd);
443void CmEditAccount(HWND hWnd, wchar_t *account_name);
444void CmGenerateNewAccountName(HWND hWnd, wchar_t *name, UINT size);
445void CmGenerateCopyName(HWND hWnd, wchar_t *name, UINT size, wchar_t *old_name);
446void CmGenerateImportName(HWND hWnd, wchar_t *name, UINT size, wchar_t *old_name);
447CM_ACCOUNT *CmCreateNewAccountObject(HWND hWnd);
448CM_ACCOUNT *CmGetExistAccountObject(HWND hWnd, wchar_t *account_name);
449void CmEnumHubStart(HWND hWnd, CLIENT_OPTION *o);
450void CmInitEnumHub();
451void CmFreeEnumHub();
452void CmFreeAccountObject(HWND hWnd, CM_ACCOUNT *a);
453bool CmEditAccountDlg(HWND hWnd, CM_ACCOUNT *a);
454UINT CmEditAccountDlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *param);
455void CmEditAccountDlgUpdate(HWND hWnd, CM_ACCOUNT *a);
456void CmEditAccountDlgInit(HWND hWnd, CM_ACCOUNT *a);
457void CmEditAccountDlgOnOk(HWND hWnd, CM_ACCOUNT *a);
458void CmEditAccountDlgStartEnumHub(HWND hWnd, CM_ACCOUNT *a);
459bool CmLoadXAndK(HWND hWnd, X **x, K **k);
460bool CmLoadK(HWND hWnd, K **k);
461bool CmLoadKEx(HWND hWnd, K **k, char *filename, UINT size);
462bool CmLoadKExW(HWND hWnd, K **k, wchar_t *filename, UINT size);
463bool CmLoadXFromFileOrSecureCard(HWND hWnd, X **x);
464void CmLoadXFromFileOrSecureCardDlgInit(HWND hWnd, CM_LOADX *p);
465void CmLoadXFromFileOrSecureCardDlgUpdate(HWND hWnd, CM_LOADX *p);
466UINT CmLoadXFromFileOrSecureCardDlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *param);
467bool CmLoadX(HWND hWnd, X **x);
468bool CmLoadXEx(HWND hWnd, X **x, char *filename, UINT size);
469bool CmLoadXExW(HWND hWnd, X **x, wchar_t *filename, UINT size);
470X *CmGetIssuer(X *x);
471bool CmProxyDlg(HWND hWnd, CLIENT_OPTION *a);
472void CmProxyDlgUpdate(HWND hWnd, CLIENT_OPTION *a);
473UINT CmProxyDlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *param);
474bool CmDetailDlg(HWND hWnd, CM_ACCOUNT *a);
475UINT CmDetailDlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *param);
476char *CmNewVLanDlg(HWND hWnd);
477UINT CmNewVLanDlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *param);
478void CmCopyAccount(HWND hWnd, wchar_t *account_name);
479void CmExportAccount(HWND hWnd, wchar_t *account_name);
480void CmSortcut(HWND hWnd, wchar_t *account_name);
481void CmImportAccount(HWND hWnd);
482void CmImportAccountMain(HWND hWnd, wchar_t *filename);
483void CmImportAccountMainEx(HWND hWnd, wchar_t *filename, bool overwrite);
484void CmTrustDlg(HWND hWnd);
485UINT CmTrustDlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *param);
486void CmTrustDlgUpdate(HWND hWnd);
487void CmTrustDlgRefresh(HWND hWnd);
488void CmTrustImport(HWND hWnd);
489void CmTrustExport(HWND hWnd);
490void CmTrustView(HWND hWnd);
491void CmPassword(HWND hWnd);
492UINT CmPasswordProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *param);
493void CmPasswordRefresh(HWND hWnd);
494void CmRefreshStatusBar(HWND hWnd);
495UINT CmGetNumConnected(HWND hWnd);
496void CmDisconnectAll(HWND hWnd);
497wchar_t *CmGenerateMainWindowTitle();
498void CmConfigDlg(HWND hWnd);
499UINT CmConfigDlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *param);
500void CmConfigDlgInit(HWND hWnd);
501void CmConfigDlgRefresh(HWND hWnd);
502void CmConfigDlgOnOk(HWND hWnd);
503bool CmWarningDesktop(HWND hWnd, wchar_t *account_name);
504UINT CmDesktopDlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *param);
505void CmDesktopDlgInit(HWND hWnd, wchar_t *account_name);
506void CmChangePassword(HWND hWnd, CLIENT_OPTION *o, char *hubname, char *username);
507UINT CmChangePasswordProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *param);
508void CmChangePasswordUpdate(HWND hWnd, CM_CHANGE_PASSWORD *p);
509void SmShowPublicVpnServerHtml(HWND hWnd);
510void CmConnectShortcut(UCHAR *key);
511UINT CmSelectSecure(HWND hWnd, UINT current_id);
512void CmClientSecureManager(HWND hWnd);
513UINT CmClientSelectSecure(HWND hWnd);
514UINT CmSelectSecureDlg(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *param);
515void CmSelectSecureDlgInit(HWND hWnd, UINT default_id);
516void CmSelectSecureDlgUpdate(HWND hWnd);
517void CmSecureManager(HWND hWnd, UINT id);
518void CmSecureManagerEx(HWND hWnd, UINT id, bool no_new_cert);
519UINT CmSecureManagerDlg(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *param);
520void CmSecureManagerDlgInit(HWND hWnd, UINT id);
521void CmSecureManagerDlgUpdate(HWND hWnd, UINT id);
522void CmSecureManagerDlgRefresh(HWND hWnd, UINT id);
523void CmSecureManagerDlgPrintList(HWND hWnd, LIST *o);
524void CmSecureManagerDlgPrintListEx(HWND hWnd, UINT id, LIST *o, UINT type);
525wchar_t *CmSecureObjTypeToStr(UINT type);
526UINT CmSecureType(HWND hWnd);
527UINT CmSecureTypeDlg(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *param);
528void CmSecureManagerDlgImport(HWND hWnd, UINT id);
529void CmSecureManagerDlgDelete(HWND hWnd, UINT id);
530void CmSecureManagerDlgExport(HWND hWnd, UINT id);
531void CmSecureManagerDlgNewCert(HWND hWnd, UINT id);
532void CmSecurePin(HWND hWnd, UINT id);
533UINT CmSecurePinDlg(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *param);
534void CmSecurePinDlgUpdate(HWND hWnd);
535void CmInitTray(HWND hWnd);
536void CmPollingTray(HWND hWnd);
537void CmFreeTray(HWND hWnd);
538void CmChangeTrayString(HWND hWnd, wchar_t *str);
539UINT CmGetTrayIconId(bool animation, UINT animation_counter);
540void CmShowOrHideWindow(HWND hWnd);
541void CmShowTrayMenu(HWND hWnd);
542HMENU CmCreateTraySubMenu(HWND hWnd, bool flag, UINT start_id);
543HMENU CmCreateRecentSubMenu(HWND hWnd, UINT start_id);
544bool CmCheckPkcsEula(HWND hWnd, UINT id);
545UINT CmPkcsEulaDlg(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *param);
546void CmDeleteOldStartupTrayFile();
547UINT CmTrafficDlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *param);
548void CmTrafficDlgInit(HWND hWnd);
549bool CmTrafficDlgUpdate(HWND hWnd);
550void CmTrafficDlgOnOk(HWND hWnd);
551bool CmTrafficLoadFromReg(CM_TRAFFIC *t);
552void CmTrafficGetDefaultSetting(CM_TRAFFIC *t);
553void CmTrafficSaveToReg(CM_TRAFFIC *t);
554void CmTrafficDlgToStruct(HWND hWnd, CM_TRAFFIC *t);
555void CmExecTraffic(HWND hWnd, CM_TRAFFIC *t);
556UINT CmTrafficRunDlg(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *param);
557void CmTrafficRunDlgInit(HWND hWnd, CM_TRAFFIC_DLG *d);
558void CmTrafficRunDlgStart(HWND hWnd, CM_TRAFFIC_DLG *d);
559void CmTrafficRunDlgPrintProc(void *param, wchar_t *str);
560void CmTrafficRunDlgAddStr(HWND hWnd, wchar_t *str);
561void CmTrafficRunDlgHalt(HWND hWnd, CM_TRAFFIC_DLG *d);
562void CmTrafficRunDlgHaltThread(THREAD *t, void *param);
563void CmTrafficRunDlgClientWaitThread(THREAD *t, void *param);
564void CmTrafficResult(HWND hWnd, TT_RESULT *r);
565UINT CmTrafficResultDlg(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *param);
566void CmTrafficResultDlgInit(HWND hWnd, TT_RESULT *res);
567void CmTryToExecUiHelper();
568void CmInitTryToExecUiHelper();
569void CmFreeTryToExecUiHelper();
570void CmTryToExecUiHelperThread(THREAD *thread, void *param);
571bool CmSetting(HWND hWnd);
572UINT CmSettingDlg(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *param);
573void CmSettingDlgInit(HWND hWnd, CM_SETTING_DLG *d);
574void CmSettingDlgUpdate(HWND hWnd, CM_SETTING_DLG *d);
575void CmSettingDlgOnOk(HWND hWnd, CM_SETTING_DLG *d);
576void CmApplyCmSetting();
577void CmMainWindowOnTrayClicked(HWND hWnd, WPARAM wParam, LPARAM lParam);
578void CmShowEasy();
579void CmCloseEasy();
580void CmMainWindowOnShowEasy(HWND hWnd);
581UINT CmEasyDlg(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *param);
582void CmEasyDlgInit(HWND hWnd, CM_EASY_DLG *d);
583void CmEasyDlgUpdate(HWND hWnd, CM_EASY_DLG *d);
584void CmEasyDlgRefresh(HWND hWnd, CM_EASY_DLG *d);
585void CmRefreshEasy();
586void CmEasyDlgOnNotify(HWND hWnd, CM_EASY_DLG *d, NMHDR *n);
587void CmEasyDlgOnKey(HWND hWnd, CM_EASY_DLG *d, bool ctrl, bool alt, UINT key);
588void CmEasyDlgOnCommand(HWND hWnd, CM_EASY_DLG *d, WPARAM wParam, LPARAM lParam);
589bool CmStartStartupMutex();
590void CmEndStartupMutex();
591void CmSetUacWindowActive();
592void CmUacHelperThread(THREAD *thread, void *param);
593void CmProxyDlgUseForIE(HWND hWnd, CLIENT_OPTION *o);
594void CmGetSystemInternetSetting(CM_INTERNET_SETTING *setting);
595void CmProxyDlgSet(HWND hWnd, CLIENT_OPTION *o, CM_INTERNET_SETTING *setting);
596bool CmGetProxyServerNameAndPortFromIeProxyRegStr(char *name, UINT name_size, UINT *port, char *str, char *server_type);
597void *CmUpdateJumpList(UINT start_id);
598
599
600
Note: See TracBrowser for help on using the repository browser.