Package: src:python-infoblox-client
Version: 0.6.0-3
Severity: serious
Tags: ftbfs trixie sid
Dear maintainer:
During a rebuild of all packages in unstable, your package failed to build:
--------------------------------------------------------------------------------
[...]
debian/rules clean
make: pyversions: No such file or directory
py3versions: no X-Python3-Version in control file, using supported versions
dh clean --buildsystem=pybuild --with python3
dh_auto_clean -O--buildsystem=pybuild
dh_autoreconf_clean -O--buildsystem=pybuild
dh_clean -O--buildsystem=pybuild
debian/rules binary
make: pyversions: No such file or directory
py3versions: no X-Python3-Version in control file, using supported versions
dh binary --buildsystem=pybuild --with python3
dh_update_autotools_config -O--buildsystem=pybuild
dh_autoreconf -O--buildsystem=pybuild
dh_auto_configure -O--buildsystem=pybuild
dh_auto_build -O--buildsystem=pybuild
I: pybuild plugin_pyproject:129: Building wheel for python3.13 with "build" module
I: pybuild base:311: python3.13 -m build --skip-dependency-check --no-isolation --wheel --outdir /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13
* Building wheel... /usr/lib/python3/dist-packages/setuptools/_distutils/dist.py:270: UserWarning: Unknown distribution option: 'test_suite'
warnings.warn(msg) /usr/lib/python3/dist-packages/setuptools/_distutils/dist.py:270: UserWarning: Unknown distribution option: 'tests_require'
warnings.warn(msg)
running bdist_wheel
The [wheel] section is deprecated. Use [bdist_wheel] instead. /usr/lib/python3/dist-packages/setuptools/_distutils/cmd.py:124: SetuptoolsDeprecationWarning: bdist_wheel.universal is deprecated
!!
********************************************************************************
With Python 2.7 end-of-life, support for building universal wheels
(i.e., wheels that support both Python 2 and Python 3)
is being obviated.
Please discontinue using this option, or if you still need it,
file an issue with pypa/setuptools describing your use case.
By 2025-Aug-30, you need to update your project and remove deprecated calls
or your builds will no longer be supported.
********************************************************************************
!!
self.finalize_options()
running build
running build_py
creating build/lib/infoblox_client
copying infoblox_client/feature.py -> build/lib/infoblox_client
copying infoblox_client/exceptions.py -> build/lib/infoblox_client
copying infoblox_client/objects.py -> build/lib/infoblox_client
copying infoblox_client/utils.py -> build/lib/infoblox_client
copying infoblox_client/__init__.py -> build/lib/infoblox_client
copying infoblox_client/object_manager.py -> build/lib/infoblox_client
copying infoblox_client/connector.py -> build/lib/infoblox_client
running egg_info
creating infoblox_client.egg-info
writing infoblox_client.egg-info/PKG-INFO
writing dependency_links to infoblox_client.egg-info/dependency_links.txt writing requirements to infoblox_client.egg-info/requires.txt
writing top-level names to infoblox_client.egg-info/top_level.txt
writing manifest file 'infoblox_client.egg-info/SOURCES.txt'
reading manifest file 'infoblox_client.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
warning: no previously-included files matching '__pycache__' found under directory '*'
warning: no previously-included files matching '*.py[co]' found under directory '*'
adding license file 'LICENSE'
adding license file 'AUTHORS.rst'
writing manifest file 'infoblox_client.egg-info/SOURCES.txt'
installing to build/bdist.linux-x86_64/wheel
running install
running install_lib
creating build/bdist.linux-x86_64/wheel
creating build/bdist.linux-x86_64/wheel/infoblox_client
copying build/lib/infoblox_client/feature.py -> build/bdist.linux-x86_64/wheel/./infoblox_client
copying build/lib/infoblox_client/exceptions.py -> build/bdist.linux-x86_64/wheel/./infoblox_client
copying build/lib/infoblox_client/objects.py -> build/bdist.linux-x86_64/wheel/./infoblox_client
copying build/lib/infoblox_client/utils.py -> build/bdist.linux-x86_64/wheel/./infoblox_client
copying build/lib/infoblox_client/__init__.py -> build/bdist.linux-x86_64/wheel/./infoblox_client
copying build/lib/infoblox_client/object_manager.py -> build/bdist.linux-x86_64/wheel/./infoblox_client
copying build/lib/infoblox_client/connector.py -> build/bdist.linux-x86_64/wheel/./infoblox_client
running install_egg_info
Copying infoblox_client.egg-info to build/bdist.linux-x86_64/wheel/./infoblox_client-0.6.0.egg-info
running install_scripts
creating build/bdist.linux-x86_64/wheel/infoblox_client-0.6.0.dist-info/WHEEL creating '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/.tmp-u8o6r_9e/infoblox_client-0.6.0-py2.py3-none-any.whl' and adding 'build/bdist.linux-x86_64/wheel' to it
adding 'infoblox_client/__init__.py'
adding 'infoblox_client/connector.py'
adding 'infoblox_client/exceptions.py'
adding 'infoblox_client/feature.py'
adding 'infoblox_client/object_manager.py'
adding 'infoblox_client/objects.py'
adding 'infoblox_client/utils.py'
adding 'infoblox_client-0.6.0.dist-info/AUTHORS.rst'
adding 'infoblox_client-0.6.0.dist-info/LICENSE'
adding 'infoblox_client-0.6.0.dist-info/METADATA'
adding 'infoblox_client-0.6.0.dist-info/WHEEL'
adding 'infoblox_client-0.6.0.dist-info/top_level.txt'
adding 'infoblox_client-0.6.0.dist-info/RECORD'
removing build/bdist.linux-x86_64/wheel
Successfully built infoblox_client-0.6.0-py2.py3-none-any.whl
I: pybuild plugin_pyproject:144: Unpacking wheel built for python3.13 with "installer" module
dh_auto_test -O--buildsystem=pybuild
I: pybuild base:311: cd /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build; python3.13 -m pytest -v tests -k 'not test_get_object_with_proxy_flag'
============================= test session starts ==============================
platform linux -- Python 3.13.2, pytest-8.3.4, pluggy-1.5.0 -- /usr/bin/python3.13
cachedir: .pytest_cache
rootdir: /<<PKGBUILDDIR>>
plugins: typeguard-4.4.2
collecting ... collected 145 items / 1 deselected / 144 selected
tests/test_connector.py::TestInfobloxConnector::test__check_service_availability PASSED [ 0%]
tests/test_connector.py::TestInfobloxConnector::test__get_object_raises_search_error PASSED [ 1%]
tests/test_connector.py::TestInfobloxConnector::test__handle_get_object_with_max_results_negative PASSED [ 2%]
tests/test_connector.py::TestInfobloxConnector::test__handle_get_object_with_pagination_with_no_record PASSED [ 2%]
tests/test_connector.py::TestInfobloxConnector::test__handle_get_object_with_pagination_with_record PASSED [ 3%]
tests/test_connector.py::TestInfobloxConnector::test__handle_get_object_with_record_more_than_max_results_paging PASSED [ 4%]
tests/test_connector.py::TestInfobloxConnector::test__handle_get_object_without_pagination PASSED [ 4%]
tests/test_connector.py::TestInfobloxConnector::test__handle_get_object_without_pagination_with_record PASSED [ 5%]
tests/test_connector.py::TestInfobloxConnector::test_call_download_file PASSED [ 6%]
tests/test_connector.py::TestInfobloxConnector::test_call_download_file_with_error_403 PASSED [ 6%]
tests/test_connector.py::TestInfobloxConnector::test_call_func PASSED [ 7%] tests/test_connector.py::TestInfobloxConnector::test_call_func_with_http_error PASSED [ 8%]
tests/test_connector.py::TestInfobloxConnector::test_call_func_with_http_error_503 PASSED [ 9%]
tests/test_connector.py::TestInfobloxConnector::test_call_upload_file PASSED [ 9%]
tests/test_connector.py::TestInfobloxConnector::test_call_upload_file_with_error_403 PASSED [ 10%]
tests/test_connector.py::TestInfobloxConnector::test_construct_url_absolute_path_fails PASSED [ 11%]
tests/test_connector.py::TestInfobloxConnector::test_construct_url_with_force_proxy PASSED [ 11%]
tests/test_connector.py::TestInfobloxConnector::test_construct_url_with_query_params_and_extattrs PASSED [ 12%]
tests/test_connector.py::TestInfobloxConnector::test_construct_url_with_query_params_containing_array PASSED [ 13%]
tests/test_connector.py::TestInfobloxConnector::test_create_object PASSED [ 13%]
tests/test_connector.py::TestInfobloxConnector::test_create_object_raises_member_assigned PASSED [ 14%]
tests/test_connector.py::TestInfobloxConnector::test_create_object_with_extattrs PASSED [ 15%]
tests/test_connector.py::TestInfobloxConnector::test_delete_object PASSED [ 15%]
tests/test_connector.py::TestInfobloxConnector::test_delete_object_with_http_error PASSED [ 16%]
tests/test_connector.py::TestInfobloxConnector::test_delete_object_with_http_error_503 PASSED [ 17%]
tests/test_connector.py::TestInfobloxConnector::test_get_object PASSED [ 18%] tests/test_connector.py::TestInfobloxConnector::test_get_object_override_paging PASSED [ 18%]
tests/test_connector.py::TestInfobloxConnector::test_get_object_with_cookies PASSED [ 19%]
tests/test_connector.py::TestInfobloxConnector::test_get_object_with_default_and_extattrs PASSED [ 20%]
tests/test_connector.py::TestInfobloxConnector::test_get_object_with_pagination_with_no_result PASSED [ 20%]
tests/test_connector.py::TestInfobloxConnector::test_get_object_with_pagination_with_result PASSED [ 21%]
tests/test_connector.py::TestInfobloxConnector::test_get_object_with_specific_return_fields PASSED [ 22%]
tests/test_connector.py::TestInfobloxConnector::test_get_object_without_proxy_flag PASSED [ 22%]
tests/test_connector.py::TestInfobloxConnector::test_get_objects_with_extattrs PASSED [ 23%]
tests/test_connector.py::TestInfobloxConnector::test_get_objects_with_max_results PASSED [ 24%]
tests/test_connector.py::TestInfobloxConnector::test_get_objects_with_max_results_as_connector_opt PASSED [ 25%]
tests/test_connector.py::TestInfobloxConnector::test_max_results_priority PASSED [ 25%]
tests/test_connector.py::TestInfobloxConnector::test_update_object PASSED [ 26%]
tests/test_connector.py::TestInfobloxConnector::test_update_object_with_http_error PASSED [ 27%]
tests/test_connector.py::TestInfobloxConnector::test_update_object_with_http_error_503 PASSED [ 27%]
tests/test_connector.py::TestInfobloxConnectorStaticMethods::test__parse_reply PASSED [ 28%]
tests/test_connector.py::TestInfobloxConnectorStaticMethods::test__parse_reply_raises_connection_error PASSED [ 29%]
tests/test_connector.py::TestInfobloxConnectorStaticMethods::test_allow_options_as_dict PASSED [ 29%]
tests/test_connector.py::TestInfobloxConnectorStaticMethods::test_blank_values_not_allowed PASSED [ 30%]
tests/test_connector.py::TestInfobloxConnectorStaticMethods::test_blank_values_not_allowed_cert_auth PASSED [ 31%]
tests/test_connector.py::TestInfobloxConnectorStaticMethods::test_cloud_api_detection PASSED [ 31%]
tests/test_connector.py::TestInfobloxConnectorStaticMethods::test_default_options PASSED [ 32%]
tests/test_connector.py::TestInfobloxConnectorStaticMethods::test_exception_raised_for_non_authorized PASSED [ 33%]
tests/test_connector.py::TestInfobloxConnectorStaticMethods::test_incomplete_options_raises_exception PASSED [ 34%]
tests/test_connector.py::TestInfobloxConnectorStaticMethods::test_is_cloud_wapi_raises_exception PASSED [ 34%]
tests/test_connector.py::TestInfobloxConnectorStaticMethods::test_neutron_exception_is_raised_on_any_request_error PASSED [ 35%]
tests/test_connector.py::TestInfobloxConnectorStaticMethods::test_no_exceptions_for_ok_statuses PASSED [ 36%]
tests/test_connector.py::TestInfobloxConnectorStaticMethods::test_non_cloud_api_detection PASSED [ 36%]
tests/test_connector.py::TestInfobloxConnectorStaticMethods::test_session_auth PASSED [ 37%]
tests/test_connector.py::TestInfobloxConnectorStaticMethods::test_session_cert PASSED [ 38%]
tests/test_feature.py::TestFeature::test_features PASSED [ 38%] tests/test_feature.py::TestFeature::test_features_with_connector PASSED [ 39%] tests/test_feature.py::TestFeature::test_wapi_version_util PASSED [ 40%] tests/test_object_manager.py::ObjectManagerTestCase::test_bind_names_updates_host_record PASSED [ 40%]
tests/test_object_manager.py::ObjectManagerTestCase::test_bind_names_updates_host_record_network_view PASSED [ 41%]
tests/test_object_manager.py::ObjectManagerTestCase::test_bind_names_with_a_record PASSED [ 42%]
tests/test_object_manager.py::ObjectManagerTestCase::test_create_dns_view_creates_view_object PASSED [ 43%]
tests/test_object_manager.py::ObjectManagerTestCase::test_create_dns_zone_creates_zone_auth_object PASSED [ 43%]
tests/test_object_manager.py::ObjectManagerTestCase::test_create_dns_zone_with_grid_secondaries PASSED [ 44%]
tests/test_object_manager.py::ObjectManagerTestCase::test_create_ea_definition PASSED [ 45%]
tests/test_object_manager.py::ObjectManagerTestCase::test_create_ea_definition_exception_reraise PASSED [ 45%]
tests/test_object_manager.py::ObjectManagerTestCase::test_create_ea_definition_exception_silenced PASSED [ 46%]
tests/test_object_manager.py::ObjectManagerTestCase::test_create_fixed_address_for_given_ip PASSED [ 47%]
tests/test_object_manager.py::ObjectManagerTestCase::test_create_fixed_address_from_cidr PASSED [ 47%]
tests/test_object_manager.py::ObjectManagerTestCase::test_create_fixed_address_from_range PASSED [ 48%]
tests/test_object_manager.py::ObjectManagerTestCase::test_create_host_record_creates_host_record_object PASSED [ 49%]
tests/test_object_manager.py::ObjectManagerTestCase::test_create_host_record_range_create_host_record_object PASSED [ 50%]
tests/test_object_manager.py::ObjectManagerTestCase::test_create_ip_range_creates_range_object PASSED [ 50%]
tests/test_object_manager.py::ObjectManagerTestCase::test_create_net_view_creates_network_view_object PASSED [ 51%]
tests/test_object_manager.py::ObjectManagerTestCase::test_create_required_ea_definitions PASSED [ 52%]
tests/test_object_manager.py::ObjectManagerTestCase::test_create_required_ea_definitions_with_exception PASSED [ 52%]
tests/test_object_manager.py::ObjectManagerTestCase::test_default_net_view_is_never_deleted PASSED [ 53%]
tests/test_object_manager.py::ObjectManagerTestCase::test_delete_fixed_address PASSED [ 54%]
tests/test_object_manager.py::ObjectManagerTestCase::test_delete_fixed_address_not_found PASSED [ 54%]
tests/test_object_manager.py::ObjectManagerTestCase::test_delete_host_record_deletes_host_record_object PASSED [ 55%]
tests/test_object_manager.py::ObjectManagerTestCase::test_delete_ip_range_deletes_infoblox_object PASSED [ 56%]
tests/test_object_manager.py::ObjectManagerTestCase::test_delete_network_deletes_infoblox_network PASSED [ 56%]
tests/test_object_manager.py::ObjectManagerTestCase::test_delete_network_view_deletes_infoblox_object PASSED [ 57%]
tests/test_object_manager.py::ObjectManagerTestCase::test_delete_object_by_ref PASSED [ 58%]
tests/test_object_manager.py::ObjectManagerTestCase::test_delete_objects_associated_with_a_record PASSED [ 59%]
tests/test_object_manager.py::ObjectManagerTestCase::test_find_host_records_by_mac PASSED [ 59%]
tests/test_object_manager.py::ObjectManagerTestCase::test_find_hostname PASSED [ 60%]
tests/test_object_manager.py::ObjectManagerTestCase::test_get_all_ea_defintions PASSED [ 61%]
tests/test_object_manager.py::ObjectManagerTestCase::test_get_fixed_addresses_by_mac PASSED [ 61%]
tests/test_object_manager.py::ObjectManagerTestCase::test_get_member_gets_member_object PASSED [ 62%]
tests/test_object_manager.py::ObjectManagerTestCase::test_get_network_gets_network_object PASSED [ 63%]
tests/test_object_manager.py::ObjectManagerTestCase::test_has_networks PASSED [ 63%]
tests/test_object_manager.py::ObjectManagerTestCase::test_member_is_assigned_as_list_on_network_create PASSED [ 64%]
tests/test_object_manager.py::ObjectManagerTestCase::test_object_is_not_created_if_already_exists PASSED [ 65%]
tests/test_object_manager.py::ObjectManagerTestCase::test_restart_services_calls_infoblox_function PASSED [ 65%]
tests/test_object_manager.py::ObjectManagerTestCase::test_unbind_names_with_a_record PASSED [ 66%]
tests/test_object_manager.py::ObjectManagerTestCase::test_update_dns_zone_attrs PASSED [ 67%]
tests/test_object_manager.py::ObjectManagerTestCase::test_update_network_merges_eas PASSED [ 68%]
tests/test_object_manager.py::ObjectManagerTestCase::test_update_network_updates_eas PASSED [ 68%]
tests/test_object_manager.py::ObjectManagerTestCase::test_update_network_updates_object PASSED [ 69%]
tests/test_objects.py::TestObjects::test_Create_MX_Record PASSED [ 70%] tests/test_objects.py::TestObjects::test_TXT_Record PASSED [ 70%] tests/test_objects.py::TestObjects::test__process_value PASSED [ 71%] tests/test_objects.py::TestObjects::test__remap_fields_support_unknown_fields PASSED [ 72%]
tests/test_objects.py::TestObjects::test__search_non_searchable_fields PASSED [ 72%]
tests/test_objects.py::TestObjects::test_call_upload_file PASSED [ 73%] tests/test_objects.py::TestObjects::test_create_IP PASSED [ 74%] tests/test_objects.py::TestObjects::test_create_fails_on_multiple_api_objects PASSED [ 75%]
tests/test_objects.py::TestObjects::test_create_fixed_address PASSED [ 75%] tests/test_objects.py::TestObjects::test_create_fixed_address_v6 PASSED [ 76%] tests/test_objects.py::TestObjects::test_create_host_record_with_ip PASSED [ 77%]
tests/test_objects.py::TestObjects::test_create_host_record_with_ttl PASSED [ 77%]
tests/test_objects.py::TestObjects::test_ea_parse_generate PASSED [ 78%] tests/test_objects.py::TestObjects::test_ea_returns_ea_dict PASSED [ 79%] tests/test_objects.py::TestObjects::test_ea_returns_none PASSED [ 79%] tests/test_objects.py::TestObjects::test_ea_set_get PASSED [ 80%] tests/test_objects.py::TestObjects::test_ea_to_dict PASSED [ 81%] tests/test_objects.py::TestObjects::test_fixed_address_v6 PASSED [ 81%] tests/test_objects.py::TestObjects::test_get_tenant PASSED [ 82%] tests/test_objects.py::TestObjects::test_ip_version PASSED [ 83%] tests/test_objects.py::TestObjects::test_member_searchable_ipv4 PASSED [ 84%] tests/test_objects.py::TestObjects::test_member_searchable_ipv6 PASSED [ 84%] tests/test_objects.py::TestObjects::test_search_and_delete_MX_Record PASSED [ 85%]
tests/test_objects.py::TestObjects::test_search_and_delete_host_record PASSED [ 86%]
tests/test_objects.py::TestObjects::test_search_ipaddress PASSED [ 86%] tests/test_objects.py::TestObjects::test_search_network PASSED [ 87%] tests/test_objects.py::TestObjects::test_search_network_v6 PASSED [ 88%] tests/test_objects.py::TestObjects::test_search_network_v6_using_network_field PASSED [ 88%]
tests/test_objects.py::TestObjects::test_search_network_with_grid_dhcp_members PASSED [ 89%]
tests/test_objects.py::TestObjects::test_search_network_with_ms_dhcp_members PASSED [ 90%]
tests/test_objects.py::TestObjects::test_search_network_with_results PASSED [ 90%]
tests/test_objects.py::TestObjects::test_update_MX_Record PASSED [ 91%] tests/test_objects.py::TestObjects::test_update_fields_on_create PASSED [ 92%] tests/test_objects.py::TestObjects::test_update_fields_on_create_v6 PASSED [ 93%]
tests/test_objects.py::TestObjects::test_update_from_dict PASSED [ 93%] tests/test_utils.py::TestUtils::test_generate_duid PASSED [ 94%] tests/test_utils.py::TestUtils::test_generate_duid_with_invalid_mac PASSED [ 95%]
tests/test_utils.py::TestUtils::test_is_invalid_ip FAILED [ 95%] tests/test_utils.py::TestUtils::test_is_valid_ip PASSED [ 96%] tests/test_utils.py::TestUtils::test_paging PASSED [ 97%] tests/test_utils.py::TestUtils::test_safe_json_load PASSED [ 97%] tests/test_utils.py::TestUtils::test_safe_json_load_no_exception PASSED [ 98%] tests/test_utils.py::TestUtils::test_try_value_to_bool PASSED [ 99%] tests/test_utils.py::TestUtils::test_try_value_to_bool_not_strict PASSED [100%]
=================================== FAILURES ===================================
_________________________ TestUtils.test_is_invalid_ip _________________________
self = <tests.test_utils.TestUtils testMethod=test_is_invalid_ip>
def test_is_invalid_ip(self):
ips = ('192.data.0.1',
'text',
None,
'192.168.159.658')
for ip in ips:
self.assertEqual(False, utils.is_valid_ip(ip))
tests/test_utils.py:35:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ infoblox_client/utils.py:34: in is_valid_ip
netaddr.IPAddress(ip) /usr/lib/python3/dist-packages/netaddr/ip/__init__.py:333: in __init__
self._value = module.str_to_int(addr, flags)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
addr = None, flags = 0
def str_to_int(addr, flags=0):
"""
:param addr: An IPv4 dotted decimal address in string form.
:param flags: decides which rules are applied to the interpretation of the
addr value. Supported constants are INET_PTON and ZEROFILL. See the
:class:`IPAddress` documentation for details.
:return: The equivalent unsigned integer for a given IPv4 address.
"""
error = AddrFormatError('%r is not a valid IPv4 address string!' % (addr,))
if ':' in addr:
E TypeError: argument of type 'NoneType' is not iterable
/usr/lib/python3/dist-packages/netaddr/strategy/ipv4.py:118: TypeError =========================== short test summary info ============================
FAILED tests/test_utils.py::TestUtils::test_is_invalid_ip - TypeError: argume...
================= 1 failed, 143 passed, 1 deselected in 0.33s ==================
E: pybuild pybuild:389: test: plugin pyproject failed with: exit code=1: cd /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build; python3.13 -m pytest -v tests -k 'not test_get_object_with_proxy_flag'
dh_auto_test: error: pybuild --test --test-pytest -i python{version} -p 3.13 returned exit code 13
make: *** [debian/rules:9: binary] Error 25
dpkg-buildpackage: error: debian/rules binary subprocess returned exit status 2 --------------------------------------------------------------------------------
The above is just how the build ends and not necessarily the most relevant part.
If required, the full build log is available here:
https://people.debian.org/~sanvila/build-logs/202503/
About the archive rebuild: The build was made on virtual machines from AWS, using sbuild and a reduced chroot with only build-essential packages.
If you could not reproduce the bug please contact me privately, as I
am willing to provide ssh access to a virtual machine where the bug is
fully reproducible.
If this is really a bug in one of the build-depends, please use
reassign and add an affects on src:python-infoblox-client, so that this is still
visible in the BTS web page for this package.
Thanks.
--- SoupGate-Win32 v1.05
* Origin: fsxNet Usenet Gateway (21:1/5)