]>
git.ipfire.org Git - ddns.git/blob - ddns.in
2 ###############################################################################
4 # ddns - A dynamic DNS client for IPFire #
5 # Copyright (C) 2012 IPFire development team #
7 # This program is free software: you can redistribute it and/or modify #
8 # it under the terms of the GNU General Public License as published by #
9 # the Free Software Foundation, either version 3 of the License, or #
10 # (at your option) any later version. #
12 # This program is distributed in the hope that it will be useful, #
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of #
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
15 # GNU General Public License for more details. #
17 # You should have received a copy of the GNU General Public License #
18 # along with this program. If not, see <http://www.gnu.org/licenses/>. #
20 ###############################################################################
26 from ddns
.i18n
import _
28 CONFIGURATION_FILE
= "@configsdir@/ddns.conf"
32 p
= argparse
.ArgumentParser(description
=_("Dynamic DNS Updater"))
34 p
.add_argument("-d", "--debug", action
="store_true",
35 help=_("Enable debugging output"))
37 p
.add_argument("-c", "--config", default
=CONFIGURATION_FILE
,
38 help=_("Load configuration file (Default: %s)") % CONFIGURATION_FILE
)
40 # Create subparsers for commands.
41 subparsers
= p
.add_subparsers(help=_("Sub-command help"),
42 dest
="subparsers_name")
45 p_guess_ip_addresses
= subparsers
.add_parser("guess-ip-addresses",
46 help=_("Guess the external IP addresses"))
49 p_list_providers
= subparsers
.add_parser("list-providers",
50 help=_("List all available providers"))
53 p_update
= subparsers
.add_parser("update", help=_("Update DNS record"))
54 p_update
.add_argument("hostname")
55 p_update
.add_argument("--force", action
="store_true",
56 help=_("Execute update even if the record is already up to date"))
59 p_update_all
= subparsers
.add_parser("update-all", help=_("Update all DNS records"))
60 p_update_all
.add_argument("--force", action
="store_true",
61 help=_("Execute update even if the record is already up to date"))
65 # Initialise the DDNSCore module.
66 d
= ddns
.DDNSCore(debug
=args
.debug
)
70 d
.load_configuration(args
.config
)
73 if args
.subparsers_name
== "guess-ip-addresses":
75 ipv6_address
= d
.system
.guess_external_ip_address("ipv6")
77 print _("IPv6 Address: %s") % ipv6_address
80 ipv4_address
= d
.system
.guess_external_ip_address("ipv4")
82 print _("IPv4 Address: %s") % ipv4_address
84 elif args
.subparsers_name
== "list-providers":
85 provider_names
= d
.get_provider_names()
86 print "\n".join(provider_names
)
88 elif args
.subparsers_name
== "update":
89 d
.updateone(hostname
=args
.hostname
, force
=args
.force
)
91 elif args
.subparsers_name
== "update-all":
92 d
.updateall(force
=args
.force
)
95 raise RuntimeError("Unhandled command: %s" % args
.subparsers_name
)