예제 #1
0
파일: sim-event.c 프로젝트: DuVale/phpzdl
gchar*
sim_event_get_alarm_insert_clause(SimEvent *event)
{
  gchar    time[TIMEBUF_SIZE];
	gchar   *timestamp=time;
  gchar *query;
  gint c;
  gint a;
  gchar uuidtext[37];
  gchar uuidtext_backlog[37];
  g_return_val_if_fail(event, NULL);
  g_return_val_if_fail(SIM_IS_EVENT (event), NULL);

  if (event->risk_c < 0)
    event->risk_c = 0;
  else if (event->risk_c > 10)
    event->risk_c = 10;

  if (event->risk_a < 0)
    event->risk_a = 0;
  else if (event->risk_a > 10)
    event->risk_a = 10;

  c = rint(event->risk_c);
  a = rint(event->risk_a);

  if(event->time_str)
    timestamp=event->time_str;
	else
    strftime (timestamp, TIMEBUF_SIZE, "%F %T", gmtime ((time_t *) &event->time));

  uuid_unparse_upper(event->uuid, uuidtext);
  uuid_unparse_upper(event->uuid_backlog, uuidtext_backlog);
  query
      = g_strdup_printf(
          "REPLACE INTO alarm "
            "(event_id, backlog_id, timestamp, plugin_id, plugin_sid, "
            "protocol, src_ip, dst_ip, src_port, dst_port, "
            "risk, snort_sid, snort_cid,uuid_backlog,uuid_event) "
            " VALUES  ('%u', '%u', '%s', %d, %d, %d, %u, %u, %d, %d, %d, %u, %u,'%s','%s')",
          event->id, event->backlog_id, timestamp, event->plugin_id,
          event->plugin_sid, event->protocol,
          (event->src_ia) ? sim_inetaddr_ntohl(event->src_ia) : -1,
          (event->dst_ia) ? sim_inetaddr_ntohl(event->dst_ia) : -1,
          event->src_port, event->dst_port, (a > c) ? a : c, event->snort_sid,
          event->snort_cid,
          (!uuid_is_null(event->uuid_backlog) ? uuidtext_backlog : ""),
          (!uuid_is_null(event->uuid) ? uuidtext : ""));

  return query;
}
예제 #2
0
/* Log information about external modification of a process,
 * using MessageTracer formatting. Assumes that both the caller
 * and target are appropriately locked.
 * Currently prints following information - 
 * 	1. Caller process name (truncated to 16 characters)
 *	2. Caller process Mach-O UUID
 *  3. Target process name (truncated to 16 characters)
 *  4. Target process Mach-O UUID
 */
void
fslog_extmod_msgtracer(proc_t caller, proc_t target)
{
	if ((caller != PROC_NULL) && (target != PROC_NULL)) {

		/*
		 * Print into buffer large enough for "ThisIsAnApplicat(BC223DD7-B314-42E0-B6B0-C5D2E6638337)",
		 * including space for escaping, and NUL byte included in sizeof(uuid_string_t).
		 */

		uuid_string_t uuidstr;
		char c_name[2*MAXCOMLEN + 2 /* () */ + sizeof(uuid_string_t)];
		char t_name[2*MAXCOMLEN + 2 /* () */ + sizeof(uuid_string_t)];

		strlcpy(c_name, caller->p_comm, sizeof(c_name));
		uuid_unparse_upper(caller->p_uuid, uuidstr);
		strlcat(c_name, "(", sizeof(c_name));
		strlcat(c_name, uuidstr, sizeof(c_name));
		strlcat(c_name, ")", sizeof(c_name));
		if (0 != escape_str(c_name, strlen(c_name), sizeof(c_name))) {
			return;
		}

		strlcpy(t_name, target->p_comm, sizeof(t_name));
		uuid_unparse_upper(target->p_uuid, uuidstr);
		strlcat(t_name, "(", sizeof(t_name));
		strlcat(t_name, uuidstr, sizeof(t_name));
		strlcat(t_name, ")", sizeof(t_name));
		if (0 != escape_str(t_name, strlen(t_name), sizeof(t_name))) {
			return;
		}
#if DEBUG
		printf("EXTMOD: %s(%d) -> %s(%d)\n",
			   c_name,
			   proc_pid(caller),
			   t_name,
			   proc_pid(target));
#endif

		kern_asl_msg(LOG_DEBUG, "messagetracer",
							5,
							"com.apple.message.domain", "com.apple.kernel.external_modification", /* 0 */
							"com.apple.message.signature", c_name, /* 1 */
							"com.apple.message.signature2", t_name, /* 2 */
							"com.apple.message.result", "noop", /* 3 */
							"com.apple.message.summarize", "YES", /* 4 */
							NULL);
	}
}
예제 #3
0
파일: uuid.c 프로젝트: IvwsIgeMq/libsg
struct sg_uuid_str sg_uuid_gen(enum sg_uuid_method method, int uppercase)
{
    uuid_t uu;
    struct sg_uuid_str us;

    assert(method >= SGUUIDMETHOD_DEFAULT && method <= SGUUIDMETHOD_TIME_MAC);

    memset(&us, 0, sizeof(struct sg_uuid_str));

    switch (method) {
    case SGUUIDMETHOD_DEFAULT:
        uuid_generate(uu);
        break;
    case SGUUIDMETHOD_RANDOM:
        uuid_generate_random(uu);
        break;
    case SGUUIDMETHOD_TIME_MAC:
        uuid_generate_time(uu);
        break;
    case SGUUIDMETHOD_TIME_MAC_SAFE:
        uuid_generate_time_safe(uu);
        break;
    default:
        sg_log_err("UUID method error.");
        return us;
    }

    if (uppercase == 0)
        uuid_unparse_lower(uu, us.buf);
    else
        uuid_unparse_upper(uu, us.buf);

    return us;
}
예제 #4
0
string BeatBoard::SessionManager::createSessionId() {
    uuid_t uuid;
    char buff[1024];
    uuid_generate(uuid);
    uuid_unparse_upper(uuid, buff);
    return string(buff);
}
예제 #5
0
static OSString *
createStringFromUUID(const uuid_t uu)
{
    char buf[64];

    uuid_unparse_upper(uu, buf);

    return OSString::withCString(buf);
}
예제 #6
0
DNSServiceErrorType
RegisterWorkstationService(MyDNSServiceState *ref, CFStringRef serviceName)
{
	char name[64];
	DNSServiceErrorType error = kDNSServiceErr_BadParam;
	
	if (CFStringGetCString(serviceName, name, sizeof(name), kCFStringEncodingUTF8)) {

		uuid_t compUUID;
		CFDataRef cfTXTRecord = NULL;
		struct timespec waitTime = { 0 };
		
		if ( gethostuuid(compUUID, &waitTime) == 0 )
		{
			CFMutableDictionaryRef txtRecordDict = CFDictionaryCreateMutable( kCFAllocatorDefault, 0, &kCFTypeDictionaryKeyCallBacks,
																			  &kCFTypeDictionaryValueCallBacks );
			uuid_string_t uuidstr;
			
			uuid_unparse_upper( compUUID, uuidstr );
			CFStringRef cfUUID = CFStringCreateWithCString( kCFAllocatorDefault, uuidstr, kCFStringEncodingUTF8 );
			CFDictionarySetValue( txtRecordDict, CFSTR("uuid"), cfUUID );
			DbgLog( kLogInfo, "Workstation service - uuid = %s", uuidstr );
			DSCFRelease( cfUUID );
			
			cfTXTRecord = CFNetServiceCreateTXTDataWithDictionary( kCFAllocatorDefault, txtRecordDict );
			
			DSCFRelease( txtRecordDict );
		}
		else
		{
			DbgLog( kLogError, "Failed to get host UUID from gethostuuid()" );
		}
		
		error = DNSServiceRegister(&ref->service,
								   kDNSServiceFlagsNoAutoRename,
								   kDNSServiceInterfaceIndexAny,
								   name,
								   kWorkstationType,
								   NULL,
								   NULL,
								   htons(kWorkstationPort),
								   (cfTXTRecord ? CFDataGetLength(cfTXTRecord) : 0),
								   (cfTXTRecord ? CFDataGetBytePtr(cfTXTRecord) : NULL),
								   RegisterWorkstationCallBack,
								   (void *)ref);
		
		DSCFRelease( cfTXTRecord );
	}

    if (kDNSServiceErr_NoError == error) {
        DbgLog( kLogNotice, "Registered Workstation service - %s.%s", name, kWorkstationType );
        MyDNSServiceAddToRunLoop(ref);
	}
	
    return error;
}
예제 #7
0
파일: xmlgen.c 프로젝트: usnistgov/n0mcli
static int getuuid(unsigned char *puuid)
{
	int rc = 0 ;

	uuid_t uuid ;

	uuid_generate(uuid) ;
	uuid_unparse_upper(uuid, (char *) puuid) ;

	return rc ;
}
예제 #8
0
파일: debug.c 프로젝트: Prajna/xnu
void
panic_init(void)
{
	unsigned long uuidlen = 0;
	void *uuid;

	uuid = getuuidfromheader(&_mh_execute_header, &uuidlen);
	if ((uuid != NULL) && (uuidlen == sizeof(uuid_t))) {
		uuid_unparse_upper(*(uuid_t *)uuid, kernel_uuid);
	}

	simple_lock_init(&panic_lock, 0);
	panic_is_inited = 1;
	panic_caller = 0;
}
예제 #9
0
static gboolean init_suminfo(LibmsiSummaryInfo *si, GError **error)
{
    uuid_t uu;
    char uustr[40];

    if (!libmsi_summary_info_set_string(si, LIBMSI_PROPERTY_TITLE,
                                        "Installation Database", error))
        return FALSE;

    if (!libmsi_summary_info_set_string(si, LIBMSI_PROPERTY_KEYWORDS,
                                        "Installer, MSI", error))
        return FALSE;

    if (!libmsi_summary_info_set_string(si, LIBMSI_PROPERTY_TEMPLATE,
                                        ";1033", error))
        return FALSE;

    if (!libmsi_summary_info_set_string(si, LIBMSI_PROPERTY_APPNAME,
                                        "libmsi msibuild", error))
        return FALSE;

    if (!libmsi_summary_info_set_int(si, LIBMSI_PROPERTY_VERSION,
                                     200, error))
        return FALSE;

    if (!libmsi_summary_info_set_int(si, LIBMSI_PROPERTY_SOURCE,
                                     0, error))
        return FALSE;

    if (!libmsi_summary_info_set_int(si, LIBMSI_PROPERTY_RESTRICT,
                                     0, error))
        return FALSE;

    uuid_generate(uu);
    uustr[0] = '{';
    uuid_unparse_upper(uu, uustr + 1);
    strcat(uustr, "}");
    if (!libmsi_summary_info_set_string(si, LIBMSI_PROPERTY_UUID,
                                        uustr, error))
        return FALSE;

    return TRUE;
}
예제 #10
0
파일: debug.c 프로젝트: androidisbest/xnu-1
void
panic_init(void)
{
	unsigned long uuidlen = 0;
	void *uuid;

	uuid = getuuidfromheader(&_mh_execute_header, &uuidlen);
	if ((uuid != NULL) && (uuidlen == sizeof(uuid_t))) {
		kernel_uuid = uuid;
		uuid_unparse_upper(*(uuid_t *)uuid, kernel_uuid_string);
	}

	simple_lock_init(&panic_lock, 0);
	panic_is_inited = 1;
	panic_caller = 0;

	if (!PE_parse_boot_argn("assertions", &mach_assert, sizeof(mach_assert))) {
		mach_assert = 1;
	}
}
예제 #11
0
파일: odkerb.c 프로젝트: aosm/ChatServer
int
odkerb_copy_user_record_with_alt_security_identity(CFStringRef principalID, ODRecordRef *out)
{
    int retval = -1;
    CFStringRef cfAltSecurityIdentity = NULL;
    CFErrorRef cfError = NULL;
    ODQueryRef cfQueryRef = NULL;
    CFArrayRef cfUserRecords = NULL;
    int mbrErr = 0;
    uuid_t user_uuid = { 0 };
    uuid_string_t uuidStr;
    char principal[1024];

    ODKERB_PARAM_ASSERT(principalID != NULL);
    ODKERB_PARAM_ASSERT(out != 0);

    *out = NULL;

    if (odkerb_configure_search_node() != 0)
        goto failure;

    CFStringGetCString(principalID, principal, sizeof(principal), kCFStringEncodingUTF8);
    mbrErr = mbr_identifier_to_uuid(ID_TYPE_KERBEROS, principal, strlen(principal), user_uuid);

    if (mbrErr != 0) {
        ODKERB_LOG_CFSTRING(LOG_DEBUG, "No UUID found for principal by mbr_identifier_to_uuid ID_TYPE_KERBEROS", principalID);
        goto failure;
    }
    uuid_unparse_upper(user_uuid, uuidStr);
    CFStringRef cfUserUUID = CFStringCreateWithFormat(kCFAllocatorDefault, NULL, CFSTR("%s"), uuidStr);
    cfQueryRef = ODQueryCreateWithNode(kCFAllocatorDefault,
                                       gSearchNode,
                                       kODRecordTypeUsers,
                                       kODAttributeTypeGUID,
                                       kODMatchEqualTo,
                                       cfUserUUID,
                                       kODAttributeTypeRecordName,
                                       1, &cfError);

    if (cfQueryRef == NULL || cfError != NULL) {
        ODKERB_LOG_CFERROR(LOG_ERR, "Unable to query the search node", cfError);
        goto failure;
    }

    cfUserRecords = ODQueryCopyResults(cfQueryRef, false, &cfError);
    if (cfUserRecords == NULL || cfError != NULL) {
        ODKERB_LOG_CFERROR(LOG_ERR, "Unable to find user record", cfError);
        goto failure;
    }
    else if (CFArrayGetCount(cfUserRecords) == 0) {
        ODKERB_LOG_CFSTRING(LOG_INFO, "Unable to find user record", cfUserUUID);
        goto failure;
    }

    ODRecordRef cfUserRecord = (ODRecordRef)CFArrayGetValueAtIndex(cfUserRecords, 0);
    *out = (ODRecordRef)CFRetain(cfUserRecord);

    retval = 0;
failure:
    if (cfError != NULL)
        odkerb_possibly_reset_search_node(cfError);
    CF_SAFE_RELEASE(cfError);
    CF_SAFE_RELEASE(cfAltSecurityIdentity);
    CF_SAFE_RELEASE(cfQueryRef);
    CF_SAFE_RELEASE(cfUserRecords);

    return retval;
}
예제 #12
0
파일: sim-event.c 프로젝트: DuVale/phpzdl
void
sim_event_print(SimEvent *event)
{
  gchar time[TIMEBUF_SIZE];
  gchar *timestamp = time;
  gchar *ip;
  int i;

  g_return_if_fail(event);
  g_return_if_fail(SIM_IS_EVENT (event));

  g_print("event");

  switch (event->type)
    {
  case SIM_EVENT_TYPE_DETECTOR:
    g_print(" type=\"D\"");
    break;
  case SIM_EVENT_TYPE_MONITOR:
    g_print(" type=\"M\"");
    break;
  case SIM_EVENT_TYPE_NONE:
    g_print(" type=\"N\"");
    break;
    }

  g_print(" id=\"%d\"", event->id);

  if (event->time_str)
    timestamp = event->time_str;
  else if (event->time)
    strftime (timestamp, TIMEBUF_SIZE, "%F %T", gmtime ((time_t *) &event->time));

  g_print(" alarm=\"%d\"", event->alarm);

  if (event->sensor)
    g_print(" sensor=\"%s\"", event->sensor);
  if (event->device)
    g_print(" device=\"%s\"", event->device);

  if (event->interface)
    g_print(" interface=\"%s\"", event->interface);

  if (event->plugin_id)
    g_print(" plugin_id=\"%d\"", event->plugin_id);
  if (event->plugin_sid)
    g_print(" plugin_sid=\"%d\"", event->plugin_sid);

  if (event->protocol)
    g_print(" protocol=\"%d\"", event->protocol);

  if (event->src_ia)
    {
      ip = gnet_inetaddr_get_canonical_name(event->src_ia);
      g_print(" src_ia=\"%s\"", ip);
      g_free(ip);
    }
  if (event->src_port)
    g_print(" src_port=\"%d\"", event->src_port);
  if (event->dst_ia)
    {
      ip = gnet_inetaddr_get_canonical_name(event->dst_ia);
      g_print(" dst_ia=\"%s\"", ip);
      g_free(ip);
    }
  if (event->dst_port)
    g_print(" dst_port=\"%d\"", event->dst_port);

  if (event->condition)
    g_print(" condition=\"%d\"", event->condition);
  if (event->value)
    g_print(" value=\"%s\"", event->value);
  if (event->interval)
    g_print(" ineterval=\"%d\"", event->interval);

  if (event->priority)
    g_print(" priority=\"%d\"", event->priority);
  if (event->reliability)
    g_print(" reliability=\"%d\"", event->reliability);
  if (event->asset_src)
    g_print(" asset_src=\"%d\"", event->asset_src);
  if (event->asset_dst)
    g_print(" asset_dst=\"%d\"", event->asset_dst);
  if (event->risk_c)
    g_print(" risk_c=\"%lf\"", event->risk_c);
  if (event->risk_a)
    g_print(" risk_a=\"%lf\"", event->risk_a);

  if (event->snort_sid)
    g_print(" sid =\"%d\"", event->snort_sid);
  if (event->snort_cid)
    g_print(" cid =\"%d\"", event->snort_cid);

  if (event->data)
    g_print(" data=\"%s\"", event->data);

	if (event->rep_prio_src)
      g_message (" rep_prio_src=\"%u\"", event->rep_prio_src);

	if (event->rep_prio_dst)
      g_message (" rep_prio_dst=\"%u\"", event->rep_prio_dst);

	if (event->rep_rel_src)
      g_message (" rep_rel_src=\"%u\"", event->rep_rel_src);

	if (event->rep_rel_dst)
      g_message (" rep_rel_dst=\"%u\"", event->rep_rel_dst);

	if (event->rep_act_src)
      g_message (" rep_act_src=\"%s\"", event->rep_act_src);

	if (event->rep_act_dst)
      g_message (" rep_act_dst=\"%s\"", event->rep_act_dst);

  for (i = 0; i < N_TEXT_FIELDS; i++)
    {
      if (event->textfields[i] != NULL)
        {
          g_printf(" %s=\"%s\"", sim_text_field_get_name(i),
              event->textfields[i]);
        }

    }

  if (!uuid_is_null(event->uuid))
    {
      gchar uuidtext[37];
      uuid_unparse_upper(event->uuid, uuidtext);
      g_message(" uuid=\"%s\"", uuidtext);
    }
  g_print("\n");
}
예제 #13
0
char *
acl_to_text(acl_t acl, ssize_t *len_p)
{
	acl_tag_t tag;
	acl_entry_t entry = NULL;
	acl_flagset_t flags;
	acl_permset_t perms;
	uid_t id;
	int i, first;
	int isgid;
	size_t bufsize = 1024;
	char *buf = NULL;

	if (!_ACL_VALID_ACL(acl)) {
		errno = EINVAL;
		return NULL;
	}

	if (len_p == NULL)
	    if ((len_p = alloca(sizeof(ssize_t))) == NULL)
		goto err_nomem;

	*len_p = 0;

	if ((buf = malloc(bufsize)) == NULL)
	    goto err_nomem;

	if (!raosnprintf(&buf, &bufsize, len_p, "!#acl %d", 1))
	    goto err_nomem;

	if (acl_get_flagset_np(acl, &flags) == 0)
	{
	    for (i = 0, first = 0; acl_flags[i].name != NULL; ++i)
	    {
		if (acl_flags[i].type & ACL_TYPE_ACL
			&& acl_get_flag_np(flags, acl_flags[i].flag) != 0)
		{
		    if(!raosnprintf(&buf, &bufsize, len_p, "%s%s",
			    first++ ? "," : " ", acl_flags[i].name))
			goto err_nomem;
		}
	    }
	}
	for (;acl_get_entry(acl,
		    entry == NULL ? ACL_FIRST_ENTRY : ACL_NEXT_ENTRY, &entry) == 0;)
	{
	    int valid;
	    uuid_t *uu;
	    char *str, uu_str[37];

	    if (((uu = (uuid_t *) acl_get_qualifier(entry)) == NULL)
		|| (acl_get_tag_type(entry, &tag) != 0)
		|| (acl_get_flagset_np(entry, &flags) != 0)
		|| (acl_get_permset(entry, &perms) != 0)) {
		if (uu != NULL) acl_free(uu);
		continue;
	    }

	    uuid_unparse_upper(*uu, uu_str);

	    if ((str = uuid_to_name(uu, &id, &isgid)) != NULL) {
		valid = raosnprintf(&buf, &bufsize, len_p, "\n%s:%s:%s:%d:%s",
		    isgid ? "group" : "user",
		    uu_str,
		    str,
		    id,
		    (tag == ACL_EXTENDED_ALLOW) ? "allow" : "deny");
	    } else {
		valid = raosnprintf(&buf, &bufsize, len_p, "\nuser:%s:::%s",
		    uu_str,
		    (tag == ACL_EXTENDED_ALLOW) ? "allow" : "deny");
	    }

	    free(str);
	    acl_free(uu);

	    if (!valid)
		goto err_nomem;

	    for (i = 0; acl_flags[i].name != NULL; ++i)
	    {
		if (acl_flags[i].type & (ACL_TYPE_DIR | ACL_TYPE_FILE))
		{
		    if(acl_get_flag_np(flags, acl_flags[i].flag) != 0)
		    {
			if(!raosnprintf(&buf, &bufsize, len_p, ",%s",
			    acl_flags[i].name))
			    goto err_nomem;
		    }
		}
	    }

	    for (i = 0, first = 0; acl_perms[i].name != NULL; ++i)
	    {
		if (acl_perms[i].type & (ACL_TYPE_DIR | ACL_TYPE_FILE))
		{
		    if(acl_get_perm_np(perms, acl_perms[i].perm) != 0)
		    {
			if(!raosnprintf(&buf, &bufsize, len_p, "%s%s",
			    first++ ? "," : ":", acl_perms[i].name))
			    goto err_nomem;
		    }
		}
	    }
	}
	buf[(*len_p)++] = '\n';
	buf[(*len_p)] = 0;
	return buf;

err_nomem:
	if (buf != NULL)
	    free(buf);

	errno = ENOMEM;
	return NULL;
}
예제 #14
0
void Bptree::search_section(Table_info table,Attribute attribute,bool left_open,std::string left,bool right_open,std::string right,Address* begin,Address* end)
{
    uuid_t uu;
    int i;
    uuid_generate( uu );
    printf("\n");
    uuid_string_t  strc;
    uuid_unparse_upper(uu,strc);
    Address begin_address(table.database,strc,0);
    disk.create_file(begin_address);
    get_root(table, attribute);
    Address header_address(table.database,filename,0);
    Address_byte first_address;
    Block header;
    buffer->read_data(header_address, &header);
    header.get_block_data(ADDRESS_SIZE*2, ADDRESS_SIZE, first_address.byte);
    Address now_address(table.database,filename,first_address.address);
    Bptree_node *now_node=new_node();
    now_node->read_from(now_address);
    Key_type *left_key,*right_key;
    Block address_file_block;
    buffer->write_data(begin_address, &address_file_block);
    bool no_left=(left=="inf");
    bool no_right=(right=="inf");
    switch (attribute.type)
    {
        case SQL_INT:left_key=new Int_key;break;
        case SQL_FLOAT:left_key=new Float_key;break;
        case SQL_STRING:left_key=new String_key(attribute.size);break;
    }
    switch (attribute.type)
    {
        case SQL_INT:right_key=new Int_key;break;
        case SQL_FLOAT:right_key=new Float_key;break;
        case SQL_STRING:right_key=new String_key(attribute.size);break;
    }
    left_key->assign(left);
    right_key->assign(right);
    int now_int;
    if (!no_left)
    {
        search(table, attribute, left);
        if (left_open)
        {
            now_address=bigger_than_start_address;
            now_int=bigger_than_start_int;
        }
        else
        {
            now_address=not_smaller_than_start_address;
            now_int=not_smaller_than_start_int;
        }
    }
    else
    {
        now_int=0;
    }
    Address end_address;
    int end_int;
    if (!no_right)
    {
        search(table, attribute, right);
        if (right_open)
        {
            end_address=smaller_than_end_address;
            end_int=smaller_than_end_int;
        }
        else
        {
            end_address=not_bigger_than_end_address;
            end_int=not_bigger_than_end_int;
        }

    }
    else
    {
        end_address=Address(table.table_name,filename,0);
        end_int=0;
    }
    now_node->read_from(now_address);
    Address_byte temp_address;
    temp_address.address=begin_address.address_int();
    bool new_flag=true;
    *begin=Address(table.database,strc,0);
    *end=*begin;
    while(true)
    {
        Address tmp_address(table.database,strc,temp_address.address);
        if (now_address.file_offset==end_address.file_offset && now_int==end_int)
        {
            *end=tmp_address;
            break;
        }
        Block block;
        if (!new_flag)
        {
            buffer->read_data(tmp_address,&block);
        }
        else
        {
            new_flag=false;
        }
        Address_byte to_write_address;
        to_write_address.address=now_node->link[now_int].address_int();
        block.fill_block_data(tmp_address.block_offset, ADDRESS_SIZE, to_write_address.byte);
        buffer->write_data(tmp_address, &block);
        if (now_int+1==now_node->number)
        {
            now_address=now_node->link[now_node->max_count];
            now_int=0;
            if (now_address.file_offset!=0)
                now_node->read_from(now_address);
        }
        else
        {
            now_int++;
        }
        temp_address.address+=ADDRESS_SIZE;
        if (temp_address.address % BLOCK_SIZE==0)
        {
            new_flag=true;
        }
    }
    delete now_node;
    delete right_key;
    delete left_key;
    
}
예제 #15
0
int main(int argc, char** argv)
{
    Options_t opts;
    int rc;

    pn_message_t *response_msg = pn_message();
    check( response_msg, "Failed to allocate a Message");
    pn_message_t *request_msg = pn_message();
    check( request_msg, "Failed to allocate a Message");
    pn_messenger_t *messenger = pn_messenger( 0 );
    check( messenger, "Failed to allocate a Messenger");

    parse_options( argc, argv, &opts );

    // no need to track outstanding messages
    pn_messenger_set_outgoing_window( messenger, 0 );
    pn_messenger_set_incoming_window( messenger, 0 );

    pn_messenger_set_timeout( messenger, opts.timeout );

    if (opts.gateway_addr) {
        LOG( "routing all messages via %s\n", opts.gateway_addr );
        rc = pn_messenger_route( messenger,
                                 "*", opts.gateway_addr );
        check( rc == 0, "pn_messenger_route() failed" );
    }

    pn_messenger_start(messenger);

    char *reply_to = NULL;
    if (opts.reply_to) {
        LOG("subscribing to %s for replies\n", opts.reply_to);
        pn_messenger_subscribe(messenger, opts.reply_to);
        reply_to = _strdup(opts.reply_to);
        check( reply_to, "Out of memory" );
#if 1
        // need to 'fix' the reply-to for use in the message itself:
        // no '~' is allowed in that case
        char *tilde = strstr( reply_to, "://~" );
        if (tilde) {
            tilde += 3;  // overwrite '~'
            memmove( tilde, tilde + 1, strlen( tilde + 1 ) + 1 );
        }
#endif
    }

    // Create a request message
    //
    const char *command = opts.new_fortune ? "set" : "get";
    build_request_message( request_msg,
                           opts.send_bad_msg ? "bad-command" : command,
                           opts.address, reply_to,
                           opts.new_fortune, opts.ttl );

    // set a unique identifier for this message, so remote can
    // de-duplicate when we re-transmit
    uuid_t uuid;
    uuid_generate(uuid);
    char uuid_str[37];
    uuid_unparse_upper(uuid, uuid_str);
    pn_data_put_string( pn_message_id( request_msg ),
                        pn_bytes( sizeof(uuid_str), uuid_str ));

    // set the correlation id so we can ensure the response matches
    // our request. (re-use uuid just 'cause it's easy!)
    pn_data_put_string( pn_message_correlation_id( request_msg ),
                        pn_bytes( sizeof(uuid_str), uuid_str ));

    int send_count = 0;
    bool done = false;

    // keep re-transmitting until something arrives
    do {
        LOG("sending request message...\n");
        rc = pn_messenger_put( messenger, request_msg );
        check(rc == 0, "pn_messenger_put() failed");
        send_count++;
        if (opts.retry) opts.retry--;

        LOG("waiting for response...\n");
        rc = pn_messenger_recv( messenger, -1 );
        if (rc == PN_TIMEOUT) {
            LOG( "Timed-out waiting for a response, retransmitting...\n" );
            pn_message_set_delivery_count( request_msg, send_count );
        } else {
            check(rc == 0, "pn_messenger_recv() failed\n");

            while (pn_messenger_incoming( messenger ) > 0) {
                rc = pn_messenger_get( messenger, response_msg );
                check(rc == 0, "pn_messenger_get() failed");

                LOG("response received!\n");
                // validate the correlation id
                pn_bytes_t cid = pn_data_get_string( pn_message_correlation_id( response_msg ) );
                if (cid.size == 0 || strncmp( uuid_str, cid.start, cid.size )) {
                    LOG( "Correlation Id mismatch!  Ignoring this response!\n" );
                } else {
                    process_reply( messenger, response_msg );
                    done = true;
                }
            }
        }
    } while (!done && opts.retry);

    if (!done) {
        fprintf( stderr, "Retries exhausted, no response received from server!\n" );
    }

    rc = pn_messenger_stop(messenger);
    check(rc == 0, "pn_messenger_stop() failed");

    pn_messenger_free(messenger);
    pn_message_free( response_msg );
    pn_message_free( request_msg );

    if (reply_to) free(reply_to);

    return 0;
}
예제 #16
0
파일: sim-event.c 프로젝트: DuVale/phpzdl
gchar*
sim_event_to_string(SimEvent *event)
{
  GString *str;
  gchar *ip;
  gchar * base64;
  gint base64_len;
  gchar uuidtext[37];
  int i;
  g_return_if_fail(event);
  g_return_if_fail(SIM_IS_EVENT (event));
  gchar *e_filename = NULL, *e_username = NULL, *e_password = NULL;
  gchar *e_userdata1 = NULL, *e_userdata2 = NULL, *e_userdata3 = NULL, *e_userdata4 = NULL;
  gchar *e_userdata5 = NULL, *e_userdata6 = NULL, *e_userdata7 = NULL, *e_userdata8 = NULL;
  gchar *e_userdata9 = NULL, *e_data = NULL, *e_log = NULL;
  str = g_string_new("event ");

  g_string_append_printf(str, "id=\"%u\" ", event->id);
  g_string_append_printf(str, "alarm=\"%d\" ", event->alarm);

  gchar *aux = sim_event_get_str_from_type(event->type);
  if (aux)
  {
    g_string_append_printf(str, "type=\"%s\" ", aux);
    g_free(aux);
  }

  g_string_append_printf(str, "date=\"%u\" ", event->time);
  g_string_append_printf(str, "tzone=\"%4.2f\" ", event->tzone);

  if (event->time_str)
    g_string_append_printf(str, "fdate=\"%s\" ", event->time_str);

  if (event->plugin_id)
    g_string_append_printf(str, "plugin_id=\"%d\" ", event->plugin_id);

  if (event->plugin_sid)
    g_string_append_printf(str, "plugin_sid=\"%d\" ", event->plugin_sid);

  if (event->src_ia)
  {
    ip = gnet_inetaddr_get_canonical_name(event->src_ia);
    g_string_append_printf(str, "src_ip=\"%s\" ", ip);
    g_free(ip);
  }

  if (event->src_port)
    g_string_append_printf(str, "src_port=\"%d\" ", event->src_port);

  if (event->dst_ia)
  {
    ip = gnet_inetaddr_get_canonical_name(event->dst_ia);
    g_string_append_printf(str, "dst_ip=\"%s\" ", ip);
    g_free(ip);
  }

  if (event->dst_port)
    g_string_append_printf(str, "dst_port=\"%d\" ", event->dst_port);

  if (event->sensor)
    g_string_append_printf(str, "sensor=\"%s\" ", event->sensor);
  if (event->device)
    g_string_append_printf(str, "device=\"%s\" ", event->device);

  if (event->interface)
    g_string_append_printf(str, "interface=\"%s\" ", event->interface);

  if (event->protocol)
  {
    gchar *value = sim_protocol_get_str_from_type(event->protocol);
    g_string_append_printf(str, "protocol=\"%s\" ", value);
    g_free(value);
  }

  if (event->condition)
  {
    gchar *value = sim_condition_get_str_from_type(event->condition);
    g_string_append_printf(str, "condition=\"%s\" ", value);
    g_free(value);
  }
  if (event->value)
    g_string_append_printf(str, "value=\"%s\" ", event->value);
  if (event->interval)
    g_string_append_printf(str, "interval=\"%d\" ", event->interval);

  if (event->is_priority_set)
    g_string_append_printf(str, "priority=\"%d\" ", event->priority);
  if (event->is_reliability_set)
    g_string_append_printf(str, "reliability=\"%d\" ", event->reliability);
  if (event->asset_src)
    g_string_append_printf(str, "asset_src=\"%d\" ", event->asset_src);
  if (event->asset_dst)
    g_string_append_printf(str, "asset_dst=\"%d\" ", event->asset_dst);
  if (event->risk_c)
    g_string_append_printf(str, "risk_a=\"%lf\" ", event->risk_a);
  if (event->risk_a)
    g_string_append_printf(str, "risk_c=\"%lf\" ", event->risk_c);

  if (event->snort_sid)
    g_string_append_printf(str, "snort_sid=\"%u\" ", event->snort_sid);
  if (event->snort_cid)
    g_string_append_printf(str, "snort_cid=\"%u\" ", event->snort_cid);

  //  if (event->data)
  //    g_string_append_printf(str, "data=\"%s\" ", event->data);
  if (event->log && (base64_len = strlen(event->log)))
  {
    base64 = g_base64_encode(event->log, base64_len);
    assert(base64!=NULL);
    g_string_append_printf(str, "log=\"%s\" ", base64);
    g_free(base64);
  }

  if (event->rep_prio_src)
    g_string_append_printf(str, "rep_prio_src=\"%u\" ", event->rep_prio_src);

  if (event->rep_prio_dst)
    g_string_append_printf(str, "rep_prio_dst=\"%u\" ", event->rep_prio_dst);

  if (event->rep_rel_src)
    g_string_append_printf(str, "rep_rel_src=\"%u\" ", event->rep_rel_src);

  if (event->rep_rel_dst)
    g_string_append_printf(str, "rep_rel_dst=\"%u\" ", event->rep_rel_dst);

  if (event->rep_act_src && (base64_len = strlen(event->rep_act_src)))
  {
    base64 = g_base64_encode( (guchar*)event->rep_act_src, base64_len);
    assert (base64 != NULL);
    g_string_append_printf(str, "rep_act_src=\"%s\" ", base64);
    g_free(base64);
  }

  if (event->rep_act_dst && (base64_len = strlen(event->rep_act_dst)))
  {
    base64 = g_base64_encode( (guchar*)event->rep_act_dst, base64_len);
    assert (base64 != NULL);
    g_string_append_printf(str, "rep_act_dst=\"%s\" ", base64);
    g_free(base64);
  }

  //g_string_append_printf(str, "log=\"%s\" ", event->log);
  for (i = 0; i < N_TEXT_FIELDS; i++)
  {
    if ((event->textfields[i] != NULL) && (base64_len = strlen(event->textfields[i])))
    {
      base64 = g_base64_encode(event->textfields[i], base64_len);
      assert(base64!=NULL);
      g_string_append_printf(str, "%s=\"%s\" ", sim_text_field_get_name(i), base64);
      g_free(base64);
    }
  }

  if (!uuid_is_null(event->uuid))
  {
    uuid_unparse_upper(event->uuid, uuidtext);
    g_string_append_printf(str, "uuid=\"%s\" ", uuidtext);
  }

  if (event->packet)
    if (event->packet->payloadlen > 0)
    {
      gchar *payload;
      payload = sim_bin2hex(event->packet->payload, event->packet->payloadlen);
      g_string_append_printf(str, "payload=\"%s\" ", payload);
      g_free(payload);
    }

  g_string_append_printf(str, "\n");

  return g_string_free(str, FALSE);
}
예제 #17
0
void bingsprec_sync(struct msauth_token* token,
			struct bingsprec_params* params,
			char* file_name,
			struct bingsprec_results* results) {
	null_bingsprec_results(results);

	uuid_t uuid;
	char uuid_str[36 + 1];
	uuid_generate(uuid);
	uuid_unparse_upper(uuid, uuid_str);
	uuid_str[36] = '\0';

	char* request = (char*) 
		malloc(BINGSPREC_REQUEST_MAX_LEN * sizeof(char));		
	if (request == NULL) {
		exit(-1);
	}

	char instance_id[36 + 1];	
	FILE* fp_read = fopen(".saved_instance_id", "r");
	if (fp_read != NULL) {
		if (fread(instance_id, sizeof(char), 36, fp_read)) {
			instance_id[36] = '\0';
			fclose(fp_read);
		} else {
			fprintf(stderr, "Error reading from file.\n");
			fclose(fp_read);
			exit(-1);
		}
	} else {
		/* This is either the first time making a call, the previous
		 * instance id file was deleted, or we had an error opening the
		 * file. We'll try creating a new instance id to handle the
		 * first two cases.
		 */
			
		uuid_t instance_uuid;
		uuid_generate(instance_uuid);
		uuid_unparse_upper(instance_uuid, instance_id);	
		
		FILE* fp_write = fopen(".saved_instance_id", "w");
		if (fp_write != NULL) {
			fputs(instance_id, fp_write);	
		}
		fclose(fp_write);
	}

	snprintf(request,
		BINGSPREC_REQUEST_MAX_LEN * sizeof(char),
		"%s/recognize"
		"?version=3.0&format=json"
		"&scenarios=%s"
		"&appid=%s"
		"&locale=%s"
		"&device.os=%s"
		"&maxnbest=%d"
		"&result.profanity=%d"
		"&instanceid=%s"
		"&requestid=%s",
		BINGSPREC_BASE_URL,
		scenario_to_string(params->scenario),
	        BINGSPREC_APP_ID,
		locale_to_string(params->locale),
		params->deviceos,
		params->maxnbest,
		params->profanity_markup,
		instance_id,	
		uuid_str);	

	CURL* curl = curl_easy_init();
	if (!curl) {
		exit(-1);
	}

	curl_easy_setopt(curl, CURLOPT_VERBOSE, BINGSPREC_VERBOSE);
	curl_easy_setopt(curl, CURLOPT_URL, request);
	curl_easy_setopt(curl, CURLOPT_POST, 1);
	curl_easy_setopt(curl, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);

	FILE* file = fopen(file_name, "r");
	if (file == NULL) {
		fprintf(stderr, "Error opening wav file.\n");
		exit(-1);
	}

	fseek(file, 0, SEEK_END);
	unsigned long fileSize = (unsigned long)ftell(file);
	rewind(file);
	
	char* audio_data = (char*) malloc(sizeof(char) * fileSize);
	if (audio_data == NULL) {
		fprintf(stderr, "No membory to allocate audio buffer.\n");
		exit(-2);
	}
	
	struct bingsprec_wavfile wavFile;
	size_t freadres = fread(audio_data, 1, fileSize, file);
	if (ferror(file) || freadres != fileSize) {
		fprintf(stderr, "Eror reading wav file!\n");
		fclose(file);
		exit(-1);
	}
	
	fclose(file);

	wavFile.readPtr = audio_data;
	wavFile.sizeLeft = fileSize;

	curl_easy_setopt(curl, CURLOPT_READFUNCTION, bingsprec_read_wavfile);
	curl_easy_setopt(curl, CURLOPT_READDATA, &wavFile);


	char* content_type = (char*) 
		malloc(BINGSPREC_REQUEST_MAX_LEN * sizeof(char));
	snprintf(content_type,
		BINGSPREC_REQUEST_MAX_LEN * sizeof(char),
		"Content-Type: audio/wav; codec=\"audio/pcm\"; "
		"samplerate=%d; "
		"sourcerate=%d; "
		"trustsourcerate=%s",
		params->samplerate,
		params->sourcerate,
		bool_to_string(params->trustsourcerate)); 

	struct curl_slist* headers = NULL;
	headers = curl_slist_append(headers, content_type);
	headers = curl_slist_append(headers, 
		"Accept: application/json;text/xml");
	headers = curl_slist_append(headers, 
		"Host: speech.platform.bing.com");	
	headers = curl_slist_append(headers, 
		"Connection: Keep-Alive");
	headers = curl_slist_append(headers, 
		"Transfer-Encoding: chunked");

	free(content_type);
	
	size_t token_length = strlen(token->access_token);
	// strlen("Authorization: Bearer ") = 22
	char auth_header[22 + token_length + 1];
	auth_header[0] = '\0';
	strcat(auth_header, "Authorization: Bearer ");
	strcat(auth_header, token->access_token);
	headers = curl_slist_append(headers, auth_header);

	curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
	
	struct bingsprec_response* resp = bingsprec_new_response();	
	curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, 
		bingsprec_write_response);
	curl_easy_setopt(curl, CURLOPT_WRITEDATA, resp);
 
	CURLcode res = curl_easy_perform(curl);
	long http_code = 0;
	curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &http_code);
	if (res == CURLE_OK && http_code == 200) {
		parse_json_to_results(resp->str, results);
	} else {
		fprintf(stderr, "CURL Error:\n%s\n", curl_easy_strerror(res));
	}	

	bingsprec_free_response(resp);
	free(request); 
	free(audio_data);
	curl_slist_free_all(headers);
	curl_easy_cleanup(curl);
}
예제 #18
0
파일: sim-event.c 프로젝트: DuVale/phpzdl
gchar*
sim_event_get_replace_clause(SimEvent *event)
{
  gchar    time[TIMEBUF_SIZE];
	gchar   *timestamp=time;
  gchar *query;
  gint c;
  gint a;
  int i;
  /* Temporal HACK */

  gchar uuidtext[37];
  gchar *values;
  gchar * e_rep_act_src = NULL, * e_rep_act_dst = NULL;

  g_return_val_if_fail(event, NULL);
  g_return_val_if_fail(SIM_IS_EVENT (event), NULL);

  c = rint(event->risk_c);
  a = rint(event->risk_a);

  if (c < 0)
    c = 0;
  else if (c > 10)
    c = 10;
  if (a < 0)
    a = 0;
  else if (a > 10)
    a = 10;

  if(event->time_str)
    timestamp=event->time_str;
	else
    strftime (timestamp, TIMEBUF_SIZE, "%F %T", gmtime ((time_t *) &event->time));

  if (event->rep_act_src){
    e_rep_act_src = g_new0 (gchar,strlen(event->rep_act_src)*2+1);
    gda_connection_escape_string (sim_database_get_conn (ossim.dbossim),event->rep_act_src,e_rep_act_src);	
  }
  if (event->rep_act_dst){
    e_rep_act_dst = g_new0 (gchar,strlen(event->rep_act_dst)*2+1);
    gda_connection_escape_string (sim_database_get_conn (ossim.dbossim),event->rep_act_dst,e_rep_act_dst);	
  }


  uuid_unparse_upper(event->uuid, uuidtext);
  values = sim_event_get_text_escape_fields_values(event);
  query
      = g_strdup_printf(
          "REPLACE INTO event "
            "(id, timestamp, sensor, interface, type, plugin_id, plugin_sid, "
            "protocol, src_ip, dst_ip, src_port, dst_port, "
            "event_condition, value, time_interval, "
            "priority, reliability, asset_src, asset_dst, risk_c, risk_a, alarm, "
            "snort_sid, snort_cid, uuid, rep_prio_src, rep_prio_dst, rep_rel_src, "
            "rep_rel_dst, rep_act_src, rep_act_dst, %s) "
            " VALUES  (%d, '%s', '%s', '%s', %d, %d, %d,"
            " %d, %u, %u, %d, %d, %d, '%s', %d, %d, %d, %d, %d, %d, %d, %d, %u, %u,'%s',"
            " %u, %u, %u, %u, '%s', '%s', %s)",
          sim_event_get_sql_fields(), event->id, timestamp,
          (event->sensor) ? event->sensor : "",
          (event->interface) ? event->interface : "", event->type,
          event->plugin_id, event->plugin_sid, event->protocol,
          (event->src_ia) ? sim_inetaddr_ntohl(event->src_ia) : -1,
          (event->dst_ia) ? sim_inetaddr_ntohl(event->dst_ia) : -1,
          event->src_port, event->dst_port, event->condition,
          (event->value) ? event->value : "", event->interval, event->priority,
          event->reliability, event->asset_src, event->asset_dst, c, a,
          event->alarm, event->snort_sid, event->snort_cid,
          (!uuid_is_null(event->uuid) ? uuidtext : ""),
          event->rep_prio_src, event->rep_prio_dst,
          event->rep_rel_src, event->rep_rel_dst,
          (event->rep_act_src) ? e_rep_act_src : "",
          (event->rep_act_dst) ? e_rep_act_dst : "", values);

  g_free(values);
  g_free (e_rep_act_src);
  g_free (e_rep_act_dst);

  return query;
}
예제 #19
0
파일: sim-event.c 프로젝트: DuVale/phpzdl
gchar*
sim_event_get_insert_clause(SimEvent *event)
{
  gchar time[TIMEBUF_SIZE];
  gchar *timestamp = time;
  gchar *query;
  gint c;
  gint a;
  gchar uuidtext[37];
  GString *st;
  int i;

  gchar * e_rep_act_src = NULL, * e_rep_act_dst = NULL;
  gchar *e_fields[N_TEXT_FIELDS];

  g_return_val_if_fail(event, NULL);
  g_return_val_if_fail(SIM_IS_EVENT (event), NULL);

  c = rint(event->risk_c);
  a = rint(event->risk_a);

  if (c < 0)
    c = 0;
  else if (c > 10)
    c = 10;
  if (a < 0)
    a = 0;
  else if (a > 10)
    a = 10;

  if(event->time_str)
    timestamp = event->time_str;
  else
    strftime (timestamp, TIMEBUF_SIZE, "%F %T", gmtime ((time_t *) &event->time));

  if (!uuid_is_null(event->uuid))
    {
      uuid_unparse_upper(event->uuid, uuidtext);
    }
  else
    {
      uuidtext[0] = '\0';
    }

  if (event->rep_act_src){
    e_rep_act_src = g_new0 (gchar,strlen(event->rep_act_src)*2+1);
    gda_connection_escape_string (sim_database_get_conn (ossim.dbossim),event->rep_act_src,e_rep_act_src);	
  }
  if (event->rep_act_dst){
    e_rep_act_dst = g_new0 (gchar,strlen(event->rep_act_dst)*2+1);
    gda_connection_escape_string (sim_database_get_conn (ossim.dbossim),event->rep_act_dst,e_rep_act_dst);	
  }

  /* Escape de character data*/
  /* ossimdb */
  for (i = 0; i < N_TEXT_FIELDS; i++)
    {
      if (event->textfields[i] != NULL)
        {
          e_fields[i] = g_new0(gchar, strlen(event->textfields[i]) * 2 + 1);
          gda_connection_escape_string(sim_database_get_conn(ossim.dbossim),
              event->textfields[i], e_fields[i]);
        }
      else
        {
          e_fields[i] = NULL;
        }
    }

  st = g_string_new("INSERT INTO event "
    "(id, timestamp, tzone, sensor, interface, type, plugin_id, plugin_sid, "
    "protocol, src_ip, dst_ip, src_port, dst_port, "
    "event_condition, value, time_interval, "
    "priority, reliability, asset_src, asset_dst, risk_c, risk_a, alarm, "
    "snort_sid, snort_cid, rep_prio_src, rep_prio_dst, rep_rel_src, rep_rel_dst, rep_act_src, rep_act_dst, uuid ");
  for (i = 0; i < N_TEXT_FIELDS; i++)
    {
      g_string_append_printf(st, ",%s", sim_text_field_get_name(i));
    }
  g_string_append_printf(st, ") VALUES  (%d, '%s', %4.2f, '%s', '%s', %d, %d, %d,"
    " %d, %u, %u, %d, %d, %d, '%s', %d, %d, %d, %d, %d, %d, %d, %d, %u, %u, "
    " %u, %u, %u, %u , '%s' ,'%s','%s' ", 
                         event->id, 
                         timestamp,
                         event->tzone,
                         (event->sensor) ? event->sensor : "", 
                         (event->interface) ? event->interface : "",
                         event->type,
                         event->plugin_id, event->plugin_sid, event->protocol,
                         (event->src_ia) ? sim_inetaddr_ntohl(event->src_ia) : -1,
                         (event->dst_ia) ? sim_inetaddr_ntohl(event->dst_ia) : -1,
                         event->src_port, event->dst_port, event->condition,
                         (event->value) ? event->value : "", event->interval, event->priority,
                         event->reliability, event->asset_src, event->asset_dst, c, a,
                         event->alarm, event->snort_sid, event->snort_cid,
                         event->rep_prio_src,
                         event->rep_prio_dst,
                         event->rep_rel_src,
                         event->rep_rel_dst,
                         (event->rep_act_src) ? e_rep_act_src : "",
                         (event->rep_act_dst) ? e_rep_act_dst : "",
                         (uuid_is_null(event->uuid) != 1) ? uuidtext : "");

  for (i = 0; i < N_TEXT_FIELDS; i++)
    {
      g_string_append_printf(st, ",'%s'",
          event->textfields[i] != NULL ? e_fields[i] : "");
    }
  g_string_append(st, ");\n");

  g_free (e_rep_act_src);
  g_free (e_rep_act_dst);

  /* Free memory*/
  for (i = 0; i < N_TEXT_FIELDS; i++)
    {
      g_free(e_fields[i]);
    }

  return g_string_free(st, FALSE);
}