Synchronize user.certificate access
This commit is contained in:
parent
67b83fa3d6
commit
81500cc89e
@ -22,9 +22,9 @@ func reconnectIRC() {
|
|||||||
i.Password = server.Password
|
i.Password = server.Password
|
||||||
i.Realname = server.Realname
|
i.Realname = server.Realname
|
||||||
|
|
||||||
if user.Certificate != nil {
|
if cert := user.GetCertificate(); cert != nil {
|
||||||
i.TLSConfig = &tls.Config{
|
i.TLSConfig = &tls.Config{
|
||||||
Certificates: []tls.Certificate{*user.Certificate},
|
Certificates: []tls.Certificate{*cert},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -105,9 +105,9 @@ func (h *wsHandler) connect(b []byte) {
|
|||||||
i.Password = data.Password
|
i.Password = data.Password
|
||||||
i.Realname = data.Realname
|
i.Realname = data.Realname
|
||||||
|
|
||||||
if h.session.user.Certificate != nil {
|
if cert := h.session.user.GetCertificate(); cert != nil {
|
||||||
i.TLSConfig = &tls.Config{
|
i.TLSConfig = &tls.Config{
|
||||||
Certificates: []tls.Certificate{*h.session.user.Certificate},
|
Certificates: []tls.Certificate{*cert},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -41,11 +41,11 @@ type Message struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type User struct {
|
type User struct {
|
||||||
UUID string
|
UUID string
|
||||||
Certificate *tls.Certificate `json:"-"`
|
|
||||||
|
|
||||||
messageLog *bolt.DB
|
messageLog *bolt.DB
|
||||||
messageIndex bleve.Index
|
messageIndex bleve.Index
|
||||||
|
certificate *tls.Certificate
|
||||||
lock sync.Mutex
|
lock sync.Mutex
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -12,13 +12,21 @@ var (
|
|||||||
ErrCouldNotSaveCert = errors.New("Could not save certificate")
|
ErrCouldNotSaveCert = errors.New("Could not save certificate")
|
||||||
)
|
)
|
||||||
|
|
||||||
|
func (u *User) GetCertificate() *tls.Certificate {
|
||||||
|
u.lock.Lock()
|
||||||
|
cert := u.certificate
|
||||||
|
u.lock.Unlock()
|
||||||
|
|
||||||
|
return cert
|
||||||
|
}
|
||||||
|
|
||||||
func (u *User) SetCertificate(certPEM, keyPEM []byte) error {
|
func (u *User) SetCertificate(certPEM, keyPEM []byte) error {
|
||||||
cert, err := tls.X509KeyPair(certPEM, keyPEM)
|
cert, err := tls.X509KeyPair(certPEM, keyPEM)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return ErrInvalidCert
|
return ErrInvalidCert
|
||||||
}
|
}
|
||||||
u.lock.Lock()
|
u.lock.Lock()
|
||||||
u.Certificate = &cert
|
u.certificate = &cert
|
||||||
u.lock.Unlock()
|
u.lock.Unlock()
|
||||||
|
|
||||||
err = os.MkdirAll(Path.User(u.UUID), 0700)
|
err = os.MkdirAll(Path.User(u.UUID), 0700)
|
||||||
@ -55,6 +63,6 @@ func (u *User) loadCertificate() error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
u.Certificate = &cert
|
u.certificate = &cert
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user