43 lines
1.4 KiB
Python
43 lines
1.4 KiB
Python
from flask_script import Manager
|
|
|
|
import sys
|
|
|
|
from lemur.constants import SUCCESS_METRIC_STATUS
|
|
from lemur.plugins.lemur_acme.acme_handlers import AcmeDnsHandler
|
|
from lemur.dns_providers.service import get_all_dns_providers, set_domains
|
|
from lemur.extensions import metrics, sentry
|
|
|
|
manager = Manager(
|
|
usage="Iterates through all DNS providers and sets DNS zones in the database."
|
|
)
|
|
|
|
|
|
@manager.command
|
|
def get_all_zones():
|
|
"""
|
|
Retrieves all DNS providers from the database. Refreshes the zones associated with each DNS provider
|
|
"""
|
|
print("[+] Starting dns provider zone lookup and configuration.")
|
|
dns_providers = get_all_dns_providers()
|
|
acme_dns_handler = AcmeDnsHandler()
|
|
|
|
function = f"{__name__}.{sys._getframe().f_code.co_name}"
|
|
log_data = {
|
|
"function": function,
|
|
"message": "",
|
|
}
|
|
|
|
for dns_provider in dns_providers:
|
|
try:
|
|
zones = acme_dns_handler.get_all_zones(dns_provider)
|
|
set_domains(dns_provider, zones)
|
|
except Exception as e:
|
|
print("[+] Error with DNS Provider {}: {}".format(dns_provider.name, e))
|
|
log_data["message"] = f"get all zones failed for {dns_provider} {e}."
|
|
sentry.captureException(extra=log_data)
|
|
|
|
status = SUCCESS_METRIC_STATUS
|
|
|
|
metrics.send("get_all_zones", "counter", 1, metric_tags={"status": status})
|
|
print("[+] Done with dns provider zone lookup and configuration.")
|