package models

import (
	"net"
	"strings"

	"github.com/gin-gonic/gin"
)

// GetRealIP 获取真实IP（处理代理）
func GetRealIP(c *gin.Context) string {
	// 优先级顺序
	headers := []string{
		"CF-Connecting-IP", // Cloudflare
		"True-Client-IP",
		"X-Forwarded-For",
		"X-Real-IP",
	}

	for _, header := range headers {
		if ip := c.GetHeader(header); ip != "" {
			// 处理多个IP的情况（如 X-Forwarded-For: client, proxy1, proxy2）
			if strings.Contains(ip, ",") {
				ips := strings.Split(ip, ",")
				ip = strings.TrimSpace(ips[0])
			}

			if net.ParseIP(ip) != nil {
				return ip
			}
		}
	}

	// 最后使用Gin的ClientIP方法
	return c.ClientIP()
}

// func LogAdd(c *gin.Context, msg string) {

// 	var logtemp APIRequestLog_

// 	logtemp.IPAddress = GetRealIP(c)
// 	logtemp.Path = c.Request.URL.Path
// 	logtemp.Method = c.Request.Method
// 	logtemp.Message = msg

// 	//fmt.Println(logtemp)
// 	DB.Create(&logtemp)

// }
