Beispiel #1
0
void UsersMngDialog::ShowAllUsers()
{
	// Lock users manager for reading.
	mc::IReadWriteLock::Reader_ locker(RemotePC::UsersManager::Instance().GetLock());	

	size_t usersCount = RemotePC::UsersManager::Instance().GetUsersCount();
	for ( size_t i = 0 ; i < usersCount ; ++i )
	{
		RemotePC::User& user = RemotePC::UsersManager::Instance().GetUser(i);
		ShowUser(QString(user.GetDeviceName().c_str()), user.GetCookie());
	}		
}
Beispiel #2
0
/*******************************************************************
 *	Dispatch command according to $type, $tag in skin tags
 *
 *******************************************************************/
void 
DoTagCommand(char *type, char *tag)
{
	if (!strcasecmp(type, "Post"))
	{
		ShowPost(tag, &c_board, post_file);
	}
	else if (!strcasecmp(type, "PostList"))
	{
		ShowPostList(tag, &c_board, post_file);
	}
	else if (!strcasecmp(type, "User"))
	{
		ShowUser(tag, &curuser);
	}
	else if (!strcasecmp(type, "UserList"))
	{
		ShowUserList(tag, post_file);
	}
	else if (!strcasecmp(type, "Mail"))
	{
		ShowMail(tag);
	}
	else if (!strcasecmp(type, "Board"))
	{
		ShowBoard(tag, &c_board, post_file);
	}
	else if (!strcasecmp(type, "BoardList"))
	{
		ShowBoardList(tag, post_file);
	}
	else if (!strcasecmp(type, "SubDir"))
	{
		fprintf(fp_out, "/%s", BBS_SUBDIR);
	}
	else if (!strcasecmp(type, "Message"))
	{
		fprintf(fp_out, "%s", WEBBBS_ERROR_MESSAGE);
	}
	else if (!strcasecmp(type, "Server"))
	{
		ShowServerInfo(tag, server, request_rec, file_shm, html_shm);
	}
	else if (!strcasecmp(type, "Proxy"))
	{
		if (strlen(request_rec->via))
		{
			char proxy[STRLEN * 2];

			xstrncpy(proxy, request_rec->via + 4, sizeof(proxy));
			strtok(proxy, ",(");
			fprintf(fp_out, "%s", proxy);
		}
	}
	else if (!strcasecmp(type, "Skin"))
	{
		if (PSCorrect == Correct && (c_board.brdtype & BRD_WEBSKIN) 
			&& (!strcmp(username, c_board.owner) || HAS_PERM(PERM_SYSOP)))
		{
			fprintf(fp_out, "<a href=\"/%sboards/%s/%s\">[BM]修改看板介面</a>",
			     BBS_SUBDIR, c_board.filename, HTML_SkinModify);
		}
	}
	else if (!strcasecmp(type, "Announce"))
	{
		ShowArticle(WELCOME, FALSE, TRUE);
	}
	else if (!strcasecmp(type, "NewGuide"))
	{
		ShowArticle(NEWGUIDE, FALSE, TRUE);
	}

}
Beispiel #3
0
//void newProcessForClient(int conn_fd, struct sockaddr_in serv_addr, struct OnlineUser * userlist)
void newPthreadForClient(int * conn_fd) 
{
	char buf[500];
	char recvfrom[10];
	char message[500];
	char sendto[10];
	int i, j;
	int stat;
	int CONN_FD;
	struct UserInfo user;
	struct Package package;
	int send_to_fd;
	char oder[20];
	
	CONN_FD = *conn_fd;
	
	printf("##server : now is newProcessForClient \n##Waiting for Log in\n");
	printf("##server : conn_fd : %d\n", CONN_FD);
	if(recv(CONN_FD, &user,sizeof(user), 0) == 0)
	{
		pthread_exit(0);
	}
	
	printf("##server : received %d\n", user.flag);
	printf("##server : received %s\n", user.name);
	printf("##server : received %s\n", user.passwd);
	
	if(user.flag == 1)
	{
		//登陆 signIn
		stat = SignIn(CONN_FD,user);
		printf("stat = %d\n", stat);
		if(stat == 1)
		{
			AddUser(user.name,CONN_FD);
			ShowUser();
			send(CONN_FD, &stat, sizeof(stat), 0);
		}
		else
		{
			send(CONN_FD, &stat, sizeof(stat), 0);
			pthread_exit(0);		
		}
	}
	
	if(user.flag == 2)
	{
		//注册signUp
		SignUp(CONN_FD, user); 
		pthread_exit(0);
	}
//	strcpy(recvfrom ,  user.name);
	OnLineHint(user.name);	
	while(1)  
	{ //解析信息
		printf("##server : waitting for massage form %s\n", user.name);
		memset(buf, 0, sizeof(buf));		
				
		if(recv(CONN_FD, &package, sizeof(package), 0) == 0)
		{
			printf("%s off line\n", user.name);
			OffLine(user.name);
			pthread_exit(0);
		} //下线
		
			
		
		if(package.order == 1 && strcmp(package.sendto, "all") == 0)
			{
				SendToAll(package);
				printf("now is send all\n");
				continue;
			}
		
		send_to_fd = find_fd(package.sendto);
		if(package.order == 1)
		{	
			if(send_to_fd == -1)
			{
				continue;
			}
			if(send(send_to_fd, &package, sizeof(package), 0) == 0)
			{
				printf("send error\n");
				continue;
			}			
		}	
		
		if(package.order == 2)
		{
			if(strcmp(package.message, "show") == 0)
			{
				ShowOnlineUser(CONN_FD);
			}
		}
	}	
}
Beispiel #4
0
void UsersMngDialog::AddUser(size_t userCookie)
{
	RemotePC::User& user = RemotePC::UsersManager::Instance().GetUserByCookie(userCookie);
	ShowUser(QString(user.GetDeviceName().c_str()), user.GetCookie());
}