home *** CD-ROM | disk | FTP | other *** search
/ Gold Fish 1 / GoldFishApril1994_CD2.img / d4xx / d473 / cnewssrc / cnews_src.lzh / relay / sh / anne.jones next >
Text File  |  1990-12-22  |  4KB  |  121 lines

  1. #! /bin/sh
  2. # anne.jones [file...] - censor headers: munge locally-generated headers in
  3. #  files, enforce feeble attempts at Usenet security, generate lots of silly
  4. #  headers.
  5. # (after the notorious ring-leader of the Ontario Film and Video Review Board
  6. # (nee Ontario Board of Censors), Ontario's very own Mrs. Mary Whitehouse.)
  7. # =()<. ${NEWSCONFIG-@<NEWSCONFIG>@}>()=
  8. . ${NEWSCONFIG-/usr/lib/news/bin/config}
  9. export NEWSCTL NEWSBIN NEWSARTS
  10. PATH=$NEWSCTL/bin:$NEWSBIN/inject:$NEWSBIN:$NEWSPATH ; export PATH
  11. umask $NEWSUMASK
  12.  
  13. # pass 0 - dredge up defaults
  14. case "$trversion" in
  15. v[67])    ;;
  16. *)    echo "$0: trversion is nonsense or missing from environment" >&2
  17.     exit 1 ;;
  18. esac
  19. if test -r $NEWSCTL/mailname; then
  20.     mailname="`tr -d ' \11' <$NEWSCTL/mailname`"
  21. else
  22.     mailname="`newshostname`"
  23.     case "$mailname" in
  24.     *.*)    ;;            # not a uucp host name
  25.     *)    mailname="$mailname.uucp" ;;    # probably a uucp host name
  26.     esac
  27. fi
  28. # badsites="pucc.bitnet!"        # tailor, syntax is "host1!host2!...host3!"
  29. host="$mailname"
  30.  
  31. # dig up user's name (a simple task, you'd think, but you'd be wrong)
  32. case "$LOGNAME" in
  33. "")
  34.     # "who am i" on many Unixes does "ttyname(0)" and "getpwuid(getuid())"
  35.     # if that fails - it can be confused by empty utmp entries (per jerqs);
  36.     # "who am i </dev/null" yields your userid, not your login name.
  37.     # "tty" does "ttyname(0)"; also fallible.
  38.     # So, emulate a slightly-modified V7 getlogin(3) (actually ttyslot(3)):
  39.     # look for tty on /dev/tty, stdin, stdout, stderr (actually via ttyname(3)).
  40.     for fd in 3 0 1 2            # 3 is /dev/tty on V8
  41.     do
  42.         if test -t $fd; then
  43.             case "$USER" in
  44.             "")    USER="`who am i <&$fd |
  45.                     sed -e 's/[     ].*//' -e '/!/s/^.*!//' `" ;;
  46.             esac
  47.         fi
  48.     done
  49.     case "$USER" in
  50.     "")    USER="`who am i </dev/null |    # last resort: use userid
  51.             sed -e 's/[     ].*//' -e '/!/s/^.*!//' `" ;;
  52.     esac
  53.     ;;
  54. *)    USER="$LOGNAME" ;;
  55. esac
  56. case "$NAME" in
  57. "")
  58.     if test -s $HOME/.name; then
  59.         NAME=`cat $HOME/.name`
  60.     else
  61.         NAME=`(grep "^$USER:" /etc/passwd || ypmatch "$USER" passwd) |
  62.             sed 's/^[^:]*:[^:]*:[^:]*:[^:]*:\([^,:]*\).*$/\1/'  `
  63.         # tailor: for BTL RJE format, add
  64.         #    | sed -e 's/^[^-]*- *//' -e 's/ *(.*$//'
  65.         # otherwise for Berkeley format, use this
  66.         # (courtesy Rayan Zachariassen):
  67.         case "$NAME" in
  68.         *'&'*)
  69.             # generate Capitalised login name
  70.             NM=`echo "$USER" | sed -e 's/^\(.\)\(.*\)/\1:\2/'`
  71.             NM1=`expr "$NM" : '\(.\):.*' |
  72.                 case "$trversion" in
  73.                 v7)    tr a-z A-Z ;;
  74.                 v6)    tr '[a-z]' '[A-Z]' ;;
  75.                 esac
  76.                 `
  77.             NMR=`expr "$NM" : '.:\(.*\)'`
  78.             CAPNM="$NM1$NMR"
  79.             # turn & into Capitalised login name
  80.             NAME=`echo "$NAME" | sed "s:&:$CAPNM:"`
  81.             ;;
  82.         esac
  83.     fi
  84.     ;;
  85. esac
  86. case "$NAME" in
  87. "")    fullname="" ;;        # no full name, leave it off
  88. *)    fullname=" ($NAME)" ;;
  89. esac
  90. reallyfrom="$USER@$host$fullname"
  91. FROM="$reallyfrom"
  92.  
  93. # generate a few defaults.
  94. # RFC 1036 requests a GMT Date:, despite it being hard to read.
  95. # Compensate for V6 Uglix date (no -u) tarted up with all that TZ goo.
  96. date="`
  97.     set ''\`TZ=GMT0 date\`    # give TZ to see if (Uglix) date responds
  98.     case \"$5\" in
  99.     GMT)    echo $* ;;    # Uglix date or V7 date with GMT local time
  100.     *)    date -u ;;    # must be V7 date command, it ignored TZ
  101.     esac
  102. `"                # for defdate, defmsgid
  103. case "$ORGANIZATION" in
  104. "")    deforg="`sed 1q $NEWSCTL/organi[sz]ation`" ;;    # look in a file
  105. *)    deforg="$ORGANIZATION" ;;    # look in environment
  106. esac
  107.  
  108. # give defaults and headers to awk
  109. cat $* |
  110.     # strip invisible chars, a la B news; turn tabs to spaces (RFC1036)
  111.     case "$trversion" in
  112.     v7)    tr -d  '\1-\7\13\15-\37' ;;
  113.     v6)    tr -d '[\1-\7]\13[\15-\37]' ;;
  114.     esac |
  115.     sed 's/:    /: /' |
  116.     awk -f $NEWSBIN/inject/defhdrs.awk \
  117. defpath="$badsites$USER" \
  118. deffrom="$FROM" deforg="$deforg" \
  119. defdate="` set $date; echo $1, $3 $2 $6 $4 $5`" \
  120. defmsgid="`set $date; echo \<$6$2$3.\`  echo $4 | tr -d : \`.$$@$host\>`" -
  121.