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