Code Monkey home page Code Monkey logo

openvisualtraceroute's Introduction

~~~~~~~ Open Visual Trace Route ~~~~~~~ 

Version 2.0.0 Starting version 2.0.0, I decided to deprecate the sniffer features and refocus the tool to its original purpose: a visual traceroute. Reasoning around the decision were ultimately time to maintain the application while the various libraries it depends on were being upgraded to non compatible APIs or plainly deprecated. This decision will also make the application runnable without admin privilege and external software required to be installed (except Java), which was one of the pain point in the installation of versions 1.7 and prior.

Full code source is as always available on Github https://github.com/leolewis/openvisualtraceroute and anyone is free to branch the version

I could successfully make this version on multiple systems, but my tests do not cover everything, so if you find a bug, a typo in some label feel free to post a bug report and/or fix

Enjoy and share, Leo Lewis

Installation and execution procedure :

See http://visualtraceroute.net/installation

OS/Arch notice : Tested on the following systems :

  • Windows 11 64 bits
  • Ubuntu 20.04 64 bits
  • OpenSUSE Leap 15.3 64 bits

With Java versions

  • 11~17
Limitations, Known issues :
- Systems that don't have a graphic card/drivers that supports required OpenGL features will not be able to use the 3D map

Wish list :

  • traceroute server mode
  • display active connections
  • export and import traceroute data
Release Note
2.0.0
This release
- Library: Upgrade to worldwind 2.2.0
- Library: upgrade to Java 11+
- Deprecate embedded trace route mode and sniffer mode

Release Note 
1.7.1
- Library: Upgrade to geoip v2

1.7.0
- Feature: DNS loc records feature
- Feature: Use system proxy when available, allow to specify user and password
- Feature: Anti-aliasing fonts
- Library: Upgrade world wind version
- Library: Upgrade required Java version to 1.8
- Fix    : Fix hanging network interface detection
- Fix    : Increase geoip db download timeout to avoid issue on first startup

1.6.5
- Fix Fatal error IOException: Failed to download geoip database
- UI : Fix status bar tooltip
- Traceroute : Fix consecutive unknown locations diplayed in the (0, 0)

1.6.4
- Sniffer : Add feature to select a list and or range of ports.
- Sniffer : Add feature to stop the capture after a given amount of time
- Sniffer : Fix filter on port and packet length greater than 999 issue
- Traceroute : Fix traceroute timeout greater than 999 issue
- UI : German translation (thanks to Centauri39) 
- UI : Japanese translation
- UI : Save table column width in preferences
- UI : Save window location
- UI : Add font chooser in the preference window
- UI : Fix sorting on row number
- Map : Choose line thickness in preference window
- Map : display unknown ips at the previous known location and no longer at (0, 0) 
- Map : Fix 2D map not repainting in sniffer mode  
- Windows : change whois provider
- Linux Mint : fix launcher
- Linux : add rpm packages

1.6.3
- Add max number of hops for traceroute
- Add hostname filter for sniffer
- Improve embedded traceroute accuracy
- Add log windows to show application logs
- Add settings to hide non selected labels from the map
- Dynamic config to be able to update external content (ip address provider, geoip db location) without having to release a new version of the app
- Expire the geo ip db every month and download the latest version to avoid having the db getting outdated when the application is not updated.
- Add startup information to the splashscreen, refactor the startup flow
- Fix a bunch of UI bugs
- Fix a bunch of labels.

1.6.2
- Add whois feature in both traceroute and sniffer
- Fix duplicated route points during the traceroute
- Fix command+Q failed to close the application on MacOSX
- Fix bug on sorting on tables
- Update Geoip database
- Update public ip address provider

1.6.1
- Improve Maps visualization by displaying lines with color and elevation corresponding to latency for traceroute and number of packets for sniffer
- Add export route and network capture to a file in CSV format
- Add "take a screenshot" feature
- Persist traceroute history and provide it as autocomplete suggestions
- Add a preference to hide the current public IP address from the UI (useful when taking snapshots of the application but don't want to show your IP address)
- For the 3D map, allow user to specify the animation speed and the replay speed for traceroute
- Rotating selection for overlapping points on the maps
- Update geo ip database
- Clear geo ip cached database when installing a new version to make sure the data is updated from the new installer
- Add a preference to hide the splashscreen
- Fix couple of issues.

1.6.0
- Add Traceroute support for MacOS X
- Improve traceroute mechanism to use the OS traceroute instead of the embedded traceroute (that will be used by default in case the embedded network library couldn't be initialized for whatever reason)
- Add installer for windows, dmg for mac and deb for linux packagings for easier installation and uninstallation
- Improve error handling, disable 3D map for system that don't support required OpenGL features.
- Fix error when using the timeout spinner
- Fix error when first starting the application if it is located in a directory where the user does not have right access
- Improve toolbar layout for low resolution screens
- Add a Settings dialog
- Add support for French language

1.5.1
- Fix JVM crash when capturing packets for a long time
- Check version at startup and propose the user to go to the download page
- Improve the packet details view
- Allow to choose network interface for sniffer
- Update ip->geo location database. Ship it compressed with the application to reduce package size

1.5.0
- Add packet sniffer mode
- Add timeout for traceroute
- 2D map component using Openmap
- Upgrade to WorldWind 2.0
- Refactoring of code
- Use proper logger inside the code

1.4.0
- Allow to choose the network interface to use for trace route
- Optimize startup of traceroute
- Dramatically improve DNS lookup performance
- Add route length and distance between route points
- Display Country flag in the table and in the map
- Fix the overlay of labels on the map when several route points have the same coordinates
- Redesign gantt chart view to make it easier to see points
- Implement selection synchronization map<->table<->gantt chart
- Change window layout
- Change look and feel for windows os
- Refactor code
- Fix an issue when replaying a route with only one point
- Fix Linux start script
- Fix bug when saving the size of the window

1.3.0 Beta
- Upgrade to Worldwind 1.5.0, change layer panel, add graticule
- Add Gantt view of the route
- Add Replay function of the traceroute
- Implement bi-directional selection synchronization map<->table
- Focus on the last point of the route during tracing
- Update visual of the Route (3d shape)
- Update labels of the points (cities) of the route
- Save application window size and split location when exiting the application
- Highlight current route point during tracing (both map and table)
- Fix an error when clearing the selection of the table
- Fix an error that crashed the application when starting from a directory that has space characters inside its path
- Fix a memory leak when tracing the route

1.2.1 Beta
- Remove the Applet version (JNLP files than contains JOGL native libs are no longer maintained by Oracle/JOGL)
- Refactor installer, remove the local dir, simplify native library management
- Add executable files for Windows and Linux
- Better error management

1.2.0 Beta
- Add support for Windows 64 bits
- Update geoip data
- Add copy to clipboard feature
- Set text of buttons as tooltips
- Display latency 0ms as <1ms
- Add support for mac OSX 32 bits
- Fix a couple of bugs on the install, and on the JLNP version
- Fix first IP point (my ip)

1.1.1 Beta
- Update the traceroute algo to dramatically decrease the traceroute execution time
- Add an option to see DNS associated with network node IP
- Add traceroute latency and DNS lookup time informations
- Increase map movement speed
- Add tooltips on the route table, adjust font size and column size.

1.1.0 Beta
- Add Linux 32/64 bits support
- Fix some issues during the browsing of devices
- Add proxy support 
- Change public IP address mechanism
- Sturdiness when start the application in command line (no need to be in the jar folder)

1.0.8 Beta
- Fatal error dialog when launching on OS which arch is not x86

1.0.7 Beta
- 3308703 : Remaining reference to the JDK 7 that was installed on the development environment (and used by ant compilation task).
- Minor corrections on Manifest and build, clean unused jar entries
- Update header license
- License file not included in the build
- Update build to zip the product and add the README

1.0.6 Beta
- 3308404 : Stand alone execution available
- The Applet version can be deployed by copying the content of the folder into the target Internet location. The JNLP and html files need to be updated with the given location.
- The Stand alone version can be launch by double-click on the org.leo.traceroute.jar 
- If the default memory is insufficient for the stand alone version, launching the jar in command line 
java -Xmx512m -jar org.leo.traceroute.jar
- Update of the Install of the application in both execution cases
- Update of the build.xml

1.0.5 Beta
- First released on Sourceforge
- 3306739 : Correction of a UnsatisfiedLinkError while loading the Jpcap dll

1.0.4 Beta
- Bug in the trace route algo, the last point is not added to the route
- Add the license dialog
- Several minor evolutions and bug corrections

1.0.3 Beta
- Implements the GlassPane class to display messages
- Update the list of layers of WW
- Several minor evolutions and bug corrections

1.0.2 Beta
- Update of the renderer of the Table
- Use of Nimbus Look & Feel

1.0.1 Beta
- First point of the route is the public IP of the client, not the local Lan IP
- Trouble of selection in the Table component 
- Add a progress bar to show the trace route is running

1.0.0 Beta
- First build
- Integration of WWJ and Jpcap OK

openvisualtraceroute's People

Contributors

leolewis avatar oaxjogi avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

openvisualtraceroute's Issues

Support for devices with ARM processor (Raspberry Pi, Smartphones, IoT,...)

Thank you for this tool, it is the best open source project of its kind!

What do you think about supporting devices with ARM processor and architecture (Raspberry Pi, Smartphones, IoT,...)?

Tried to get OVTR working on ARM devices (Raspberry Pi 2/3), but the 'install' aborted.
Can this be made to work on these processors and archs, too?

All non-Java libs are available as far as I can tell ...

Custom traceroute options

This tool is really awesome!

It would be great if there was a text input in the options to allow custom traceroute commands or at least custom additional flags. This would allow to use ICMP Echo Request packets (-I), or any arbitrary protocol (-P), for instance, and should not require great effort.

I've seen that the traceroute command is invoked from org.leo.traceroute/src/org/leo/traceroute/core/route/impl/OSTraceRoute.java, but I cannot figure out what would be the correct way to add the text input to the settings, and how to connect it to the traceroute call (I guess changes to org.leo.traceroute/src/org/leo/traceroute/ui/util/ConfigDialog.java will be necessary).

Please consider adding this feature!

2.0.0 crashes just after starting on macOS Big Sur (11.6.2)

Hi!

I downloaded the 2.0.0 package for macOS and on start the app shows this warning first:

Screenshot 2022-01-29 at 13 15 20

...and after clicking ok it loads the UI and immediately shows this error:

Screenshot 2022-01-29 at 13 15 27

...and closes after clicking ok here.

This is 100% reproducible.

I am using macOS Big Sur (11.6.2) on an Apple Silicon Mac with M1 chip.

GeoIP database updated?

Hi
Not sure whether the GeoIP DB still updates but traces reports geographical locations not been accurate as off of hundreds of Kilometers and in some as even total different continent as I compare the result with other Geo IP databases like Maxmind and others.
Is this software still being looked after? Is there anyway another GeoIP database can be used instead?
Thanks

Ubuntu GKSU no longer supported

open visual trace route requires the gksu dependency in Ubuntu. GKSU is no longer supported or available. Is there a work around/fix?

Doesn't start on Mac (but double click on JAR works!)

MacOS Catalina 10.15.6.
Double-clicking on the app does nothing and generates the following system log entries:

Oct  9 17:43:57 Oliviers-MacBook-Pro com.apple.xpc.launchd[1] (com.apple.xpc.launchd.domain.pid.java.5772): Failed to bootstrap path: path = /Library/Java/JavaVirtualMachines/jdk-14.0.1.jdk/Contents/Home/bin/java, error = 2: No such file or directory
Oct  9 17:43:59 Oliviers-MacBook-Pro com.apple.xpc.launchd[1] (org.leo.traceroute.Main.72724[5772]): Service exited with abnormal code: 1

However if I "show package contents" and double-click on `Contents/Resources/Java/org.leo.traceroute.jar, it does start the application!

Not Detecting Adoptium OpenJRE/OpenJDK

I have multiple non-Oracle OpenJDKs installed:

  • Eclipse Temurin JDK with Hotspot 17.0.7+7 (x64)
  • Eclipse Temurin JRE with Hotspot 17.0.7+7 (x64)
  • Eclipse Temurin JRE with Hotspot 8u372-b07 (x64)
  • Microsoft Build of OpenJDK with Hotspot 17.0.7+7 (x64)

JAVA_HOME is set. PATH includes all of these with 8 appearing after 17. I can find java.exe easily:

C:\Program Files\Microsoft\jdk-17.0.7.7-hotspot\bin\java.exe
C:\Program Files\Eclipse Adoptium\jdk-17.0.7.7-hotspot\bin\java.exe
C:\Program Files\Eclipse Adoptium\jre-17.0.7.7-hotspot\bin\java.exe
C:\Program Files\Eclipse Adoptium\jre-8.0.372.7-hotspot\bin\java.exe

But I get an error when trying to launch:

---------------------------

---------------------------
This application requires a Java Runtime Environment 11.0.0 - 99.9.9
---------------------------
OK   
---------------------------

MacOs Big Sur 11.2.3 OpenVisualTraceroute 2.0.0 closes just after starting

Hello
I'm using MacOs Big Sur 11.2.3 and OpenVisualTraceroute 2.0.0.
When I run OpenVisualTraceroute.app I see it starts (icon show on task bar) but it stop with showing the UI at all.
I have tried running with OpenJDK11U-jdk_x64_mac_hotspot_11.0.14_9 and Oracle jdk-11.0.13_osx-x64_bin
but I get the same results with both.

Tested on Win 7 Ultimate 64 bits

Works like a charm on Win7 64bits, so it can be added to the compatibility list :p
Thank you and good work.

This is not a issue but a suggestion.. after uninstall, the WorlWind Nasa database is not deleted (worldwind26.arc.nasa.gov) so may be include a cleaner in the uninstall stage will be apreciated.

Best regards

Error on Windows 11

Latest version 2.0.0 gives n error when started on Windows 11 x64 with Java 8 u331 onboard (the latest JRE version as for now):

$ java -Xmx512m -Djava.awt.headless=false -jar ./org.leo.traceroute.jar --illegal-access=warn --add-exports java.base/java.lang=ALL-UNNAMED --add-exports java.desktop/sun.awt=ALL-UNNAMED --add-exports java.desktop/sun.java2d=ALL-UNNAMED
Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.UnsupportedClassVersionError: org/leo/traceroute/Main has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(Unknown Source)
        at java.security.SecureClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.access$100(Unknown Source)
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source)

Version 1.7.1 works OK.

If whois is not installed, no error is prompted

Bug found on Open Visual Trace 2.0.0 (Universal/Portable).

If whois is not installed, the "Who is " window shows the message "A moment please..." and no error is prompted.

It took me several minutes to realize what that the problem was. Although resolving the problem was easy, it would have been nice to have a warning or error telling me that the whois command was required.

Please add IPv6 support

This is not an issue but rather a feature request: It would be great to see IPv6 support in open visual traceroute.

Thank you for that great piece of software :) !

error on Mac OS

I have installed java

————————
ERROR launching 'OpenVisualTraceroute'.

No suitable Java version found on your system!
This program requires Java 17.0.1 or later.
Make sure you install the required Java version.

[Linux] "Segmentation fault" on launch

Dear Developers,

Thank you very much for the service and project!

I am sorry, but apparently the program results in "Segmentation fault" when launched. The log:

$ ./run.sh
starting OpenVisualTraceroute...
12:07:15.899 [main] INFO  org.leo.traceroute.Main - Open Visual Traceroute 2.0.0 
12:07:15.918 [main] INFO  org.leo.traceroute.install.Env - Java run-time version: 19.0.2
12:07:15.919 [main] INFO  org.leo.traceroute.install.Env - NASA WorldWind Java v2.2.0
12:07:15.919 [main] INFO  org.leo.traceroute.install.Env - Library Path /usr/java/packages/lib:/usr/lib/x86_64-linux-gnu/jni:/lib/x86_64-linux-gnu:/usr/lib/x86_64-linux-gnu:/usr/lib/jni:/lib:/usr/lib
12:07:15.926 [main] INFO  org.leo.traceroute.install.Env - OS:Linux / arch:amd64
Locale en_GB
Segmentation fault

The environment where the issue appeared:

OS: Neon 22.04 jammy
Kernel: x86_64 Linux 5.19.0-35-generic (64-bit)
Uptime: 16h 54m
Packages: 2056
Shell: bash 5.1.16
Resolution: 5120x1440
DE: KDE 5.105.0 / Plasma 5.27.5
WM: KWin (X11)
GTK Theme: Breeze [GTK2/3]
Icon Theme: breeze
Disk: 33G / 904G (4%)
CPU: Intel Core i3-8100 @ 4x 3.6GHz [43.0°C]
GPU: AMD Radeon RX 570 Series (polaris10, LLVM 13.0.1, DRM 3.42, 5.15.0-52-generic)
RAM: 21964MiB / 32033MiB
$ java --version
openjdk 19.0.2 2023-01-17
OpenJDK Runtime Environment (build 19.0.2+7-Ubuntu-0ubuntu322.04)
OpenJDK 64-Bit Server VM (build 19.0.2+7-Ubuntu-0ubuntu322.04, mixed mode, sharing)

Please tell what additional information is required if any.
What might it be?

Best and kind regards

ovtr closes itself automatically after start up

I'm using ovtr 1.7.1 under archlinux, from the AUR package.

It used to work, but I haven't been using it for a while. In April, after moving to a new place, I would like to test the network, so I started ovtr again. However, since then, ovtr never actually worked.

The problem is: after running ovtr, the application window displays for a very short while, and then ovtr is closed automatically. This is the same whether I run it with my user (in group network and can run tracepath) or root.
I looked at the console output, but nothing appears to be useful. (See attachments.)

ovtr_root_proxyed.log
ovtr_root_noproxy.log
ovtr_user_noproxy.log
ovtr_user_proxyed.log

My network has some issue in connecting to certain websites. That's the reason I used proxy to download the latest databases, and also the reason for:

Failed to download dynamic config. Fallback to default
java.net.ConnectException: 拒绝连接 (Connection refused)

Is there any more directives on how I may examine further?

Fails on Linux With JRE 11

I had both jdk 8 and jdk 11 installed, but jdk 11 as default, the app failed to run giving me this error:

localuser:root being added to access control list
/usr/share/OpenVisualTraceRoute/ovtr_run_as_root.sh: 7: [: libpcap.so.0.8: unexpected operator
starting OpenVisualTraceroute...
02:59:37.168 [main] INFO  org.leo.traceroute.Main - Open Visual Traceroute 1.7.1 
02:59:37.177 [main] INFO  org.leo.traceroute.install.Env - Java run-time version: 11.0.6
02:59:37.177 [main] INFO  org.leo.traceroute.install.Env - NASA World Wind Java v2.1.0
02:59:37.177 [main] INFO  org.leo.traceroute.install.Env - 
02:59:37.187 [main] INFO  org.leo.traceroute.install.Env - OS:Linux / arch:amd64
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by org.leo.traceroute.install.Env (file:/usr/share/OpenVisualTraceRoute/org.leo.traceroute.jar) to field java.lang.ClassLoader.usr_paths
WARNING: Please consider reporting this to the maintainers of org.leo.traceroute.install.Env
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
02:59:37.192 [main] INFO  org.leo.traceroute.install.Env - Loading /usr/share/OpenVisualTraceRoute/native/linux/x64/libjnetpcap.so
02:59:37.193 [main] INFO  org.leo.traceroute.install.Env - Loading /usr/share/OpenVisualTraceRoute/native/linux/x64/libjpcap.so
Locale en_GB
Inconsistency detected by ld.so: dl-lookup.c: 111: check_match: Assertion `version->filename == NULL || ! _dl_name_match_p (version->filename, map)' failed!
localuser:root being removed from access control list

Changing the default alternatives from jre 11 to jre 8 allowed the app to run properly, the app should have automatically used jre 8.

[suggestion] clarification of java branch

The site and docs need more clarity
Saying "at least java 11" isn't as useful as it should be with other software.

Java versioning is a confusing landscape for the average user.
Most users are not developers so install the regular runtime files from https://www.java.com/en/download/manual.jsp
This is version 8 branch, so Visual Trace Route fails to run, shows an error and sends the user to the oracle site for a developer version of java.
Here we are presented with a myriad of options depending on where on the page you look.
Some may be free but the language it is not as clear as it could be.
The offered version are 17 and 20 with a perplexing end of life being reversed as the v17 will be updated longer than 20.
Once scrolling down the page we finally find version 11 and wonder if and why that lower number has a longer shelf life than both 17 and 20.

So in short some explanation to an average end-user, of the requirement of which version between SE, JDK, JRE is needed
This software will not work with the common regular newest end user java, but instead requires a specific developer branch.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.