home *** CD-ROM | disk | FTP | other *** search
/ Meeting Pearls 3 / Meeting_Pearls_III.iso / Pearls / tcp / Networking / TCP / Server / AmiMsgWin / amimsg / amimsg.c < prev    next >
C/C++ Source or Header  |  1993-12-14  |  2KB  |  95 lines

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <netdb.h>
  5. #include <sys/types.h>
  6. #include <netinet/in.h>
  7. #include <libraries/multiuser.h>
  8.  
  9. #include <proto/dos.h>
  10. #include <proto/exec.h>
  11. #include <proto/multiuser.h>
  12.  
  13. char VersionTag[]="\0$VER: JoranAmimsg (14.12.93)";
  14.  
  15. struct muBase *muBase;
  16.  
  17. long gethostname(char *,long len);
  18.  
  19. char CommandTemplate[]="MSG/A,TO/K,NAME=FROM/K";
  20. LONG CommandResults[]={NULL,(LONG)"localhost",(LONG)"root"};
  21. char hostname[30];
  22. char Buffer[512];
  23.  
  24. void main(void)
  25. {
  26.     struct RDArgs *CommandRDArgs;
  27.     struct sockaddr_in server;
  28.     struct servent *sp;
  29.     struct hostent *hp;
  30.     char UserName[muUSERIDSIZE]="";
  31.     long s;
  32.     
  33.     if((CommandRDArgs=ReadArgs(CommandTemplate,CommandResults,NULL)))
  34.     {
  35.         muBase=(struct muBase *)OpenLibrary(MULTIUSERNAME,MULTIUSERVERSION);
  36.         if(muBase)
  37.         {
  38.             struct muUserInfo *UserInfo;
  39.             
  40.             if(UserInfo=muAllocUserInfo())
  41.             {
  42.                 UserInfo->uid=(muGetTaskOwner(NULL)&muMASK_UID)>>16;
  43.                 if(muGetUserInfo(UserInfo,muKeyType_uid))
  44.                 {
  45.                     strcpy(UserName,UserInfo->UserID);
  46.                     CommandResults[2]=(LONG)UserName;
  47.                 }
  48.                 muFreeUserInfo(UserInfo);
  49.             }
  50.             
  51.             CloseLibrary((struct Library *)muBase);
  52.         }
  53.         
  54.         gethostname(hostname,sizeof(hostname));
  55.         sp=getservbyname("amimsg","tcp");
  56.         if(sp==NULL)
  57.             fprintf(stderr,"amimsg: tcp/amimsg: unknown service\n");
  58.         else
  59.         {
  60.             hp=gethostbyname((char *)CommandResults[1]);
  61.             if(hp==NULL)
  62.                 fprintf(stderr,"amimsg: %s unknown host\n",CommandResults[1]);
  63.             else
  64.             {
  65.                 bzero((char *)&server,sizeof(server));
  66.                 server.sin_port=sp->s_port;
  67.                 bcopy(hp->h_addr,(char *)&server.sin_addr,hp->h_length);
  68.                 server.sin_family=hp->h_addrtype;
  69.                 s=socket(AF_INET,SOCK_STREAM,0);
  70.                 if(s<0)
  71.                     perror("amimsg: socket");
  72.                 else
  73.                 {
  74.                     if(connect(s,(struct sockaddr *)&server,sizeof(server))<0)
  75.                         perror("amimsg: connect");
  76.                     else
  77.                     {
  78.                         sprintf(Buffer,
  79.                             "HOST %s\n"
  80.                             "USER %s\n"
  81.                             "MSG %s\n",
  82.                             hostname,
  83.                             CommandResults[2],
  84.                             CommandResults[0]
  85.                         );
  86.                         send(s,Buffer,strlen(Buffer),0);
  87.                     }
  88.                 }
  89.             }
  90.         }
  91.         FreeArgs(CommandRDArgs);
  92.     }
  93.     else fprintf(stderr,"bad args.\n");
  94. }
  95.