Provided by: portslave_2010.04.19_i386 bug

NAME

       pslave.conf - configuration file for portslave(8)

FORMAT

       A  line  that  starts  with  ’#’  is  a  comment.   Any other line is a
       configuration statement.  Configuration statements may be  extended  to
       cover multiple lines with a ’\’ character at the end of a line.

OVERVIEW

       In  previous  versions  of  Portslave  there  are  two  main  types  of
       configuration directives, global directives  that  start  with  ’conf.’
       and  line directives starting with ’all.’  or ’sXX.’  The configuration
       directives were divided (somewhat arbitarily)  into  global  directives
       that  apply  to  all  lines and line directives that may have different
       values for each line.  This distinction makes no sense to me, so I have
       removed  it.   Now  all  directives  can have different values for each
       line!  This gives this version  of  Portslave  many  new  configuration
       options that were previously absent.

       If  a line starts with ’conf.’  or ’all.’  then it’s value is a default
       value for all lines.  If a line starts with  ’sXX.’   then  it’s  value
       applies  to  the specified line (where ’XX’ specifies the number of the
       ’NAS port’ - a non-negative number).  This number is  the  command-line
       parameter used on the portslave command line.

DATA TYPES

       Configuration  directives  are  all  comprised  of a name followed by a
       value.  The value may be of type int, dynamic int, bool, string,  enum,
       hostname,  hostname  service,  IP number, IP number service, dynamic IP
       number, and chat-script.

       int    A simple number.

       dynamic int
              Number which may end in a ’+’ character to specify that  the  it
              is to have the port number added to it.

       bool   A boolean value, 0/no/false or 1/yes/true.

       string A  string  may  comprise multiple lines, non-terminal lines must
              end with a ’\’ character.  Strings do  not  need  quotes  around
              them  (double  quotes  around  strings are accepted but ignored,
              useful if you want leading or  trailing  white-space  I  guess).
              The  null  string  representation  is  "".  All the usual string
              escape sequences are supported,  \n  for  a  new  line,  \r  for
              carriage   return,  ^D  or  ^d  means  the  controll-D  sequence
              (character ASCII 4 EOT).

       enum   One of several string values that are internally translated to a
              number.

       hostname
              Hostnames are resolved to IP addresses immediately upon startup!
              You must have your  name  server  running  before  Portslave  is
              started!

       hostname service
              hostname  and  IP  service  (either  a  number  or  a name to be
              resolved from /etc/services).  The IP service is optional, if it
              is  specified  then  the  IP address must be enclosed in "[" and
              "]".

       IP number
              Simple dotted-quad IP address.

       dynamic IP number
              Dotted-quad IP address which may  end  in  a  ’+’  character  to
              specify  that the IP address is to have the port number added to
              it.

EXPANSION

       Lines may be expanded in the following fashion:

       s{32-63}.tty tts/C{0-31}

       This means the same as the following:

       s32.tty tts/C0 s33.tty tts/C1 ...  s63.tty tts/C31

ATTRIBUTES

       logpassword
              bool - whether to write users’ passwords to syslog (default no).

       chat-script
              A chat script is at it’s simplest a series of expect send pairs.
              The system will expect a string and then send another string  in
              response   if/when   it   receives   the   expect   string.   An
              expect-string may be of the form A-B-C  in  which  case  if  the
              sub-string  A  is not found due to timeout then the sub-string B
              will be sent and then the sub-string C  will  be  expected.   NB
              There  must  be exactly three parts to an expect-string that has
              sub-strings and they are to  be  delimited  by  "-"  characters.
              Also note that to wait for a "-" you must escape it as "\-".

              The send string may have the following special escape sequences.
              "\d" for a one second delay, "\p" for a  100ms  pause,  "\l"  to
              lower DTR for one second, "\c" to specify that the string is not
              to end  with  a  "\r"  character,  and  "\K"  to  send  a  break
              character.

              Also  special  strings may be inserted before the expect strings
              in any part of the chat script.   The  special  strings  are  as
              follows:

              TIMEOUT  XX  to specify that the new timeout when waiting for an
              expect string is to be XX seconds.

              WAIT DCD to wait for the DCD line of the modem to be asserted.

              STATUS USER-NAME HOST-NAME writes an entry to the  /var/run/utmp
              file  with  the  user  name  field  set  to  the first parameter
              (portslave uses "Incoming" and "Connected" as the default values
              for   the  first  two  phases  of  connecting).   It  also  uses
              "%p:I.HANDSHAKE"  as  the  default  for   the   hostname.    See
              ctlportslave for the use of this.

              ABORT  XX  to  abort  the connection if the string XX (which may
              contain multiple words surrounded by quotes) is received.

              SETVAR Z=XX to set the variable specified by the character Z  to
              the  text following the string XX (quote the entire Z=XX part if
              the string XX contains a space).  The variable Z may be ’C’  for
              the  connect string, ’S’ for the source of the call (from caller
              line identification), or ’D’ for the number dialled (from  CLI).
              Here  is an example to recognise the connect strings from common
              configurations of Hayes compatible modems:

              SETVAR "C=CARRIER " SETVAR C+PROTOCOL: SETVAR C?CONNECT

              The first line does an unconditional assignment when the  string
              "CARRIER  "  is  found,  the second appends data to the variable
              when the string "PROTOCOL" is found, and the third  will  do  an
              assignment when the string "CONNECT" is found if the variable is
              empty.

              Note that in the variable assignment white-space preceeding  the
              value is removed.

GLOBAL DIRECTIVES

       hostname
              String  -  Hostname  of  the  current  system.   Defaults to the
              hostname returned by gethostname().

       loc_host
              IP number - address for local end of SLIP and  PPP  connections,
              defaults to a DNS lookup of the value from hostname.

       lockdir
              String  -  Lock  directory,  defaults  to /var/lock which is the
              directory for FSSTD compliant  systems.   If  set  to  an  empty
              string then it will turn off locking.

       rlogin String  -  Where  to  find the rlogin binary that accepts the -i
              flag for specifying the local user-name.

              Defaults to the location where we install rlogin-radius.

       telnet String - Where to find telnet.  This  can  just  be  the  system
              telnet.

              Defaults to where telnet is detected on the local system.

       ssh    String - Where to find ssh.  This can just be the system SSH.

              Defaults to where ssh is detected on the local system.

       pppd   String  -  Where  to  find  our  patched  pppd that supports the
              libpsr.so library.

              Defaults to the location where we install pppd-radius.

       locallogins
              bool - If you set this to true, you can login locally by putting
              a  ’!’  before  your loginname.  Useful for emergencies when the
              RADIUS server is down.  Setting this  is  a  potential  security
              risk!

       allow_chap
              bool  - Set to true if you want CHAP authentication.  Turned off
              by default at the moment because the chap code in  pppd  doesn’t
              allow setting the IP address.

       syslog hostname  - The host to send remote syslog data to.  Leave empty
              for only local logging.

       facility
              int - The local facility number.  A number from 0 to 7 inclusive
              means syslog facility local0 to local7.

       filterdir
              string  -  Directory where your scripts that set up IP filtering
              (typically using ipchains or iptables) are  stored.   To  invoke
              them,  just add the RADIUS-attribute Framed-Filter-Id = "foo" to
              your profile, where foo is the name of script.  Then the  script
              will  be  run  as:  script  <start:stop>  <remote ip> <local ip>
              <remote netmask>

       stripnames
              bool - whether to remove a preceeding ’P’, ’C’, ’S’, ’!’, or ’L’
              or  a  trailing  ’.slip’, ’.cslip’, or ’.ppp’ before storing the
              user-name in the utmp.

       tty    string - this is the only line directive that can’t be  used  as
              an  ’all.’  or  path  or  relative to /dev) that is used for the
              device.  If you want devices /dev/tts/0 and /dev/ttr/5 to be NAS
              ports  1  and  2 respectively and have them use the default line
              settings (from the ’all’ values) then you can use the  following
              lines:

              s1.tty    tts/0 s2.tty    ttr/5

       debug  int  -  0  means  no debug output, 1 means some, 2 means all.  2
              means lots of data!

       sysutmp
              bool - if true then log to utmp like a regular getty/login.   Do
              not set this to false unless you really know what you are doing,
              it breaks ctlportslave (amoung other things).

       syswtmp
              bool - if true then log to wtmp like a regular  getty/login  (NB
              we will never log to wtmp if utmp logging is off).

       utmpfrom
              string  - format of the utmp/wtmp FROM field.  See the expansion
              directives section.  The default  value  is  "%p:%P.%3.%4",  for
              ctlportslave  to  work  properly the start of the string must be
              "%p:".

       emumodem
              bool - emulate a modem.  This is for when Portslave is  directly
              connected  to  a machine that thinks it is connected to a modem.
              Portslave will emulate a Hayes compatible modem.

       porttype
              enum - ’async’, ’sync’, ’isdn’, ’isdn-v120’, or ’isdn-v110’.  If
              you don’t understand this then you probably want ’async’.

       authtype
              enum   -   ’none’,   ’radius’,   ’tacacs’,   ’remote’,  ’local’,
              ’radius/local’,     ’tacacs/local’,      ’local/radius’,      or
              ’local/tacacs’  for which type of authentication to use.  ’none’
              means that we  just  use  the  supplied  user-name  for  logging
              purposes and don’t talk to the RADIUS server on login.

       radclient_config_file
              string - file name for configuration file for radclient

       radnullpass
              bool  - true means to accept RADIUS logins with a null password,
              false means to reject them.  Default true.

       tacauthhost1 tacauthhost2
              hostname - host names for  the  TACACS  Authentication  host  if
              Portslave is compiled with TACACS support.

       protocol
              enum  -  ’login’,  ’rlogin’,  ’telnet’,  ’ssh1’,  ’ssh’, ’slip’,
              ’cslip’, ’ppp’, ’ppp_only’, ’tcpclear’,  ’tcplogin’,  ’console’,
              ’socket_client’, ’socket_server’, or ’socket_ssh’.
               Login  is  to exec /bin/login.  Rlogin, telnet, and ssh are for
              executing those programs to  login  to  other  machines.   Slip,
              cslip,  and PPP are for running those IP connectivity protocols,
              ppp_only is for leased line configuration.  Tcplogin and console
              are  apparently  not  implemented, with tcpclear I have not been
              able to work out what it does.  Contributions welcome!   Default
              ppp.

       host   hostname - default host for rlogin/telnet/ssh sessions.

       rem_host
              dynamic  IP number - used as the client IP address if the RADIUS
              server doesn’t send an IP address, or when it tells us to use  a
              dynamic address.

       netmask
              IP  number  -  in almost all cases it should be 255.255.255.255,
              leave it at that unless you really know what you are doing.

       mtu    int - MTU for connection, 1500 is a good value  as  that’s  what
              Ethernet  uses and most packets get routed over Ethernet in some
              way so 1500 avoids  fragmentation  and  reduces  the  number  of
              packets needed to transfer data.

       mru    int  -  MRU  for connection, generally should be the same as the
              MTU.

       autoppp
              string - PPP command-line options to be used when we  autodetect
              a PPP session.  Note that the expansion directives apply.

       pppopt string  -  PPP  command-line  options  to  be  used when we have
              already authenticated the user and the service type is known  to
              be PPP.  Same format as autoppp.

       issue  string   -   message  that  is  issued  on  connect.   Expansion
              directives are applied.

       prompt string - login prompt,  default  is  "%h  login:  ".   Expansion
              directives are applied.

       term   string - terminal type for rlogin/telnet/ssh sessions.  Defaults
              to vt100.

       speed  int - port speed in bps.

       socket_port
              dynamic int - port number used for telnet targets.

       parity enum - ’none’, ’odd’, or ’even’.

       stopbits
              int - number of stop bits.

       datasize
              int - size of a character 5, 6, 7, or 8 bits.

       dcd    bool - use the DCD line or not (this sets CLOCAL if  off).  This
              means that the session will get hung up if the modem hangs up.

       flow   enum  - ’none’, ’hard’, or ’soft’.  Hardware (RTS/CTS), software
              (XON/XOFF AKA ^S/^Q), or no flow control.

       initchat
              chat-script - the chat script for  initialising  the  modem  and
              answering.  Needs much more documentation on this.

       radclient_config_file
              string    -    configuration   file   for   radclient   (default
              /etc/portslave/radclient.conf).

       login_time
              string - the times that are allowed for logins.

       login_time_limited
              bool - if true then the maximum  length  of  the  call  will  be
              determined by the value of the login_time setting.

EXPANSION DIRECTIVES

       These directives can be used for the format of the utmp/wtmp field, for
       the autoppp, pppopt, issue, prompt fields, and others.

       %l     login name

       %L     stripped login name

       %p     NAS port number

       %P     protocol

       %b     port speed

       %H     host for telnet/ssh connections

       %i     local IP

       %j     remote IP

       %1     first byte (MSB) of remote IP

       %2     second byte of remote IP

       %3     third byte of remote IP

       %4     fourth byte (LSB) of remote IP

       %c     connect-info

       %m     netmask

       %M     multilink if the RADIUS server has PW_NAS_PORT_LIMIT set to > 1,
              otherwise empty string

       %t     MTU

       %r     MRU

       %I     idle timeout

       %T     session timeout

       %h     hostname

       %d     dcd  setting, expands to "modem" if DCD line is to be used or to
              "local" if it isn’t.  Put this on the ppp command line  to  give
              it  the right setting to match the value of the "dcd" attribute.

       %%     %

BUGS

       The documentation section for protocol in the line  directives  section
       needs to be improved.  I intend to do so as soon as I work out what the
       code does.

       The initchat option needs heaps  more  documentation.   As  soon  as  I
       figure it out...

       The realm section needs to be improved, to do this I have to go through
       the code and comment what it does so I can understand it.

AUTHOR

       This man page was written by Russell Coker <russell@coker.com.au>.  May
       be freely used and distributed without restriction.

SEE ALSO

       portslave(8),                  pppd(8),                 cltportslave(1)
       http://doc.coker.com.au/projects/portslave/

Russell Coker <russell@coker.com.a2>010.03.30                    pslave.conf(5)