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
14 #include <afsconfig.h>
15 #include <afs/param.h>
21 #include "svr_address.h"
22 #include "svr_general.h"
24 #include "propcache.h"
29 * PROTOTYPES _________________________________________________________________
33 BOOL CALLBACK Server_General_DlgProc (HWND hDlg, UINT msg, WPARAM wp, LPARAM lp);
34 BOOL CALLBACK Server_Scout_DlgProc (HWND hDlg, UINT msg, WPARAM wp, LPARAM lp);
36 void Server_General_OnInitDialog (HWND hDlg, LPIDENT lpiServer);
37 void Server_General_OnEndTask_InitDialog (HWND hDlg, LPIDENT lpiServer, LPTASKPACKET ptp);
38 void Server_General_OnAuth (HWND hDlg, LPIDENT lpiServer, BOOL fEnableAuth);
39 void Server_General_OnChangeAddr (HWND hDlg, LPIDENT lpiServer);
41 void Server_Scout_OnInitDialog (HWND hDlg, LPIDENT lpiServer);
42 void Server_Scout_OnApply (HWND hDlg, LPIDENT lpiServer);
43 void Server_Scout_OnAggWarn (HWND hDlg, LPIDENT lpiServer);
44 void Server_Scout_OnSetWarn (HWND hDlg, LPIDENT lpiServer);
45 void Server_Scout_OnAutoRefresh (HWND hDlg, LPIDENT lpiServer);
46 void Server_Scout_OnEndTask_InitDialog (HWND hDlg, LPTASKPACKET ptp);
47 void Server_Scout_OnEndTask_Apply (HWND hDlg, LPTASKPACKET ptp);
51 * ROUTINES ___________________________________________________________________
55 void Server_ShowProperties (LPIDENT lpiServer, size_t nAlerts)
59 if ((hCurrent = PropCache_Search (pcSVR_PROP, lpiServer)) != NULL)
65 TCHAR szName[ cchNAME ];
66 lpiServer->GetServerName (szName);
67 LPTSTR pszTitle = FormatString (IDS_SVR_PROP_TITLE, TEXT("%s"), szName);
69 LPPROPSHEET psh = PropSheet_Create (pszTitle, FALSE);
70 psh->fMadeCaption = TRUE;
72 if ( (PropSheet_AddProblemsTab (psh, IDD_SVR_PROBLEMS, lpiServer, nAlerts)) &&
73 (PropSheet_AddTab (psh, IDS_SVR_GENERAL_TAB, IDD_SVR_GENERAL, (DLGPROC)Server_General_DlgProc, (LPARAM)lpiServer, TRUE)) &&
74 (PropSheet_AddTab (psh, IDS_SVR_SCOUT_TAB, IDD_SVR_SCOUT, (DLGPROC)Server_Scout_DlgProc, (LPARAM)lpiServer, TRUE)) )
76 PropSheet_ShowModeless (psh);
82 BOOL CALLBACK Server_General_DlgProc (HWND hDlg, UINT msg, WPARAM wp, LPARAM lp)
84 if (AfsAppLib_HandleHelp (IDD_SVR_GENERAL, hDlg, msg, wp, lp))
87 if (msg == WM_INITDIALOG)
88 SetWindowLongPtr (hDlg, DWLP_USER, ((LPPROPSHEETPAGE)lp)->lParam);
90 LPIDENT lpiServer = (LPIDENT)GetWindowLongPtr (hDlg, DWLP_USER);
94 case WM_INITDIALOG_SHEET:
95 PropCache_Add (pcSVR_PROP, (LPIDENT)lp, hDlg);
98 case WM_DESTROY_SHEET:
99 PropCache_Delete (hDlg);
103 Server_General_OnInitDialog (hDlg, lpiServer);
104 StartTask (taskSVR_PROP_INIT, hDlg, lpiServer);
108 SetWindowLongPtr (hDlg, DWLP_USER, 0);
113 if ((ptp = (LPTASKPACKET)lp) != NULL)
115 if (ptp->idTask == taskSVR_PROP_INIT)
116 Server_General_OnEndTask_InitDialog (hDlg, lpiServer, ptp);
117 FreeTaskPacket (ptp);
128 case IDC_SVR_AUTH_YES:
129 Server_General_OnAuth (hDlg, lpiServer, TRUE);
132 case IDC_SVR_AUTH_NO:
133 Server_General_OnAuth (hDlg, lpiServer, FALSE);
136 case IDC_SVR_CHANGEADDR:
137 Server_General_OnChangeAddr (hDlg, lpiServer);
142 case WM_CTLCOLORLISTBOX:
143 if ((HWND)lp == GetDlgItem (hDlg, IDC_SVR_ADDRESSES))
145 SetBkColor ((HDC)wp, GetSysColor (COLOR_BTNFACE));
146 return CreateSolidBrush (GetSysColor (COLOR_BTNFACE))?TRUE:FALSE;
155 void Server_General_OnInitDialog (HWND hDlg, LPIDENT lpiServer)
157 TCHAR szText[ cchRESOURCE ];
158 lpiServer->GetServerName (szText);
159 SetDlgItemText (hDlg, IDC_SVR_NAME, szText);
161 EnableWindow (GetDlgItem (hDlg, IDC_SVR_AUTH_YES), FALSE);
162 EnableWindow (GetDlgItem (hDlg, IDC_SVR_AUTH_NO), FALSE);
163 EnableWindow (GetDlgItem (hDlg, IDC_SVR_CHANGEADDR), FALSE);
167 void Server_General_OnEndTask_InitDialog (HWND hDlg, LPIDENT lpiServer, LPTASKPACKET ptp)
169 TCHAR szText[ cchRESOURCE ];
172 GetString (szText, IDS_UNKNOWN);
173 SetDlgItemText (hDlg, IDC_SVR_NUMAGGREGATES, szText);
174 SetDlgItemText (hDlg, IDC_SVR_CAPACITY, szText);
175 SetDlgItemText (hDlg, IDC_SVR_ALLOCATION, szText);
177 LB_StartChange (GetDlgItem (hDlg, IDC_SVR_ADDRESSES), TRUE);
178 LB_AddItem (GetDlgItem (hDlg, IDC_SVR_ADDRESSES), szText, (LPARAM)-1);
179 LB_EndChange (GetDlgItem (hDlg, IDC_SVR_ADDRESSES), (LPARAM)-1);
181 lpiServer->GetServerName (szText);
182 ErrorDialog (ptp->status, IDS_ERROR_REFRESH_SERVER_STATUS, TEXT("%s"), szText);
186 EnableWindow (GetDlgItem (hDlg, IDC_SVR_AUTH_YES), TRUE);
187 EnableWindow (GetDlgItem (hDlg, IDC_SVR_AUTH_NO), TRUE);
188 EnableWindow (GetDlgItem (hDlg, IDC_SVR_CHANGEADDR), TRUE);
190 wsprintf (szText, TEXT("%lu"), TASKDATA(ptp)->nAggr);
191 SetDlgItemText (hDlg, IDC_SVR_NUMAGGREGATES, szText);
193 LPTSTR pszText = FormatString (IDS_SVR_CAPACITY, TEXT("%.1B"), (double)TASKDATA(ptp)->ckCapacity * 1024.0);
194 SetDlgItemText (hDlg, IDC_SVR_CAPACITY, pszText);
195 FreeString (pszText);
197 DWORD dwPercentUsed = 100;
198 if (TASKDATA(ptp)->ckCapacity)
199 dwPercentUsed = (DWORD)( (double)100 * TASKDATA(ptp)->ckAllocation / TASKDATA(ptp)->ckCapacity );
200 pszText = FormatString (IDS_SVR_ALLOCATION, TEXT("%.1B%lu"), (double)TASKDATA(ptp)->ckAllocation * 1024.0, dwPercentUsed);
201 SetDlgItemText (hDlg, IDC_SVR_ALLOCATION, pszText);
202 FreeString (pszText);
204 Server_FillAddrList (hDlg, &TASKDATA(ptp)->ss);
210 void Server_General_OnAuth (HWND hDlg, LPIDENT lpiServer, BOOL fEnable)
214 if (Message (MB_YESNO | MB_ICONASTERISK, IDS_WARN_TITLE, IDS_WARN_DISABLE_AUTH) != IDYES)
218 LPSVR_SETAUTH_PARAMS lpp = New (SVR_SETAUTH_PARAMS);
219 lpp->lpiServer = lpiServer;
220 lpp->fEnableAuth = fEnable;
221 StartTask (taskSVR_SETAUTH, NULL, lpp);
225 void Server_General_OnChangeAddr (HWND hDlg, LPIDENT lpiServer)
227 LPSVR_CHANGEADDR_PARAMS lpp = New (SVR_CHANGEADDR_PARAMS);
228 memset (lpp, 0x00, sizeof(SVR_CHANGEADDR_PARAMS));
229 lpp->lpiServer = lpiServer;
231 if (ModalDialogParam (IDD_SVR_ADDRESS, hDlg, (DLGPROC)ChangeAddr_DlgProc, (LPARAM)lpp) == IDOK)
233 StartTask (taskSVR_CHANGEADDR, NULL, lpp);
242 BOOL CALLBACK Server_Scout_DlgProc (HWND hDlg, UINT msg, WPARAM wp, LPARAM lp)
244 if (AfsAppLib_HandleHelp (IDD_SVR_SCOUT, hDlg, msg, wp, lp))
247 if (msg == WM_INITDIALOG)
248 SetWindowLongPtr (hDlg, DWLP_USER, ((LPPROPSHEETPAGE)lp)->lParam);
250 LPIDENT lpiServer = (LPIDENT)GetWindowLongPtr (hDlg, DWLP_USER);
255 Server_Scout_OnInitDialog (hDlg, lpiServer);
256 StartTask (taskSVR_SCOUT_INIT, hDlg, lpiServer);
261 if ((ptp = (LPTASKPACKET)lp) != NULL)
263 if (ptp->idTask == taskSVR_SCOUT_INIT)
264 Server_Scout_OnEndTask_InitDialog (hDlg, ptp);
265 else if (ptp->idTask == taskSVR_SCOUT_APPLY)
266 Server_Scout_OnEndTask_Apply (hDlg, ptp);
267 FreeTaskPacket (ptp);
279 Server_Scout_OnApply (hDlg, lpiServer);
282 case IDC_SVR_WARN_AGGFULL:
283 Server_Scout_OnAggWarn (hDlg, lpiServer);
284 PropSheetChanged (hDlg);
287 case IDC_SVR_WARN_SETFULL:
288 Server_Scout_OnSetWarn (hDlg, lpiServer);
289 PropSheetChanged (hDlg);
292 case IDC_SVR_WARN_AGGALLOC:
293 case IDC_SVR_WARN_SVCSTOP:
294 case IDC_SVR_WARN_TIMEOUT:
295 case IDC_SVR_WARN_SETNOVLDB:
296 case IDC_SVR_WARN_SETNOSERV:
297 case IDC_SVR_WARN_AGGFULL_PERCENT:
298 case IDC_SVR_WARN_SETFULL_PERCENT:
299 case IDC_SVR_AUTOREFRESH_MINUTES:
300 PropSheetChanged (hDlg);
303 case IDC_SVR_AUTOREFRESH:
304 Server_Scout_OnAutoRefresh (hDlg, lpiServer);
305 PropSheetChanged (hDlg);
315 void Server_Scout_OnInitDialog (HWND hDlg, LPIDENT lpiServer)
317 EnableWindow (GetDlgItem (hDlg, IDC_SVR_WARN_AGGFULL), FALSE);
318 EnableWindow (GetDlgItem (hDlg, IDC_SVR_WARN_AGGFULL_PERCENT), FALSE);
319 EnableWindow (GetDlgItem (hDlg, IDC_SVR_WARN_SETFULL), FALSE);
320 EnableWindow (GetDlgItem (hDlg, IDC_SVR_WARN_SETFULL_PERCENT), FALSE);
321 EnableWindow (GetDlgItem (hDlg, IDC_SVR_WARN_AGGALLOC), FALSE);
322 EnableWindow (GetDlgItem (hDlg, IDC_SVR_WARN_SVCSTOP), FALSE);
323 EnableWindow (GetDlgItem (hDlg, IDC_SVR_WARN_TIMEOUT), FALSE);
324 EnableWindow (GetDlgItem (hDlg, IDC_SVR_WARN_SETNOVLDB), FALSE);
325 EnableWindow (GetDlgItem (hDlg, IDC_SVR_WARN_SETNOSERV), FALSE);
326 EnableWindow (GetDlgItem (hDlg, IDC_SVR_WARN_AGGNOSERV), FALSE);
327 EnableWindow (GetDlgItem (hDlg, IDC_SVR_AUTOREFRESH), FALSE);
328 EnableWindow (GetDlgItem (hDlg, IDC_SVR_AUTOREFRESH_MINUTES), FALSE);
332 void Server_Scout_OnEndTask_InitDialog (HWND hDlg, LPTASKPACKET ptp)
334 LPIDENT lpiServer = (LPIDENT)GetWindowLongPtr (hDlg, DWLP_USER);
338 TCHAR szText[ cchNAME ];
339 lpiServer->GetServerName (szText);
340 ErrorDialog (ptp->status, IDS_ERROR_REFRESH_SERVER_STATUS, TEXT("%s"), szText);
344 EnableWindow (GetDlgItem (hDlg, IDC_SVR_WARN_AGGFULL), TRUE);
345 EnableWindow (GetDlgItem (hDlg, IDC_SVR_WARN_AGGFULL_PERCENT), TRUE);
346 EnableWindow (GetDlgItem (hDlg, IDC_SVR_WARN_SETFULL), TRUE);
347 EnableWindow (GetDlgItem (hDlg, IDC_SVR_WARN_SETFULL_PERCENT), TRUE);
348 EnableWindow (GetDlgItem (hDlg, IDC_SVR_WARN_AGGALLOC), TRUE);
349 EnableWindow (GetDlgItem (hDlg, IDC_SVR_WARN_SVCSTOP), TRUE);
350 EnableWindow (GetDlgItem (hDlg, IDC_SVR_WARN_TIMEOUT), TRUE);
351 EnableWindow (GetDlgItem (hDlg, IDC_SVR_WARN_SETNOVLDB), TRUE);
352 EnableWindow (GetDlgItem (hDlg, IDC_SVR_WARN_SETNOSERV), TRUE);
353 EnableWindow (GetDlgItem (hDlg, IDC_SVR_WARN_AGGNOSERV), TRUE);
354 EnableWindow (GetDlgItem (hDlg, IDC_SVR_AUTOREFRESH), TRUE);
355 EnableWindow (GetDlgItem (hDlg, IDC_SVR_AUTOREFRESH_MINUTES), TRUE);
357 CheckDlgButton (hDlg, IDC_SVR_WARN_AGGFULL, (TASKDATA(ptp)->lpsp->perWarnAggFull != 0));
358 CheckDlgButton (hDlg, IDC_SVR_WARN_SETFULL, (TASKDATA(ptp)->lpsp->perWarnSetFull != 0));
359 CheckDlgButton (hDlg, IDC_SVR_WARN_AGGALLOC, TASKDATA(ptp)->lpsp->fWarnAggAlloc);
360 CheckDlgButton (hDlg, IDC_SVR_WARN_SVCSTOP, TASKDATA(ptp)->lpsp->fWarnSvcStop);
361 CheckDlgButton (hDlg, IDC_SVR_WARN_TIMEOUT, TASKDATA(ptp)->lpsp->fWarnSvrTimeout);
362 CheckDlgButton (hDlg, IDC_SVR_WARN_SETNOVLDB, TASKDATA(ptp)->lpsp->fWarnSetNoVLDB);
363 CheckDlgButton (hDlg, IDC_SVR_WARN_SETNOSERV, TASKDATA(ptp)->lpsp->fWarnSetNoServ);
364 CheckDlgButton (hDlg, IDC_SVR_WARN_AGGNOSERV, TASKDATA(ptp)->lpsp->fWarnAggNoServ);
366 CheckDlgButton (hDlg, IDC_SVR_AUTOREFRESH, (TASKDATA(ptp)->lpsp->oa.cTickRefresh != 0));
368 CreateSpinner (GetDlgItem (hDlg, IDC_SVR_AUTOREFRESH_MINUTES),
369 10, FALSE, // base, signed
371 TASKDATA(ptp)->lpsp->oa.cTickRefresh / cmsec1MINUTE,
372 60L * 24L); // maximum refresh rate of one day
374 Server_Scout_OnAutoRefresh (hDlg, lpiServer);
377 CreateSpinner (GetDlgItem (hDlg, IDC_SVR_WARN_AGGFULL_PERCENT),
378 10, FALSE, // base, signed
380 (TASKDATA(ptp)->lpsp->perWarnAggFull == 0) ? perDEFAULT_AGGFULL_WARNING : TASKDATA(ptp)->lpsp->perWarnAggFull,
383 Server_Scout_OnAggWarn (hDlg, lpiServer);
385 CreateSpinner (GetDlgItem (hDlg, IDC_SVR_WARN_SETFULL_PERCENT),
386 10, FALSE, // base, signed
388 (TASKDATA(ptp)->lpsp->perWarnSetFull == 0) ? perDEFAULT_SETFULL_WARNING : TASKDATA(ptp)->lpsp->perWarnSetFull,
391 Server_Scout_OnSetWarn (hDlg, lpiServer);
396 void Server_Scout_OnApply (HWND hDlg, LPIDENT lpiServer)
398 LPSVR_SCOUT_APPLY_PACKET lpp;
400 if ((lpp = New (SVR_SCOUT_APPLY_PACKET)) != NULL)
402 lpp->lpiServer = lpiServer;
404 lpp->fIDC_SVR_WARN_AGGFULL = IsDlgButtonChecked (hDlg, IDC_SVR_WARN_AGGFULL);
405 lpp->wIDC_SVR_WARN_AGGFULL_PERCENT = (short)SP_GetPos (GetDlgItem (hDlg, IDC_SVR_WARN_AGGFULL_PERCENT));
407 lpp->fIDC_SVR_WARN_SETFULL = IsDlgButtonChecked (hDlg, IDC_SVR_WARN_SETFULL);
408 lpp->wIDC_SVR_WARN_SETFULL_PERCENT = (short)SP_GetPos (GetDlgItem (hDlg, IDC_SVR_WARN_SETFULL_PERCENT));
410 lpp->fIDC_SVR_WARN_AGGALLOC = IsDlgButtonChecked (hDlg, IDC_SVR_WARN_AGGALLOC);
411 lpp->fIDC_SVR_WARN_SVCSTOP = IsDlgButtonChecked (hDlg, IDC_SVR_WARN_SVCSTOP);
412 lpp->fIDC_SVR_WARN_TIMEOUT = IsDlgButtonChecked (hDlg, IDC_SVR_WARN_TIMEOUT);
413 lpp->fIDC_SVR_WARN_SETNOVLDB = IsDlgButtonChecked (hDlg, IDC_SVR_WARN_SETNOVLDB);
414 lpp->fIDC_SVR_WARN_SETNOSERV = IsDlgButtonChecked (hDlg, IDC_SVR_WARN_SETNOSERV);
415 lpp->fIDC_SVR_WARN_AGGNOSERV = IsDlgButtonChecked (hDlg, IDC_SVR_WARN_AGGNOSERV);
417 lpp->fIDC_SVR_AUTOREFRESH = IsDlgButtonChecked (hDlg, IDC_SVR_AUTOREFRESH);
418 lpp->dwIDC_SVR_AUTOREFRESH_MINUTES = SP_GetPos (GetDlgItem (hDlg, IDC_SVR_AUTOREFRESH_MINUTES));
420 StartTask (taskSVR_SCOUT_APPLY, hDlg, lpp);
425 void Server_Scout_OnEndTask_Apply (HWND hDlg, LPTASKPACKET ptp)
429 LPIDENT lpiServer = (LPIDENT)GetWindowLongPtr (hDlg, DWLP_USER);
431 TCHAR szText[ cchNAME ];
432 lpiServer->GetServerName (szText);
433 ErrorDialog (ptp->status, IDS_ERROR_CHANGE_SERVER_STATUS, TEXT("%s"), szText);
438 void Server_Scout_OnAggWarn (HWND hDlg, LPIDENT lpiServer)
440 EnableWindow (GetDlgItem (hDlg, IDC_SVR_WARN_AGGFULL_PERCENT),
441 IsDlgButtonChecked (hDlg, IDC_SVR_WARN_AGGFULL));
445 void Server_Scout_OnSetWarn (HWND hDlg, LPIDENT lpiServer)
447 EnableWindow (GetDlgItem (hDlg, IDC_SVR_WARN_SETFULL_PERCENT),
448 IsDlgButtonChecked (hDlg, IDC_SVR_WARN_SETFULL));
452 void Server_Scout_OnAutoRefresh (HWND hDlg, LPIDENT lpiServer)
454 EnableWindow (GetDlgItem (hDlg, IDC_SVR_AUTOREFRESH_MINUTES),
455 IsDlgButtonChecked (hDlg, IDC_SVR_AUTOREFRESH));