MCPcopy Create free account
hub / github.com/1Panel-dev/1Panel / getSSHSessions

Function getSSHSessions

agent/utils/websocket/process_data.go:244–321  ·  view source on GitHub ↗
(config SSHSessionConfig)

Source from the content-addressed store, hash-verified

242}
243
244func getSSHSessions(config SSHSessionConfig) (res []byte, err error) {
245 var (
246 result []sshSession
247 users []host.UserStat
248 processes []*process.Process
249 )
250 ctx, cancel := context.WithTimeout(context.Background(), defaultTimeout)
251 defer cancel()
252
253 users, err = host.UsersWithContext(ctx)
254 if err != nil {
255 res, err = json.Marshal(result)
256 return
257 }
258
259 usersByHost := make(map[string][]host.UserStat)
260 for _, user := range users {
261 if user.Host == "" {
262 continue
263 }
264 if config.LoginUser != "" && !strings.Contains(user.User, config.LoginUser) {
265 continue
266 }
267 if config.LoginIP != "" && !strings.Contains(user.Host, config.LoginIP) {
268 continue
269 }
270 usersByHost[user.Host] = append(usersByHost[user.Host], user)
271 }
272
273 if len(usersByHost) == 0 {
274 res, err = json.Marshal(result)
275 return
276 }
277
278 processes, err = process.ProcessesWithContext(ctx)
279 if err != nil {
280 res, err = json.Marshal(result)
281 return
282 }
283
284 for _, proc := range processes {
285 name, _ := proc.Name()
286 if name != "sshd" || proc.Pid == 0 {
287 continue
288 }
289 connections, _ := proc.Connections()
290 if len(connections) == 0 {
291 continue
292 }
293
294 cmdline, cmdErr := proc.Cmdline()
295 if cmdErr != nil {
296 continue
297 }
298
299 for _, conn := range connections {
300 matchedUsers, exists := usersByHost[conn.Raddr.IP]
301 if !exists {

Callers 1

ProcessDataFunction · 0.85

Calls 2

NameMethod · 0.65
FormatMethod · 0.45

Tested by

no test coverage detected