home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / unix / volume13 / sbbs / part02 < prev    next >
Text File  |  1988-01-30  |  59KB  |  2,542 lines

  1. Subject:  v13i072:  A BBS written in /bin/sh, Part02/02
  2. Newsgroups: comp.sources.unix
  3. Sender: sources
  4. Approved: rsalz@uunet.UU.NET
  5.  
  6. Submitted-by: Rob DeMarco <ncoast!robertd>
  7. Posting-number: Volume 13, Issue 72
  8. Archive-name: sbbs/part02
  9.  
  10. # This is a shell archive.  Save this into a file, edit it
  11. # and delete all lines above this comment.  Then give this
  12. # file to sh by executing the command "sh file".  The files
  13. # will be extracted into the current directory owned by
  14. # you with default permissions.
  15. #
  16. # The files contained herein are:
  17. #             access            bbs           chat        control
  18. #                cwd             db           edit      initial.c
  19. #            install          killm         lock.c      login-sig
  20. #            mailbox          medit          mkbul          mkusr
  21. #               news           post        program         rescue
  22. #               sbbs       sendmail            udl         udlnew
  23. #             update          users            usr              z
  24. #     
  25. #
  26. echo 'x - access'
  27. sed 's/^X//' <<'________This_Is_The_END________' >>access
  28. X#! /bin/sh
  29. X# Access permisions for message bases
  30. X
  31. Xif [ $access -gt 3 ] ; then
  32. X   exit 0
  33. Xfi
  34. X
  35. Xa=`grep "^b$1=" $dir/misc/config`
  36. Xif [ -z "$a" ] ; then
  37. X  exit 0
  38. Xfi
  39. X
  40. Xstring=`echo $a | awk -F= '{print $2}'`
  41. X
  42. Xtype=`echo $string | awk -F, '{print $1}'`
  43. X
  44. Xif [ "$type" = "restrict" ] ; then
  45. X  name=`echo $string|grep ,$bbs_name,`
  46. X  if [ -z "$name" ] ; then
  47. X    echo "This base requires that you be on a\nrestricted list. Ask your sysop for more\ndetails."
  48. X    exit 1
  49. X  else
  50. X    exit 0
  51. X  fi
  52. Xfi
  53. X
  54. Xif [ "$type" = "access" ] ; then
  55. X  axess=`echo $string | grep ,$access,`
  56. X  if [ -z "$axess" ] ; then
  57. X    echo "This base requires that you have the\nfollowing accesses:$string. Please\ncontact your sysop for more details."
  58. X    exit 1
  59. X  else
  60. X
  61. X    exit 0
  62. X  fi
  63. Xfi
  64. X
  65. Xecho "Unrecognized variable value in config."
  66. Xexit 2
  67. ________This_Is_The_END________
  68. echo 'x - bbs'
  69. sed 's/^X//' <<'________This_Is_The_END________' >>bbs
  70. X#! /bin/sh
  71. X# SBBS - revision
  72. X# New bbs setup.
  73. X# 
  74. X# SBBS - By Rob DeMarco
  75. X# Copyright(C) 1987 By Rob DeMarco
  76. X# All rights reserved.
  77. X
  78. X# New revision started on June 16,
  79. X# 1987
  80. X
  81. Xrflag=0
  82. Xbase=General ;basen=1;export base basen
  83. Xflag=0
  84. X$dir/programs/access 1
  85. Xif [ $? -eq 1 ] ; then
  86. X   echo "Access to message bases is not allowed."
  87. X   exit
  88. Xfi
  89. X
  90. Xecho "\n\n"
  91. X
  92. Xwhile : ; do
  93. X
  94. Xif [ "$gflag" = "x" ] ; then
  95. X   if [ $sflag = 1 ] ; then
  96. X      global=`expr $global + 1`
  97. X   fi
  98. X   if [ $global -gt $bc ] ; then
  99. X      gflag=z
  100. X   fi 
  101. X   if [ $sflag = 1 ] ; then
  102. X      sflag=0 
  103. X      if [ $skflag = 0 ] ; then
  104. X         command=n
  105. X      else
  106. X         skflag=0 ; command=""
  107. X      fi
  108. X   else
  109. X      sflag=1 ; command=j$global
  110. X      echo "Examining base #$global"
  111. X   fi
  112. Xelse
  113. Xecho "$base) \c"
  114. Xread command
  115. Xfi
  116. Xskflag=0
  117. X
  118. Xcmd=`echo "$command" | cut -c1`
  119. X
  120. Xif [ "$cmd" = "" ] ; then
  121. X  continue
  122. Xfi
  123. X
  124. X
  125. Xif [ "$cmd" = E -o "$cmd" = e ] ; then
  126. X  exit
  127. Xfi
  128. X
  129. Xif [ "$cmd" = K -o "$cmd" = k ] ; then
  130. X  $dir/programs/killm
  131. X  continue
  132. Xfi
  133. X
  134. Xif [ "$cmd" = "?" ] ; then
  135. X  cat $dir/misc/com
  136. X  continue
  137. Xfi
  138. X
  139. Xif [ $cmd = C -o $cmd = c ];then
  140. X  if [ "$access" -lt 2 ];then
  141. X    echo "Only the SysOp or Co-SySops may create\nnew boards. Contact them if you wish\nto."
  142. X    continue
  143. X  fi
  144. X  while : ; do
  145. X  echo "Enter the name of this board, 40 char."
  146. X  echo "max."
  147. X  echo "{========1=========2=========3========}"
  148. X  read name
  149. X  name=`echo "$name" | cut -c-40`
  150. X  name=`echo "$name" | tr -d ":"`
  151. X  echo "Board name is $name."
  152. X  echo "Correct? <Y> \c"
  153. X  read yn
  154. X  yn=`echo $yn | cut -c1`
  155. X  if [ "$yn" = N -o "$yn" = n ];then
  156. X    continue
  157. X  fi
  158. X  break
  159. X  done
  160. X  bn=`ls $dir/bbs | wc -l`
  161. X  bn=`echo $bn`
  162. X  bn=`expr $bn + 1`
  163. X  cr="$bn:$name"
  164. X  echo "$cr" >> $dir/misc/bbsrc
  165. X  mkdir $dir/bbs/$bn
  166. X  continue
  167. Xfi
  168. X
  169. Xif [ $cmd = L -o $cmd = l ];then
  170. X  cat $dir/misc/bbsrc
  171. X  continue
  172. Xfi
  173. X
  174. Xif [ $cmd = M -o $cmd = m ];then
  175. X   echo "Board #\tMessage Base manager:"
  176. X   grep "^mbm" $dir/misc/config | tr = "    " | cut -c4- | sort -n
  177. Xcontinue
  178. Xfi
  179. X
  180. Xif [ $cmd = J -o $cmd = j ];then
  181. X  b=`echo "$command" | cut -c2-`
  182. X  l=`ls $dir/bbs | wc -l`
  183. X  l=`echo $l`
  184. X  if [ "$b" = "" ];then
  185. X    while : ; do
  186. X    echo "Jump to what base (1-$l)? \c"
  187. X    read b
  188. X    b=`echo $b | tr -d "!"`
  189. X    if [ "$b" = "" ];then
  190. X      continue
  191. X    fi
  192. X    break
  193. X    done
  194. X  fi
  195. X  b=`expr $b + 0 2> /dev/null`
  196. X  if [ $? != 0 ];then
  197. X    b=1
  198. X    continue
  199. X  fi
  200. X  if [ $b -lt 1 -o $b -gt $l ];then
  201. X    echo "That board doesn't exist."
  202. X    continue
  203. X  fi
  204. X  $dir/programs/access $b
  205. X  if [ $? = 1 ] ; then
  206. X    skflag=1
  207. X    continue
  208. X  fi
  209. X  basen=$b ; export basen
  210. X  base="`grep \"^$basen:\" $dir/misc/bbsrc | awk -F: '{print $2}'`"
  211. X  export base
  212. X  continue
  213. Xfi
  214. X
  215. Xif [ "$cmd" = P -o "$cmd" = p ] ; then
  216. X  $dir/programs/post
  217. X  continue
  218. Xfi
  219. X
  220. Xif [ $cmd = I -o $cmd = i ];then
  221. X  number=`ls $dir/bbs/$basen | wc -l`
  222. X  if [ $number = 0 ];then
  223. X    echo "They're no messages in this base."
  224. X    continue
  225. X  fi
  226. X  echo "Read what message number? (1): \c"
  227. X  read rnumber
  228. X  if [ "$rnumber" = "" ];then
  229. X    rnumber=1
  230. X  fi
  231. X  rnumber=`expr $rnumber + 0 2> /dev/null`
  232. X  if [ $? != 0 ] ; then
  233. X    rnumber=1
  234. X  fi
  235. X  if [ $rnumber -lt 1 ] ; then
  236. X    rnumber=1
  237. X  fi
  238. X  if [ $rnumber -gt $number ];then
  239. X    echo "That message doesn't exist."
  240. X    continue
  241. X  fi
  242. X  $cls
  243. X  number=`echo $number`
  244. X  echo "{Message $rnumber of $number}"
  245. X  cat $dir/bbs/$basen/$rnumber
  246. X  $dir/programs/update $rnumber
  247. X  continue
  248. Xfi
  249. X
  250. Xif [ $cmd = S -o $cmd = s ] ; then
  251. X   a=`ls $dir/bbs/$basen | wc -l`
  252. X   a=`echo $a`
  253. X   if [ $a -eq 0 ] ; then
  254. X      echo "They're no messages in this base."
  255. X      continue
  256. X   fi
  257. X   echo "Start scanning (1): \c"
  258. X   read scan
  259. X   scan=`expr $scan + 0 2> /dev/null`
  260. X   if [ $? -ne 0 ] ; then
  261. X      scan=1
  262. X   fi
  263. X   if [ $scan -gt $a ] ; then
  264. X      scan=1
  265. X   fi
  266. X   while [ $scan -le $a ] ; do
  267. X         echo "{Message $scan of $a}"
  268. X         sed -n '1,3p' $dir/bbs/$basen/$scan
  269. X         echo "---------------------------------------"
  270. X         echo "[ Q to quit, <RETURN> to continue ] \c"
  271. X         read scanf
  272. X         scanf=`echo $scanf | tr -d "!"`
  273. X         if [ "$scanf" = Q -o "$scanf" = q ] ; then
  274. X           continue 2
  275. X         fi
  276. X         scan=`expr $scan + 1`
  277. X   done
  278. X   continue
  279. Xfi
  280. X
  281. Xif [ $cmd = Q -o $cmd = q ] ; then
  282. X   a=`ls $dir/bbs/$basen | wc -l`
  283. X   if [ $a -eq 0 ] ; then
  284. X      echo "They're no messages in this base."
  285. X      continue
  286. X   fi
  287. X   echo "Start scanning (1): \c"
  288. X   read scan
  289. X   scan=`expr $scan + 0 2> /dev/null`
  290. X   if [ $? -ne 0 ] ; then
  291. X      scan=1
  292. X   fi
  293. X   if [ $scan -gt $a ] ; then
  294. X      scan=1
  295. X   fi
  296. X   while [ $scan -le $a ] ; do
  297. X         wc=`cat $dir/bbs/$basen/$scan | wc -l`
  298. X         if [ $wc -eq 1 ] ; then
  299. X            echo "$scan\t<KILLED>"
  300. X            scan=`expr $scan + 1`
  301. X            continue
  302. X         else
  303. X            echo "$scan\t\c"
  304. X            sed -n '2p' $dir/bbs/$basen/$scan
  305. X         fi
  306. X         scan=`expr $scan + 1`
  307. X   done
  308. X   continue
  309. Xfi
  310. X
  311. Xif [ "$cmd" = O -o "$cmd" = o ] ; then
  312. X   $dir/programs/medit
  313. X   continue
  314. Xfi
  315. X
  316. Xif [ $cmd = Z -o $cmd = z ] ; then
  317. X   $dir/programs/z
  318. X   continue
  319. Xfi
  320. X
  321. Xif [ $cmd = G -o $cmd = g ] ; then
  322. X   gflag=x ; bc=`ls $dir/bbs | wc -l`
  323. X   bc=`echo $bc` ; sflag=0 ; global=1
  324. X   continue
  325. Xfi
  326. X
  327. Xif [ $cmd = N -o $cmd = n ];then
  328. X  if [ ! -f $dir/new/$bbs_name ];then
  329. X    echo > $dir/new/$bbs_name
  330. X  fi
  331. X  info=`grep "^$basen:" $dir/new/$bbs_name`
  332. X  if [ "$info" = "" ] ; then
  333. X    echo "$basen:0" >> $dir/new/$bbs_name
  334. X    mp=1
  335. X  else
  336. X    mp=`echo "$info" | awk -F: '{print $2}'`
  337. X    mp=`expr $mp + 1`
  338. X  fi
  339. X    tst=`ls $dir/bbs/$basen|wc -l`
  340. X    if [ $mp -gt $tst ];then
  341. X      echo "They're no new messages."
  342. X      continue
  343. X    fi
  344. X  cmd=F
  345. X  f=x
  346. X  number=`ls $dir/bbs/$basen|wc -l`
  347. Xfi
  348. X
  349. Xif [ "$cmd" != "F" -a "$cmd" != "f" -a "$cmd" != R -a "$cmd" != r -a "$cmd" != N -a "$cmd" != n ] ; then
  350. X   continue
  351. Xfi
  352. Xif [ "$f" != x ] ; then
  353. X  if [ $cmd = F -o $cmd = f -o $cmd = R -o $cmd = r ] ; then
  354. X    f=_
  355. X  fi
  356. Xfi
  357. X
  358. Xif [ "$f" = _ ];then
  359. X  number=`ls $dir/bbs/$basen | wc -l`
  360. X  if [ $cmd = F -o $cmd = f ];then
  361. X    default=1
  362. X  fi
  363. X  if [ $cmd = R -o $cmd = r ] ; then
  364. X    default=$number
  365. X  fi
  366. X  if [ $number = 0 ] ; then
  367. X    continue
  368. X  fi
  369. X  default=`echo $default`
  370. X  echo "Start at message number ($default): \c"
  371. X  read mp
  372. X  if [ "$mp" = "" ];then
  373. X    mp=$default
  374. X  fi
  375. X  mp=`expr $mp + 0 2> /dev/null`
  376. X  if [ $? != 0 ] ; then
  377. X    mp=1
  378. X  fi
  379. X  if [ $mp -lt 1 ];then
  380. X    mp=1
  381. X  fi
  382. X  if [ $mp -gt $number ];then
  383. X    echo "That message doesn't exist."
  384. X    continue
  385. X  fi
  386. Xfi
  387. Xwhile : ; do
  388. X     $cls
  389. X     number=`echo $number`
  390. X     echo "{Message $mp of $number}"
  391. X     if [ "$rot13" = 1 ] ; then
  392. X        rot13=0
  393. X        sed -n '1,5p' $dir/bbs/$basen/$mp
  394. X        sed -n '6,$p' $dir/bbs/$basen/$mp | tr "[A-M][N-Z][a-m][n-z]" "[N-Z][A-M][n-z][a-m]" 
  395. X     else
  396. X        cat $dir/bbs/$basen/$mp
  397. X     fi
  398. X     $dir/programs/update $mp
  399. X  echo "[R]eply [A] Read Again [N]ext [Q]uit\n[X] Read as rot13 message <N>: \c"
  400. X  read o
  401. X  o=`echo $o | cut -c1`
  402. X  if [ "$o" = "" ];then
  403. X    o=N
  404. X  fi
  405. X  if [ $o = A -o $o = a ];then
  406. X    continue
  407. X  fi
  408. X  if [ $o = X -o $o = x ];then
  409. X    rot13=1
  410. X    continue
  411. X  fi
  412. X  if [ $o = Q -o $o = q ];then
  413. X    $dir/programs/update $mp
  414. X    continue 2
  415. X  fi
  416. X  if [ $o = R -o $o = r ];then
  417. X    t=`cat $dir/bbs/$basen/$mp | wc -l`
  418. X    if [ $t = 1 ];then
  419. X      echo "You can not reply to a killed \n message."
  420. X      rflag=1
  421. X      continue 
  422. X    fi
  423. X    echo "Is this [A](Private) or [B]public?<B> \c"
  424. X    read pop
  425. X    if [ "$pop" = A -o "$pop" = a ];then
  426. X      arg1="`sed -n 1p $dir/bbs/$basen/$mp`"
  427. X      arg1=`echo "$arg1" | cut -c10-`
  428. X      arg1=`echo "$arg1" | awk -F\( '{print $1}'`
  429. X      arg1=`echo "$arg1" | cut -c2-`
  430. X      subj="`sed -n 2p $dir/bbs/$basen/$mp`"
  431. X      subj=`echo "$subj"|cut -c10-`
  432. X      $dir/programs/sendmail $arg1 "$subj" $mp
  433. X    else
  434. X      subject="`sed -n 2p $dir/bbs/$basen/$mp`"
  435. X      subject=`echo "$subject" | cut -c10-`
  436. X      sub=`echo "$subject"|cut -c-4`
  437. X      if [ "$sub" != "Re: " ];then
  438. X        subject="Re: $subject"
  439. X      fi
  440. X
  441. X      flag=1 ; xcmd=$cmd ; cmd=P ; $dir/programs/post "$subject" $dir/bbs/$basen/$mp
  442. X      flag=0
  443. X      cmd=$xcmd
  444. X      if [ $rflag = 0 ];then
  445. X        number=`expr $number + 1`
  446. X      fi
  447. X      if [ $number -gt `ls $dir/bbs/$basen | wc -l` ];then
  448. X        number=`expr $number - 1`
  449. X        rflag=0
  450. X      fi
  451. X    fi
  452. X  fi
  453. X  if [ $cmd = R -o $cmd = r ];then
  454. X    mp=`expr $mp - 1`
  455. X    if [ $mp -lt 1 ];then
  456. X      echo "Scan complete."
  457. X      continue 2
  458. X    fi
  459. X    continue
  460. X  else
  461. X    mp=`expr $mp + 1`
  462. X    if [ $mp -gt $number ];then
  463. X      echo "Scan complete."
  464. X      continue 2
  465. X    fi
  466. X    continue
  467. X  fi
  468. Xdone
  469. Xecho "Illegal command."
  470. Xdone
  471. ________This_Is_The_END________
  472. echo 'x - chat'
  473. sed 's/^X//' <<'________This_Is_The_END________' >>chat
  474. X#! /bin/sh
  475. X# Shell script for chat
  476. X
  477. Xecho "ID\tName"
  478. Xecho "--\t----"
  479. Xawk -F: '{print $1 "\t" $2}' $dir/misc/usr
  480. Xecho "Enter user id to chat with: \c"
  481. Xread y
  482. Xy=`echo $y | tr -d "!"`
  483. Xa=`grep "^$y:" $dir/misc/usr`
  484. X
  485. Xif [ "$a" = "" ] ; then
  486. X  echo "No such user on."
  487. X  exit 1
  488. Xfi 
  489. Xy=`echo $a | awk -F: '{print $3}'`
  490. Xecho "Message from UID #$bbs_name on tty\n$tty.Choose option T from $bbs main." > $y
  491. Xif [ $? != 0 ] ; then
  492. X  echo "Permision to chat is denied."
  493. X  exit
  494. Xfi
  495. X
  496. Xecho "Enter message - line by line. Press"
  497. Xecho "CTRL-D when finshed."
  498. X
  499. Xwhile : ; do
  500. X echo ":\c"
  501. X read msg || break
  502. X echo "$msg" > $y
  503. Xdone
  504. X
  505. Xecho "Message/chat terminated."
  506. Xecho "    [ END OF MESSAGE ]" > $y
  507. ________This_Is_The_END________
  508. echo 'x - control'
  509. sed 's/^X//' <<'________This_Is_The_END________' >>control
  510. X#! /bin/sh
  511. X# Inhibit or allow message/chat
  512. X# request.
  513. X
  514. Xecho "<N>o messages from other users."
  515. Xecho "<Y>es, allow messages from other users."
  516. Xread y
  517. Xy=`echo $y | tr "[A-Z]" "[a-z]"`
  518. Xy=`echo $y | tr -d "!"`
  519. Xif [ "$y" != n -a "$y" != y ] ; then
  520. X  echo "N or Y."
  521. X  exit 1
  522. Xfi
  523. X
  524. Xif [ "$y" = n ] ; then
  525. X   chmod og-rwx `tty`
  526. Xelse
  527. X   chmod og+wrx `tty`
  528. Xfi
  529. ________This_Is_The_END________
  530. echo 'x - cwd'
  531. sed 's/^X//' <<'________This_Is_The_END________' >>cwd
  532. X#! /bin/sh
  533. X# Change Password
  534. X
  535. Xstty -echo
  536. Xecho "Enter your current password: \c"
  537. Xpwd="`line | tr \"[A-Z]\" \"[a-z]\"`"
  538. Xecho "\n"
  539. Xif [ `echo "$pwd\c" | wc -c` -eq 1 ];then
  540. Xpwd=`echo "$pwd" | tr -d "!"`
  541. Xfi
  542. Xif [ -z "$pwd" ] ; then 
  543. X  echo "Password change is aborted."
  544. X  stty echo
  545. X  exit
  546. Xfi
  547. X
  548. X
  549. Xpid=$$
  550. Xecho "$pwd" > /tmp/sbbs.buf.$pid
  551. Xpwd=`crypt "$pwd" < /tmp/sbbs.buf.$pid`
  552. Xrm /tmp/sbbs.buf.$pid
  553. Xcpwd=`fgrep -x "$bbs_name $pwd" $dir/admin/profile/logins`
  554. X
  555. Xif [ "$cpwd" = "" ] ; then
  556. X  echo "Sorry."
  557. X  stty echo
  558. X  exit
  559. Xfi
  560. X
  561. Xecho "Enter new password: \c"
  562. Xnpwd="`line | tr \"[A-Z]\" \"[a-z]\"`"
  563. Xecho "\n"
  564. Xecho "Enter new password again: \c"
  565. Xntest="`line | tr \"[A-Z]\" \"[a-z]\"`"
  566. Xecho "\n"
  567. X
  568. Xif [ "$ntest" != "$npwd" ] ; then
  569. X   echo "Aborted."
  570. X   stty echo
  571. X   exit
  572. Xfi
  573. X
  574. X
  575. X
  576. Xif [ -z "$npwd" ]; then
  577. X  echo "Password change aborted."
  578. X  stty echo
  579. X  exit
  580. Xfi
  581. X
  582. Xpid=$$
  583. Xecho "$npwd" > /tmp/sbbs.buf.$pid
  584. Xnpwd=`crypt "$npwd" < /tmp/sbbs.buf.$pid`
  585. Xrm /tmp/sbbs.buf.$pid
  586. X
  587. Xed - $dir/admin/profile/logins << EOE
  588. XH
  589. X/^$bbs_name /d
  590. Xw
  591. XEOE
  592. Xecho "$bbs_name $npwd" >> $dir/admin/profile/logins
  593. Xecho "Password has been changed."
  594. Xstty echo
  595. ________This_Is_The_END________
  596. echo 'x - db'
  597. sed 's/^X//' <<'________This_Is_The_END________' >>db
  598. X#! /bin/sh
  599. X# Display Bulletin (db)
  600. X
  601. X
  602. Xnob=`ls $dir/bulletins | wc -l`
  603. X
  604. Xif [ $nob = 0 ] ; then
  605. X  exit
  606. Xfi
  607. X
  608. Xcb=1
  609. X
  610. Xwhile [ $cb -le $nob ] ; do
  611. X  while : ; do
  612. X    echo "Bulletin #$cb - read? \c"
  613. X    read yn
  614. X    yn=`echo $yn | tr -d "!"`
  615. X    yn=`echo $yn | cut -c1`
  616. X
  617. X    if [ "$yn" = N -o "$yn" = n ]; then
  618. X      break
  619. X    fi
  620. X
  621. X    if [ "$yn" = Y -o "$yn" = y ]; then
  622. X      cat $dir/bulletins/$cb
  623. X      echo "Hit <ENTER> to go on: \c"
  624. X      read junk
  625. X      break
  626. X    fi
  627. X    echo "Please enter Yes or No"
  628. X    continue
  629. X  done
  630. X  cb=`expr $cb + 1`
  631. Xdone
  632. ________This_Is_The_END________
  633. echo 'x - edit'
  634. sed 's/^X//' <<'________This_Is_The_END________' >>edit
  635. X#! /bin/sh
  636. X# Editor
  637. X
  638. Xwhile : ; do
  639. X
  640. Xecho "SBBS Editor) \c"
  641. Xcmd=`line | tr -d "!"`
  642. Xcmd="`echo \"$cmd\" | cut -c1`"
  643. X
  644. Xif [ "$cmd" = "" ];then
  645. X  continue
  646. Xfi
  647. X
  648. Xif [ "$cmd" = "?" ] ; then
  649. X  cat $dir/misc/ecom
  650. X  continue
  651. Xfi
  652. X
  653. Xif [ $cmd = C -o $cmd = c ];then
  654. X  echo "(continue)"
  655. X  exit 1
  656. Xfi
  657. X
  658. Xif [ $cmd = P -o $cmd = p ];then
  659. X  echo "UNIX spell checker:not 100% accurate."
  660. X  echo "---------------{spelling errors}------"
  661. X  echo ` spell $1`
  662. X  continue
  663. Xfi
  664. X
  665. Xif [ $cmd = A -o $cmd = a ];then
  666. X  echo "---------ABORT---------"
  667. X  echo "Do you realy want to do this?"
  668. X  echo "<N>: \c"
  669. X  read yn
  670. X  yn=`echo $yn | cut -c1`
  671. X  if [ "$yn" = Y -o "$yn" = y ];then
  672. X    echo "-<ABORT>-"
  673. X    rm $1
  674. X    exit 2
  675. X  fi
  676. X  echo "ABORT was aborted."
  677. X  continue
  678. Xfi
  679. X
  680. Xif [ $cmd = S -o $cmd = s ];then
  681. X  echo "Saving message..."
  682. X  if [ "$2" != "" ];then
  683. X    $dir/programs/lock /tmp/sbbs.pst.lock
  684. X    ml=`ls $dir/bbs/$basen|wc -l`
  685. X    ml=`expr $ml + 1`
  686. X    cat $1 > $dir/bbs/$basen/$ml 
  687. X    rm $1
  688. X    rm /tmp/sbbs.pst.lock
  689. X  else
  690. X    exit 3
  691. X  fi
  692. X  echo "Message saved..."
  693. X  exit 
  694. Xfi
  695. X
  696. Xif [ $cmd = L -o $cmd = l ];then
  697. X  l=`cat $1|wc -l`
  698. X  l=`expr $l - 5`
  699. X  if [ $l -eq 0 ];then
  700. X    continue
  701. X  fi
  702. X  while : ; do
  703. X    echo "A)ll   R)ange: \c"
  704. X    read x
  705. X    x=`echo $x | cut -c1`
  706. X    if [ -z "$x" ] ; then
  707. X      continue
  708. X    fi
  709. X    if [ $x = A -o $x = a ] ; then
  710. X      start=1 ; end=$l
  711. X      begin=1
  712. X    else
  713. X      echo "Start at: \c"
  714. X      read start
  715. X      begin="$start"
  716. X      if [ -z "$start" ] ; then
  717. X        continue
  718. X      fi
  719. X      start=`expr $start + 0` 2> /dev/null 
  720. X      if [ $? -ne 0 ] ; then
  721. X        echo "Bad number."
  722. X        continue
  723. X      fi
  724. X      if [ $start -gt $l -o $start -lt 1 ] ; then
  725. X        echo "Out of range."
  726. X        echo "(1-$l)"
  727. X        continue
  728. X      fi 
  729. X      echo "End at: \c"
  730. X      read end
  731. X      if [ -z "$end" ] ; then
  732. X        continue
  733. X      fi 
  734. X      end=`expr $end + 0` 2> /dev/null
  735. X      if [ $? -ne 0 ] ; then
  736. X        echo "Bad number."
  737. X        continue
  738. X      fi 
  739. X      if [ $end -lt $start -o $end -gt $l ] ; then
  740. X        echo "Bad range."
  741. X        continue
  742. X      fi
  743. X    fi
  744. X    break
  745. X    done
  746. X
  747. X    file=/tmp/sbbs.tmp.$$
  748. X    # start=`expr $start + 5`
  749. X    # end=`expr $end + 5`
  750. X
  751. X    sed -n '6,$p' $1 >$file
  752. X
  753. Xed - $file << Z
  754. X$start,${end}n
  755. XZ
  756. X
  757. X    rm $file
  758. X    string=""
  759. X  continue
  760. Xfi
  761. X
  762. Xif [ $cmd = E -o $cmd = e ];then
  763. X  echo "Edit what line? \c"
  764. X  read l
  765. X  l=`echo $l`
  766. X  if [ "$l" = "" ];then
  767. X    continue
  768. X  fi
  769. X  l=`expr $l + 5` 2> /dev/null
  770. X  if [ $? -ne 0 ];then
  771. X    echo "Illegal number."
  772. X    continue
  773. X  fi
  774. X  wc=`cat $1|wc -l`
  775. X  if [ $l -gt $wc ];then
  776. X    echo "Range out of bounds."
  777. X    continue
  778. X  elif [ $l -lt 6 ];then
  779. X    echo "Range out of bounds."
  780. X    continue
  781. X  fi
  782. X  echo "Old line reads"
  783. X  ed - $1 <<- EOS
  784. X  $l p
  785. XEOS
  786. X  echo "Enter new line"
  787. X  read qr
  788. X  ed - $1 <<- EOS
  789. X  $l a
  790. X$qr
  791. X.
  792. X  $l d
  793. X  w
  794. XEOS
  795. Xcontinue
  796. Xfi
  797. X
  798. Xif [ $cmd = D -o $cmd = d ];then
  799. X  echo "Delete what line? \c"
  800. X  read l
  801. X  l=`expr $l + 5`
  802. X  if [ $? -ne 0 ];then
  803. X    echo "Illegal number."
  804. X    continue
  805. X  fi
  806. X  wc=`cat $1|wc -l`
  807. X  if [ $l -lt 6 ];then
  808. X    echo "Range out of bounds."
  809. X    continue
  810. X  elif [ $l -gt $wc ];then
  811. X    echo "Range out of bounds."
  812. X    continue
  813. X  fi
  814. X  ed - $1 <<- EOS
  815. X  $l d
  816. X  w
  817. XEOS
  818. X  continue
  819. Xfi
  820. X
  821. Xif [ $cmd = I -o $cmd = i ] ; then
  822. X  echo "Insert at what line? \c"
  823. X  read insert
  824. X  insert=`expr $insert + 0 2> /dev/null`
  825. X  if [ $? -ne 0 ] ; then
  826. X    echo "Bad number."
  827. X    continue
  828. X  fi
  829. X  insert_limit=`cat $1 | wc -l`
  830. X  insert_limit=`expr $insert_limit - 5`
  831. X
  832. X  if [ $insert -gt $insert_limit -o $insert -lt 1 ];then
  833. X    echo "Out of range."
  834. X    continue
  835. X  fi
  836. X  echo "Start inserting now. Type CTRL-D on a\nblank space to get to editor."
  837. X  file=/tmp/sbbs.tpi.$$
  838. X  cat > $file
  839. X  {
  840. X   ed - $1 << EOS
  841. X   $insert+5,\$p
  842. X   $insert+5,\$d
  843. X   w
  844. XEOS
  845. X  } >> $file
  846. X  cat $file >> $1
  847. X  rm $file
  848. X  continue
  849. Xfi
  850. X
  851. Xif [ $cmd = R -o $cmd = r ] ; then
  852. X   file=/tmp/sbbs.rot.$$
  853. X   sed -n '1,5p' $1 > $file
  854. X   sed -n '6,$p' $1 | tr "[a-m][n-z][A-M][N-Z]" "[n-z][a-m][N-Z][A-M]" >> $file
  855. X   mv $file $1
  856. X   continue
  857. Xfi   
  858. Xecho "Illegal command."
  859. Xdone
  860. ________This_Is_The_END________
  861. echo 'x - initial.c'
  862. sed 's/^X//' <<'________This_Is_The_END________' >>initial.c
  863. X
  864. X /* Initial "shell" */
  865. Xmain()
  866. X{
  867. X
  868. X  /* Fake shell name */
  869. X
  870. X  execl ("/bin/sh", "sbbs", "-c", "/u/robertd/lib/sbbs/programs/login-sig", (char *) 0);
  871. X}
  872. ________This_Is_The_END________
  873. echo 'x - install'
  874. sed 's/^X//' <<'________This_Is_The_END________' >>install
  875. X#! /bin/sh
  876. X# Install version 1.0
  877. X
  878. Xdir=/u/robertd/lib/sbbs ; export dir
  879. Xecho "Install version 1.0"
  880. Xecho "\n\n"
  881. Xecho 'Please enter sbbs $home directory: \c'
  882. Xread home
  883. X
  884. Xecho "Creating directories..."
  885. Xmkdir $home/admin
  886. Xmkdir $home/admin/profile
  887. Xmkdir $home/bbs
  888. Xmkdir $home/bbs/1
  889. Xmkdir $home/udl
  890. Xmkdir $home/bulletins
  891. Xmkdir $home/misc
  892. Xmkdir $home/mail
  893. Xmkdir $home/udl/new
  894. Xmkdir $home/new
  895. X
  896. Xecho "Initializing files..."
  897. X
  898. Xecho "1:General" > $home/misc/bbsrc
  899. Xecho "\c" > $home/misc/prlib
  900. Xecho "\c" > $home/misc/config
  901. Xecho "\c" > $home/misc/udlrc
  902. Xecho "\c" > $home/admin/profile/lastcaller
  903. Xecho "\c" > $home/admin/profile/logins
  904. Xecho "\c" > $home/admin/profile/members
  905. Xecho "\c" > $home/admin/profile/log
  906. Xecho "\c" > $home/admin/profile/newusers
  907. Xecho "\c" > $home/misc/usr
  908. Xecho "\c" > $home/admin/profile/cmdlog
  909. Xecho "\c" > $home/misc/info
  910. Xecho "\c" > $home/misc/closing
  911. Xecho "\c" > $home/misc/openmes
  912. Xecho "\c" > $home/misc/newnews
  913. Xecho "1:Ascii:echo Recieving buffer. Begin. Send CTRL-D when finished. ; cat >> " > $home/misc/protocols.up
  914. Xecho "1:Ascii:echo Prepare to recieve. ; sleep 10 ; cat" > $home/misc/protocols.down
  915. Xcat << EOH > $home/misc/main_menu
  916. X
  917. X    (A)dministration shell              (B) Post Bulletins
  918. X    (C)hange Password                   (D)ataBases
  919. X    (E)xit from SBBS                    (I)nformation
  920. X    (L)ist users                        (M)essage bases
  921. X    (O)pening bulletins                 (P)rogram menu
  922. X    (Q) Allow/disallow chat requests    (R)ead private mail to you
  923. X    (T) Talk to users                   (U)ser log
  924. X    (V)alidate users                    (W)rite to other users
  925. XEOH
  926. X
  927. Xcat << EOH > $home/misc/com
  928. X   (C) Create message base              (L) List message bases
  929. X   (Jx) Jump to a message base x        (P) Post a message
  930. X   (I) Read an individual message       (F) Retrieve forward sequential
  931. X   (R) Retrieve reverse sequential      (N) Read new messages
  932. X   (G) Global scan                      (K) Kill a message
  933. X   (E) Exit SBBS BBS                    (S) Scan messages
  934. X   (Q) Quick scan of messages           (M) List MBMs.(Message Base Manager)
  935. X   (O) Open a message to edit           (Z) Manage message bases
  936. XEOH
  937. X
  938. Xcat << EOH > $home/misc/ecom
  939. X   (A)bort message                      (D)elete line
  940. X   (E)dit a line                        (I)nsert at line
  941. X   (C)ontinue entering message          (S)ave message
  942. X   (P)roof read message(spell check)    (L)ist message
  943. X   (R)ot 13 / DeRot 13 a message.
  944. XEOH
  945. Xecho "Compiling .c programs..."
  946. X
  947. Xcc -o $home/programs/initial $home/programs/initial.c
  948. Xcc -o $home/programs/lock $home/programs/lock.c
  949. X
  950. Xecho "Making sysop user..."
  951. Xecho ""
  952. Xecho "Please enter your REAL name. "
  953. Xecho ""
  954. Xecho ">> Name: \c"
  955. Xread rname
  956. Xrname=`echo "$rname"| tr -d "!"`
  957. Xrname=`echo "$rname"| tr -d ":" `
  958. Xrname=`echo "$rname"| tr -s " "`
  959. Xrname=`echo "$rname"| tr "[a-z]" "[A-Z]"`
  960. Xname=`cat $home/admin/profile/members | wc -l`
  961. Xname=`expr $name + 1`
  962. Xecho ""
  963. Xecho "Write your user ID down and don't lose it."
  964. Xecho "You will need it to login again."
  965. Xecho ""
  966. Xecho ">> Your user ID is: $name"
  967. Xecho ""
  968. Xecho "Now choose a password. It must be at least four characters."
  969. Xwhile : ; do
  970. Xecho ""
  971. Xecho ">> Password: \c"
  972. Xread pass
  973. Xpc=`echo "$pass" | wc -c`
  974. Xif [ $pc -lt 5 ] ; then
  975. X  echo ""
  976. X  echo "Make it at least four characters."
  977. X  continue 
  978. Xelse 
  979. X  pass="`echo \"$pass\" | tr \"[A-Z]\" \"[a-z]\"`"
  980. X  break
  981. Xfi
  982. Xdone
  983. Xecho ""
  984. Xwhile : ; do
  985. Xecho "Enter your phone number. Format is XXX-XXX-XXXX."
  986. Xecho ""
  987. Xecho ">> Phone: \c"
  988. Xread num
  989. Xnum="`echo \"$num\" | tr -d \":\"`"
  990. Xif [ `echo $num | wc -c` -ne 13 ] ; then
  991. X  echo ""
  992. X  echo "Try again."
  993. X  continue
  994. Xfi
  995. Xbreak
  996. Xdone
  997. Xecho ">> Modem Phone (if any): \c"
  998. Xread data
  999. Xecho ">> Address: \c"
  1000. Xread add
  1001. Xadd=`echo $add | tr -d ":"`
  1002. Xecho ">> City: \c"
  1003. Xread city
  1004. Xcity=`echo $city | tr -d ":"`
  1005. Xecho ">> State: \c"
  1006. Xread state
  1007. Xstate=`echo $state | tr -d ":"`
  1008. Xecho ">> Zip Code (five digits): \c"
  1009. Xread zip
  1010. Xzip=`echo $zip | tr -d ":"`
  1011. Xecho "$name:$rname:$pass:$num:$data:$city:$state:$add" >> $home/admin/profile/newusers 
  1012. X$home/programs/mkusr $name "$pass" "$rname" 3 "$add" "$city" "$state" $zip "$num"
  1013. Xecho ""
  1014. Xecho "New account has been created. "
  1015. Xecho ">> ID: $name"
  1016. Xecho ">> Password: $pass"
  1017. Xecho ""
  1018. ________This_Is_The_END________
  1019. echo 'x - killm'
  1020. sed 's/^X//' <<'________This_Is_The_END________' >>killm
  1021. X#! /bin/sh
  1022. X# Shell script to kill a message.
  1023. Xz=`ls $dir/bbs/$basen | wc -l`
  1024. Xif [ $z -eq 0 ] ; then
  1025. X   exit
  1026. Xfi
  1027. X
  1028. Xlm=`ls $dir/bbs/$basen | wc -l`
  1029. Xlm=`echo $lm`
  1030. X
  1031. Xecho "Enter message number to kill ($lm): \c"
  1032. Xread kill
  1033. X
  1034. Xkill=`expr $kill + 0 2> /dev/null`
  1035. X
  1036. Xif [ $? != 0 ] ; then
  1037. X  kill=$lm
  1038. Xfi
  1039. X
  1040. X
  1041. Xif [ $kill -lt 1 -o $kill -gt $lm ];then
  1042. X   echo "Message not killed." ; exit
  1043. Xfi
  1044. X
  1045. Xfrom="`sed -n 1p $dir/bbs/$basen/$kill`"
  1046. X
  1047. Xfrom="`echo \"$from\" | cut -c11-`"
  1048. Xfrom="`echo \"$from\" | awk '{print $1}'`"
  1049. Xmbm=`grep "^mbm$basen:" $dir/misc/config` ; mbm="${mbm:+y}"
  1050. Xif [ $from -ne $bbs_name -a $access -lt 2 -a "$mbm" != y ] ; then
  1051. X  echo You cannot delete that message.
  1052. X  exit
  1053. Xfi
  1054. X
  1055. Xecho "Message $kill is unavailable." > $dir/bbs/$basen/$kill
  1056. ________This_Is_The_END________
  1057. echo 'x - lock.c'
  1058. sed 's/^X//' <<'________This_Is_The_END________' >>lock.c
  1059. X
  1060. X#include <stdio.h>
  1061. X#include <fcntl.h>
  1062. X#include <errno.h>
  1063. X
  1064. Xextern int errno;
  1065. X
  1066. Xmain(argc, argv)
  1067. Xchar **argv; {
  1068. X    int fd;
  1069. X
  1070. X    if (argc != 2) {
  1071. X        fprintf(stderr, "Usage: lock name\n");
  1072. X        exit(1);
  1073. X    }
  1074. X    while ((fd = open(argv[1], O_RDWR|O_CREAT|O_EXCL, 0666)) == -1) {
  1075. X        if (errno != EEXIST)
  1076. X            break;
  1077. X        sleep(10);
  1078. X    }
  1079. X    if (fd == -1) {
  1080. X        perror(argv[1]);
  1081. X        exit(1);
  1082. X    }
  1083. X    close(fd);
  1084. X    exit(0);
  1085. X}
  1086. X
  1087. ________This_Is_The_END________
  1088. echo 'x - login-sig'
  1089. sed 's/^X//' <<'________This_Is_The_END________' >>login-sig
  1090. X#!/bin/sh
  1091. X#
  1092. X# %Z% %M% %I% %D% %Q%
  1093. X# %P%
  1094. X# 
  1095. X# SBBS version 1.0
  1096. X
  1097. Xtrap "" 2 3   # trapping
  1098. Xstty intr '^C'
  1099. X
  1100. Xdir=/u/robertd/lib/sbbs   # Change to your system
  1101. Xexport dir
  1102. Xlogins=$dir/admin/profile/logins
  1103. Xbbs="`grep \"^name=\" $dir/misc/config | cut -c6-`"
  1104. Xversion="`grep \"^version=\" $dir/misc/config | cut -c9-`"
  1105. Xexport version bbs
  1106. Xecho ""
  1107. Xecho ">> Welcome to $bbs (SBBS version $version)"
  1108. Xecho '>> Copyright (C) 1987, Rob DeMarco'
  1109. X
  1110. Xcycle=`grep "^cycle=" $dir/misc/config`
  1111. Xcycle=`echo $cycle | cut -c7-`
  1112. Xif [ -z "$cycle" ] ;then 
  1113. X cycle=3
  1114. Xfi
  1115. Xcycle=`echo $cycle`
  1116. Xcyclep=1
  1117. Xelite=`grep "^elite=\$" $dir/misc/config`
  1118. Xif [ ! -z "$elite" ] ; then
  1119. X  elite=1
  1120. Xelse
  1121. X  elite=0
  1122. X  echo ">> If you are a new user, use NEW for your ID."
  1123. Xfi
  1124. Xecho ">> Enter OFF to leave system."
  1125. Xecho ""
  1126. X
  1127. Xwhile [ $cyclep -le $cycle ] ; do
  1128. X     echo ">> Your ID? \c"
  1129. X     bbs_name="`line | tr \"[A-Z]\" \"[a-z]\"`"
  1130. X     bbs_name=`echo $bbs_name | tr -d "!"`
  1131. X     if [ "$bbs_name" = '' ] ; then
  1132. X       continue
  1133. X     fi
  1134. X
  1135. X     if [ "$bbs_name" = off ] ; then
  1136. X        exit
  1137. X     fi
  1138. X
  1139. X     if [ "$bbs_name" = new -a $elite -eq 0 ] ; then
  1140. X       ni=`grep "^newuser=" $dir/misc/config | cut -c9-`
  1141. X       if [ ! -z "$ni" ] ; then
  1142. X         cat $ni
  1143. X         echo ">> Press RETURN to continue.\c"
  1144. X         read junk
  1145. X       fi
  1146. X         
  1147. X       echo ""
  1148. X       echo "Please enter your REAL name. "
  1149. X       echo ""
  1150. X       echo ">> Name: \c"
  1151. X       read rname
  1152. X       rname=`echo "$rname"| tr -d "!"`
  1153. X       rname=`echo "$rname"| tr -d ":" `
  1154. X       rname=`echo "$rname"| tr -s " "`
  1155. X       rname=`echo "$rname"| tr "[a-z]" "[A-Z]"`
  1156. X       name=`cat $dir/admin/profile/members | wc -l`
  1157. X       name=`expr $name + 1`
  1158. X       echo ""
  1159. X       echo "Write your user ID down and don't lose it."
  1160. X       echo "You will need it to login again."
  1161. X       echo ""
  1162. X       echo ">> Your user ID is: $name"
  1163. X       echo ""
  1164. X       echo "Now choose a password. It must be at least four characters."
  1165. X       while : ; do
  1166. X       echo ""
  1167. X       echo ">> Password: \c"
  1168. X       stty -echo
  1169. X       read pass
  1170. X       stty echo ; echo "\n\c"
  1171. X       pc=`echo "$pass" | wc -c`
  1172. X       if [ $pc -lt 5 ] ; then
  1173. X         echo ""
  1174. X         echo "Make it at least four characters."
  1175. X         continue 
  1176. X       else 
  1177. X         pass="`echo \"$pass\" | tr \"[A-Z]\" \"[a-z]\"`"
  1178. X         break
  1179. X       fi
  1180. X       done
  1181. X       echo ""
  1182. X       while : ; do
  1183. X       echo "Enter your phone number. Format is XXX-XXX-XXXX."
  1184. X       echo ""
  1185. X       echo ">> Phone: \c"
  1186. X       read num
  1187. X       num="`echo \"$num\" | tr -d \":\"`"
  1188. X       if [ `echo $num | wc -c` -ne 13 ] ; then
  1189. X         echo ""
  1190. X         echo "Try again."
  1191. X         continue
  1192. X       fi
  1193. X       break
  1194. X       done
  1195. X       echo ">> Modem Phone (if any): \c"
  1196. X       read data
  1197. X       echo ">> Address: \c"
  1198. X       read add
  1199. X       add=`echo $add | tr -d ":"`
  1200. X       echo ">> City: \c"
  1201. X       read city
  1202. X       city=`echo $city | tr -d ":"`
  1203. X       echo ">> State: \c"
  1204. X       read state
  1205. X       state=`echo $state | tr -d ":"`
  1206. X       echo ">> Zip Code (five digits): \c"
  1207. X       read zip
  1208. X       zip=`echo $zip | tr -d ":"`
  1209. X       echo "$name:$rname:$pass:$num:$data:$city:$state:$add" >> $dir/admin/profile/newusers 
  1210. X       $dir/programs/mkusr $name "$pass" "$rname" 0 "$add" "$city" "$state" $zip "$num"
  1211. X       echo ""
  1212. X       echo "New account has been created. "
  1213. X       echo ">> ID: $name"
  1214. X       echo ">> Password: $pass"
  1215. X       echo ""
  1216. X       echo "Now finish logging in normally."
  1217. X       echo ""
  1218. X       continue
  1219. X     fi
  1220. X     echo ">> Password: \c"
  1221. X     stty -echo
  1222. X     bbs_passwordc="`line | tr \"[A-Z]\" \"[a-z]\"`"
  1223. X     echo "\n"
  1224. X     stty echo
  1225. X     pid=$$
  1226. X     echo "$bbs_passwordc" > /tmp/sbbs.buf.$pid
  1227. X     bbs_password=`crypt "$bbs_passwordc" < /tmp/sbbs.buf.$pid`
  1228. X     dataset="$bbs_name $bbs_password"
  1229. X     datatest=`fgrep -x "$dataset" $logins`
  1230. X
  1231. X     if [ -z "$datatest" ];then
  1232. X      echo
  1233. X      echo "Either the ID or the password is wrong; try again."
  1234. X      rm /tmp/sbbs.buf.$pid
  1235. X      cyclep=`expr $cyclep + 1`
  1236. X      continue
  1237. X     fi
  1238. X     export bbs_name bbs_password
  1239. X     rm /tmp/sbbs.buf.$pid
  1240. X     fullname=`grep "^$bbs_name:" $dir/admin/profile/members | awk -F: '{print $3 }'` ; export fullname
  1241. X     access=`grep "^$bbs_name:" $dir/admin/profile/members | awk -F: '{print $2}'`
  1242. X     export access
  1243. X     cat $dir/misc/openmes
  1244. X     $dir/programs/news
  1245. X     bn=`echo "$bbs_name" | cut -c-7`
  1246. X     login_time=`date | cut -c9-19`
  1247. X     export bn login_time
  1248. X     exec $dir/programs/sbbs
  1249. Xdone
  1250. Xecho ""
  1251. Xecho "Call back when you can remember your password
  1252. Xecho "or finally decide to login as NEW."
  1253. Xexit
  1254. ________This_Is_The_END________
  1255. echo 'x - mailbox'
  1256. sed 's/^X//' <<'________This_Is_The_END________' >>mailbox
  1257. X#! /bin/sh
  1258. X# Read private messages.
  1259. X#
  1260. X
  1261. Xaapath=$dir/mail
  1262. X
  1263. Xa=`ls $aapath/"$bbs_name" | wc -l`
  1264. Xb=`echo $a`
  1265. Xa=1
  1266. X
  1267. Xif [ $b -eq 0 ] ; then
  1268. X  echo "No mail"
  1269. X  exit
  1270. Xfi
  1271. X
  1272. Xwhile [ $a -le $b ] ; do
  1273. Xts=""
  1274. X     echo "..........................."
  1275. X     cat $aapath/"$bbs_name"/$a
  1276. X     echo "..........................."
  1277. X
  1278. X     while [ "$ts" != "pass" ] ; do
  1279. X          echo "[N]ext message [R]eply [A] Read again:\c"
  1280. X          read cmd
  1281. X          cmd=`echo "$cmd"|tr -d "!"`
  1282. X          if [ "$cmd" = "" ] ; then
  1283. X            continue
  1284. X          fi
  1285. X
  1286. X          if [ $cmd = A -o $cmd = a -o $cmd = r -o $cmd = R -o $cmd = N -o $cmd = n ] ; then
  1287. X            ts=pass
  1288. X            continue
  1289. X          fi
  1290. X     done
  1291. X
  1292. X     if [ $cmd = N -o $cmd = n ] ; then
  1293. X       rm $dir/mail/"$bbs_name"/$a
  1294. X       a=`expr $a + 1`
  1295. X       continue
  1296. X     fi
  1297. X
  1298. X     if [ $cmd = A -o $cmd = a ] ; then
  1299. X       continue
  1300. X     fi
  1301. X
  1302. X
  1303. X     to=`sed -n 1p $aapath/"$bbs_name"/$a`
  1304. X     to=`echo "$to" | cut -c8-`
  1305. X     to=`echo "$to" | awk '{print $1}'`
  1306. X     if [ $to -eq $bbs_name ] ; then
  1307. X       echo "Attempting to reply to yourself - abort"
  1308. X       continue
  1309. X     fi
  1310. X     file=sbbs.mle.$$
  1311. X
  1312. X     echo "From: #$bbs_name ($fullname)"> /tmp/$file
  1313. X     echo "Date: `date`" >> /tmp/$file
  1314. X     echo "Message to: #$to (you)\n\n" >> /tmp/$file
  1315. X     echo "Include message in reply?(n)\c"
  1316. X     read yn
  1317. X     if [ "$yn" = Y -o "$yn" = y ];then
  1318. X       echo "In your message you wrote to me...." >> /tmp/$file
  1319. X       sed -n '6,$s/^/> /
  1320. X               6,$p' $aapath/$bbs_name/$a >> /tmp/$file
  1321. X       echo "You may use the editor to trim the "
  1322. X       echo "quoted message down to what you need."
  1323. X     fi
  1324. X     echo "Enter your message now."
  1325. X     echo "Type a CTRL-D for editor."
  1326. X     while : ; do
  1327. X       cat >> /tmp/$file
  1328. X       $dir/programs/edit /tmp/$file
  1329. X       status=$?
  1330. X       if [ $status = 1 ] ; then
  1331. X         continue
  1332. X       fi
  1333. X       if [ $status = 2 ] ; then
  1334. X         continue 2
  1335. X       fi
  1336. X       if [ $status = 3 ] ; then
  1337. X         nol=`ls $aapath/"$to" | wc -l`
  1338. X         nol=`echo $nol`
  1339. X         nol=`expr $nol + 1`
  1340. X         cat /tmp/$file > $aapath/"$to"/$nol
  1341. X         rm /tmp/$file
  1342. X         echo "Message Saved."
  1343. X         break
  1344. X       fi 
  1345. X    done
  1346. Xdone
  1347. ________This_Is_The_END________
  1348. echo 'x - medit'
  1349. sed 's/^X//' <<'________This_Is_The_END________' >>medit
  1350. X#! /bin/sh
  1351. X# edit:
  1352. X# SBBS version 1.0;
  1353. X#
  1354. X
  1355. Xz=`ls $dir/bbs/$basen | wc -l`
  1356. Xif [ $z -eq 0 ] ; then
  1357. X   exit
  1358. Xfi
  1359. Xmbm=`grep "^mbm$basen=" $dir/misc/config | awk -F= '{print $2}'`
  1360. Xmbm=${mbm:+1}
  1361. X
  1362. X
  1363. Xecho "Edit what message? (1): \c"
  1364. Xread m
  1365. X
  1366. Xm=`expr $m + 0 2> /dev/null`
  1367. X
  1368. Xif [ $? != 0 ] ; then
  1369. X   m=1
  1370. Xfi
  1371. X
  1372. Xl=`ls $dir/bbs/$basen | wc -l`
  1373. X
  1374. Xif [ $m -lt 1 -o $m -gt $l ] ; then
  1375. X   echo "Message not edited."
  1376. Xfi
  1377. X
  1378. Xwc_l=`cat $dir/bbs/$basen/$m | wc -l`
  1379. Xif [ $wc_l -eq 1 ] ; then
  1380. X   echo "This message was killed."
  1381. X   exit
  1382. Xfi
  1383. X
  1384. Xzz="`sed -n 1p $dir/bbs/$basen/$m | cut -c11- | awk '{print $1}' `"
  1385. Xif [ $access -lt 2 -a "$mbm" != 1 -a $zz != $bbs_name ] ; then
  1386. X   echo "Your access is too low."
  1387. X   exit
  1388. Xfi
  1389. Xfile=/tmp/sbbs.edt.$$
  1390. Xcat $dir/bbs/$basen/$m > $file
  1391. X
  1392. Xwhile : ; do
  1393. X      $dir/programs/edit $file
  1394. X
  1395. X      status=$?
  1396. X
  1397. X      case $status in
  1398. X
  1399. X           1) cat >> $file
  1400. X              continue
  1401. X              ;;
  1402. X           2) exit
  1403. X              ;;
  1404. X           *) mv $file $dir/bbs/$basen/$m
  1405. X              echo "Message saved..."
  1406. X              break
  1407. X              ;;
  1408. X      esac
  1409. Xdone
  1410. ________This_Is_The_END________
  1411. echo 'x - mkbul'
  1412. sed 's/^X//' <<'________This_Is_The_END________' >>mkbul
  1413. X#! /bin/sh
  1414. X# Post a system bulletin.
  1415. X
  1416. X
  1417. Xif [ "$access" -lt 2 ]; then
  1418. X  echo "Sorry - You are not allowed to post\nbulletins."
  1419. X  exit
  1420. Xfi
  1421. X
  1422. Xfile=/tmp/sbbs.pbl.$$
  1423. Xecho "Subject <$bbs update>: \c"
  1424. Xread subj
  1425. Xsubj=`echo "$subj" | tr -d "!"`
  1426. Xif [ -z "$subj" ] ; then
  1427. X   subj="$bbs update"
  1428. Xfi
  1429. X
  1430. Xecho "Enter your bulletin now. Press CTRL-D"
  1431. Xecho "for editor.\n"
  1432. Xecho "From: #$bbs_name ($fullname)\nDate: `date`" > $file
  1433. Xecho "Subj: $subj" >> $file
  1434. Xecho "      $bbs version $version\n" >> $file
  1435. Xwhile : ; do
  1436. X      cat >> $file
  1437. X      $dir/programs/edit $file
  1438. X      status=$?
  1439. X      if [ $status = 1 ] ; then
  1440. X        continue
  1441. X      elif [ $status = 2 ] ; then
  1442. X        exit
  1443. X      else
  1444. X        $dir/programs/lock /tmp/sbbs.pbl.lock
  1445. X        z=`ls $dir/bulletins | wc -l`
  1446. X        z=`expr $z + 1`
  1447. X        cat $file > $dir/bulletins/$z
  1448. X        rm $file
  1449. X        rm /tmp/sbbs.pbl.lock
  1450. X        echo "Message saved..."
  1451. X        exit
  1452. X      fi
  1453. Xdone
  1454. ________This_Is_The_END________
  1455. echo 'x - mkusr'
  1456. sed 's/^X//' <<'________This_Is_The_END________' >>mkusr
  1457. X#! /bin/sh
  1458. X# mkusr - make user.
  1459. X
  1460. Xname="$1:"
  1461. Xpassword=$2
  1462. Xfname=$3
  1463. Xaccess=$4
  1464. Xif [ "$access" = "" ] ; then
  1465. X  access=1
  1466. Xfi
  1467. X
  1468. Xtfile=/tmp/sig.data.$$
  1469. Xecho $password > $tfile
  1470. Xcryp=`crypt "$password" < $tfile`
  1471. X
  1472. Xecho "$1 $cryp" >> $dir/admin/profile/logins
  1473. X
  1474. Xname="$1:$4:$3:$5:$6:$7:$8:$9"
  1475. Xecho "$name" >> $dir/admin/profile/members
  1476. Xrm $tfile
  1477. X
  1478. Xmkdir $dir/mail/"$1"
  1479. ________This_Is_The_END________
  1480. echo 'x - news'
  1481. sed 's/^X//' <<'________This_Is_The_END________' >>news
  1482. X#! /bin/sh
  1483. X# news : A bulletin update system
  1484. X
  1485. Xp=$dir/misc/newnews
  1486. Xc=$dir/bulletins
  1487. Xg="`grep \"^$bbs_name:\" $p`"
  1488. X
  1489. Xif [ "$g" != "" ] ; then
  1490. X  rec="`grep \"^$bbs_name:\" $p `"
  1491. X  rec="`echo \"$rec\" | awk -F: '{print $2}'`"
  1492. X else
  1493. X  rec=1
  1494. X  echo "$bbs_name:1" >> $p
  1495. Xfi
  1496. X
  1497. Xb=`ls $c | wc -l`
  1498. X
  1499. Xif [ $rec -gt $b ] ; then
  1500. X  sleep 5
  1501. X  exit
  1502. Xfi
  1503. X
  1504. Xecho "===========[System News]==========="
  1505. X
  1506. Xwhile [ $rec -le $b ] ; do
  1507. X  cat $c/$rec
  1508. X  f=/tmp/sbbs.tpb.$$
  1509. X  $dir/programs/lock /tmp/sbbs.lock
  1510. X  grep -v "^$bbs_name:" $p > $f
  1511. X  cat $f > $p
  1512. X  rm $f
  1513. X  rc=`expr $rec + 1`
  1514. X  echo "$bbs_name:$rc" >> $p
  1515. X  rm /tmp/sbbs.lock
  1516. X  echo "Continue or Quit) C\b\c"
  1517. X  read default
  1518. X  default=`echo $default | cut -c1`
  1519. X  if [ "$default" = Q -o "$default" = q ] ; then
  1520. X    exit
  1521. X  fi
  1522. X  rec=`expr $rec + 1`
  1523. Xdone
  1524. ________This_Is_The_END________
  1525. echo 'x - post'
  1526. sed 's/^X//' <<'________This_Is_The_END________' >>post
  1527. X#! /bin/sh
  1528. X# Post bulletins.
  1529. Xif [ "$1" = "" ] ; then
  1530. X  echo "<CR = abort> Enter subject: \c"
  1531. X  read subject
  1532. X  count=`echo "$subject" | wc -c`
  1533. X  if [ $count -le 4 -a $count -gt 1 ] ; then
  1534. X    echo "Please make your subject 4 characters or more."
  1535. X    exit
  1536. X  fi
  1537. X  if [ "$subject" = "" ] ; then
  1538. X    exit
  1539. X  fi
  1540. X  echo "Correct? <Y> \c"
  1541. X  read yn
  1542. X  set yn=`echo $yn`
  1543. X  if [ "$yn" = N -o "$yn" = n ] ; then
  1544. X    exit
  1545. X  fi
  1546. Xelse
  1547. X  subject=$1
  1548. X  echo "Include message in reply?(n)\c"
  1549. X  read yn
  1550. X  yn=`echo $yn | tr -d "!"`
  1551. X  if [ "$yn" = Y -o "$yn" = y ] ; then
  1552. X    xflag=1
  1553. X  fi
  1554. Xfi
  1555. Xdate=`date`
  1556. Xfrom="$bbs_name ("
  1557. Xfrom="$from$fullname)"
  1558. Xfile=/tmp/sbbs.pst.$$
  1559. Xecho "From   : #$from " >> $file
  1560. Xecho "Subject: $subject" >> $file
  1561. Xecho "Date   : $date" >> $file
  1562. Xecho "\n" ; echo "\n" >> $file
  1563. Xif [ "$xflag" = 1 ] ; then
  1564. X   sed -n '6,$s/^/> /
  1565. X           6,$p' $2 >> $file
  1566. Xfi
  1567. Xecho "Enter your message now."
  1568. Xecho "Enter a CTRL-D for editor."
  1569. Xwhile : ; do
  1570. X  cat >> $file
  1571. X  $dir/programs/edit $file null
  1572. X  status=$?
  1573. X  if [ $status = 1 ];then
  1574. X    continue
  1575. X  fi
  1576. X  if [ $status = 2 ];then
  1577. X    exit
  1578. X  fi
  1579. X  break
  1580. Xdone
  1581. ________This_Is_The_END________
  1582. echo 'x - program'
  1583. sed 's/^X//' <<'________This_Is_The_END________' >>program
  1584. X#! /bin/sh
  1585. X# Shell program menu
  1586. X# Takes input from a file called
  1587. X# $dir/misc/prlib
  1588. X
  1589. X
  1590. Xif [ -r $dir/misc/prlib ] ; then
  1591. X  echo "\n\n"
  1592. Xelse
  1593. X  echo "No programs available."
  1594. X  exit
  1595. Xfi
  1596. Xecho "$: Leave program"
  1597. Xecho "#: List programs"
  1598. Xawk -F: '{print $1 ":" $2}' $dir/misc/prlib
  1599. X
  1600. Xwhile :;do
  1601. Xecho "Program) \c"
  1602. Xread prg
  1603. Xprg=`echo "$prg" | tr -d "!"`
  1604. Xprg=`echo $prg`
  1605. Xcom=`echo "$prg" | cut -c1`
  1606. X
  1607. Xif [ -z "$prg" ] ; then
  1608. X  continue
  1609. Xfi
  1610. X
  1611. Xif [ "$com" = '$' ] ; then
  1612. X  exit
  1613. Xfi
  1614. X
  1615. Xif [ "$com" = '#' ] ; then
  1616. X  echo "$: Leave program"
  1617. X  echo "#: List programs"
  1618. X  cut -c-20 $dir/misc/prlib
  1619. X  continue
  1620. Xfi
  1621. X
  1622. X
  1623. X
  1624. X
  1625. Xa=`expr $prg + 0 2> /dev/null`||continue
  1626. Xa=`grep "^$a:" $dir/misc/prlib`
  1627. X
  1628. Xif [ -z "$a" ] ; then
  1629. X  echo "Program not found"
  1630. X  continue
  1631. Xfi
  1632. Xprg="`echo \"$a\" | awk -F: '{print $3}' `"
  1633. X
  1634. Xeflag=`grep "^eval=" $dir/misc/config`
  1635. Xif [ -z "$eflag" ] ; then
  1636. X$prg
  1637. Xelse
  1638. Xeval $prg
  1639. Xfi
  1640. Xdone
  1641. X
  1642. ________This_Is_The_END________
  1643. echo 'x - rescue'
  1644. sed 's/^X//' <<'________This_Is_The_END________' >>rescue
  1645. X#! /bin/sh
  1646. X# Shell cleanup/rescue script.
  1647. X
  1648. Xlength=`cat $dir/admin/profile/log | wc -l`
  1649. Xif [ $length -eq $logc ] ; then
  1650. X  proc=$$
  1651. X  sed "1d" $dir/admin/profile/log > $dir/admin/profile/log.$proc
  1652. X  mv $dir/admin/profile/log.$proc $dir/admin/profile/log ; rm $dir/admin/profile/log.$proc
  1653. Xfi
  1654. X
  1655. Xecho "$bn\t$login_time\t`date | cut -c9-19`<CD>" >> $dir/admin/profile/log
  1656. X
  1657. Xfile=/tmp/sbbs.hup.$$
  1658. X$dir/programs/lock /tmp/sbbs.hup.lock
  1659. Xgrep -v "^$bbs_name:" $dir/misc/usr > $file
  1660. Xcat $file > $dir/misc/usr
  1661. Xrm /tmp/sbbs.hup.lock
  1662. Xrm $file
  1663. Xrm /tmp/sbbs.*
  1664. Xecho "$cmd_list" >> $dir/admin/profile/cmdlog
  1665. Xecho "$fullname" > $dir/admin/profile/lastcaller
  1666. ________This_Is_The_END________
  1667. echo 'x - sbbs'
  1668. sed 's/^X//' <<'________This_Is_The_END________' >>sbbs
  1669. X#! /bin/sh
  1670. X# SBBS Main menu.
  1671. X
  1672. Xtrap 'trap "" 15 14 3 2 1 ; $dir/programs/rescue ; exit 0' 1
  1673. Xtrap "" 2 3
  1674. Xtty=`tty`
  1675. Xexport tty
  1676. Xecho "$bbs_name:$fullname:$tty" >> $dir/misc/usr
  1677. X
  1678. Xlogc="`grep \"^log=\" $dir/misc/config`"
  1679. Xcls="`grep \"^cls=\" $dir/misc/config`"
  1680. X
  1681. Xif [ "$cls" = "" ] ; then
  1682. X  cls="echo  \c"
  1683. Xelse
  1684. X  cls=`echo "$cls" | cut -c5-`
  1685. Xfi
  1686. Xexport cls
  1687. X
  1688. Xif [ "$logc" = "" ] ; then
  1689. X  logc=20 ; export logc
  1690. Xelse
  1691. X  logc=`echo $logc | cut -c5-`
  1692. X  logc=`expr $logc + 0 2> /dev/null`
  1693. X  if [ $? != 0 ] ; then
  1694. X    logc=20 ; export logc
  1695. X  else
  1696. X    export logc
  1697. X  fi
  1698. Xfi
  1699. Xcmd_list="#$bbs_name" ; export cmd_list
  1700. Xecho "\n\n"
  1701. Xmaill=`ls $dir/mail/"$bbs_name" | wc -l`
  1702. X
  1703. Xecho "Last caller was `cat $dir/admin/profile/lastcaller`."
  1704. X
  1705. Xif [ $maill -gt 0 ] ; then
  1706. X  echo "You have mail waiting! Choose option R at $bbs main prompt."
  1707. Xfi
  1708. X
  1709. X
  1710. X
  1711. Xwhile : ; do
  1712. X     echo "$bbs main) \c"
  1713. X     read cmd
  1714. X     cmd=`echo "$cmd" | tr -d "!"`
  1715. X
  1716. X     cmd=`echo "$cmd"`
  1717. X     if [ -z "$cmd" ] ; then
  1718. X       continue;
  1719. X     fi
  1720. X     cmd=`echo "$cmd" | cut -c1`
  1721. X     cmd_list="$cmd_list:$cmd";export cmd_list
  1722. X
  1723. X     if [ "$cmd" = "?" ] ; then
  1724. X       cat $dir/misc/main_menu
  1725. X       continue
  1726. X     fi
  1727. X
  1728. X     if [ $cmd = M -o $cmd = m ] ; then
  1729. X       $dir/programs/bbs
  1730. X       continue
  1731. X     fi
  1732. X
  1733. X     if [ $cmd = O -o $cmd = o ] ; then
  1734. X       $dir/programs/db
  1735. X       continue
  1736. X     fi
  1737. X
  1738. X
  1739. X     if [ $cmd = I -o $cmd = i ] ; then
  1740. X       cat $dir/misc/info
  1741. X       continue
  1742. X     fi
  1743. X
  1744. X     if [ $cmd = L -o $cmd = l ] ; then
  1745. X       $dir/programs/users
  1746. X       continue
  1747. X     fi
  1748. X
  1749. X     if [ $cmd = E -o $cmd = e ] ; then
  1750. X       $dir/programs/lock /tmp/sbbs.hup.lock
  1751. X       file=/tmp/sbbs.hup.$$
  1752. X       grep -v "^$bbs_name:" $dir/misc/usr > $file
  1753. X       cat $file > $dir/misc/usr ; rm $file
  1754. X       rm /tmp/sbbs.hup.lock
  1755. X       length=`cat $dir/admin/profile/log | wc -l`
  1756. X       if [ $length -eq $logc ] ; then
  1757. X         proc=$$
  1758. X         sed 1d $dir/admin/profile/log > $dir/admin/profile/log.$proc
  1759. X         mv $dir/admin/profile/log.$proc $dir/admin/profile/log
  1760. X       fi
  1761. X       echo "$bn\t$login_time\t`date | cut -c9-19`" >> $dir/admin/profile/log
  1762. X       echo "$cmd_list" >> $dir/admin/profile/cmdlog
  1763. X       echo "Thank you for calling, $fullname"
  1764. X       echo "Loging off at `date`"
  1765. X       echo ""
  1766. X       cat $dir/misc/closing
  1767. X       echo "$fullname" > $dir/admin/profile/lastcaller
  1768. X       echo "$bbs (SBBS $version) disconnecting..."
  1769. X       exit
  1770. X     fi
  1771. X
  1772. X     if [ $cmd = A -o $cmd = a ];then
  1773. X       if [ $access -lt 3 ];then
  1774. X         echo "Only the system administrater may get \naccess to the shell."
  1775. X         continue 
  1776. X       fi
  1777. X       sh=`grep "^shell=" $dir/misc/config | cut -c7-`
  1778. X       if [ -z "$sh" ] ; then
  1779. X          /bin/sh
  1780. X       else
  1781. X          $sh
  1782. X       fi
  1783. X       continue
  1784. X     fi
  1785. X
  1786. X     if [ $cmd = D -o $cmd = d ] ; then
  1787. X       $dir/programs/udl
  1788. X       continue
  1789. X     fi 
  1790. X
  1791. X     if [ $cmd = W -o $cmd = w ] ; then
  1792. X       $dir/programs/sendmail
  1793. X       continue
  1794. X     fi
  1795. X
  1796. X     if [ $cmd = R -o $cmd = r ] ; then
  1797. X       $dir/programs/mailbox
  1798. X       continue
  1799. X     fi
  1800. X
  1801. X     if [ $cmd = P -o $cmd = p ] ; then
  1802. X       if [ "$access" -eq 0 ] ; then
  1803. X         echo "Only level 1 and greater people have\naccess to the program library."
  1804. X         continue
  1805. X       fi 
  1806. X       $dir/programs/program
  1807. X       continue
  1808. X     fi
  1809. X
  1810. X     if [ $cmd = B -o $cmd = b ] ; then
  1811. X       $dir/programs/mkbul
  1812. X       continue
  1813. X     fi  
  1814. X
  1815. X     if [ $cmd = C -o $cmd = c ] ; then
  1816. X       $dir/programs/cwd
  1817. X       continue
  1818. X     fi
  1819. X
  1820. X     if [ $cmd = v -o $cmd = V ] ; then
  1821. X       $dir/programs/usr
  1822. X       continue
  1823. X     fi
  1824. X     if [ $cmd = u -o $cmd = U ] ; then
  1825. X       echo "NOTE: <CD> denotes loss of carrier."
  1826. X       cat $dir/admin/profile/log
  1827. X       continue
  1828. X     fi
  1829. X     if [ $cmd = t -o $cmd = T ] ; then
  1830. X       $dir/programs/chat
  1831. X       continue
  1832. X     fi
  1833. X     if [ $cmd = q -o $cmd = Q ] ; then
  1834. X       $dir/programs/control
  1835. X       continue
  1836. X     fi
  1837. Xdone
  1838. ________This_Is_The_END________
  1839. echo 'x - sendmail'
  1840. sed 's/^X//' <<'________This_Is_The_END________' >>sendmail
  1841. X#! /bin/sh
  1842. X# Send - part of the email package of
  1843. X# sbbs
  1844. Xappath=$dir/admin/profile
  1845. X
  1846. Xif [ "$1" = "" ] ; then
  1847. Xecho "Enter user name or # to send mail to:"
  1848. Xread name
  1849. Xto=`echo "$name"| tr "[a-z]" "[A-Z]"`
  1850. Xto=`echo "$to" | tr -s " "`
  1851. Xelse
  1852. Xto=$1
  1853. Xecho "Include message in reply?(n)\c"
  1854. Xread yn
  1855. Xyn=`echo $yn | tr -d "!"`
  1856. Xif [ "$yn" = Y -o "$yn" = y ] ; then
  1857. X  xflag=1
  1858. Xfi
  1859. Xfi
  1860. Xq=`expr $to + 0 2> /dev/null`
  1861. Xif [ $? -ne 0 ] ; then
  1862. X  t=`awk -F: '{print $3}' $dir/admin/profile/members | grep "^$to\$"`
  1863. X  flagh=1
  1864. Xelse
  1865. Xt=`grep "^$to:" $appath/members`
  1866. Xfi
  1867. Xif [ "$t" = "" ] ; then
  1868. X  echo "There is no user $to"
  1869. X  exit
  1870. Xfi
  1871. Xif [ "$flagh" =  1 ] ; then
  1872. X  flagh=0
  1873. X  to=`awk -F: '{print $1 ":" $3}' $dir/admin/profile/members | grep ":$to\$"`
  1874. X  to=`echo "$to"| awk -F: '{print $1}'`
  1875. Xfi
  1876. Xk=`grep "^$to:" $dir/admin/profile/members | awk -F: '{print $3}'`
  1877. Xif [ -z "$k" ] ; then
  1878. X  echo "User was deleted."
  1879. X  exit
  1880. Xfi
  1881. X
  1882. Xno=`ls $dir/mail/"$to" | wc -l`
  1883. Xno=`echo $no`
  1884. Xno=`expr $no + 1`
  1885. X
  1886. Xfile=sbbs.sml.$$
  1887. Xecho "From: #$bbs_name ($fullname)" >> /tmp/$file
  1888. Xecho "Date: `date`" >> /tmp/$file
  1889. Xecho "Message to: #$to(you)" >> /tmp/$file
  1890. Xif [ "$1" != "" ] ; then
  1891. X  echo "Reply from bulletin: \"$2\"\n" >> /tmp/$file
  1892. Xfi
  1893. Xif [ "$xflag" = 1 ] ; then
  1894. X   sed -n '6,$s/^/> /
  1895. X           6,$p' $dir/bbs/$basen/$3 >> /tmp/$file
  1896. Xfi
  1897. Xif [ "$1" = "" ] ; then
  1898. Xecho "\n" >> /tmp/$file
  1899. Xfi
  1900. Xecho "Enter your message now."
  1901. Xecho "Enter CTRL-D for editor."
  1902. Xwhile : ; do
  1903. X   cat >> /tmp/$file
  1904. X   $dir/programs/edit /tmp/$file
  1905. X   p=$?
  1906. X   if [ $p = 2 ] ; then
  1907. X     exit
  1908. X   fi
  1909. X   if [ $p = 1 ] ; then
  1910. X     continue
  1911. X   fi
  1912. X   if [ $p = 3 ] ; then
  1913. X     cat /tmp/$file > $dir/mail/"$to"/$no
  1914. X     rm /tmp/$file
  1915. X     echo "Message Saved..."
  1916. X     exit
  1917. X   fi
  1918. Xdone
  1919. ________This_Is_The_END________
  1920. echo 'x - udl'
  1921. sed 's/^X//' <<'________This_Is_The_END________' >>udl
  1922. X#! /bin/sh
  1923. X# Main udl system
  1924. X
  1925. X$cls
  1926. X
  1927. Xecho "================================"
  1928. Xecho "The $bbs UP/DOWN load system"
  1929. Xecho "================================"
  1930. Xecho "\n"
  1931. Xwhile : ; do
  1932. Xecho ""
  1933. Xecho "UD/L) \c"
  1934. Xread nu
  1935. X
  1936. Xif [ -z "$nu" ] ; then
  1937. X  continue
  1938. Xfi
  1939. X
  1940. Xnu=`echo "$nu" | tr -d "!"`
  1941. X
  1942. Xif [ "$nu" = N -o "$nu" = n ] ; then
  1943. X  $dir/programs/udlnew
  1944. X  continue
  1945. Xfi
  1946. X
  1947. Xif [ "$nu" = E -o "$nu" = e ] ; then
  1948. X  exit
  1949. Xfi
  1950. X
  1951. Xif [ "$nu" = C -o "$nu" = c ] ; then
  1952. X   if [ $access -lt 2 ] ; then
  1953. X      echo "Sorry , you may not create DataBases.\nConsult your local SysOp or Co-SysOp if\nyou wish to have a DataBase."
  1954. X      continue
  1955. X   fi
  1956. X   echo "Enter title of DataBase: \c"
  1957. X   read DataBase
  1958. X
  1959. X   if [ -z "$DataBase" ] ; then
  1960. X      echo "(abort)"
  1961. X      continue
  1962. X   fi
  1963. X
  1964. X   title="$DataBase"
  1965. X
  1966. X   DataBase=`ls $dir/udl | wc -l`
  1967. X   DataBase=`echo $DataBase`
  1968. X   mkdir $dir/udl/$DataBase
  1969. X   echo "\c" >> $dir/udl/$DataBase/.udlrc
  1970. X   echo "$DataBase: $title" >> $dir/misc/udlrc
  1971. X   continue
  1972. Xfi 
  1973. Xif [ "$nu" = "L" -o "$nu" = "l" ] ;then
  1974. X   cat $dir/misc/udlrc
  1975. X   continue
  1976. Xfi
  1977. X
  1978. Xif [ "$nu" = "?" ] ; then
  1979. X  cat << EOH
  1980. X   (C) Create a message base            (N) New downloads
  1981. X   (E) Exit                             (L) List DataBases
  1982. X   (n) Enter DataBase number n.
  1983. XEOH
  1984. Xcontinue
  1985. Xfi
  1986. X
  1987. Xat=`expr $nu + 0 2> /dev/null`||continue
  1988. X
  1989. Xtest=`grep "^$nu:" $dir/misc/udlrc`
  1990. X
  1991. Xif [ -z "$test" ] ; then
  1992. X  echo "Base does not exist."
  1993. X  continue
  1994. Xfi
  1995. X
  1996. Xdbase=$nu
  1997. Xdbase=`echo $dbase`
  1998. X
  1999. Xwhile : ; do
  2000. Xecho "File) \c"
  2001. Xread file
  2002. X
  2003. Xif [ "$file" = "?" ] ; then
  2004. X  cat << HELP
  2005. X        (E) Exit to $bbs main           (C) Chose another DataBase
  2006. X        (L) List files.
  2007. X
  2008. X    Enter file number to download.
  2009. X
  2010. X    To upload, type a number that is not available on this base. (And
  2011. Xnot less then 1)
  2012. XHELP
  2013. Xcontinue
  2014. Xfi
  2015. X
  2016. Xif [ "$file" = L -o "$file" = l ]; then
  2017. X  cat $dir/udl/$dbase/.udlrc
  2018. X  continue
  2019. Xfi
  2020. X
  2021. Xif [ "$file" = E -o "$file" = e ]; then
  2022. X  exit
  2023. Xfi
  2024. X
  2025. Xif [ "$file" = C -o "$file" = c ]; then
  2026. X  continue 2
  2027. Xfi
  2028. X
  2029. Xfile=`expr $file + 0 2> /dev/null`
  2030. X
  2031. Xif [ $? != 0 ] ; then
  2032. X  continue
  2033. Xfi
  2034. X
  2035. Xtest=`grep "^$file:" $dir/udl/$dbase/.udlrc`
  2036. X
  2037. Xif [ -z "$test" ] ; then
  2038. X  echo "File doesn't exist."
  2039. X  echo "Do you wish to upload it? <N> \c"
  2040. X  read upload
  2041. X  upload=`echo "$upload" | tr -d "!" | cut -c1`
  2042. X  if [ "$upload" != Y -a "$upload" != y ] ; then
  2043. X    continue
  2044. X  fi
  2045. X  echo "Enter an 80 character or less description\n: \c"
  2046. X  read des
  2047. X  des=`echo "$des" | tr "|" ":"`
  2048. X  des=`echo "$des" | cut -c-80`
  2049. X  name=$file
  2050. X  file=`ls $dir/udl/new | wc -l`
  2051. X  file=`expr $file + 1`
  2052. X  echo "$file| $des [Uploaded by #$bbs_name]|$dbase" >> $dir/udl/new/.udlrc
  2053. X  echo "Protocols available: "
  2054. X  awk -F: '{print $1 ":  " $2}' $dir/misc/protocols.up
  2055. X  echo "(ENTER to abort)"
  2056. X  echo "Protocol) \c"
  2057. X  read proto
  2058. X  proto=`expr $proto + 0 2> /dev/null`
  2059. X  if [ $? -ne 0 ] ; then
  2060. X     proto=1
  2061. X  else
  2062. X     at=`grep "^$proto:" $dir/misc/protocols.up`
  2063. X     if [ -z "$at" ] ; then
  2064. X        proto=1
  2065. X     else
  2066. X        cmd="`echo \"$at\" | awk -F: '{print $3}'`"
  2067. X        eval $cmd $dir/udl/new/$file
  2068. X     fi
  2069. X  fi
  2070. X  continue
  2071. Xfi
  2072. X
  2073. X
  2074. Xecho "Transfer protocols: "
  2075. Xawk -F: '{print $1 ":" $2}' $dir/misc/protocols.down
  2076. Xecho "(ENTER to abort)"
  2077. Xecho "Protocol) \c"
  2078. X  read proto
  2079. X  proto=`expr $proto + 0 2> /dev/null`
  2080. X  if [ $? -ne 0 ] ; then
  2081. X     proto=1
  2082. X  else
  2083. X     at=`grep "^$proto:" $dir/misc/protocols.down`
  2084. X     if [ -z "$at" ] ; then
  2085. X        proto=1
  2086. X     else
  2087. X        cmd="`echo \"$at\" | awk -F: '{print $3}'`"
  2088. X        eval $cmd $dir/udl/$dbase/$file
  2089. X     fi
  2090. X  fi
  2091. X  continue
  2092. Xdone
  2093. Xdone
  2094. ________This_Is_The_END________
  2095. echo 'x - udlnew'
  2096. sed 's/^X//' <<'________This_Is_The_END________' >>udlnew
  2097. X#! /bin/sh
  2098. X# New file check.
  2099. X
  2100. Xif [ $access -lt 2 ] ; then
  2101. X  echo "You may not allow new uploads."
  2102. X  exit
  2103. Xfi
  2104. X
  2105. Xa=`ls $dir/udl/new | wc -l`
  2106. X
  2107. Xif [ $a -eq 0 ] ; then
  2108. X  echo "No uploads."
  2109. X  exit
  2110. Xfi
  2111. X
  2112. X
  2113. X$cls ; b=1
  2114. X
  2115. Xwhile [ $b -le $a ] ; do
  2116. X
  2117. X     c="`sed -n ${b}p $dir/udl/new/.udlrc`"
  2118. X     echo "File:\c"
  2119. X     echo "$c" | awk -F\| '{print $1}'
  2120. X     echo "Description:\c"
  2121. X     echo "$c" | awk -F\| '{print $2}'
  2122. X     echo "DataBase:\c"
  2123. X     echo "$c" | awk -F\| '{print $3}'
  2124. X
  2125. X     while : ; do
  2126. X     echo "Upload) \c"
  2127. X     read cmd
  2128. X
  2129. X     if [ -z "$cmd" ] ; then
  2130. X       continue
  2131. X     fi
  2132. X
  2133. X     if [ "$cmd" = "?" ] ; then
  2134. X       cat << EOH
  2135. X
  2136. X       D: Delete file.
  2137. X       M: Move this file.
  2138. X       V: View this file.
  2139. X       A: Abort session.
  2140. XEOH
  2141. X     fi
  2142. X
  2143. X     if [ $cmd = D -o $cmd = d ];then
  2144. X       set="$set"0
  2145. X       b=`expr $b + 1`
  2146. X       continue 2
  2147. X     fi
  2148. X
  2149. X     if [ $cmd = M -o $cmd = m ];then
  2150. X       set="$set"1
  2151. X       b=`expr $b + 1`
  2152. X       continue 2
  2153. X     fi
  2154. X
  2155. X     if [ $cmd = V -o $cmd = v ];then
  2156. X        echo "First ten lines..."
  2157. X        sed -n '1,10p' $dir/udl/new/$b
  2158. X        echo "Press <RETURN>:\c"
  2159. X        read junk
  2160. X        echo "Last ten lines..."
  2161. X        tail -10 $dir/udl/new/$b
  2162. X        echo "Press <RETURN>:\c"
  2163. X        read junk
  2164. X        continue
  2165. X     fi
  2166. X
  2167. X     if [ $cmd = A -o $cmd = a ];then
  2168. X       echo "Session aborted. Files restored."
  2169. X       exit
  2170. X     fi
  2171. X
  2172. X     done
  2173. X
  2174. Xdone
  2175. X
  2176. Xsetc=`echo "$set" | wc -c`
  2177. Xsetc=`expr $setc - 1`
  2178. X
  2179. Xa=1
  2180. Xecho "Sorting....."
  2181. Xwhile [ $a -le $setc ] ; do
  2182. X      string="`sed -n ${a}p $dir/udl/new/.udlrc`"
  2183. X      sett=`echo "$set" | cut -c$a`
  2184. X      if [ $sett -eq 0 ] ; then
  2185. X        a=`expr $a + 1`
  2186. X        continue
  2187. X      fi
  2188. X      datab=`echo "$string" | awk -F\| '{print $3}'`
  2189. X      desc="`echo \"$string\" | awk -F\| '{print $2}'`"
  2190. X      num=`ls $dir/udl/$datab | wc -l`
  2191. X      num=`expr $num + 1`
  2192. X      echo "$num: $desc" >> $dir/udl/$datab/.udlrc
  2193. X      mv $dir/udl/new/$a $dir/udl/$datab/$num
  2194. X      a=`expr $a + 1`
  2195. Xdone
  2196. Xecho "\c" > $dir/udl/new/.udlrc
  2197. Xrm $dir/udl/new/* 2> /dev/null
  2198. Xecho "done"
  2199. ________This_Is_The_END________
  2200. echo 'x - update'
  2201. sed 's/^X//' <<'________This_Is_The_END________' >>update
  2202. X#! /bin/sh
  2203. X# Update file for the bbs
  2204. X
  2205. Xif [ ! -f $dir/new/$bbs_name ] ; then
  2206. X   echo > $dir/new/$bbs_name
  2207. Xfi
  2208. X
  2209. Xline=`grep "^$basen:" $dir/new/$bbs_name`
  2210. Xif [ "$line" = "" ] ; then
  2211. X   echo "$basen:$1" >> $dir/new/$bbs_name
  2212. X   exit
  2213. Xfi
  2214. X
  2215. Xnq=`echo "$line" | awk -F: '{print $2}'`
  2216. Xif [ $nq -gt $1 ] ; then
  2217. X  exit
  2218. Xfi
  2219. X
  2220. Xfile=/tmp/sbbs.tmp.$$
  2221. X
  2222. Xgrep -v "^$basen:" $dir/new/$bbs_name > $file
  2223. Xcat $file > $dir/new/$bbs_name
  2224. Xrm $file
  2225. Xecho "$basen:$1" >> $dir/new/$bbs_name
  2226. ________This_Is_The_END________
  2227. echo 'x - users'
  2228. sed 's/^X//' <<'________This_Is_The_END________' >>users
  2229. X#! /bin/sh
  2230. X# List Users
  2231. X
  2232. Xecho "Enter -1 to exit."
  2233. X
  2234. Xwhile : ; do
  2235. X      echo "User ID) \c"
  2236. X      read id
  2237. X
  2238. X      id=`expr $id + 0 2> /dev/null`
  2239. X      if [ $? != 0 ] ; then
  2240. X        echo "Enter the ID #."
  2241. X        continue
  2242. X      fi
  2243. X      if [ $id -eq -1 ] ; then
  2244. X        exit
  2245. X      fi
  2246. X      
  2247. X      t="`grep \"^$id:\" $dir/admin/profile/members`"
  2248. X
  2249. X      if [ -z "$t" ] ; then
  2250. X        echo "ID doesn't exist."
  2251. X        continue
  2252. X      fi
  2253. X
  2254. X      if [ $access -lt 2 ] ; then
  2255. X        echo "$t" | awk -F: '{print "ID #:" $1 "\t" "Access:" $2 "\nFull Name:" $3}'
  2256. X      else
  2257. X        echo "$t" | awk -F: '{print "Uid: " $1 "\tAccess: " $2 "\nFull Name: " $3 "\tAddress: " $4 "\nCity: " $5 "\tState: " $6 "\nZip: " $7 "\tPhone: " $8}'
  2258. X      fi
  2259. Xdone
  2260. ________This_Is_The_END________
  2261. echo 'x - usr'
  2262. sed 's/^X//' <<'________This_Is_The_END________' >>usr
  2263. X#! /bin/sh
  2264. X# Validate, list, remove, access
  2265. X
  2266. Xif [ $access -lt 2 ] ; then
  2267. X  echo "Sorry - You may not use the validation\nfunction with a level less then 2."
  2268. Xfi
  2269. Xecho "\n\n"
  2270. Xwhile : ; do
  2271. X  echo "$bbs validation) \c"
  2272. X  read cmd
  2273. X  cmd=`echo "$cmd" | tr -d "!"`
  2274. X  if [ -z "$cmd" ] ; then
  2275. X    continue
  2276. X  fi
  2277. X
  2278. X  cmd=`echo "$cmd" | tr "[A-Z]" "[a-z]"`
  2279. X
  2280. X  if [ "$cmd" = "?" ] ; then
  2281. X    cat << EOH
  2282. X
  2283. X    (L) List new users on file          (A) Change access of a user
  2284. X    (R) Remove a user                   (C) Clear a new user
  2285. X    (V) View command log                (D) Delete (refresh) command log
  2286. X    (E) Exit valadation menu
  2287. XEOH
  2288. X    continue
  2289. X  fi
  2290. X
  2291. X  if [ $cmd = e ] ; then
  2292. X    exit
  2293. X  fi
  2294. X
  2295. X  if [ $cmd = l ] ; then
  2296. X    cat $dir/admin/profile/newusers
  2297. X    continue
  2298. X  fi
  2299. X
  2300. X  if [ $cmd = a ] ; then
  2301. X    if [ $access = 3 ] ; then
  2302. X      axlim=3
  2303. X    else
  2304. X      axlim=1
  2305. X    fi
  2306. X    while : ; do
  2307. X    echo "Enter user ID: \c"
  2308. X    read alias
  2309. X    ab="`grep \"^$alias:\" $dir/admin/profile/members`"
  2310. X    if [ -z "$ab" ] ; then
  2311. X      echo "That user doesn't exist!"
  2312. X      continue
  2313. X    fi
  2314. X    break
  2315. X    done
  2316. X    while : ; do
  2317. X    echo "Enter new access (0-$axlim): \c"
  2318. X    read axess
  2319. X    axess=`expr $axess + 0 2> /dev/null`
  2320. X    if [ $? = 2 ] ; then
  2321. X      echo "Ilformed number."
  2322. X      continue
  2323. X    fi
  2324. X    if [ $axess -lt 0 -o $axess -gt $axlim ] ; then
  2325. X      echo "Out of range - (0-$axlim)"
  2326. X      continue 2
  2327. X    fi
  2328. X    break
  2329. X    done
  2330. X    lin="`echo \"$ab\" | awk -F: '{print $1}'`"
  2331. X    lin="$lin:$axess:`echo \"$ab\" | awk -F: '{print $3 ":" $4 ":" $5 ":" $6 ":" $7 ":" $8}'`"
  2332. X    file=/tmp/sbbs.tmp.$$
  2333. X    $dir/programs/lock /tmp/sbbs.tmp.lock
  2334. X    grep -v "^$alias:" $dir/admin/profile/members > $file
  2335. X    cat $file > $dir/admin/profile/members
  2336. X    rm /tmp/sbbs.tmp.lock
  2337. X    rm $file
  2338. X    echo "$lin" >> $dir/admin/profile/members
  2339. X    echo "Access changed successfully."
  2340. X  fi
  2341. X
  2342. X  if [ $cmd = c ] ; then
  2343. X    echo "Enter the user number: \c"
  2344. X    read number
  2345. X    a=`grep "^$number:" $dir/admin/profile/newusers`
  2346. X    if [ -z "$a" ] ; then
  2347. X      echo "There is no newuser #$number"
  2348. X      continue
  2349. X    fi
  2350. X    file=/tmp/sbbs.tnw.$$
  2351. X    $dir/programs/lock /tmp/sbbs.tnw.lock
  2352. X    grep -v "^$number:" $dir/admin/profile/newusers > $file
  2353. X    cat $file > $dir/admin/profile/newusers
  2354. X    rm /tmp/sbbs.tnw.lock
  2355. X    rm $file
  2356. X    echo "Newuser #$number cleared from newuser file."
  2357. X    continue
  2358. X  fi
  2359. X
  2360. X  if [ $cmd = r ] ; then
  2361. X    echo "Enter user # to delete: \c"
  2362. X    read delete
  2363. X    a=`grep "^$delete:" $dir/admin/profile/members`
  2364. X    if [ -z "$a" ] ; then
  2365. X      echo "#$delete doesn't exist."
  2366. X      continue
  2367. X    fi
  2368. X    named=`echo "$a" | awk -F: '{print $3}'`
  2369. X    axess=`echo "$a" | awk -F: '{print $2}'`
  2370. X    if [ $axess -ge $access -a $access -ne 3 ] ; then
  2371. X      echo "Sorry, access level of said user is higher or equal to yours."
  2372. X      continue
  2373. X    fi
  2374. X    if [ "$named" = "" ] ; then
  2375. X      echo "Record was deleted."
  2376. X      continue
  2377. X    fi
  2378. X    echo "Delete $named? \c"
  2379. X    read yn
  2380. X    if [ $yn != Y -a $yn != y ] ; then
  2381. X      continue
  2382. X    fi
  2383. X    rm -r $dir/mail/$delete
  2384. X    rm $dir/new/$delete 2> /dev/null
  2385. X    file=/tmp/sbbs.rmu.$$
  2386. X    $dir/programs/lock /tmp/sbbs.rmu.lock
  2387. X    grep -v "^$delete " $dir/admin/profile/logins > $file 
  2388. X    cat $file > $dir/admin/profile/logins
  2389. X    rm $file
  2390. X    rm /tmp/sbbs.rmu.lock
  2391. X    $dir/programs/lock /tmp/sbbs.rmr.lock ; uslimit=`cat $dir/admin/profile/members|wc -l`
  2392. X    file=/tmp/sbbs.rmr.$$
  2393. X    grep -v "^$delete:" $dir/admin/profile/members > $file   
  2394. X    cat $file > $dir/admin/profile/members
  2395. X    if [ $delete -ne $uslimit ] ; then
  2396. X       echo "$delete:0"  >> $dir/admin/profile/members
  2397. X    fi
  2398. X    rm $file
  2399. X    rm /tmp/sbbs.rmr.lock
  2400. X    th=`grep "^$delete:" $dir/misc/newnews`
  2401. X    if [ ! -z "$th" ] ; then
  2402. X    ed - $dir/misc/newnews << EOS
  2403. X    /^$delete:/d
  2404. X    w
  2405. XEOS
  2406. X    fi
  2407. X    echo "User deleted."
  2408. X  fi
  2409. X
  2410. X  if [ $cmd = v ] ; then
  2411. X     cat $dir/admin/profile/cmdlog
  2412. X     continue
  2413. X  fi
  2414. X
  2415. X  if [ $cmd = d ] ; then
  2416. X     echo "Delete? <N>: \c"
  2417. X     read d
  2418. X     d="`echo $d | cut -c1`"
  2419. X     if [ "$d" = y -o "$d" = Y ] ; then
  2420. X        echo "\c" > $dir/admin/profile/cmdlog
  2421. X        continue
  2422. X     fi
  2423. X     echo "Aborted."
  2424. X  fi
  2425. Xdone
  2426. ________This_Is_The_END________
  2427. echo 'x - z'
  2428. sed 's/^X//' <<'________This_Is_The_END________' >>z
  2429. X#! /bin/sh
  2430. X# Administrate a message base;
  2431. X# 
  2432. X
  2433. Xm=`grep "^mbm$basen=" $dir/misc/config | awk -F= '{print $2}'`
  2434. X
  2435. Xm=${m:-n}
  2436. X
  2437. Xif [ $access -lt 2 -a $m = n ] ; then
  2438. X   echo "Access too low / not a MBM."
  2439. X   exit
  2440. Xfi
  2441. X
  2442. Xecho "\n\n" ; cmd=I
  2443. X
  2444. Xwhile : ; do
  2445. X
  2446. X      if [ -z "$cmd" ] ; then
  2447. X         echo "MBM) \c"
  2448. X         read cmd
  2449. X         cmd="`echo \"$cmd\"|tr \"[a-z]\" \"[A-Z]\"`"
  2450. X      fi
  2451. X
  2452. X      if [ "$cmd" = "?" ] ; then
  2453. X         cat << 'EOMenu'
  2454. X
  2455. X    {I}nformation
  2456. X    {C}hange status of access / Modify
  2457. X       active list.
  2458. X    {B}ase manager change (Change MBM)
  2459. X    {E}xit
  2460. XEOMenu
  2461. X         cmd=
  2462. X         continue
  2463. X      fi
  2464. X
  2465. X      if [ "$cmd" = E ] ; then
  2466. X         exit
  2467. X      fi
  2468. X
  2469. X      if [ "$cmd" = I ] ; then
  2470. X         echo "Message base: `grep \"^$basen:\" $dir/misc/bbsrc|awk -F: '{print $2}'`"
  2471. X         axs="`grep \"^b$basen=\" $dir/misc/config`"
  2472. X         axs="${axs:-NONE}"
  2473. X         if [ "$axs" != "NONE" ];then
  2474. X            axs="`echo \"$axs\" | awk -F= '{print $2}'`"
  2475. X            axs="`echo \"$axs\" | awk -F, '{print $1}'`"
  2476. X         fi
  2477. X         echo "Protection: $axs"
  2478. X         echo "Base #: $basen"
  2479. X         echo "MBM: #`grep \"^mbm$basen=\" $dir/misc/config | awk -F= '{print $2}'"
  2480. X         msg=`ls $dir/bbs/$basen | wc -l `
  2481. X         msg=`echo $msg`
  2482. X         echo "Messages: $msg"
  2483. X         cmd=
  2484. X      fi
  2485. X
  2486. X      if [ "$cmd" = C ] ; then
  2487. X         echo "Wait...\c"
  2488. X         check="`grep \"^b$basen=\" $dir/misc/config`"
  2489. X         if [ ! -z "$check" ] ; then
  2490. X            ed - $dir/misc/config  << EOF
  2491. X/^$check\$/d
  2492. Xw
  2493. XEOF
  2494. X         fi
  2495. X         echo "\b\b\b\b\b\b\bDone..."
  2496. X         echo "\n\nAccess=[R]estricted list [A]ccess\n[N]one <N>: \c"
  2497. X         read op
  2498. X         op="`echo \"$op\"|tr \"[a-z]\" \"[A-Z]\"|cut -c1`"
  2499. X         if [ "$op" = A ] ; then
  2500. X            echo "Enter access levels allowed seperated\nby commas."
  2501. X            read ar
  2502. X            ar="`echo \"$ar\" | tr -d \" \" `"
  2503. X            echo "b$basen=access,$ar," >> $dir/misc/config
  2504. X            cmd=
  2505. X            continue
  2506. X         fi
  2507. X         if [ "$op" = R ] ; then
  2508. X            echo "Enter users, seperated by commas. "
  2509. X            read users
  2510. X            users="`echo \"$users\" | tr -d \" \" `"
  2511. X            echo "b$basen=restrict,$users," >> $dir/misc/config
  2512. X            cmd=
  2513. X            continue
  2514. X         fi
  2515. X         cmd=
  2516. X         continue
  2517. X      fi
  2518. X
  2519. X      if [ "$cmd" = B ] ; then
  2520. X         echo "Current MBM:\c"
  2521. X         a="`grep \"^mbm$basen=\" $dir/misc/config | awk -F= '{print $2}'`"
  2522. X         echo "${a:-(none)}"
  2523. X         echo "Enter new mbm: \c"
  2524. X         read nmbm
  2525. X         if [ -z "$a" ] ; then
  2526. X            echo "mbm$basen=$nmbm" >> $dir/misc/config
  2527. X         else
  2528. X            ed - $dir/misc/config << EOL
  2529. X/^mbm$basen=$a\$/c
  2530. Xmbm$basen=$nmbm
  2531. X.
  2532. Xw
  2533. XEOL
  2534. X         fi
  2535. X      fi
  2536. X      cmd=
  2537. Xdone
  2538. ________This_Is_The_END________
  2539. exit
  2540.  
  2541.