File "unix_socket_exporter.cpython-36.opt-1.pyc"

Full Path: /home/attunedd/public_html/byp/izo/con7ext_sym404/rintoar.txt/lib/python3.6/site-packages/tuned/exports/__pycache__/unix_socket_exporter.cpython-36.opt-1.pyc
File size: 8.59 KB
MIME-type: text/x-bytecode.python
Charset: 8 bit

3

<e@sddlZddlZddlZddlZddlmZddlZddlj	Z	ddl
mZddlZddl
Z
ddlZejjZGdddejZdS)N)
interfaces)ismethodc@seZdZdZejejejejej	fddZ
ddZddZdd	Z
d
dZdd
ZddZddZddZddZd$ddZd%ddZddZddZd d!Zd"d#ZdS)&UnixSocketExportera9
	Export method calls through Unix Domain Socket Interface.

	We take a method to be exported and create a simple wrapper function
	to call it. This is required as we need the original function to be
	bound to the original object instance. While the wrapper will be bound
	to an object we dynamically construct.
	cCs||_d|_|rtjd|ng|_g|_dd	g|_|r|j}xt|ddD]\}}yt||j|<WqPt	k
ry2|dkrt
j|j|j|<nt
j|j|j|<Wn2tk
rtjd|dkrdnd|fYnXYqPXqPW||_||_i|_t|_d|_d|_dS)
Nz,;rrz(%s '%s' does not exists, leaving defaultZUserZGroupr)_socket_path_socket_objectresplit_socket_signal_pathsZ_socket_signal_objects
_ownership	enumerateint
ValueErrorpwdgetpwnamZpw_uidgrpZgetgrnamZgr_gidKeyErrorlogerror_permissions_connections_backlog_unix_socket_methodsset_signalsZ_connZ_channel)selfZsocket_pathZsignal_pathsZ	ownershipZpermissionsZconnections_backlogior*/usr/lib/python3.6/unix_socket_exporter.py__init__s.
.zUnixSocketExporter.__init__cCs
|jdk	S)N)r	)rrrr running;szUnixSocketExporter.runningcsTtstdj}||jkr,td|Gfdddt}||||j|<dS)Nz#Only bound methods can be exported.z/Method with this name (%s) is already exported.cs eZdZddZfddZdS)z*UnixSocketExporter.export.<locals>.wrappercSs||_||_dS)N)Z
_in_signature_out_signature)rin_signature
out_signaturerrr r!Gsz3UnixSocketExporter.export.<locals>.wrapper.__init__cs
||S)Nr)rargskwargs)methodrr __call__Ksz3UnixSocketExporter.export.<locals>.wrapper.__call__N)__name__
__module____qualname__r!r)r)r(rr wrapperFsr-)r	Exceptionr*robject)rr(r$r%method_namer-r)r(r export>s
zUnixSocketExporter.exportcs^tstdj}||jkr,td|Gfdddt}|||j|<|jj|dS)Nz#Only bound methods can be exported.z/Method with this name (%s) is already exported.cs eZdZddZfddZdS)z*UnixSocketExporter.signal.<locals>.wrappercSs
||_dS)N)r#)rr%rrr r!Ysz3UnixSocketExporter.signal.<locals>.wrapper.__init__cs
||S)Nr)rr&r')r(rr r)\sz3UnixSocketExporter.signal.<locals>.wrapper.__call__N)r*r+r,r!r)r)r(rr r-Xsr-)rr.r*rr/radd)rr(r%r0r-r)r(r signalPs
zUnixSocketExporter.signalcOs||jkrtd|x|jD]}tjd|yDtjtjtj}|jd|j	||j
|d||d|jWqtk
r}ztj
d|||fWYdd}~XqXqWdS)NzSignal '%s' doesn't exist.zSending signal on socket %sFz2.0)jsonrpcr(paramsz2Error while sending signal '%s' to socket '%s': %s)rr.rrdebugsocketAF_UNIXSOCK_STREAMZsetblockingZconnect
_send_datacloseOSErrorwarning)rr3r&r'pserrr send_signalbs


zUnixSocketExporter.send_signalcCs|jj|dS)N)rappend)rpathrrr register_signal_pathpsz'UnixSocketExporter.register_signal_pathcCs|jrtjj|jr tj|jtjtjtj|_|jj	|j|jj
|jtj|j|j
d|j
d|jrtj|j|jdS)Nrr)rosrCexistsunlinkr7r8r9r	ZbindZlistenrchownr
rchmod)rrrr _construct_socket_objectssz+UnixSocketExporter._construct_socket_objectcCs |jrdS|j|jdS)N)r"stoprJ)rrrr start~szUnixSocketExporter.startcCs|jr|jjdS)N)r	r;)rrrr rKszUnixSocketExporter.stopcCsbtjd|y|jtj|jdWn4tk
r\}ztjd||fWYdd}~XnXdS)NzSending socket data: %s)zutf-8zFailed to send data '%s': %s)rr6sendjsondumpsencoder.r=)rr?datar@rrr r:s
zUnixSocketExporter._send_dataFcCs$d|d}|r||d<n||d<|S)Nz2.0)r4idrresultr)rrQrRrresrrr _create_responses
z#UnixSocketExporter._create_responseNcCs|j|||dd|dS)N)codemessagerQT)rrR)rU)rrVrWrRrQrrr _create_error_responces
z)UnixSocketExporter._create_error_responcecCs|j||S)N)rU)rrSrRrrr _create_result_responsesz*UnixSocketExporter._create_result_responsecCs|jdr|SdS)NrR)get)rrQrrr 	_check_ids
zUnixSocketExporter._check_idcCsnt|tks&|jddks&|jdr2|jddS|jd}d}|d|jkrb|j|jdd|Sy|jd	s|j|d}njt|d	ttfkr|j|d|d	}n>t|d	tkr|j|df|d	}n|j|jdd|SWnntk
r$}z|j|jdd|t	|Sd}~Xn8t
k
rZ}z|j|jdd
|t	|Sd}~XnX|j|j||S)Nr4z2.0r(iXzInvalid RequestrRiYzMethod not foundr5iZzInvalid paramsrErroriiii)typedictrZrXrr[listtuple	TypeErrorstrr.rY)rreqrRretr@rrr _process_requests&&

$&z#UnixSocketExporter._process_requestc	#Cs|jsdSxtj|jgffd\}}}|r|jj\}}y*d}x |jdj}|sZP||7}qFWWn2tk
r}ztjd|wWYdd}~XnX|ryt	j
|}WnRtk
r}z4tjd||f|j||jddt
|wWYdd}~XnXt|tttfkr>tjd	|j||jd
dt
|qt|ttfkrt|dkrz|j||jddt
|qg}x(|D] }|j|}|r|j|qW|r|j||n|j|}|r|j||qdSqWdS)a
		Periodically checks socket object for new calls. This allows to function without special thread.
		Interface is according JSON-RPC 2.0 Specification (see https://www.jsonrpc.org/specification)
		
		Example calls:
		
		printf '[{"jsonrpc": "2.0", "method": "active_profile", "id": 1}, {"jsonrpc": "2.0", "method": "profiles", "id": 2}]' | nc -U /run/tuned/tuned.sock
		printf '{"jsonrpc": "2.0", "method": "switch_profile", "params": {"profile_name": "balanced"}, "id": 1}' | nc -U /run/tuned/tuned.sock
		Nriz"Failed to load data of message: %sz!Failed to load json data '%s': %sizParse errorzWrong format of calliXzInvalid RequestiDiDi)r"selectr	ZacceptZrecvdecoder.rrrNloadsr:rXrbr]r`r_r^lenrerB)	rr_ZconnrQZrec_datar@rTrcrrr period_checksT




zUnixSocketExporter.period_check)F)NN)r*r+r,__doc__constsZCFG_DEF_UNIX_SOCKET_PATHZ CFG_DEF_UNIX_SOCKET_SIGNAL_PATHSZCFG_DEF_UNIX_SOCKET_OWNERSHIPZCFG_DEF_UNIX_SOCKET_PERMISIONSZ'CFG_DEF_UNIX_SOCKET_CONNECTIONS_BACKLOGr!r"r1r3rArDrJrLrKr:rUrXrYr[rermrrrr rs*

r)rEr
rrrfrZ
tuned.logsZtunedZtuned.constsroinspectrr7rNrgZlogsrZrZExporterInterfacerrrrr <module>s