Ejemplo n.º 1
0
Archivo: pop3.c Proyecto: npe9/harvey
static int
apopcmd(char *arg)
{
	char *resp;

	resp = nextarg(arg);
	if(setuser(arg) < 0)
		return -1;
	return dologin(resp);
}
Ejemplo n.º 2
0
Archivo: pop3.c Proyecto: npe9/harvey
static int
usercmd(char *arg)
{
	if(loggedin)
		return senderr("already authenticated");
	if(*arg == 0)
		return senderr("USER requires argument");
	if(setuser(arg) < 0)
		return -1;
	return sendok("");
}
Ejemplo n.º 3
0
void login(struct USER *me) {
    int recvd;
    if (isconnected) {
        fprintf(stderr, "You are already connected to server at %s:%d\n", SERVERIP, SERVERPORT);
        return;
    }
    sockfd = connect_with_server();
    if (sockfd >= 0) {
        isconnected = 1;
        me->sockfd = sockfd;
        if (strcmp(me->user, "Anonymous")) setuser(me);
        printf("Logged in as %s\n", me->user);
        printf("Receiver started [%d]...\n", sockfd);
        struct THREADINFO threadinfo;
        pthread_create(&threadinfo.thread_ID, NULL, receiver, (void *) &threadinfo);

    } else {
        fprintf(stderr, "Connection rejected...\n");
    }
}
Ejemplo n.º 4
0
void login(struct USER *me) {
int recvd;
if(isconnected) {
fprintf(stderr, "You are already connected to server at %s:%d\n", SERVERIP, SERVERPORT);
return;
}
sockfd = connect_with_server();
if(sockfd >= 0) {
isconnected = 1;
me->sockfd = sockfd;
if(strcmp(me->user, "default")) setuser(me);
printf(pink "Logged in as %s\n" ANSI_COLOR_RESET, me->user);
printf(ANSI_COLOR_YELLOW "ready to send and receive messages [%d]\n" ANSI_COLOR_RESET, sockfd);
sleep(1);
struct THREADINFO threadinfo;
pthread_create(&threadinfo.thread_ID, NULL, receiver, (void *)&threadinfo);

}
else {
fprintf(stderr, "Connection rejected...\n");
}
}
Ejemplo n.º 5
0
Xfid *
setuser(Xfile *xp, char *user)
{
	Xfid *xf, *xpf;
	Session *s;

	xf = xfid(user, xp, 1);
	if(xf->urfid)
		return xf;
	if(xp->parent==xp || !(xpf = setuser(xp->parent, user))) /* assign = */
		return xfid(user, xp, -1);
	s = xp->s;
	xf->urfid = newfid(s);
	xf->urfid->owner = &xf->urfid;
	setfid(s, xpf->urfid);
	s->f.newfid = xf->urfid - s->fids;
	s->f.nwname = 1;
	s->f.wname[0] = xp->name;
	if(xmesg(s, Twalk) || s->f.nwqid != 1)
		return xfid(user, xp, -1);
	return xf;
}
Ejemplo n.º 6
0
int main(int argc, char **argv) {
    int sockfd, userlen;
    
     printf ("********* Welcome to mini chat cote client *********\n");
  printf( "  Les commande sont : \n"
          "      login puis nom utilisateur pour connecter au serveur \n"
          "       pour envoyer un message a un client taper : send utilisateur puis message \n"
          "      quiter \n\n\n");
printf("-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*Client*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-\n");

    
    
    
    memset(&me, 0, sizeof (struct USER));
    while (gets(comande)) {
        if (!strncmp(comande, "quiter", 4)) {
            logout(&me);
            break;
        }
      /*  if (!strncmp(comande, "help", 4)) {
            FILE *fin = fopen("help.txt", "r");
            if (fin != NULL) {
                while (fgets(comande, LINEBUFF - 1, fin)) puts(comande);
                fclose(fin);
            } else {
                fprintf(stderr, "Help file not found...\n");
            }
        }*/ else if (!strncmp(comande, "login", 5)) {
            char *ptr = strtok(comande, " ");
            ptr = strtok(0, " ");
            memset(me.user, 0, sizeof (char) * USERLEN);
            if (ptr != NULL) {
                userlen = strlen(ptr);
                if (userlen > USERLEN) ptr[USERLEN] = 0;
                strcpy(me.user, ptr);
            } else {
                strcpy(me.user, "Anonymous");
            }
            login(&me);
        } else if (!strncmp(comande, "user", 5)) {
            char *ptr = strtok(comande, " ");
            ptr = strtok(0, " ");
            memset(me.user, 0, sizeof (char) * USERLEN);
            if (ptr != NULL) {
                userlen = strlen(ptr);
                if (userlen > USERLEN) ptr[USERLEN] = 0;
                strcpy(me.user, ptr);
                setuser(&me);
            }
        } else if (!strncmp(comande, "send", 5)) {
            char *ptr = strtok(comande, " ");
            char temp[USERLEN];
            ptr = strtok(0, " ");
            memset(temp, 0, sizeof (char) * USERLEN);
            if (ptr != NULL) {
                userlen = strlen(ptr);
                if (userlen > USERLEN) ptr[USERLEN] = 0;
                strcpy(temp, ptr);
                while (*ptr) ptr++;
                ptr++;
                while (*ptr <= ' ') ptr++;
                sendtouser(&me, temp, ptr);
            }
        } else if (!strncmp(comande, "send", 4)) {
            sendtoall(&me, &comande[5]);
        } else if (!strncmp(comande, "logout", 6)) {
            logout(&me);
        } else fprintf(stderr, "Unknown comande...\n");
    }
    return 0;
}
Ejemplo n.º 7
0
int main(int argc, char **argv) {
int sockfd, userlen;
memset(&me, 0, sizeof(struct USER));
while(gets(option)) {
if(!strncmp(option, "exit", 4)) {
logout(&me);
break;
}
else if(!strncmp(option, "login", 5)) {
char *ptr = strtok(option, " ");
ptr = strtok(0, " ");//set ptr as username
memset(me.user, 0, sizeof(char) * userLEN);
if(ptr != NULL) {
userlen = strlen(ptr);//strlen:calcule la longeur du chaine de caractere
if(userlen > userLEN) ptr[userLEN] = 0;
strcpy(me.user, ptr);//copy ptr in me.user
}
else {

strcpy(me.user, "default");//copy default to me.user



}
login(&me);
}
else if(!strncmp(option, "change", 6)) {
char *ptr = strtok(option, " ");
ptr = strtok(0, " ");
memset(me.user, 0, sizeof(char) * userLEN);
if(ptr != NULL) {
userlen = strlen(ptr);
if(userlen > userLEN) ptr[userLEN] = 0;
strcpy(me.user, ptr);
setuser(&me);
}
}
else if(!strncmp(option, "specf", 5)) {
char *ptr = strtok(option, " ");
char temp[userLEN];
ptr = strtok(0, " ");
memset(temp, 0, sizeof(char) * userLEN);
if(ptr != NULL) {
userlen = strlen(ptr);
if(userlen > userLEN) ptr[userLEN] = 0;
strcpy(temp, ptr);
while(*ptr) ptr++; ptr++;
while(*ptr <= ' ') ptr++;
sendtoclient(&me, temp, ptr);
}
}
else if(!strncmp(option, "sfile", 5)) {
char *ptr = strtok(option, " ");
char temp[userLEN];
char *buff;
ptr = strtok(0, " ");
memset(temp, 0, sizeof(char) * userLEN);
if(ptr != NULL) {
userlen = strlen(ptr);
if(userlen > userLEN) ptr[userLEN] = 0;
strcpy(temp, ptr);
while(*ptr) ptr++; ptr++;
while(*ptr <= ' ') ptr++;
sendfile(&me, temp, ptr,buff);
}
}
else if(!strncmp(option, "encrypt", 7)) {
char *ptr = strtok(option, " ");
char temp[userLEN];
ptr = strtok(0, " ");
memset(temp, 0, sizeof(char) * userLEN);
if(ptr != NULL) {
userlen = strlen(ptr);
if(userlen > userLEN) ptr[userLEN] = 0;
strcpy(temp, ptr);
while(*ptr) ptr++; ptr++;
while(*ptr <= ' ') ptr++;
sendencrypt(&me, temp, ptr);
}
}
else if(!strncmp(option, "broadcast", 9)) {
sendtoall(&me, &option[9]);
}
else if(!strncmp(option, "list", 4)) {

}
else if(!strncmp(option, "logout", 6)) {
logout(&me);
}
else fprintf(stderr, "Unknown option...\n");
}
return 0;
}
Ejemplo n.º 8
0
Xfid *
rpc2xfid(Rpccall *cmd, Dir *dp)
{
	char *argptr = cmd->args;
	Xfile *xp;
	Xfid *xf;
	Session *s;
	char *service;
	Authunix au;
	Qid qid;
	char client[256], *user;
	Unixidmap *m;
	int i;
	uvlong x1, x2;

	chat("rpc2xfid %.8lux %.8lux %p %p\n", *((ulong*)argptr), *((ulong*)argptr+1), buf, argptr);
	if(argptr[0] == 0 && argptr[1] == 0){	/* root */
		chat("root...");
		xp = xfroot(&argptr[2], 0);
		s = xp ? xp->s : 0;
	}else{
		ulong ul;
		chat("noroot %.8lux...", *((ulong*)argptr));
		if((ul=GLONG()) != starttime){
			chat("bad tag %lux %lux...", ul, starttime);
			return 0;
		}
		s = (Session *)GLONG();
		x1 = GLONG();
		x2 = GLONG();
		qid.path = x1 | (x2<<32);
		qid.vers = 0;
		qid.type = GBYTE();
		xp = xfile(&qid, s, 0);
	}
	if(xp == 0){
		chat("no xfile...");
		return 0;
	}
	if(auth2unix(&cmd->cred, &au) != 0){
		chat("auth flavor=%ld, count=%ld\n",
			cmd->cred.flavor, cmd->cred.count);
		for(i=0; i<cmd->cred.count; i++)
			chat(" %.2ux", ((uchar *)cmd->cred.data)[i]);
		chat("...");
		return 0;
	}else{
/*		chat("auth: %d %.*s u=%d g=%d",
 *			au.stamp, utfnlen(au.mach.s, au.mach.n), au.mach.s, au.uid, au.gid);
 *		for(i=0; i<au.gidlen; i++)
 *			chat(", %d", au.gids[i]);
 *		chat("...");
 */
		char *p = memchr(au.mach.s, '.', au.mach.n);
		chat("%ld@%.*s...", au.uid, utfnlen(au.mach.s, (p ? p-au.mach.s : au.mach.n)), au.mach.s);
	}
	if(au.mach.n >= sizeof client){
		chat("client name too long...");
		return 0;
	}
	memcpy(client, au.mach.s, au.mach.n);
	client[au.mach.n] = 0;
	service = xp->parent->s->service;
	cmd->up = m = pair2idmap(service, cmd->host);
	if(m == 0){
		chat("no map for pair (%s,%s)...", service, client);
		/*chat("getdom %d.%d.%d.%d", cmd->host&0xFF, (cmd->host>>8)&0xFF,
			(cmd->host>>16)&0xFF, (cmd->host>>24)&0xFF);/**/
		/*if(getdom(cmd->host, client, sizeof(client))<0)
			return 0;/**/
		return 0;
	}
	/*chat("map=(%s,%s)...", m->server, m->client);/**/
	cmd->user = user = id2name(&m->u.ids, au.uid);
	if(user == 0){
		chat("no user for id %ld...", au.uid);
		return 0;
	}
	chat("user=%s...", user);/**/
	xf = 0;
	if(s == xp->parent->s){
		if(!s->noauth)
			xf = setuser(xp, user);
		if(xf == 0)
			xf = setuser(xp, "none");
		if(xf == 0)
			chat("can't set user none...");
	}else
		xf = xp->users;
	if(xf)
		chat("uid=%s...", xf->uid);
	if(xf && dp && xfstat(xf, dp) < 0){
		chat("can't stat %s...", xp->name);
		return 0;
	}
	return xf;
}