ip2kml 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. checksums.yaml +7 -0
  2. data/bin/ip2kml +9 -0
  3. data/lib/ip2kml.rb +72 -0
  4. metadata +47 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 270f1a7810e05e40b194421769fc51d6583c87e7
4
+ data.tar.gz: 6d3f700c91813db9c565786881a3de250b824d06
5
+ SHA512:
6
+ metadata.gz: e97e474e680767f40704d8e06280766b42f078b4f5cddac35fbf2318925cb5ab82959cc131cc70c44a8614b27758dcf75c35ddc4cafe762401e3863cb023e524
7
+ data.tar.gz: 6cf63e8035f2b631df4235c5341d66c96a895600d6ebe877053f60f0828f7378c1d69ac33290644c03f0b26f50731cae1a0e5b812b24a4540f0f3970ca1a2a44
data/bin/ip2kml ADDED
@@ -0,0 +1,9 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'ip2kml'
4
+
5
+ i2 = Ip2kml.new($stdin.readlines)
6
+ i2.generate_kml_file
7
+ kml_file = i2.get_kml_file
8
+ puts kml_file
9
+
data/lib/ip2kml.rb ADDED
@@ -0,0 +1,72 @@
1
+ require 'net/http'
2
+ require 'uri'
3
+ require 'json'
4
+
5
+ class Ip2kml
6
+
7
+ def initialize(ip_list)
8
+ @geoip_service_base_url = 'http://www.freegeoip.net/json/'
9
+ @ip_list = ip_list
10
+ @kml_file_data = String.new # This will get populated with the XML text
11
+ end
12
+
13
+ def get_ip_info(ip_address)
14
+ # Look up IP information from web service
15
+ uri = URI.parse(@geoip_service_base_url + ip_address)
16
+ response = Net::HTTP.get_response(uri)
17
+ JSON.parse(response.body)
18
+ end
19
+
20
+ def generate_pin_from_ip(ip_address)
21
+ ip_data = get_ip_info(ip_address)
22
+ @kml_file_data << <<EOT
23
+ <Placemark>
24
+ <name>#{ip_data['ip']}</name>
25
+ <description>
26
+ Country code: #{ip_data['country_code']}
27
+ Country name: #{ip_data['country_name']}
28
+ Region code: #{ip_data['region_code']}
29
+ Region name: #{ip_data['region_name']}
30
+ City: #{ip_data['city']}
31
+ Zip code: #{ip_data['zip_code']}
32
+ Time zone: #{ip_data['time_zone']}
33
+ Latitude: #{ip_data['latitude']}
34
+ Longitude: #{ip_data['longitude']}
35
+ Metro code: #{ip_data['metro_code']}
36
+ </description>
37
+ <Point>
38
+ <coordinates>#{ip_data['longitude']},#{ip_data['latitude']},0</coordinates>
39
+ </Point>
40
+ </Placemark>
41
+ EOT
42
+ end
43
+
44
+ def start_kml_file
45
+ # Header boilerplate of KML file
46
+ @kml_file_data = <<EOT
47
+ <?xml version="1.0" encoding="UTF-8"?>
48
+ <kml xmlns="http://www.opengis.net/kml/2.2">'
49
+ EOT
50
+ end
51
+
52
+ def finish_kml_file
53
+ # Footer boilerplate for KML file
54
+ @kml_file_data << <<EOT
55
+ </kml> <!-- Auto generated by ip2kml -->
56
+ EOT
57
+ end
58
+
59
+ def generate_kml_file
60
+ start_kml_file
61
+ @ip_list.each do |ip_address|
62
+ generate_pin_from_ip(ip_address.strip!)
63
+ end
64
+ finish_kml_file
65
+ return
66
+ end
67
+
68
+ def get_kml_file
69
+ return @kml_file_data
70
+ end
71
+
72
+ end
metadata ADDED
@@ -0,0 +1,47 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: ip2kml
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - NanoDano
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-11-22 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: Generate Google Earth KML files from a list of IP addresses
14
+ email: nanodano@devdungeon.com
15
+ executables:
16
+ - ip2kml
17
+ extensions: []
18
+ extra_rdoc_files: []
19
+ files:
20
+ - bin/ip2kml
21
+ - lib/ip2kml.rb
22
+ homepage: http://rubygems.org/gems/ip2kml
23
+ licenses:
24
+ - MIT
25
+ metadata: {}
26
+ post_install_message:
27
+ rdoc_options: []
28
+ require_paths:
29
+ - lib
30
+ required_ruby_version: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - ">="
33
+ - !ruby/object:Gem::Version
34
+ version: '0'
35
+ required_rubygems_version: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: '0'
40
+ requirements: []
41
+ rubyforge_project:
42
+ rubygems_version: 2.4.5
43
+ signing_key:
44
+ specification_version: 4
45
+ summary: IP 2 KML
46
+ test_files: []
47
+ has_rdoc: