|
@@ -80,13 +80,24 @@ func doImportDBGeneric(config *Config, dbImport databaseImport, credsType Creden
|
80
|
80
|
tx.Set(keyCloakSecret, utils.GenerateSecretKey(), nil)
|
81
|
81
|
|
82
|
82
|
cfUsernames := make(utils.StringSet)
|
|
83
|
+ skeletonToUsername := make(map[string]string)
|
|
84
|
+ warnSkeletons := false
|
83
|
85
|
|
84
|
86
|
for username, userInfo := range dbImport.Users {
|
85
|
87
|
cfUsername, err := CasefoldName(username)
|
86
|
|
- if err != nil {
|
87
|
|
- log.Printf("invalid username %s: %v", username, err)
|
|
88
|
+ skeleton, skErr := Skeleton(username)
|
|
89
|
+ if err != nil || skErr != nil {
|
|
90
|
+ log.Printf("invalid username %s: %v\n", username, err)
|
88
|
91
|
continue
|
89
|
92
|
}
|
|
93
|
+
|
|
94
|
+ if existingSkelUser, ok := skeletonToUsername[skeleton]; ok {
|
|
95
|
+ log.Printf("Users %s and %s have confusable nicknames; this may render one or both accounts unusable\n", username, existingSkelUser)
|
|
96
|
+ warnSkeletons = true
|
|
97
|
+ } else {
|
|
98
|
+ skeletonToUsername[skeleton] = username
|
|
99
|
+ }
|
|
100
|
+
|
90
|
101
|
var certfps []string
|
91
|
102
|
for _, certfp := range userInfo.Certfps {
|
92
|
103
|
normalizedCertfp, err := utils.NormalizeCertfp(certfp)
|
|
@@ -103,7 +114,7 @@ func doImportDBGeneric(config *Config, dbImport databaseImport, credsType Creden
|
103
|
114
|
}
|
104
|
115
|
marshaledCredentials, err := json.Marshal(&credentials)
|
105
|
116
|
if err != nil {
|
106
|
|
- log.Printf("invalid credentials for %s: %v", username, err)
|
|
117
|
+ log.Printf("invalid credentials for %s: %v\n", username, err)
|
107
|
118
|
continue
|
108
|
119
|
}
|
109
|
120
|
tx.Set(fmt.Sprintf(keyAccountExists, cfUsername), "1", nil)
|
|
@@ -178,6 +189,11 @@ func doImportDBGeneric(config *Config, dbImport databaseImport, credsType Creden
|
178
|
189
|
}
|
179
|
190
|
}
|
180
|
191
|
|
|
192
|
+ if warnSkeletons {
|
|
193
|
+ log.Printf("NOTE: you may be able to avoid confusability issues by changing the server casemapping setting to `ascii`\n")
|
|
194
|
+ log.Printf("However, this will prevent the use of non-ASCII Unicode characters in nicknames\n")
|
|
195
|
+ }
|
|
196
|
+
|
181
|
197
|
return nil
|
182
|
198
|
}
|
183
|
199
|
|