def main(): service = MagmaService('policydb', mconfigs_pb2.PolicyDB()) apn_rules_dict = ApnRuleAssignmentsDict() assignments_dict = RuleAssignmentsDict() basenames_dict = BaseNameDict() rating_groups_dict = RatingGroupsDict() sessiond_chan = ServiceRegistry.get_rpc_channel('sessiond', ServiceRegistry.LOCAL) session_mgr_stub = LocalSessionManagerStub(sessiond_chan) sessiond_stub = SessionProxyResponderStub(sessiond_chan) reauth_handler = ReAuthHandler(assignments_dict, sessiond_stub) # Add all servicers to the server session_servicer = SessionRpcServicer(service.mconfig, rating_groups_dict, basenames_dict, apn_rules_dict) session_servicer.add_to_server(service.rpc_server) orc8r_chan = ServiceRegistry.get_rpc_channel('policydb', ServiceRegistry.CLOUD) policy_stub = PolicyAssignmentControllerStub(orc8r_chan) policy_servicer = PolicyRpcServicer(reauth_handler, basenames_dict, policy_stub) policy_servicer.add_to_server(service.rpc_server) # Start a background thread to stream updates from the cloud if service.config['enable_streaming']: stream = StreamerClient( { 'policydb': PolicyDBStreamerCallback(), 'apn_rule_mappings': ApnRuleMappingsStreamerCallback( session_mgr_stub, basenames_dict, apn_rules_dict, ), 'rule_mappings': RuleMappingsStreamerCallback( reauth_handler, basenames_dict, assignments_dict, apn_rules_dict, ), 'rating_groups': RatingGroupsStreamerCallback( rating_groups_dict), }, service.loop, ) stream.start() else: logging.info('enable_streaming set to False. Streamer disabled!') # Run the service loop service.run() # Cleanup the service service.close()
def dump_data(_client: PolicyDBStub, args): """ Dump data from Redis tables: - policydb:installed - policydb:apn_installed - policydb:basenames - policydb:rating_groups - policydb:rules and formats them to be more human readable. Args: _client: gRPC stub to interact with policydb args: Args CLI was called with Returns: None """ apn_rules_dict = ApnRuleAssignmentsDict(clear_data=False) assignments_dict = RuleAssignmentsDict(clear_data=False) basenames_dict = BaseNameDict() rating_groups_dict = RatingGroupsDict() policy_dict = PolicyRuleDict() print('*' * 80) print("*" + "policydb:installed".center(78) + "*") print('*' * 80) for k, v in assignments_dict.items(): formatted_val = textwrap.indent(text_format.MessageToString(v), " " * 4) print(f"{k}:\n{formatted_val}") print('\n') print('*' * 80) print("*" + "policydb:apn_installed".center(78) + "*") print('*' * 80) for k, v in apn_rules_dict.items(): formatted_val = textwrap.indent(text_format.MessageToString(v), " " * 4) print(f"{k}:\n{formatted_val}") print('\n') print('*' * 80) print("*" + "policydb:basenames".center(78) + "*") print('*' * 80) for k, v in basenames_dict.items(): formatted_val = textwrap.indent(text_format.MessageToString(v), " " * 4) print(f"{k}:\n{formatted_val}") print('\n') print('*' * 80) print("*" + "policydb:rating_groups".center(78) + "*") print('*' * 80) for k, v in rating_groups_dict.items(): formatted_val = textwrap.indent(text_format.MessageToString(v), " " * 4) print(f"{k}:\n{formatted_val}") print('\n') print('*' * 80) print("*" + "policydb:rules".center(78) + "*") print('*' * 80) for k, v in policy_dict.items(): formatted_val = textwrap.indent(text_format.MessageToString(v), " " * 4) print(f"{k}:\n{formatted_val}") print('\n')