every user login resets agent expiry now.
This commit is contained in:
parent
ddc3b24ebf
commit
f862f31832
@ -49,6 +49,7 @@ type AgentState struct {
|
||||
// map of unique session id to a session
|
||||
sessions map[int]*AgentSession
|
||||
|
||||
lastUserLoginTime time.Time
|
||||
agentUsed bool
|
||||
}
|
||||
|
||||
@ -88,9 +89,14 @@ func ConfigureAgent(advanceWarningTime, agentExpiryTime, tickerInterval time.Dur
|
||||
tickerInterval: tickerInterval,
|
||||
ticker: time.NewTicker(tickerInterval),
|
||||
sessions: make(map[int]*AgentSession),
|
||||
|
||||
lastUserLoginTime: time.Time{},
|
||||
agentUsed: false,
|
||||
}
|
||||
|
||||
log.Printf("Agent expires at %s",
|
||||
state.expiryTime(holdFilename).Format(time.DateTime))
|
||||
|
||||
go func() {
|
||||
for {
|
||||
<-state.ticker.C
|
||||
@ -184,6 +190,7 @@ func login(sessionId int, sshSession ssh.Session) {
|
||||
sshSession: sshSession,
|
||||
}
|
||||
state.sessions[sessionId] = &agentSession
|
||||
state.lastUserLoginTime = time.Now()
|
||||
state.agentUsed = true
|
||||
logStatus()
|
||||
|
||||
@ -254,11 +261,19 @@ func fileExists(filename string) bool {
|
||||
}
|
||||
|
||||
func (state *AgentState) expiryTime(filename string) time.Time {
|
||||
stats, err := os.Stat(filename)
|
||||
if err != nil {
|
||||
if !state.agentUsed {
|
||||
return state.startTime.Add(state.agentExpriryTime)
|
||||
}
|
||||
return stats.ModTime().Add(state.agentExpriryTime)
|
||||
expiryTime := time.Time{}
|
||||
stats, err := os.Stat(filename)
|
||||
if err == nil {
|
||||
expiryTime = stats.ModTime().Add(state.agentExpriryTime)
|
||||
}
|
||||
userLoginBaseExpiryTime := state.lastUserLoginTime.Add(state.agentExpriryTime)
|
||||
if userLoginBaseExpiryTime.After(expiryTime) {
|
||||
expiryTime = userLoginBaseExpiryTime
|
||||
}
|
||||
return expiryTime
|
||||
}
|
||||
|
||||
func holdFileChange() {
|
||||
|
Loading…
Reference in New Issue
Block a user