Просмотр исходного кода

assume port 88 for kdc if not explicitly defined in config

Jonathan Turner 8 лет назад
Родитель
Сommit
5c85221076
2 измененных файлов с 13 добавлено и 3 удалено
  1. 8 0
      config/krb5conf.go
  2. 5 3
      config/krb5conf_test.go

+ 8 - 0
config/krb5conf.go

@@ -331,6 +331,14 @@ func (r *Realm) parseLines(name string, lines []string) error {
 		case "default_domain":
 			r.Default_domain = v
 		case "kdc":
+			if !strings.Contains(v, ":") {
+				// No port number specified default to 88
+				if strings.HasSuffix(v, `*`) {
+					v = strings.TrimSpace(strings.TrimSuffix(v, `*`)) + ":88*"
+				} else {
+					v = strings.TrimSpace(v) + ":88"
+				}
+			}
 			appendUntilFinal(&r.Kdc, v, &kdc_final)
 		case "kpasswd_server":
 			appendUntilFinal(&r.Kpasswd_server, v, &kpasswd_server_final)

+ 5 - 3
config/krb5conf_test.go

@@ -34,8 +34,10 @@ const krb5Conf = `
 [realms]
  TEST.GOKRB5 = {
   kdc = 10.80.88.88:88
+  kdc = assume.port.num
+  kdc = some.other.port:1234
 
-  kdc = 10.80.88.88:88*
+  kdc = 10.80.88.88*
   kdc = 10.1.2.3.4:88
 
   admin_server = 10.80.88.88:749
@@ -89,8 +91,8 @@ func TestLoad(t *testing.T) {
 	assert.Equal(t, []string{"10.80.88.88:749"}, c.Realms[0].Admin_server, "[realm] Admin_server not as expectd")
 	assert.Equal(t, []string{"10.80.88.88:464"}, c.Realms[0].Kpasswd_server, "[realm] Kpasswd_server not as expectd")
 	assert.Equal(t, "test.gokrb5", c.Realms[0].Default_domain, "[realm] Default_domain not as expectd")
-	assert.Equal(t, []string{"10.80.88.88:88", "10.80.88.88:88"}, c.Realms[0].Kdc, "[realm] Kdc not as expectd")
-	assert.Equal(t, []string{"kerberos.example.com", "kerberos-1.example.com"}, c.Realms[1].Kdc, "[realm] Kdc not as expectd")
+	assert.Equal(t, []string{"10.80.88.88:88", "assume.port.num:88", "some.other.port:1234", "10.80.88.88:88"}, c.Realms[0].Kdc, "[realm] Kdc not as expectd")
+	assert.Equal(t, []string{"kerberos.example.com:88", "kerberos-1.example.com:88"}, c.Realms[1].Kdc, "[realm] Kdc not as expectd")
 	assert.Equal(t, []string{"kerberos.example.com"}, c.Realms[1].Admin_server, "[realm] Admin_server not as expectd")
 
 	assert.Equal(t, "TEST.GOKRB5", c.DomainRealm[".test.gokrb5"], "Domain to realm mapping not as expected")