| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 |
- package com.key.common.plugs.ipaddr;
- import java.net.InetAddress;
- import java.net.UnknownHostException;
- import javax.servlet.http.HttpServletRequest;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Component;
- @Component
- public class IPService {
- @Autowired
- private IPSeeker ipSeeker;
- public String getIp(HttpServletRequest request) {
-
- //Http Header:X-Forwarded-For
- String ip = request.getHeader("X-Forwarded-For");
- if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
- ip = request.getHeader("Proxy-Client-IP");
- }
- if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
- ip = request.getHeader("WL-Proxy-Client-IP");
- }
- if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
- ip = request.getRemoteAddr();
- }
- // ip=replaceIPv6LocalIp(ip);
- ip=checkLocalIp(ip);
- if(ip!=null && ip.indexOf(",")>0){
- ip=ip.substring(0,ip.indexOf(","));
- }
- return ip;
- }
- /**
- * 检查以localhost,127.0.0.1访问时得到真实IP
- * @param ip
- * @return
- */
- public String checkLocalIp(String ip){
- if("0:0:0:0:0:0:0:1".equals(ip) || "127.0.0.1".equals(ip) || "0:0:0:0:0:0:0:1%0".equals(ip)){
- try {
- InetAddress inetAddress = InetAddress.getLocalHost();
- ip=inetAddress.getHostAddress();
-
- if(ip!=null && ip.length()>15){ //"***.***.***.***".length() = 15
- if(ip.indexOf(",")>0){
- ip = ip.substring(0,ip.indexOf(","));
- }
- }
- System.out.println(ip);
- } catch (UnknownHostException e) {
- // e.printStackTrace();
- }
- }
- return ip;
- }
-
- public String replaceIPv6LocalIp(String ip){
- if("0:0:0:0:0:0:0:1".equals(ip)){
- ip="127.0.0.1";
- }
- return ip;
- }
-
- public String getCountry(String ip) {
- if(ip==null){
- return "";
- }
- return ipSeeker.getCountry(ip);
- }
- /**
- * 根据IP,查出此ip所在的城市
- *
- * @param ip
- * @return
- */
- public String getCurCity(String ip) {
- String city = ipSeeker.getCountry(ip);
- city = city.replaceAll("\\S+省|市.*|[内蒙古|广西]", "");
- city = city.replaceAll("清华大学.*", "北京");
- return city;
- }
- /**
- * 根据 getCountry(ip);得到的地址得到城市
- *
- * @param country
- * @return
- */
- public String getCurCityByCountry(String country) {
- // 省..市
- // ..市
- // ..省..市..
- // ..省..
- // ..省
- // 清华大学=北京
- // 内蒙古..市
- // 内蒙古..
- // 广西..市
- String city = country;
- city = city.replaceAll("\\S+省|市.*|[内蒙古|广西]", "");
- city = city.replaceAll("清华大学.*", "北京");
- return city;
- }
- /**
- * 根据 request对象得到数据请求者所在的城市
- *
- * @param request
- * @return
- */
- public String getCurCity(HttpServletRequest request) {
- String ip = getIp(request);
- // ip="202.106.46.151";
- String city = ipSeeker.getCountry(ip);
- city = city.replaceAll("\\S+省|市.*|[内蒙古|广西]", "");
- city = city.replaceAll("清华大学.*", "北京");
- return city;
- }
-
- public static void main(String[] args) {
- String ip="111.206.20.59, 123.151.42.46, 121.42.17.215,";
- System.out.println(ip.substring(0,ip.indexOf(",")));
- }
- }
|