Esempio n. 1
0
static void edit_ldap_bdn_load_data(
	const gchar *hostName, const gint iPort, const gint tov,
	const gchar* bindDN, const gchar *bindPW, int ssl, int tls )
{
	gchar *sHost;
	gchar *sMsg = NULL;
	gchar sPort[20];
	gboolean flgConn;
	gboolean flgDN;
	GList *baseDN = NULL;

	edit_ldap_bdn_status_show( "" );
	gtk_cmclist_clear(GTK_CMCLIST(ldapedit_basedn.basedn_list));
	ldapedit_basedn_bad_server = TRUE;
	flgConn = flgDN = FALSE;
	sHost = g_strdup( hostName );
	sprintf( sPort, "%d", iPort );
	gtk_label_set_text(GTK_LABEL(ldapedit_basedn.host_label), hostName);
	gtk_label_set_text(GTK_LABEL(ldapedit_basedn.port_label), sPort);
	if( *sHost != '\0' ) {
		/* Test connection to server */
		if( ldaputil_test_connect( sHost, iPort, ssl, tls, tov ) ) {
			/* Attempt to read base DN */
			baseDN = ldaputil_read_basedn( sHost, iPort, bindDN, bindPW, tov, ssl, tls );
			if( baseDN ) {
				GList *node = baseDN;
				gchar *text[2] = { NULL, NULL };

				while( node ) {
					text[0] = (gchar *)node->data;
					gtk_cmclist_append(GTK_CMCLIST(ldapedit_basedn.basedn_list), text);
					node = g_list_next( node );
					flgDN = TRUE;
				}
				mgu_free_dlist( baseDN );
				baseDN = node = NULL;
			}
			ldapedit_basedn_bad_server = FALSE;
			flgConn = TRUE;
		}
	}
	g_free( sHost );

	/* Display appropriate message */
	if( flgConn ) {
		if( ! flgDN ) {
			sMsg = _( "Could not read Search Base(s) from server - please set manually" );
		}
	}
	else {
		sMsg = _( "Could not connect to server" );
	}
	edit_ldap_bdn_status_show( sMsg );
}
Esempio n. 2
0
/**
 * Update list with data for current row.
 * \param clist List to update.
 */
static void imp_ldif_update_row( GtkCMCList *clist ) {
	Ldif_FieldRec *rec;
	gchar *text[ FIELDS_N_COLS ];
	gint row;

	if( impldif_dlg.rowIndSelect < 0 ) return;
	row = impldif_dlg.rowIndSelect;

	rec = gtk_cmclist_get_row_data( clist, row );
	if (!rec)
		return;

	text[ FIELD_COL_RESERVED ] = "";
	text[ FIELD_COL_SELECT   ] = "";
	text[ FIELD_COL_FIELD    ] = rec->tagName;
	text[ FIELD_COL_ATTRIB   ] = rec->userName;

	gtk_cmclist_freeze( clist );
	gtk_cmclist_remove( clist, row );
	if( row == impldif_dlg.rowCount - 1 ) {
		gtk_cmclist_append( clist, text );
	}
	else {
		gtk_cmclist_insert( clist, row, text );
	}
	if( rec->selected ) {
		gtk_cmclist_set_pixbuf(
			clist, row, FIELD_COL_SELECT, markxpm );
	}
	if( rec->reserved ) {
		gtk_cmclist_set_pixbuf(
			clist, row, FIELD_COL_RESERVED, markxpm );
	}

	gtk_cmclist_set_row_data( clist, row, rec );
	gtk_cmclist_thaw( clist );
}
Esempio n. 3
0
/**
 * Load list with LDIF fields read from file.
 * \param ldf LDIF control data.
 */
static void imp_ldif_load_fields( LdifFile *ldf ) {
	GtkCMCList *clist = GTK_CMCLIST(impldif_dlg.clist_field);
	GList *node, *list;
	gchar *text[ FIELDS_N_COLS ];

	impldif_dlg.rowIndSelect = -1;
	impldif_dlg.rowCount = 0;
	if( ! ldf->accessFlag ) return;
	gtk_cmclist_clear( clist );
	list = ldif_get_fieldlist( ldf );
	node = list;
	while( node ) {
		Ldif_FieldRec *rec = node->data;
		gint row;

		text[ FIELD_COL_RESERVED ] = "";
		text[ FIELD_COL_SELECT   ] = "";
		text[ FIELD_COL_FIELD    ] = rec->tagName;
		text[ FIELD_COL_ATTRIB   ] = rec->userName;
		row = gtk_cmclist_append( clist, text );
		gtk_cmclist_set_row_data( clist, row, rec );
		if( rec->selected ) {
			gtk_cmclist_set_pixbuf( clist, row,
				FIELD_COL_SELECT, markxpm );
		}
		if( rec->reserved ) {
			gtk_cmclist_set_pixbuf( clist, row,
				FIELD_COL_RESERVED, markxpm );
		}
		impldif_dlg.rowCount++;
		node = g_list_next( node );
	}
	g_list_free( list );
	list = NULL;
	ldif_set_accessed( ldf, FALSE );
}
Esempio n. 4
0
static void
set_row (GtkCMCList *clist, gpgme_key_t key, gpgme_protocol_t proto)
{
    const char *s;
    const char *text[N_COL_TITLES];
    char *algo_buf;
    int row;
    gsize by_read = 0, by_written = 0;
    gchar *ret_str = NULL;

    /* first check whether the key is capable of encryption which is not
     * the case for revoked, expired or sign-only keys */
    if (!key->can_encrypt || key->revoked || key->expired || key->disabled)
        return;

    algo_buf = g_strdup_printf ("%du/%s", 
         key->subkeys->length,
         gpgme_pubkey_algo_name(key->subkeys->pubkey_algo) );
    text[COL_ALGO] = algo_buf;

    text[COL_KEYID] = key->subkeys->keyid;

    s = key->uids->name;
    if (!s || !*s)
        s = key->uids->uid;
    if (proto == GPGME_PROTOCOL_CMS) {
	if (strstr(s, ",CN="))
		s = strstr(s, ",CN=")+4;
	else if (strstr(s, "CN="))
		s = strstr(s, "CN=")+3;
    } 
    
    ret_str = NULL;
    if (!g_utf8_validate(s, -1, NULL))
	    ret_str = g_locale_to_utf8 (s, strlen(s), &by_read, &by_written, NULL);
    if (ret_str && by_written) {
        s = ret_str;
    }
    text[COL_NAME] = s;

    if (proto == GPGME_PROTOCOL_CMS && (!key->uids->email || !*key->uids->email)) {
	gpgme_user_id_t uid = key->uids->next;
	if (uid)
		s = uid->email;
	else
		s = key->uids->email;
    } else {
        s = key->uids->email;
    }
    
    ret_str = NULL;
    if (!g_utf8_validate(s, -1, NULL))
	    ret_str = g_locale_to_utf8 (s, strlen(s), &by_read, &by_written, NULL);
    if (ret_str && by_written) {
        s = ret_str;
    }
    text[COL_EMAIL] = s;

    switch (key->uids->validity)
      {
      case GPGME_VALIDITY_UNDEFINED:
        s = _("Undefined");
        break;
      case GPGME_VALIDITY_NEVER:
        s = _("Never");
        break;
      case GPGME_VALIDITY_MARGINAL:
        s = _("Marginal");
        break;
      case GPGME_VALIDITY_FULL:
        s = _("Full");
        break;
      case GPGME_VALIDITY_ULTIMATE:
        s = _("Ultimate");
        break;
      case GPGME_VALIDITY_UNKNOWN:
      default:
        s = _("Unknown");
        break;
      }
    text[COL_VALIDITY] = s;

    row = gtk_cmclist_append (clist, (gchar**)text);
    g_free (algo_buf);

    gtk_cmclist_set_row_data_full (clist, row, key, destroy_key);
}