예제 #1
0
def record_action(action, config, ignore_errors):
    records = config.records
    if not records:
        click.secho('There is no record configured', fg='yellow', bold=True)
    freenom = freenom_dns_updater.Freenom()
    if not freenom.login(config.login, config.password):
        click.secho('Unable to login with the given credential',
                    fg='red',
                    bold=True)
        sys.exit(6)
    domains = freenom.list_domains()
    domains_mapping = {d.name: d for d in domains}
    ok_count = 0
    err_count = 0
    for rec in records:
        domain_name = rec.domain.name
        rec.domain = domains_mapping.get(domain_name)
        if rec.domain is None:
            click.secho("You don't own the domain \"{}\"".format(domain_name),
                        fg='yellow',
                        bold=True)
            if ignore_errors:
                continue
            else:
                sys.exit(7)
        try:
            action(freenom, rec)
        except Exception as e:
            if not ignore_errors:
                raise
            # TODO log e
            err_count += 1
        else:
            ok_count += 1
    return ok_count, err_count
예제 #2
0
def domain_forward(user, password, domain, url, mode):
    freenom = freenom_dns_updater.Freenom()
    if not freenom.login(user, password):
        click.secho('Unable to login with the given credential',
                    fg='red',
                    bold=True)
        sys.exit(6)
    # search the domain
    for d in freenom.list_domains():
        if d.name == domain:
            domain = d
            break
    if not isinstance(domain, freenom_dns_updater.Domain):
        click.secho(f"You don't own the domain \"{domain}\"",
                    fg='yellow',
                    bold=True)
        sys.exit(7)
    try:
        cururl, curmode = freenom.current_url_forward(domain.id)
    except Exception:
        cururl = None
        curmode = None

    click.echo("Current: " + domain.name + " --" + curmode + "--> " + cururl)

    if url is None:
        return
    if cururl == url and curmode == mode:
        click.echo("Forward already set")
        return

    if freenom.change_url_forward(domain.id, url, mode):
        click.echo("New set: " + domain.name + " --" + mode + "--> " + url)
    else:
        click.echo("Something went wrong!")
예제 #3
0
def domain_ls(user, password, format):
    freenom = freenom_dns_updater.Freenom()
    if not freenom.login(user, password):
        click.secho('Unable to login with the given credential', fg='red', bold=True)
        sys.exit(6)
    # search the domain
    domains = freenom.list_domains()
    click.echo(format_data(domains, format))
예제 #4
0
def record_ls(user, password, domain, format):
    freenom = freenom_dns_updater.Freenom()
    if not freenom.login(user, password):
        click.secho('Unable to login with the given credential', fg='red', bold=True)
        sys.exit(6)
    # search the domain
    for d in freenom.list_domains():
        if d.name == domain:
            domain = d
            break
    if not isinstance(domain, freenom_dns_updater.Domain):
        click.secho("You don't own the domain \"{}\"".format(domain), fg='yellow', bold=True)
        sys.exit(7)
    records = freenom.list_records(domain)
    click.echo(format_data(records, format))
예제 #5
0
def domain_nameserver(user, password, domain, nameserver):
    freenom = freenom_dns_updater.Freenom()
    if not freenom.login(user, password):
        click.secho('Unable to login with the given credential',
                    fg='red',
                    bold=True)
        sys.exit(6)
    # search the domain
    for d in freenom.list_domains():
        if d.name == domain:
            domain = d
            break
    if not isinstance(domain, freenom_dns_updater.Domain):
        click.secho(f"You don't own the domain \"{domain}\"",
                    fg='yellow',
                    bold=True)
        sys.exit(7)
    if not nameserver:
        mode, nameservers = freenom.get_nameserver(domain.id)
        if mode == "default":
            click.echo("Using default freenom nameserver")
        else:
            for i, elem in enumerate(nameservers):
                click.echo("Nameserver {}: {}".format(i + 1, elem))
    else:
        for i, ns in enumerate(nameserver):
            if not isinstance(ns, str) or ns == "None":
                nameserver[i] = ""
        if freenom.set_nameserver(domain, nameserver):
            if len("".join(nameserver)) > 0:
                click.echo("Nameserver set")
            else:
                click.echo(
                    "Namerserver removed. Turned back to freenom nameserver.")
        else:
            click.echo("Something went wrong!")
예제 #6
0
 def __init__(self, *args, **kwargs):
     super(DomainCheckerFreenomAPI, self).__init__(*args, **kwargs)
     self.freenom = freenom_dns_updater.Freenom()