aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKevin Coffman <kwc@citi.umich.edu>2006-11-29 00:42:42 +0000
committerKevin Coffman <kwc@citi.umich.edu>2006-11-29 00:42:42 +0000
commitc93b25d95d2570d2d0730a56c3e1f81a48f7a588 (patch)
treefdeceeba977686e2e7acbdb77cb2cfb0d3d08461
parent6c761376d8848c1cc0d7c9bb0df7de971b1147d5 (diff)
downloadkrb5-c93b25d95d2570d2d0730a56c3e1f81a48f7a588.zip
krb5-c93b25d95d2570d2d0730a56c3e1f81a48f7a588.tar.gz
krb5-c93b25d95d2570d2d0730a56c3e1f81a48f7a588.tar.bz2
Pullup changes r18861:r18873 from the trunk
git-svn-id: svn://anonsvn.mit.edu/krb5/users/coffman/pkinit@18874 dc483132-0cff-0310-8789-dd5450dbe970
-rw-r--r--src/kdc/kdc_preauth.c20
-rw-r--r--src/lib/krb5/krb/copy_data.c2
-rw-r--r--src/plugins/kdb/ldap/libkdb_ldap/Makefile.in4
-rw-r--r--src/windows/identity/config/Makefile.w2k2
-rw-r--r--src/windows/identity/config/Makefile.w322
-rwxr-xr-xsrc/windows/identity/doc/netidmgr.docbin1696768 -> 3294720 bytes
-rwxr-xr-xsrc/windows/identity/doc/netidmgr.pdfbin1400417 -> 1345437 bytes
-rw-r--r--src/windows/identity/help/html/concept_identity.htm9
-rw-r--r--src/windows/identity/help/html/images/screen_app_icon.bmpbin144666 -> 143574 bytes
-rw-r--r--src/windows/identity/help/html/images/screen_config_general.bmpbin0 -> 634974 bytes
-rw-r--r--src/windows/identity/help/html/images/screen_config_ident.bmpbin0 -> 634974 bytes
-rw-r--r--src/windows/identity/help/html/images/screen_config_idents.bmpbin0 -> 634974 bytes
-rw-r--r--src/windows/identity/help/html/images/screen_main_wnd.bmpbin915894 -> 1070434 bytes
-rw-r--r--src/windows/identity/help/html/images/screen_menu_view_cols.bmpbin891854 -> 617742 bytes
-rwxr-xr-xsrc/windows/identity/help/html/images/screen_new_creds.bmpbin414558 -> 409086 bytes
-rwxr-xr-xsrc/windows/identity/help/html/images/screen_new_creds_exp.bmpbin534694 -> 531414 bytes
-rw-r--r--src/windows/identity/help/html/use_config.htm132
-rw-r--r--src/windows/identity/help/html/use_layout.htm10
-rw-r--r--src/windows/identity/help/html/using.htm1
-rw-r--r--src/windows/identity/help/html/wnd_main.htm23
-rw-r--r--src/windows/identity/help/toc.hhc5
-rw-r--r--src/windows/identity/plugins/krb4/krb4configdlg.c141
-rw-r--r--src/windows/identity/plugins/krb4/krb4funcs.c24
-rw-r--r--src/windows/identity/plugins/krb4/krb4funcs.h3
-rw-r--r--src/windows/identity/plugins/krb4/krb4plugin.c9
-rw-r--r--src/windows/identity/plugins/krb4/krbconfig.csv1
-rw-r--r--src/windows/identity/plugins/krb4/lang/en_us/langres.rc37
-rw-r--r--src/windows/identity/plugins/krb5/krb5configdlg.c141
-rw-r--r--src/windows/identity/plugins/krb5/krb5configid.c3
-rw-r--r--src/windows/identity/plugins/krb5/krb5funcs.c27
-rw-r--r--src/windows/identity/plugins/krb5/lang/en_us/langres.rc20
-rw-r--r--src/windows/identity/plugins/krb5/langres.h1
-rw-r--r--src/windows/identity/ui/addrchange.c4
33 files changed, 523 insertions, 98 deletions
diff --git a/src/kdc/kdc_preauth.c b/src/kdc/kdc_preauth.c
index 9994ae3..6c362d9 100644
--- a/src/kdc/kdc_preauth.c
+++ b/src/kdc/kdc_preauth.c
@@ -394,10 +394,22 @@ load_preauth_plugins(krb5_context context)
* from the list of modules we'll be using. */
if (j == 0) {
server_init_proc = ftable->init_proc;
- if ((server_init_proc != NULL) &&
- ((*server_init_proc)(context, &plugin_context) != 0)) {
- memset(&preauth_systems[k], 0, sizeof(preauth_systems[k]));
- continue;
+ if (server_init_proc != NULL) {
+ krb5_error_code initerr;
+ initerr = (*server_init_proc)(context, &plugin_context);
+ if (initerr) {
+ const char *emsg;
+ emsg = krb5_get_error_message(context, initerr);
+ if (emsg) {
+ krb5_klog_syslog(LOG_ERR,
+ "preauth %s failed to initialize: %s",
+ ftable->name, emsg);
+ krb5_free_error_message(context, emsg);
+ }
+ memset(&preauth_systems[k], 0, sizeof(preauth_systems[k]));
+
+ break; /* skip all modules in this plugin */
+ }
}
}
preauth_systems[k].name = ftable->name;
diff --git a/src/lib/krb5/krb/copy_data.c b/src/lib/krb5/krb/copy_data.c
index 1be2a2d..aed2e86 100644
--- a/src/lib/krb5/krb/copy_data.c
+++ b/src/lib/krb5/krb/copy_data.c
@@ -65,12 +65,10 @@ krb5int_copy_data_contents(krb5_context context, const krb5_data *indata, krb5_d
if (!indata) {
return EINVAL;
}
-
outdata->length = indata->length;
if (outdata->length) {
if (!(outdata->data = malloc(outdata->length))) {
- krb5_xfree(outdata);
return ENOMEM;
}
memcpy((char *)outdata->data, (char *)indata->data, outdata->length);
diff --git a/src/plugins/kdb/ldap/libkdb_ldap/Makefile.in b/src/plugins/kdb/ldap/libkdb_ldap/Makefile.in
index 2ffdfb6..fc4624c 100644
--- a/src/plugins/kdb/ldap/libkdb_ldap/Makefile.in
+++ b/src/plugins/kdb/ldap/libkdb_ldap/Makefile.in
@@ -81,8 +81,8 @@ all-unix:: all-liblinks
install-unix:: install-libs
clean-unix:: clean-liblinks clean-libobjs clean-libs
-# @lib_frag@
-# @libobj_frag@
+@lib_frag@
+@libobj_frag@
# +++ Dependency line eater +++
#
diff --git a/src/windows/identity/config/Makefile.w2k b/src/windows/identity/config/Makefile.w2k
index c3c7f03..b9902bd 100644
--- a/src/windows/identity/config/Makefile.w2k
+++ b/src/windows/identity/config/Makefile.w2k
@@ -47,7 +47,7 @@ KHIMAIRA_WIN32_CONFIG=1
# Version info
NETIDMGR_VERSION_MAJOR=1
NETIDMGR_VERSION_MINOR=1
-NETIDMGR_VERSION_PATCH=6
+NETIDMGR_VERSION_PATCH=8
NETIDMGR_VERSION_AUX=0
NETIDMGR_RELEASEDESC=
diff --git a/src/windows/identity/config/Makefile.w32 b/src/windows/identity/config/Makefile.w32
index e5bb18f..c660426 100644
--- a/src/windows/identity/config/Makefile.w32
+++ b/src/windows/identity/config/Makefile.w32
@@ -47,7 +47,7 @@ KHIMAIRA_WIN32_CONFIG=1
# Version info
NETIDMGR_VERSION_MAJOR=1
NETIDMGR_VERSION_MINOR=1
-NETIDMGR_VERSION_PATCH=6
+NETIDMGR_VERSION_PATCH=8
NETIDMGR_VERSION_AUX=0
NETIDMGR_RELEASEDESC=
diff --git a/src/windows/identity/doc/netidmgr.doc b/src/windows/identity/doc/netidmgr.doc
index 8e9c1e0..41a0cda 100755
--- a/src/windows/identity/doc/netidmgr.doc
+++ b/src/windows/identity/doc/netidmgr.doc
Binary files differ
diff --git a/src/windows/identity/doc/netidmgr.pdf b/src/windows/identity/doc/netidmgr.pdf
index 8ec23bd..f28e577 100755
--- a/src/windows/identity/doc/netidmgr.pdf
+++ b/src/windows/identity/doc/netidmgr.pdf
Binary files differ
diff --git a/src/windows/identity/help/html/concept_identity.htm b/src/windows/identity/help/html/concept_identity.htm
index bb11746..ae2dda0 100644
--- a/src/windows/identity/help/html/concept_identity.htm
+++ b/src/windows/identity/help/html/concept_identity.htm
@@ -20,10 +20,17 @@ considered to belong to that identity.
<p>
</p>
-
<a name="default_identity" />
<h3>Default Identity</h3>
+<p>The default identity is the identity that will be picked up by
+other applications as being the default. For example, an application
+that uses Kerberos 5 can use the credentials found in the default
+Kerberos 5 credentials cache. Therefore, the Kerberos 5 plug-in
+considers the principal that corresponds to the default credentials
+cache as being the default identity.
+</p>
+
<p>
</p>
diff --git a/src/windows/identity/help/html/images/screen_app_icon.bmp b/src/windows/identity/help/html/images/screen_app_icon.bmp
index 78fd535..49e2fb0 100644
--- a/src/windows/identity/help/html/images/screen_app_icon.bmp
+++ b/src/windows/identity/help/html/images/screen_app_icon.bmp
Binary files differ
diff --git a/src/windows/identity/help/html/images/screen_config_general.bmp b/src/windows/identity/help/html/images/screen_config_general.bmp
new file mode 100644
index 0000000..6c6e57e
--- /dev/null
+++ b/src/windows/identity/help/html/images/screen_config_general.bmp
Binary files differ
diff --git a/src/windows/identity/help/html/images/screen_config_ident.bmp b/src/windows/identity/help/html/images/screen_config_ident.bmp
new file mode 100644
index 0000000..2ac15fe
--- /dev/null
+++ b/src/windows/identity/help/html/images/screen_config_ident.bmp
Binary files differ
diff --git a/src/windows/identity/help/html/images/screen_config_idents.bmp b/src/windows/identity/help/html/images/screen_config_idents.bmp
new file mode 100644
index 0000000..8f55a05
--- /dev/null
+++ b/src/windows/identity/help/html/images/screen_config_idents.bmp
Binary files differ
diff --git a/src/windows/identity/help/html/images/screen_main_wnd.bmp b/src/windows/identity/help/html/images/screen_main_wnd.bmp
index 77ab8be..0763318 100644
--- a/src/windows/identity/help/html/images/screen_main_wnd.bmp
+++ b/src/windows/identity/help/html/images/screen_main_wnd.bmp
Binary files differ
diff --git a/src/windows/identity/help/html/images/screen_menu_view_cols.bmp b/src/windows/identity/help/html/images/screen_menu_view_cols.bmp
index 75775e2..25779bf 100644
--- a/src/windows/identity/help/html/images/screen_menu_view_cols.bmp
+++ b/src/windows/identity/help/html/images/screen_menu_view_cols.bmp
Binary files differ
diff --git a/src/windows/identity/help/html/images/screen_new_creds.bmp b/src/windows/identity/help/html/images/screen_new_creds.bmp
index 7d7335a..bf5be31 100755
--- a/src/windows/identity/help/html/images/screen_new_creds.bmp
+++ b/src/windows/identity/help/html/images/screen_new_creds.bmp
Binary files differ
diff --git a/src/windows/identity/help/html/images/screen_new_creds_exp.bmp b/src/windows/identity/help/html/images/screen_new_creds_exp.bmp
index b1711a7..5caa632 100755
--- a/src/windows/identity/help/html/images/screen_new_creds_exp.bmp
+++ b/src/windows/identity/help/html/images/screen_new_creds_exp.bmp
Binary files differ
diff --git a/src/windows/identity/help/html/use_config.htm b/src/windows/identity/help/html/use_config.htm
new file mode 100644
index 0000000..6d4cbeb
--- /dev/null
+++ b/src/windows/identity/help/html/use_config.htm
@@ -0,0 +1,132 @@
+<html>
+<head>
+ <title>Configuring NetIDMgr and identities</title>
+ <meta name="description" content="">
+ <meta name="keywords" content="configuration">
+ <link rel="stylesheet" type="text/css" href="nidmgr.css">
+</head>
+<body>
+
+<h1>Configuring NetIDMgr and identities</h1>
+
+<p>All NetIDMgr configuration options can be accessed via the <span
+class="pre">Options</span> menu. The available configuration panels
+are:
+</p>
+
+<p>
+<ul>
+ <li><p><span class="title">General</span>: General application options
+ for NetIDMgr.</p>
+
+ <ul>
+
+ <li><p><span class="title">Obtain new credentials at
+ startup</span>: If checked, NetIDMgr will check there are initial
+ credentials for the default identity. If no such credentials are
+ found, NetIDMgr will display a new credentials dialog.</p> </li>
+
+ <li><p><span class="title">Run NetIDMgr in system tray after
+ window close</span>: If checked, NetIDMgr will continue running in
+ the system notification area (sometimes referred to as the system
+ tray) after you close the NetIDMgr window.</p> </li>
+
+ <li><p><span class="title">Monitor network connectivity</span>: When
+ changes to network connectivity are detected, NetIDMgr can notify
+ individual plug-ins about these changes. Doing so allows each
+ plug-in to respond to the change by obtaining new credentials etc.
+ If this option is cleared, no such notifications are sent and the
+ application would not respond to network changes.</p></li>
+
+ <li><p><span class="title">Log trace events</span>: NetIDMgr can
+ generate debugging information during the course of performing
+ certain actions. This information aids the developers in fixing
+ problems that you may encounter while using NetIDMgr.</p> </li>
+
+ </ul>
+
+ </li>
+
+ <li><p><span class="title">Appearance</span>: Allows you to set the
+ font used by NetIDMgr.</p></li>
+
+ <li><p><span class="title">Identities</span>: Default settings for all
+ identities and settings for each identity. Details <a
+ href="#cfg_idents">below</a>.</p></li>
+
+ <li><p><span class="title">Notifications</span>: Notification and timer
+ options. NetIDMgr can issue warnings when credentials are about to
+ expire. This configuration panel allows you to set the thresholds at
+ which these warnings are issued. For example, if the warning
+ timeout is set for 10 minutes, NetIDMgr will issue a warning 10
+ minutes before a credential expires.</p>
+
+ <p>The panel also allows you to control the credentials renew timer.
+ If the timer is disabled, NetIDMgr will not automatically attempt to
+ renew credentials. If the <span class="pre">Renew at half life
+ intervals when possible</span> option is set, then the timer will
+ expire after the credential has less than half its lifetime left.
+ If the renewal operation fails, it will attempt another renwal after
+ half of the remaining liftime is over (i.e. when the credential has
+ less than 1/4 of its original lifetime left) and so on.
+ </p>
+
+ </li>
+
+ <li><p><span class="title">Plugins</span>: Enable/disable and check
+ the status of registered plug-ins. Enabling or disabling a plug-in
+ only takes effect after a restart of NetIDMgr.</p></li>
+
+</ul>
+</p>
+
+<p><img src="images/screen_config_general.bmp" />
+</p>
+
+<a name="cfg_idents" />
+<h3>Configuration of default settings for all identities</h3>
+
+<p>The <span class="pre">Identities</span> configuration panel allows
+you to set the defaults that will be used for all identities.
+However, most of the settings displayed here can be overridden with
+specific per-identity settings.
+</p>
+
+<p>The panel will have a number of sub panels (or tabs) corresponding
+to each plug-in that maintains per-identity configuration.
+</p>
+
+<p>A list of identities for which configuration information is
+maintained will be shown under the main <span
+class="pre">Identities</span> configuration panel name. Each of these
+correspond to a <a href="#cfg_ident">per identity</a> configuration
+panel.
+</p>
+
+<p>Note that adding or removing an identity in the configuration panel
+only has the effect of adding or removing the identity to or from the
+list of identities for which configuration information is maintained.
+</p>
+
+<p><img src="images/screen_config_idents.bmp" />
+</p>
+
+<a name="cfg_ident" />
+<h3>Per identity configuration</h3>
+
+<p>You can access the per-identity configuration panel for a specific
+identity by selecting the identity name from the list of configuration
+panels in the configuration dialog.
+</p>
+
+<p>These panels are similar to the <span class="pre">Identities</span>
+configuration panel, but they change per-identity settings. Changes
+you make in these panels will override the defaults set in the <span
+class="pre">Identities</span> panel.
+</p>
+
+<p><img src="images/screen_config_ident.bmp" />
+</p>
+
+</body>
+</html>
diff --git a/src/windows/identity/help/html/use_layout.htm b/src/windows/identity/help/html/use_layout.htm
index 2d87bc9..7a0d070 100644
--- a/src/windows/identity/help/html/use_layout.htm
+++ b/src/windows/identity/help/html/use_layout.htm
@@ -18,7 +18,7 @@ sorting the list of credentials can be customized. </p>
customizations that can be performed:</p>
<ul>
- <li><a href="#predef">Predefined layouts</a><li>
+ <li><a href="#predef">Predefined layouts</a></li>
<li><a href="#addcol">Adding and removing columns.</a></li>
<li><a href="#sort">Sorting by a column.</a></li>
<li><a href="#group">Grouping by a column.</a></li>
@@ -27,13 +27,13 @@ customizations that can be performed:</p>
<a name="predef" />
<h3>Predefined layouts</h3>
-<p>The predefined layouts in NetIDMgr are: </p>
+<p>The predefined layouts in NetIDMgr are:</p>
<ul>
<li><span class="title">By Identity</span>: Credentials grouped by
- identity and credentials type, and finally sorted by credential
- name.</li>
+ identity, credentials type and location, and finally sorted by
+ credential name.</li>
<li><span class="title">By Type</span>: Credentials grouped by
credentials type and then by identity.</li>
@@ -68,7 +68,7 @@ is shown below.</p>
<p>Clicking on a column header will change the sort order of the
column if it is already being used as a sort key. If the colunm is
not currently being used as a sort key, clicking on the column header
-will start sorting in increasing order by that column. </p>
+will start sorting in increasing order by that column.</p>
<p>Double-clicking a column that is not used for grouping will stop
sorting by that column.</p>
diff --git a/src/windows/identity/help/html/using.htm b/src/windows/identity/help/html/using.htm
index c09558e..96c132c 100644
--- a/src/windows/identity/help/html/using.htm
+++ b/src/windows/identity/help/html/using.htm
@@ -37,6 +37,7 @@ Brief overviews of how to perform common tasks are linked below:
<li><a href="act_renew_creds.htm">Renew credentials</a></li>
<li><a href="act_chpw.htm">Change password</a></li>
<li><a href="use_layout.htm">Managing the credentials view layout</a></li>
+ <li><a href="use_config.htm">Configuring NetIDMgr and identities</a></li>
</ul>
<p>
diff --git a/src/windows/identity/help/html/wnd_main.htm b/src/windows/identity/help/html/wnd_main.htm
index 575e7ba..c4de155 100644
--- a/src/windows/identity/help/html/wnd_main.htm
+++ b/src/windows/identity/help/html/wnd_main.htm
@@ -11,33 +11,12 @@
<p>The main window of Network Identity Manager is structured as follows</p>
-<map id="main_wnd_map">
- <area shape = "rect" coords = "7,34,243,56" href = "menu_all.htm" />
- <area shape = "rect" coords = "6,56,364,90" href = "tb_standard.htm" />
- <area shape = "rect" coords = "6,112,613,164" href = "#cred1" />
- <area shape = "rect" coords = "246,162,288,197" href = "#cred2" />
- <area shape = "rect" coords = "72,196,107,245" href = "#credtype1" />
- <area shape = "rect" coords = "69,278,107,315" href = "#credtype2" />
- <area shape = "rect" coords = "236,332,294,367" href = "#cred3" />
-</map>
-
<img src="images/screen_main_wnd.bmp" usemap="#main_wnd_map"/>
<ol>
<li>Menu bar</li>
<li>Tool bar</li>
-
- <li><a name="cred1" /> An identity with a valid Kerberos 5 initial
- ticket</li>
-
- <li><a name="cred2" /> An identity with valid Kerberos 5 tickets and
- AFS tokens</li>
-
- <li><a name="credtype1" /> A set of Kerberos 5 tickets</li>
-
- <li><a name="credtype2" /> A set of AFS tokens</li>
-
- <li>An identity with expired Kerberos 5 tickets</li>
+ <li>Credentials list</li>
</ol>
diff --git a/src/windows/identity/help/toc.hhc b/src/windows/identity/help/toc.hhc
index c2239b8..6c3876e 100644
--- a/src/windows/identity/help/toc.hhc
+++ b/src/windows/identity/help/toc.hhc
@@ -70,6 +70,11 @@
<param name="Name" value="Managing the credentials view layout">
<param name="Local" value="html\use_layout.htm">
</OBJECT>
+
+ <LI> <OBJECT type="text/sitemap">
+ <param name="Name" value="Configuring NetIDMgr and identities">
+ <param name="Local" value="html\use_config.htm">
+ </OBJECT>
</UL>
<LI> <OBJECT type="text/sitemap">
<param name="Name" value="Menus and Toolbars">
diff --git a/src/windows/identity/plugins/krb4/krb4configdlg.c b/src/windows/identity/plugins/krb4/krb4configdlg.c
index 6c2b02d..94f111c 100644
--- a/src/windows/identity/plugins/krb4/krb4configdlg.c
+++ b/src/windows/identity/plugins/krb4/krb4configdlg.c
@@ -307,6 +307,12 @@ krb4_id_config_proc(HWND hwnd,
return FALSE;
}
+typedef struct tag_k4_config_dlg_data {
+ khui_config_node node;
+ char krb_path[MAX_PATH];
+ char krbrealm_path[MAX_PATH];
+ char tkt_string[MAX_PATH];
+} k4_config_dlg_data;
INT_PTR CALLBACK
krb4_confg_proc(HWND hwnd,
@@ -314,6 +320,9 @@ krb4_confg_proc(HWND hwnd,
WPARAM wParam,
LPARAM lParam) {
+ static BOOL in_init = FALSE;
+ k4_config_dlg_data * d;
+
switch(uMsg) {
case WM_INITDIALOG:
{
@@ -323,8 +332,21 @@ krb4_confg_proc(HWND hwnd,
CHAR ticketName[MAX_PATH];
char * pticketName;
unsigned int krb_path_sz = sizeof(krb_path);
- unsigned int krbrealm_path_sz = sizeof(krbrealm_path);
-
+ unsigned int krbrealm_path_sz = sizeof(krbrealm_path);
+ khm_size cbsize;
+
+ d = PMALLOC(sizeof(*d));
+ ZeroMemory(d, sizeof(*d));
+
+#pragma warning(push)
+#pragma warning(disable: 4244)
+ SetWindowLongPtr(hwnd, DWLP_USER, (LONG_PTR) d);
+#pragma warning(pop)
+
+ d->node = (khui_config_node) lParam;
+
+ in_init = TRUE;
+
// Set KRB.CON
memset(krb_path, '\0', sizeof(krb_path));
if (!pkrb_get_krbconf2(krb_path, &krb_path_sz)) {
@@ -332,6 +354,7 @@ krb4_confg_proc(HWND hwnd,
} else { // normal find
AnsiStrToUnicode(wbuf, sizeof(wbuf), krb_path);
SetDlgItemText(hwnd, IDC_CFG_CFGPATH, wbuf);
+ StringCbCopyA(d->krb_path, sizeof(d->krb_path), krb_path);
}
// Set KRBREALM.CON
@@ -341,26 +364,128 @@ krb4_confg_proc(HWND hwnd,
} else {
AnsiStrToUnicode(wbuf, sizeof(wbuf), krbrealm_path);
SetDlgItemText(hwnd, IDC_CFG_RLMPATH, wbuf);
+ StringCbCopyA(d->krbrealm_path, sizeof(d->krbrealm_path),
+ krbrealm_path);
}
- // Set TICKET.KRB file Editbox
- *ticketName = 0;
- pkrb_set_tkt_string(0);
+ cbsize = sizeof(wbuf);
+ if (KHM_SUCCEEDED(khc_read_string(csp_params, L"TktString",
+ wbuf, &cbsize)) &&
+ wbuf[0] != L'\0') {
+
+ UnicodeStrToAnsi(ticketName, sizeof(ticketName), wbuf);
+
+ } else {
+
+ // Set TICKET.KRB file Editbox
+ *ticketName = 0;
+ pkrb_set_tkt_string(0);
- pticketName = ptkt_string();
- if (pticketName)
- StringCbCopyA(ticketName, sizeof(ticketName), pticketName);
+ pticketName = ptkt_string();
+ if (pticketName)
+ StringCbCopyA(ticketName, sizeof(ticketName), pticketName);
+
+ }
if (!*ticketName) {
// error
} else {
AnsiStrToUnicode(wbuf, sizeof(wbuf), ticketName);
SetDlgItemText(hwnd, IDC_CFG_CACHE, wbuf);
+ StringCbCopyA(d->tkt_string, sizeof(d->tkt_string),
+ ticketName);
}
+
+ in_init = FALSE;
+
+ }
+ break;
+
+ case WM_COMMAND:
+ if (MAKEWPARAM(IDC_CFG_CACHE, EN_CHANGE)) {
+ char tkt_string[MAX_PATH];
+ wchar_t wtkt_string[MAX_PATH];
+
+ if (in_init) {
+ return TRUE;
+ }
+
+ d = (k4_config_dlg_data *) (LONG_PTR)
+ GetWindowLongPtr(hwnd, DWLP_USER);
+
+ if (d == NULL)
+ return TRUE;
+
+ tkt_string[0] = 0;
+ wtkt_string[0] = 0;
+
+ GetDlgItemText(hwnd, IDC_CFG_CACHE,
+ wtkt_string, ARRAYLENGTH(wtkt_string));
+ UnicodeStrToAnsi(tkt_string, sizeof(tkt_string),
+ wtkt_string);
+
+ if (_stricmp(tkt_string, d->tkt_string)) {
+ khui_cfg_set_flags(d->node,
+ KHUI_CNFLAG_MODIFIED,
+ KHUI_CNFLAG_MODIFIED);
+ } else {
+ khui_cfg_set_flags(d->node,
+ 0,
+ KHUI_CNFLAG_MODIFIED);
+ }
+
+ return TRUE;
+ }
+ break;
+
+ case KHUI_WM_CFG_NOTIFY:
+ if (HIWORD(wParam) == WMCFG_APPLY) {
+ wchar_t wtkt_string[MAX_PATH];
+ char tkt_string[MAX_PATH];
+ int t;
+
+ d = (k4_config_dlg_data *) (LONG_PTR)
+ GetWindowLongPtr(hwnd, DWLP_USER);
+
+ if (d == NULL)
+ return TRUE;
+
+ t = GetDlgItemText(hwnd, IDC_CFG_CACHE,
+ wtkt_string, ARRAYLENGTH(wtkt_string));
+ if (t == 0)
+ return TRUE;
+
+ UnicodeStrToAnsi(tkt_string, sizeof(tkt_string), wtkt_string);
+
+ if (_stricmp(tkt_string, d->tkt_string)) {
+
+ pkrb_set_tkt_string(tkt_string);
+
+ khc_write_string(csp_params, L"TktString", wtkt_string);
+
+ khui_cfg_set_flags(d->node,
+ KHUI_CNFLAG_APPLIED,
+ KHUI_CNFLAG_APPLIED |
+ KHUI_CNFLAG_MODIFIED);
+ khm_krb4_list_tickets();
+ } else {
+ khui_cfg_set_flags(d->node,
+ 0,
+ KHUI_CNFLAG_MODIFIED);
+ }
+
+ return TRUE;
}
break;
case WM_DESTROY:
+ d = (k4_config_dlg_data *) (LONG_PTR)
+ GetWindowLongPtr(hwnd, DWLP_USER);
+
+ if (d) {
+ PFREE(d);
+ }
+
break;
}
return FALSE;
diff --git a/src/windows/identity/plugins/krb4/krb4funcs.c b/src/windows/identity/plugins/krb4/krb4funcs.c
index 728d2db..306437a 100644
--- a/src/windows/identity/plugins/krb4/krb4funcs.c
+++ b/src/windows/identity/plugins/krb4/krb4funcs.c
@@ -553,6 +553,28 @@ make_postfix(const char * base,
return ret;
}
+void
+khm_krb4_set_def_tkt_string(void) {
+ wchar_t wtkt_string[MAX_PATH];
+ char tkt_string[MAX_PATH];
+ khm_size cb;
+
+ cb = sizeof(wtkt_string);
+
+ if (KHM_FAILED(khc_read_string(csp_params, L"TktString",
+ wtkt_string, &cb)) ||
+ wtkt_string[0] == L'\0') {
+
+ pkrb_set_tkt_string(0);
+
+ } else {
+
+ UnicodeStrToAnsi(tkt_string, sizeof(tkt_string),
+ wtkt_string);
+ pkrb_set_tkt_string(tkt_string);
+ }
+}
+
static
long
@@ -839,6 +861,8 @@ khm_krb4_kinit(char * aname,
goto cleanup;
}
+ khm_krb4_set_def_tkt_string();
+
err_context = L"fetching ticket";
rc4 = (*pkrb_get_pw_in_tkt)(aname, inst, realm, "krbtgt", realm,
lifetime, password);
diff --git a/src/windows/identity/plugins/krb4/krb4funcs.h b/src/windows/identity/plugins/krb4/krb4funcs.h
index 8abb7ac..742d136 100644
--- a/src/windows/identity/plugins/krb4/krb4funcs.h
+++ b/src/windows/identity/plugins/krb4/krb4funcs.h
@@ -112,6 +112,9 @@ config_boolean_to_int(
const char *s
);
+void
+khm_krb4_set_def_tkt_string(void);
+
wchar_t * khm_krb5_get_default_realm(void);
wchar_t * khm_krb5_get_realm_list(void);
diff --git a/src/windows/identity/plugins/krb4/krb4plugin.c b/src/windows/identity/plugins/krb4/krb4plugin.c
index c47f5c8..b4edd41 100644
--- a/src/windows/identity/plugins/krb4/krb4plugin.c
+++ b/src/windows/identity/plugins/krb4/krb4plugin.c
@@ -162,9 +162,6 @@ krb4_msg_system(khm_int32 msg_type, khm_int32 msg_subtype,
khui_cfg_release(idents);
- krb4_initialized = TRUE;
-
- khm_krb4_list_tickets();
}
/* Lookup common data types */
@@ -203,6 +200,12 @@ krb4_msg_system(khm_int32 msg_type, khm_int32 msg_subtype,
&attr_id_krb5_flags))) {
rv = KHM_ERROR_UNKNOWN;
}
+
+ krb4_initialized = TRUE;
+
+ khm_krb4_set_def_tkt_string();
+
+ khm_krb4_list_tickets();
#endif
}
break;
diff --git a/src/windows/identity/plugins/krb4/krbconfig.csv b/src/windows/identity/plugins/krb4/krbconfig.csv
index d77abbf..3d95b40 100644
--- a/src/windows/identity/plugins/krb4/krbconfig.csv
+++ b/src/windows/identity/plugins/krb4/krbconfig.csv
@@ -12,5 +12,6 @@ Krb4Cred,KC_SPACE,0,"Kerberos IV Credentials Provider"
DefaultLifetime,KC_INT32,36000,Default ticket lifetime
MaxLifetime,KC_INT32,86400,Maximum lifetime
MinLifetime,KC_INT32,60,Minimum lifetime
+ TktString,KC_STRING,,Ticket string. Use default if NULL
Parameters,KC_ENDSPACE,0,
Krb4Cred,KC_ENDSPACE,0,
diff --git a/src/windows/identity/plugins/krb4/lang/en_us/langres.rc b/src/windows/identity/plugins/krb4/lang/en_us/langres.rc
index d9114e5..cd46a8d 100644
--- a/src/windows/identity/plugins/krb4/lang/en_us/langres.rc
+++ b/src/windows/identity/plugins/krb4/lang/en_us/langres.rc
@@ -57,18 +57,12 @@ STYLE DS_SETFONT | DS_FIXEDSYS | DS_CONTROL | WS_CHILD | WS_SYSMENU
EXSTYLE WS_EX_CONTROLPARENT
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
- CONTROL "Kerberos 4 Ticket Options",IDC_STATIC,"Static",
- SS_LEFTNOWORDWRAP | SS_SUNKEN | WS_GROUP,7,7,286,11
- CONTROL "Obtain Kerberos 4 tickets",IDC_NCK4_OBTAIN,"Button",
- BS_AUTOCHECKBOX | WS_TABSTOP,7,26,97,10
- GROUPBOX "Obtain Kerberos 4 tickets using",IDC_STATIC,7,43,286,72,
- WS_GROUP
- CONTROL "Automatically determine method",IDC_NCK4_AUTO,"Button",
- BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,23,58,119,10
- CONTROL "Kerberos 5 to 4 translation",IDC_NCK4_K524,"Button",
- BS_AUTORADIOBUTTON,23,76,101,10
- CONTROL "Password",IDC_NCK4_PWD,"Button",BS_AUTORADIOBUTTON,23,
- 94,47,10
+ CONTROL "Kerberos 4 Ticket Options",IDC_STATIC,"Static",SS_LEFTNOWORDWRAP | SS_SUNKEN | WS_GROUP,7,7,286,11
+ CONTROL "Obtain Kerberos 4 tickets",IDC_NCK4_OBTAIN,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,26,97,10
+ GROUPBOX "Obtain Kerberos 4 tickets using",IDC_STATIC,7,43,286,72,WS_GROUP
+ CONTROL "Automatically determine method",IDC_NCK4_AUTO,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,23,58,119,10
+ CONTROL "Kerberos 5 to 4 translation",IDC_NCK4_K524,"Button",BS_AUTORADIOBUTTON,23,76,101,10
+ CONTROL "Password",IDC_NCK4_PWD,"Button",BS_AUTORADIOBUTTON,23,94,47,10
END
IDD_CFG_KRB4 DIALOGEX 0, 0, 255, 182
@@ -79,11 +73,11 @@ BEGIN
LTEXT "Ticket cache location",IDC_CFG_LBL_CACHE,7,10,67,8
EDITTEXT IDC_CFG_CACHE,83,7,165,14,ES_AUTOHSCROLL
LTEXT "Config file path",IDC_CFG_LBL_CFGFILE,7,30,50,8
- EDITTEXT IDC_CFG_CFGPATH,83,27,113,14,ES_AUTOHSCROLL
- PUSHBUTTON "Browse...",IDC_CFG_CFGBROW,200,27,48,14
+ EDITTEXT IDC_CFG_CFGPATH,83,27,165,14,ES_AUTOHSCROLL | ES_READONLY
+ PUSHBUTTON "Browse...",IDC_CFG_CFGBROW,200,95,48,14,NOT WS_VISIBLE
LTEXT "Realm file path",IDC_CFG_LBL_RLMPATH,7,50,48,8
- EDITTEXT IDC_CFG_RLMPATH,83,47,113,14,ES_AUTOHSCROLL
- PUSHBUTTON "Browse...",IDC_CFG_RLMBROW,200,47,48,14
+ EDITTEXT IDC_CFG_RLMPATH,83,47,165,14,ES_AUTOHSCROLL | ES_READONLY
+ PUSHBUTTON "Browse...",IDC_CFG_RLMBROW,200,127,48,14,NOT WS_VISIBLE
END
IDD_CFG_IDS_KRB4 DIALOGEX 0, 0, 235, 151
@@ -91,10 +85,8 @@ STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_SYSMENU
EXSTYLE WS_EX_CONTROLPARENT
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
- CONTROL "Obtain Kerberos 4 tickets",IDC_CFG_GETTIX,"Button",
- BS_AUTOCHECKBOX | WS_TABSTOP,7,7,221,17
- LTEXT "Note that, if enabled, Kerberos 4 tickets will be acquired during initial credential acquisition and during credential renewals.\n\nHowever, currently Kerberos 4 tickets can only be obtained for the default identity.",
- IDC_STATIC,7,91,221,53,SS_SUNKEN
+ CONTROL "Obtain Kerberos 4 tickets",IDC_CFG_GETTIX,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,7,221,17
+ LTEXT "Note that, if enabled, Kerberos 4 tickets will be acquired during initial credential acquisition and during credential renewals.\n\nHowever, currently Kerberos 4 tickets can only be obtained for the default identity.",IDC_STATIC,7,91,221,53,SS_SUNKEN
END
IDD_CFG_ID_KRB4 DIALOGEX 0, 0, 235, 151
@@ -102,9 +94,8 @@ STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_SYSMENU
EXSTYLE WS_EX_CONTROLPARENT
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
- CONTROL "Obtain Kerberos 4 tickets for this identity",
- IDC_CFG_GETTIX,"Button",BS_AUTOCHECKBOX | WS_DISABLED |
- WS_TABSTOP,7,7,147,10
+ CONTROL "Obtain Kerberos 4 tickets for this identity",IDC_CFG_GETTIX,
+ "Button",BS_AUTOCHECKBOX | WS_DISABLED | WS_TABSTOP,7,7,147,10
END
diff --git a/src/windows/identity/plugins/krb5/krb5configdlg.c b/src/windows/identity/plugins/krb5/krb5configdlg.c
index 8caafe9..9c8af5d 100644
--- a/src/windows/identity/plugins/krb5/krb5configdlg.c
+++ b/src/windows/identity/plugins/krb5/krb5configdlg.c
@@ -77,6 +77,11 @@ typedef struct tag_k5_config_data {
khm_boolean create_config_file; /* create config_file if missing? */
khm_boolean inc_realms; /* include full realm list in new
credentials dialog? */
+ wchar_t loaded_config_file[MAX_PATH]; /* path to the
+ configuration file
+ that has been
+ loaded into the
+ realm editor. */
/* [libdefaults] */
khm_boolean dns_lookup_kdc;
@@ -548,15 +553,6 @@ k5_write_config_data(k5_config_data * d) {
if (!k5_is_profile_loaded())
return;
- if (d->flags & K5_CDFLAG_MOD_DEF_REALM) {
- if (SUCCEEDED(StringCbLength(d->def_realm,
- sizeof(d->def_realm), &s)) &&
- s > 0) {
- khm_krb5_set_default_realm(d->def_realm);
- }
- d->flags &= ~K5_CDFLAG_MOD_DEF_REALM;
- }
-
/* write the MSLSA import setting */
if (d->flags & K5_CDFLAG_MOD_LSA_IMPORT) {
khc_write_int32(csp_params, L"MsLsaImport", d->lsa_import);
@@ -569,7 +565,8 @@ k5_write_config_data(k5_config_data * d) {
}
if (!(d->flags &
- (K5_CDFLAG_MOD_CONF_FILE |
+ (K5_CDFLAG_MOD_DEF_REALM |
+ K5_CDFLAG_MOD_CONF_FILE |
K5_CDFLAG_MOD_DNS_FALLBACK |
K5_CDFLAG_MOD_DNS_LOOKUP_RLM |
K5_CDFLAG_MOD_DNS_LOOKUP_KDC |
@@ -615,6 +612,27 @@ k5_write_config_data(k5_config_data * d) {
const char * sec_libdefaults[] = { "libdefaults", NULL, NULL };
khm_size r;
+ if (d->flags & K5_CDFLAG_MOD_DEF_REALM) {
+ if (SUCCEEDED(StringCbLength(d->def_realm,
+ sizeof(d->def_realm), &s)) &&
+ s > 0) {
+ char defrealm[K5_MAXCCH_REALM];
+
+ UnicodeStrToAnsi(defrealm, sizeof(defrealm),
+ d->def_realm);
+
+ khm_krb5_set_default_realm(d->def_realm);
+
+ sec_libdefaults[1] = "default_realm";
+
+ pprofile_clear_relation(profile, sec_libdefaults);
+
+ rv = pprofile_add_relation(profile, sec_libdefaults,
+ defrealm);
+ }
+ d->flags &= ~K5_CDFLAG_MOD_DEF_REALM;
+ }
+
if (d->flags & K5_CDFLAG_MOD_DNS_LOOKUP_KDC) {
sec_libdefaults[1] = "dns_lookup_kdc";
@@ -628,7 +646,6 @@ k5_write_config_data(k5_config_data * d) {
d->flags &= ~K5_CDFLAG_MOD_DNS_LOOKUP_KDC;
}
-
if (d->flags & K5_CDFLAG_MOD_DNS_LOOKUP_RLM) {
sec_libdefaults[1] = "dns_lookup_realm";
@@ -995,8 +1012,13 @@ k5_config_dlgproc(HWND hwnd,
SendMessage(hw, CB_SELECTSTRING, -1,
(LPARAM) d->def_realm);
+ SetDlgItemText(hwnd, IDC_CFG_DEFREALM, d->def_realm);
+ SendDlgItemMessage(hwnd, IDC_CFG_DEFREALM, CB_LIMITTEXT,
+ ARRAYLENGTH(d->def_realm) - 1, 0);
SetDlgItemText(hwnd, IDC_CFG_CFGFILE, d->config_file);
+ SendDlgItemMessage(hwnd, IDC_CFG_CFGFILE, EM_LIMITTEXT,
+ ARRAYLENGTH(d->config_file) - 1, 0);
/* hostname/domain */
if (NetWkstaGetInfo(NULL, 100, (LPBYTE *) &winfo100) == NERR_Success) {
@@ -1046,6 +1068,9 @@ k5_config_dlgproc(HWND hwnd,
d = &k5_config_dlg_data;
+ if (d == NULL)
+ return FALSE;
+
if (wParam == MAKEWPARAM(IDC_CFG_IMPORT, CBN_SELCHANGE)) {
int idx;
int modified = FALSE;
@@ -1078,6 +1103,100 @@ k5_config_dlgproc(HWND hwnd,
KHUI_CNFLAG_MODIFIED);
return TRUE;
}
+
+ if (wParam == MAKEWPARAM(IDC_CFG_DEFREALM, CBN_EDITCHANGE)) {
+ wchar_t defrealm[K5_MAXCCH_REALM];
+ int t;
+
+ t = GetDlgItemText(hwnd, IDC_CFG_DEFREALM,
+ defrealm, ARRAYLENGTH(defrealm));
+ if (t == 0) {
+ /* we failed to get the default realm from the
+ control for some reason. */
+ SetDlgItemText(hwnd, IDC_CFG_DEFREALM, L"");
+ StringCbCopy(d->def_realm, sizeof(d->def_realm),
+ L"");
+ } else {
+ StringCbCopy(d->def_realm, sizeof(d->def_realm),
+ defrealm);
+ }
+
+ d->flags |= K5_CDFLAG_MOD_DEF_REALM;
+
+ khui_cfg_set_flags(d->node_main,
+ KHUI_CNFLAG_MODIFIED,
+ KHUI_CNFLAG_MODIFIED);
+ return TRUE;
+ }
+
+ if (wParam == MAKEWPARAM(IDC_CFG_DEFREALM, CBN_SELCHANGE)) {
+ wchar_t defrealm[K5_MAXCCH_REALM];
+ LRESULT cursel, lr;
+
+ cursel = SendDlgItemMessage(hwnd, IDC_CFG_DEFREALM, CB_GETCURSEL,
+ 0, 0);
+ if (cursel == CB_ERR)
+ return TRUE;
+
+ lr = SendDlgItemMessage(hwnd, IDC_CFG_DEFREALM, CB_GETLBTEXTLEN,
+ cursel, 0);
+#ifdef DEBUG
+ assert(lr < ARRAYLENGTH(defrealm));
+#endif
+ if (lr >= ARRAYLENGTH(defrealm)) {
+ /* we really shouldn't have any string here that
+ exceeds that many characters. But if we do, we
+ ignore that since we don't consider it
+ valid. */
+ return TRUE;
+ }
+
+ lr = SendDlgItemMessage(hwnd, IDC_CFG_DEFREALM, CB_GETLBTEXT,
+ cursel, (LPARAM) defrealm);
+ if (lr == CB_ERR) {
+ /* somehow we failed to copy the value anyway
+ after all those checks. */
+#ifdef DEBUG
+ assert(FALSE);
+#endif
+ return TRUE;
+ }
+
+ StringCbCopy(d->def_realm, sizeof(d->def_realm),
+ defrealm);
+
+ d->flags |= K5_CDFLAG_MOD_DEF_REALM;
+
+ khui_cfg_set_flags(d->node_main,
+ KHUI_CNFLAG_MODIFIED,
+ KHUI_CNFLAG_MODIFIED);
+
+ return TRUE;
+ }
+
+#ifdef ALLOW_CHANGING_KRB5_CONFIG_FILE
+ if (wParam == MAKEWPARAM(IDC_CFG_CFGFILE, EN_CHANGE)) {
+ wchar_t cfgfile[MAX_PATH];
+ int t;
+
+ t = GetDlgItemText(hwnd, IDC_CFG_CFGFILE,
+ cfgfile, ARRAYLENGTH(cfgfile));
+
+ if (t == 0) {
+ StringCbCopy(d->config_file, sizeof(d->config_file),
+ L"");
+ } else {
+ StringCbCopy(d->config_file, sizeof(d->config_file),
+ cfgfile);
+ }
+
+ d->flags |= K5_CDFLAG_MOD_CONF_FILE;
+
+ khui_cfg_set_flags(d->node_main,
+ KHUI_CNFLAG_MODIFIED,
+ KHUI_CNFLAG_MODIFIED);
+ }
+#endif
}
break;
diff --git a/src/windows/identity/plugins/krb5/krb5configid.c b/src/windows/identity/plugins/krb5/krb5configid.c
index 6e3a451..e092819 100644
--- a/src/windows/identity/plugins/krb5/krb5configid.c
+++ b/src/windows/identity/plugins/krb5/krb5configid.c
@@ -324,7 +324,8 @@ k5_id_tab_dlgproc(HWND hwnd,
d = (k5_id_dlg_data *) (LONG_PTR)
GetWindowLongPtr(hwnd, DWLP_USER);
- if (HIWORD(wParam) == EN_CHANGE)
+ if (HIWORD(wParam) == EN_CHANGE ||
+ HIWORD(wParam) == BN_CLICKED)
k5_id_check_mod(hwnd, d);
break;
diff --git a/src/windows/identity/plugins/krb5/krb5funcs.c b/src/windows/identity/plugins/krb5/krb5funcs.c
index 0ce676c..85cad11 100644
--- a/src/windows/identity/plugins/krb5/krb5funcs.c
+++ b/src/windows/identity/plugins/krb5/krb5funcs.c
@@ -106,9 +106,9 @@ khm_convert524(krb5_context alt_ctx)
increds.times.endtime = 0;
increds.keyblock.enctype = ENCTYPE_DES_CBC_CRC;
if ((code = pkrb5_get_credentials(ctx, 0,
- cc,
- &increds,
- &v5creds)))
+ cc,
+ &increds,
+ &v5creds)))
{
goto cleanup;
}
@@ -2108,6 +2108,27 @@ khm_krb5_get_temp_profile_file(LPSTR confname, UINT szConfname)
return FALSE;
}
+#ifdef NOT_QUITE_IMPLEMENTED_YET
+BOOL
+khm_krb5_set_profile_file(krb5_context ctx, LPSTR confname)
+{
+ char *conffiles[2];
+
+ if (confname == NULL ||
+ pkrb5_set_config_files == NULL ||
+ ctx == NULL)
+ return FALSE;
+
+ conffiles[0] = confname;
+ conffiles[1] = NULL;
+
+ if (pkrb5_set_config_files(ctx, conffiles))
+ return FALSE;
+ else
+ return TRUE;
+}
+#endif
+
BOOL
khm_krb5_get_profile_file(LPSTR confname, UINT szConfname)
{
diff --git a/src/windows/identity/plugins/krb5/lang/en_us/langres.rc b/src/windows/identity/plugins/krb5/lang/en_us/langres.rc
index dde30e3..fca26a1 100644
--- a/src/windows/identity/plugins/krb5/lang/en_us/langres.rc
+++ b/src/windows/identity/plugins/krb5/lang/en_us/langres.rc
@@ -115,19 +115,21 @@ BEGIN
END
IDD_CONFIG DIALOGEX 0, 0, 255, 182
-STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_SYSMENU
+STYLE DS_SETFONT | DS_FIXEDSYS | DS_CONTROL | WS_CHILD | WS_SYSMENU
+EXSTYLE WS_EX_CONTROLPARENT
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
LTEXT "Default Realm",IDC_CFG_LBL_REALM,13,9,46,8
COMBOBOX IDC_CFG_DEFREALM,76,7,166,51,CBS_DROPDOWN | CBS_SORT | WS_VSCROLL | WS_TABSTOP
- PUSHBUTTON "Configure Realms ...",IDC_CFG_CFGREALMS,76,25,84,14,NOT WS_VISIBLE | WS_DISABLED
- GROUPBOX "Keberos Configuration File",IDC_CFG_CFGFILEGRP,7,45,241,61
- LTEXT "Location",IDC_CFG_LBL_CFGFILE,13,61,28,8
- EDITTEXT IDC_CFG_CFGFILE,76,58,119,14,ES_AUTOHSCROLL
- PUSHBUTTON "Browse...",IDC_CFG_BROWSE,198,58,44,14
- CONTROL "Create file if missing",IDC_CFG_CREATECONFIG,"Button",BS_AUTOCHECKBOX | NOT WS_VISIBLE | WS_DISABLED | WS_TABSTOP,76,90,80,10
- CONTROL "Include realms in New Credentials realm list",IDC_CFG_INCREALMS,
- "Button",BS_AUTOCHECKBOX | WS_TABSTOP,76,78,153,10
+ CONTROL "Include all configured realms in New Credentials realm list",IDC_CFG_INCREALMS,
+ "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,76,26,166,22
+ PUSHBUTTON "Configure Realms ...",IDC_CFG_CFGREALMS,76,46,84,14,NOT WS_VISIBLE | WS_DISABLED
+ GROUPBOX "Keberos Configuration File",IDC_CFG_CFGFILEGRP,7,59,241,47
+ LTEXT "Location",IDC_CFG_LBL_CFGFILE,13,74,28,8
+ EDITTEXT IDC_CFG_CFGFILE,76,71,166,14,ES_AUTOHSCROLL | ES_READONLY
+ PUSHBUTTON "Browse...",IDC_CFG_BROWSE,145,89,44,14,NOT WS_VISIBLE
+ CONTROL "Create file if missing",IDC_CFG_CREATECONFIG,"Button",BS_AUTOCHECKBOX | NOT WS_VISIBLE | WS_DISABLED | WS_TABSTOP,76,93,80,10
+ PUSHBUTTON "Load into realm editor ...",IDC_CFG_BROWSE2,26,89,100,14,NOT WS_VISIBLE
GROUPBOX "Windows® Options",IDC_CFG_WINGRP,7,110,241,65
LTEXT "Hostname",IDC_CFG_LBL_HOSTNAME,13,123,33,8
EDITTEXT IDC_CFG_HOSTNAME,76,120,166,14,ES_AUTOHSCROLL | ES_READONLY
diff --git a/src/windows/identity/plugins/krb5/langres.h b/src/windows/identity/plugins/krb5/langres.h
index da8a62f..9381b99 100644
--- a/src/windows/identity/plugins/krb5/langres.h
+++ b/src/windows/identity/plugins/krb5/langres.h
@@ -166,6 +166,7 @@
#define IDC_CFG_BROWSE 1039
#define IDC_CFG_CFGFILEGRP 1040
#define IDC_CFG_CFGREALMS 1041
+#define IDC_CFG_BROWSE2 1042
#define IDC_CFG_REALMS 1044
#define IDC_CFG_DOMAINGRP 1045
#define IDC_CFG_SERVERSGRP 1046
diff --git a/src/windows/identity/ui/addrchange.c b/src/windows/identity/ui/addrchange.c
index 8a671b3..3e5467c 100644
--- a/src/windows/identity/ui/addrchange.c
+++ b/src/windows/identity/ui/addrchange.c
@@ -57,8 +57,8 @@ addr_change_thread(LPVOID dummy) {
ret = WaitForMultipleObjects(2, h_waits, FALSE, INFINITE);
if ( ret == WAIT_OBJECT_0 ) {
- kmq_post_message(KMSG_CRED, KMSG_CRED_ADDR_CHANGE,
- 0, 0);
+ Sleep(3000); /* wait for things to settle down */
+ kmq_post_message(KMSG_CRED, KMSG_CRED_ADDR_CHANGE, 0, 0);
} else {
goto _end_thread;
}