a h@sddlmZddlZddlZejdkr.ddlZddlmZddl Z ddl Z ddl Z ddl ZddlZddlZddlZddlZddlZddlmZmZddlmZmZddlmZddlmZdd lmZm Z d gZ!Gd d d eeeejZ"dS) )absolute_importN))GObject)parse_config_setting get_config) RpcChannelConnectionState)SETroubleshootServerInterface)SETroubleshootDatabaseInterface)Retryget_error_from_socket_exceptionServerConnectionHandlerc @seZdZejjdejffejjdejejejejffejjdejejffejjdejejffejjdejejejffdZ ddZ ddZ dddZ d d Z d d Zd dZddZddZddZddZddZdS)r N)alertconnection_state_changedsignatures_updated database_bind async-errorcCstj|ddtj||jd|j|d||d|tdd|_tdd|_ ||_ d |_ t |j |jd d |_d |_d |_dS)NZsealert) channel_typeZchangedZSEAlertZSETroubleshootDatabaseNotifyZgeneral pkg_version rpc_versionFg?)Znotify_intervalTZaudit_listener)r__init__rconnection_stateconnecton_connection_state_changeZconnect_rpc_interfacerrrusernameretry_connection_if_closedr retry_connectionget_connection_retry_intervalconnection_retryreport_connect_failure database_name)selfrr"C/usr/lib/python3.9/site-packages/setroubleshoot/serverconnection.pyr0s     z ServerConnectionHandler.__init__cCsX|d|||||tj@s,|tjtjB@rT|jrT|tj@sT|jtj|j dS)Nr) emitrOPENHUPERRORrRETRYrupdaterstart)r!rflagsZ flags_addedZ flags_removedr"r"r#r@s z2ServerConnectionHandler.on_connection_state_changec CsJ|dur||_|jjtj@r dSz|jtjtjtjBt |jj |jj |j_ t |jj t jt j|jj |j||j|jtjtjtjB|jd|_|WntjyD}zjt|\}}|jdkrttjd|d|_|tjkrtj}ntj}| |tj||WYd}~dSd}~00dS)NTz,attempt to open server connection failed: %sF)!socket_addressrr+rr%r)Z CONNECTINGr'SocketsocketZfamilytypefcntlfilenoZF_SETFDZ FD_CLOEXECrZget_py_addressZ io_watch_addZhandle_client_ior(rstoprdo_logonerrorr syslogLOG_ERRErrnoZEPIPEr&Zclose_connection)r!r,eerrnostrerror add_flagsr"r"r#openPs2      zServerConnectionHandler.opencCs||jrdSdSdS)NTF)r<r,r!ZretryZ user_datar"r"r#ros z(ServerConnectionHandler.retry_connectioncCs|jdkrdSdSdS)N <)Zfailed_attemptsr=r"r"r#rus z5ServerConnectionHandler.get_connection_retry_intervalcCs,ttjd|||f|d|||dS)Nz#async_error: method=%s errno=%s: %sr)r5r6r$)r!methodr9r:r"r"r#async_error_callback{sz,ServerConnectionHandler.async_error_callbackcs2fdd}j}|||jdS)Ncsd|dS)Nrr$)Z propertiesr!r"r#database_bind_callbacksz.database_bind_callback)rr add_callback add_errbackrB)r!rE async_rpcr"rDr#binds   zServerConnectionHandler.bindcs@fdd}j_jjd}|||jdS)NcsjtjdSN)rr)rZ AUTHENTICATED)rrrDr"r#logon_callbacksz8ServerConnectionHandler.do_logon..logon_callbackpasswd)rZ channel_nameZlogonrrFrGrB)r!rKrHr"rDr#r3s   z ServerConnectionHandler.do_logoncCs"t|||||}||jdSrJ)r set_filterrGrB)r!ZsiguserZ filter_typedatarHr"r"r#rMsz"ServerConnectionHandler.set_filtercCs|d|dS)NrrC)r!Zsiginfor"r"r#rszServerConnectionHandler.alertcCs|d||dS)NrrC)r!r/itemr"r"r#rsz*ServerConnectionHandler.signatures_updated)N)__name__ __module__ __qualname__rZ SignalFlagsZRUN_LASTZ TYPE_PYOBJECTZTYPE_INTZ TYPE_STRINGZ __gsignals__rrr<rrrBrIr3rMrrr"r"r"r#r s"   )#Z __future__rr5sys version_infoZ$setroubleshoot.default_encoding_utf8ZsetroubleshootZ gi.repositoryrr9r7gettextosZsix.moves.queueZsixresignalZselinuxr.r-r0Zsetroubleshoot.configrrZsetroubleshoot.rpcrrZsetroubleshoot.rpc_interfacesr r Zsetroubleshoot.utilr r __all__r r"r"r"r#s4