コード例 #1
0
ファイル: tls_common.c プロジェクト: Longdengyu/gtk-gnutella
static void
tls_print_session_info(const host_addr_t addr, uint16 port,
                       gnutls_session session, bool incoming)
{
    const char *proto, *cert, *kx, *ciph, *mac, *comp;

    g_return_if_fail(session);

    proto = gnutls_protocol_get_name(gnutls_protocol_get_version(session));
    cert = gnutls_certificate_type_get_name(
               gnutls_certificate_type_get(session));
    kx = gnutls_kx_get_name(gnutls_kx_get(session));
    comp = gnutls_compression_get_name(gnutls_compression_get(session));
    ciph = gnutls_cipher_get_name(gnutls_cipher_get(session));
    mac = gnutls_mac_get_name(gnutls_mac_get (session));

    g_debug(
        "TLS session info (%s):\n"
        "    Host:         %s\n"
        "    Protocol:     %s\n"
        "    Certificate:  %s\n"
        "    Key Exchange: %s\n"
        "    Cipher:       %s\n"
        "    MAC:          %s\n"
        "    Compression:  %s",
        incoming ? "incoming" : "outgoing",
        host_addr_port_to_string(addr, port),
        NULL_STRING(proto),
        NULL_STRING(cert),
        NULL_STRING(kx),
        NULL_STRING(ciph),
        NULL_STRING(mac),
        NULL_STRING(comp)
    );
}
コード例 #2
0
ファイル: bitzi.c プロジェクト: MrJoe/gtk-gnutella
void
bitzi_gui_update(const bitzi_data_t *bitzi_data)
{
	guint32 bitzi_debug;

	g_assert(bitzi_data != NULL);

    gnet_prop_get_guint32_val(PROP_BITZI_DEBUG, &bitzi_debug);
	if (bitzi_debug > 10)
    	g_debug("bitzi_gui_update: data %p, size %s, "
			  "goodness %f, judgment %d, type %s, details %s",
			cast_to_gconstpointer(bitzi_data),
			uint64_to_string(bitzi_data->size),
			bitzi_data->goodness,
			bitzi_data->judgment,
			NULL_STRING(bitzi_data->mime_type),
			NULL_STRING(bitzi_data->mime_desc));

	/* Update the various GUI elements */

	search_gui_metadata_update(bitzi_data);
}
コード例 #3
0
ファイル: switch_conf.c プロジェクト: von/hippisw
/*
 *	Read a switch configuration
 */
SWITCH *
switch_conf()
{
	char						*keyword;
	char						*argument;
	int							token;

	SWITCH						*sw;

	char						*name;

	struct switch_attributes	*attributes;


	sw = (SWITCH *) malloc(sizeof(SWITCH));

	if (sw == NULL) {
		config_error("malloc() failed.\n");
		exit(1);
	}

	name = read_option();		/* Read name			*/
  
	argument = read_option();	/* Read type			*/

	if ((name == NULL) || (argument == NULL)) {
		config_error("Name and type required for switch. Skipping.\n");
		next_keyword();
		return NULL;
	}

	sw->sw_type = parse_token(argument, switch_keywords);

	if (sw->sw_type == TOKEN_NOT_FOUND) {
		config_error("Switch type \"%s\" unknown. Assuming PS32.\n", argument);
		sw->sw_type = HIPPISW_PS32;
	}

	/*
	 *	Fill in defaults
	 */
	strncpy(sw->sw_name, name, SWNAMELEN);
	sw->sw_version = 1;

	/*	Set a bunch of stuff here in one wave of the hand	*/
	attributes = get_sw_attributes(sw->sw_type);
	bcopy(attributes, &(sw->sw_attributes), sizeof(sw->sw_attributes));
     
	sw->sw_ports = NULL;
	NULL_STRING(sw->sw_hostname);
	sw->sw_tport = TELNET_PORT;
	sw->sw_linenum = parsed_linenumber();
	NULL_STRING(sw->sw_comment);
	sw->sw_virt_attached  = NULL;
	NULL_STRING(sw->sw_password);
  
	/*
	 *	Read rest of options
	 */
	while ((keyword = read_option()) != NULL) {
    
		if ((token = parse_token(keyword, keywords)) == TOKEN_NOT_FOUND) {
			config_error("\"%s\" is not recognized. Skipping.\n", keyword);
			continue;
		}

		/*	Currently all options take arguments
		 */
		argument = read_option();

		if (argument == NULL) {
			config_error("Argument required for %s option.\n", keyword);
			continue;
		}

		switch(token) {
		case KEYWD_SIZE:
			if (is_numeric(argument) == FALSE) {
				config_error("\"%s\" is not a legal numeric argument. Skipping.\n",
							 argument);
				continue;
			}
			sw->sw_num_ports = str_to_int(argument);

			break;

		case KEYWD_ADDRESS:
			if (hostname_to_netaddr(argument) == NETADDR_NULL)
				config_error("Warning: can't resolve net address for \"%s\".\n",
							 argument);
      
			strncpy(sw->sw_hostname, argument, HNAMELEN);
			break;

		case KEYWD_PORT:
			if (is_numeric(argument) == FALSE) {
				config_error("\"%s\" is not a legal numeric argument. Skipping.\n",
							 argument);
				continue;
			}
			sw->sw_tport = str_to_int(argument);
			break;

		case KEYWD_PROMPT:
			config_error("\"prompt\" no longer supported. Skipping.\n");	
			break;

		case KEYWD_SMS:
			if (is_numeric(argument) == FALSE) {
				config_error("\"%s\" is not a legal numeric argument. Skipping.\n",
							 argument);
				continue;
			}
			sw->sw_version = str_to_int(argument);
			break;

		case KEYWD_COMMENT:
			strncpy(sw->sw_comment, argument, COMMENTLEN);
			break;

		case KEYWD_START_LOG:
			config_error("\"start_log\" no longer supported.\n");
			continue;
		}
	}

	if ((sw->sw_num = add_switch(sw)) == ERROR) {
		config_error("Error adding switch to list.\n");
		exit(1);
	}

	return sw;
}
コード例 #4
0
ファイル: magnet.c プロジェクト: MrJoe/gtk-gnutella
static void
magnet_handle_key(struct magnet_resource *res,
	const char *name, const char *value)
{
	char *to_free = NULL;

	g_return_if_fail(res);
	g_return_if_fail(name);
	g_return_if_fail(value);
	
	if (!utf8_is_valid_string(value)) {
		const char *encoding;
		char *result;
			
		g_message("MAGNET URI key \"%s\" is not UTF-8 encoded", name);

		if (MAGNET_KEY_DISPLAY_NAME != magnet_key_get(name))
			return;

		result = unknown_to_utf8(value, &encoding);
		if (result != value) {
			to_free = result;
		}
		value = result;
		g_message("assuming MAGNET URI key \"%s\" is %s encoded",
			name, encoding);
	}

	switch (magnet_key_get(name)) {
	case MAGNET_KEY_DISPLAY_NAME:
		if (!res->display_name) {
			magnet_set_display_name(res, value);
		}
		break;

	case MAGNET_KEY_ALTERNATE_SOURCE:
	case MAGNET_KEY_EXACT_SOURCE:
		{
			struct magnet_source *ms;
			const char *error;

			ms = magnet_parse_exact_source(value, &error);
			if (ms) {
				if (!res->sha1 && ms->sha1) {
					res->sha1 = atom_sha1_get(ms->sha1);
				}
				if (!ms->sha1 || sha1_eq(res->sha1, ms->sha1)) {
					res->sources = g_slist_prepend(res->sources, ms);
				} else {
					magnet_source_free(&ms);
				}
			} else {
				g_message("could not parse source \"%s\" in MAGNET URI: %s",
					value, NULL_STRING(error));
			}
		}
		break;

	case MAGNET_KEY_EXACT_TOPIC:
		if (!magnet_set_exact_topic(res, value)) {
			g_message("MAGNET URI contained unsupported exact topic \"%s\"",
				value);
		}
		break;

	case MAGNET_KEY_KEYWORD_TOPIC:
		magnet_add_search(res, value);
		break;

	case MAGNET_KEY_EXACT_LENGTH:
		{
			int error;
			uint64 u;

			u = parse_uint64(value, NULL, 10, &error);
			if (!error) {
				magnet_set_filesize(res, u);
			}
		}
		break;

	case MAGNET_KEY_PARQ_ID:
		magnet_set_parq_id(res, value);
		break;

	case MAGNET_KEY_VENDOR:
		magnet_set_vendor(res, value);
		break;

	case MAGNET_KEY_GUID:
		magnet_set_guid(res, value);
		break;

	case MAGNET_KEY_DHT:
		{
			int error;
			uint8 u;

			u = parse_uint8(value, NULL, 10, &error);
			if (!error) {
				magnet_set_dht(res, u);
			}
		}
		break;

	case MAGNET_KEY_NONE:
		g_message("unhandled parameter in MAGNET URI: \"%s\"", name);
		break;

	case NUM_MAGNET_KEYS:
		g_assert_not_reached();
	}

	G_FREE_NULL(to_free);
}