/** * http_ftp_initiate_passive_data: * @self: HttpProxy instance * * This function is called to initiate a passive data connection to the FTP * server. If it returns FALSE an active connection might still be * attempted. (however it is currently unimplemented). * * It currently creates the ZAttach object only does not start the actual * connection, it is done somewhat later in the http_ftp_complete_data() * function. **/ static gboolean http_ftp_initiate_passive_data(HttpProxy *self) { gchar response_msg[1024]; gint status; gchar *start, *end; gint i; gint ftp_pasv_endpoint[6]; gchar ip[16]; ZSockAddr *peer; ZAttachParams params; if (!http_ftp_communicate(self, "PASV", NULL, &status, response_msg, sizeof(response_msg))) return FALSE; if (status != 227) return FALSE; start = strchr(response_msg, '('); if (!start) { /* hmm no '(' in PASV response */ return FALSE; } start++; for (i = 0; i < 6; i++) { ftp_pasv_endpoint[i] = strtol(start, &end, 10); if ((i < 5 && *end != ',') || (i == 5 && *end != ')')) { g_string_sprintf(self->error_info, "Response to PASV is invalid; response='%s'", response_msg); return FALSE; } start = end + 1; } g_snprintf(ip, sizeof(ip), "%d.%d.%d.%d", ftp_pasv_endpoint[0], ftp_pasv_endpoint[1], ftp_pasv_endpoint[2], ftp_pasv_endpoint[3]); peer = z_sockaddr_inet_new(ip, 256 * ftp_pasv_endpoint[4] + ftp_pasv_endpoint[5]); memset(¶ms, 0, sizeof(params)); params.timeout = 30000; self->ftp_data_attach = z_attach_new(&self->super, ZD_PROTO_TCP, NULL, peer, ¶ms, NULL, NULL, NULL); z_sockaddr_unref(peer); /* attach not started yet */ return TRUE; }
static ZSockAddr * z_dispatch_iface_to_sa(gint family, void *addr, guint16 port) { gchar buf[16]; switch (family) { case AF_INET: z_inet_ntoa(buf, sizeof(buf), *((struct in_addr *) addr)); return z_sockaddr_inet_new(buf, port); default: g_assert_not_reached(); break; } return NULL; }
gboolean at_test(int index) { ZAuditSession session; ZAuditSessionParams *session_params, local_session_params; gint i, j; gboolean success = FALSE; z_audit_session_init(&session, "test"); if (!TC_INDEX_AUDIT(index) && (!TC_INDEX_IDS(index))) return TRUE; if (TC_INDEX_LOCAL_PARAMS(index)) session_params = &local_session_params; else session_params = &audit_params.defaults; session_params->audit = TC_INDEX_AUDIT(index); session_params->encrypt = TC_INDEX_ENCRYPT(index); session_params->compress = TC_INDEX_COMPRESS(index); session_params->sign = TC_INDEX_SIGN(index); /* session_params->timestamp = TC_INDEX_TIMESTAMP(index);*/ session_params->ids = TC_INDEX_IDS(index); if (session_params->audit) { session_params->audit_dir = "."; } if (session_params->encrypt) { /* private keys can be found in libzaudit/tests directory */ /* crypt.crt */ z_audit_session_params_add_cert(session_params, 0, 0, "-----BEGIN CERTIFICATE-----\n" "MIICkjCCAfugAwIBAgIBATANBgkqhkiG9w0BAQUFADBGMQswCQYDVQQGEwJIVTET\n" "MBEGA1UECBMKU29tZS1TdGF0ZTEQMA4GA1UEChMHQmFsYWJpdDEQMA4GA1UEAxMH\n" "Q0EgY2VydDAeFw0wNzA3MTYxMTI4MTdaFw0wODA3MTUxMTI4MTdaMFsxCzAJBgNV\n" "BAYTAkhVMRMwEQYDVQQIEwpTb21lLVN0YXRlMREwDwYDVQQHEwhidWRhcGVzdDEQ\n" "MA4GA1UEChMHYmFsYWJpdDESMBAGA1UEAxMJc3plcnZlci0xMIGfMA0GCSqGSIb3\n" "DQEBAQUAA4GNADCBiQKBgQCzWf2b3XM4PeOfY7e7K6jL9D58LqC0K6uFxTTvJYnS\n" "9OcE0ASp63XZILGoxFo52tSvychmGfWpJYQHTEi44jpU+tH5oLIFl4p4IC9Ve+lw\n" "b77zBfK690a3nRLDLDwSyVB7/UUom1MnrsdUZhrgReeBcTK1pUy92CgvY7fvtjIx\n" "PQIDAQABo3sweTAJBgNVHRMEAjAAMCwGCWCGSAGG+EIBDQQfFh1PcGVuU1NMIEdl\n" "bmVyYXRlZCBDZXJ0aWZpY2F0ZTAdBgNVHQ4EFgQUbnnt81QIwnORFbICZCCL5mqB\n" "F8EwHwYDVR0jBBgwFoAU0Syv/mmYl00etpycN5VyAeqdc3EwDQYJKoZIhvcNAQEF\n" "BQADgYEAZ4MeBDNzW1JmLmM+yh2SWu1HSzjcwrN8W3qsmm26zOPzcFLNXT0BQKW5\n" "Es4UT+qffpq0VDdFyS88QFS2WNcRZkDYQmmthzGuaNnLpS4/esVXuJ5xQJeUN0Kx\n" "V1hS/v3yYp4GKyMjq3Is+8k525fXkalEMxM2dMG1nbH+EJ0kjpA=\n" "-----END CERTIFICATE-----\n"); /* 4eyes.crt */ z_audit_session_params_add_cert(session_params, 0, 0, "-----BEGIN CERTIFICATE-----\n" "MIICNTCCAZ4CAQIwDQYJKoZIhvcNAQEEBQAwYjELMAkGA1UEBhMCSFUxETAPBgNV\n" "BAcTCEJ1ZGFwZXN0MRgwFgYDVQQKEw9CYWxhQml0IElUIEx0ZC4xJjAkBgNVBAMT\n" "HVRydXN0ZWQgSW50ZXJuZXQgQ2VydGlmaWNhdGVzMB4XDTA0MDkxNjEyMjcyM1oX\n" "DTA0MDkxODEyMjcyM1owZDELMAkGA1UEBhMCSFUxETAPBgNVBAcTCEJ1ZGFwZXN0\n" "MRcwFQYDVQQKEw5CYWxhQml0IElUIEx0ZDERMA8GA1UECxMIaW50cmFuZXQxFjAU\n" "BgNVBAMTDXd3d2h1LmJhbGFiaXQwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGB\n" "AK62iH4tQ6wsaUPHpFuJTpD4v4OaNH0EUpfch8qpbUB9SiZE7qFYMzOKQ5jfRVs3\n" "0NS+dXghwSraxAfoZkXxWMXlyJANPqXMXzpGCcwbf0/pwL81//yYe8YkC27Le+2z\n" "T4AyFVZy7RCj4G4Cwsx0Vnmife47gGevSrdiGEgLLQ+7AgMBAAEwDQYJKoZIhvcN\n" "AQEEBQADgYEALBYONWgvOLg0WGtbKg4C/E2wJQcd9flBnc+zfHoGeIdqnT45gxah\n" "oko00oEfSmtefnixE8onysKUFX6F/sFbn4xSj0LDq4FjSmPvOWEJrGaOBRmNtvjs\n" "33zFKFUaB/iN6SUrUB/zEqkSxAB5FIyRXPaHwvxDH6Xl+7T2E5dYi1I=\n" "-----END CERTIFICATE-----\n"); } if (session_params->sign) { /* crypt.crt & crypt.key */ session_params->sign_private_key = "-----BEGIN RSA PRIVATE KEY-----\n" "MIICXQIBAAKBgQCzWf2b3XM4PeOfY7e7K6jL9D58LqC0K6uFxTTvJYnS9OcE0ASp\n" "63XZILGoxFo52tSvychmGfWpJYQHTEi44jpU+tH5oLIFl4p4IC9Ve+lwb77zBfK6\n" "90a3nRLDLDwSyVB7/UUom1MnrsdUZhrgReeBcTK1pUy92CgvY7fvtjIxPQIDAQAB\n" "AoGBALL8HN7+mizHfrCjOEl/IZ4gqncNpW0Io80E6HW81ZWEuEQSQIU+qUY9nW7a\n" "PVy9aUHhMq/KOmJKQT9zPqPbiO93P9ZkESdkJG5iG3uPyEpFUp66AC07B7kAaTjW\n" "g1W28i0lBPGcLqECSL0SgY6TNOv2fyO3B0fAtkBT+kLjpDuBAkEA49PeY/7aZyry\n" "6Rx8Cu/i9TE2r2UxM1BXSiYPUlHarrrjvtNvOB3Xqmn6GYrK7gELlE9Y8/O/YCor\n" "OZdOY8HSYQJBAMmHjwHxGOeT4OQp6MCqGiYF7buYIQlYeEE5SGNZcqm6EhqO/fa1\n" "tIer0rXgKt5RzHV1hmrbYGzkPrxT/yRHRF0CQE3DBhg5Z5BpH2ojl88f2+Z2usSZ\n" "FHcASBr97KLbX3nePlfm0QJlZTQ8YeoP7n3YC3y+rIzvuHV5TzGkDFSOVmECQQCx\n" "p6OktZIby1vMJzm8ZfeJH17UKaat42SXMtUiZ57SCmqdKQKucr4Df6/Pjx6bP4a6\n" "4PCu0FcvhwHa6T0ZEQ4tAkBVcPTi9lvLeYnVfGaO/Y75DVX/ezhwYI+zMR//w982\n" "gtVuxJkxB0mbNhTDDABcMzgWsxHhyXsSvdj24Z1JRp0c\n" "-----END RSA PRIVATE KEY-----\n"; session_params->sign_certificate = "-----BEGIN CERTIFICATE-----\n" "MIICkjCCAfugAwIBAgIBATANBgkqhkiG9w0BAQUFADBGMQswCQYDVQQGEwJIVTET\n" "MBEGA1UECBMKU29tZS1TdGF0ZTEQMA4GA1UEChMHQmFsYWJpdDEQMA4GA1UEAxMH\n" "Q0EgY2VydDAeFw0wNzA3MTYxMTI4MTdaFw0wODA3MTUxMTI4MTdaMFsxCzAJBgNV\n" "BAYTAkhVMRMwEQYDVQQIEwpTb21lLVN0YXRlMREwDwYDVQQHEwhidWRhcGVzdDEQ\n" "MA4GA1UEChMHYmFsYWJpdDESMBAGA1UEAxMJc3plcnZlci0xMIGfMA0GCSqGSIb3\n" "DQEBAQUAA4GNADCBiQKBgQCzWf2b3XM4PeOfY7e7K6jL9D58LqC0K6uFxTTvJYnS\n" "9OcE0ASp63XZILGoxFo52tSvychmGfWpJYQHTEi44jpU+tH5oLIFl4p4IC9Ve+lw\n" "b77zBfK690a3nRLDLDwSyVB7/UUom1MnrsdUZhrgReeBcTK1pUy92CgvY7fvtjIx\n" "PQIDAQABo3sweTAJBgNVHRMEAjAAMCwGCWCGSAGG+EIBDQQfFh1PcGVuU1NMIEdl\n" "bmVyYXRlZCBDZXJ0aWZpY2F0ZTAdBgNVHQ4EFgQUbnnt81QIwnORFbICZCCL5mqB\n" "F8EwHwYDVR0jBBgwFoAU0Syv/mmYl00etpycN5VyAeqdc3EwDQYJKoZIhvcNAQEF\n" "BQADgYEAZ4MeBDNzW1JmLmM+yh2SWu1HSzjcwrN8W3qsmm26zOPzcFLNXT0BQKW5\n" "Es4UT+qffpq0VDdFyS88QFS2WNcRZkDYQmmthzGuaNnLpS4/esVXuJ5xQJeUN0Kx\n" "V1hS/v3yYp4GKyMjq3Is+8k525fXkalEMxM2dMG1nbH+EJ0kjpA=\n" "-----END CERTIFICATE-----\n"; } if (session_params->ids) { static gint dst_port = 33333; session_params->ids_src = z_sockaddr_inet_new("192.168.0.1", 55555); session_params->ids_dst = z_sockaddr_inet_new("192.168.0.2", dst_port++); } if (!TC_INDEX_LOCAL_PARAMS(index)) { memset(&local_session_params, 0, sizeof(local_session_params)); session_params = &local_session_params; } z_audit_session_params_init(session_params); for (i = 0; i < 10; i++) { ZAuditStream stream; if (!z_audit_stream_init(&stream, &session, ZA_SOURCE_STREAM, session_params, "test", "test1", NULL)) { fprintf(stderr, "error initializing audit stream\n"); goto error; } fprintf(stderr, "Starting stream, stream count=%d\n", i); /* now feed some data */ for (j = 0; j < 1000; j++) { if (!z_audit_stream_data_sent(&stream, sent, sizeof(sent)) || !z_audit_stream_data_sent(&stream, sent, sizeof(sent)) || !z_audit_stream_data_recvd(&stream, recvd, sizeof(recvd))) { fprintf(stderr, "error adding data to audit stream\n"); goto error; } } z_audit_stream_deinit(&stream); } success = TRUE; error: z_audit_session_deinit(&session); return success; }