(msg *config.Message, dest *bridge.Bridge)
| 324 | } |
| 325 | |
| 326 | func (gw *Gateway) modifyUsername(msg *config.Message, dest *bridge.Bridge) string { |
| 327 | if dest.GetBool("StripNick") { |
| 328 | re := regexp.MustCompile("[^a-zA-Z0-9]+") |
| 329 | msg.Username = re.ReplaceAllString(msg.Username, "") |
| 330 | } |
| 331 | nick := dest.GetString("RemoteNickFormat") |
| 332 | |
| 333 | // loop to replace nicks |
| 334 | br := gw.Bridges[msg.Account] |
| 335 | for _, outer := range br.GetStringSlice2D("ReplaceNicks") { |
| 336 | search := outer[0] |
| 337 | replace := outer[1] |
| 338 | // TODO move compile to bridge init somewhere |
| 339 | re, err := regexp.Compile(search) |
| 340 | if err != nil { |
| 341 | gw.logger.Errorf("regexp in %s failed: %s", msg.Account, err) |
| 342 | break |
| 343 | } |
| 344 | msg.Username = re.ReplaceAllString(msg.Username, replace) |
| 345 | } |
| 346 | |
| 347 | if len(msg.Username) > 0 { |
| 348 | // fix utf-8 issue #193 |
| 349 | i := 0 |
| 350 | for index := range msg.Username { |
| 351 | if i == 1 { |
| 352 | i = index |
| 353 | break |
| 354 | } |
| 355 | i++ |
| 356 | } |
| 357 | nick = strings.ReplaceAll(nick, "{NOPINGNICK}", msg.Username[:i]+"\u200b"+msg.Username[i:]) |
| 358 | } |
| 359 | |
| 360 | nick = strings.ReplaceAll(nick, "{BRIDGE}", br.Name) |
| 361 | nick = strings.ReplaceAll(nick, "{PROTOCOL}", br.Protocol) |
| 362 | nick = strings.ReplaceAll(nick, "{GATEWAY}", gw.Name) |
| 363 | nick = strings.ReplaceAll(nick, "{LABEL}", br.GetString("Label")) |
| 364 | nick = strings.ReplaceAll(nick, "{NICK}", msg.Username) |
| 365 | nick = strings.ReplaceAll(nick, "{USERID}", msg.UserID) |
| 366 | nick = strings.ReplaceAll(nick, "{CHANNEL}", msg.Channel) |
| 367 | tengoNick, err := gw.modifyUsernameTengo(msg, br) |
| 368 | if err != nil { |
| 369 | gw.logger.Errorf("modifyUsernameTengo error: %s", err) |
| 370 | } |
| 371 | nick = strings.ReplaceAll(nick, "{TENGO}", tengoNick) |
| 372 | return nick |
| 373 | } |
| 374 | |
| 375 | func (gw *Gateway) modifyAvatar(msg *config.Message, dest *bridge.Bridge) string { |
| 376 | iconurl := dest.GetString("IconURL") |
no test coverage detected