bool AtDrv::setApSSID(char *ssid, int type, const char *password) { bool ret = false; IPAddress ipStart(192, 168, 43, 100); IPAddress ipEnd(192, 168, 43, 200); IPAddress mask(255, 255, 255, 0); IPAddress gateway(192, 168, 43, 1); IPAddress dns1(192, 168, 43, 1); IPAddress dns2(8, 8, 8, 8); IPAddress netIp(192, 168, 43, 1); if(!isAtMode()) { if(!switchToAtMode()) { INFO1("Can't switch to at mode"); goto end; } } if(!setNetMode(NET_MODE_WIFI_AP)) goto end; if(!setWiFiConfig(ssid, type, password)) goto end; if(!setDhcpd(true)) goto end; if(!setDhcpdIp(ipStart, ipEnd, mask, gateway)) goto end; if(!setDhcpdDns(dns1, dns2)) goto end; if(!setDhcpdTime(86400)) goto end; if(!setNetIp(netIp, mask, gateway)) goto end; if(!setNetDns(dns1, dns2)) goto end; netCommit(); ret = true; end: return ret; }
void ClusterGeoIpService::_parseLine(const char *line,std::vector<_V4E> &v4db,std::vector<_V6E> &v6db,int ipStartColumn,int ipEndColumn,int latitudeColumn,int longitudeColumn) { std::vector<std::string> ls(OSUtils::split(line,",\t","\\","\"'")); if ( ((ipStartColumn >= 0)&&(ipStartColumn < (int)ls.size()))&& ((ipEndColumn >= 0)&&(ipEndColumn < (int)ls.size()))&& ((latitudeColumn >= 0)&&(latitudeColumn < (int)ls.size()))&& ((longitudeColumn >= 0)&&(longitudeColumn < (int)ls.size())) ) { InetAddress ipStart(ls[ipStartColumn].c_str(),0); InetAddress ipEnd(ls[ipEndColumn].c_str(),0); const double lat = strtod(ls[latitudeColumn].c_str(),(char **)0); const double lon = strtod(ls[longitudeColumn].c_str(),(char **)0); if ((ipStart.ss_family == ipEnd.ss_family)&&(ipStart)&&(ipEnd)&&(std::isfinite(lat))&&(std::isfinite(lon))) { const double latRadians = lat * 0.01745329251994; // PI / 180 const double lonRadians = lon * 0.01745329251994; // PI / 180 const double cosLat = cos(latRadians); const int x = (int)round((-6371.0) * cosLat * cos(lonRadians)); // 6371 == Earth's approximate radius in kilometers const int y = (int)round(6371.0 * sin(latRadians)); const int z = (int)round(6371.0 * cosLat * sin(lonRadians)); if (ipStart.ss_family == AF_INET) { v4db.push_back(_V4E()); v4db.back().start = Utils::ntoh((uint32_t)(reinterpret_cast<const struct sockaddr_in *>(&ipStart)->sin_addr.s_addr)); v4db.back().end = Utils::ntoh((uint32_t)(reinterpret_cast<const struct sockaddr_in *>(&ipEnd)->sin_addr.s_addr)); v4db.back().lat = (float)lat; v4db.back().lon = (float)lon; v4db.back().x = x; v4db.back().y = y; v4db.back().z = z; //printf("%s - %s : %d,%d,%d\n",ipStart.toIpString().c_str(),ipEnd.toIpString().c_str(),x,y,z); } else if (ipStart.ss_family == AF_INET6) { v6db.push_back(_V6E()); memcpy(v6db.back().start,reinterpret_cast<const struct sockaddr_in6 *>(&ipStart)->sin6_addr.s6_addr,16); memcpy(v6db.back().end,reinterpret_cast<const struct sockaddr_in6 *>(&ipEnd)->sin6_addr.s6_addr,16); v6db.back().lat = (float)lat; v6db.back().lon = (float)lon; v6db.back().x = x; v6db.back().y = y; v6db.back().z = z; //printf("%s - %s : %d,%d,%d\n",ipStart.toIpString().c_str(),ipEnd.toIpString().c_str(),x,y,z); } } } }