use actix_http::header::{HeaderMap, USER_AGENT};
use actix_web::{HttpRequest};
use rbatis::object_id::ObjectId;
use rbatis::rbdc::datetime::DateTime;
use user_agent_parser::UserAgentParser;
fn get_header_value(headers: &HeaderMap, head: &str) -> String {
if headers.get(head).is_some() {
headers.get(head).unwrap().to_str().unwrap_or("").to_string()
} else {
"".to_string()
}
}
pub fn get_ip_addr(req: &HttpRequest) -> String
{
let headers = req.headers();
let mut ip = get_header_value(headers, "x-forwarded-for");
if ip.len() == 0 { ip = get_header_value(headers, "Proxy-Client-IP") }
if ip.len() == 0 { ip = get_header_value(headers, "X-Forwarded-For") }
if ip.len() == 0 { ip = get_header_value(headers, "WL-Proxy-Client-IP") }
if ip.len() == 0 { ip = get_header_value(headers, "X-Real-IP") }
if ip.len() == 0 {
return req.peer_addr().unwrap().ip().to_string();
}
ip.to_string()
}