Changeset 95 in code for trunk/downstream.go
- Timestamp:
- Mar 13, 2020, 2:12:44 PM (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/downstream.go
r93 r95 382 382 } 383 383 384 dc.logger.Printf("trying to connect to new upstream server%q", addr)384 dc.logger.Printf("trying to connect to new network %q", addr) 385 385 if err := sanityCheckServer(addr); err != nil { 386 386 dc.logger.Printf("failed to connect to %q: %v", addr, err) … … 391 391 } 392 392 393 dc.logger.Printf("auto- adding network %q", networkName)393 dc.logger.Printf("auto-saving network %q", networkName) 394 394 network, err = u.createNetwork(networkName, dc.nick) 395 395 if err != nil { … … 619 619 } 620 620 621 if upstreamName == "NickServ" { 622 dc.handleNickServPRIVMSG(uc, text) 623 } 624 621 625 uc.SendMessage(&irc.Message{ 622 626 Command: "PRIVMSG", … … 630 634 return nil 631 635 } 636 637 func (dc *downstreamConn) handleNickServPRIVMSG(uc *upstreamConn, text string) { 638 username, password, ok := parseNickServCredentials(text, uc.nick) 639 if !ok { 640 return 641 } 642 643 dc.logger.Printf("auto-saving NickServ credentials with username %q", username) 644 n := uc.network 645 n.SASL.Mechanism = "PLAIN" 646 n.SASL.Plain.Username = username 647 n.SASL.Plain.Password = password 648 if err := dc.srv.db.StoreNetwork(dc.user.Username, &n.Network); err != nil { 649 dc.logger.Printf("failed to save NickServ credentials: %v", err) 650 } 651 } 652 653 func parseNickServCredentials(text, nick string) (username, password string, ok bool) { 654 fields := strings.Fields(text) 655 if len(fields) < 2 { 656 return "", "", false 657 } 658 cmd := strings.ToUpper(fields[0]) 659 params := fields[1:] 660 switch cmd { 661 case "REGISTER": 662 username = nick 663 password = params[0] 664 case "IDENTIFY": 665 if len(params) == 1 { 666 username = nick 667 } else { 668 username = params[0] 669 } 670 password = params[1] 671 } 672 return username, password, true 673 }
Note:
See TracChangeset
for help on using the changeset viewer.