Added Maxmind's TOS
* FIX: Maxmind now allows redistributing GeoLite2-ASN database if requirements are fulfilled (xicon/xtr#3) * ADD: Maxmind's TOS added as start-up message
This commit is contained in:
		
							
								
								
									
										13
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										13
									
								
								README.md
									
									
									
									
									
								
							| @@ -1,9 +1,14 @@ | |||||||
| # xtr | # xtr | ||||||
|  |  | ||||||
| This is the server for the XTR (XiCoN Trace Route). It's more of a master browser for the clients, so an web frontend can get a list of all the available clients combined from one auto-updated source. It opens a port and listening to HTTP requests (GET and PUT). It can list all online and offline clients. It also accepts new client entries via a PUT request (target client address in database has to be the request ip). | This is the server for the XTR (XiCoN Trace Route). It's more of a master browser for the clients, so an web frontend can get a list of all the | ||||||
|  | available clients combined from one auto-updated source. It opens a port and listening to HTTP requests (GET and PUT). It can list all online and | ||||||
|  | offline clients. It also accepts new client entries via a PUT request (target client address in database has to be the request ip).  | ||||||
|  |  | ||||||
| The server keeps the list of clients up2date with checking their availablity with each request of all online clients. | The server keeps the list of clients up2date with checking their availablity with each request of all online clients. | ||||||
|  |  | ||||||
| This software uses the iptoasn database (https://iptoasn.com/) to determine the AS for each client. To keep track of all ip to asn relations, this software creates a local database file "ip2asn.db", which is a simple SQLite3 database with an index for faster searches. |  | ||||||
|  |  | ||||||
| For now, only IPv4 clients are supported. This will change in the future. | For now, only IPv4 clients are supported. This will change in the future. | ||||||
|  |  | ||||||
|  | This software uses the MaxMind GeoLite2 database (https://www.maxmind.com) to determine the AS for each hop. To lookup the AS information the script | ||||||
|  | uses the MaxMind perl module which uses the MaxMind DB library. | ||||||
|  |  | ||||||
|  |  | ||||||
|  | This product includes GeoLite2 ASN data created by MaxMind, available from <a href="http://www.maxmind.com">http://www.maxmind.com</a>. | ||||||
|   | |||||||
							
								
								
									
										37
									
								
								xtrd.pl
									
									
									
									
									
								
							
							
						
						
									
										37
									
								
								xtrd.pl
									
									
									
									
									
								
							| @@ -6,7 +6,6 @@ use Dancer2; | |||||||
| use Socket; | use Socket; | ||||||
| use DBI; | use DBI; | ||||||
| use File::Fetch; | use File::Fetch; | ||||||
| use PerlIO::gzip; |  | ||||||
| use HTTP::Tiny; | use HTTP::Tiny; | ||||||
| use HTTP::Request; | use HTTP::Request; | ||||||
| use Data::Validate::Domain qw(is_domain); | use Data::Validate::Domain qw(is_domain); | ||||||
| @@ -22,15 +21,21 @@ use Data::Dumper; | |||||||
| # offline clients. It also accepts new client entries via a PUT request (target client address in database has to be the request ip).  | # offline clients. It also accepts new client entries via a PUT request (target client address in database has to be the request ip).  | ||||||
| #  | #  | ||||||
| # The server keeps the list of clients up2date with checking their availablity with each request of all online clients. | # The server keeps the list of clients up2date with checking their availablity with each request of all online clients. | ||||||
| # |  | ||||||
| # This software uses the iptoasn database (https://iptoasn.com/) to determine the AS for each client. To keep track of all ip to asn relations, |  | ||||||
| # this software creates a local database file "ip2asn.db", which is a simple SQLite3 database with an index for faster searches. |  | ||||||
| # |  | ||||||
| # For now, only IPv4 clients are supported. This will change in the future. | # For now, only IPv4 clients are supported. This will change in the future. | ||||||
|  | # | ||||||
|  | # This software uses the MaxMind GeoLite2 database (https://www.maxmind.com) to determine the AS for each hop. To lookup the AS information the script | ||||||
|  | # uses the MaxMind perl module which uses the MaxMind DB library. | ||||||
|  | # | ||||||
|  | # | ||||||
|  | # This product includes GeoLite2 ASN data created by MaxMind, available from <a href="http://www.maxmind.com">http://www.maxmind.com</a>. | ||||||
| ###################################################################################################################################################### | ###################################################################################################################################################### | ||||||
|  |  | ||||||
|  |  | ||||||
| ###  CHANGELOG  ###################################################################################################################################### | ###  CHANGELOG  ###################################################################################################################################### | ||||||
|  | # v0.5 (2020-04-14) | ||||||
|  | #      * FIX: Maxmind now allows redistributing GeoLite2-ASN database if requirements are fulfilled (https://git.xicon.eu/xicon/xtr/issues/3) | ||||||
|  | #      * ADD: Maxmind's TOS added as start-up message | ||||||
|  | # | ||||||
| # v0.4 (2019-08-22) | # v0.4 (2019-08-22) | ||||||
| #      * ADD: added better documentation | #      * ADD: added better documentation | ||||||
| #      * ADD: list of API commands via API | #      * ADD: list of API commands via API | ||||||
| @@ -46,20 +51,27 @@ use Data::Dumper; | |||||||
| # Either install all listed modules with "cpan -i <module>" or use your system's package manager (apt, yum, yast). | # Either install all listed modules with "cpan -i <module>" or use your system's package manager (apt, yum, yast). | ||||||
| #  | #  | ||||||
| # On Debian just install there packages: | # On Debian just install there packages: | ||||||
|  | #   screen | ||||||
| #   libperlio-gzip-perl | #   libperlio-gzip-perl | ||||||
| #   libdancer2-perl | #   libdancer2-perl | ||||||
| #   libdbi-perl | #   libdbi-perl | ||||||
| #   libdbd-sqlite3-perl | #   libdbd-sqlite3-perl | ||||||
| #   libdata-validate-ip-perl | #   libdata-validate-ip-perl | ||||||
|  | #   build-essential | ||||||
|  | #   cpanminus | ||||||
|  | #   libmaxminddb0 | ||||||
|  | #   libmaxminddb-dev | ||||||
|  | # | ||||||
|  | # After that, execute this command to install maxmind database reader module: | ||||||
|  | #   cpanm -q -n MaxMind::DB::Reader::XS | ||||||
| # | # | ||||||
| ###################################################################################################################################################### | ###################################################################################################################################################### | ||||||
|  |  | ||||||
|  |  | ||||||
| ### VARS ############################################################################################################################################# | ### VARS ############################################################################################################################################# | ||||||
| my $dbfile                      = 'xtrd.db'; | my $dbfile                      = 'xtrd.db'; | ||||||
| my $ip2asn_csv_url              = 'http://iptoasn.com/data/ip2asn-v4-u32.tsv.gz'; |  | ||||||
| my $max_dbfile                  = 'GeoLite2-ASN.mmdb'; | my $max_dbfile                  = 'GeoLite2-ASN.mmdb'; | ||||||
| my $max_db_source               = 'http://geolite.maxmind.com/download/geoip/database/GeoLite2-ASN.tar.gz'; | my $max_db_source               = 'http://xtr.xicon.eu/GeoLite2-ASN.tar.gz'; | ||||||
| my $server_protocol_version     = 3; | my $server_protocol_version     = 3; | ||||||
| my $min_client_version          = 4; | my $min_client_version          = 4; | ||||||
| set port                        => 12110; | set port                        => 12110; | ||||||
| @@ -350,3 +362,14 @@ sub create_db_table | |||||||
| 		return 0; | 		return 0; | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
|  | sub print_maxmind_tos | ||||||
|  | { | ||||||
|  | 	print qq{ --------------------------------------------------------------------------------------------------------------------------------------- }; | ||||||
|  | 	print "\n"; | ||||||
|  | 	print qq{ This product includes GeoLite2 ASN data created by MaxMind, available from <a href="http://www.maxmind.com">http://www.maxmind.com</a>. }; | ||||||
|  | 	print "\n"; | ||||||
|  | 	print qq{ --------------------------------------------------------------------------------------------------------------------------------------- }; | ||||||
|  | 	print "\n"; | ||||||
|  | 	print "\n"; | ||||||
|  | } | ||||||
		Reference in New Issue
	
	Block a user