Exemple #1
0
//
//	Get values in username and password.
//
pwr_tStatus CoLoginGtk::get_values()
{
  char	passwd[40];
  char	username[40];
  char	*value;
  pwr_tStatus	sts;

  /* Get UserName */
  value = gtk_editable_get_chars( GTK_EDITABLE(widgets.usernamevalue), 0, -1);
  strcpy(username, value);
  g_free( value);

  /* Get Password */
  value = gtk_editable_get_chars( GTK_EDITABLE(widgets.passwordvalue), 0, -1);
  strcpy(passwd, value);

  sts = user_check( groupname, username, passwd);
  if ( EVEN(sts))
    return sts;

  return LOGIN__SUCCESS;
}
Exemple #2
0
void loop_process(int cfd) {

	DEBUG(" Child=======>  In child!\n");
	int acceptfd;
	int recved;
	fd_set readfds;
	int delay = 300;
	struct timeval timeout;
	timeout.tv_sec = 10;
	timeout.tv_usec = 0;
	struct sockaddr_in client_addr;
	socklen_t sock_len = sizeof(struct sockaddr);
	char buffer[512];
	ctl_hdr *hdr;
	uint16 ret_code = 0;

	//服务器对web服务器的回复报文
	struct replay_packet replay;
	replay.head.len = 2;
	replay.head.encrpyt = ENCRPYT_NO;
	replay.head.mo = MO_SERVER;
	replay.head.ttl = 0;
	replay.head.ki = KI_REPLAY;

	while (1) {
		DEBUG(" Child=======>  Waiting for connect! In child thread!\n");
		FD_ZERO(&readfds);
		FD_SET(cfd, &readfds);
		timeout.tv_sec = delay;
		timeout.tv_usec = 0;
		int tt;
		switch(tt = select(cfd + 1, &readfds, NULL, NULL, &timeout)) {
		case -1:
			//error
			continue;
			break;
		default:
			if (FD_ISSET(cfd, &readfds)) {
				acceptfd = accept(cfd,(struct sockaddr *) &client_addr, &sock_len);
				if (acceptfd <=0)  {
					DEBUG(" Child=======>  accept failed!\n");
					exit(-1);
				}
				recved = recv(acceptfd, buffer, sizeof(buffer), 0);
				DEBUG(" Child=======>  Listen socket:  %d\tAccept socket:  %d\n", cfd, acceptfd);
				struct common_packet * common = (struct common_packet *)buffer;

				DEBUG(" Child=======>  Received KI:  %d\n", common->head.ki);
				DEBUG(" Child=======>  Received data length:  %d\n", recved);

				if (recved > 0) {
					hdr = (ctl_hdr *)buffer;
					//如果是登录请求
					if (hdr->ki == KI_LOGIN) {
						//判断用户名和密码是否正确
						struct register_struct * user_struct = (struct register_struct *)buffer;
						if (user_check(&(user_struct->user_struct)) == 0) {
							//登录成功
							replay.data = RPL_LOGIN_SUCCESS;
							replay.head.extent = 111;
							writen(acceptfd, (void *)&replay, sizeof(replay));
							DEBUG(" Child=======>  Login successful!\n");
							tcp_close(acceptfd);
						} else {
							replay.data = RPL_LOGIN_FALLED;
							writen(acceptfd, (void *)&replay, sizeof(replay));
							DEBUG(" Child=======>  Login failed!\n");
							tcp_close(acceptfd);
						}
					} else if (hdr->ki == KI_REGISTER) {
						//用户注册
						struct register_struct * user_struct = (struct register_struct *)buffer;
						if (user_register(&(user_struct->user_struct)) == 0) {
							//注册成功
							replay.data = RPL_REGISTER_SUCCESS;
							writen(acceptfd, (void *)&replay, sizeof(replay));
							DEBUG("Register User Successful\n");
							tcp_close(acceptfd);
						} else {
							replay.data = RPL_REGISTER_FALLED;
							writen(acceptfd, (void *)&replay, sizeof(replay));
							DEBUG("Register User Failed\n");
							tcp_close(acceptfd);
						}
						//如果是发送的数据包,判断extent值,看是否已登录成功
					} else {
						hdr = (ctl_hdr *)buffer;
						DEBUG(" Child=======>  extent is : %d\tttl is : %d\n", hdr->extent, hdr->ttl);
						if ((hdr->extent) == 111) {
							ret_code = proc_packet(buffer, acceptfd);
							if (ret_code == RPL_NO_COMMON_REPLAY) {

							} else {
								replay.data = ret_code;
								writen(acceptfd, (void *)&replay, sizeof(replay));
							}
							tcp_close(acceptfd);
						}
					}
				}
			}
			break;
		}
		tcp_close(acceptfd);
		DEBUG(" Child=======>  tt is %d\n", tt);
	}
}