- Timestamp:
- Mar 25, 2020, 10:54:08 AM (5 years ago)
- Location:
- trunk
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/db.go
r118 r146 36 36 ID int64 37 37 Name string 38 Key string 38 39 } 39 40 … … 194 195 defer db.lock.RUnlock() 195 196 196 rows, err := db.db.Query("SELECT id, name FROM Channel WHERE network = ?", networkID)197 rows, err := db.db.Query("SELECT id, name, key FROM Channel WHERE network = ?", networkID) 197 198 if err != nil { 198 199 return nil, err … … 203 204 for rows.Next() { 204 205 var ch Channel 205 if err := rows.Scan(&ch.ID, &ch.Name); err != nil { 206 var key *string 207 if err := rows.Scan(&ch.ID, &ch.Name, &key); err != nil { 206 208 return nil, err 207 209 } 210 ch.Key = fromStringPtr(key) 208 211 channels = append(channels, ch) 209 212 } … … 219 222 defer db.lock.Unlock() 220 223 221 _, err := db.db.Exec("INSERT OR REPLACE INTO Channel(network, name) VALUES (?, ?)", networkID, ch.Name) 224 key := toStringPtr(ch.Key) 225 _, err := db.db.Exec(`INSERT OR REPLACE INTO Channel(network, name, key) 226 VALUES (?, ?, ?)`, networkID, ch.Name, key) 222 227 return err 223 228 } -
trunk/downstream.go
r145 r146 833 833 uc.SendMessage(msg) 834 834 }) 835 case "JOIN", "PART": 836 var names string 837 if err := parseMessageParams(msg, &names); err != nil { 838 return err 839 } 840 841 for _, name := range strings.Split(names, ",") { 835 case "JOIN": 836 var namesStr string 837 if err := parseMessageParams(msg, &namesStr); err != nil { 838 return err 839 } 840 841 var keys []string 842 if len(msg.Params) > 1 { 843 keys = strings.Split(msg.Params[1], ",") 844 } 845 846 for i, name := range strings.Split(namesStr, ",") { 842 847 uc, upstreamName, err := dc.unmarshalEntity(name) 843 848 if err != nil { … … 848 853 } 849 854 855 var key string 856 if len(keys) > i { 857 key = keys[i] 858 } 859 860 params := []string{upstreamName} 861 if key != "" { 862 params = append(params, key) 863 } 850 864 uc.SendMessage(&irc.Message{ 851 Command: msg.Command, 852 Params: []string{upstreamName}, 853 }) 854 855 switch msg.Command { 856 case "JOIN": 857 err := dc.srv.db.StoreChannel(uc.network.ID, &Channel{ 858 Name: upstreamName, 859 }) 860 if err != nil { 861 dc.logger.Printf("failed to create channel %q in DB: %v", upstreamName, err) 862 } 863 case "PART": 864 if err := dc.srv.db.DeleteChannel(uc.network.ID, upstreamName); err != nil { 865 dc.logger.Printf("failed to delete channel %q in DB: %v", upstreamName, err) 866 } 865 Command: "JOIN", 866 Params: params, 867 }) 868 869 err = dc.srv.db.StoreChannel(uc.network.ID, &Channel{ 870 Name: upstreamName, 871 Key: key, 872 }) 873 if err != nil { 874 dc.logger.Printf("failed to create channel %q in DB: %v", upstreamName, err) 875 } 876 } 877 case "PART": 878 var namesStr string 879 if err := parseMessageParams(msg, &namesStr); err != nil { 880 return err 881 } 882 883 var reason string 884 if len(msg.Params) > 1 { 885 reason = msg.Params[1] 886 } 887 888 for _, name := range strings.Split(namesStr, ",") { 889 uc, upstreamName, err := dc.unmarshalEntity(name) 890 if err != nil { 891 return ircError{&irc.Message{ 892 Command: irc.ERR_NOSUCHCHANNEL, 893 Params: []string{name, err.Error()}, 894 }} 895 } 896 897 params := []string{upstreamName} 898 if reason != "" { 899 params = append(params, reason) 900 } 901 uc.SendMessage(&irc.Message{ 902 Command: "PART", 903 Params: params, 904 }) 905 906 if err := dc.srv.db.DeleteChannel(uc.network.ID, upstreamName); err != nil { 907 dc.logger.Printf("failed to delete channel %q in DB: %v", upstreamName, err) 867 908 } 868 909 } -
trunk/upstream.go
r143 r146 318 318 319 319 for _, ch := range channels { 320 params := []string{ch.Name} 321 if ch.Key != "" { 322 params = append(params, ch.Key) 323 } 320 324 uc.SendMessage(&irc.Message{ 321 325 Command: "JOIN", 322 Params: []string{ch.Name},326 Params: params, 323 327 }) 324 328 }
Note:
See TracChangeset
for help on using the changeset viewer.