#$LOAD_PATH.unshift File.expand_path("../freewifi", __dir__) $LOAD_PATH.unshift File.expand_path("../mikrotik", __dir__) $LOAD_PATH.unshift File.expand_path("../database/mysql", __dir__) $LOAD_PATH.unshift File.expand_path("../database/mongo", __dir__) $LOAD_PATH.unshift File.expand_path("../additional", __dir__) require "freewifi/version" require 'freewifi/mikrotik/hewhub_mtik_ssh' require 'freewifi/database/mysql/database_methods_wifi' require 'freewifi/database/mongo/mongoconnector' require 'date' #eoip tunnel ids generates between 10001 - 65535 module Freewifi attr_accessor :mtik_hub1_ip, :mtik_hub2_ip, :user_hub, :password_hub, :cps_class, :db_mysql, :additional_func_wifi, :ssh_mikrotik_connector, :mongo_connector_wifi, :remote_ip, :real_ip, :subscriber_ip def initialize(hub1ip, hub2ip, username_hub, password_hub, database_username, database_password, database_host, mongo_ip, mongo_port, mongo_database, remote_ip, real_ip, subscriber_ip) @mtik_hub1_ip = hub1ip @mtik_hub2_ip = hub2ip @user_hub = username_hub @password_hub = password_hub @db_mysql = DatabaseMethodsWifi.new(database_username, database_password, database_host) @additional_func_wifi = InternalFunc.new @ssh_mikrotik_connector = NEWhubWifi.new @mongo_connector_wifi = MongoWifiCl.new(mongo_ip, mongo_port, mongo_database) @remote_ip = remote_ip @real_ip = real_ip @subscriber_ip = subscriber_ip end def add_mikrotik_ap_mobile(sim_ipaddress, sim_msisdn, bridge_name_hub, company_name, subscribers_address, subscribers_region, subscribers_contacts, wifi_ssid, portalstyle, ap_serial_number, ap_model, description, note) input_params = {:sim_ipaddress => sim_ipaddress, :sim_msisdn => sim_msisdn, :bridge_name_hub => bridge_name_hub, :company_name => company_name, :subscribers_address => subscribers_address, :subscribers_region => subscribers_region, :subscribers_contacts => subscribers_contacts, :wifi_ssid => wifi_ssid, :portalstyle => portalstyle, :ap_serial_number => ap_serial_number, :ap_model => ap_model, :description => description, :note => note } output_params = {} begin processed_comp_name = additional_func_wifi.company_check_wifi(company_name) #p ap_state = db_mysql.check_mikrotik_ap_exists(sim_ipaddress, sim_msisdn).to_s ap_state = mongo_connector_wifi.get_ap_info_sim_ip_wifi(sim_ipaddress, sim_msisdn).to_s if ap_state == "" || ap_state == nil || ap_state == "[]" || ap_state == "fttx" tunnel_addition = ssh_mikrotik_connector.add_eoip_for_mikr_wifi(bridge_name_hub, sim_ipaddress, processed_comp_name, mtik_hub1_ip, mtik_hub2_ip, user_hub, password_hub) if tunnel_addition[:code] == 200 data = {:sim_ipaddress => sim_ipaddress, :sim_msisdn => sim_msisdn, :bridge_name_hub => bridge_name_hub, :company_name => company_name, :subscribers_address => subscribers_address, :subscribers_region => subscribers_region, :subscribers_contacts => subscribers_contacts, :wifi_ssid => wifi_ssid, :portalstyle => portalstyle, :ap => "MikroTik", :ap_serial_number => ap_serial_number, :ap_model => ap_model, :description => description, :note => note, :tunnel_id => tunnel_addition[:body][:eoip_tunnel_id], :tunnel_name => tunnel_addition[:body][:eoip_tunnel_name], :created_date => DateTime.now } mongo_response = mongo_connector_wifi.data_ap_auto_created_insert(data) if mongo_response[:code]==200 output_params = {:code => 200, :result => "Request completed successfully", :body => {:tunnel_id => tunnel_addition[:body][:eoip_tunnel_id], :tunnel_name => tunnel_addition[:body][:eoip_tunnel_name]}} else output_params = {:code => 400, :result => "Something wrong with insertion to mongo"} end else output_params = {:code => 401, :result => tunnel_addition[:result]} end else output_params = {:code => 202, :result => "AP exists"} end rescue output_params = {:code => 507, :result => "Unknown SDK error"} end mongo_connector_wifi.audit_logger_wifi("add_mikrotik_ap_mobile", remote_ip, input_params, output_params, real_ip, subscriber_ip) #additional_func.printer_texter({:input_params => input_params, :output_params => output_params, :procedure => "add_mikrotik_ap_mobile", :file => "freewifi.rb"}, "info") output_params end def add_eoip_for_mikr_hub(bridge_name, ap_ip_address, tunnel_name) newhub = NEWhubWifi.new newhub.add_eoip_for_mikr_wifi(bridge_name, ap_ip_address, tunnel_name, mtik_hub1_ip, mtik_hub2_ip, user_hub, password_hub) end def del_one_eoip_from_mikr_hub(tunnel_id) newhub1 = NEWhubWifi.new newhub1.del_eoip_for_mikr(tunnel_id, mtik_hub1_ip, mtik_hub2_ip, user_hub, password_hub) p tid = tunnel_id.to_i mongo_connector_wifi.tunnelid_remove_single_mongo(tid) end def test() #newhub1 = NEWhub.new #newhub1.hub_get_all_eoip_tunnels("172.24.223.132", "soapgw", "fr8Hn3Ed2k0Im4gWmav2Nh7Y1qAm8KlmRh3Dcu2Wcok5gBdm") mongo_connector_wifi.data_ap_auto_created_insert(:test => "test") end end class Fwifi include Freewifi end #tested on 6.46.2 router os