home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / misc / volume35 / mbox / part01 next >
Text File  |  1993-02-05  |  59KB  |  2,081 lines

  1. Newsgroups: comp.sources.misc
  2. From: Volker.Schuermann@unnet.w.open.de (Volker Schuermann)
  3. Subject: v35i036:  mbox - ix/Mbox, A BBS for UNIX and MINIX v1.6 PL10j7, Part01/15
  4. Message-ID: <csm-v35i036=mbox.125415@sparky.IMD.Sterling.COM>
  5. X-Md4-Signature: 877ce1f148682d47363035ad52d24b33
  6. Date: Fri, 5 Feb 1993 18:54:41 GMT
  7. Approved: kent@sparky.imd.sterling.com
  8.  
  9. Submitted-by: Volker.Schuermann@unnet.w.open.de (Volker Schuermann)
  10. Posting-number: Volume 35, Issue 36
  11. Archive-name: mbox/part01
  12. Environment: MINIX, ISC, ESIX, SVR3
  13. Supersedes: mbox: Volume 31, Issue 16-27
  14.  
  15. Announcement for the BBS-package ix/MBox 1.6 PL10j7                25.01.1993
  16.  
  17. The package includes a BBS for UNIX. The following derivations and compilers
  18. have been tested:
  19.  
  20. - MINIX 386 (You have to have the 386 version!) with BCC
  21.  
  22. - MINIX 386 with GCC 1.37 (with or w/o ESTDIO-patches)
  23.  
  24. - ESIX SVR3 with CC (MSC) or GCC
  25.  
  26. - ISC 2.21 with "Shared Libs"
  27.  
  28. - DELL UNIX 2.1 SVR4 with GCC 2.1
  29.  
  30. - LINUX 0.99pl2 with GCC 2.3.3
  31.  
  32. If you don't have one of those systems or anything that's compatible to
  33. any of them, you may stop reading now!
  34.  
  35. NOTE: The 64+64 limitation of Coherent and plain MINIX makes it impossible
  36.       to run ix/MBox BBS! The BBS itself needs more than 170kB of memory!
  37.  
  38.  
  39. For all who are still reading, some other requirements. The ix/MBox uses
  40. some UNIX services to stay compatible to the UNIX world and to make updates
  41. more easy. You need:
  42.  
  43. - a mailer like SMAIL (RMAIL) or UMAIL
  44.  
  45. - a news-package B/C-NEWS (INEWS) or WNEWS
  46.  
  47. - a uucp-system like HDB, Taylor or MNXUUCP or UUCP1.2
  48.  
  49. (The packages UMAIL and WNEWS are MINIX stuff by Fred v. Kempen, UUCP1.2
  50. is the (best) UUCP-package for MINIX by Will Rose)
  51.  
  52.  
  53.  
  54. You're STILL (!) reading? Ok, now the features of the BBS. If you're missing
  55. a feature that is important for you, just talk to me. Maybe I've forgotten
  56. to mention it, or I'm able to offer it with the next patchlevel!
  57.  
  58. The BBS ...
  59.  
  60. ... uses NEWS to handle all boards/articles. You may use the BBS or your
  61.     prevered newsreader to maintain the articles.
  62.  
  63. ... uses an internal mailer for mails between BBS-users.
  64.  
  65. ... uses (R/S)MAIL to receive/deliver mails from BBS-users to system-users
  66.     of the same or foreigen sites and vice versa.
  67.  
  68. ... uses a variable command set. If you don't like the presetted commands,
  69.     just change the config-file to have your own commands set.
  70.  
  71. ... commands are all fitted out with a user-level and a prototype-flag.
  72.     You may have several commands with the same function, but only the
  73.     commands with the prototype-flag set will be shown in the command-
  74.     survey.
  75.  
  76. ... has "user defined commands". If you like to offer an external newsreader
  77.     or mailer to your users, you only have to state that in a config-file.
  78.  
  79. ... is able to communicate in various languages. A german and an english
  80.     language-file are delivered with this package. It takes about two or
  81.     three hours to build language- and help-files for other countries.
  82.  
  83. ... offers PD-areas like all other boards. The trick is, that the articles
  84.     in the PD-boards are including a pointer to the real PD-package. You
  85.     are able to maintain that areas like all other boards. You don't have to
  86.     copy your PD-directories!
  87.  
  88. ... uses SX/SZ/SB and RX/RZ/RB as filetransfer protocols. Also ASCII up-
  89.     and download are available for text and PD transfer.
  90.  
  91. ... has it's own line-editor (B)LED. Users with higher level may use
  92.     fullscreen-editors, of course. You only have to put all offered editors
  93.     in a config-file.
  94.  
  95. ... even has it's on fullscreen (MIME) RTF-Editor. This one also handles
  96.     8bit texts (like texts including 'umlauts' ;-)
  97.  
  98. ... NEWS&MAIL have a total 8bit-transparency. ISO 8859-1 and IBM-Keymaps are
  99.     no longer a problem.
  100.  
  101. ... offers games to the users. Again, there's a config-file, which
  102.     includes the list of your online-games (rogue/nethack etc.).
  103.  
  104. ... may call a CHAT-program. If you don't have one, please tell me. I've
  105.     a PD-mutliport-chat program, too. Otherwise you can use TALK or
  106.     phone as a two-person chat.
  107.  
  108. ... is able to read Bellcore RTF (Richtext Format) and Qouted-Printable.
  109.  
  110. ... creates MIME-Headers. This, and the RTF-feature are the first steps to
  111.     multimedia-mail.
  112.  
  113. ... allows to change the headerfield of news-articles and mails. (Depending
  114.     on userlevel, of course!)
  115.  
  116. ... supports the (critical) header field "return-receipt-to:", to get an
  117.     acknowledge for you sent mails and to confirm mails sent to mbox-users.
  118.  
  119. ... allows to reedit articles, if you are the autor. If you are the sysop,
  120.     you may reedit everything ;-)
  121.  
  122. ... is able to generate statistics on calls, downloads, news-articles.
  123.  
  124. ... builds hitlists on calls per user, downloads per file, etc.
  125.  
  126. ... contains a users database with online-maintenance-facility.
  127.  
  128. ... allows users to setup the BBS to hit their preferences. They may
  129.     choose:
  130.  
  131.     - TERMINAL      ANSI X3.64, VT100, VT52, Dump (have a look at TERMCAP)
  132.  
  133.     - EDITOR        VI, EMACS, PED, MINED, LED, WENDY (or whatever you offer)
  134.  
  135.     - PROMPT        BOARD, TIME, RATES (with or w/o BELL)
  136.  
  137.     - OUTPUT        TYPE, MORE, MORE with marks, direction, lines, etc. ...
  138.  
  139.     - INTRO         INFOTEXT, STATE, both
  140.  
  141.     - SCANNER       DATE&TIME, DATE, change scanner date
  142.  
  143.  
  144. ... supports the following commands by default:
  145.  
  146.     +, -, ACCOUNT, AREA, BOARD, CHAT, DIR, DATE, DELETE, DOWNLOAD, DIRECTION,
  147.     DISUSSION, EDIT, FINGER, FORWARD, GAMES, GOODBYE, HELP, MAIL, MACRO,
  148.     MESSAGE, MINIX, PORTINFO, PROTOCOL, PM, READ, SETUP, SYSINFO, SIGNATURES,
  149.     STATE, STATISTICS, SEARCH, TIME, USERS, UPLOAD, VERSION, WRITE
  150.  
  151.     If you count the them and their various flags/options, you'll get a list
  152.     of 102 commands.
  153.  
  154. - Volker Schuermann                               UUCP: volkers@unnet.w.open.de
  155.   The Underground Network, Germany                                [Carpe diem!]
  156. --------
  157. #! /bin/sh
  158. # This is a shell archive.  Remove anything before this line, then feed it
  159. # into a shell via "sh file" or similar.  To overwrite existing files,
  160. # type "sh file -c".
  161. # Contents:  README README.addrpat README.wendy etc src src/intro.c
  162. #   wendy
  163. # Wrapped by kent@sparky on Fri Feb  5 12:18:01 1993
  164. PATH=/bin:/usr/bin:/usr/ucb:/usr/local/bin:/usr/lbin ; export PATH
  165. echo If this archive is complete, you will see the following message:
  166. echo '          "shar: End of archive 1 (of 15)."'
  167. if test -f 'README' -a "${1}" != "-c" ; then 
  168.   echo shar: Will not clobber existing file \"'README'\"
  169. else
  170.   echo shar: Extracting \"'README'\" \(33036 characters\)
  171.   sed "s/^X//" >'README' <<'END_OF_FILE'
  172. X
  173. X
  174. X
  175. X
  176. X
  177. X
  178. X
  179. X
  180. X
  181. X
  182. X
  183. X                     ix/MBox  R E A D M E
  184. X              Bulletin Board System for UNIX(-Derivations)
  185. X
  186. X                       Volker Schuermann
  187. X                  Wuppertal, FRG, 16.01.1993
  188. X
  189. X
  190. X
  191. X
  192. X
  193. X
  194. X
  195. X
  196. X
  197. X
  198. X                          TABLE OF CONTENTS
  199. X
  200. X
  201. X    PREFACE ....................................................... IV
  202. X
  203. X    1.  FIRST STEPS ...............................................  V
  204. X
  205. X    2.  SHELL SCRIPTS
  206. X
  207. X    2.1.  Appending new Users to the 'Aliases'-File ...........  1
  208. X    2.2.  Sending Articles to the NEWS-System .................  2
  209. X    2.3.  Sending Mail ........................................  3
  210. X    2.4.  Aliasing Recepients .................................  4
  211. X    2.5.  Handling PD (Public Domain) Stuff ...................  5
  212. X
  213. X    3.  CONFIGUREABLE FILES
  214. X
  215. X    3.1.  The List of Editors .................................  6
  216. X    3.2.  The offered Games ...................................  7
  217. X    3.3.  The Commands ........................................  8
  218. X    3.4.  User defined Commands ...............................  9
  219. X        3.5.  List of Packers (Download) .......................... 10
  220. X        3.5.  The Helpfile (long) ................................. 11
  221. X    3.6.  The Helpfile (short) ................................ 12
  222. X
  223. X    4.  ACCOUNTING
  224. X
  225. X    4.1.  The Users DATABASE .................................. 13
  226. X
  227. X    5.  DEFINITIONS IN SOURCE CODE
  228. X
  229. X    5.1.  The Headerfile ...................................... 14
  230. X    5.2.  The Makefile ........................................ 15
  231. X
  232. X    6.  SUPPORTING TOOLS
  233. X
  234. X    6.1.  The NEWS SCANNER (MB-DAEMON) ........................ 16
  235. X    6.2   The MAILING AGENT (XMD) ............................. 17
  236. X
  237. X
  238. X                            APPENDIX
  239. X
  240. X    A.  DICTIONARY for german Error Codes ......................... 18
  241. X    B.  DIRECTORIES with Permissions and Owners ................... 19
  242. X    C.  QUICK REFERENCE put in order by Files ..................... 20
  243. X
  244. X
  245. XJanuary 16, 1993                - III -                               ix/MBox
  246. X
  247. X                            PREFACE
  248. X
  249. X    This BBS-Package is the first international release of the ix/MBox. The
  250. Xgerman version has been tested and modified for month. Several problems have
  251. Xoccured while using other OSs (than MINIX), but they have been fixed with
  252. Xthe help of some guys out there on the net and on my BBS. Their names and
  253. Xtheir 'heroic deeds' are documented (try using 'version #') to show who was
  254. Xinvolved in the BBS develoment.
  255. X
  256. X    Also special thanks to Fred v. Kempen and Will Rose. They made UUCP and
  257. XNEWS available on MINIX. And don't forget Burce D. Evans. Without his 386er
  258. Xpatches, programs like this BBS would never have been possible.
  259. X
  260. X    Though this package is not a Beta-Release, some difficulties will appear
  261. Xwhile your're installing and setting up the BBS. To render the exchange of
  262. XBug-Reports, FAQs, hints and fixes two services are offered:
  263. X
  264. XE-MAIL:       Volker.Schuermann@unnet.w.open.de
  265. X
  266. XMAILING-LIST: mbox@unnet.w.open.de (Both: SUBSCRIBING & BROADCASTING)
  267. X
  268. X    Feel free to make use of both offers everytime you aren't able to get rid
  269. Xof problem, or if you're having questions, or if you found/fixed a bug, or if
  270. Xyou created a better language-file, or whatever ...
  271. X
  272. XRegards, Volker
  273. X
  274. X
  275. X
  276. XDecember 27, 1991               - IV -                                ix/MBox
  277. X
  278. X
  279. X
  280. X
  281. X
  282. X
  283. X
  284. X
  285. X
  286. X
  287. X1.  FIRST STEPS
  288. X
  289. X    You managed to unpack the BBS-package without any help - congratulations!
  290. XIt's time now to correct your first failure :-) This file (README) has to be
  291. Xin the [/mbox] directory. This directory will be the HOME of your BBS. If you
  292. Xdon't like '/mbox' to be the base for all following work, you have to create
  293. Xa directory to you favor and unpack the BBS-package again in this new HOME.
  294. X
  295. X    After unpacking the BBS, the HOME should look like the sample in the
  296. Xdirectory [/mbox] (see APPENDIX B.). In the following, you are confronted
  297. Xwith some files that are configurable to make the BBS running on your special
  298. Xenvironment.
  299. X
  300. X
  301. X
  302. XDecember 27, 1991                - V -                                ix/MBox
  303. X
  304. X
  305. X
  306. X
  307. X
  308. X
  309. X
  310. X
  311. X
  312. X2.  SHELL SCRIPTS
  313. X
  314. X2.1.  Appending new Users to the 'Aliases'-File (SMAIL only!)
  315. X
  316. X    This script is called by ix/MBox to append a line for every new BBS-user
  317. Xto the 'aliases'-file of SMAIL.
  318. X
  319. X    The name of the new user is send as parameter ($1). If a mail arrives for
  320. Xthis user, SMAIL uses this entry to deliver the mail.
  321. X
  322. XFile /mbox/etc/alias.sh
  323. X=======================
  324. Xecho $1 "               " \"\|/usr/bin/xmd $1 -\" >> /usr/lib/smail/aliases
  325. X
  326. X# $1 includes the name of the new BBS-User (Format: "Prename.Name")
  327. X
  328. X    You mustn't change the "/usr/bin/xmd $1 -" part of this line. All other
  329. Xitem could be changed.
  330. X
  331. XNOTE: If you're using UMAIL, you can forget about using this file - it would
  332. Xbe best to comment out everything!
  333. X
  334. X
  335. X
  336. XDecember 27, 1991               - 1 -                                 ix/MBox
  337. X
  338. X
  339. X
  340. X
  341. X
  342. X
  343. X
  344. X
  345. X
  346. X2.2.  Sending Articles to the NEWS-System
  347. X
  348. X    To communicate with any kind of NEWS-System, this file makes the necessary
  349. Xcalls. As described below, INEWS gets the name of (i.e. path to) a file,
  350. Xwhere ix/MBox stores the user-written new article.
  351. X
  352. XFile /mbox/etc/inews.sh
  353. X=======================
  354. X/usr/lib/news/inews -h < $2
  355. X
  356. X# $1 is the newsgroup which should receive the article
  357. X# $2 includes the file, where the ix/MBox saves the article
  358. X
  359. X
  360. X
  361. XDecember 27, 1991               - 2 -                                 ix/MBox
  362. X
  363. X
  364. X
  365. X
  366. X
  367. X
  368. X
  369. X
  370. X
  371. X2.3.  Sending Mail
  372. X
  373. X    Since there are some very powerful/intelligent mailing systems available
  374. Xunder UNIX/MINIX, ix/MBox doesn't offer it's own mailer (for external mails).
  375. X
  376. X    Your are able to use your most favorite mailer without making any changes
  377. Xto your configuration. (RMAIL should be a link to UMAIL, SMAIL etc.)
  378. X
  379. XFile /mbox/etc/rmail.sh
  380. X=======================
  381. Xrmail -d -i $1 $2
  382. X
  383. X# $1 name/path to the user-written mail
  384. X# $2 receiver of the mail (full address)
  385. X
  386. X
  387. X
  388. XDecember 27, 1991               - 3 -                                 ix/MBox
  389. X
  390. X
  391. X
  392. X
  393. X
  394. X2.4.  Aliasing receipients
  395. X
  396. X    You may wish to redirect some mailing to other receipients as stated
  397. Xout in the mail headers. Use the following file for this purpose.
  398. X
  399. XFile /mbox/src/xmd.alias
  400. X========================
  401. XTo: Multiple receipients of <TEX-D-L@dearn.bitnet>
  402. XTo: J.Random.Looser@mydomain.myfeed.whatever
  403. X
  404. XTo: mydomain!hacker
  405. XTo: sysop@mydomain.myfeed.whatever
  406. X
  407. X    If the first "To:"-line is found in a mail header, it will be replaced
  408. Xbe the second one. Note that here has to be a blank line between each
  409. Xcouple of "To:"-lines!
  410. X
  411. X
  412. X
  413. XJanuary 16, 1993                - 4 -                                 ix/MBox
  414. X
  415. X
  416. X
  417. X
  418. X
  419. X
  420. X
  421. X
  422. X
  423. X
  424. X
  425. X
  426. X
  427. X
  428. X
  429. X
  430. X
  431. X
  432. X
  433. X
  434. X
  435. X2.5.  Handling PD (Public Domain) Stuff
  436. X
  437. X    The BBS doesn't know anything about where you hide your PD (Public Domain
  438. XSoftware). So if a user wants to send such a program to the BBS, the file has
  439. Xto be stored in the NEWS-PD-area (the place where articles are collected,
  440. Xthat contain PD-files). After such an upload, you have two new files in that
  441. Xarea (let's call it [/usr/spool/news/local/pd/minix]):
  442. X
  443. X1. An article, containing the identifier BINFILE and the path to:
  444. X2. A PD.nnnnnnn file, which contains the PD-file itself
  445. X
  446. XIn our example below, there are the following files:
  447. X
  448. X1. 2157 (the article)
  449. X2. PD.693419573 (the PD-file)
  450. X
  451. X    If we would start [sh /mbox/etc/pd.script] now , the file (2.) would be
  452. Xcopied to our PD-area ([/public/pd]), and the article (1.) would be changed
  453. Xto get the new path to (2.).
  454. X
  455. X    That sounds much more compilcate as it is. The comment '#' tells you where
  456. Xthe PD belongs to and who sent it to you.
  457. X
  458. XFile /mbox/etc/pd.script
  459. X========================
  460. Xmv /usr/spool/news/local/pd/minix/PD.693419573 /public/pd/tel.tar.Z
  461. Xmined /usr/spool/news/local/pd/minix/2157
  462. X#local.pd.minix   Andreas Zell
  463. X
  464. X
  465. X
  466. XDecember 27, 1991               - 5 -                                 ix/MBox
  467. X
  468. X
  469. X
  470. X
  471. X
  472. X
  473. X
  474. X3.  CONFIGUREABLE FILES
  475. X
  476. X3.1.  The List of Editors
  477. X
  478. X    There is a LineEditor delivered with this BBS-Package, but on your system
  479. Xthere are lots of editors, I suppose. Therefore you may offer some of them
  480. Xto your users.
  481. X
  482. XFile /mbox/etc/mbox.editors
  483. X===========================
  484. XLed     /usr/bin/bled
  485. XMined   /usr/bin/mined
  486. XVi      /usr/bin/vi
  487. XME      /usr/bin/me
  488. X
  489. XNOTE: Between the comments-box (/* comments */) and the table itself, there
  490. Xhas to be ONE empty line.
  491. X
  492. X
  493. XDecember 27, 1991               - 6 -                                 ix/MBox
  494. X
  495. X
  496. X
  497. X
  498. X
  499. X
  500. X
  501. X
  502. X3.2.  The offered Games
  503. X
  504. X    Users are kids, anyway ... so allow them playing games (Don't deny ...
  505. XI know, you're still playing rogue/empire, too!).
  506. X
  507. XFile /mbox/etc/mbox.games
  508. X=========================
  509. XAnimals /usr/bin/animals
  510. XDiepbom /usr/games/diepbom
  511. XEmpire  /usr/games/empire
  512. XKiller  /usr/games/killer
  513. XSokoban /usr/games/sokoban
  514. XRogue   /usr/bin/rogue
  515. XRobots  /usr/games/robots
  516. X
  517. XNOTE: Between the comments-box (/* comments */) and the table itself, there
  518. Xhas to be ONE empty line.
  519. X
  520. X
  521. XDecember 27, 1991               - 7 -                                 ix/MBox
  522. X
  523. X
  524. X
  525. X
  526. X
  527. X
  528. X
  529. X3.3.  The Commands
  530. X
  531. X    This one is the MOST IMPORTANT file of all. It contains the whole command
  532. Xstructure of the BBS.
  533. X
  534. XThe rows containing the following informations:
  535. X
  536. XID (Commands No.)       This is the only connection between this table and
  537. X                    the BBS (see [loop.c]).
  538. X
  539. XIntern/Extern (Level)   That means the minimum level to be allowed to use
  540. X                    the command.
  541. X
  542. X                    The difference between intern and extern is used
  543. X                    to decide whether a user can write external mails
  544. X                    too, or internal mails only.
  545. X
  546. XPrototyp(e)             If you set '1' in this row, the command is shown
  547. X                    in the "command survey". Otherwise the command
  548. X                    is known, but not displayed.
  549. X
  550. XBefehl (Command)        The command itself.
  551. X
  552. X    As you see in the table, some IDs are mentioned more than once. That's
  553. Xallowed! If there is a couple of commands doing the same action, you may
  554. Xcollect them:
  555. X
  556. X180     0       0       1       Goodbye
  557. X180     0       0       0       Quit
  558. X180     0       0       0       Bye
  559. X180     0       0       0       End
  560. X
  561. X   The prototype for the LOGOUT-Command is called 'Goodbye' - only this one
  562. Xwill be displayed, if a user types '?' (and only this one is described in the
  563. XHELP-file). But 'Quit', 'Bye' and 'End' may also be used to leave the BBS.
  564. X
  565. XFile /mbox/etc/help.befehle
  566. X===========================
  567. XID    Intern  Extern  Prototyp  Befehl
  568. X==============================================
  569. X110     0       0       1       +               # next board
  570. X120     0       0       1       -               # previous board
  571. X260     0       0       1       Account         # Registration
  572. X125     9       9       0       Admin           # Administration
  573. X150     0       0       1       Board           # Board
  574. X170     0       0       1       Chat            # Chat (See 'mbox.h')
  575. X200     0       0       1       Dir             # Contents
  576. X370     0       0       1       Date            # Date
  577. X220     1       1       1       Delete          # Delete
  578. X150     0       0       0       Cd
  579. X400     0       0       1       Direction       # Direction (OLD <> NEW)
  580. X340     1       1       1       Forward         # Forward a MSG
  581. X390     0       0       1       Games           # Games
  582. X180     0       0       1       Goodbye         # Logout
  583. X180     0       0       0       Quit
  584. X180     0       0       0       Bye
  585. X180     0       0       0       End
  586. X190     0       0       1       Help            # Help
  587. X160     0       2       1       Mail            # Write a Mail
  588. X330     0       0       1       Macro           # Macro Definition
  589. X140     0       0       1       Message         # 'Hello' MSG
  590. X240     6       6       1       Minix           # OS-Shell
  591. X240     6       6       0       Execute
  592. X270     0       0       1       Portinfo        # A Kind of 'who'
  593. X130     0       0       1       Protocol        # Logfile
  594. X250     0       0       1       PM              # PM
  595. X210     0       0       1       Read            # Read
  596. X280     0       0       1       Setup           # Configurations
  597. X280     0       0       0       Password
  598. X280     0       0       0       Ansi
  599. X280     0       0       0       Bell
  600. X280     0       0       0       Address
  601. X310     1       0       1       Signature       # Signature
  602. X290     0       0       1       State           # Configurations List
  603. X410     0       0       1       Statistics      # Statistics
  604. X380     0       0       1       Time            # Time
  605. X300     0       0       1       Users           # List of Users
  606. X320     0       0       1       Version         # Version
  607. X230     0       5       1       Write           # Write a Mail/Article
  608. X270     0       0       0       Who
  609. X195     0       1       0       ~PD             # Up-/Download LEVEL-Dummy
  610. X215     0       0       0       Level           # Level
  611. X275     9       9       0       Relogin         # Login again ...
  612. X350     0       0       0       Sleep           # Macro Special
  613. X360     0       0       0       Keypressed      # Macro Special
  614. X230     0       5       0       Upload
  615. X210     0       0       0       Download
  616. X998     2       2       0       ~MAIL_DUMMY     # LEVEL-Dummy
  617. X
  618. X    The LEVEL-Dummys are useful to set the required LEVEL for UP-/DOWNLOADING
  619. X(~PD) or mailing to external hosts (~MAIL_DUMMY).
  620. X
  621. X    The comments '#' are NOT allowed in the [/mbox/etc/help.befehle] file,
  622. Xthough they are used in this documentation.
  623. X
  624. XNOTE: Between the comments-box (/* comments */) and the table itself, there
  625. Xhas to be ONE empty line.
  626. X
  627. X
  628. X
  629. XDecember 27, 1991               - 8 -                                 ix/MBox
  630. X
  631. X
  632. X
  633. X
  634. X
  635. X
  636. X
  637. X
  638. X
  639. X
  640. X
  641. X
  642. X
  643. X3.4.  User defined Commands
  644. X
  645. X    Use this file to offer external commands to the BBS users. They want
  646. Xnotice any difference between BBS commands and your external ones. The
  647. Xnumber between the name (elm) and the path (/usr/bin/elm) gives the mini-
  648. Xmum userlevel to be allowed to execute the command.
  649. X
  650. XFile /mbox/etc/mbox.udc
  651. X=======================
  652. Xelm     1       /usr/bin/elm
  653. Xlmail   3       /usr/local/bin/lmail
  654. Xps      5       /usr/bin/ps -lax
  655. X
  656. XBUT: Be careful! You have to sort the entries in alphbetic order!
  657. X
  658. XNOTE: Between the comments-box (/* comments */) and the table itself, there
  659. Xhas to be ONE empty line.
  660. X
  661. X
  662. X
  663. XJune 06, 1992                   - 9 -                                 ix/MBox
  664. X
  665. X
  666. X
  667. X
  668. X
  669. X
  670. X
  671. X
  672. X
  673. X
  674. X
  675. X
  676. X
  677. X
  678. X
  679. X
  680. X3.5.  Packers/Archivers for downloading news-articles
  681. X
  682. X    The command download also works in normal (i.e. none pd-) groups. In
  683. Xthis normal groups, articles have to be archived and packed before trans-
  684. Xmitting them with X-, Y-, Z-Modem or a an ASCII text. The following list
  685. Xincludes this packers/archivers.
  686. X
  687. XFile /mbox/etc/mbox.packers
  688. X===========================
  689. XCompress      /usr/bin/compress    ?      +    .Z
  690. XLharc         /usr/bin/lharc       a      -    .lzh
  691. XZoo           /usr/bin/zoo         -add   -    .zoo
  692. X
  693. X    The first entry specifies the name of the packer - this name is shown
  694. Xto the users. The second column includes the path to the binaries. The next
  695. Xitem includes a command which has to be add to order packing. A '?' means
  696. Xthat no such command is needed.
  697. X
  698. X    A '+' in the next column stands for using TAR before compressing. If
  699. Xthe mbox reads a '-' instead, TAR is not called.
  700. X
  701. X
  702. X
  703. XJanuary 16, 1993                - 10 -                                ix/MBox
  704. X
  705. X
  706. X
  707. X
  708. X
  709. X
  710. X
  711. X
  712. X
  713. X
  714. X
  715. X
  716. X
  717. X
  718. X
  719. X
  720. X
  721. X
  722. X
  723. X
  724. X3.6.  The Helpfile (long)
  725. X
  726. X    It's just a textfile, that contains informations on every prototyped
  727. Xcommand of [/mbox/etc/help.befehle].
  728. X
  729. XFile /mbox/etc/help.hilfe
  730. X=========================
  731. X#BOARD
  732. XCommand: "Board"
  733. X
  734. XThere is a board for every single subject/theme with it's own index. So you
  735. Xhadn't to search long for special information on any item. To move from one
  736. Xboard to another, you use the command 'board' with some options:
  737. X.
  738. X.
  739. X.
  740. X
  741. X
  742. XNOTE: The '#COMMAND' has to be set before any further text. This line is
  743. Xused to select which commands info follows.
  744. X
  745. X
  746. X
  747. XDecember 27, 1991               - 11 -                                ix/MBox
  748. X
  749. X
  750. X
  751. X
  752. X
  753. X
  754. X
  755. X
  756. X
  757. X
  758. X3.7.  The Helpfile (short)
  759. X
  760. X    A textfile, which is displayed complete to any user who types 'help'.
  761. X
  762. XFile /mbox/etc/help.shorthelp
  763. X=============================
  764. X?                          reachable commands are shown
  765. X? *                        all commands are shown
  766. Xcommand ?                  help on 'command'
  767. X
  768. XACCOUNT                    establish an account & a maildrop for a new user
  769. X
  770. XBOARD                      list boards with new articles
  771. X
  772. X
  773. XNOTE: If you've changed [/mbox/etc/help.befehle], you have to change this
  774. Xfile, too!
  775. X
  776. X
  777. X
  778. XDecember 27, 1991               - 12 -                                ix/MBox
  779. X
  780. X
  781. X
  782. X
  783. X
  784. X
  785. X
  786. X
  787. X
  788. X4.  ACCOUNTING
  789. X
  790. X4.1.  The Users DATABASE
  791. X
  792. X    NEVER try to edit this file. It's created automagically by the BBS and
  793. Xmaintained with the command 'admin'.
  794. X
  795. X    And how to install this database? That's simple. Just erase the files
  796. X[/mbox/etc/users.data] and [/mbox/etc/users.seq]. After doing that, you
  797. Xmay start the BBS, which will install a new database for you.
  798. X
  799. X    The first two entries in this database are generated from data in
  800. X[/mbox/src/mbox.h] ... if you (as "root") are not allowed to use the
  801. X'admin' command, you have to change the 'extern' and 'intern' entry of
  802. X"admin" in [/mbox/etc/help.befehle] to level 0.
  803. X
  804. XNOTE: Don't forget to set the 'admin' level back to 9 again, after you've
  805. Xset your own level to 10 (try 'admin' to see how)!
  806. X
  807. X
  808. XDecember 27, 1991               - 13 -                                ix/MBox
  809. X
  810. X
  811. X
  812. X
  813. X
  814. X
  815. X
  816. X
  817. X
  818. X5.  DEFINITIONS IN SOURCE CODE
  819. X
  820. X5.1.  The Headerfile
  821. X
  822. X    The following file HAS TO BE CHANGED before trying to compile the BBS. It
  823. Xcontains all stuff, that depends on you special environment.
  824. X
  825. X
  826. XFile /mbox/src/mbox.h
  827. X=====================
  828. X
  829. X-       Even your BBS needs a name:
  830. X
  831. X#define ORGANIZATION "THE UNDERGROUND NETWORK"
  832. X#define SYSTEM       "The Time Traveling Agency"
  833. X
  834. X
  835. X-       UUCP/Internet Identifications:
  836. X
  837. X#define UUCPSITE     "unnet"
  838. X#define UUCPID1      "unnet.w.open.de"
  839. X#define UUCPID2      "unnet.ruhr.sub.org"
  840. X#define UUCPBANG     "~!unido!horga!xenox!unnet!"
  841. X
  842. X
  843. X-       If your UUCP supports any kind of protocol/logfile:
  844. X
  845. X#define UUCPCOSTS    "/usr/spool/uucp/.costs"
  846. X
  847. X
  848. X-       Where does the BBS live (i.e. HOME):
  849. X
  850. X#define HOME         "/mbox"
  851. X
  852. X
  853. X-       Some directories:
  854. X
  855. X#define BIN          "/usr/bin"
  856. X#define TMP          "/tmp"
  857. X#define SPOOL        "/usr/spool"
  858. X#define NEWS         "/usr/spool/news"
  859. X#define MAILDROP     "/usr/spool/mail"
  860. X
  861. X
  862. X-       If you don't use SMAIL:
  863. X
  864. X#define ERRMBOX      "/usr/spool/mail/postmaster"
  865. X
  866. X
  867. X-       NEWS 'active' file:
  868. X
  869. X#define NGROUPS      "/usr/lib/news/active"
  870. X
  871. X
  872. X-       Define the device/file where to display log-informations:
  873. X    (if defined as 'REDIRECT', the device/file is used, that
  874. X    you've specified in the file CDIRECTFL !)
  875. X
  876. X#define CONSOLE      "REDIRECT"
  877. X#define CDIRECTFL    "/etc/mbox.out"
  878. X#define CPRN         '/tmp/errlog'
  879. X
  880. X
  881. X-       Who's the BOSS (don't use "root"):
  882. X
  883. X#define POSTMASTER   "volkers"
  884. X
  885. X
  886. X-       On which terminal POSTMASTER can use MBOX only:
  887. X
  888. X#define PMS_TTY      "/dev/tty4"
  889. X
  890. X
  891. X-       The fastest BPS-Rate of your Modem-Ports:
  892. X
  893. X#define MAX_BPS      2400
  894. X
  895. X
  896. X-       What's the Name of your Visitors:
  897. X
  898. X#define GUEST        "GAST"
  899. X
  900. X
  901. X-       This file is displayed after the BBS started:
  902. X
  903. X#define INTRO        "./etc/intro"
  904. X
  905. X
  906. X-       If this file exists, it's shown as BBS-'Jingle':
  907. X
  908. X#define LOGO         "./etc/logo"
  909. X
  910. X
  911. X-       The number of 'all time calls' to your BBS:
  912. X
  913. X#define SEQ          "./etc/mbox.seq"
  914. X
  915. X
  916. X-       The callers logfile:
  917. X
  918. X#define CALLS        "./etc/mbox.calls"
  919. X
  920. X
  921. X-       Your List of Editors:
  922. X
  923. X#define EDITORS      "./etc/mbox.editors"
  924. X
  925. X
  926. X-       The Games:
  927. X
  928. X#define GAMES       "'./etc/mbox.games"
  929. X
  930. X
  931. X-       If you like to offer a CHAT/WRITE/TALK:
  932. X
  933. X#define CHAT         "/usr/bin/chat"
  934. X
  935. X
  936. X-       A special BBS-OS-Shell:
  937. X
  938. X#define RSH          "./mbrsh"
  939. X
  940. X
  941. X-       Have a look at '/etc/passwd' to find the correct values:
  942. X
  943. X#define ROOT_UID      0
  944. X#define ROOT_GID      0
  945. X#define GUEST_GID     1  !!! Users and Guests have to have DIFFERENT GIDs !!!
  946. X
  947. X    It's very, very, very important to change '/etc/passwd' if 'guest'
  948. X    and 'users' had the same GID until now. The BBS uses the GID to
  949. X    fix if a User is 'guest' or a real 'user' ...
  950. X
  951. X
  952. X
  953. X-       For MINIX only (the number of the first Modem-Port):
  954. X
  955. X#define FIRST_EX_TTY 64
  956. X
  957. X
  958. X-       Where does your local mail hides the signatures:
  959. X
  960. X#define SIGNATURE    ".wmailsign"
  961. X
  962. X
  963. X-       Where is your TSET:
  964. X
  965. X#define TSET         "./etc/tset"
  966. X
  967. X
  968. X-       What's the prefix of your PD-boards ([local.pd.minix] etc.):
  969. X
  970. X#define PDNG         "local.pd"
  971. X
  972. X
  973. X-       Where do you want protocol the downloads:
  974. X
  975. X#define PDLOG        "./etc/pd.log"
  976. X
  977. X
  978. X-       Where do you like to have the upload script:
  979. X
  980. X#define PDSCRIPT     "./etc/pd.script"
  981. X
  982. X
  983. X-       Which groups should new users be allowed to read:
  984. X
  985. X#define NEWS_MINIMUM "junk dnet local sub xenox"
  986. X
  987. X
  988. X-       How many entries are allowed per board/group:
  989. X
  990. X#define MAX_PER_NG   2000
  991. X
  992. X    If use use a VERY high value, EXPIRE will never be started by
  993. X    MB-DAEMON ! (CNEWS don't like any handstarted EXPIREs)
  994. X
  995. X
  996. X-       How many days should be expired, if MAX_PRE_NG is reached:
  997. X
  998. X#define EXPIRED_DAYS 32
  999. X
  1000. X
  1001. X-       Which domains may be reached by 'normal' users if they send
  1002. X    external mails:
  1003. X
  1004. X#define NAT_DOMAIN1  ".de"
  1005. X#define NAT_DOMAIN2  ".sub.org"
  1006. X#define NAT_DOMAIN3  ".de"      NOTE: None of them must be empty!
  1007. X
  1008. X
  1009. X-       Where are the Up-/Download Protocols:
  1010. X
  1011. X#define SZ           "/usr/bin/sz"
  1012. X#define SX           "/usr/bin/sx"
  1013. X#define SB           "/usr/bin/sb"
  1014. X
  1015. X#define RZ           "/usr/bin/rz"
  1016. X#define RX           "/usr/bin/rx"
  1017. X#define RB           "/usr/bin/rb"
  1018. X
  1019. X
  1020. X-       What's the actual telephone rate (in Pfennig :-):
  1021. X
  1022. X#define TARIF        23
  1023. X
  1024. X
  1025. X-       How many seconds can you talk (three zones, each day/night):
  1026. X
  1027. X#define NZNT         360
  1028. X#define NZBT         720
  1029. X#define RZNT         60
  1030. X#define RZBT         120
  1031. X#define WZNT         21
  1032. X#define WZBT         42
  1033. X
  1034. X
  1035. X-       How many entries will be hold in callers protocol:
  1036. X
  1037. X#define PRO_ENTRIES  600
  1038. X
  1039. X
  1040. X   Yep, I know, there are some items missing. Don't play around with one of
  1041. Xthem! To get the definitions in [mbox.h] right is the most important and most
  1042. Xcompilcate work on your way to get the BBS up and running. So spend a little
  1043. Xtime on this job - it will be a big advantage to have no errors or misunder-
  1044. Xstandings in this file.
  1045. X
  1046. X
  1047. X
  1048. XJanuary 16, 1993                - 14 -                                ix/MBox
  1049. X
  1050. X
  1051. X
  1052. X
  1053. X
  1054. X
  1055. X
  1056. X
  1057. X
  1058. X5.2.  The Makefile
  1059. X
  1060. X    Type 'make' (keep finger crossed and pray) and see what you'll get ...
  1061. XNo, that's not the right way to get this packaged compiled!
  1062. X
  1063. X    The Makefile is fitted out with some special definitions for different
  1064. XUNIX-Versions and favors. Use the CFLAGS to modify the Makefile for your
  1065. Xenvironment.
  1066. X
  1067. XFile /mbox/src/Makefile
  1068. X=======================
  1069. X#CFLAGS:
  1070. X# -D_SYS7         UNIX System 7 (UNIX, COHERENT, ...)
  1071. X# -D_MBOX         EVER!!!
  1072. X# -D_MINIX        For MINIX only
  1073. X# -D_ISC          For Interactive UNIX
  1074. X# -D_SCO          For SCO UNIX
  1075. X# -D_ESTDIO       For Earl Chew's [estdio.h] (or GCC)
  1076. X# -D_CORELEFT     Check your memory
  1077. X# -D_DATESTAMP    Protocol time&date, too
  1078. X# -D_NOINDEX      Don't store INDEX-Files for every group/board
  1079. X# -D_BAUDRATE     If your modem is an HST with 'fixed baudrate'
  1080. X
  1081. X    If you are using SYSV, comment out everything that belongs to Sys7 and
  1082. Xvice versa, if you're using Sys7.
  1083. X
  1084. XThat's what you can 'make':
  1085. X
  1086. Xmake all       <-   Build all executables
  1087. Xmake world     <-   Create the directories and set the permissions
  1088. Xmake inst      <-   Build and install ALL !!
  1089. Xmake english   <-   Prepare for english version
  1090. Xmake german    <-   Prepare for german version
  1091. Xmake clean     <-   Delete the executables (links etc.)
  1092. Xmake mbox      <-   Build the BBS-executable 'mbox'
  1093. Xmake mb-daemon <-   Build the NEWS-SCANNER 'mb-daemon'
  1094. Xmake xmd       <-   Build the MAILING-AGENT 'xmd'
  1095. Xmake mbrsh     <-   Build the SHELL 'mbrsh'
  1096. Xmake bled      <-   Build the LINE-EDITOR 'bled'
  1097. X
  1098. X    If everything's ok, you only have to type 'make inst' to build and install
  1099. Xthe whole BBS and it's "world".
  1100. X
  1101. X    The MINIX-Version of ix/MBox needs much more memory as given by compiler.
  1102. XWith the command 'chmem +200000', the necessary amount is set up. Yes, that's
  1103. Xwasting memory in some cases. To minimize the amount, use the FLAG _CORELEFT
  1104. Xin format '-D_CORELEFT=20000'. Now you can test around with 'chmem +/-' until
  1105. Xyou reach a value, which allows to run the BBS without producing "cores".
  1106. X
  1107. X
  1108. X
  1109. XDecember 27, 1991               - 15 -                                ix/MBox
  1110. X
  1111. X
  1112. X
  1113. X
  1114. X
  1115. X
  1116. X
  1117. X
  1118. X6.  SUPPORTING TOOLS
  1119. X
  1120. X6.1.  The NEWS SCANNER (MB-DAEMON)
  1121. X
  1122. X    For every board/newsgroup in your BBS, you need an INDEX-File. As the
  1123. Xcontents of such an INDEX-File depends on which articles are collected in
  1124. Xthe corresponding newsgroup, a program is needed, that scans those articles
  1125. Xand derives the informations for the INDEX.
  1126. X
  1127. X    That's exactly what 'mb-daemon' does. It would be best, to append a
  1128. Xline to [/usr/lib/crontab] for calling 'mb-daemon' after each 'rnews' run.
  1129. X
  1130. XSYNOPSIS:
  1131. X
  1132. Xmb-daemon                rebuild all INDEX-Files (Fastmode)
  1133. Xmb-daemon all -x         rebuild all INDEX-Files (totally rebuilding)
  1134. Xmb-daemon newsgroup      rebuild INDEX-File(s) for 'newsgroup'
  1135. Xmb-daemon newsgroup -x   rebuild INDEX-File(s) for 'newsgroup' (total)
  1136. X
  1137. XEXAMPLES:
  1138. X
  1139. Xmb-daemon local.pd.minix
  1140. Xmb-daemon local.pd       (means: all newgroups at 'local.pd')
  1141. X
  1142. X
  1143. X
  1144. XDecember 27, 1991               - 16 -                                ix/MBox
  1145. X
  1146. X
  1147. X
  1148. X
  1149. X
  1150. X
  1151. X
  1152. X
  1153. X
  1154. X6.2   The MAILING AGENT (XMD)
  1155. X
  1156. X    The Usernames on this BBS are Realnames. If your name is "Jack Daniels",
  1157. Xyour UUCP/Internet-ID is "Jack.Daniels@host.domain". Since normal mailing
  1158. Xagents can't handle such IDs, the BBS needs it's own agent.
  1159. X
  1160. X    This one is called 'xmd'. It works in two different modes. The first one
  1161. Xscans the ERRMBOX [/usr/spool/mail/postmaster] and delivers all mails with
  1162. Xreceiver "Prename.Name" ("Jack.Daniels") to the BBS-maildrops. Spend a line
  1163. Xin [/usr/lib/crontab] for the execution of 'xmd' every hour.
  1164. X
  1165. X    The second mode is used if SMAIL is the systems mailer. Have a look at
  1166. Xthe description of 'alias.sh' (see 2.1.).
  1167. X
  1168. XSYNOPSIS:
  1169. X
  1170. Xxmd                     Scanns ERRMBOX and delivers mail to BBS-Users
  1171. Xxmd Prename.Name -      Delivers mail from STDIN (-) to Prename.Name on BBS
  1172. X
  1173. X
  1174. XEXAMPLE:
  1175. X
  1176. Xxmd Jack.Daniels -
  1177. X
  1178. X
  1179. X
  1180. XDecember 27, 1991               - 17 -                                ix/MBox
  1181. X
  1182. X
  1183. X
  1184. X
  1185. X
  1186. X
  1187. X
  1188. X                            APPENDIX
  1189. X
  1190. X
  1191. XA.  DICTIONARY for german Error Codes
  1192. X
  1193. X    The ix/MBox (BBS) was created in Germany. That's why all lowlevel comments
  1194. Xand error-codes are written in german.
  1195. X
  1196. X    If any of those error-codes appears on your screen, you're really in
  1197. Xtrouble, because they MUSTN'T !!! (But they will :-)
  1198. X
  1199. XGerman Error-Code                      Meaning
  1200. X-----------------------------------------------------------------------------
  1201. XDatei-Lesefehler                       BBS can't read the specified file
  1202. XDatei-Schreibfehler                    BBS can't write the specified file
  1203. XPositionierungsfehler                  Error in [users.data] (FATAL!)
  1204. XDatei-Erstellungsfehler                BBS can't create specified file
  1205. XDatei-Ergaenzungsfehler                BBS can't append to specified file
  1206. XDatei gesperrt                         File locked
  1207. XPRO_ENTRIES zu klein dimensioniert     Definition PRO_ENTRIES (mbox.h) to low
  1208. XDatei-Schreib/-Lesefehler              BBS can't write/read file
  1209. XZuviele Artikel                        Too much articles in board/group
  1210. XSpeicherplatz kleiner nnnn             Free Bytes lower than nnnn
  1211. XMAX_BEF ueberschritten !!              Too much commands in [help.befehle]
  1212. XMAX_MAK ueberschritten !!              Too much macros defined
  1213. X
  1214. X    If one of the "Datei-XXXX" errors occures, 'touch' the specified file and
  1215. Xcheck the permissions/owners (see APPENDIX B.) - in most cases, that will
  1216. Xhelp.
  1217. X
  1218. X
  1219. X
  1220. XDecember 27, 1991               - 18 -                                ix/MBox
  1221. X
  1222. X
  1223. X
  1224. X
  1225. X
  1226. X
  1227. X
  1228. X
  1229. X
  1230. XB.  DIRECTORIES with Permissions and Owners
  1231. X
  1232. XDirectory /mbox
  1233. X===============
  1234. Xdrwxrwx---  6 root     root          896 Dec 27 11:07 .
  1235. Xdrwxr-xr-x 14 bin      bin           576 Dec 27 11:00 ..
  1236. X-rw-rw-rw   1 root     root         1000 Dec 27 11:30 README
  1237. Xdrwxrwx---  2 root     root          576 Dec 27 10:42 etc
  1238. Xdrwxrwx---  2 root     root         1728 Dec 27 02:05 lib
  1239. X-rwxr-xr-x  1 root     root         3912 Dec 21 22:48 mbrsh
  1240. X-rw-r--r--  1 root     root         1562 Aug 10 13:40 rz.cdiff
  1241. Xdrwxrwx---  2 root     root         1536 Dec 27 11:05 src
  1242. Xdrwxrwx--- 19 root     root         1920 Dec 26 14:11 usr
  1243. X
  1244. X
  1245. XDirectory /mbox/etc
  1246. X===================
  1247. Xdrwxrwx---  2 root     root          321 Dec 27 11:07 .
  1248. Xdrwxrwx---  6 root     root          896 Dec 27 11:07 ..
  1249. X-rw-rw-rw-  1 root     root         3002 Dec 27 02:05 active
  1250. X-rw-rw-r--  1 root     root          829 Dec  8 16:41 alias.sh
  1251. X-rw-r-----  1 root     root         2693 Dec 25 12:48 help.befehle
  1252. X-rw-r--r--  1 root     root        16492 Dec 26 14:45 help.hilfe
  1253. X-rw-r--r--  1 root     root         3801 Dec 24 09:57 help.shorthelp
  1254. X-rw-r--r--  1 root     root          701 Dec  8 13:55 inews.sh
  1255. X-rw-rw----  1 root     root          245 Dec 25 13:17 intro
  1256. X-rw-r--r--  1 root     root          243 Dec  7 21:05 logo
  1257. X-rw-rw-rw-  1 root     root        16426 Dec 27 02:05 mbd.log
  1258. X-rw-rw----  1 root     root        24080 Dec 27 10:40 mbox.calls
  1259. X-rw-rw----  1 root     root          627 Dec  7 21:05 mbox.editors
  1260. X-rw-r--r--  1 root     root          734 Dec  7 21:05 mbox.games
  1261. X-rw-r--r--  1 root     root         1200 Dec 27 21:07 mbox.packers
  1262. X-rw-rw----  1 root     root            5 Dec 27 10:40 mbox.seq
  1263. X-rw-r--r--  1 root     root          111 Dec 27 10:41 mbox.udc
  1264. X-rw-rw----  1 root     root           79 Dec 27 10:42 mbox.who
  1265. X-rw-rw----  1 root     root        44474 Dec 27 00:55 pd.log
  1266. X-rw-rw----  1 root     root          143 Dec 22 16:33 pd.script
  1267. X-rw-rw-rw-  1 root     root        14634 Dec 16 21:30 reflector.log
  1268. X-rw-r--r--  1 root     root          727 Dec  8 13:53 rmail.sh
  1269. X-rwxrwx---  1 root     root           21 Dec  7 21:06 tset
  1270. X-rw-r--r--  1 root     root        73416 Dec 27 10:42 users.data
  1271. X-rw-r--r--  1 root     root            4 Dec 26 14:11 users.seq
  1272. X-rw-r--r--  1 root     root         1234 May 31 01:11 xmd.alias
  1273. X
  1274. X
  1275. XDirectory /mbox/lib
  1276. X===================
  1277. Xdrwxrwx---  2 root     root         1728 Dec 27 02:05 .
  1278. Xdrwxrwx---  6 root     root          896 Dec 27 11:07 ..
  1279. X-rw-rw-rw-  1 root     root         4080 Dec 27 02:01 com0ws.x.motif
  1280. X-rw-rw-rw-  1 root     root        28880 Dec 27 02:00 comp.os.minix
  1281. X-rw-rw-rw-  1 root     root          240 Dec 27 02:01 control
  1282. X-rw-rw-rw-  1 root     root         4240 Dec 27 02:01 junk
  1283. X-rw-rw-rw-  1 root     root          320 Dec 27 02:01 local.lists
  1284. X-rw-rw-rw-  1 root     root        26240 Dec 27 02:02 sub.config
  1285. X-rw-rw-rw-  1 root     root        13760 Dec 27 02:02 sub.general
  1286. X-rw-rw-rw-  1 root     root         3040 Dec 27 02:03 sub.os.minix
  1287. X
  1288. X
  1289. XDirectory /mbox/usr
  1290. X===================
  1291. Xdrwxrwx--- 19 root     root         1920 Dec 26 14:11 .
  1292. Xdrwxrwx---  6 root     root          896 Dec 27 11:07 ..
  1293. Xdrwxrwx---  2 root     root          240 Aug 28 19:27 1
  1294. Xdrwxrwx---  2 root     root          128 Aug  2 19:42 2
  1295. Xdrwxrwx---  2 root     root          192 Dec 11 22:30 3
  1296. Xdrwxrwx---  2 root     root          112 Aug  2 19:42 4
  1297. Xdrwxrwx---  2 root     root          112 Aug  2 19:42 5
  1298. Xdrwxrwx---  2 root     root          112 Aug  2 19:40 6
  1299. Xdrwxrwx---  2 root     root          112 Aug  2 19:42 7
  1300. X
  1301. X
  1302. XDirectory /mbox/usr/1
  1303. X=====================
  1304. Xdrwxrwx---  2 root     root         5680 Dec 27 11:01 .
  1305. Xdrwxrwx--- 19 root     root         1920 Dec 26 14:11 ..
  1306. X-rw-rw----  1 root     root          199 Dec 27 10:09 .active
  1307. X-rw-rw----  1 root     root          104 Jun 16  1991 .hello
  1308. X-rw-rw----  1 root     root           12 Dec 26 21:14 .lastsubject
  1309. X-rw-rw----  1 root     root          971 Dec 22 16:48 .makro
  1310. X-rw-rw----  1 root     root          313 Sep 11 19:31 .signature
  1311. X-rw-rw----  1 root     root          606 Sep 13 07:36 1116
  1312. X-rw-rw----  1 root     root          945 Sep 13 10:48 1117
  1313. X-rw-rw----  1 root     root         1168 Sep 13 12:49 1118
  1314. X-rw-rw----  1 root     root         2775 Dec 27 11:01 INDEX
  1315. X-rw-rw----  1 root     root            5 Dec 27 11:01 seq
  1316. X
  1317. X
  1318. XDirectory /usr/bin
  1319. X==================
  1320. X-rwsr-sr-x  1 root     root        40684 Dec 26 10:50 /usr/bin/mb-daemon
  1321. X-rwsr-sr-x  1 root     root       136604 Dec 26 11:23 /usr/bin/mbox
  1322. X-rwxr-xr-x  1 root     root        29408 Dec 15 13:06 /usr/bin/xmd
  1323. X-rwxr-xr-x  1 root     root        33228 Dec 26 18:02 /usr/bin/bled
  1324. X
  1325. X
  1326. X
  1327. XDecember 27, 1991               - 19 -                                ix/MBox
  1328. X
  1329. X
  1330. X
  1331. X
  1332. X
  1333. X
  1334. X
  1335. X
  1336. X
  1337. XC.  QUICK REFERENCE put in order by Files
  1338. X
  1339. X2.1.  /mbox/etc/alias.sh
  1340. X2.2.  /mbox/etc/inews.sh
  1341. X2.3.  /mbox/etc/rmail.sh
  1342. X2.4.  /mbox/etc/xmd.alias
  1343. X2.5.  /mbox/etc/pd.script
  1344. X
  1345. X3.1.  /mbox/etc/mbox.editors
  1346. X3.2.  /mbox/etc/mbox.games
  1347. X3.3.  /mbox/etc/help.befehle
  1348. X3.4.  /mbox/etc/mbox.udc
  1349. X3.5.  /mbox/etc/mbox.packers
  1350. X3.6.  /mbox/etc/help.hilfe
  1351. X3.7.  /mbox/etc/help.shorthelp
  1352. X
  1353. X4.1.  /mbox/etc/users.data & /mbox/etc/users.seq
  1354. X
  1355. X5.1.  /mbox/src/mbox.h
  1356. X5.2.  /mbox/src/Makefile
  1357. X
  1358. X
  1359. X
  1360. XJanuary 16, 1993                 - 20 -                                ix/MBox
  1361. END_OF_FILE
  1362.   if test 33036 -ne `wc -c <'README'`; then
  1363.     echo shar: \"'README'\" unpacked with wrong size!
  1364.   fi
  1365.   # end of 'README'
  1366. fi
  1367. if test -f 'README.addrpat' -a "${1}" != "-c" ; then 
  1368.   echo shar: Will not clobber existing file \"'README.addrpat'\"
  1369. else
  1370.   echo shar: Extracting \"'README.addrpat'\" \(976 characters\)
  1371.   sed "s/^X//" >'README.addrpat' <<'END_OF_FILE'
  1372. XREADME.addrpatch // ix/MBox BBS 1.6 PL10b // 18.06.1992
  1373. X
  1374. X:From unnet.w.open.DE !Volker.Schuermann Thu, 18 Jun 92 11:04:24 remote from unnet
  1375. X:     ^^^^^^^^^^^^^^^^^
  1376. X:From: unnet!Volker.Schuermann@unnet.w.open.DE (Volker Schuermann)
  1377. X:      ^^^^^^
  1378. X:Received: by unnet.w.open.DE (UMAIL 3.45/UNIX) with UUCP;
  1379. X:          id AA4063; Thu, 18 Jun 92 11:04:24 CET
  1380. X
  1381. X
  1382. XIf your ix/MBox BBS produces such kind of headers, too, you have to work
  1383. Xwith addrpatch!
  1384. X
  1385. X:CURDIR=`pwd`
  1386. X:
  1387. X:cd /usr/spool/uucp
  1388. X:
  1389. X:for i in D.unnet*
  1390. X:           ^^^^^
  1391. X:    do    
  1392. X:        echo -n $i' ... '
  1393. X:        sed '/From unnet.w.open.DE !/s//From /g' < $i > SED.TMP
  1394. X:                          ^^^^^^^^^^^^^^^^^
  1395. X:        sed '/From: unnet!/s//From: /g' < SED.TMP > $i
  1396. X:                           ^^^^^^
  1397. X:        echo 'patched.'
  1398. X:    done
  1399. X:
  1400. X:rm SED.TMP
  1401. X:
  1402. X:cd $CURDIR
  1403. X
  1404. XYou have to substitute 'unnet' and 'unnet.w.open.DE' by your sites name
  1405. Xand your domain address. After you've done that, start addrpatch before
  1406. Xyou start any UUCP-polling activities.
  1407. X
  1408. END_OF_FILE
  1409.   if test 976 -ne `wc -c <'README.addrpat'`; then
  1410.     echo shar: \"'README.addrpat'\" unpacked with wrong size!
  1411.   fi
  1412.   # end of 'README.addrpat'
  1413. fi
  1414. if test -f 'README.wendy' -a "${1}" != "-c" ; then 
  1415.   echo shar: Will not clobber existing file \"'README.wendy'\"
  1416. else
  1417.   echo shar: Extracting \"'README.wendy'\" \(256 characters\)
  1418.   sed "s/^X//" >'README.wendy' <<'END_OF_FILE'
  1419. XREADME.wendy // ix/MBox BBS 1.6 PL10j7 // 16.01.1993
  1420. X
  1421. XIn the subdirectory [~/wendy] you'll find the sources of an RTF-fullscreen-
  1422. Xeditor. It has it's own Makefile and some definitions in [wendy.h]. Edit
  1423. Xboth files and than try to 'make' it ...
  1424. X
  1425. XGood luck!
  1426. END_OF_FILE
  1427.   if test 256 -ne `wc -c <'README.wendy'`; then
  1428.     echo shar: \"'README.wendy'\" unpacked with wrong size!
  1429.   fi
  1430.   # end of 'README.wendy'
  1431. fi
  1432. if test ! -d 'etc' ; then
  1433.     echo shar: Creating directory \"'etc'\"
  1434.     mkdir 'etc'
  1435. fi
  1436. if test ! -d 'src' ; then
  1437.     echo shar: Creating directory \"'src'\"
  1438.     mkdir 'src'
  1439. fi
  1440. if test -f 'src/intro.c' -a "${1}" != "-c" ; then 
  1441.   echo shar: Will not clobber existing file \"'src/intro.c'\"
  1442. else
  1443.   echo shar: Extracting \"'src/intro.c'\" \(14441 characters\)
  1444.   sed "s/^X//" >'src/intro.c' <<'END_OF_FILE'
  1445. X/***************************************************************************/
  1446. X/*        PROGRAMM  ix/Mbox                           */
  1447. X/*             DATEI  intro.c                           */
  1448. X/*        FUNKTIONEN  intro(), init_user()                   */
  1449. X/*             AUTOR  vs (Volker Schuermann/MINIX-Version)           */
  1450. X/*  LETZTE AENDERUNG  29.11.1992                       */
  1451. X/***************************************************************************/
  1452. X
  1453. X#include <sys/types.h>
  1454. X#include <sys/stat.h>
  1455. X#include <unistd.h>
  1456. X#include <fcntl.h>
  1457. X#include <stdio.h>
  1458. X#include <time.h>
  1459. X
  1460. X#include "mbox.h"
  1461. X
  1462. Xtime_t time_start, time_now;
  1463. X
  1464. X
  1465. Xvoid init_user();
  1466. X
  1467. X/***************************************************************************/
  1468. X/*      FUNKTION  intro()                           */
  1469. X/*  BESCHREIBUNG  Teilnehmer melden sich an. Beim Aufruf von SHELL, wird   */
  1470. X/*          die Prozedur automagisch abgewickelt. Gaeste koennen     */
  1471. X/*          ausserdem in dieser Funktion ein Terminal auswaehlen.    */
  1472. X/*     PARAMETER  keine                                                    */
  1473. X/*     RUECKGABE  keine                                                       */
  1474. X/***************************************************************************/
  1475. X
  1476. Xvoid intro()
  1477. X{
  1478. X  FILE *fp;
  1479. X  FILE *ff;
  1480. X  int fd;
  1481. X  unsigned char s[LSTRING];
  1482. X  unsigned char t[STRING];
  1483. X  unsigned char f[STRING];
  1484. X  unsigned char tmp[STRING];
  1485. X  unsigned char crypt_pw[STRING];
  1486. X  unsigned char ex[255];
  1487. X  unsigned char tmpuser[STRING];
  1488. X  unsigned char moreLASTLOG[STRING];
  1489. X  int i, calls;
  1490. X  unsigned char c;
  1491. X  int ok;
  1492. X  int a, b;
  1493. X  long ll, lalo;
  1494. X  struct userdaten LOOSER;
  1495. X
  1496. X  struct tm *timeptr;
  1497. X  time_t timer;
  1498. X  struct stat fst;
  1499. X
  1500. X  umask(0007);
  1501. X
  1502. X  sprintf(TERMINAL, "ansi");
  1503. X  ansi("INIT");
  1504. X
  1505. X  time(&time_start);
  1506. X
  1507. X  fp = fopen( LOGO, "r" );
  1508. X  if(fp != NULL){
  1509. X    fclose(fp);
  1510. X    printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");
  1511. X    ansi("cl");
  1512. X    ansi("md");
  1513. X        show( LOGO, 24, 0 );
  1514. X    ansi("me");
  1515. X    c = getint();    
  1516. X  }
  1517. X
  1518. X  printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");
  1519. X  ansi("cl");
  1520. X
  1521. X  ansi("md");
  1522. X  printf("\n%s ", INT01_MSG);
  1523. X  ansi("me");
  1524. X  printf("%s", ORGANIZATION);
  1525. X    
  1526. X  ansi("md");
  1527. X  printf("\n%s ", INT02_MSG);
  1528. X  ansi("me");
  1529. X  printf("%s %s %s", VERSION, PATCHLEVEL, AUTOR);
  1530. X
  1531. X  ansi("md");
  1532. X  printf("\n%s ", INT03_MSG);
  1533. X  ansi("me");
  1534. X  printf("%s", SYSTEM);
  1535. X
  1536. X  BAUDRATE = (int) 0;
  1537. X
  1538. X  if (OLDGID == GUEST_GID) {    /* GAESTE */
  1539. X
  1540. X        TRY_AGAIN:
  1541. X
  1542. X    printf("\n\n%s ", GBL04_MSG);
  1543. X    strcpy(LOOSER.name, (unsigned char *) getline(30, 11, '.', ""));
  1544. X    if (LOOSER.name[0] == '\0') goto TRY_AGAIN;
  1545. X
  1546. X    strcpy(s, (unsigned char *) upcased(LOOSER.name));
  1547. X
  1548. X    if (strcomp(GUEST, s) != 0) {
  1549. X
  1550. X        printf("\n%s ", GBL09_MSG);
  1551. X        strcpy(LOOSER.passwort, (unsigned char *) getline(10, 12, '.', ""));
  1552. X        strcpy(crypt_pw, (unsigned char *) crypted(LOOSER.passwort));
  1553. X
  1554. X        maybe_locked(UDBASE, "r"); mblock(UDBASE);
  1555. X        fd = open(UDBASE, O_RDONLY);
  1556. X        if (fd == -1) {
  1557. X            nerror("intro.c", 78, "intro", "Datei-Lesefehler", UDBASE);
  1558. X        }
  1559. X        ok = 0;
  1560. X        while ((ok == 0) && (read(fd, (unsigned char *) &USER, sizeof(USER)) == sizeof(USER))) {
  1561. X            if (((strcomp(LOOSER.name, USER.name) == 0) ||
  1562. X                   (strcomp(LOOSER.name, USER.nick) == 0)) &&
  1563. X                ((strcomp(USER.passwort, (unsigned char *) crypt_pw) == 0) ||
  1564. X                 (strcomp(USER.passwort, LOOSER.passwort) == 0)))
  1565. X                ok = 1;
  1566. X        }
  1567. X        close(fd);
  1568. X        mbunlock(UDBASE);
  1569. X
  1570. X        if (ok == 1) goto WELL_DONE;
  1571. X        goto TRY_AGAIN;
  1572. X    }
  1573. X    strcpy(LOOSER.name, (unsigned char *) upcased(s));
  1574. X
  1575. X    maybe_locked(UDBASE, "r"); mblock(UDBASE);
  1576. X    fd = open(UDBASE, O_RDONLY);
  1577. X    if (fd == -1) {
  1578. X        nerror("intro.c", 98, "intro", "Datei-Lesefehler", UDBASE);
  1579. X    }
  1580. X    ok = 0;
  1581. X    while ((ok == 0) && (read(fd, (unsigned char *) &USER, sizeof(USER)) == sizeof(USER))) {
  1582. X        if (strcomp(LOOSER.name, USER.name) == 0) ok = 1;
  1583. X    }
  1584. X    close(fd);
  1585. X    mbunlock(UDBASE);
  1586. X
  1587. X    ansi("md");
  1588. X    printf("\n\n%s\n\n", INT04_MSG);
  1589. X    ansi("me");
  1590. X    printf("%s\n", INT05_MSG);
  1591. X    ansi("md");
  1592. X    printf("\n%s > ", INT06_MSG);
  1593. X    ansi("me");
  1594. X
  1595. X    do {
  1596. X        c = getint();
  1597. X    } while ((c < '1') || (c > '5'));
  1598. X    printf("%c", c);
  1599. X    USER.terminal = c - 48;
  1600. X
  1601. X    strcpy(USER.name, (unsigned char *) GUEST);
  1602. X    sprintf(USER.passwort, "%s", "*****");
  1603. X
  1604. X    USER.level       =  0;
  1605. X    USER.prompt        =  2;
  1606. X    USER.bell          =  0;
  1607. X    USER.intro         =  1;
  1608. X    USER.more          =  3;
  1609. X    USER.lastmode      =  2;
  1610. X    USER.leserichtung  =  2;
  1611. X    USER.tlines        = 23;
  1612. X    USER.schluessel[0] =  1;
  1613. X    USER.schluessel[1] =  3;
  1614. X
  1615. X    if(USER.terminal < 2) 
  1616. X            USER.editor = 1;
  1617. X    else
  1618. X            USER.editor = 2;
  1619. X
  1620. X    sprintf(USER.newsgrps, "%s", NEWS_MINIMUM);
  1621. X
  1622. X    LASTLOG = (long) 19700101;
  1623. X    LASTTIME = 0;
  1624. X    sprintf(moreLASTLOG, "%s", "01.01.1970");
  1625. X  }
  1626. X  else {            /* USER */
  1627. X
  1628. X    printf("\n\n%s ....................", GBL04_MSG);
  1629. X    for (i = 0; i < 20; i++) printf("%c", BS);
  1630. X
  1631. X    strcpy(tmpuser, (unsigned char *) whoami());
  1632. X    printf("%s", tmpuser);
  1633. X
  1634. X    printf("\n%s ..........", GBL09_MSG);
  1635. X
  1636. X    for (i = 0; i < 10; i++) printf("%c", BS);
  1637. X    for (i = 0; i < 10; i++) printf("*");
  1638. X
  1639. X    if (strcomp(tmpuser, "root") == 0) {
  1640. X        strcpy(tmpuser, (unsigned char *) POSTMASTER);
  1641. X
  1642. X        strcpy(s, (unsigned char *) ttyname(0));
  1643. X        if(strcomp(PMS_TTY, s) != 0){
  1644. X            printf("\n\n");
  1645. X            ansi("mr");
  1646. X            printf("%s", INT07_MSG);
  1647. X            ansi("me");
  1648. X            printf("\n\n");
  1649. X            exit(-1);
  1650. X        }
  1651. X        else {
  1652. X            USER.level = 10;
  1653. X        }
  1654. X    }
  1655. X    maybe_locked(UDBASE, "r"); mblock(UDBASE);
  1656. X    fd = open(UDBASE, O_RDONLY);
  1657. X    if (fd == -1) {
  1658. X        nerror("intro.c", 156, "intro", "Datei-Lesefehler", UDBASE);
  1659. X    }
  1660. X    ok = 0;
  1661. X    while ((ok == 0) && (read(fd, (unsigned char *) &USER, sizeof(USER)) == sizeof(USER))) {
  1662. X        if ((strcomp(tmpuser, USER.sh_name) == 0)) ok = 1;
  1663. X    }
  1664. X    close(fd);
  1665. X    mbunlock(UDBASE);
  1666. X
  1667. X    if (ok == 0) postfach(tmpuser);
  1668. X
  1669. X  }
  1670. X
  1671. X  WELL_DONE:
  1672. X
  1673. X  setuid( ROOT_UID );
  1674. X  setgid( ROOT_GID ); 
  1675. X
  1676. X  if (strcomp(GUEST, USER.name) != 0) {
  1677. X    LASTLOG = (long) dateconv(USER.lastlog);
  1678. X    LASTTIME = USER.lasttime;
  1679. X    sprintf(moreLASTLOG, "%s", USER.lastlog);
  1680. X  }
  1681. X  if (USER.lastmode == 2) LASTTIME = 0;
  1682. X
  1683. X  sprintf(UGROUPS, "%s/usr/%d/.active", HOME, USER.id);
  1684. X
  1685. X  maybe_locked( AGROUPS, "r" );
  1686. X  fp = fopen(AGROUPS, "r");
  1687. X  if (fp == NULL) {
  1688. X    nerror("intro.c", 182, "intro", "Datei-Lesefehler", AGROUPS);
  1689. X  }
  1690. X  ff = fopen(UGROUPS, "w");
  1691. X  if (ff == NULL) {
  1692. X    nerror("intro.c", 195, "intro", "Datei-Schreibfehler", UGROUPS);
  1693. X  }
  1694. X  while (fscanf(fp, "%s %ld", s, &lalo) > 0) {
  1695. X    if (LASTLOG < lalo) {
  1696. X        sprintf(t, "%s 00000 00000 y\n", s);
  1697. X        fputs(t, ff);
  1698. X    }
  1699. X    if (LASTLOG == lalo) {
  1700. X    }
  1701. X  }
  1702. X  fclose(ff);
  1703. X  fclose(fp);
  1704. X
  1705. X  sprintf(s, "%s \"%s\" (%d) %s", INT08_MSG, USER.name, USER.id, INT09_MSG);
  1706. X  control(s, 3);
  1707. X  whodo( INT10_MSG );
  1708. X
  1709. X  printf("\n\n");
  1710. X
  1711. X  if ((USER.level < 10) && (strcomp(MYNAME, USER.name) != 0)) {
  1712. X
  1713. X    maybe_locked(SEQ, "r"); mblock(SEQ);
  1714. X    fp = fopen(SEQ, "r");
  1715. X    if (fp == NULL) {
  1716. X        nerror("intro.c", 223, "intro", "Datei-Lesefehler", SEQ);
  1717. X    }
  1718. X    fscanf(fp, "%d", &calls);
  1719. X    fclose(fp);
  1720. X    calls++;
  1721. X
  1722. X    fp = fopen(SEQ, "w");
  1723. X    if (fp == NULL) {
  1724. X        nerror("intro.c", 227, "intro", "Datei-Schreibfehler", SEQ);
  1725. X    }
  1726. X    fprintf(fp, "%d\n", calls);
  1727. X    fclose(fp);
  1728. X    mbunlock(SEQ);
  1729. X
  1730. X    sprintf(tmp, "%s/%dT", TMP, getpid());
  1731. X
  1732. X    fp = fopen(tmp, "w");
  1733. X    if (fp == NULL) {
  1734. X        nerror("intro.c", 236, "intro", "Datei-Schreibfehler", tmp);
  1735. X    }
  1736. X    maybe_locked(CALLS, "r"); mblock(CALLS);
  1737. X    ff = fopen(CALLS, "r");
  1738. X    if (ff == NULL) {
  1739. X        nerror("intro.c", 239, "intro", "Datei-Lesefehler", CALLS);
  1740. X    }
  1741. X    sprintf(s, "%s (%s)", USER.name, USER.nick);
  1742. X    sprintf(t, "%s", numstripped(USER.wohnort));
  1743. X    if (t[0] == '\0') sprintf(t, "%s", "   ");
  1744. X
  1745. X    sprintf(f, "%s", (unsigned char *) ttyna());
  1746. X
  1747. X    fprintf(fp, "%5.d  %-28.28s  %-17.17s%8.8s  %s  %s\n",
  1748. X        calls, s, stripped(t), f, (unsigned char *) mydate(1), (unsigned char *) mytime(1));
  1749. X
  1750. X    if(PRO_ENTRIES < 10){
  1751. X        nerror("intro.c", 291, "intro", "PRO_ENTRIES zu klein dimensioniert", "mbox.h");            
  1752. X    }
  1753. X
  1754. X    i = 1;
  1755. X    while ((fgets(s, 84, ff) != NULL) && (i <= PRO_ENTRIES)) {
  1756. X        fputs(s, fp);
  1757. X        i++;
  1758. X    }
  1759. X
  1760. X    fclose(ff);
  1761. X    fclose(fp);
  1762. X
  1763. X    sprintf(s, "cp %s %s > /dev/null", tmp, CALLS);
  1764. X    system(s);
  1765. X
  1766. X    unlink(tmp);
  1767. X    mbunlock(CALLS);
  1768. X  }
  1769. X
  1770. X  sprintf(s, "%s/usr/%d/INDEX", HOME, USER.id);  
  1771. X  if(atol(USER.abused) == 0L){
  1772. X      stat(s, &fst);
  1773. X      IDX_SIZE = (long) fst.st_size;
  1774. X  }
  1775. X  else IDX_SIZE = atol(USER.abused);
  1776. X
  1777. X  init_user( INT11_MSG );
  1778. X
  1779. X  if (USER.intro < 3) {
  1780. X
  1781. X    a = 0;
  1782. X    fp = fopen(UGROUPS, "r");
  1783. X    if (fp == NULL) {
  1784. X        nerror("intro.c", 283, "intro", "Datei-Lesefehler", AGROUPS);
  1785. X    }
  1786. X    while (fgets(ex, 200, fp) != NULL) a++;
  1787. X    fclose(fp);
  1788. X
  1789. X    b = 0;
  1790. X    sprintf(s, "%s/usr/%d/INDEX", HOME, USER.id);  
  1791. X    
  1792. X    fp = fopen(s, "r");
  1793. X    if (fp == NULL) {
  1794. X        nerror("intro.c", 291, "intro", "Datei-Lesefehler", s);
  1795. X    }
  1796. X    while (fgets(ex, 200, fp) != NULL){
  1797. X        if(ex[0] < 65) b++;
  1798. X    }
  1799. X    fclose(fp);
  1800. X    b -= 1;
  1801. X
  1802. X    ansi("md");
  1803. X    printf("%s %d. %s %s %s.\n", 
  1804. X        INT12_MSG, USER.seq, INT13_MSG, moreLASTLOG, INT14_MSG);
  1805. X    printf("%s %d %s %d %s.\n", 
  1806. X        INT15_MSG, a, INT16_MSG, b, INT17_MSG);
  1807. X    ansi("me");
  1808. X    printf("\n");
  1809. X  }
  1810. X  if ((USER.intro != 2) && (USER.intro != 4)) show(INTRO, 9999, 1);
  1811. X
  1812. X
  1813. X
  1814. X  
  1815. X  fp = fopen(WHO, "a");
  1816. X  if (fp == NULL) {
  1817. X    nerror("intro.c", 309, "intro", "Datei-Lesefehler", WHO);
  1818. X  }
  1819. X  strcpy(s, (unsigned char *) USER.sh_name);
  1820. X  if (s[0] == '\0') strcpy(s, (unsigned char *) USER.nick);
  1821. X  if (s[0] == '\0') strcpy(s, (unsigned char *) GBL10_MSG);
  1822. X  sprintf(ex, "%-8.8s %s (%s)                                               ",
  1823. X    (unsigned char *) ttyna(), USER.name, s);
  1824. X
  1825. X  ex[39] = '\0';
  1826. X  fputs(ex, fp);
  1827. X
  1828. X  sprintf(ex, "%8.8s", (unsigned char *) ttyna());
  1829. X  fputs(ex, fp);
  1830. X
  1831. X  strcpy(s, (unsigned char *) mytime(1));
  1832. X  if (USER.level < 10)
  1833. X    sprintf(ex, "   %s   [%d] MBox: %s\n", s, USER.level, INT10_MSG);
  1834. X  else
  1835. X    sprintf(ex, "   %s   [%d] MBox: %s\n", s, ADMIN_LEV, INT10_MSG);
  1836. X
  1837. X  fputs(ex, fp);
  1838. X  fclose(fp);
  1839. X  
  1840. X
  1841. X
  1842. X  sprintf(MYNAME, "%s", USER.name);
  1843. X
  1844. X  sprintf(s, "%s", (unsigned char *) mydate(0));
  1845. X  s[6] = '\0';
  1846. X  if (strcomp(s, USER.geburtsdatum) == 0) {
  1847. X    ansi("md");
  1848. X    printf("\n\n%s\n", INT18_MSG);
  1849. X    printf("%s\n\n", INT19_MSG);
  1850. X    ansi("me");
  1851. X  }
  1852. X  if (strcomp("24.12.", s) == 0) {
  1853. X    ansi("md");
  1854. X    printf("\n\n%s\n", INT20_MSG);
  1855. X    printf("%s\n\n", INT21_MSG);
  1856. X    ansi("me");
  1857. X  }
  1858. X  if (strcomp("06.12.", s) == 0) {
  1859. X    ansi("md");
  1860. X    printf("\n\n%s\n", INT22_MSG);
  1861. X    printf("\n%s\n\n", INT23_MSG);
  1862. X    ansi("me");
  1863. X  }
  1864. X  if (strcomp("01.01.", s) == 0) {
  1865. X    ansi("md");
  1866. X    printf("\n\n%s\n", INT24_MSG);
  1867. X    printf("%s\n\n", INT25_MSG);
  1868. X    ansi("me");
  1869. X  }
  1870. X  if ((calls == 1000) || (calls == 10000) || (calls == 100000)) {
  1871. X    ansi("md");
  1872. X    printf("\n\n%s %d%s\n\n", INT26_MSG, calls, INT27_MSG);
  1873. X    ansi("me");
  1874. X  }
  1875. X
  1876. X
  1877. X  /* Strict Accounting ... decrease Level if User doesn't pay */
  1878. X
  1879. X  strcpy(s, (unsigned char *) mydate( 0 ));
  1880. X  lalo = dateconv(s);  
  1881. X  
  1882. X  strcpy(s, (unsigned char *) USER.account);
  1883. X  s[10] = '\0';
  1884. X  ll = dateconv(s);
  1885. X
  1886. X  if((ll <= lalo) && (ll > 19000000L)){
  1887. X    ansi( "md" );
  1888. X    printf("\n%s %s %s\n", INT28_MSG, s, INT29_MSG);
  1889. X    ansi( "me" );
  1890. X    printf("%s\n", INT30_MSG);
  1891. X
  1892. X    if(lalo > (ll + 14)){
  1893. X        USER.level = WRITE_INTERNAT - 1;
  1894. X        sprintf(USER.newsgrps, "%s", NEWS_MINIMUM);        
  1895. X    }
  1896. X  }
  1897. X
  1898. X  uptodate();
  1899. X}
  1900. X
  1901. X
  1902. X
  1903. X/***************************************************************************/
  1904. X/*      FUNKTION  init_user()                           */
  1905. X/*  BESCHREIBUNG  Teilnehmer-Parameter werden zugewiesen, Rechte verteilt  */
  1906. X/*          und die Daten aktualisiert.                              */
  1907. X/*     PARAMETER  info  =  Ansage-Text                                     */
  1908. X/*     RUECKGABE  keine                                                       */
  1909. X/***************************************************************************/
  1910. X
  1911. Xvoid init_user(info)
  1912. Xunsigned char info[];
  1913. X{
  1914. X  FILE *fp;
  1915. X  FILE *ff;
  1916. X  int fd;
  1917. X  unsigned char s[STRING];
  1918. X  unsigned char t[STRING];
  1919. X  int i;
  1920. X  struct userdaten DUMMY;
  1921. X  int dummy = sizeof(DUMMY);
  1922. X  long ll, lalo;
  1923. X  int lati;
  1924. X  int ok;
  1925. X
  1926. X  printf("%s ..", info);
  1927. X
  1928. X  switch (USER.terminal) {
  1929. X      case 1:    sprintf(TERMINAL, "ansi");
  1930. X        break;
  1931. X      case 2:    sprintf(TERMINAL, "vt100");
  1932. X        break;
  1933. X      case 3:    sprintf(TERMINAL, "vt52");
  1934. X        break;
  1935. X      case 4:    sprintf(TERMINAL, "vt52");
  1936. X        break;
  1937. X      case 5:   sprintf(TERMINAL, "col-ansi");
  1938. X        break;    
  1939. X  }
  1940. X  printf(".");
  1941. X
  1942. X  ansi("INIT");
  1943. X
  1944. X  fp = fopen(EDITORS, "r");
  1945. X  if (fp == NULL) {
  1946. X    nerror("intro.c", 487, "intro", "Datei-Lesefehler", EDITORS);
  1947. X  }
  1948. X  i = 0;
  1949. X  while((fgets(s, 80, fp) != NULL) && (s[0] == '/'));
  1950. X  /*
  1951. X  while ((i != USER.editor) && (fscanf(fp, "%s %s", s, EDDY) > 0)) i++;
  1952. X  fclose(fp);
  1953. X  */
  1954. X  while (fscanf(fp, "%s %s", t, s) > 0){
  1955. X    if(i == (USER.editor -1)) strcpy(EDDY, (unsigned char *) s);
  1956. X    i++;
  1957. X  }
  1958. X  fclose(fp);
  1959. X
  1960. X  OFFERED_EDITORS = i;
  1961. X
  1962. X  printf(".");
  1963. X
  1964. X  if (USER.leserichtung == 0) USER.leserichtung = 2;
  1965. X
  1966. X  USER.seq++;
  1967. X
  1968. X  maybe_locked(UDBASE, "r"); mblock(UDBASE);
  1969. X  fd = open(UDBASE, O_RDWR);
  1970. X  if (fd == -1) {
  1971. X    nerror("intro.c", 395, "init_user", "Datei-Schreib/-Lesefehler", UDBASE);
  1972. X  }
  1973. X  while (read(fd, (unsigned char *) &DUMMY, dummy) == dummy) {
  1974. X    if (USER.id == DUMMY.id) {
  1975. X        ll = lseek(fd, 0L, SEEK_CUR) - dummy;
  1976. X    }
  1977. X  }
  1978. X  lseek(fd, ll, SEEK_SET);
  1979. X  write(fd, (unsigned char *) &USER, sizeof(USER));
  1980. X  close(fd);
  1981. X  mbunlock(UDBASE);
  1982. X
  1983. X  printf(".");
  1984. X
  1985. X  sprintf(UGROUPS, "%s/usr/%d/.active", HOME, USER.id);
  1986. X  sprintf(MAKRO, "%s/usr/%d/.makro", HOME, USER.id);
  1987. X
  1988. X  maybe_locked( AGROUPS, "r" );
  1989. X  fp = fopen(AGROUPS, "r");
  1990. X  if (fp == NULL) {
  1991. X    nerror("intro.c", 412, "intro", "Datei-Lesefehler", AGROUPS);
  1992. X  }
  1993. X  ff = fopen(UGROUPS, "w");
  1994. X  if (ff == NULL) {
  1995. X    nerror("intro.c", 442, "intro", "Datei-Schreibfehler", UGROUPS);
  1996. X  }
  1997. X  while (fscanf(fp, "%s %ld %d", s, &lalo, &lati) > 0) {
  1998. X    if (LASTLOG < lalo) {
  1999. X        sprintf(t, "%s 00000 00000 y\n", s);
  2000. X        fputs(t, ff);
  2001. X    }
  2002. X    if (LASTLOG == lalo) {
  2003. X        if (LASTTIME <= lati) {
  2004. X            sprintf(t, "%s 00000 00000 y\n", s);
  2005. X            fputs(t, ff);
  2006. X        }
  2007. X    }
  2008. X  }
  2009. X  fclose(ff);
  2010. X  fclose(fp);
  2011. X
  2012. X  printf(".");
  2013. X
  2014. X  strcpy(BRETT, "PM");
  2015. X  sprintf(NG, "%s.PM", USER.name);
  2016. X  sprintf(INHALT, "%s/usr/%d/INDEX", HOME, USER.id);
  2017. X
  2018. X  printf(".");
  2019. X
  2020. X  if (USER.newsgrps[0] == '\0') sprintf(USER.newsgrps, "%s", NEWS_MINIMUM);
  2021. X
  2022. X  sscanf(USER.newsgrps, "%s %s %s %s %s %s %s %s %s %s %s %s %s %s %s",
  2023. X    newsgrp[1], newsgrp[2], newsgrp[3], newsgrp[4], newsgrp[5],
  2024. X    newsgrp[6], newsgrp[7], newsgrp[8], newsgrp[9], newsgrp[10],
  2025. X    newsgrp[11], newsgrp[12], newsgrp[13], newsgrp[14], newsgrp[15]);
  2026. X  MAX_SCR_LINES = USER.tlines;
  2027. X
  2028. X  if(USER.schluessel[0] == 32)
  2029. X    SHORT_HEADER = 1;
  2030. X  else
  2031. X    SHORT_HEADER = 0;
  2032. X
  2033. X  if(USER.schluessel[1] == 0)
  2034. X    USER.schluessel[1] = 4;
  2035. X
  2036. X  if(USER.level >= WRITE_INTERNAT){
  2037. X    strcpy(UUCPID, UUCPID2);
  2038. X  }
  2039. X  else{
  2040. X    strcpy(UUCPID, UUCPID1);
  2041. X  }
  2042. X
  2043. X  if((USER.schluessel[2] != 1) && (USER.schluessel[2] != 2) && (USER.schluessel[2] != 4))
  2044. X    USER.schluessel[2] = 3;
  2045. X
  2046. X  UMLAUT_MODUS = USER.schluessel[2];
  2047. X
  2048. X  if(USER.account[0] == '\0') strcpy(USER.account, "00.00.0000 000.00");
  2049. X  
  2050. X  printf("%c", CR);
  2051. X}
  2052. END_OF_FILE
  2053.   if test 14441 -ne `wc -c <'src/intro.c'`; then
  2054.     echo shar: \"'src/intro.c'\" unpacked with wrong size!
  2055.   fi
  2056.   # end of 'src/intro.c'
  2057. fi
  2058. if test ! -d 'wendy' ; then
  2059.     echo shar: Creating directory \"'wendy'\"
  2060.     mkdir 'wendy'
  2061. fi
  2062. echo shar: End of archive 1 \(of 15\).
  2063. cp /dev/null ark1isdone
  2064. MISSING=""
  2065. for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ; do
  2066.     if test ! -f ark${I}isdone ; then
  2067.     MISSING="${MISSING} ${I}"
  2068.     fi
  2069. done
  2070. if test "${MISSING}" = "" ; then
  2071.     echo You have unpacked all 15 archives.
  2072.     rm -f ark[1-9]isdone ark[1-9][0-9]isdone
  2073. else
  2074.     echo You still must unpack the following archives:
  2075.     echo "        " ${MISSING}
  2076. fi
  2077. exit 0
  2078. exit 0 # Just in case...
  2079.