mediamtx增加中国区ip推流检测

在servers/rtsp目录下增加IpCheck.go并实现CheckIp函数 

在conn.go中的initialize函数中调用CheckIp 

 IpCheck.go实现如下

package rtsp

import (
	"encoding/json"
	"fmt"
	"io/ioutil"
	"net/http"
	_ "os"
)

type AreaData struct {
	Continent string `json:"continent"`
	Country   string `json:"country"`
	ZipCode   string `json:"zipcode"`
	Owner     string `json:"owner"`
	Isp       string `json:"isp"`
	Adcode    string `json:"adcode"`
	Prov      string `json:"prov"`
	City      string `json:"city"`
	District  string `json:"district"`
}

type IpData struct {
	Code string   `json:"code"`
	Data AreaData `json:"data"`
	Ip   string   `json:"ip"`
}

func CheckIp(ip string) bool {
	//ip := "14.23.36.151"
	url := fmt.Sprintf("https://qifu-api.baidubce.com/ip/geo/v1/district?ip=%s", ip)
	resp, err := http.Get(url)
	if err != nil {
		fmt.Printf("Error making request: %v\n", err)
		return false
	}
	defer resp.Body.Close()

	body, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		fmt.Printf("Error reading response body: %v\n", err)
		return false
	}

	var ipInfo IpData
	err = json.Unmarshal(body, &ipInfo)
	if err != nil {
		fmt.Printf("Error parsing JSON: %v\n", err)
		return false
	}

	if ipInfo.Code == "Success" {
		fmt.Printf("===>Ip: %s ", ipInfo.Ip)
		fmt.Printf("Continent: %s ", ipInfo.Data.Continent)
		fmt.Printf("Country: %s ", ipInfo.Data.Country)
		fmt.Printf("ZipCode: %s ", ipInfo.Data.ZipCode)
		fmt.Printf("Owner: %s ", ipInfo.Data.Owner)
		fmt.Printf("Isp: %s ", ipInfo.Data.Isp)
		fmt.Printf("Adcode: %s ", ipInfo.Data.Adcode)
		fmt.Printf("Prov: %s ", ipInfo.Data.Prov)
		fmt.Printf("City: %s ", ipInfo.Data.City)
		fmt.Printf("District: %s\n", ipInfo.Data.District)
		if len(ipInfo.Data.Country) > 0 {
			return ipInfo.Data.Country == "中国"
		}
	}
	return false
}

输出:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

自由软件开发者

有你的鼓励,我会更加努力。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值