2 * Copyright 2000, International Business Machines Corporation and others.
5 * This software has been released under the terms of the IBM Public
6 * License. For details, see the LICENSE file in the top-level source
7 * directory or online at http://www.openafs.org/dl/license10.html
11 #include <afs/param.h>
17 #include "svr_address.h"
18 #include "svr_general.h"
20 #include "propcache.h"
25 * PROTOTYPES _________________________________________________________________
29 BOOL CALLBACK Server_General_DlgProc (HWND hDlg, UINT msg, WPARAM wp, LPARAM lp);
30 BOOL CALLBACK Server_Scout_DlgProc (HWND hDlg, UINT msg, WPARAM wp, LPARAM lp);
32 void Server_General_OnInitDialog (HWND hDlg, LPIDENT lpiServer);
33 void Server_General_OnEndTask_InitDialog (HWND hDlg, LPIDENT lpiServer, LPTASKPACKET ptp);
34 void Server_General_OnAuth (HWND hDlg, LPIDENT lpiServer, BOOL fEnableAuth);
35 void Server_General_OnChangeAddr (HWND hDlg, LPIDENT lpiServer);
37 void Server_Scout_OnInitDialog (HWND hDlg, LPIDENT lpiServer);
38 void Server_Scout_OnApply (HWND hDlg, LPIDENT lpiServer);
39 void Server_Scout_OnAggWarn (HWND hDlg, LPIDENT lpiServer);
40 void Server_Scout_OnSetWarn (HWND hDlg, LPIDENT lpiServer);
41 void Server_Scout_OnAutoRefresh (HWND hDlg, LPIDENT lpiServer);
42 void Server_Scout_OnEndTask_InitDialog (HWND hDlg, LPTASKPACKET ptp);
43 void Server_Scout_OnEndTask_Apply (HWND hDlg, LPTASKPACKET ptp);
47 * ROUTINES ___________________________________________________________________
51 void Server_ShowProperties (LPIDENT lpiServer, size_t nAlerts)
55 if ((hCurrent = PropCache_Search (pcSVR_PROP, lpiServer)) != NULL)
61 TCHAR szName[ cchNAME ];
62 lpiServer->GetServerName (szName);
63 LPTSTR pszTitle = FormatString (IDS_SVR_PROP_TITLE, TEXT("%s"), szName);
65 LPPROPSHEET psh = PropSheet_Create (pszTitle, FALSE);
66 psh->fMadeCaption = TRUE;
68 if ( (PropSheet_AddProblemsTab (psh, IDD_SVR_PROBLEMS, lpiServer, nAlerts)) &&
69 (PropSheet_AddTab (psh, IDS_SVR_GENERAL_TAB, IDD_SVR_GENERAL, (DLGPROC)Server_General_DlgProc, (LPARAM)lpiServer, TRUE)) &&
70 (PropSheet_AddTab (psh, IDS_SVR_SCOUT_TAB, IDD_SVR_SCOUT, (DLGPROC)Server_Scout_DlgProc, (LPARAM)lpiServer, TRUE)) )
72 PropSheet_ShowModeless (psh);
78 BOOL CALLBACK Server_General_DlgProc (HWND hDlg, UINT msg, WPARAM wp, LPARAM lp)
80 if (AfsAppLib_HandleHelp (IDD_SVR_GENERAL, hDlg, msg, wp, lp))
83 if (msg == WM_INITDIALOG)
84 SetWindowLong (hDlg, DWL_USER, ((LPPROPSHEETPAGE)lp)->lParam);
86 LPIDENT lpiServer = (LPIDENT)GetWindowLong (hDlg, DWL_USER);
90 case WM_INITDIALOG_SHEET:
91 PropCache_Add (pcSVR_PROP, (LPIDENT)lp, hDlg);
94 case WM_DESTROY_SHEET:
95 PropCache_Delete (hDlg);
99 Server_General_OnInitDialog (hDlg, lpiServer);
100 StartTask (taskSVR_PROP_INIT, hDlg, lpiServer);
104 SetWindowLong (hDlg, DWL_USER, 0);
109 if ((ptp = (LPTASKPACKET)lp) != NULL)
111 if (ptp->idTask == taskSVR_PROP_INIT)
112 Server_General_OnEndTask_InitDialog (hDlg, lpiServer, ptp);
113 FreeTaskPacket (ptp);
124 case IDC_SVR_AUTH_YES:
125 Server_General_OnAuth (hDlg, lpiServer, TRUE);
128 case IDC_SVR_AUTH_NO:
129 Server_General_OnAuth (hDlg, lpiServer, FALSE);
132 case IDC_SVR_CHANGEADDR:
133 Server_General_OnChangeAddr (hDlg, lpiServer);
138 case WM_CTLCOLORLISTBOX:
139 if ((HWND)lp == GetDlgItem (hDlg, IDC_SVR_ADDRESSES))
141 SetBkColor ((HDC)wp, GetSysColor (COLOR_BTNFACE));
142 return (BOOL)CreateSolidBrush (GetSysColor (COLOR_BTNFACE));
151 void Server_General_OnInitDialog (HWND hDlg, LPIDENT lpiServer)
153 TCHAR szText[ cchRESOURCE ];
154 lpiServer->GetServerName (szText);
155 SetDlgItemText (hDlg, IDC_SVR_NAME, szText);
157 EnableWindow (GetDlgItem (hDlg, IDC_SVR_AUTH_YES), FALSE);
158 EnableWindow (GetDlgItem (hDlg, IDC_SVR_AUTH_NO), FALSE);
159 EnableWindow (GetDlgItem (hDlg, IDC_SVR_CHANGEADDR), FALSE);
163 void Server_General_OnEndTask_InitDialog (HWND hDlg, LPIDENT lpiServer, LPTASKPACKET ptp)
165 TCHAR szText[ cchRESOURCE ];
168 GetString (szText, IDS_UNKNOWN);
169 SetDlgItemText (hDlg, IDC_SVR_NUMAGGREGATES, szText);
170 SetDlgItemText (hDlg, IDC_SVR_CAPACITY, szText);
171 SetDlgItemText (hDlg, IDC_SVR_ALLOCATION, szText);
173 LB_StartChange (GetDlgItem (hDlg, IDC_SVR_ADDRESSES), TRUE);
174 LB_AddItem (GetDlgItem (hDlg, IDC_SVR_ADDRESSES), szText, (LPARAM)-1);
175 LB_EndChange (GetDlgItem (hDlg, IDC_SVR_ADDRESSES), (LPARAM)-1);
177 lpiServer->GetServerName (szText);
178 ErrorDialog (ptp->status, IDS_ERROR_REFRESH_SERVER_STATUS, TEXT("%s"), szText);
182 EnableWindow (GetDlgItem (hDlg, IDC_SVR_AUTH_YES), TRUE);
183 EnableWindow (GetDlgItem (hDlg, IDC_SVR_AUTH_NO), TRUE);
184 EnableWindow (GetDlgItem (hDlg, IDC_SVR_CHANGEADDR), TRUE);
186 wsprintf (szText, TEXT("%lu"), TASKDATA(ptp)->nAggr);
187 SetDlgItemText (hDlg, IDC_SVR_NUMAGGREGATES, szText);
189 LPTSTR pszText = FormatString (IDS_SVR_CAPACITY, TEXT("%.1B"), (double)TASKDATA(ptp)->ckCapacity * 1024.0);
190 SetDlgItemText (hDlg, IDC_SVR_CAPACITY, pszText);
191 FreeString (pszText);
193 DWORD dwPercentUsed = 100;
194 if (TASKDATA(ptp)->ckCapacity)
195 dwPercentUsed = (DWORD)( (double)100 * TASKDATA(ptp)->ckAllocation / TASKDATA(ptp)->ckCapacity );
196 pszText = FormatString (IDS_SVR_ALLOCATION, TEXT("%.1B%lu"), (double)TASKDATA(ptp)->ckAllocation * 1024.0, dwPercentUsed);
197 SetDlgItemText (hDlg, IDC_SVR_ALLOCATION, pszText);
198 FreeString (pszText);
200 Server_FillAddrList (hDlg, &TASKDATA(ptp)->ss);
206 void Server_General_OnAuth (HWND hDlg, LPIDENT lpiServer, BOOL fEnable)
210 if (Message (MB_YESNO | MB_ICONASTERISK, IDS_WARN_TITLE, IDS_WARN_DISABLE_AUTH) != IDYES)
214 LPSVR_SETAUTH_PARAMS lpp = New (SVR_SETAUTH_PARAMS);
215 lpp->lpiServer = lpiServer;
216 lpp->fEnableAuth = fEnable;
217 StartTask (taskSVR_SETAUTH, NULL, lpp);
221 void Server_General_OnChangeAddr (HWND hDlg, LPIDENT lpiServer)
223 LPSVR_CHANGEADDR_PARAMS lpp = New (SVR_CHANGEADDR_PARAMS);
224 memset (lpp, 0x00, sizeof(SVR_CHANGEADDR_PARAMS));
225 lpp->lpiServer = lpiServer;
227 if (ModalDialogParam (IDD_SVR_ADDRESS, hDlg, (DLGPROC)ChangeAddr_DlgProc, (LPARAM)lpp) == IDOK)
229 StartTask (taskSVR_CHANGEADDR, NULL, lpp);
238 BOOL CALLBACK Server_Scout_DlgProc (HWND hDlg, UINT msg, WPARAM wp, LPARAM lp)
240 if (AfsAppLib_HandleHelp (IDD_SVR_SCOUT, hDlg, msg, wp, lp))
243 if (msg == WM_INITDIALOG)
244 SetWindowLong (hDlg, DWL_USER, ((LPPROPSHEETPAGE)lp)->lParam);
246 LPIDENT lpiServer = (LPIDENT)GetWindowLong (hDlg, DWL_USER);
251 Server_Scout_OnInitDialog (hDlg, lpiServer);
252 StartTask (taskSVR_SCOUT_INIT, hDlg, lpiServer);
257 if ((ptp = (LPTASKPACKET)lp) != NULL)
259 if (ptp->idTask == taskSVR_SCOUT_INIT)
260 Server_Scout_OnEndTask_InitDialog (hDlg, ptp);
261 else if (ptp->idTask == taskSVR_SCOUT_APPLY)
262 Server_Scout_OnEndTask_Apply (hDlg, ptp);
263 FreeTaskPacket (ptp);
275 Server_Scout_OnApply (hDlg, lpiServer);
278 case IDC_SVR_WARN_AGGFULL:
279 Server_Scout_OnAggWarn (hDlg, lpiServer);
280 PropSheetChanged (hDlg);
283 case IDC_SVR_WARN_SETFULL:
284 Server_Scout_OnSetWarn (hDlg, lpiServer);
285 PropSheetChanged (hDlg);
288 case IDC_SVR_WARN_AGGALLOC:
289 case IDC_SVR_WARN_SVCSTOP:
290 case IDC_SVR_WARN_TIMEOUT:
291 case IDC_SVR_WARN_SETNOVLDB:
292 case IDC_SVR_WARN_SETNOSERV:
293 case IDC_SVR_WARN_AGGFULL_PERCENT:
294 case IDC_SVR_WARN_SETFULL_PERCENT:
295 case IDC_SVR_AUTOREFRESH_MINUTES:
296 PropSheetChanged (hDlg);
299 case IDC_SVR_AUTOREFRESH:
300 Server_Scout_OnAutoRefresh (hDlg, lpiServer);
301 PropSheetChanged (hDlg);
311 void Server_Scout_OnInitDialog (HWND hDlg, LPIDENT lpiServer)
313 EnableWindow (GetDlgItem (hDlg, IDC_SVR_WARN_AGGFULL), FALSE);
314 EnableWindow (GetDlgItem (hDlg, IDC_SVR_WARN_AGGFULL_PERCENT), FALSE);
315 EnableWindow (GetDlgItem (hDlg, IDC_SVR_WARN_SETFULL), FALSE);
316 EnableWindow (GetDlgItem (hDlg, IDC_SVR_WARN_SETFULL_PERCENT), FALSE);
317 EnableWindow (GetDlgItem (hDlg, IDC_SVR_WARN_AGGALLOC), FALSE);
318 EnableWindow (GetDlgItem (hDlg, IDC_SVR_WARN_SVCSTOP), FALSE);
319 EnableWindow (GetDlgItem (hDlg, IDC_SVR_WARN_TIMEOUT), FALSE);
320 EnableWindow (GetDlgItem (hDlg, IDC_SVR_WARN_SETNOVLDB), FALSE);
321 EnableWindow (GetDlgItem (hDlg, IDC_SVR_WARN_SETNOSERV), FALSE);
322 EnableWindow (GetDlgItem (hDlg, IDC_SVR_WARN_AGGNOSERV), FALSE);
323 EnableWindow (GetDlgItem (hDlg, IDC_SVR_AUTOREFRESH), FALSE);
324 EnableWindow (GetDlgItem (hDlg, IDC_SVR_AUTOREFRESH_MINUTES), FALSE);
328 void Server_Scout_OnEndTask_InitDialog (HWND hDlg, LPTASKPACKET ptp)
330 LPIDENT lpiServer = (LPIDENT)GetWindowLong (hDlg, DWL_USER);
334 TCHAR szText[ cchNAME ];
335 lpiServer->GetServerName (szText);
336 ErrorDialog (ptp->status, IDS_ERROR_REFRESH_SERVER_STATUS, TEXT("%s"), szText);
340 EnableWindow (GetDlgItem (hDlg, IDC_SVR_WARN_AGGFULL), TRUE);
341 EnableWindow (GetDlgItem (hDlg, IDC_SVR_WARN_AGGFULL_PERCENT), TRUE);
342 EnableWindow (GetDlgItem (hDlg, IDC_SVR_WARN_SETFULL), TRUE);
343 EnableWindow (GetDlgItem (hDlg, IDC_SVR_WARN_SETFULL_PERCENT), TRUE);
344 EnableWindow (GetDlgItem (hDlg, IDC_SVR_WARN_AGGALLOC), TRUE);
345 EnableWindow (GetDlgItem (hDlg, IDC_SVR_WARN_SVCSTOP), TRUE);
346 EnableWindow (GetDlgItem (hDlg, IDC_SVR_WARN_TIMEOUT), TRUE);
347 EnableWindow (GetDlgItem (hDlg, IDC_SVR_WARN_SETNOVLDB), TRUE);
348 EnableWindow (GetDlgItem (hDlg, IDC_SVR_WARN_SETNOSERV), TRUE);
349 EnableWindow (GetDlgItem (hDlg, IDC_SVR_WARN_AGGNOSERV), TRUE);
350 EnableWindow (GetDlgItem (hDlg, IDC_SVR_AUTOREFRESH), TRUE);
351 EnableWindow (GetDlgItem (hDlg, IDC_SVR_AUTOREFRESH_MINUTES), TRUE);
353 CheckDlgButton (hDlg, IDC_SVR_WARN_AGGFULL, (TASKDATA(ptp)->lpsp->perWarnAggFull != 0));
354 CheckDlgButton (hDlg, IDC_SVR_WARN_SETFULL, (TASKDATA(ptp)->lpsp->perWarnSetFull != 0));
355 CheckDlgButton (hDlg, IDC_SVR_WARN_AGGALLOC, TASKDATA(ptp)->lpsp->fWarnAggAlloc);
356 CheckDlgButton (hDlg, IDC_SVR_WARN_SVCSTOP, TASKDATA(ptp)->lpsp->fWarnSvcStop);
357 CheckDlgButton (hDlg, IDC_SVR_WARN_TIMEOUT, TASKDATA(ptp)->lpsp->fWarnSvrTimeout);
358 CheckDlgButton (hDlg, IDC_SVR_WARN_SETNOVLDB, TASKDATA(ptp)->lpsp->fWarnSetNoVLDB);
359 CheckDlgButton (hDlg, IDC_SVR_WARN_SETNOSERV, TASKDATA(ptp)->lpsp->fWarnSetNoServ);
360 CheckDlgButton (hDlg, IDC_SVR_WARN_AGGNOSERV, TASKDATA(ptp)->lpsp->fWarnAggNoServ);
362 CheckDlgButton (hDlg, IDC_SVR_AUTOREFRESH, (TASKDATA(ptp)->lpsp->oa.cTickRefresh != 0));
364 CreateSpinner (GetDlgItem (hDlg, IDC_SVR_AUTOREFRESH_MINUTES),
365 10, FALSE, // base, signed
367 TASKDATA(ptp)->lpsp->oa.cTickRefresh / cmsec1MINUTE,
368 60L * 24L); // maximum refresh rate of one day
370 Server_Scout_OnAutoRefresh (hDlg, lpiServer);
373 CreateSpinner (GetDlgItem (hDlg, IDC_SVR_WARN_AGGFULL_PERCENT),
374 10, FALSE, // base, signed
376 (TASKDATA(ptp)->lpsp->perWarnAggFull == 0) ? perDEFAULT_AGGFULL_WARNING : TASKDATA(ptp)->lpsp->perWarnAggFull,
379 Server_Scout_OnAggWarn (hDlg, lpiServer);
381 CreateSpinner (GetDlgItem (hDlg, IDC_SVR_WARN_SETFULL_PERCENT),
382 10, FALSE, // base, signed
384 (TASKDATA(ptp)->lpsp->perWarnSetFull == 0) ? perDEFAULT_SETFULL_WARNING : TASKDATA(ptp)->lpsp->perWarnSetFull,
387 Server_Scout_OnSetWarn (hDlg, lpiServer);
392 void Server_Scout_OnApply (HWND hDlg, LPIDENT lpiServer)
394 LPSVR_SCOUT_APPLY_PACKET lpp;
396 if ((lpp = New (SVR_SCOUT_APPLY_PACKET)) != NULL)
398 lpp->lpiServer = lpiServer;
400 lpp->fIDC_SVR_WARN_AGGFULL = IsDlgButtonChecked (hDlg, IDC_SVR_WARN_AGGFULL);
401 lpp->wIDC_SVR_WARN_AGGFULL_PERCENT = (short)SP_GetPos (GetDlgItem (hDlg, IDC_SVR_WARN_AGGFULL_PERCENT));
403 lpp->fIDC_SVR_WARN_SETFULL = IsDlgButtonChecked (hDlg, IDC_SVR_WARN_SETFULL);
404 lpp->wIDC_SVR_WARN_SETFULL_PERCENT = (short)SP_GetPos (GetDlgItem (hDlg, IDC_SVR_WARN_SETFULL_PERCENT));
406 lpp->fIDC_SVR_WARN_AGGALLOC = IsDlgButtonChecked (hDlg, IDC_SVR_WARN_AGGALLOC);
407 lpp->fIDC_SVR_WARN_SVCSTOP = IsDlgButtonChecked (hDlg, IDC_SVR_WARN_SVCSTOP);
408 lpp->fIDC_SVR_WARN_TIMEOUT = IsDlgButtonChecked (hDlg, IDC_SVR_WARN_TIMEOUT);
409 lpp->fIDC_SVR_WARN_SETNOVLDB = IsDlgButtonChecked (hDlg, IDC_SVR_WARN_SETNOVLDB);
410 lpp->fIDC_SVR_WARN_SETNOSERV = IsDlgButtonChecked (hDlg, IDC_SVR_WARN_SETNOSERV);
411 lpp->fIDC_SVR_WARN_AGGNOSERV = IsDlgButtonChecked (hDlg, IDC_SVR_WARN_AGGNOSERV);
413 lpp->fIDC_SVR_AUTOREFRESH = IsDlgButtonChecked (hDlg, IDC_SVR_AUTOREFRESH);
414 lpp->dwIDC_SVR_AUTOREFRESH_MINUTES = SP_GetPos (GetDlgItem (hDlg, IDC_SVR_AUTOREFRESH_MINUTES));
416 StartTask (taskSVR_SCOUT_APPLY, hDlg, lpp);
421 void Server_Scout_OnEndTask_Apply (HWND hDlg, LPTASKPACKET ptp)
425 LPIDENT lpiServer = (LPIDENT)GetWindowLong (hDlg, DWL_USER);
427 TCHAR szText[ cchNAME ];
428 lpiServer->GetServerName (szText);
429 ErrorDialog (ptp->status, IDS_ERROR_CHANGE_SERVER_STATUS, TEXT("%s"), szText);
434 void Server_Scout_OnAggWarn (HWND hDlg, LPIDENT lpiServer)
436 EnableWindow (GetDlgItem (hDlg, IDC_SVR_WARN_AGGFULL_PERCENT),
437 IsDlgButtonChecked (hDlg, IDC_SVR_WARN_AGGFULL));
441 void Server_Scout_OnSetWarn (HWND hDlg, LPIDENT lpiServer)
443 EnableWindow (GetDlgItem (hDlg, IDC_SVR_WARN_SETFULL_PERCENT),
444 IsDlgButtonChecked (hDlg, IDC_SVR_WARN_SETFULL));
448 void Server_Scout_OnAutoRefresh (HWND hDlg, LPIDENT lpiServer)
450 EnableWindow (GetDlgItem (hDlg, IDC_SVR_AUTOREFRESH_MINUTES),
451 IsDlgButtonChecked (hDlg, IDC_SVR_AUTOREFRESH));