home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Source Code 1992 March
/
Source_Code_CD-ROM_Walnut_Creek_March_1992.iso
/
usenet
/
altsrcs
/
2
/
2376
< prev
next >
Wrap
Internet Message Format
|
1990-12-28
|
7KB
From: purdon@athena.mit.edu (James R. Purdon III)
Newsgroups: alt.sources
Subject: slugnet - multiple user conferencing system: Part 1/6
Message-ID: <1990Dec20.163739.24869@athena.mit.edu>
Date: 20 Dec 90 16:37:39 GMT
The slugnet program is a multiple-user, interactive conferencing
facility. It currently runs under a variety of System V-based and
BSD-based operating systems (although certain functions may not be
possible under some of these operating systems).
Cut here-------------------------------------------------------------------
#!/bin/sh
# to extract, remove the header and type "sh filename"
if `test ! -s ./slugnetd.1`
then
echo "writing ./slugnetd.1"
cat > ./slugnetd.1 << '\End\Of\Shar\'
.\" @(#)slugnetd.1 1.1
.TH slugnetd 1
.SH NAME
slugnetd \- slugnet network server, a multiple\-user, interactive
conferencing system
.SH SYNTAX
.B slugnetd
.SH DESCRIPTION
.NXR "slugnetd"
.NXA "multiple\-user" "interactive" "conferencing" "system"
.NXA "network" "slugnet program"
.NXR "message" "interactive"
The
.PN slugnetd
is a network server for the slugnet multiple\-user conferencing system.
With
.PN slugnetd
running, users do not require logins on the system in order to use the
.PN slugnet
conferencing system.
.PP
Remote users can connect to the system running
.PN slugnetd
by issuing the command :
.EX
telnet host 2727
.EE
where host is the name of the system running slugnetd.
.PP
.PN slugnetd
should probably be placed in the system startup scripts.
.SH RESTRICTIONS
The number of users which can be serviced is limited to the maximum
number of processes the owner of slugnetd may simultaneously have
executing, and
.PN slugnetd
users may not be able to execute all of the commands that can be executed by
.PN slugnet
users.
.PP
.SH "SEE ALSO"
slugnet(1),telnet(1c)
\End\Of\Shar\
else
echo "will not over write ./slugnetd.1"
fi
chmod 400 ./slugnetd.1
if [ `wc -c ./slugnetd.1 | awk '{printf $1}'` -ne 1083 ]
then
echo `wc -c ./slugnetd.1 | awk '{print "Got " $1 ", Expected " 1083}'`
fi
if `test ! -s ./strnicmp.c`
then
echo "writing ./strnicmp.c"
cat > ./strnicmp.c << '\End\Of\Shar\'
/* @(#)strnicmp.c 1.2 */
#include "slugnet.h"
int strnicmp(s1,s2,len)
/* compares s1 and s2, ignoring case */
char s1[],s2[];
int len;
{
char *ds1,*ds2,*malloc();
int i,ls1,ls2;
#ifdef SYSV2
void free();
#endif SYSV2
#ifdef SYSV3
void free();
#endif SYSV3
#ifdef ULTRIX
void free();
#endif ULTRIX
ls1=strlen(s1)+1;
ds1=malloc((unsigned)ls1);
ls2=strlen(s2)+1;
ds2=malloc((unsigned)ls2);
strcpy(ds1,s1);
strcpy(ds2,s2);
lower(ds1);
lower(ds2);
i=strncmp(ds1,ds2,len);
free(ds2);
free(ds1);
return(i);
}
\End\Of\Shar\
else
echo "will not over write ./strnicmp.c"
fi
chmod 400 ./strnicmp.c
if [ `wc -c ./strnicmp.c | awk '{printf $1}'` -ne 643 ]
then
echo `wc -c ./strnicmp.c | awk '{print "Got " $1 ", Expected " 643}'`
fi
if `test ! -s ./task.c`
then
echo "writing ./task.c"
cat > ./task.c << '\End\Of\Shar\'
/* @(#)task.c 1.3 */
#ifdef NETWORK
#include "net.h"
/* pass socket descriptor to real application */
void task( s )
int s;
{
slugnet( s, (char *)NULL );
shutdown( s, 2 );
close( s );
}
#endif NETWORK
\End\Of\Shar\
else
echo "will not over write ./task.c"
fi
chmod 400 ./task.c
if [ `wc -c ./task.c | awk '{printf $1}'` -ne 207 ]
then
echo `wc -c ./task.c | awk '{print "Got " $1 ", Expected " 207}'`
fi
if `test ! -s ./transmit.c`
then
echo "writing ./transmit.c"
cat > ./transmit.c << '\End\Of\Shar\'
/* @(#)transmit.c 1.3 */
#include "slugnet.h"
int transmit(socket,string,crlf)
/* transmits a string to the output units */
char string[];
int crlf;
int socket;
{
char *sp;
int err, i,len;
len=strlen(string);
sp = string;
for(i=0;i<len;i++)
{
if(socket==NULL)
#ifdef SYSV3
putchar((int)((char)string[i]));
#endif SYSV3
#ifdef SYSV2
putchar((int)((char)string[i]));
#endif SYSV2
#ifdef BSD4
putchar((char)string[i]);
#endif BSD4
#ifdef ULTRIX
putchar((char)string[i]);
#endif ULTRIX
else {
#ifdef SYSV3
err = write( socket, sp, 1 );
#endif SYSV3
#ifdef SYSV2
err = write( socket, sp, 1 );
#endif SYSV2
#ifdef BSD4
err = write( socket, sp, 1 );
#endif BSD4
#ifdef ULTRIX
err = write( socket, sp, 1 );
#endif ULTRIX
++sp;
}
}
if(crlf)
{
if(socket==NULL)
{
putchar(CR);
putchar(LF);
}
else
{
err = write( socket, "\r\n", 2 );
}
}
if(socket==NULL)
return(len);
else
return(NULL);
}
\End\Of\Shar\
else
echo "will not over write ./transmit.c"
fi
chmod 400 ./transmit.c
if [ `wc -c ./transmit.c | awk '{printf $1}'` -ne 1330 ]
then
echo `wc -c ./transmit.c | awk '{print "Got " $1 ", Expected " 1330}'`
fi
if `test ! -s ./unlock.c`
then
echo "writing ./unlock.c"
cat > ./unlock.c << '\End\Of\Shar\'
/* @(#)unlock.c 1.2 */
#include "slugnet.h"
unlock( string )
char string[];
{
char lstring[FLNMLN+FLNMLN];
strcpy(lstring,"LCK_");
strcat(lstring,string);
unlink( lstring );
}
\End\Of\Shar\
else
echo "will not over write ./unlock.c"
fi
chmod 400 ./unlock.c
if [ `wc -c ./unlock.c | awk '{printf $1}'` -ne 182 ]
then
echo `wc -c ./unlock.c | awk '{print "Got " $1 ", Expected " 182}'`
fi
if `test ! -s ./verify.c`
then
echo "writing ./verify.c"
cat > ./verify.c << '\End\Of\Shar\'
/* @(#)verify.c 1.3 */
#include "net.h"
int verify( un, host )
/* attempts to use finger service to verify a un at a host */
char *un, *host;
{
#ifdef LOCAL
return( 0 );
}
#endif LOCAL
#ifdef NETWORK
char buffer[ 64 ];
int i, j, portnum, socket;
struct servent *finger;
/* get the port of the finger service */
/* finger = getservbyname( "finger", (char *)NULL ); */
/* portnum = ( int )ntohl( finger->s_port ); */
portnum = 79;
/* try to connect to the socket */
if(!( socket = callbyhost(host,portnum)))
if(!( socket = callbyaddr(host,portnum)))
return( 0 );
/* write the request */
strcpy( buffer, "@" );
strcat( buffer, host );
strcat( buffer, "\n" );
i = strlen( buffer );
if( write( socket, buffer, i ) != i )
return( 0 );
/* read until return is encountered, then try to compare */
j = strlen( un );
for(;;) {
/* look for returns */
i = read( socket, buffer, 1 );
if( i != 1 ){
close( socket );
return( 0 );
} else {
if( buffer[ 0 ] == '\n' ){
/* try to read a un's length */
i = read( socket, buffer, j );
if( i != j ){
close( socket );
return( 0 );
}
if(strncmp( un, buffer, j ) == NULL ){
close( socket );
return( 1 );
}
}
}
}
}
#endif NETWORK
\End\Of\Shar\
else
echo "will not over write ./verify.c"
fi
chmod 400 ./verify.c
if [ `wc -c ./verify.c | awk '{printf $1}'` -ne 1278 ]
then
echo `wc -c ./verify.c | awk '{print "Got " $1 ", Expected " 1278}'`
fi
echo "Finished archive 1 of 6"
exit