mirror of
https://salsa.debian.org/freeipa-team/freeipa.git
synced 2024-12-23 07:33:27 -06:00
8080bf7b35
The communication between ods-signer and the socket-activated process has changed with OpenDNSSEC 2.1. Adapt ipa-ods-exporter to support also the new protocol. The internal database was also modified. Add a wrapper calling the right code (table names hab=ve changed, as well as table columns). With OpenDNSSEC the policy also needs to be explicitely loaded after ods-enforcer-db-setup has been run, with ods-enforcer policy import The command ods-ksmutil notify must be replace with ods-enforce flush. Related: https://pagure.io/freeipa/issue/8214 Reviewed-By: Alexander Bokovoy <abokovoy@redhat.com> Reviewed-By: Christian Heimes <cheimes@redhat.com>
53 lines
1.4 KiB
Python
53 lines
1.4 KiB
Python
#
|
|
# Copyright (C) 2020 FreeIPA Contributors see COPYING for license
|
|
#
|
|
|
|
import six
|
|
import abc
|
|
import sqlite3
|
|
from ipaplatform.paths import paths
|
|
|
|
ODS_SE_MAXLINE = 1024 # from ODS common/config.h
|
|
|
|
|
|
@six.add_metaclass(abc.ABCMeta)
|
|
class AbstractODSDBConnection():
|
|
"""Abstract class representing the Connection to ODS database."""
|
|
def __init__(self):
|
|
"""Creates a connection to the kasp database."""
|
|
self._db = sqlite3.connect(paths.OPENDNSSEC_KASP_DB)
|
|
self._db.row_factory = sqlite3.Row
|
|
self._db.execute('BEGIN')
|
|
|
|
@abc.abstractmethod
|
|
def get_zones(self):
|
|
"""Returns a list of zone names."""
|
|
|
|
@abc.abstractmethod
|
|
def get_zone_id(self, zone_name):
|
|
"""Returns a list of zone ids for the given zone_name."""
|
|
|
|
@abc.abstractmethod
|
|
def get_keys_for_zone(self, zone_id):
|
|
"""Returns a list of keys for the given zone_id."""
|
|
|
|
def close(self):
|
|
"""Closes the connection to the kasp database."""
|
|
self._db.close()
|
|
|
|
|
|
@six.add_metaclass(abc.ABCMeta)
|
|
class AbstractODSSignerConn():
|
|
"""Abstract class representing the Connection to ods-signer."""
|
|
def __init__(self, conn):
|
|
"""Initializes the object with a socket conn."""
|
|
self._conn = conn
|
|
|
|
@abc.abstractmethod
|
|
def read_cmd(self):
|
|
"""Reads the next command on the connection."""
|
|
|
|
@abc.abstractmethod
|
|
def send_reply_and_close(self, reply):
|
|
"""Sends the reply on the connection."""
|