package GTop::Server; use DynaLoader (); use strict; BEGIN { no strict; $VERSION = '0.01'; @ISA = qw(GTop::ServerConfig); *dl_load_flags = DynaLoader->can('dl_load_flags'); do { __PACKAGE__->can('bootstrap') || \&DynaLoader::bootstrap; }->(__PACKAGE__, $VERSION); } sub read_config { my($self, $file) = @_; open FH, $file or die "open $file: $!"; while () { s/^\s+//; s/\s+$//; next if /^\#/; next unless $_; my($cmd, $rest) = split /\s+/, $_, 2; if (my $meth = GTop::ServerConfig->can($cmd)) { $self->$meth($rest); } else { die "unknown command: `$cmd'"; } } } package GTop::ServerConfig; sub allow { my($self, $line) = @_; $line =~ s/^from\s+//; for (split /\s+/, $line) { my $msg = $self->allow($_); die $msg if $msg; } } sub port { my($self, $arg) = @_; $self->port($arg); } sub debug { my($self, $arg) = @_; $self->flags($self->flags | GTop::Server::DEBUG) if $arg } sub no_daemon { my($self, $arg) = @_; $self->flags($self->flags | GTop::Server::NO_DAEMON) if $arg } sub no_fork { my($self, $arg) = @_; $self->flags($self->flags | GTop::Server::NO_FORK) if $arg } 1; __END__