def get_connected_clients(self, blah=None): result = [] shares = self.dispatcher.call_sync('share.query', [('type', '=', 'afp')]) for proc in bsd.getprocs(bsd.ProcessLookupPredicate.PROC): if proc.command != 'afpd': continue def test_descriptor(d): if d.type != bsd.DescriptorType.SOCKET: return False if not d.local_address: return False return d.local_address[1] == 548 cnid_pid = None path = proc.cwd share = first_or_default(lambda s: s['filesystem_path'] == path, shares) sock = first_or_default(test_descriptor, proc.files) if not share or not sock: continue # Look up the cnid_dbd process too for p in bsd.getprocs(bsd.ProcessLookupPredicate.PROC): if p.command == 'cnid_dbd' and p.cwd == os.path.join( path, '.AppleDB'): cnid_pid = p.pid try: u = pwd.getpwuid(proc.uid) user = u.pw_name except KeyError: user = str(proc.uid) result.append({ 'host': str(sock.peer_address[0]), 'share': share['name'], 'user': user, 'connected_at': proc.started_at, 'extra': { 'pid': proc.pid, 'cnid_dbd_pid': cnid_pid } }) return result
def get_connected_clients(self, blah=None): result = [] shares = self.dispatcher.call_sync('share.query', [('type', '=', 'afp')]) for proc in bsd.getprocs(bsd.ProcessLookupPredicate.PROC): if proc.command != 'afpd': continue def test_descriptor(d): if d.type != bsd.DescriptorType.SOCKET: return False if not d.local_address: return False return d.local_address[1] == 548 cnid_pid = None path = proc.cwd share = first_or_default(lambda s: s['filesystem_path'] == path, shares) sock = first_or_default(test_descriptor, proc.files) if not share or not sock: continue # Look up the cnid_dbd process too for p in bsd.getprocs(bsd.ProcessLookupPredicate.PROC): if p.command == 'cnid_dbd' and p.cwd == os.path.join(path, '.AppleDB'): cnid_pid = p.pid try: u = pwd.getpwuid(proc.uid) user = u.pw_name except KeyError: user = str(proc.uid) result.append({ 'host': str(sock.peer_address[0]), 'share': share['name'], 'user': user, 'connected_at': proc.started_at, 'extra': { 'pid': proc.pid, 'cnid_dbd_pid': cnid_pid } }) return result
def get_process_list(self): procs = bsd.getprocs(bsd.ProcessLookupPredicate.PROC) for i in procs: try: argv = list(i.argv) yield {"pid": i.pid, "title": argv[0], "command": i.command, "argv": argv, "env": list(i.env)} except: continue
def get_process_list(self): procs = bsd.getprocs(bsd.ProcessLookupPredicate.PROC) for i in procs: try: argv = list(i.argv) yield { 'pid': i.pid, 'title': argv[0], 'command': i.command, 'argv': argv, 'env': list(i.env) } except: continue
def get_open_files(self, path): result = [] for proc in bsd.getprocs(bsd.ProcessLookupPredicate.PROC): for f in proc.files: if not f.path: continue if f.path.startswith(path): result.append({ 'pid': proc.pid, 'process_name': proc.command, 'path': f.path }) return result