Changeset 183 in code for trunk/downstream.go


Ignore:
Timestamp:
Mar 28, 2020, 4:25:48 PM (5 years ago)
Author:
contact
Message:

Add downstreamConn.clientName

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/downstream.go

    r182 r183  
    7373        rawUsername string
    7474        networkName string
     75        clientName  string
    7576        realname    string
    7677        hostname    string
     
    575576}
    576577
    577 func unmarshalUsername(rawUsername string) (username, network string) {
     578func unmarshalUsername(rawUsername string) (username, client, network string) {
    578579        username = rawUsername
    579         if i := strings.LastIndexAny(username, "/@"); i >= 0 {
    580                 network = username[i+1:]
    581         }
    582         if i := strings.IndexAny(username, "/@"); i >= 0 {
    583                 username = username[:i]
    584         }
    585         return username, network
     580
     581        i := strings.IndexAny(username, "/@")
     582        j := strings.LastIndexAny(username, "/@")
     583        if i >= 0 {
     584                username = rawUsername[:i]
     585        }
     586        if j >= 0 {
     587                network = rawUsername[j+1:]
     588        }
     589        if i >= 0 && j >= 0 && i < j {
     590                client = rawUsername[i+1 : j]
     591        }
     592
     593        return username, client, network
    586594}
    587595
    588596func (dc *downstreamConn) authenticate(username, password string) error {
    589         username, networkName := unmarshalUsername(username)
     597        username, clientName, networkName := unmarshalUsername(username)
    590598
    591599        u, err := dc.srv.db.GetUser(username)
     
    606614                return errAuthFailed
    607615        }
     616        dc.clientName = clientName
    608617        dc.networkName = networkName
    609618        return nil
     
    623632        }
    624633
    625         if dc.networkName == "" {
    626                 _, dc.networkName = unmarshalUsername(dc.rawUsername)
     634        if dc.clientName == "" && dc.networkName == "" {
     635                _, dc.clientName, dc.networkName = unmarshalUsername(dc.rawUsername)
    627636        }
    628637
Note: See TracChangeset for help on using the changeset viewer.