Changeset 95 in code for trunk/db.go
- Timestamp:
- Mar 13, 2020, 2:12:44 PM (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/db.go
r93 r95 11 11 Username string 12 12 Password string // hashed 13 } 14 15 type SASL struct { 16 Mechanism string 17 18 Plain struct { 19 Username string 20 Password string 21 } 13 22 } 14 23 … … 20 29 Realname string 21 30 Pass string 31 SASL SASL 22 32 } 23 33 … … 44 54 defer db.lock.Unlock() 45 55 return db.Close() 56 } 57 58 func fromStringPtr(ptr *string) string { 59 if ptr == nil { 60 return "" 61 } 62 return *ptr 63 } 64 65 func toStringPtr(s string) *string { 66 if s == "" { 67 return nil 68 } 69 return &s 46 70 } 47 71 … … 63 87 return nil, err 64 88 } 65 if password != nil { 66 user.Password = *password 67 } 89 user.Password = fromStringPtr(password) 68 90 users = append(users, user) 69 91 } … … 79 101 defer db.lock.Unlock() 80 102 81 var password *string 82 if user.Password != "" { 83 password = &user.Password 84 } 103 password := toStringPtr(user.Password) 85 104 _, err := db.db.Exec("INSERT INTO User(username, password) VALUES (?, ?)", user.Username, password) 86 105 return err … … 91 110 defer db.lock.RUnlock() 92 111 93 rows, err := db.db.Query("SELECT id, addr, nick, username, realname, pass FROM Network WHERE user = ?", username) 112 rows, err := db.db.Query(`SELECT id, addr, nick, username, realname, pass, 113 sasl_mechanism, sasl_plain_username, sasl_plain_password 114 FROM Network 115 WHERE user = ?`, 116 username) 94 117 if err != nil { 95 118 return nil, err … … 101 124 var net Network 102 125 var username, realname, pass *string 103 if err := rows.Scan(&net.ID, &net.Addr, &net.Nick, &username, &realname, &pass); err != nil { 126 var saslMechanism, saslPlainUsername, saslPlainPassword *string 127 err := rows.Scan(&net.ID, &net.Addr, &net.Nick, &username, &realname, 128 &pass, &saslMechanism, &saslPlainUsername, &saslPlainPassword) 129 if err != nil { 104 130 return nil, err 105 131 } 106 if username != nil { 107 net.Username = *username 108 } 109 if realname != nil { 110 net.Realname = *realname 111 } 112 if pass != nil { 113 net.Pass = *pass 114 } 132 net.Username = fromStringPtr(username) 133 net.Realname = fromStringPtr(realname) 134 net.Pass = fromStringPtr(pass) 135 net.SASL.Mechanism = fromStringPtr(saslMechanism) 136 net.SASL.Plain.Username = fromStringPtr(saslPlainUsername) 137 net.SASL.Plain.Password = fromStringPtr(saslPlainPassword) 115 138 networks = append(networks, net) 116 139 } … … 126 149 defer db.lock.Unlock() 127 150 128 var netUsername, realname, pass *string 129 if network.Username != "" { 130 netUsername = &network.Username 131 } 132 if network.Realname != "" { 133 realname = &network.Realname 134 } 135 if network.Pass != "" { 136 pass = &network.Pass 151 netUsername := toStringPtr(network.Username) 152 realname := toStringPtr(network.Realname) 153 pass := toStringPtr(network.Pass) 154 155 var saslMechanism, saslPlainUsername, saslPlainPassword *string 156 if network.SASL.Mechanism != "" { 157 saslMechanism = &network.SASL.Mechanism 158 switch network.SASL.Mechanism { 159 case "PLAIN": 160 saslPlainUsername = toStringPtr(network.SASL.Plain.Username) 161 saslPlainPassword = toStringPtr(network.SASL.Plain.Password) 162 } 137 163 } 138 164 … … 140 166 if network.ID != 0 { 141 167 _, err = db.db.Exec(`UPDATE Network 142 SET addr = ?, nick = ?, username = ?, realname = ?, pass = ? 168 SET addr = ?, nick = ?, username = ?, realname = ?, pass = ?, 169 sasl_mechanism = ?, sasl_plain_username = ?, sasl_plain_password = ? 143 170 WHERE id = ?`, 144 network.Addr, network.Nick, netUsername, realname, pass, network.ID) 171 network.Addr, network.Nick, netUsername, realname, pass, 172 saslMechanism, saslPlainUsername, saslPlainPassword, network.ID) 145 173 } else { 146 174 var res sql.Result 147 175 res, err = db.db.Exec(`INSERT INTO Network(user, addr, nick, username, 148 realname, pass) 149 VALUES (?, ?, ?, ?, ?, ?)`, 150 username, network.Addr, network.Nick, netUsername, realname, pass) 176 realname, pass, sasl_mechanism, sasl_plain_username, 177 sasl_plain_password) 178 VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`, 179 username, network.Addr, network.Nick, netUsername, realname, pass, 180 saslMechanism, saslPlainUsername, saslPlainPassword) 151 181 if err != nil { 152 182 return err
Note:
See TracChangeset
for help on using the changeset viewer.