Linux server2.hpierson.com 3.10.0-1160.105.1.el7.x86_64 #1 SMP Thu Dec 7 15:39:45 UTC 2023 x86_64
Apache
: 162.0.216.123 | : 216.73.216.54
28 Domain
?7.4.33
yvffpqmy
Terminal
AUTO ROOT
Adminer
Backdoor Destroyer
Linux Exploit
Lock Shell
Lock File
Create User
CREATE RDP
PHP Mailer
BACKCONNECT
UNLOCK SHELL
HASH IDENTIFIER
README
+ Create Folder
+ Create File
/
usr /
lib /
python2.7 /
site-packages /
supervisor /
[ HOME SHELL ]
Name
Size
Permission
Action
?;
medusa
[ DIR ]
drwxr-xr-x
?;
scripts
[ DIR ]
drwxr-xr-x
?;
skel
[ DIR ]
drwxr-xr-x
?;
tests
[ DIR ]
drwxr-xr-x
?;
ui
[ DIR ]
drwxr-xr-x
childutils.py
2.38
KB
-rw-r--r--
childutils.pyc
4.26
KB
-rw-r--r--
childutils.pyo
4.26
KB
-rw-r--r--
confecho.py
154
B
-rw-r--r--
confecho.pyc
485
B
-rw-r--r--
confecho.pyo
485
B
-rw-r--r--
datatypes.py
12.89
KB
-rw-r--r--
datatypes.pyc
17.6
KB
-rw-r--r--
datatypes.pyo
17.55
KB
-rw-r--r--
dispatchers.py
17.5
KB
-rw-r--r--
dispatchers.pyc
15.7
KB
-rw-r--r--
dispatchers.pyo
15.7
KB
-rw-r--r--
events.py
6.58
KB
-rw-r--r--
events.pyc
13
KB
-rw-r--r--
events.pyo
13
KB
-rw-r--r--
http.py
30.28
KB
-rw-r--r--
http.pyc
26.31
KB
-rw-r--r--
http.pyo
26.31
KB
-rw-r--r--
http_client.py
5.95
KB
-rw-r--r--
http_client.pyc
8.42
KB
-rw-r--r--
http_client.pyo
8.42
KB
-rw-r--r--
loggers.py
10.28
KB
-rw-r--r--
loggers.pyc
15.04
KB
-rw-r--r--
loggers.pyo
14.95
KB
-rw-r--r--
options.py
82.66
KB
-rw-r--r--
options.pyc
69.29
KB
-rw-r--r--
options.pyo
69.29
KB
-rw-r--r--
pidproxy.py
1.84
KB
-rw-r--r--
pidproxy.pyc
2.92
KB
-rw-r--r--
pidproxy.pyo
2.92
KB
-rw-r--r--
poller.py
6.54
KB
-rw-r--r--
poller.pyc
10.18
KB
-rw-r--r--
poller.pyo
10.18
KB
-rw-r--r--
process.py
35.4
KB
-rw-r--r--
process.pyc
28.68
KB
-rw-r--r--
process.pyo
28.68
KB
-rw-r--r--
rpcinterface.py
34.71
KB
-rw-r--r--
rpcinterface.pyc
29.7
KB
-rw-r--r--
rpcinterface.pyo
29.7
KB
-rw-r--r--
socket_manager.py
3.04
KB
-rw-r--r--
socket_manager.pyc
5.35
KB
-rw-r--r--
socket_manager.pyo
5.35
KB
-rw-r--r--
states.py
1.62
KB
-rw-r--r--
states.pyc
2.23
KB
-rw-r--r--
states.pyo
2.23
KB
-rw-r--r--
supervisorctl.py
47.77
KB
-rw-r--r--
supervisorctl.pyc
43.63
KB
-rw-r--r--
supervisorctl.pyo
43.63
KB
-rw-r--r--
supervisord.py
14.04
KB
-rw-r--r--
supervisord.pyc
12.43
KB
-rw-r--r--
supervisord.pyo
12.32
KB
-rw-r--r--
version.txt
5
B
-rw-r--r--
web.py
22.99
KB
-rw-r--r--
web.pyc
18.87
KB
-rw-r--r--
web.pyo
18.87
KB
-rw-r--r--
xmlrpc.py
21.63
KB
-rw-r--r--
xmlrpc.pyc
20.9
KB
-rw-r--r--
xmlrpc.pyo
20.9
KB
-rw-r--r--
Delete
Unzip
Zip
${this.title}
Close
Code Editor : socket_manager.py
import socket class Proxy: """ Class for wrapping a shared resource object and getting notified when it's deleted """ def __init__(self, object, **kwargs): self.object = object self.on_delete = kwargs.get('on_delete', None) def __del__(self): if self.on_delete: self.on_delete() def __getattr__(self, name): return getattr(self.object, name) def _get(self): return self.object class ReferenceCounter: """ Class for tracking references to a shared resource """ def __init__(self, **kwargs): self.on_non_zero = kwargs['on_non_zero'] self.on_zero = kwargs['on_zero'] self.ref_count = 0 def get_count(self): return self.ref_count def increment(self): if self.ref_count == 0: self.on_non_zero() self.ref_count = self.ref_count + 1 def decrement(self): if self.ref_count <= 0: raise Exception('Illegal operation: cannot decrement below zero') self.ref_count -= 1 if self.ref_count == 0: self.on_zero() class SocketManager: """ Class for managing sockets in servers that create/bind/listen before forking multiple child processes to accept() Sockets are managed at the process group level and referenced counted at the process level b/c that's really the only place to hook in """ def __init__(self, socket_config, **kwargs): self.logger = kwargs.get('logger', None) self.socket = None self.prepared = False self.socket_config = socket_config self.ref_ctr = ReferenceCounter( on_zero=self._close, on_non_zero=self._prepare_socket ) def __repr__(self): return '<%s at %s for %s>' % (self.__class__, id(self), self.socket_config.url) def config(self): return self.socket_config def is_prepared(self): return self.prepared def get_socket(self): self.ref_ctr.increment() self._require_prepared() return Proxy(self.socket, on_delete=self.ref_ctr.decrement) def get_socket_ref_count(self): self._require_prepared() return self.ref_ctr.get_count() def _require_prepared(self): if not self.prepared: raise Exception('Socket has not been prepared') def _prepare_socket(self): if not self.prepared: if self.logger: self.logger.info('Creating socket %s' % self.socket_config) self.socket = self.socket_config.create_and_bind() if self.socket_config.get_backlog(): self.socket.listen(self.socket_config.get_backlog()) else: self.socket.listen(socket.SOMAXCONN) self.prepared = True def _close(self): self._require_prepared() if self.logger: self.logger.info('Closing socket %s' % self.socket_config) self.socket.close() self.prepared = False
Close