gnomikos / traixroute Goto Github PK
View Code? Open in Web Editor NEWtraIXroute
License: GNU General Public License v3.0
traIXroute
License: GNU General Public License v3.0
There is still a bug when measuring rule hits in stats.
Hello,
I wanted to try out your tool, but I only get the exception KeyError: '141'
. This happens for all probe requests, regardless whether I use an IP, a domain, and even for localhost.
I installed version 2.3, because I could not install version 2.2 (the default using pip).
Version 2.2 does not install due to build failures of OpenSSL in the cryptography dependency, which are only fixed in later versions.
I ran
$ traixroute -u -process
Dataset files are missing.
Updating the database...
Started downloading PDB dataset.
Started downloading PCH dataset.
Started downloading RouteViews dataset.
Routeviews has been updated successfully.
PDB dataset has been updated successfully.
PCH dataset has been updated successfully.
Database has been updated successfully.
$ traixroute -process probe -dest 127.0.0.1 -t
Imported 13 IXP detection rules from /home/jbushart/traixroute/configuration/rules.txt.
traIXroute using traceroute with default options.
traIXroute process with id 9700 has just started.
Loading from Database.
Loading from PCH, PDB, Routeviews and additional_info.txt.
concurrent.futures.process._RemoteTraceback:
"""
Traceback (most recent call last):
File "/usr/lib64/python3.6/concurrent/futures/process.py", line 175, in _process_worker
r = call_item.fn(*call_item.args, **call_item.kwargs)
File "/usr/lib64/python3.6/concurrent/futures/process.py", line 153, in _process_chunk
return [fn(*args) for args in chunk]
File "/usr/lib64/python3.6/concurrent/futures/process.py", line 153, in <listcomp>
return [fn(*args) for args in chunk]
File "/home/jbushart/.local/lib/python3.6/site-packages/traixroute/application.py", line 86, in analyze_measurement
db_extract.dbextract()
File "/home/jbushart/.local/lib/python3.6/site-packages/traixroute/handler/database_extract.py", line 198, in dbextract
pch_subnet2names = results[2].result()[0]
File "/usr/lib64/python3.6/concurrent/futures/_base.py", line 425, in result
return self.__get_result()
File "/usr/lib64/python3.6/concurrent/futures/_base.py", line 384, in __get_result
raise self._exception
File "/usr/lib64/python3.6/concurrent/futures/thread.py", line 56, in run
result = self.fn(*self.args, **self.kwargs)
File "/home/jbushart/.local/lib/python3.6/site-packages/traixroute/handler/handle_pch.py", line 70, in pch_handle_main
reserved_tree, long_mem, IXP_region)
File "/home/jbushart/.local/lib/python3.6/site-packages/traixroute/handler/handle_pch.py", line 179, in pch_handle_sub
IXP_cc[ips] = IXP_region[mykey]
KeyError: '141'
"""
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/home/jbushart/.local/bin/traixroute", line 11, in <module>
load_entry_point('traixroute==2.3', 'console_scripts', 'traixroute')()
File "/home/jbushart/.local/lib/python3.6/site-packages/traixroute/application.py", line 389, in run_traixroute
traIXroute_module.main()
File "/home/jbushart/.local/lib/python3.6/site-packages/traixroute/application.py", line 317, in main
self.traixroute_core(homepath, input_list, useTraIXroute, self.arguments, manager)
File "/home/jbushart/.local/lib/python3.6/site-packages/traixroute/application.py", line 371, in traixroute_core
for [rule_hits, json_obj, txt_obj] in executor.map(self.analyze_measurement, sublisted_data):
File "/usr/lib64/python3.6/concurrent/futures/process.py", line 366, in _chain_from_iterable_of_lists
for element in iterable:
File "/usr/lib64/python3.6/concurrent/futures/_base.py", line 586, in result_iterator
yield fs.pop().result()
File "/usr/lib64/python3.6/concurrent/futures/_base.py", line 432, in result
return self.__get_result()
File "/usr/lib64/python3.6/concurrent/futures/_base.py", line 384, in __get_result
raise self._exception
KeyError: '141'
cmdpwnd@debian:~$ cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 9 (stretch)"
NAME="Debian GNU/Linux"
VERSION_ID="9"
VERSION="9 (stretch)"
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"
cmdpwnd@debian:~$
cmdpwnd@debian:~$ uname -a
Linux debian 4.9.0-8-amd64 #1 SMP Debian 4.9.130-2 (2018-10-27) x86_64 GNU/Linux
cmdpwnd@debian:~$
cmdpwnd@debian:~$ python -V
Python 3.7.2
cmdpwnd@debian:~$
cmdpwnd@debian:~$ traixroute -v
current version of traixroute: 2.3
cmdpwnd@debian:~$
cmdpwnd@debian:~$ traixroute -thread -u -asn -dns probe -t -dest 4.2.2.2
Updating the database...
Started downloading PDB dataset.
Started downloading PCH dataset.
Started downloading RouteViews dataset.
Routeviews has been updated successfully.
PCH dataset has been updated successfully.
PDB dataset has been updated successfully.
Database has been updated successfully.
Loading from PCH, PDB, Routeviews and additional_info.txt.
additional_info.txt: Invalid syntax in line 20. Exiting.
cmdpwnd@debian:~$
cmdpwnd@debian:~$ cat /home/cmdpwnd/.local/lib/python3.7/site-packages/traixroute/configuration/additional_info.txt
# Copyright (C) 2016 Institute of Computer Science of the Foundation for Research and Technology - Hellas (FORTH)
# Authors: Michalis Bamiedakis, Dimitris Mavrommatis and George Nomikos
#
# Contact Author: George Nomikos
# Contact Email: gnomikos [at] ics.forth.gr
#
# This file is part of traIXroute.
#
# traIXroute is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, version 3.
#
# traIXroute is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with traIXroute. If not, see <http://www.gnu.org/licenses/>.
#-----------------FORMAT----------------
#For IXP Membership data:
#IXP-IP,ASN,IXP Long Name,IXP Short Name, IXP country, IXP city
#8.8.8.8, 1234, IXP long name, IXP short name, IXP country, IXP city
#
#For IXP Prefixes data:
#IXP Prefix,IXP Long Name,IXP Short Name, IXP country, IXP city
#e.g. 176.126.38.0/24, GR-IX, GR-IX, IXP country, IXP city
#
#---------------IMPORTANT---------------
#IXP IPs like A.B.C.0 or A.B.C.255 are skipped.
cmdpwnd@debian:~$
Hi,
When I try to install traixroute , #pip3 install traixroute , on Debian 11 the following occurs :
ERROR: Failed building wheel for cffi
Running setup.py clean for cffi
Failed to build cryptography cffi
Installing collected packages: cffi, requests, cryptography, pyOpenSSL, ripe.atlas.cousteau, pysubnettree, traixroute
Attempting uninstall: cffi
Found existing installation: cffi 1.14.6
Uninstalling cffi-1.14.6:
Successfully uninstalled cffi-1.14.6
Running setup.py install for cffi: started
Running setup.py install for cffi: finished with status 'error'
ERROR: Command errored out with exit status 1:
command: /usr/bin/python3 -u -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-8p3wozce/cffi_9afcd0c1ba1749e3903a0c0654adc034/setup.py'"'"'; file='"'"'/tmp/pip-install-8p3wozce/cffi_9afcd0c1ba1749e3903a0c0654adc034/setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(file) if os.path.exists(file) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, file, '"'"'exec'"'"'))' install --record /tmp/pip-record-ximr4dq7/install-record.txt --single-version-externally-managed --user --prefix= --compile --install-headers /home/ebadi/.local/include/python3.9/cffi
cwd: /tmp/pip-install-8p3wozce/cffi_9afcd0c1ba1749e3903a0c0654adc034/
Complete output (254 lines):
running install
running build
running build_py
creating build
creating build/lib.linux-x86_64-3.9
creating build/lib.linux-x86_64-3.9/cffi
copying cffi/verifier.py -> build/lib.linux-x86_64-3.9/cffi
copying cffi/model.py -> build/lib.linux-x86_64-3.9/cffi
copying cffi/cparser.py -> build/lib.linux-x86_64-3.9/cffi
copying cffi/ffiplatform.py -> build/lib.linux-x86_64-3.9/cffi
copying cffi/init.py -> build/lib.linux-x86_64-3.9/cffi
copying cffi/backend_ctypes.py -> build/lib.linux-x86_64-3.9/cffi
copying cffi/vengine_cpy.py -> build/lib.linux-x86_64-3.9/cffi
copying cffi/vengine_gen.py -> build/lib.linux-x86_64-3.9/cffi
copying cffi/commontypes.py -> build/lib.linux-x86_64-3.9/cffi
copying cffi/lock.py -> build/lib.linux-x86_64-3.9/cffi
copying cffi/cffi_opcode.py -> build/lib.linux-x86_64-3.9/cffi
copying cffi/api.py -> build/lib.linux-x86_64-3.9/cffi
copying cffi/recompiler.py -> build/lib.linux-x86_64-3.9/cffi
copying cffi/setuptools_ext.py -> build/lib.linux-x86_64-3.9/cffi
copying cffi/_cffi_include.h -> build/lib.linux-x86_64-3.9/cffi
copying cffi/parse_c_type.h -> build/lib.linux-x86_64-3.9/cffi
copying cffi/_embedding.h -> build/lib.linux-x86_64-3.9/cffi
running build_ext
building '_cffi_backend' extension
creating build/temp.linux-x86_64-3.9
creating build/temp.linux-x86_64-3.9/c
x86_64-linux-gnu-gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -ffile-prefix-map=/build/python3.9-RNBry6/python3.9-3.9.2=. -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -g -ffile-prefix-map=/build/python3.9-RNBry6/python3.9-3.9.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -DUSE__THREAD -I/usr/include/python3.9 -c c/_cffi_backend.c -o build/temp.linux-x86_64-3.9/c/_cffi_backend.o
In file included from c/_cffi_backend.c:274:
c/minibuffer.h: In function ‘mb_ass_slice’:
c/minibuffer.h:66:5: warning: ‘PyObject_AsReadBuffer’ is deprecated [-Wdeprecated-declarations]
66 | if (PyObject_AsReadBuffer(other, &buffer, &buffer_len) < 0)
| ^~
In file included from /usr/include/python3.9/Python.h:151,
from c/_cffi_backend.c:2:
/usr/include/python3.9/abstract.h:343:17: note: declared here
343 | PyAPI_FUNC(int) PyObject_AsReadBuffer(PyObject *obj,
| ^~~~~~~~~~~~~~~~~~~~~
In file included from c/_cffi_backend.c:277:
c/file_emulator.h: In function ‘PyFile_AsFile’:
c/file_emulator.h:54:14: warning: assignment discards ‘const’ qualifier from pointer target type [-Wdiscarded-qualifiers]
54 | mode = PyText_AsUTF8(ob_mode);
| ^
In file included from c/_cffi_backend.c:281:
c/wchar_helper.h: In function ‘_my_PyUnicode_AsSingleWideChar’:
c/wchar_helper.h:83:5: warning: ‘PyUnicode_AsUnicode’ is deprecated [-Wdeprecated-declarations]
83 | Py_UNICODE *u = PyUnicode_AS_UNICODE(unicode);
| ^~~~~~~~~~
In file included from /usr/include/python3.9/unicodeobject.h:1026,
from /usr/include/python3.9/Python.h:97,
from c/_cffi_backend.c:2:
/usr/include/python3.9/cpython/unicodeobject.h:580:45: note: declared here
580 | Py_DEPRECATED(3.3) PyAPI_FUNC(Py_UNICODE *) PyUnicode_AsUnicode(
| ^~~~~~~~~~~~~~~~~~~
In file included from c/_cffi_backend.c:281:
c/wchar_helper.h:84:5: warning: ‘_PyUnicode_get_wstr_length’ is deprecated [-Wdeprecated-declarations]
84 | if (PyUnicode_GET_SIZE(unicode) == 1) {
| ^~
In file included from /usr/include/python3.9/unicodeobject.h:1026,
from /usr/include/python3.9/Python.h:97,
from c/_cffi_backend.c:2:
/usr/include/python3.9/cpython/unicodeobject.h:446:26: note: declared here
446 | static inline Py_ssize_t _PyUnicode_get_wstr_length(PyObject *op) {
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from c/_cffi_backend.c:281:
c/wchar_helper.h:84:5: warning: ‘PyUnicode_AsUnicode’ is deprecated [-Wdeprecated-declarations]
84 | if (PyUnicode_GET_SIZE(unicode) == 1) {
| ^~
In file included from /usr/include/python3.9/unicodeobject.h:1026,
from /usr/include/python3.9/Python.h:97,
from c/_cffi_backend.c:2:
/usr/include/python3.9/cpython/unicodeobject.h:580:45: note: declared here
580 | Py_DEPRECATED(3.3) PyAPI_FUNC(Py_UNICODE *) PyUnicode_AsUnicode(
| ^~~~~~~~~~~~~~~~~~~
In file included from c/_cffi_backend.c:281:
c/wchar_helper.h:84:5: warning: ‘_PyUnicode_get_wstr_length’ is deprecated [-Wdeprecated-declarations]
84 | if (PyUnicode_GET_SIZE(unicode) == 1) {
| ^~
In file included from /usr/include/python3.9/unicodeobject.h:1026,
from /usr/include/python3.9/Python.h:97,
from c/_cffi_backend.c:2:
/usr/include/python3.9/cpython/unicodeobject.h:446:26: note: declared here
446 | static inline Py_ssize_t _PyUnicode_get_wstr_length(PyObject *op) {
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from c/_cffi_backend.c:281:
c/wchar_helper.h: In function ‘_my_PyUnicode_SizeAsWideChar’:
c/wchar_helper.h:99:5: warning: ‘_PyUnicode_get_wstr_length’ is deprecated [-Wdeprecated-declarations]
99 | Py_ssize_t length = PyUnicode_GET_SIZE(unicode);
| ^~~~~~~~~~
In file included from /usr/include/python3.9/unicodeobject.h:1026,
from /usr/include/python3.9/Python.h:97,
from c/_cffi_backend.c:2:
/usr/include/python3.9/cpython/unicodeobject.h:446:26: note: declared here
446 | static inline Py_ssize_t _PyUnicode_get_wstr_length(PyObject *op) {
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from c/_cffi_backend.c:281:
c/wchar_helper.h:99:5: warning: ‘PyUnicode_AsUnicode’ is deprecated [-Wdeprecated-declarations]
99 | Py_ssize_t length = PyUnicode_GET_SIZE(unicode);
| ^~~~~~~~~~
In file included from /usr/include/python3.9/unicodeobject.h:1026,
from /usr/include/python3.9/Python.h:97,
from c/_cffi_backend.c:2:
/usr/include/python3.9/cpython/unicodeobject.h:580:45: note: declared here
580 | Py_DEPRECATED(3.3) PyAPI_FUNC(Py_UNICODE *) PyUnicode_AsUnicode(
| ^~~~~~~~~~~~~~~~~~~
In file included from c/_cffi_backend.c:281:
c/wchar_helper.h:99:5: warning: ‘_PyUnicode_get_wstr_length’ is deprecated [-Wdeprecated-declarations]
99 | Py_ssize_t length = PyUnicode_GET_SIZE(unicode);
| ^~~~~~~~~~
In file included from /usr/include/python3.9/unicodeobject.h:1026,
from /usr/include/python3.9/Python.h:97,
from c/_cffi_backend.c:2:
/usr/include/python3.9/cpython/unicodeobject.h:446:26: note: declared here
446 | static inline Py_ssize_t _PyUnicode_get_wstr_length(PyObject *op) {
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from c/_cffi_backend.c:281:
c/wchar_helper.h: In function ‘_my_PyUnicode_AsWideChar’:
c/wchar_helper.h:118:5: warning: ‘PyUnicode_AsUnicode’ is deprecated [-Wdeprecated-declarations]
118 | Py_UNICODE *u = PyUnicode_AS_UNICODE(unicode);
| ^~~~~~~~~~
In file included from /usr/include/python3.9/unicodeobject.h:1026,
from /usr/include/python3.9/Python.h:97,
from c/_cffi_backend.c:2:
/usr/include/python3.9/cpython/unicodeobject.h:580:45: note: declared here
580 | Py_DEPRECATED(3.3) PyAPI_FUNC(Py_UNICODE *) PyUnicode_AsUnicode(
| ^~~~~~~~~~~~~~~~~~~
c/_cffi_backend.c: In function ‘cast_to_integer_or_char’:
c/_cffi_backend.c:3331:26: warning: ‘_PyUnicode_get_wstr_length’ is deprecated [-Wdeprecated-declarations]
3331 | PyUnicode_GET_SIZE(ob), ct->ct_name);
| ^~~~~~~~~~~~~~~~~~
In file included from /usr/include/python3.9/unicodeobject.h:1026,
from /usr/include/python3.9/Python.h:97,
from c/_cffi_backend.c:2:
/usr/include/python3.9/cpython/unicodeobject.h:446:26: note: declared here
446 | static inline Py_ssize_t _PyUnicode_get_wstr_length(PyObject *op) {
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
c/_cffi_backend.c:3331:26: warning: ‘PyUnicode_AsUnicode’ is deprecated [-Wdeprecated-declarations]
3331 | PyUnicode_GET_SIZE(ob), ct->ct_name);
| ^~~~~~~~~~~~~~~~~~
In file included from /usr/include/python3.9/unicodeobject.h:1026,
from /usr/include/python3.9/Python.h:97,
from c/_cffi_backend.c:2:
/usr/include/python3.9/cpython/unicodeobject.h:580:45: note: declared here
580 | Py_DEPRECATED(3.3) PyAPI_FUNC(Py_UNICODE *) PyUnicode_AsUnicode(
| ^~~~~~~~~~~~~~~~~~~
c/_cffi_backend.c:3331:26: warning: ‘_PyUnicode_get_wstr_length’ is deprecated [-Wdeprecated-declarations]
3331 | PyUnicode_GET_SIZE(ob), ct->ct_name);
| ^~~~~~~~~~~~~~~~~~
In file included from /usr/include/python3.9/unicodeobject.h:1026,
from /usr/include/python3.9/Python.h:97,
from c/_cffi_backend.c:2:
/usr/include/python3.9/cpython/unicodeobject.h:446:26: note: declared here
446 | static inline Py_ssize_t _PyUnicode_get_wstr_length(PyObject op) {
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
c/_cffi_backend.c: In function ‘b_complete_struct_or_union’:
c/_cffi_backend.c:4251:17: warning: ‘PyUnicode_GetSize’ is deprecated [-Wdeprecated-declarations]
4251 | do_align = PyText_GetSize(fname) > 0;
| ^~~~~~~~
In file included from /usr/include/python3.9/Python.h:97,
from c/_cffi_backend.c:2:
/usr/include/python3.9/unicodeobject.h:177:43: note: declared here
177 | Py_DEPRECATED(3.3) PyAPI_FUNC(Py_ssize_t) PyUnicode_GetSize(
| ^~~~~~~~~~~~~~~~~
c/_cffi_backend.c:4283:13: warning: ‘PyUnicode_GetSize’ is deprecated [-Wdeprecated-declarations]
4283 | if (PyText_GetSize(fname) == 0 &&
| ^~
In file included from /usr/include/python3.9/Python.h:97,
from c/_cffi_backend.c:2:
/usr/include/python3.9/unicodeobject.h:177:43: note: declared here
177 | Py_DEPRECATED(3.3) PyAPI_FUNC(Py_ssize_t) PyUnicode_GetSize(
| ^~~~~~~~~~~~~~~~~
c/_cffi_backend.c:4353:17: warning: ‘PyUnicode_GetSize’ is deprecated [-Wdeprecated-declarations]
4353 | if (PyText_GetSize(fname) > 0) {
| ^~
In file included from /usr/include/python3.9/Python.h:97,
from c/_cffi_backend.c:2:
/usr/include/python3.9/unicodeobject.h:177:43: note: declared here
177 | Py_DEPRECATED(3.3) PyAPI_FUNC(Py_ssize_t) PyUnicode_GetSize(
| ^~~~~~~~~~~~~~~~~
c/_cffi_backend.c: In function ‘prepare_callback_info_tuple’:
c/_cffi_backend.c:5214:5: warning: ‘PyEval_InitThreads’ is deprecated [-Wdeprecated-declarations]
5214 | PyEval_InitThreads();
| ^~~~~~~~~~~~~~~~~~
In file included from /usr/include/python3.9/Python.h:145,
from c/_cffi_backend.c:2:
/usr/include/python3.9/ceval.h:130:37: note: declared here
130 | Py_DEPRECATED(3.9) PyAPI_FUNC(void) PyEval_InitThreads(void);
| ^~~~~~~~~~~~~~~~~~
c/_cffi_backend.c: In function ‘b_callback’:
c/_cffi_backend.c:5255:5: warning: ‘ffi_prep_closure’ is deprecated: use ffi_prep_closure_loc instead [-Wdeprecated-declarations]
5255 | if (ffi_prep_closure(closure, &cif_descr->cif,
| ^~
In file included from c/_cffi_backend.c:15:
/usr/include/x86_64-linux-gnu/ffi.h:334:1: note: declared here
334 | ffi_prep_closure (ffi_closure,
| ^~~~~~~~~~~~~~~~
In file included from /usr/include/python3.9/unicodeobject.h:1026,
from /usr/include/python3.9/Python.h:97,
from c/_cffi_backend.c:2:
c/ffi_obj.c: In function ‘_ffi_type’:
/usr/include/python3.9/cpython/unicodeobject.h:767:29: warning: initialization discards ‘const’ qualifier from pointer target type [-Wdiscarded-qualifiers]
767 | #define _PyUnicode_AsString PyUnicode_AsUTF8
| ^~~~~~~~~~~~~~~~
c/_cffi_backend.c:72:25: note: in expansion of macro ‘_PyUnicode_AsString’
72 | # define PyText_AS_UTF8 _PyUnicode_AsString
| ^~~~~~~~~~~~~~~~~~~
c/ffi_obj.c:191:32: note: in expansion of macro ‘PyText_AS_UTF8’
191 | char *input_text = PyText_AS_UTF8(arg);
| ^~~~~~~~~~~~~~
c/lib_obj.c: In function ‘lib_build_cpython_func’:
/usr/include/python3.9/cpython/unicodeobject.h:767:29: warning: initialization discards ‘const’ qualifier from pointer target type [-Wdiscarded-qualifiers]
767 | #define _PyUnicode_AsString PyUnicode_AsUTF8
| ^~~~~~~~~~~~~~~~
c/_cffi_backend.c:72:25: note: in expansion of macro ‘_PyUnicode_AsString’
72 | # define PyText_AS_UTF8 _PyUnicode_AsString
| ^~~~~~~~~~~~~~~~~~~
c/lib_obj.c:129:21: note: in expansion of macro ‘PyText_AS_UTF8’
129 | char libname = PyText_AS_UTF8(lib->l_libname);
| ^~~~~~~~~~~~~~
c/lib_obj.c: In function ‘lib_build_and_cache_attr’:
/usr/include/python3.9/cpython/unicodeobject.h:767:29: warning: initialization discards ‘const’ qualifier from pointer target type [-Wdiscarded-qualifiers]
767 | #define _PyUnicode_AsString PyUnicode_AsUTF8
| ^~~~~~~~~~~~~~~~
c/_cffi_backend.c:71:24: note: in expansion of macro ‘_PyUnicode_AsString’
71 | # define PyText_AsUTF8 _PyUnicode_AsString / PyUnicode_AsUTF8 in Py3.3 */
| ^~~~~~~~~~~~~~~~~~~
c/lib_obj.c:208:15: note: in expansion of macro ‘PyText_AsUTF8’
208 | char *s = PyText_AsUTF8(name);
| ^~~~~~~~~~~~~
In file included from c/cffi1_module.c:16,
from c/_cffi_backend.c:6636:
c/lib_obj.c: In function ‘lib_getattr’:
c/lib_obj.c:506:7: warning: assignment discards ‘const’ qualifier from pointer target type [-Wdiscarded-qualifiers]
506 | p = PyText_AsUTF8(name);
| ^
In file included from c/cffi1_module.c:19,
from c/_cffi_backend.c:6636:
c/call_python.c: In function ‘_get_interpstate_dict’:
c/call_python.c:20:30: error: invalid use of incomplete typedef ‘PyInterpreterState’ {aka ‘struct _is’}
20 | builtins = tstate->interp->builtins;
| ^~
c/call_python.c: In function ‘_ffi_def_extern_decorator’:
c/call_python.c:73:11: warning: assignment discards ‘const’ qualifier from pointer target type [-Wdiscarded-qualifiers]
73 | s = PyText_AsUTF8(name);
| ^
c/call_python.c: In function ‘_update_cache_to_call_python’:
c/call_python.c:160:39: error: invalid use of incomplete typedef ‘PyInterpreterState’ {aka ‘struct _is’}
160 | new1 = PyThreadState_GET()->interp->modules;
| ^~
c/call_python.c: In function ‘cffi_call_python’:
c/call_python.c:235:63: error: invalid use of incomplete typedef ‘PyInterpreterState’ {aka ‘struct _is’}
235 | if (externpy->reserved1 != PyThreadState_GET()->interp->modules) {
| ^~
error: command '/usr/bin/x86_64-linux-gnu-gcc' failed with exit code 1
----------------------------------------
Rolling back uninstall of cffi
Moving to /home/emani/.local/lib/python3.9/site-packages/_cffi_backend.cpython-39-x86_64-linux-gnu.so
from /tmp/pip-uninstall-_1w68b1r/_cffi_backend.cpython-39-x86_64-linux-gnu.so
Moving to /home/emani/.local/lib/python3.9/site-packages/cffi-1.14.6.dist-info/
from /home/emani/.local/lib/python3.9/site-packages/~ffi-1.14.6.dist-info
Moving to /home/emani/.local/lib/python3.9/site-packages/cffi.libs/
from /home/emani/.local/lib/python3.9/site-packages/~ffi.libs
Moving to /home/emani/.local/lib/python3.9/site-packages/cffi/
from /home/emani/.local/lib/python3.9/site-packages/~ffi
ERROR: Command errored out with exit status 1: /usr/bin/python3 -u -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-8p3wozce/cffi_9afcd0c1ba1749e3903a0c0654adc034/setup.py'"'"'; file='"'"'/tmp/pip-install-8p3wozce/cffi_9afcd0c1ba1749e3903a0c0654adc034/setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(file) if os.path.exists(file) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, file, '"'"'exec'"'"'))' install --record /tmp/pip-record-ximr4dq7/install-record.txt --single-version-externally-managed --user --prefix= --compile --install-headers /home/emani/.local/include/python3.9/cffi Check the logs for full command output.
pip install traixroute
pulls idna==2.1
when it should pull at least idna==2.5
cmdpwnd@debian:~$ sudo pip install idna==2.5
Collecting idna==2.5
Downloading https://files.pythonhosted.org/packages/11/7d/9bbbd7bb35f34b0169542487d2a8859e44306bb2e6a4455d491800a5621f/idna-2.5-py2.py3-none-any.whl (55kB)
100% |████████████████████████████████| 61kB 855kB/s
traixroute 2.3 has requirement idna==2.1, but you'll have idna 2.5 which is incompatible.
Installing collected packages: idna
Found existing installation: idna 2.1
Uninstalling idna-2.1:
Successfully uninstalled idna-2.1
Successfully installed idna-2.5
cmdpwnd@debian:~$
cmdpwnd@debian:~$ sudo pip install traixroute
Requirement already satisfied: traixroute in /usr/local/lib/python3.7/site-packages (2.3)
Requirement already satisfied: pyOpenSSL==17.4.0 in /usr/local/lib/python3.7/site-packages (from traixroute) (17.4.0)
Requirement already satisfied: socketIO-client==0.7.0 in /usr/local/lib/python3.7/site-packages (from traixroute) (0.7.0)
Collecting idna==2.1 (from traixroute)
Using cached https://files.pythonhosted.org/packages/71/02/dee75fc3e6f7455bf69221164f94586ee13552c5f33c8002335667a3d122/idna-2.1-py2.py3-none-any.whl
Requirement already satisfied: netaddr==0.7.19 in /usr/local/lib/python3.7/site-packages (from traixroute) (0.7.19)
Requirement already satisfied: websocket-client==0.37.0 in /usr/local/lib/python3.7/site-packages (from traixroute) (0.37.0)
Requirement already satisfied: pycparser==2.14 in /usr/local/lib/python3.7/site-packages (from traixroute) (2.14)
Requirement already satisfied: cffi==1.7.0 in /usr/local/lib/python3.7/site-packages (from traixroute) (1.7.0)
Requirement already satisfied: pysubnettree==0.26 in /usr/local/lib/python3.7/site-packages (from traixroute) (0.26)
Requirement already satisfied: cryptography==2.1.4 in /usr/local/lib/python3.7/site-packages (from traixroute) (2.1.4)
Requirement already satisfied: requests==2.18.4 in /usr/local/lib/python3.7/site-packages (from traixroute) (2.18.4)
Requirement already satisfied: pytz==2016.6.1 in /usr/local/lib/python3.7/site-packages (from traixroute) (2016.6.1)
Requirement already satisfied: six==1.11.0 in /usr/local/lib/python3.7/site-packages (from traixroute) (1.11.0)
Requirement already satisfied: ujson==1.35 in /usr/local/lib/python3.7/site-packages (from traixroute) (1.35)
Requirement already satisfied: ripe.atlas.sagan==1.1.11 in /usr/local/lib/python3.7/site-packages (from traixroute) (1.1.11)
Requirement already satisfied: ripe.atlas.cousteau==1.4 in /usr/local/lib/python3.7/site-packages (from traixroute) (1.4)
Requirement already satisfied: python-dateutil==2.5.3 in /usr/local/lib/python3.7/site-packages (from traixroute) (2.5.3)
Requirement already satisfied: pyasn1==0.1.9 in /usr/local/lib/python3.7/site-packages (from traixroute) (0.1.9)
Requirement already satisfied: fuzzywuzzy[speedup]==0.16.0 in /usr/local/lib/python3.7/site-packages (from traixroute) (0.16.0)
Requirement already satisfied: setuptools in /usr/local/lib/python3.7/site-packages (from traixroute) (40.6.2)
Requirement already satisfied: asn1crypto>=0.21.0 in /usr/local/lib/python3.7/site-packages (from cryptography==2.1.4->traixroute) (0.24.0)
Requirement already satisfied: chardet<3.1.0,>=3.0.2 in /usr/local/lib/python3.7/site-packages (from requests==2.18.4->traixroute) (3.0.4)
Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.7/site-packages (from requests==2.18.4->traixroute) (2018.11.29)
Requirement already satisfied: urllib3<1.23,>=1.21.1 in /usr/local/lib/python3.7/site-packages (from requests==2.18.4->traixroute) (1.22)
Requirement already satisfied: python-levenshtein>=0.12; extra == "speedup" in /usr/local/lib/python3.7/site-packages (from fuzzywuzzy[speedup]==0.16.0->traixroute) (0.12.0)
requests 2.18.4 has requirement idna<2.7,>=2.5, but you'll have idna 2.1 which is incompatible.
Installing collected packages: idna
Found existing installation: idna 2.5
Uninstalling idna-2.5:
Successfully uninstalled idna-2.5
Successfully installed idna-2.1
cmdpwnd@debian:~$
cmdpwnd@debian:~$ traixroute -v
current version of traixroute: 2.3
cmdpwnd@debian:~$
Hi,
When I ran:
traixroute -process -asn probe -t -dest 8.8.8.8
File "/home/yulingli/.local/lib/python3.5/site-packages/traixroute/application.py", line 310, in main
if not string_handle.is_valid_ip_address(inputIP, 'IP'):
TypeError: is_valid_ip_address() missing 1 required positional argument: 'dataset'
I looked into string_handler.py
class string_handler():
'''
This modules handles the strings.
'''
# TODO: Change this function for IPv6
def is_valid_ip_address(self, address, kind, dataset):
Looks like application.py is not passing 'dataset' argument(which is a string?) to string_handler.is_valid_ip_address
I see in the documentation that can be specified output file, but i was asking myself: is possible to obtain a JSON formatted output in order to manipulate results and integrate with other tools?
Thanks
Hi, users are unable to run traixroute due to dependency conflict with idna package. As shown in the following full dependency graph of traixroute, traixroute requires idna ==2.1,while requests requires idna <2.7,>=2.5.
According to pip’s “first found wins” installation strategy, idna 2.1 is the actually installed version. However, idna 2.1 does not satisfy <2.7,>=2.5.
traixroute - 2.3
| +- cffi(install version:1.7.0 version range:==1.7.0)
| +- cryptography(install version:2.1.4 version range:==2.1.4)
| | +- asn1crypto(install version:1.2.0 version range:>=0.21.0)
| | +- idna(install version:2.1 version range:>=2.1)
| | +- six(install version:1.11.0 version range:>=1.4.1)
| +- fuzzywuzzy(install version:0.16.0 version range:==0.16.0)
| +- idna(install version:2.1 version range:==2.1)
| +- netaddr(install version:0.7.19 version range:==0.7.19)
| +- pyasn1(install version:0.1.9 version range:==0.1.9)
| +- pycparser(install version:2.14 version range:==2.14)
| +- pyopenssl(install version:17.4.0 version range:==17.4.0)
| | +- cryptography(install version:2.1.4 version range:>=1.9)
| | | +- asn1crypto(install version:1.2.0 version range:>=0.21.0)
| | | +- idna(install version:2.1 version range:>=2.1)
| | | +- six(install version:1.11.0 version range:>=1.4.1)
| | +- six(install version:1.11.0 version range:>=1.5.2)
| +- pysubnettree(install version:0.26 version range:==0.26)
| +- python-dateutil(install version:2.5.3 version range:==2.5.3)
| | +- six(install version:1.11.0 version range:*)
| | +- six(install version:1.11.0 version range:>=1.5)
| +- pytz(install version:2016.6.1 version range:==2016.6.1)
| +- requests(install version:2.18.4 version range:==2.18.4)
| | +- certifi(install version:2019.11.28 version range:>=2017.4.17)
| | +- chardet(install version:3.0.4 version range:<3.1.0,>=3.0.2)
| | +- idna(install version:2.6 version range:<2.7,>=2.5)
| | +- urllib3(install version:1.22 version range:<1.23,>=1.21.1)
| +- ripe-atlas-cousteau(install version:1.4 version range:==1.4)
| | +- python-dateutil(install version:2.5.3 version range:*)
| | | +- six(install version:1.11.0 version range:*)
| | | +- six(install version:1.11.0 version range:>=1.5)
| | +- requests(install version:2.18.4 version range:>=2.7.0)
| | | +- certifi(install version:2019.11.28 version range:>=2017.4.17)
| | | +- chardet(install version:3.0.4 version range:<3.1.0,>=3.0.2)
| | | +- idna(install version:2.6 version range:<2.7,>=2.5)
| | | +- urllib3(install version:1.22 version range:<1.23,>=1.21.1)
| | +- socketio-client(install version:0.7.0 version range:>=0.6.5)
| | | +- requests(install version:2.18.4 version range:>=2.7.0)
| | | | +- certifi(install version:2019.11.28 version range:>=2017.4.17)
| | | | +- chardet(install version:3.0.4 version range:<3.1.0,>=3.0.2)
| | | | +- idna(install version:2.6 version range:<2.7,>=2.5)
| | | | +- urllib3(install version:1.22 version range:<1.23,>=1.21.1)
| | | +- six(install version:1.11.0 version range:*)
| | | +- websocket-client(install version:0.37.0 version range:*)
| | | | +- six(install version:1.11.0 version range:*)
| | +- websocket-client(install version:0.37.0 version range:<0.39)
| | | +- six(install version:1.11.0 version range:*)
| +- ripe-atlas-sagan(install version:1.1.11 version range:==1.1.11)
| | +- python-dateutil(install version:2.5.3 version range:*)
| | | +- six(install version:1.11.0 version range:*)
| | | +- six(install version:1.11.0 version range:>=1.5)
| | +- pytz(install version:2016.6.1 version range:*)
| +- setuptools(install version:42.0.2 version range:*)
| +- six(install version:1.11.0 version range:==1.11.0)
| +- socketio-client(install version:0.7.0 version range:==0.7.0)
| | +- requests(install version:2.18.4 version range:>=2.7.0)
| | | +- certifi(install version:2019.11.28 version range:>=2017.4.17)
| | | +- chardet(install version:3.0.4 version range:<3.1.0,>=3.0.2)
| | | +- idna(install version:2.6 version range:<2.7,>=2.5)
| | | +- urllib3(install version:1.22 version range:<1.23,>=1.21.1)
| | +- six(install version:1.11.0 version range:*)
| | +- websocket-client(install version:0.37.0 version range:*)
| | | +- six(install version:1.11.0 version range:*)
| +- ujson(install version:1.35 version range:==1.35)
| +- websocket-client(install version:0.37.0 version range:==0.37.0)
| | +- six(install version:1.11.0 version range:*)
Thanks for your help.
Best,
Neolith
Hello
Im trying to pip install traixroute on windows 10 machine with python3.7 but i'm running into errors. Before posting the error message would like to get clarity whether there is support for windows 10
When exporting the output after traceroute path analysis to the file, the implemented function is not quite thread safe.
Hi George,
Awesome tool! I just cloned your repo and playing around with it, starting with examples in your doc, but they all throw syntax errors! I was wondering if there is a newer version of the doc available?
Specifically, I am interested in running probes with scamper options. I managed to make it work using the following command:
sudo python3 traIXroute.py probe -s "-P TCP" -dest google.com
Does this look right to you?
Hello again. Thanks for quick response to previous issue.
I've reinstalled from repo. It seems like there is a dependency conflict. traIXroute
requires idna==2.1
and requests==2.18.4
whereas this version of requests requires idna>=2.5,<2.7
.
Thanks a lot!
omerfaruko@instance-2:~$ traixroute -thread -asn probe -t -dest 8.8.8.8
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 655, in _build_master
ws.require(__requires__)
File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 963, in require
needed = self.resolve(parse_requirements(requirements))
File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 854, in resolve
raise VersionConflict(dist, req).with_context(dependent_req)
pkg_resources.ContextualVersionConflict: (idna 2.1 (/usr/local/lib/python3.5/dist-packages), Requirement.parse('idna<2.7,>=2.5'), {'requests'})
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/local/bin/traixroute", line 6, in <module>
from pkg_resources import load_entry_point
File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 3019, in <module>
@_call_aside
File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 3003, in _call_aside
f(*args, **kwargs)
File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 3032, in _initialize_master_working_set
working_set = WorkingSet._build_master()
File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 657, in _build_master
return cls._build_from_requirements(__requires__)
File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 670, in _build_from_requirements
dists = ws.resolve(reqs, Environment())
File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 854, in resolve
raise VersionConflict(dist, req).with_context(dependent_req)
pkg_resources.ContextualVersionConflict: (idna 2.1 (/usr/local/lib/python3.5/dist-packages), Requirement.parse('idna<2.7,>=2.5'), {'requests'})
There are some rendering issues in traIXroute engine when some arguments are disabled.
Hi,
Really stoked to use this tool! I'm working on a project that requires identify which IXPs are used to transfer packets in an http request (simulated by a traceroute). I've run traIXroute on multiple high-traffic sites like:
facebook.com
google.com
baidu.com
ok.ru
from a home network located in Chicago, IL. Is it to be expected that a tracIXoute on any of these sites would produce zero IXPs crossed? If so, what are some domains that have been found to regularly cross IXPs. Do you have a testing dataset?
Thanks!
Brannon
Hi traIXroute developers,
I would love to use the traIXroute tool. However, I could not find it on brew: http://brew.sh/ Could you please provide a brew package for traIXroute?
Best regards,
Thomas
With the lasted version 2.1.1 installed with pip3.
Find attached a ripejson file with a single traceroute who can make it crash traixroute
some RIPE JSON ATLAS trace may be malformed and cause TraIXroute to crash.
5009crashingTraixroute.json.txt
sudo traixroute import -ripejson 5009crashingTraixroute.json
Please add exception in your code to have traIXroute in case of malformed trace to continue until this end of the JSON.
Traceback (most recent call last):
File "/usr/local/bin/traixroute", line 11, in
sys.exit(run_traixroute())
File "/usr/local/lib/python3.6/site-packages/traixroute/application.py", line 365, in run_traixroute
traIXroute_module.main()
File "/usr/local/lib/python3.6/site-packages/traixroute/application.py", line 317, in main
for rule_hits, json_obj in executor.map(analyze_measurement, input_list):
File "/usr/local/Cellar/python3/3.6.1/Frameworks/Python.framework/Versions/3.6/lib/python3.6/concurrent/futures/_base.py", line 556, in result_iterator
yield future.result()
File "/usr/local/Cellar/python3/3.6.1/Frameworks/Python.framework/Versions/3.6/lib/python3.6/concurrent/futures/_base.py", line 398, in result
return self.__get_result()
File "/usr/local/Cellar/python3/3.6.1/Frameworks/Python.framework/Versions/3.6/lib/python3.6/concurrent/futures/_base.py", line 357, in __get_result
raise self._exception
File "/usr/local/Cellar/python3/3.6.1/Frameworks/Python.framework/Versions/3.6/lib/python3.6/concurrent/futures/thread.py", line 55, in run
result = self.fn(*self.args, **self.kwargs)
File "/usr/local/lib/python3.6/site-packages/traixroute/application.py", line 282, in analyze_measurement
info] = json_handle.export_trace_from_ripe_file(entry)
File "/usr/local/lib/python3.6/site-packages/traixroute/handler/handle_json.py", line 185, in export_trace_from_ripe_file
current_info.append(str(hop['result'][0]['rtt']) + ' ms')
KeyError: 'rtt'
It seems that the json output is somehow broken. Firefox cannot render the generated json file:
"SyntaxError: JSON.parse: expected ',' or ']' after array element at line 224 column 2945 of the JSON data"
This was generated while traixroute was running over a large Ripe Atlas results file (json). The output is displayed correctly and without problems in the terminal, therefore I assume the traixroute json exporter must generate non-compliant json code.
Hi,
Action: Updating Traixroute´s DB
Expected behaviour: New files should be fetched and stored under database/
Actual behaviour: For PCH the html code is printed in all files
Detailed steps:
When I do "traixroute -u -process" I get:
traixroute -u -process
Updating the database...
Started downloading PDB dataset.
Started downloading PCH dataset.
Started downloading RouteViews dataset.
PCH dataset has been updated successfully.
Routeviews has been updated successfully.
PDB dataset has been updated successfully.
Database has been updated successfully.
Looking at db.txt I find:
cat db.txt
Imported 16 Reserved Subnets.
Extracted 0 IXP IPs from additional_info.txt.
Extracted 0 IXP Subnets from additional_info.txt.
Extracted 33654 IXP IPs from PDB.
Extracted 0 IXP IPs from PCH.
Extracted 841 IXP Subnets from PDB.
Extracted 0 IXP Subnets from PCH.
Extracted 33654 (no) dirty IXP IPs after merging PDB, PCH and additional_info.txt.
Detected 0 dirty IXP IPs after merging PDB, PCH and additional_info.txt.
Extracted 841 IXP Subnets after merging PDB, PCH and additional_info.txt.
Which suprised me, as PCH seems to have no content. Further investigating /database/PCH/ I find three files:
ixp_exchange.csv ixp_membership.csv ixp_subnets.csv
All of which contain the extact same HTML code from the PCH website. It is not the data stored in those files, but instead something must go wrong when fetching the data such that the website source code is stored. I believe PCH changed the API after the tool was released.
Fixing the ixp_exchange.csv in the /configuration/config is easy as it is still provided as CSV, just under a different URL:
https://www.pch.net/api/ixp/directory?format=csv
For the other two it is not as straight forward. PCH does not seem to provide an entire list anymore. Instead they provide an API that allows querying for each IXP-member id, according to the IXP directory which was dumped into the ixp_exchange.csv. To recreate the old structure one would need to query for each member id at:
For Subnets: https://www.pch.net/api/ixp/subnets/IXP_ID(?format=csv)
For IPs: https://www.pch.net/api/ixp/subnet_details/IXP_ID
Could you take a look and let me know if you plan to implement the changes?
Thanks!
Cheers,
NIls
Hi! I'm having an issue with a clean PyPI installation of traIXroute 2.3.
First, I had this issue:
omerfaruko@instance-2:~$ traixroute -thread -asn probe -t -dest 8.8.8.8
Dataset files are missing.
Updating the database...
Started downloading PDB dataset.
Started downloading PCH dataset.
Started downloading RouteViews dataset.
PDB dataset has been updated successfully.
Routeviews has been updated successfully.
PCH dataset has been updated successfully.
Database has been updated successfully.
Loading from PCH, PDB, Routeviews and additional_info.txt.
additional_info.txt: Invalid syntax in line 20. Exiting.
After deleting line 20 (which is an empty line), I had another issue:
omerfaruko@instance-2:~$ traixroute -thread -asn probe -t -dest 8.8.8.8
Loading from database and additional_info.txt.
Imported 13 IXP detection rules from /home/omerfaruko/traixroute/configuration/rules.txt.
Traceback (most recent call last):
File "/usr/local/bin/traixroute", line 11, in <module>
sys.exit(run_traixroute())
File "/usr/local/lib/python3.5/dist-packages/traixroute/application.py", line 389, in run_traixroute
traIXroute_module.main()
File "/usr/local/lib/python3.5/dist-packages/traixroute/application.py", line 310, in main
if not string_handle.is_valid_ip_address(inputIP, 'IP'):
TypeError: is_valid_ip_address() missing 1 required positional argument: 'dataset'
Extra details if needed:
omerfaruko@instance-2:~$ python3 -V
Python 3.5.3
omerfaruko@instance-2:~$ uname -a
Linux instance-2 4.9.0-6-amd64 #1 SMP Debian 4.9.88-1+deb9u1 (2018-05-07) x86_64 GNU/Linux
omerfaruko@instance-2:~$ scamper -v
scamper version 20141211g
omerfaruko@instance-2:~$ pip freeze
asn1crypto==0.24.0
boto==2.44.0
certifi==2018.4.16
cffi==1.7.0
chardet==3.0.4
cryptography==2.1.4
distro==1.0.1
fuzzywuzzy==0.16.0
google-compute-engine==2.8.2
idna==2.1
keyring==10.1
keyrings.alt==1.3
netaddr==0.7.19
pyasn1==0.1.9
pycparser==2.14
pycrypto==2.6.1
pygobject==3.22.0
pyOpenSSL==17.4.0
pysubnettree==0.26
python-apt==1.4.0b3
python-dateutil==2.5.3
python-Levenshtein==0.12.0
pytz==2016.6.1
pyxdg==0.25
requests==2.18.4
ripe.atlas.cousteau==1.4
ripe.atlas.sagan==1.1.11
SecretStorage==2.3.1
six==1.11.0
socketIO-client==0.7.0
traixroute==2.3
ujson==1.35
unattended-upgrades==0.1
urllib3==1.22
websocket-client==0.37.0
omerfaruko@instance-2:~$ traixroute -v
current version of traixroute: 2.3
Thanks a lot!
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.