#!/usr/opkg/bin/perl -w ## ## OSSP tabea - Web Configuration Editor ## The Tabea Perl Module ## ## Copyright (c) 2001-2002 The OSSP Project ## Copyright (c) 2001-2002 Cable & Wireless Deutschland ## ## This file is part of OSSP tabea, a web configuration editor ## which can be found at http://www.ossp.org/pkg/tool/tabea/. ## ## Permission to use, copy, modify, and distribute this software for ## any purpose with or without fee is hereby granted, provided that ## the above copyright notice and this permission notice appear in all ## copies. ## ## THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED ## WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF ## MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. ## IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR ## CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF ## USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ## ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, ## OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT ## OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF ## SUCH DAMAGE. ## ## Tabea.pm: Tabea Module ## package TABEA::Tabea; require 5.000; use IO::File; sub new{ # Currently the only supported $type is "HTML2" which causes only # tags described in RFC1866 to be used. When a menu is rendered, # some elements may require uniqe names in a scope wider than # known by this module, i.e. when two configs are presented on one # screen or along with other information, so every item is # prefixed with $prefix. my $proto = shift; my $class = ref($proto) || $proto || "TABEA::Tabea.pm" ; my ($config, $prefix) = @_; my $cfgfh; my $self = {}; $self->{Config} = $config; $self->{Prefix} = $prefix; $cfgfh = new IO::File ("<".$self->{Config}) || die ; while (<$cfgfh>) { $self->{Configuration} .= $_; } $cfgfh->close(); bless($self, $class); return $self; } sub load{ # Reads $data and sets the value of items. my $self = shift; my $rc = 1; if (! @_) { $rc = 0 }; my ($data) = @_; print "TABEA::Tabea $data load funtion\n"; return $rc; } sub save { # Writes items including their values. my $self = shift; my $rc = 1; if (! @_) { $rc = 0 }; my ($data) = @_; print "TABEA::Tabea $data save funtion\n"; return $rc; } sub parse { my $self = shift; my $rc = 1; if (! @_) { $rc = 0 }; my ($param) = @_; print "TABEA::Tabea $param parse funtion\n"; return $rc; } sub render { # Renders a menu and writes it into the buffer. The contents of the # buffer can be merged into a larger output. Values are verified # and invalid data is marked (FIXME how? red, reset to default, # configurable behaviour, configurable error messages ...) The # caller must finally print out the menu and when an input comes # back it must identify menu activity (i.e. by checking the # prefix) and call render again and again or execute some action. my $self = shift; my $rc = 1; if (! @_) { $rc = 0 }; my ($buffer) = @_; $buffer .= $self->{Configuration}; return $buffer, $rc; } sub import{ # Reads a legacy (manually edited or previously exported) file and # tries to match out values. my $self = shift; my $rc = 1; if (! @_) { $rc = 0 }; my ($legacyfile) = @_; my $legacyfh; my $newdata = ""; print "TABEA::Tabea import " . $legacyfile . "funtion\n"; $legacyfh = new IO::File ("<".$legacyfile) || die ; while () { $newdata .= $_; } $legacyfh->close(); return $rc; } sub export{ # Applies variable substitution for a template and writes the # result out to exportfile. my $self = shift; my $rc = 1; if (! @_) { $rc = 0 }; my ($template, $exportfile) = @_; my $exportfh; print "TABEA::Tabea $template, $exportfile export funtion\n"; $exportfh = new IO::File (">".$exportfile) || die "Cannot open $exportfile for writing."; print $exportfh $template; $exportfh->close(); return $rc; } sub destroy{ my $self = shift; my $rc = 1; print "TABEA::Tabea $self destroy funtion\n"; return $rc; } 1;