Changeset 168
- Timestamp:
- 06/22/04 20:30:49 (4 years ago)
- Files:
-
- manage/trunk/CLI/Plugin.pm (modified) (1 diff)
- manage/trunk/CLI.pm (moved) (moved from manage/trunk/CLI/CLI.pm) (2 diffs)
- manage/trunk/manage (modified) (3 diffs)
- manage/trunk/plugins/dns.pm_ (modified) (4 diffs)
- manage/trunk/plugins/nodelist2.pm (modified) (1 diff)
- manage/trunk/README (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
manage/trunk/CLI/Plugin.pm
r162 r168 18 18 } 19 19 20 sub initialize() { 20 # Do post-construction initialisation. This can include authentication, 21 # whatever. Returns 1 for success, 0 for not. 22 sub begin() { 23 my $self = shift; 24 25 1; 26 } 27 28 sub end() { 29 my $self = shift; 30 31 1; 21 32 } 22 33 manage/trunk/CLI.pm
r167 r168 70 70 } 71 71 } 72 #$self->merge($args{plugins});73 72 } 74 73 return $self; … … 313 312 } 314 313 314 sub begin() { 315 my $self = shift; 316 317 for my $plugin (values(%{$self->{plugins}})) { 318 return 0 unless $plugin->begin(); 319 } 320 1; 321 } 322 323 sub end() { 324 my $self = shift; 325 326 for my $plugin (values(%{$self->{plugins}})) { 327 $plugin->end(); 328 } 329 1; 330 } 331 315 332 1; manage/trunk/manage
r165 r168 1 1 #!/usr/bin/perl 2 3 # Add cli-parser to our module include path4 BEGIN { push(@INC, "./CLI"); }5 2 6 3 use warnings; … … 238 235 ); 239 236 237 # Merge config 238 for my $plugin (values(%{$CLI->{plugins}})) { 239 %CONF = (%CONF, %{$plugin->{conf}}) if $plugin->{conf}; 240 } 241 242 # Initialize modules 243 exit(1) unless $CLI->begin(); 240 244 241 245 # Initialise terminal and readline … … 278 282 279 283 END { 284 $CLI->end(); 280 285 Term::ReadLine::Gnu->WriteHistory("$ENV{HOME}/.{$SELF}history"); 281 286 if (!$FATAL) { manage/trunk/plugins/dns.pm_
r165 r168 1 1 package CLI::Plugin::DNS; 2 2 3 use strict; 3 4 use warnings; … … 22 23 ); 23 24 24 # Export some configuration variables25 %::CONF = (26 %::CONF,27 'dns-detail' => {28 value => \$DETAIL,29 pattern => 'on|off',30 help => 'Whether to display extra zone detail.',31 },32 'dns-key-name' => {33 value => \$KEY,34 help => 'The TSIG key name.',35 },36 'dns-key-secret' => {37 value => \$SECRET,38 help => 'The TSIG key secret.',39 },40 'dns-timeout' => {41 value => \$TIMEOUT,42 pattern => 'none|\d+',43 help => 'Network timeout.',44 },45 'dns-server' => {46 value => \$NS,47 help => 'IP address of name server.',48 pattern => '\d+\.\d+\.\d+\.\d+',49 },50 'dns-ttl' => {51 value => \$TTL,52 help => 'Default TTL for new entries.',53 pattern => '\d+',54 },55 'dns-zone' => {56 value => \$ZONE,57 help => 'Default zone.',58 pattern => '[.\dA-Za-z0-9-]+',59 },60 );61 62 25 sub new(%) { 63 26 my ($self, $class) = ({}, shift); … … 67 30 } 68 31 69 sub initialize() { 32 # Called after all plugins are constructed and configs are merged. 33 sub begin() { 70 34 my $self = shift; 35 36 1; 71 37 } 72 38 39 # Construct and return plugin object 73 40 new CLI::Plugin::DNS( 74 41 grammar => { … … 87 54 }, 88 55 conf => { 56 'dns-detail' => { 57 value => \$DETAIL, 58 pattern => 'on|off', 59 help => 'Whether to display extra zone detail.', 60 }, 61 'dns-key-name' => { 62 value => \$KEY, 63 help => 'The TSIG key name.', 64 }, 65 'dns-key-secret' => { 66 value => \$SECRET, 67 help => 'The TSIG key secret.', 68 }, 69 'dns-timeout' => { 70 value => \$TIMEOUT, 71 pattern => 'none|\d+', 72 help => 'Network timeout.', 73 }, 74 'dns-server' => { 75 value => \$NS, 76 help => 'IP address of name server.', 77 pattern => '\d+\.\d+\.\d+\.\d+', 78 }, 79 'dns-ttl' => { 80 value => \$TTL, 81 help => 'Default TTL for new entries.', 82 pattern => '\d+', 83 }, 84 'dns-zone' => { 85 value => \$ZONE, 86 help => 'Default zone.', 87 pattern => '[.\dA-Za-z0-9-]+', 88 }, 89 89 }, 90 90 ); manage/trunk/plugins/nodelist2.pm
r166 r168 1 1 { 2 add => {3 '1)host' => {4 '$[a-zA-Z0-9.-]+' => {5 '$*[0-9.]+' => {6 ACTION => sub {7 print "@_\n"8 },9 HELP => [ "<ip>", "IP address to bind to hostname." ],10 },11 HELP => [ "<hostname>", "Hostname to add." ],12 },13 },14 },15 2 }; manage/trunk/README
r160 r168 1 See https:// havs.swapoff.org/ManageCLIfor full documentation.1 See https://svn.swapoff.org/manage for full documentation.
