Source code for teatime.plugins.eth1.rpc

"""This module contains plugins for controlling the HTTP RPC server status."""
from teatime.plugins import Context, JSONRPCPlugin, NodeType
from teatime.reporting import Issue, Severity


[docs]class GethStartRPC(JSONRPCPlugin): """Try to start the RPC service. Severity: Critical This plugin attempts to start the HTTP RPC interface using the :code:`admin_startRPC` method. """ INTRUSIVE = True def _check(self, context: Context) -> None: if context.node_type != NodeType.GETH: return payload = self.get_rpc_json(context.target, method="admin_startRPC") if payload: context.report.add_issue( Issue( title="Admin RPC Start Rights", description=( "The HTTP RPC service can be started " "using the admin_startRPC RPC call." ), raw_data=payload, severity=Severity.CRITICAL, ) )
[docs]class GethStopRPC(JSONRPCPlugin): """Try to stop the RPC service. Severity: Critical Talking about shooting yourself in the foot. This plugin attempts to stop the HTTP RPC interface using the :code:`admin_stopRPC` method. In case you didn't notice, this might affect the outcome of other plugins due to connection failures. """ INTRUSIVE = True def _check(self, context: Context) -> None: if context.node_type != NodeType.GETH: return payload = self.get_rpc_json(context.target, method="admin_stopRPC") if payload: context.report.add_issue( Issue( title="Admin RPC Stop Rights", description=( "The HTTP RPC service can be stopped " "using the admin_stopRPC RPC call." ), raw_data=payload, severity=Severity.CRITICAL, ) )