static int _unix_verify_shadow(pam_handle_t *pamh, const char *user, unsigned int ctrl) { struct passwd *pwent = NULL; /* Password and shadow password */ struct spwd *spent = NULL; /* file entries for the user */ int daysleft; int retval; retval = get_account_info(pamh, user, &pwent, &spent); if (retval == PAM_USER_UNKNOWN) { return retval; } if (retval == PAM_SUCCESS && spent == NULL) return PAM_SUCCESS; if (retval == PAM_UNIX_RUN_HELPER) { retval = _unix_run_verify_binary(pamh, ctrl, user, &daysleft); if (retval == PAM_AUTH_ERR || retval == PAM_USER_UNKNOWN) return retval; } else if (retval == PAM_SUCCESS) retval = check_shadow_expiry(pamh, spent, &daysleft); if (on(UNIX__IAMROOT, ctrl) || retval == PAM_NEW_AUTHTOK_REQD) return PAM_SUCCESS; return retval; }
static void filter_button_cb (GtkButton *button, FindAccountDialog *facc_dialog) { GtkTreeModel *model; const gchar *filter_text = gtk_entry_get_text (GTK_ENTRY(facc_dialog->filter_text_entry)); model = gtk_tree_view_get_model (GTK_TREE_VIEW(facc_dialog->view)); // Clear the list store gtk_list_store_clear (GTK_LIST_STORE(model)); get_account_info (facc_dialog); // Clear the filter gtk_entry_set_text (GTK_ENTRY(facc_dialog->filter_text_entry), ""); }
PAMH_ARG_DECL(int get_pwd_hash, const char *name, struct passwd **pwd, char **hash) { int retval; struct spwd *spwdent = NULL; retval = get_account_info(PAMH_ARG(name, pwd, &spwdent)); if (retval != PAM_SUCCESS) { return retval; } if (spwdent) *hash = x_strdup(spwdent->sp_pwdp); else *hash = x_strdup((*pwd)->pw_passwd); if (*hash == NULL) return PAM_BUF_ERR; return PAM_SUCCESS; }
//handle the login request from client static void login( csiebox_server* server, int conn_fd, csiebox_protocol_login* login) { int succ = 1; csiebox_client_info* info = (csiebox_client_info*)malloc(sizeof(csiebox_client_info)); memset(info, 0, sizeof(csiebox_client_info)); if (!get_account_info(server, login->message.body.user, &(info->account))) { fprintf(stderr, "cannot find account\n"); succ = 0; } if (succ && memcmp(login->message.body.passwd_hash, info->account.passwd_hash, MD5_DIGEST_LENGTH) != 0) { fprintf(stderr, "passwd miss match\n"); succ = 0; } csiebox_protocol_header header; memset(&header, 0, sizeof(header)); header.res.magic = CSIEBOX_PROTOCOL_MAGIC_RES; header.res.op = CSIEBOX_PROTOCOL_OP_LOGIN; header.res.datalen = 0; if (succ) { if (server->client[conn_fd]) { free(server->client[conn_fd]); } info->conn_fd = conn_fd; server->client[conn_fd] = info; header.res.status = CSIEBOX_PROTOCOL_STATUS_OK; header.res.client_id = info->conn_fd; char* homedir = get_user_homedir(server, info); mkdir(homedir, DIR_S_FLAG); printf("%s\n",homedir); free(homedir); } else { header.res.status = CSIEBOX_PROTOCOL_STATUS_FAIL; free(info); } send_message(conn_fd, &header, sizeof(header)); }
static int _check_expiry(const char *uname) { struct spwd *spent; struct passwd *pwent; int retval; int daysleft; retval = get_account_info(uname, &pwent, &spent); if (retval != PAM_SUCCESS) { helper_log_err(LOG_ALERT, "could not obtain user info (%s)", uname); printf("-1\n"); return retval; } if (spent == NULL) { printf("-1\n"); return retval; } retval = check_shadow_expiry(spent, &daysleft); printf("%d\n", daysleft); return retval; }
static void gnc_find_account_dialog_create (GtkWidget *parent, FindAccountDialog *facc_dialog) { GtkWidget *dialog; GtkBuilder *builder; GtkTreeSelection *selection; GtkTreeViewColumn *tree_column; GtkCellRenderer *cr; ENTER(" "); builder = gtk_builder_new(); gnc_builder_add_from_file (builder, "dialog-find-account.glade", "list-store"); gnc_builder_add_from_file (builder, "dialog-find-account.glade", "Find Account Dialog"); dialog = GTK_WIDGET(gtk_builder_get_object (builder, "Find Account Dialog")); facc_dialog->dialog = dialog; facc_dialog->session = gnc_get_current_session(); /* parent */ if (parent != NULL) { facc_dialog->parent = parent; gtk_window_set_transient_for (GTK_WINDOW(dialog), GTK_WINDOW(parent)); } else facc_dialog->parent = NULL; /* Connect the radio buttons...*/ facc_dialog->radio_root = GTK_WIDGET(gtk_builder_get_object (builder, "radio-root")); facc_dialog->radio_subroot = GTK_WIDGET(gtk_builder_get_object (builder, "radio-subroot")); facc_dialog->filter_text_entry = GTK_WIDGET(gtk_builder_get_object (builder, "filter-text-entry")); facc_dialog->sub_label = GTK_WIDGET(gtk_builder_get_object (builder, "sub-label")); facc_dialog->radio_hbox = GTK_WIDGET(gtk_builder_get_object (builder, "hbox-radio")); facc_dialog->filter_button = GTK_WIDGET(gtk_builder_get_object (builder, "filter-button")); g_signal_connect (facc_dialog->filter_button, "clicked", G_CALLBACK(filter_button_cb), (gpointer)facc_dialog); facc_dialog->view = GTK_WIDGET(gtk_builder_get_object (builder, "treeview")); g_signal_connect (facc_dialog->view, "row-activated", G_CALLBACK(row_double_clicked), (gpointer)facc_dialog); /* Enable alternative line colors */ gtk_tree_view_set_rules_hint (GTK_TREE_VIEW(facc_dialog->view), TRUE); /* default to 'close' button */ gtk_dialog_set_default_response (GTK_DIALOG(dialog), GTK_RESPONSE_CLOSE); selection = gtk_tree_view_get_selection (GTK_TREE_VIEW(facc_dialog->view)); gtk_tree_selection_set_mode (selection, GTK_SELECTION_SINGLE); /* Need to add pixbuf renderers here to get the xalign to work. */ tree_column = gtk_tree_view_column_new(); gtk_tree_view_column_set_title (tree_column, _("Place Holder")); gtk_tree_view_append_column (GTK_TREE_VIEW(facc_dialog->view), tree_column); gtk_tree_view_column_set_alignment (tree_column, 0.5); gtk_tree_view_column_set_expand (tree_column, TRUE); cr = gtk_cell_renderer_pixbuf_new(); gtk_tree_view_column_pack_start (tree_column, cr, TRUE); // connect 'active' and set 'xalign' property of the cell renderer gtk_tree_view_column_set_attributes (tree_column, cr, "stock-id", PLACE_HOLDER, NULL); gtk_cell_renderer_set_alignment (cr, 0.5, 0.5); tree_column = gtk_tree_view_column_new(); gtk_tree_view_column_set_title (tree_column, _("Hidden")); gtk_tree_view_append_column (GTK_TREE_VIEW(facc_dialog->view), tree_column); gtk_tree_view_column_set_alignment (tree_column, 0.5); gtk_tree_view_column_set_expand (tree_column, TRUE); cr = gtk_cell_renderer_pixbuf_new(); gtk_tree_view_column_pack_start (tree_column, cr, TRUE); // connect 'active' and set 'xalign' property of the cell renderer gtk_tree_view_column_set_attributes (tree_column, cr, "stock-id", HIDDEN, NULL); gtk_cell_renderer_set_alignment (cr, 0.5, 0.5); tree_column = gtk_tree_view_column_new(); gtk_tree_view_column_set_title (tree_column, _("Not Used")); gtk_tree_view_append_column (GTK_TREE_VIEW(facc_dialog->view), tree_column); gtk_tree_view_column_set_alignment (tree_column, 0.5); gtk_tree_view_column_set_expand (tree_column, TRUE); cr = gtk_cell_renderer_pixbuf_new(); gtk_tree_view_column_pack_start (tree_column, cr, TRUE); // connect 'active' and set 'xalign' property of the cell renderer gtk_tree_view_column_set_attributes (tree_column, cr, "stock-id", NOT_USED, NULL); gtk_cell_renderer_set_alignment (cr, 0.5, 0.5); tree_column = gtk_tree_view_column_new(); gtk_tree_view_column_set_title (tree_column, _("Balance Zero")); gtk_tree_view_append_column (GTK_TREE_VIEW(facc_dialog->view), tree_column); gtk_tree_view_column_set_alignment (tree_column, 0.5); gtk_tree_view_column_set_expand (tree_column, TRUE); cr = gtk_cell_renderer_pixbuf_new(); gtk_tree_view_column_pack_start (tree_column, cr, TRUE); // connect 'active' and set 'xalign' property of the cell renderer gtk_tree_view_column_set_attributes (tree_column, cr, "stock-id", BAL_ZERO, NULL); gtk_cell_renderer_set_alignment (cr, 0.5, 0.5); gtk_builder_connect_signals_full (builder, gnc_builder_connect_full_func, facc_dialog); g_object_unref (G_OBJECT(builder)); gnc_restore_window_size (GNC_PREFS_GROUP, GTK_WINDOW(facc_dialog->dialog)); if (facc_dialog->account != NULL) { const gchar *sub_label_start = _("Search from "); gchar *sub_full_name = gnc_account_get_full_name (facc_dialog->account); gchar *sub_label; sub_label = g_strconcat (sub_label_start, sub_full_name, NULL); gtk_button_set_label (GTK_BUTTON(facc_dialog->radio_subroot), sub_label); g_free (sub_full_name); g_free (sub_label); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(facc_dialog->radio_subroot), TRUE); gtk_widget_show_all (facc_dialog->radio_hbox); } else gtk_widget_hide_all (facc_dialog->radio_hbox); // Set the filter to Wildcard gtk_entry_set_text (GTK_ENTRY(facc_dialog->filter_text_entry), ""); get_account_info (facc_dialog); LEAVE(" "); }