#!/usr/bin/perl

########################################################################
#
# pmsport Ver 2.1 beta2
#
# Interpreter  : Perl v5.003
# Portmaster   : ComOS 3.3.1
# Description:
#               pmsport <host> [<password> [<port>/ALL]]";
#
#######################################################################

require 'pm.pl';

$| = 1;

$Host = $ARGV[0] || die "Usage: pmsport <host> <password> [<port>/ALL]\n";
$Pass = $ARGV[1] || $Password;
$Port = $ARGV[2];


$Replace{PORT_TYPE,"Login/Netwrk"} = "network dialin";
$Replace{FLOW_CONTROL,"4"} = "off";
$Replace{FLOW_CONTROL,"36"} = "on";
$Replace{DEF_HOST,"0.0.0.0"} = "default";

portmaster::Connect("$Host", $Pass);

# get global vals
&portmaster::SysGlobal;

$MaxCnt = $GlobalValue{NUMPORTS};

if ($Port eq "") {
  $StartPort = 0;
  $EndPort   = $MaxCnt;
} else {
  $StartPort = $Port;
  $EndPort   = $Port;
}

sub p {
  my($What, $Val) = @_;
  $Valr = $PortValue{$Cnt, $Val};
  $Valr = $Replace{$Val, $Valr} if $Replace{$Val, $Valr};
  print "set port $PortValue{$Cnt, PORT} $What $Valr\n";
}

CNT_LOOP:
for ($Cnt = $StartPort; $Cnt <= $EndPort; $Cnt++) {
  &portmaster::Who("$Cnt");

  if ( $PortValue{$Cnt, PORT} eq "P0" ) {
	# skip printer port
        next CNT_LOOP;
  }
  p prompt,         LOGIN_PROMPT;
  p login,          PORT_TYPE;
  p modem,          MODEM_CONTROL;
  p idle,           IDLE_TIMEOUT;
  p "speed 1",      SPEED1;
  p "speed 2",      SPEED2;
  p "speed 3",      SPEED3;
  p parity,         SAVED_PARITY;
  p databits,       SAVED_DATA_BITS;
  p stopbits,       SAVED_STOP_BITS;
  p rts,	    SAVED_FLOW_CONTROL;
  p host,   	    DEF_HOST;
  p service_device, SERVICE_DEVICE;
  p service_device, LOGIN_SERVICE;
  p term, 	    TERM;

  if ($PortValue{$Cnt, SEC} and 2) {
     print "set port $PortValue{$Cnt, PORT} extended on\n";
  }  else {
     print "set port $PortValue{$Cnt, PORT} extended off\n";
  }
  if ($PortValue{$Cnt, SEC} and 0x1000) {
     print "set port $PortValue{$Cnt, PORT} security on\n";
  } else {
     print "set port $PortValue{$Cnt, PORT} security off\n";
  } 
}

close(portmaster::DS);
