Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #Save as GPhoneImporter.rb
- require "CSVReader"
- require "mysql"
- require "cgi"
- class GPhoneImporter
- include CSVReader
- def initialize(u,p)
- @user = u
- @pass = p
- con = _connect(u, p)
- str = "USE warmapper;"
- con.query(str)
- str = %{
- CREATE TABLE IF NOT EXISTS gphone_wifitracker (
- pkey BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
- ssid VARCHAR(128) NOT NULL,
- bssid VARCHAR(64) NOT NULL UNIQUE,
- longitude DOUBLE NOT NULL,
- latitude DOUBLE NOT NULL,
- max_signal DOUBLE NOT NULL,
- capabilities VARCHAR(256),
- ctime BIGINT UNSIGNED NOT NULL,
- frequency INT NOT NULL,
- gps_accuracy DOUBLE,
- PRIMARY KEY (pkey)
- );
- }
- con.query(str)
- con.close
- end
- def import(file, u, p)
- con = _connect(u, p)
- str = "USE warmapper;"
- con.query(str)
- csv_each(file){|x|
- str = %Q{
- INSERT INTO gphone_wifitracker (
- ssid,
- bssid,
- longitude,
- latitude,
- max_signal,
- capabilities,
- ctime,
- frequency,
- gps_accuracy
- ) VALUES (
- '#{CGI.escape(x["SSID"])}',
- '#{CGI.escape(x["BSSID"])}',
- #{x["Longitude"]},
- #{x["Latitude"]},
- #{x["Signal strength(-dBm)"]},
- '#{CGI.escape(x["AP Capabilities"])}',
- #{x["Unix time"]},
- #{x["Frequency"]},
- #{x["GPS Accuracy"]}
- ) ON DUPLICATE KEY UPDATE pkey=pkey;
- }
- puts str
- con.query(str)
- }
- con.close
- end
- private
- def _connect(u, p)
- con = Mysql.connect("127.0.0.1", u, p)
- end
- end
- puts ARGV[1]
- a = GPhoneImporter.new(ARGV[1], ARGV[2])
- a.import(ARGV[0], ARGV[1], ARGV[2])
- #save as CSVReader.rb
- module CSVReader
- def csv_each(file, sep=",")
- fields = nil
- if File.exists?(file) then
- File.open(file, "r"){|fo|
- if first_line = fo.gets then
- fields = first_line.split(sep).collect{|x| x.strip}
- else
- raise "#{self.class}: File error on file: #{file}"
- end
- while inline = fo.gets
- hsh = {}
- linearr = inline.split(",").collect{|x| x.strip}
- fields.each_with_index{|x, i|
- hsh[x] = linearr[i].strip
- }
- yield hsh
- end
- }
- return nil
- else
- raise "#{self.class}: File not found: #{file}"
- end
- return nil
- end
- def read_csv(file, sep=",")
- out = []
- csv_each(file, sep){|x|
- out.push x
- }
- return out
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement