Example #1
0
int getty(char *tty, speed_t speed, char *term, char *user)
{
	int fd;
	char name[30];

	/* Detach from initial controlling TTY */
	vhangup();

	fd = open(tty, O_RDWR);
	if (fd < 0)
		err(1, "Failed opening %s", tty);

	dup2(fd, STDIN_FILENO);
	dup2(fd, STDOUT_FILENO);
	dup2(fd, STDERR_FILENO);

	if (ioctl(STDIN_FILENO, TIOCSCTTY, 1) < 0)
		warn("Failed TIOCSCTTY");

	/* The getty process is responsible for the UTMP login record */
	utmp_set_login(tty, NULL);
	if (!user)
		do_getty(tty, name, sizeof(name));
	else
		strlcpy(name, user, sizeof(name));

	/* Set up TTY, re-enabling ISIG et al. */
	stty(fd, speed);
	close(fd);

	if (term && term[0])
		setenv("TERM", term, 1);

	return do_login(name);
}
Example #2
0
/**
 * Create or delete guest account
 * 
 * @parma   path      The pathname of the script to run
 * @param   username  The name of the guest account
 * @return            Zero on success, -1 on error
 */
static int do_guest(char* path, char* username)
{
  char* args[3];
  pid_t pid, reaped;
  int status;
  
  args[0] = path;
  args[1] = username;
  args[2] = NULL;
  
  /* Call the script. */
  pid = do_login(args);
  if (pid == -1)
    return -1;
  
  /* Wait for the script to exit. */
  for (;;)
    {
      reaped = waitpid(-1, &status, 0);
      if (reaped == -1)
	{
	  if (errno != EINTR)
	    return perror("waitpid"), -1;
	}
      else if (reaped == pid)
	return status ? -1 : 0;
    }
}
Example #3
0
main(int argc, char **argv)
{
	/*
	 * Optionally let them specify device.
	 */
	if (argc > 1) {
		tty_dev = argv[1];

		open_tty_dev(tty_dev);
	}

	/*
	 * Randomize a bit
	 */
	srandom(time((long *)0));

	/*
	 * Display welcoming banner
	 */
	cat(_PATH_BANNER);

	/*
	 * Set up the TTY mode for cbreak noecho type of interaction
	 */
	init_tty();

	/*
	 * Login or bust
	 */
	for (;;) {
		do_login();
	}
}
Example #4
0
G_MODULE_EXPORT 
void linphone_gtk_login_frame_connect_clicked(GtkWidget *button){
	GtkWidget *mw=gtk_widget_get_toplevel(button);
	const char *username;
	const char *password;
	char *identity;
	gboolean autologin;
	LinphoneProxyConfig *cfg=(LinphoneProxyConfig*)g_object_get_data(G_OBJECT(mw),"login_proxy_config");
	LinphoneAddress *from;
	SipSetupContext *ssctx=linphone_proxy_config_get_sip_setup_context(cfg);

	username=gtk_entry_get_text(GTK_ENTRY(linphone_gtk_get_widget(mw,"login_username")));
	password=gtk_entry_get_text(GTK_ENTRY(linphone_gtk_get_widget(mw,"login_password")));

	if (username==NULL || username[0]=='\0')
		return;

	autologin=gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(linphone_gtk_get_widget(mw,"automatic_login")));
	linphone_gtk_set_ui_config_int("automatic_login",autologin);
	linphone_gtk_set_ui_config("login_username",username);

	from=linphone_address_new(linphone_proxy_config_get_identity(cfg));
	linphone_address_set_username(from,username);
	identity=linphone_address_as_string(from);
	do_login(ssctx,identity,password);
	/*we need to refresh the identities since the proxy config may have changed.*/
	linphone_gtk_load_identities();
}
Example #5
0
gint qq_login(QQInfo *info, const gchar *qqnum, const gchar *passwd
		        , const gchar *status, GError **err)
{
	if(info == NULL){
		g_warning("info == NULL. (%s, %d)", __FILE__, __LINE__);
        create_error_msg(err, PARAMETER_ERR, "info == NULL");
		return PARAMETER_ERR;
	}
	if(qqnum == NULL || passwd == NULL || strlen(qqnum) == 0){
		g_warning("qqnumber or passwd == NULL.(%s, %d)"
				, __FILE__, __LINE__);
        create_error_msg(err, PARAMETER_ERR, "qqnum or passwd  == NULL");
		return PARAMETER_ERR;
	}

    //
    // The user's uin and qq number are the same.
    //
    qq_buddy_set(info -> me, "qqnumber", qqnum);
    qq_buddy_set(info -> me, "uin", qqnum);

	if(status != NULL){
        qq_buddy_set(info -> me, "status", status);
	}else{
        qq_buddy_set(info -> me, "status", "online");
	}

    return do_login(info, qqnum, passwd, status, err);
}
Example #6
0
int main(int argc, char **argv)
{
	char *outtyp;
	char *outcomp;
	int forcehead;
	int n, err;
        int stdret = standard_args(argc, argv); if (!stdret) return 0;

	if (argc < 2) return help(argc, argv);

        ignore_arg("-itype", 2, &argc, argv);
        ignore_arg("-iside", 2, &argc, argv);
        ignore_arg("-icomp", 2, &argc, argv);
        ignore_arg("-otype", 2, &argc, argv);
        ignore_arg("-oside", 2, &argc, argv);
        ignore_arg("-ocomp", 2, &argc, argv);

	outtyp    = check_type("-type", &argc, argv);
	outcomp   = check_type("-comp", &argc, argv);
	forcehead = check_forcehead("-side", &argc, argv);	
	retries   = check_retry("-retry", &argc, argv);

        if (find_arg("--help",    argc, argv) > 0) return help(argc, argv);
	args_complete(&argc, argv);

	err = 0;
	for (n = 1; n < argc; n++)
	{
		if (do_login(argc, argv[n], outtyp, outcomp, forcehead))
			++err;
	}
	return err;
}
Example #7
0
int main(int argc, char **argv)
{
  register char *s;
  char name[30];
  struct sigaction sa;

  /* Don't let QUIT dump core. */
  sigemptyset(&sa.sa_mask);
  sa.sa_flags = 0;
  sa.sa_handler = exit;
  sigaction(SIGQUIT, &sa, NULL);

  tty_name = ttyname(0);
  if (tty_name == NULL) {
	std_out("getty: tty name unknown\n");
	pause();
	return(1);
  }

  chown(tty_name, 0, 0);	/* set owner of TTY to root */
  chmod(tty_name, 0600);	/* mode to max secure */

  do_getty(name, sizeof(name), argv+1, tty_name);	/* handle getty() */
  name[29] = '\0';		/* make sure the name fits! */

  do_login(name);		/* and call login(1) if OK */

  return(1);			/* never executed */
}
Example #8
0
/**
 * Mane method
 * 
 * @param   argc  The number of command line arguments
 * @param   argv  The command line arguments
 * @return        Return code
 */
int main(int argc, char** argv)
{
  char* tty_device = ttyname(STDIN_FILENO);
  
  do_login(argc, argv);
  
  /* Ignore signals */
  signal(SIGQUIT, SIG_IGN);
  signal(SIGINT, SIG_IGN);
  
  /* Wait for the login shell and all grandchildren to exit */
  while ((wait(NULL) == -1) && (errno == EINTR))
    ;
  
  /* Regain access to the terminal */
  if (tty_device)
    {
      int fd = open(tty_device, O_RDWR | O_NONBLOCK);
      if (fd != 0)  dup2(fd, 0);
      if (fd != 1)  dup2(fd, 1);
      if (fd != 2)  dup2(fd, 2);
    }
  
  /* Reset terminal ownership and mode */
  chown_tty(0, tty_group, 0);
  
  /* Close login session */
  close_login_session();
  
  /* Run logout hook */
  exec_hook(HOOK_LOGOUT, argc, argv);
  return 0;
}
Example #9
0
File: login.c Project: yet/lwqq
/** 
 * WebQQ login function
 * Step:
 * 1. Get webqq version
 * 2. Get verify code
 * 3. Calculate password's md5
 * 4. Do real login 
 * 5. check whether logining successfully
 * 
 * @param client Lwqq Client 
 * @param err Error code
 */
void lwqq_login(LwqqClient *client, LwqqErrorCode *err)
{
    if (!client || !err) {
        lwqq_log(LOG_ERROR, "Invalid pointer\n");
        return ;
    }

    /* First: get webqq version */
    get_version(client, err);
    if (*err) {
        lwqq_log(LOG_ERROR, "Get webqq version error\n");
        return ;
    }
    lwqq_log(LOG_NOTICE, "Get webqq version: %s\n", client->version);

    /**
     * Second, we get the verify code from server.
     * If server provide us a image and let us enter code shown
     * in image number, in this situation, we just return LWQQ_EC_LOGIN_NEED_VC
     * simply, so user should call lwqq_login() again after he set correct
     * code to vc->str;
     * Else, if we can get the code directly, do login immediately.
     * 
     */
    if (!client->vc) {
        get_verify_code(client, err);
        switch (*err) {
        case LWQQ_EC_LOGIN_NEED_VC:
            get_verify_image(client);
            lwqq_log(LOG_WARNING, "Need to enter verify code\n");
            return ;
        
        case LWQQ_EC_NETWORK_ERROR:
            lwqq_log(LOG_ERROR, "Network error\n");
            return ;

        case LWQQ_EC_OK:
            lwqq_log(LOG_DEBUG, "Get verify code OK\n");
            break;

        default:
            lwqq_log(LOG_ERROR, "Unknown error\n");
            return ;
        }
    }
    
    /* Third: calculate the md5 */
    char *md5 = lwqq_enc_pwd(client->password, client->vc->str, client->vc->uin);

    /* Last: do real login */
    do_login(client, md5, err);
    s_free(md5);

    /* Free old value */
    lwqq_vc_free(client->vc);
    client->vc = NULL;
}
Example #10
0
File: irc.c Project: VoxOx/VoxOx
static void irc_login_cb_ssl(gpointer data, GaimSslConnection *gsc,
	GaimInputCondition cond)
{
	GaimConnection *gc = data;

	if (do_login(gc)) {
		gaim_ssl_input_add(gsc, irc_input_cb_ssl, gc);
	}
}
Example #11
0
static void irc_login_cb_ssl(gpointer data, PurpleSslConnection *gsc,
	PurpleInputCondition cond)
{
	PurpleConnection *gc = data;

	if (do_login(gc)) {
		purple_ssl_input_add(gsc, irc_input_cb_ssl, gc);
	}
}
Example #12
0
static unsigned int WINAPI worker_func (void *data)
#endif
{
  test_t *lpBenchInfo = (test_t *) data;
#if defined(PTHREADS)
  unsigned long result = TRUE;
#elif defined(WIN32)
  unsigned int result;
#endif
  bench_msg_t msg;

  memset (&msg, '\0', sizeof (msg));
  msg.Type = 'F';
  msg.nConn = lpBenchInfo->tpc._.nConn;
  msg.nThread = lpBenchInfo->tpc._.nThreadNo;

  if (!do_cancel)
    {
      lpBenchInfo->ShowProgress = dummy_ShowProgress;
      lpBenchInfo->StopProgress = dummy_StopProgress;
      lpBenchInfo->SetWorkingItem = dummy_SetWorkingItem;
      lpBenchInfo->SetProgressText = threaded_SendProgress;
      lpBenchInfo->fCancel = threaded_fCancel;

      lpBenchInfo->hstmt = 0;
      lpBenchInfo->hdbc = 0;
      lpBenchInfo->tpc._.nThreads = 1;

      if (do_login (lpBenchInfo))
	{
	  result = FALSE;
	  if (lpBenchInfo->hstmt)
	    switch (lpBenchInfo->TestType)
	      {
	      case TPC_A:
		result = DoThreadsRun (lpBenchInfo);
		break;

	      case TPC_C:
		result = tpcc_run_test (NULL, lpBenchInfo) ? TRUE : FALSE;
		break;
	      }
	  do_logout (lpBenchInfo);
	}
    }

  if (!signal_pipe[1]
      || sizeof (bench_msg_t) != write (signal_pipe[1], &msg,
	  sizeof (bench_msg_t)))
    abort ();

#if defined(PTHREADS)
  return ((void *) result);
#elif defined(WIN32)
  return (result);
#endif
}
Example #13
0
interface::interface(QObject *parent) : QObject(parent)
{
    connect(&connection, SIGNAL(on_start()), this, SLOT(do_login()));
    /* Creating the user interface */
    w_login = new login;
    w_gameplay = new gameplay;
    connect(&connection, SIGNAL(on_login()), w_login, SLOT(do_wait_ready()));
    connect(&connection, SIGNAL(on_ready()), w_login, SLOT(do_wait()));
    w_login->show();
}
Example #14
0
static void login_stage_4(LwqqClient* lc)
{
    if(!lwqq_client_valid(lc)) return;
    /* Third: calculate the md5 */
    char *md5 = lwqq_enc_pwd(lc->password, lc->vc->str, lc->vc->uin);

    /* Last: do real login */
    LwqqAsyncEvent* ev = do_login(lc, md5, NULL);
    s_free(md5);
    lwqq_async_add_event_listener(ev,_C_(p,login_stage_5,ev));

}
Example #15
0
//分析message函数, on_read之后调用
void talk_to_client::do_analyze(const std::string &msg)
{
	if (msg.find(requests.request_register) == 0)do_register(msg);
	else if (msg.find(requests.request_login) == 0)do_login(msg);
	else if (msg.find(requests.request_ping) == 0)do_ping();
	else if (msg.find(requests.request_ask) == 0)do_anw_clients();
	else if (msg.find(requests.request_send_to) == 0)do_sendto(msg);
	else if (msg.find(requests.request_exit) == 0)do_exit();
	else
		std::cout << msg << std::endl;
		return;
}
Example #16
0
int auth_init() {
  printf("|Student Gradebook|\n"
         "1) Login\n"
         "2) Create New Account\n"
         "3) Exit\n");
  char c;
  printf("Enter a command: ");
  while (! ((c = getchar()) >= '1' && c <= '3'));
  while (getchar() != '\n');
  if (c == '3') exit(EXIT_SUCCESS);
  printf("\n");
  if (c == '1') return do_login();
  else if (c == '2') return do_register();
  return 1;
}
Example #17
0
static void irc_login_cb(gpointer data, gint source, const gchar *error_message)
{
	PurpleConnection *gc = data;
	struct irc_conn *irc = gc->proto_data;

	if (source < 0) {
		purple_connection_error(gc, _("Couldn't connect to host"));
		return;
	}

	irc->fd = source;

	if (do_login(gc)) {
		gc->inpa = purple_input_add(irc->fd, PURPLE_INPUT_READ, irc_input_cb, gc);
	}
}
Example #18
0
File: auth.c Project: zixia/wmail
const char *login(const char *uid, const char *pass, int *can_changepwd)
{
const char *driver;
const char *p=do_login(uid, pass, &driver, can_changepwd);
static char *login_id_buf=0;

	if (p)
	{
		if (badstr(uid) || badstr(pass))
			return (NULL);

		if (login_id_buf)	free(login_id_buf);
		if ((login_id_buf=malloc(strlen(p)+strlen(driver)+2)) == 0)
			enomem();
		p=strcat(strcat(strcpy(login_id_buf, p), "."), driver);
	}
	return (p);
}
Example #19
0
static gboolean do_login_noprompt(LinphoneProxyConfig *cfg){
	SipSetupContext *ssctx=linphone_proxy_config_get_sip_setup_context(cfg);
	LinphoneAddress *addr;
	const char *username;
	char *tmp;
	if (ssctx==NULL) return TRUE;/*not ready ?*/
	username=linphone_gtk_get_ui_config ("login_username",NULL);
	if (username==NULL) {
		linphone_gtk_set_ui_config_int("automatic_login",0);
		linphone_gtk_show_login_frame(cfg);
		return FALSE;
	}
	addr=linphone_address_new(linphone_proxy_config_get_identity(cfg));
	linphone_address_set_username(addr,username);
	tmp=linphone_address_as_string (addr);
	do_login(ssctx,tmp,NULL);
	linphone_address_destroy(addr);
	return FALSE;
}
Example #20
0
int do_client(int sockfd,sqlite3 *pdb)
{
	MSG msg;
	char *p_username,*p_password;

	while(1)
	{
		recv(sockfd,&msg,sizeof(msg),0);

		switch(msg.type)
		{
		case REGISTER:
			p_password = strdup(msg.password);
			p_username = strdup(msg.username);
			
			do_register(sockfd,pdb,p_username,p_password);	
			
			free(p_username);
			free(p_password);
			break;
		
		case LOGIN:
			p_password = strdup(msg.password);
			p_username = strdup(msg.username);
			
			do_login(sockfd,pdb,p_username,p_password);

			free(p_username);
			free(p_password);
			break;

		case WORD:
			do_word(sockfd,pdb,msg.mtext);
			break;

		defalut:
			exit(EXIT_SUCCESS);
		}	
	}

	return 0;
}
Example #21
0
File: irc.c Project: dylex/pidgin
static void irc_login_cb(gpointer data, gint source, const gchar *error_message)
{
	PurpleConnection *gc = data;
	struct irc_conn *irc = gc->proto_data;

	if (source < 0) {
		gchar *tmp = g_strdup_printf(_("Unable to connect: %s"),
			error_message);
		purple_connection_error_reason (gc,
			PURPLE_CONNECTION_ERROR_NETWORK_ERROR, tmp);
		g_free(tmp);
		return;
	}

	irc->fd = source;

	if (do_login(gc)) {
		gc->inpa = purple_input_add(irc->fd, PURPLE_INPUT_READ, irc_input_cb, gc);
	}
}
Example #22
0
	st NetUtil::login(const char* host, const char* user, const char* pwd)
	{
		cJSON* root = cJSON_CreateObject();
		cJSON_AddItemToObject(root, "username", cJSON_CreateString(user));
		cJSON_AddItemToObject(root, "password", cJSON_CreateString(pwd));
		char* str = cJSON_PrintUnformatted(root);

		cl::StringUtil::copy(g_host, 256, host);

		cJSON* ret = do_login("/v2/logon", str);

		cJSON_Delete(root);
		free(str);

		if(ret == NULL)	return FALSE;

		cJSON* tokenItem = cJSON_GetObjectItem(ret, "token");
		cl::StringUtil::copy(g_token, 64, tokenItem->valuestring);
		cJSON_Delete(ret);
		return TRUE;
	}
Example #23
0
/*
 * If a user account exists which is associated with the Claimed ID, log it in and return zero.
 * Otherwise it returns nonzero.
 */
int login_via_openid(StrBuf *claimed_id)
{
	struct cdbdata *cdboi;
	long usernum = 0;

	cdboi = cdb_fetch(CDB_OPENID, ChrPtr(claimed_id), StrLength(claimed_id));
	if (cdboi == NULL) {
		return(-1);
	}

	memcpy(&usernum, cdboi->ptr, sizeof(long));
	cdb_free(cdboi);

	if (!CtdlGetUserByNumber(&CC->user, usernum)) {
		/* Now become the user we just created */
		safestrncpy(CC->curr_user, CC->user.fullname, sizeof CC->curr_user);
		do_login();
		return(0);
	}
	else {
		memset(&CC->user, 0, sizeof(struct ctdluser));
		return(-1);
	}
}
void do_stuff(int arg_sock) {
    // rsp -- 0x990 bytes for locals -- rbp
    int sock = arg_sock; // -0x984(rbp)
    int i; // -0x978(rbp)
    int len; // -0x974(rbp)
    char* p1, p2 // -0x970(rbp), -0x968(rbp)
    // -0x960(rbp), 1224 bytes total
    struct {
        int sock; // -0x960(rbp)
        char* something1; // -0x950(rbp)
        char* something2; // -0x948(rbp)
        char* username; // offset 0x20, -0x940(rbp)
        char* password; // offset 0x28
        char dir[1024]; // offset 0xc0
    } state;
    int logged_in; // -0x4a0(rbp), overlap with dir?
    char buf[0x80]; // -0x490(rbp)
    char directory[1024]; // -0x410(rbp)
    alarm(65);
    srand(time(0));
    memset(state, 0, 1224);
    state->sock = sock;
    if(getcwd(directory, 0x400)) {
        strcpy(state->dir, directory);
    } else {
        error("CWD");
    }
    send_(sock, "Welcome to FTP server\n");
    for(;; free(p2)) {
        memset(buf, 0, 0x80);
        p1 = p2 = recv_(sock);
        len = strlen(p1);
        for(i=0; (*p1 != ' ') && (i < len-1); i++) {
            buf[i] = *p1++;
        }
        if(*p1 == ' ') { p1++; }
        p1[strlen(p1)-1] = 0;
        if(!strncasecmp("USER", buf, 4)) {
            if(logged_in) {
                send_(sock, "Cannot change user  ");
                send_(sock, state->username);
                send_(sock, "\n");
                continue;
            } else {
                state->username = p1;
                state->something2 = p1;
                do_login(state);
                continue;
            }
        }
        if(!strncasecmp("PASS", buf, 4)) {
            send_(sock, "send user first.\n");
            continue;
        }
        if(!strncasecmp("HELP", buf, 4)) {
            send_(sock, "USER PASS PASV PORT\nNOOP REIN LIST SYST SIZE\nRETR STOR PWD CWD\n");
            continue;
        }
        if(!logged_in) {
            send_(sock, "login with USER first.\n");
            continue;
        }
        if(!strncasecmp("REIN", buf, 4)) {
            logged_in = 0;
            continue;
        }
        if(!strncasecmp("PORT", buf, 4)) {
            do_port(...);
        }
        if(!strncasecmp("PASV", buf, 4)) {
            do_pasv(...);
        }
        if(!strncasecmp("STOR", buf, 4)) {
            do_stor(...);
        }
        if(!strncasecmp("RETR", buf, 4)) {
            do_retr(...);
        }
        if(!strncasecmp("QUIT", buf, 4)) {
            do_quit(...);
        }
        if(!strncasecmp("LIST", buf, 4)) {
            do_list(...);
        }
        if(!strncasecmp("SYST", buf, 4)) {
            do_syst(...);
        }
        if(!strncasecmp("NOOP", buf, 4)) {
            do_noop(...);
        }
        if(!strncasecmp("PWD", buf, 4)) {
            do_pwd(...);
        }
        if(!strncasecmp("CWD", buf, 4)) {
            do_cwd(...);
        }
        if(!strncasecmp("RDF", buf, 4)) {
            state->something1 = p1;
            state->something2 = buf;
            do_rdf(state);
        }
    }
}
Example #25
0
void
bbsstart(void)
{
unsigned char stdinbuf[STDINBUFSIZ];
long    uglastmsg;	/* last msg seen in prev. rm */
long    ugtemp = TWILIGHTZONE;
short   prev_rm = TWILIGHTZONE;
char    cit_cmd;
char    bueller = 0;

  room = &sroom;
  setvbuf(stdin, (char *)stdinbuf, _IOFBF, STDINBUFSIZ);
  setvbuf(stdout, (char *)stdoutbuf, _IOFBF, STDOUTBUFSIZ);

  init_system();
  /* Putty.exe is obstinate */
  /* IAC WILL SGA */
  putchar(IAC); putchar(WILL); putchar(TELOPT_SGA);
  /* magic to set telnet into character mode */
  /* IAC  DO LINEMODE, IAC WILL ECHO */
  write(1,"\377\375\042\377\373\001",6);
  /* let window sizes come through */
  /* IAC DO NAWS */
  write(1,"\377\375\037",3);

  reserve_slot();
  do_login();

  colorize("\n@G");

  curr = LOBBY_RM_NBR;
  inituser();

  openroom();
  storeug(&uglastmsg, &ugtemp);

  /* The first thing we do is make the user read the lobby */
  cit_cmd = 'N';

  readroom(cit_cmd);


  for(;;)
  {
    /*
     * check if user has been kicked out of this room while they were in it,
     * or if room was deleted
     */
    if (ouruser->generation[curr] < 0 || !msg->room[curr].flags)
    {
      curr = LOBBY_RM_NBR;
      openroom();
      storeug(&uglastmsg, &ugtemp);
    }

    if (cit_cmd)
      colorize("\n@Y%s>@G ", msg->room[curr].name);

    checkx(0);

    if (ouruser->f_prog)
      cit_cmd = get_single_quiet("ABCD\005eEFGHIJKLNOpPqQRsSTUvVwWxX\027\030yYZ /?#%@-\"");
    else if (ouruser->f_aide)
      cit_cmd = get_single_quiet("ABC\005eEFGHIJKLNOpPqQRsSTUvVwWxX\027\030yYZ /?#%@-\"");
    else if (ouruser->usernum == msg->room[curr].roomaide && !ouruser->f_twit)
      cit_cmd = get_single_quiet("ABC\005eEFGHIJKLNOpPqQRsSTUwWxX\027\030yYZ /?#%-\"");
    else
      cit_cmd = get_single_quiet("BCeEFGHIJKLNOpPqQRsSTUwWxX\027\030yYZ /?#%-\"");

    if (cit_cmd == SP)
      cit_cmd = 'N';

    if (guest && !strchr("BFGHIJKLNOpPRsSTUwWyY/?#-", cit_cmd))
    {
      colorize("\n\n@RThe Guest user cannot do that.@G\n");
      continue;
    }

    if (curr == LOBBY_RM_NBR && strchr("DGNqsTU\027X\030Z% ", cit_cmd))
    {
      if (bueller++ >= 12)
        flush_input(bueller / 25);
      if (bueller >= 100)
      {
        colorize("@R\n\n\nGo away until you have something useful to do!\n\n\n@G");
        my_exit(10);
      }
    }
    else
      bueller = 0;

    if (strchr("AC\005eEHJpPQSvVx\030yYZ#-\"", cit_cmd))
      mybtmp->nox = 1;

    switch (cit_cmd)
    {

      case 'A':
	printf("Sysop commands (%s)\n", msg->room[curr].name);
	aide_menu();
	break;

      case 'R':
      case 'B':
	cit_cmd = 'R';
	printf("Read Reverse\n");
	readroom(cit_cmd);
	break;

      case 'C':
        printf("Change config\n");
        change_setup(NULL);
	break;

      case 'D':
	printf("Debug\n");
	debug();
	break;

      case '\005':
	if (ouruser->usernum == msg->room[curr].roomaide)
	{
	  printf("Enter Forum Moderator message\n\nAre you sure you want to enter a message as Forum Moderator? (Y/N) -> ");
	  if (!yesno(-1))
	    break;
	  sysopflags |= SYSOP_FROM_FM;
	}
	else if (ouruser->f_admin)
        {
	  printf("Enter Sysop message\n\nNOTE: You are entering this message as Sysop!\n\n");
	  sysopflags |= SYSOP_FROM_SYSOP;
        }
	/* FALL THRU */

      case 'e':
      case 'E':
	{
	  char work[20];

	  if (ouruser->f_newbie && (curr == MAIL_RM_NBR || curr > 4))
	    help("newuseraccess", NO);
	  else
	  {
	    if (cit_cmd == 'E')
	      printf("Upload message\n\n");
	    else if (cit_cmd == 'e')
	      printf("Enter message\n\n");
	    *work = 0;
	    (void)entermessage(curr, work, cit_cmd == 'e' ? 0 : 2);
	    sysopflags &= ~(SYSOP_FROM_SYSOP | SYSOP_FROM_FM);
	  }
	}
	break;

      case 'F':
	printf("Read Forward\n");
	readroom(cit_cmd);
	break;

      case 'G':
	printf("Goto ");
	updatels(&prev_rm);
	/* find next room with unread msgs and open it */
	nextroom();
	openroom();
	storeug(&uglastmsg, &ugtemp);
	break;

      case 'H':
	printf("Help!\n");
	help("topics", YES);
	break;

      case 'q':
      case 'Q':
        get_syself_help(cit_cmd);
        break;

      case 'I':
	printf("Forum Info\n");
	readdesc();
	break;

      case 'J':
	{
	  int old_rm;

	  printf("Jump to ");
	  old_rm = curr;
	  if (findroom() == YES)
	  {
	    int save_rm;
  
            mybtmp->nox = 0;
	    save_rm = curr;
	    curr = old_rm;
	    updatels(&prev_rm);
	    curr = save_rm;
	    openroom();
	    storeug(&uglastmsg, &ugtemp);
	  }
	}
	break;

      case 'K':
	printf("Known forums and zapped list\n");
	knrooms();
	break;

      case 'L':
        dologout();
	break;

      case 'N':
	if (ouruser->lastseen[curr] < room->num[MSGSPERRM - 1])
	{
	  printf("Read New\n");
	  readroom(cit_cmd);
	}
	else
	{			/* No new notes so just do a Goto now */
	  printf("Goto ");
	  updatels(&prev_rm);
	  /* find next room with unread msgs and open it */
	  nextroom();
	  openroom();
	  storeug(&uglastmsg, &ugtemp);
	}
	break;

      case 'O':
	printf("Read Old messages reverse\n");
	readroom(cit_cmd);
	break;

      case 'p':
      case 'P':
	profile_user(cit_cmd == 'P');
	break;

      case 's':		/* don't update lastseen, you're skipping the room */
	printf("Skip %s\n", msg->room[curr].name);
	skipping[curr >> 3] |= 1 << (curr & 7);
	/* after skipping a room, find the next unread room (not a goto) */
	nextroom();
	openroom();
	ugtemp = ouruser->lastseen[curr];
	break;

      case 'S':
	{
	  int old_rm;

	  printf("Skip %s to ", msg->room[curr].name);
	  old_rm = curr;
	  if (findroom() == YES)
	  {
            mybtmp->nox = 0;
	    skipping[old_rm >> 3] |= 1 << (old_rm & 7);
	    openroom();
	    ugtemp = ouruser->lastseen[curr];
	  }
	}
	break;

      case 'T':
	printdate("Time\n\n%s");
	break;

      case 'U':
	printf("Ungoto\n");
	ungoto(prev_rm, &uglastmsg, &ugtemp);
	break;

      case 'v':
	cit_cmd = 0;
	break;

      case 'V':
	printf("Validate new users\n");
	validate_users(1);
	break;

      case '\027':
	if (client)
	  clientwho();
	else
	  cit_cmd = 0;
	break;

      case 'w':		/* Short form of who's online */
	show_online(3);
	break;

      case 'W':		/* Who's online */
	show_online(0);
	break;

      case 'x':
	express();
	break;

      case 'X':
	change_express(1);
	break;

      case CTRL_X:
	old_express();
	break;

      case 'y':
      case 'Y':
        if (!wanttoyell(cit_cmd))
          break;
	(void)entermessage(-1, "", cit_cmd == 'y' ? 0 : 2);
	break;

      case 'Z':
	printf("Zap forum\n");
	if (forgetroom())
        {
	  nextroom();
	  openroom();
	  ugtemp = ouruser->lastseen[curr];
        }
	break;

      case '?':
      case '/':
	if (guest)
	  help("guestforumlevel", NO);
	else
	  help("doccmd", NO);
	break;

      case '#':
	readroom(cit_cmd);
	break;

      case '%':
	if (ouruser->f_elf && !ouruser->f_restricted && !ouruser->f_twit)
          if (mybtmp->xstat && !mybtmp->elf)
            printf("\n\nYou can't enable yourself as a guide while your X's are disabled.\n");
	  else if ((mybtmp->elf = !mybtmp->elf))
	    printf("\n\nYou are now marked as being available to help others.\n");
	  else
	    printf("\n\nYou are no longer marked as being available to help others.\n");
	else
	  cit_cmd = 0;
	break;

      case '-':
	readroom(cit_cmd);
	break;

      case '@':
	printf("Sysops, programmers, and forum moderators\n");
	more(AIDELIST, 0);
	break;

      case '"':
	{
	  char work[20];

	  printf("Quote X messages to Sysop\n");
          *work = 0;
          (void)entermessage(-1, work, -1);
	}
	break;

      default:
	break;
    }				/* switch */

  }
Example #26
0
int
main(int argc, char **argv)
{
    int max_tries = 5;
    int try;

    char username[32];
    int optidx = 0;

    int ask = 1;
    struct sigaction sa;

    setprogname(argv[0]);

#ifdef KRB5
    {
	krb5_error_code ret;

	ret = krb5_init_context(&context);
	if (ret)
	    errx (1, "krb5_init_context failed: %d", ret);
    }
#endif

    openlog("login", LOG_ODELAY | LOG_PID, LOG_AUTH);

    if (getarg (args, sizeof(args) / sizeof(args[0]), argc, argv,
		&optidx))
	usage (1);
    argc -= optidx;
    argv += optidx;

    if(help_flag)
	usage(0);
    if (version_flag) {
	print_version (NULL);
	return 0;
    }
	
    if (geteuid() != 0)
	errx(1, "only root may use login, use su");

    /* Default tty settings. */
    stty_default();

    if(p_flag)
	copy_env();
    else {
	/* this set of variables is always preserved by BSD login */
	if(getenv("TERM"))
	    add_env("TERM", getenv("TERM"));
	if(getenv("TZ"))
	    add_env("TZ", getenv("TZ"));
    }

    if(*argv){
	if(strchr(*argv, '=') == NULL && strcmp(*argv, "-") != 0){
	    strlcpy (username, *argv, sizeof(username));
	    ask = 0;
	}
    }

#if defined(DCE) && defined(AIX)
    esetenv("AUTHSTATE", "DCE", 1);
#endif

    /* XXX should we care about environment on the command line? */

    memset(&sa, 0, sizeof(sa));
    sa.sa_handler = sig_handler;
    sigemptyset(&sa.sa_mask);
    sa.sa_flags = 0;
    sigaction(SIGALRM, &sa, NULL);
    alarm(login_timeout);

    for(try = 0; try < max_tries; try++){
	struct passwd *pwd;
	char password[128];
	int ret;
	char ttname[32];
	char *tty, *ttyn;
        char prompt[128];
#ifdef OTP
        char otp_str[256];
#endif

	if(ask){
	    f_flag = 0;
#if 0
	    r_flag = 0;
#endif
	    ret = read_string("login: "******"");
        }
        else
#endif

        {
#ifdef OTP
           if(auth_level && strcmp(auth_level, "otp") == 0 &&
                 otp_challenge(&otp_ctx, username,
                            otp_str, sizeof(otp_str)) == 0)
                 snprintf (prompt, sizeof(prompt), "%s's %s Password: "******"Password: "******"Login incorrect.\n");
	    ask = 1;
	    continue;
	}

	if(f_flag == 0 && check_password(pwd, password)){
	    fprintf(stderr, "Login incorrect.\n");
            ask = 1;
	    continue;
	}
	ttyn = ttyname(STDIN_FILENO);
	if(ttyn == NULL){
	    snprintf(ttname, sizeof(ttname), "%s??", _PATH_TTY);
	    ttyn = ttname;
	}
	if (strncmp (ttyn, _PATH_DEV, strlen(_PATH_DEV)) == 0)
	    tty = ttyn + strlen(_PATH_DEV);
	else
	    tty = ttyn;

	if (login_access (pwd, remote_host ? remote_host : tty) == 0) {
	    fprintf(stderr, "Permission denied\n");
	    if (remote_host)
		syslog(LOG_NOTICE, "%s LOGIN REFUSED FROM %s",
		       pwd->pw_name, remote_host);
	    else
		syslog(LOG_NOTICE, "%s LOGIN REFUSED ON %s",
		       pwd->pw_name, tty);
	    exit (1);
	} else {
	    if (remote_host)
		syslog(LOG_NOTICE, "%s LOGIN ACCEPTED FROM %s ppid=%d",
		       pwd->pw_name, remote_host, (int) getppid());
	    else
		syslog(LOG_NOTICE, "%s LOGIN ACCEPTED ON %s ppid=%d",
		       pwd->pw_name, tty, (int) getppid());
	}
        alarm(0);
	do_login(pwd, tty, ttyn);
    }
    exit(1);
}
Example #27
0
static void login_state_machine(gpointer data)
{
    QQLoginPanel *panel = (QQLoginPanel*)data;
    while(TRUE){
        switch(state)
        {
            case LOGIN_SM_CHECKVC:
                if(qq_check_verifycode(info, panel -> uin, NULL) != 0){
                    state = LOGIN_SM_ERR;
                    break;
                }
                state = LOGIN_SM_LOGIN;
                if(info -> need_vcimage){
                    gqq_mainloop_attach(&gtkloop, read_verifycode, 1, panel);
                    // Quit the state machine.
                    // The state machine will restart in the read verify code
                    // dialog.
                    return;
                }
            case LOGIN_SM_LOGIN:
                if(do_login(panel) != 0){
                    state = LOGIN_SM_ERR;
                }else{
                    state = LOGIN_SM_GET_DATA;
                }
                break;
            case LOGIN_SM_GET_DATA:
                //Read cached data from db
                gqq_config_load(cfg, panel -> uin);
                qq_get_buddies_and_categories(info, NULL);
                qq_get_groups(info, NULL);
                state = LOGIN_SM_DONE;
                break;
            case LOGIN_SM_DONE:
                g_debug("Login done. show main panel!(%s, %d)", __FILE__, __LINE__);
                //
                // Start poll message
                //
                qq_start_poll(info, qq_poll_message_callback, &gtkloop, NULL);
                // update main panel
                gqq_mainloop_attach(&gtkloop, qq_mainpanel_update
                                    , 1, QQ_MAINWINDOW(panel -> container) 
                                    -> main_panel);
                // show main panel
                gqq_mainloop_attach(&gtkloop, qq_mainwindow_show_mainpanel
                                    , 1, panel -> container);
                update_details(info, panel);

                return;
            case LOGIN_SM_ERR:
                g_debug("Login error... (%s, %d)", __FILE__, __LINE__);
                gqq_mainloop_attach(&gtkloop, qq_mainwindow_show_loginpanel
                                    , 1, panel -> container);
                g_debug("Show login panel.(%s, %d)", __FILE__, __LINE__);
                return;
            default:
                break;
        }
    }
    return;
}
Example #28
0
int
do_threads_run (int nConnCount, OList * tests, int nMinutes, char *szTitle)
{
  test_t *lpBenchInfo;
  test_t **data;
  int *n_threads, nThreads = 0, nThreadsWork;
  char szTemp[2048];
  long nRuns = 0;
  FILE *fi;
  THREAD_T **workers;
  bench_msg_t msg;
  time_t start_time, now_time;
  long time_remaining;
#ifdef WIN32
  DWORD thrid;
#endif
  int thr, conn;
  int rc = 0;
  void (*old_pane_log) (const char *format, ...) = pane_log;
  OList *iter;
  BOOL wasError = FALSE;

  nProgressIncrement = bench_get_long_pref (A_REFRESH_RATE);
  if (!nConnCount)
    return 0;
  if (pipe (signal_pipe))
    {
      old_pane_log ("Can't open the pipe");

      return rc;
    }
  fi = fdopen (signal_pipe[0], "rb");

  lpBenchInfo = (test_t *) tests->data;
  do_cancel = FALSE;
  time (&start_time);

  sprintf (szTemp, "Running for %d minutes", nMinutes);
  lpBenchInfo->ShowProgress (NULL, szTitle, FALSE, nMinutes * 60);
  lpBenchInfo->SetWorkingItem (szTemp);

  data = (test_t **) calloc (nConnCount, sizeof (test_t *));
  workers = (THREAD_T **) calloc (nConnCount, sizeof (THREAD_T *));
  n_threads = (int *) calloc (nConnCount, sizeof (int));
  pane_log = dummy_pane_log;

  for (iter = tests, conn = 0; iter; iter = o_list_next (iter), conn++)
    {
      test_t *test = (test_t *) iter->data;
      test->tpc._.nMinutes = nMinutes;
      if (do_login (test))
	{
	  get_dsn_data (test);
	  if (test->hdbc && IS_A (*test))
	    {
	      fExecuteSql (test, (SQLCHAR *) "delete from HISTORY");
	      SQLTransact (SQL_NULL_HENV, test->hdbc, SQL_COMMIT);
	    }
	  do_logout (test);

	  n_threads[conn] = test->tpc._.nThreads ? test->tpc._.nThreads : 1;
	  data[conn] = (test_t *) calloc (n_threads[conn], sizeof (test_t));
	  workers[conn] =
	      (THREAD_T *) calloc (n_threads[conn], sizeof (THREAD_T));
	  nThreads += n_threads[conn];
	  memset (test->szSQLError, 0, sizeof (test->szSQLError));
	  memset (test->szSQLState, 0, sizeof (test->szSQLState));
	  for (thr = 0; thr < n_threads[conn]; thr++)
	    {
	      memcpy (&(data[conn][thr]), test, sizeof (test_t));
	      data[conn][thr].test = test;
	      data[conn][thr].tpc._.nThreadNo = thr;
	      data[conn][thr].tpc._.nConn = conn;
	      START_THREAD (workers[conn][thr], worker_func, data[conn][thr]);
	    }
	}
    }

  nThreadsWork = nThreads;
  while (nThreadsWork && fread (&msg, sizeof (bench_msg_t), 1, fi))
    {
      if (lpBenchInfo->fCancel ())
	do_cancel = TRUE;
      switch (msg.Type)
	{
	case 'F':
	  if (gui.do_MarkFinished)
	    gui.do_MarkFinished (msg.nConn, msg.nThread);
	  sprintf (szTemp, "%s %3d threads running", szTitle, --nThreadsWork);
	  lpBenchInfo->SetWorkingItem (szTemp);
	  if (data[msg.nConn][msg.nThread].szSQLError[0])
	    {
	      old_pane_log ("*** Error : Thread %3d in dsn %s : [%s] %s\r\n",
		  msg.nThread + 1,
		  data[msg.nConn][msg.nThread].szLoginDSN,
		  data[msg.nConn][msg.nThread].szSQLState,
		  data[msg.nConn][msg.nThread].szSQLError);
	      strcpy ((char *) data[msg.nConn][msg.nThread].test->szSQLState,
		  (char *) data[msg.nConn][msg.nThread].szSQLState);
	      strcpy ((char *) data[msg.nConn][msg.nThread].test->szSQLError,
		  (char *) data[msg.nConn][msg.nThread].szSQLError);
	      wasError = TRUE;
	    }
	  break;

	case 'R':
	  time (&now_time);
	  time_remaining = nMinutes * 60 - (now_time - start_time);
	  time_remaining = (time_remaining > 0 ? time_remaining : 0);
	  sprintf (szTemp, "%10ld secs remaining", time_remaining);
	  nRuns += 1;
	  lpBenchInfo->SetProgressText (szTemp, msg.nConn, msg.nThread,
	      msg.percent, msg.nTrnPerCall, time_remaining,
	      msg.tpca_dDiffSum);
	  break;
	}
    }

  fclose (fi);
  close (signal_pipe[1]);
  close (signal_pipe[0]);
  memset (signal_pipe, 0, sizeof (signal_pipe));
  pane_log = old_pane_log;
  lpBenchInfo->StopProgress ();

  rc = ThreadedCalcStats (tests, workers, data, nConnCount, n_threads);

  for (iter = tests, conn = 0; iter; iter = o_list_next (iter), conn++)
    {
      XFREE (workers[conn]);
      XFREE (data[conn]);
    }

  XFREE (workers);
  XFREE (data);
  XFREE (n_threads);

  if (do_cancel || wasError)
    rc = 0;
  return rc;
}
Example #29
0
static void
make_sub_controls (TPCATableProps * tableloader)
{
  GtkWidget *CreateTablesFrame, *LoadTablesFrame, *IndexesFrame,
      *RecordsToInsertFrame;
  GtkWidget *main_hbox, *first_vbox, *second_vbox, *remotes = NULL;
  GtkWidget *helper, *label;
  GList *list = NULL;
  int i, ofs;

  do_login (tableloader->ptest);
  tableloader->pDSN = (ServerDSN *) ServerDSN_new (tableloader->ptest);
  if (tableloader->ptest->tpc.a.uwDrvIdx == -1)
    {
      tableloader->ptest->tpc.a.uwDrvIdx =
	  getDriverTypeIndex (tableloader->ptest->szDBMS);
      tableloader->ptest->is_dirty = 1;
    }
  gtk_signal_connect (GTK_OBJECT (tableloader->pDSN), "dsns_changed",
      GTK_SIGNAL_FUNC (set_dsn_combos), GTK_OBJECT (tableloader));

  gtk_container_border_width (GTK_CONTAINER (&tableloader->parent), 10);
  main_hbox = gtk_hbox_new (FALSE, 10);
  gtk_container_add (GTK_CONTAINER (tableloader), main_hbox);

  first_vbox = gtk_vbox_new (FALSE, 10);
  gtk_box_pack_start (GTK_BOX (main_hbox), first_vbox, TRUE, TRUE, 0);

  CreateTablesFrame = gtk_frame_new ("Create Tables");
  gtk_box_pack_start (GTK_BOX (first_vbox), CreateTablesFrame, TRUE, TRUE, 0);

  helper =
      gtk_table_new (tableloader->pDSN->isVirtuoso ? 5 : 4,
      tableloader->pDSN->isVirtuoso ? 3 : 1, TRUE);
  gtk_container_border_width (GTK_CONTAINER (helper), 5);
  gtk_container_add (GTK_CONTAINER (CreateTablesFrame), helper);

  if (tableloader->pDSN->isVirtuoso)
    {
      GtkWidget *dsn_btn = gtk_button_new_with_label ("DSNs ...");
      gtk_signal_connect (GTK_OBJECT (dsn_btn), "clicked",
	  GTK_SIGNAL_FUNC (show_server_data_sources_dialog), tableloader);
      gtk_table_attach_defaults (GTK_TABLE (helper), dsn_btn, 2, 3, 0, 1);
      gtk_widget_set_sensitive (dsn_btn, FALSE);

      remotes = gtk_check_button_new_with_label ("Remote tables");
      gtk_table_attach_defaults (GTK_TABLE (helper), remotes, 1, 2, 0, 1);

      gtk_signal_connect (GTK_OBJECT (remotes), "clicked",
	  GTK_SIGNAL_FUNC (enable_widget_as), dsn_btn);
      ofs = 1;
    }
  else
    ofs = 0;

  tableloader->create_branch = gtk_check_button_new_with_label ("Branch");
  gtk_table_attach_defaults (GTK_TABLE (helper), tableloader->create_branch,
      0, 1, ofs, ofs + 1);

  tableloader->create_teller = gtk_check_button_new_with_label ("Teller");
  gtk_table_attach_defaults (GTK_TABLE (helper), tableloader->create_teller,
      0, 1, ofs + 1, ofs + 2);

  tableloader->create_account = gtk_check_button_new_with_label ("Account");
  gtk_table_attach_defaults (GTK_TABLE (helper), tableloader->create_account,
      0, 1, ofs + 2, ofs + 3);

  tableloader->create_history = gtk_check_button_new_with_label ("History");
  gtk_table_attach_defaults (GTK_TABLE (helper), tableloader->create_history,
      0, 1, ofs + 3, ofs + 4);

  tableloader->branch_dsn = gtk_combo_new ();
  gtk_combo_set_value_in_list (GTK_COMBO (tableloader->branch_dsn), TRUE,
      TRUE);
  gtk_entry_set_text (GTK_ENTRY (GTK_COMBO (tableloader->branch_dsn)->entry),
      "");
  if (tableloader->pDSN->isVirtuoso)
    {
      if (tableloader->pDSN->dsn_info.dsns)
	gtk_combo_set_popdown_strings (GTK_COMBO (tableloader->branch_dsn),
	    tableloader->pDSN->dsn_info.dsns);
      gtk_table_attach_defaults (GTK_TABLE (helper), tableloader->branch_dsn,
	  1, 3, ofs + 0, ofs + 1);
      gtk_widget_set_sensitive (tableloader->branch_dsn, FALSE);
      gtk_signal_connect (GTK_OBJECT (remotes), "clicked",
	  GTK_SIGNAL_FUNC (enable_widget_as), tableloader->branch_dsn);
    }

  tableloader->teller_dsn = gtk_combo_new ();
  gtk_combo_set_value_in_list (GTK_COMBO (tableloader->teller_dsn), TRUE,
      TRUE);
  gtk_entry_set_text (GTK_ENTRY (GTK_COMBO (tableloader->teller_dsn)->entry),
      "");
  if (tableloader->pDSN->isVirtuoso)
    {
      if (tableloader->pDSN->dsn_info.dsns)
	gtk_combo_set_popdown_strings (GTK_COMBO (tableloader->teller_dsn),
	    tableloader->pDSN->dsn_info.dsns);
      gtk_table_attach_defaults (GTK_TABLE (helper), tableloader->teller_dsn,
	  1, 3, ofs + 1, ofs + 2);
      gtk_widget_set_sensitive (tableloader->teller_dsn, FALSE);
      gtk_signal_connect (GTK_OBJECT (remotes), "clicked",
	  GTK_SIGNAL_FUNC (enable_widget_as), tableloader->teller_dsn);
    }

  tableloader->account_dsn = gtk_combo_new ();
  gtk_combo_set_value_in_list (GTK_COMBO (tableloader->account_dsn), TRUE,
      TRUE);
  gtk_entry_set_text (GTK_ENTRY (GTK_COMBO (tableloader->account_dsn)->entry),
      "");
  if (tableloader->pDSN->isVirtuoso)
    {
      if (tableloader->pDSN->dsn_info.dsns)
	gtk_combo_set_popdown_strings (GTK_COMBO (tableloader->account_dsn),
	    tableloader->pDSN->dsn_info.dsns);
      gtk_table_attach_defaults (GTK_TABLE (helper), tableloader->account_dsn,
	  1, 3, ofs + 2, ofs + 3);
      gtk_widget_set_sensitive (tableloader->account_dsn, FALSE);
      gtk_signal_connect (GTK_OBJECT (remotes), "clicked",
	  GTK_SIGNAL_FUNC (enable_widget_as), tableloader->account_dsn);
    }

  tableloader->history_dsn = gtk_combo_new ();
  gtk_combo_set_value_in_list (GTK_COMBO (tableloader->history_dsn), TRUE,
      TRUE);
  gtk_entry_set_text (GTK_ENTRY (GTK_COMBO (tableloader->history_dsn)->entry),
      "");
  if (tableloader->pDSN->isVirtuoso)
    {
      if (tableloader->pDSN->dsn_info.dsns)
	gtk_combo_set_popdown_strings (GTK_COMBO (tableloader->history_dsn),
	    tableloader->pDSN->dsn_info.dsns);
      gtk_table_attach_defaults (GTK_TABLE (helper), tableloader->history_dsn,
	  1, 3, ofs + 3, ofs + 4);
      gtk_widget_set_sensitive (tableloader->history_dsn, FALSE);
      gtk_signal_connect (GTK_OBJECT (remotes), "clicked",
	  GTK_SIGNAL_FUNC (enable_widget_as), tableloader->history_dsn);
    }

  LoadTablesFrame = gtk_frame_new ("Load Tables");
  gtk_container_border_width (GTK_CONTAINER (LoadTablesFrame), 5);
  gtk_box_pack_start (GTK_BOX (first_vbox), LoadTablesFrame, TRUE, TRUE, 0);

  helper = gtk_table_new (3, 1, TRUE);
  gtk_container_border_width (GTK_CONTAINER (helper), 5);
  gtk_container_add (GTK_CONTAINER (LoadTablesFrame), helper);

  tableloader->load_branch = gtk_check_button_new_with_label ("Branch");
  gtk_table_attach_defaults (GTK_TABLE (helper), tableloader->load_branch, 0,
      1, 0, 1);

  tableloader->load_teller = gtk_check_button_new_with_label ("Teller");
  gtk_table_attach_defaults (GTK_TABLE (helper), tableloader->load_teller, 0,
      1, 1, 2);

  tableloader->load_account = gtk_check_button_new_with_label ("Account");
  gtk_table_attach_defaults (GTK_TABLE (helper), tableloader->load_account, 0,
      1, 2, 3);

  second_vbox = gtk_vbox_new (FALSE, 10);
  gtk_box_pack_start (GTK_BOX (main_hbox), second_vbox, TRUE, TRUE, 0);

  IndexesFrame = gtk_frame_new ("Indices");
  gtk_container_border_width (GTK_CONTAINER (IndexesFrame), 5);
  gtk_box_pack_start (GTK_BOX (second_vbox), IndexesFrame, TRUE, TRUE, 0);

  helper = gtk_hbox_new (TRUE, 10);
  gtk_container_border_width (GTK_CONTAINER (helper), 5);
  gtk_container_add (GTK_CONTAINER (IndexesFrame), helper);

  tableloader->create_indexes =
      gtk_check_button_new_with_label ("Create Indices");
  gtk_box_pack_start (GTK_BOX (helper), tableloader->create_indexes, TRUE,
      TRUE, 0);

  tableloader->create_procedures =
      gtk_check_button_new_with_label ("Create Procedures");
  gtk_box_pack_start (GTK_BOX (helper), tableloader->create_procedures, TRUE,
      TRUE, 0);

  RecordsToInsertFrame = gtk_frame_new ("Records to Insert");
  gtk_container_border_width (GTK_CONTAINER (RecordsToInsertFrame), 5);
  gtk_box_pack_start (GTK_BOX (second_vbox), RecordsToInsertFrame, TRUE, TRUE,
      0);

  helper = gtk_table_new (3, 2, FALSE);
  gtk_container_border_width (GTK_CONTAINER (helper), 5);
  gtk_container_add (GTK_CONTAINER (RecordsToInsertFrame), helper);

  label = gtk_label_new ("Number of branches");
  gtk_table_attach_defaults (GTK_TABLE (helper), label, 0, 1, 0, 1);

  tableloader->num_branches = gtk_entry_new_with_max_length (10);
  gtk_table_attach_defaults (GTK_TABLE (helper), tableloader->num_branches, 1,
      2, 0, 1);

  label = gtk_label_new ("Number of Tellers");
  gtk_table_attach_defaults (GTK_TABLE (helper), label, 0, 1, 1, 2);

  tableloader->num_tellers = gtk_entry_new_with_max_length (10);
  gtk_table_attach_defaults (GTK_TABLE (helper), tableloader->num_tellers, 1,
      2, 1, 2);

  label = gtk_label_new ("Number of Accounts");
  gtk_table_attach_defaults (GTK_TABLE (helper), label, 0, 1, 2, 3);

  tableloader->num_accounts = gtk_entry_new_with_max_length (10);
  gtk_table_attach_defaults (GTK_TABLE (helper), tableloader->num_accounts, 1,
      2, 2, 3);

  helper = gtk_vbox_new (TRUE, 0);
  gtk_container_border_width (GTK_CONTAINER (helper), 5);
  gtk_box_pack_start (GTK_BOX (second_vbox), helper, TRUE, TRUE, 0);

  label = gtk_label_new ("Schema for DBMS");
  gtk_box_pack_start (GTK_BOX (helper), label, TRUE, TRUE, 0);

  for (i = 0; i < getDriverMapSize (); i++)
    list = g_list_append (list, getDriverDBMSName (i));
  tableloader->dbmstype = gtk_combo_new ();
  gtk_combo_set_popdown_strings (GTK_COMBO (tableloader->dbmstype), list);
  gtk_box_pack_start (GTK_BOX (helper), tableloader->dbmstype, TRUE, TRUE, 0);

  gtk_widget_show_all (main_hbox);
}
Example #30
0
static int
ThreadedCalcStats (OList * tests, THREAD_T ** workers,
    test_t ** data, int nConnCount, int *nThreads)
{
  OList *iter;
  int nConn;
  int rc = 1;
  int rc1 = 1;

  for (iter = tests, nConn = 0; iter && nConn < nConnCount;
      nConn++, iter = o_list_next (iter))
    {
      int nOkA = 0, nOkC = 0;
      int nA = 0, nC = 0;
#if defined(PTHREADS)
      unsigned long result;
#elif defined(WIN32)
      unsigned int result;
#endif
      BOOL runStatus = TRUE;
      int i;
      test_t *test = (test_t *) iter->data;
      if (IS_A (*test))
	{
	  test->tpc.a.nTrnCnt = 0;
	  test->tpc.a.nTrnCnt1Sec = 0;
	  test->tpc.a.nTrnCnt2Sec = 0;
	  test->tpc.a.dDiffSum = -1;
	}
      else
	{
	  test->tpc.c.tpcc_sum = 0;
	  test->tpc.c.run_time = 0;
	  test->tpc.c.nRounds = 0;
	  reset_times (test);
	}

      for (i = 0; i < nThreads[nConn]; i++)
	{
	  GET_EXIT_STATUS (workers[nConn][i], &result);

	  if (!result)
	    runStatus = result;

	  switch (data[nConn][i].TestType)
	    {
	    case TPC_A:
	      nA++;
	      if (!test->is_unsupported && result)
		{
		  nOkA++;
		  test->tpc.a.nTrnCnt += data[nConn][i].tpc.a.nTrnCnt;
		  test->tpc.a.nTrnCnt1Sec += data[nConn][i].tpc.a.nTrnCnt1Sec;
		  test->tpc.a.nTrnCnt2Sec += data[nConn][i].tpc.a.nTrnCnt2Sec;
		  if (data[nConn][i].tpc.a.dDiffSum > test->tpc.a.dDiffSum)
		    test->tpc.a.dDiffSum = data[nConn][i].tpc.a.dDiffSum;
		}
	      break;

	    case TPC_C:
	      nC++;
	      if (result)
		{
		  nOkC++;
		  test->tpc.c.tpcc_sum += data[nConn][i].tpc.c.tpcc_sum;
		  test->tpc.c.run_time += data[nConn][i].tpc.c.run_time;
		  test->tpc.c.nRounds += data[nConn][i].tpc.c.nRounds;

		  /* individual transaction timings */
		  ta_merge (&(test->tpc.c.ten_pack_ta),
		      &(data[nConn][i].tpc.c.ten_pack_ta));
		  ta_merge (&(test->tpc.c.new_order_ta),
		      &(data[nConn][i].tpc.c.new_order_ta));
		  ta_merge (&(test->tpc.c.payment_ta),
		      &(data[nConn][i].tpc.c.payment_ta));
		  ta_merge (&(test->tpc.c.delivery_ta),
		      &(data[nConn][i].tpc.c.delivery_ta));
		  ta_merge (&(test->tpc.c.slevel_ta),
		      &(data[nConn][i].tpc.c.slevel_ta));
		  ta_merge (&(test->tpc.c.ostat_ta),
		      &(data[nConn][i].tpc.c.ostat_ta));
		}
	      break;
	    }
	}

      if (nA || nOkC)
	rc1 = do_login (test);

      if (nA)
	{
	  if (nOkA < nA)
	    pane_log
		("\r\n\r\n%s - %s(%s) - %d out of %d TPC-A Threads ended with errors.\r\n",
		test->szName, test->szDBMS, test->szDriverName, nA - nOkA,
		nA);
	  else
	    pane_log
		("\r\n\r\n%s - %s(%s) - all %d TPC-A Threads completed successfully.\r\n",
		test->szName, test->szDBMS, test->szDriverName, nOkA);

	  if (nOkA == 0 && !test->szSQLState[0] && !test->szSQLError[0])
	    {
	      strcpy ((char *) test->szSQLState, "ERROR");
	      strcpy ((char *) test->szSQLError,
		  "All Threads ended prematurely.");
	    }

	  if (test->hdbc)
	    CalcStats (runStatus, nOkA, test, test->tpc.a.nTrnCnt,
		test->tpc.a.nTrnCnt1Sec,
		test->tpc.a.nTrnCnt2Sec, test->tpc.a.dDiffSum);
	}

      if (nOkC)
	{
	  pane_log
	      ("\r\n\r\n%s - %s(%s) - %d/%d TPC-C Threads ended with no errors.\r\n",
	      test->szName, test->szDBMS, test->szDriverName, nOkC, nC);
	  test->tpc.c.run_time /= nOkC;
	  if (test->hdbc)
	    add_tpcc_result (test);
	}

      if ((nA || nOkC) && rc1)
	do_logout (test);

      if (!(nOkA || nOkC))
	{
	  pane_log
	      ("\r\n\r\n%s - %s(%s) - All Threads ended prematurely.\r\n",
	      test->szName, test->szDBMS, test->szDriverName);
	  rc = 0;
	}
    }
  return rc;
}