master
修改密码漏洞修复完成 2 weeks ago
parent 39fbae8866
commit 6f8c5b7a51

@ -8,10 +8,9 @@ func test_print(a int) {
} }
} }
func main01() {
func main() {
for i := 0; i < 100; i++ { for i := 0; i < 100; i++ {
go test_print(i) go test_print(i)
} }
time.Sleep(360000000*time.Second) time.Sleep(360000000 * time.Second)
} }

@ -186,7 +186,6 @@ func dbTest() {
stmt.Exec(1) stmt.Exec(1)
} }
// GenRsaKey generates an PKCS#1 RSA keypair of the given bit size in PEM format. // GenRsaKey generates an PKCS#1 RSA keypair of the given bit size in PEM format.
func GenRsaKey(bits int) (prvkey, pubkey []byte, err error) { func GenRsaKey(bits int) (prvkey, pubkey []byte, err error) {
// Generates private key. // Generates private key.
@ -215,7 +214,6 @@ func GenRsaKey(bits int) (prvkey, pubkey []byte, err error) {
return return
} }
func ParseRSAPrivateKeyFromPEM(pemData string) (*rsa.PrivateKey, error) { func ParseRSAPrivateKeyFromPEM(pemData string) (*rsa.PrivateKey, error) {
var keyData = []byte(pemData) var keyData = []byte(pemData)
// 解析PEM块 // 解析PEM块
@ -252,7 +250,7 @@ func parsePrivateKey(privateKeyFile string) (*rsa.PrivateKey, error) {
return privateKey, nil return privateKey, nil
} }
//生成RSA私钥和公钥保存到文件中 // 生成RSA私钥和公钥保存到文件中
func GenerateRSAKey(bits int) { func GenerateRSAKey(bits int) {
//GenerateKey函数使用随机数据生成器random生成一对具有指定字位数的RSA密钥 //GenerateKey函数使用随机数据生成器random生成一对具有指定字位数的RSA密钥
//Reader是一个全局、共享的密码用强随机数生成器 //Reader是一个全局、共享的密码用强随机数生成器
@ -403,7 +401,7 @@ func RsaEncryptBlock(src []byte, path string) (bytesEncrypt []byte, err error) {
// 读取公钥文件 // 读取公钥文件
keyData, err := ioutil.ReadFile(path) keyData, err := ioutil.ReadFile(path)
if err != nil { if err != nil {
return nil,err return nil, err
} }
//pem解码 //pem解码
@ -436,7 +434,6 @@ func RsaEncryptBlock(src []byte, path string) (bytesEncrypt []byte, err error) {
return return
} }
func timing(client mqtt.Client) { func timing(client mqtt.Client) {
//定时器10秒钟执行一次 //定时器10秒钟执行一次
ticker := time.NewTicker(10 * time.Second) ticker := time.NewTicker(10 * time.Second)
@ -475,7 +472,6 @@ func timing(client mqtt.Client) {
//fmt.Println("解密后的字符串:") //fmt.Println("解密后的字符串:")
//fmt.Println(string(decrptCode)) //fmt.Println(string(decrptCode))
} }
} }
} }
@ -488,7 +484,6 @@ var messagePubHandler mqtt.MessageHandler = func(client mqtt.Client, msg mqtt.Me
fmt.Println(message) fmt.Println(message)
fmt.Println(topic) fmt.Println(topic)
//privatePath := "/Users/edao/GolandProjects/go_mqtt/privateKey.pem" //privatePath := "/Users/edao/GolandProjects/go_mqtt/privateKey.pem"
privateKeyPEM := `-----BEGIN PRIVATE KEY----- privateKeyPEM := `-----BEGIN PRIVATE KEY-----
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCYwvInDUICXbmWcOAR5hm86mz7WlKL3dDf12MSeIY2jm5QpUSSoMhrJOWLbOt5fXQepPaNO0M30A+3C4SFZrM/9WA5ehazO1u1m1LAkYzoSDRH3MMJsrJC3lCGDeOROteu+safuP9k/npU1YQu/+Ll2xEJNxyvUx4jLGM4LamiMI6ytM3gdnOAGP4YRQo9Etwo6I986yg/seCQC5rza9M4iBamoin7U8h9yOMKrM6xK/k9CcY/vn5+Uhe3Pvk4qj/2Ff3OXkkc1wfdILqdLwLOKL0Tb3ZciwG0p1CKO80yf5hyYoWjqZk5Rcd07nTo2gqTFGfLl9sqI9/+ipMDtnHlAgMBAAECggEATJd5yCC6lusdMRO5FOBUyUaUi9X2i1AU+RZKAynQySvSnbavUgExW58tRCHBUrGW9gJp59ft1N8J8hHhSO18NDY4H7laBlVdnwmYjRqtFo2VQO6sD4G8JRDION5f2iIxn/b2fYDI9H8vILfJRbNgtTSILyGlzTYUZzhLKxCh+8IsN96Nic8wa5COd1vZZmdhf2y8TG8clFWmozaScNSAATx7y+8XLVWjjWiIRZ6xQvx0uQPUParc9KihXXTKR2pA22yPIdz+U4MGD4kC0eczlcFKZ/dYv9e7OIGgnJfT0idSCu7nYb1pxJ1LxD9fS6IScNTF5dSe0OIL98e+XdyoAQKBgQDRep+5cW4iAKrEMH+djmcXAkoMiYtNVtnu0efLE8dP6vjYytQi368X9SdcASbfrQ31eEZmr/xQnlUF8oyHGkI38YS8dpAHzQcrkP3BljbbzB/3gJZaUdghGsDrK0xAJIzzmFKQpeKnGtr23vxUgaGrNsCYvQ0eQ7+5056KXS4r5QKBgQC6r8xtRSaje6L4WIydjWvYywsmRO0Of0aJLMDA/Wt2MWhHfh7ba9oI1cKGN80ap7xB2a9lQLgpv+C53wNtE5SpvjxsikAj96nUMMhGy9ojXrUith6HQhiINETz6Shnznd+AyrXP6KI/RpfA5nkDB5nrJxODwtYLP467IL7Cv7OAQKBgQCl4KxKdH/5fP28jYsAgJsxpSZt9xzQCU5Zxu396ZOSvUaApVyGoQpNtluMh3z48lhzYOKevgzW6gn5w69z7F8zXZT2iAxVoQ1kelP2z7RxKJrHqpNkwhqbXEwX7RlcUZUr8BqxYCqymJl7k+fMIzqaEalBSbLxnEReKi0I8/Bz4QKBgHK4b0ZCtVDHPEmimJ6E9l4dv/c/afF7swu+zaCK2ouiJvOwBCRQbYb6XPR/u/GCXASXUdpF4CX/vIhcDE3uN2/r8FO+zVWM7vbvF1OyF5WesG7pPW9e5ZZlkG3WvLa1wOZV6fCmMSo/ZwI2Q05JSDHrd43cXttLotrw1jiQ9C4BAoGBAKi4SOoOVQ5J5HQCDkBwPbG1AOLHFinzfoDl26GF/8Hy7fmmd1JiRTFldQp/A9VTAABz3sVYmMB92HSIaJhuDMoYJNI2Cf/cZifsv7vUL8cbLn+lPsKsebiuB0m0g4P2qLwLfegfNGEgA7lA5HIz3SELqbdp3iuqJeQl1fsJqD74 MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCYwvInDUICXbmWcOAR5hm86mz7WlKL3dDf12MSeIY2jm5QpUSSoMhrJOWLbOt5fXQepPaNO0M30A+3C4SFZrM/9WA5ehazO1u1m1LAkYzoSDRH3MMJsrJC3lCGDeOROteu+safuP9k/npU1YQu/+Ll2xEJNxyvUx4jLGM4LamiMI6ytM3gdnOAGP4YRQo9Etwo6I986yg/seCQC5rza9M4iBamoin7U8h9yOMKrM6xK/k9CcY/vn5+Uhe3Pvk4qj/2Ff3OXkkc1wfdILqdLwLOKL0Tb3ZciwG0p1CKO80yf5hyYoWjqZk5Rcd07nTo2gqTFGfLl9sqI9/+ipMDtnHlAgMBAAECggEATJd5yCC6lusdMRO5FOBUyUaUi9X2i1AU+RZKAynQySvSnbavUgExW58tRCHBUrGW9gJp59ft1N8J8hHhSO18NDY4H7laBlVdnwmYjRqtFo2VQO6sD4G8JRDION5f2iIxn/b2fYDI9H8vILfJRbNgtTSILyGlzTYUZzhLKxCh+8IsN96Nic8wa5COd1vZZmdhf2y8TG8clFWmozaScNSAATx7y+8XLVWjjWiIRZ6xQvx0uQPUParc9KihXXTKR2pA22yPIdz+U4MGD4kC0eczlcFKZ/dYv9e7OIGgnJfT0idSCu7nYb1pxJ1LxD9fS6IScNTF5dSe0OIL98e+XdyoAQKBgQDRep+5cW4iAKrEMH+djmcXAkoMiYtNVtnu0efLE8dP6vjYytQi368X9SdcASbfrQ31eEZmr/xQnlUF8oyHGkI38YS8dpAHzQcrkP3BljbbzB/3gJZaUdghGsDrK0xAJIzzmFKQpeKnGtr23vxUgaGrNsCYvQ0eQ7+5056KXS4r5QKBgQC6r8xtRSaje6L4WIydjWvYywsmRO0Of0aJLMDA/Wt2MWhHfh7ba9oI1cKGN80ap7xB2a9lQLgpv+C53wNtE5SpvjxsikAj96nUMMhGy9ojXrUith6HQhiINETz6Shnznd+AyrXP6KI/RpfA5nkDB5nrJxODwtYLP467IL7Cv7OAQKBgQCl4KxKdH/5fP28jYsAgJsxpSZt9xzQCU5Zxu396ZOSvUaApVyGoQpNtluMh3z48lhzYOKevgzW6gn5w69z7F8zXZT2iAxVoQ1kelP2z7RxKJrHqpNkwhqbXEwX7RlcUZUr8BqxYCqymJl7k+fMIzqaEalBSbLxnEReKi0I8/Bz4QKBgHK4b0ZCtVDHPEmimJ6E9l4dv/c/afF7swu+zaCK2ouiJvOwBCRQbYb6XPR/u/GCXASXUdpF4CX/vIhcDE3uN2/r8FO+zVWM7vbvF1OyF5WesG7pPW9e5ZZlkG3WvLa1wOZV6fCmMSo/ZwI2Q05JSDHrd43cXttLotrw1jiQ9C4BAoGBAKi4SOoOVQ5J5HQCDkBwPbG1AOLHFinzfoDl26GF/8Hy7fmmd1JiRTFldQp/A9VTAABz3sVYmMB92HSIaJhuDMoYJNI2Cf/cZifsv7vUL8cbLn+lPsKsebiuB0m0g4P2qLwLfegfNGEgA7lA5HIz3SELqbdp3iuqJeQl1fsJqD74
@ -502,7 +497,6 @@ MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCYwvInDUICXbmWcOAR5hm86mz7WlKL
} }
//decrptCode := RSA_Decrypts(decodeByte, privatePath) //decrptCode := RSA_Decrypts(decodeByte, privatePath)
decrptCode := RSA_DecryptsOne(decodeByte, privateKeyPEM) decrptCode := RSA_DecryptsOne(decodeByte, privateKeyPEM)
fmt.Println("解密后的字符串:") fmt.Println("解密后的字符串:")
@ -514,11 +508,11 @@ MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCYwvInDUICXbmWcOAR5hm86mz7WlKL
if models.GetUser(&user) { if models.GetUser(&user) {
models.UpdateUser(&user) models.UpdateUser(&user)
}else{ } else {
models.SaveUser(&user) models.SaveUser(&user)
} }
}else if topic == "app_push_dyw" { } else if topic == "app_push_dyw" {
fmt.Println("大亚湾电厂APP收到mqtt消息") fmt.Println("大亚湾电厂APP收到mqtt消息")
decodeByte, err := base64.StdEncoding.DecodeString(message) decodeByte, err := base64.StdEncoding.DecodeString(message)
if err != nil { if err != nil {
@ -534,11 +528,11 @@ MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCYwvInDUICXbmWcOAR5hm86mz7WlKL
if models.GetUserdyw(&user) { if models.GetUserdyw(&user) {
models.UpdateUserdyw(&user) models.UpdateUserdyw(&user)
}else{ } else {
models.SaveUserdyw(&user) models.SaveUserdyw(&user)
} }
}else if topic == "app_push_yf" { } else if topic == "app_push_yf" {
fmt.Println("云浮电厂APP收到mqtt消息") fmt.Println("云浮电厂APP收到mqtt消息")
decodeByte, err := base64.StdEncoding.DecodeString(message) decodeByte, err := base64.StdEncoding.DecodeString(message)
if err != nil { if err != nil {
@ -554,11 +548,44 @@ MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCYwvInDUICXbmWcOAR5hm86mz7WlKL
if models.GetUseryf(&user) { if models.GetUseryf(&user) {
models.UpdateUseryf(&user) models.UpdateUseryf(&user)
}else{ } else {
models.SaveUseryf(&user) models.SaveUseryf(&user)
} }
}else{ } else if strings.HasPrefix(topic, "/device/esp8266") {
fmt.Println("esp8266收到mqtt消息")
result := strings.Split(message, " ")
fmt.Println(result[0])
fmt.Println(result[1])
now := time.Now()
temperature := new(models.TemperatureEsp)
temperature.CreateDate = now
temperature.DataDate = now.Format("2006-01-02")
temperature.DataHour = now.Format("2006-01-02 15")
temperature.DataMinute = now.Format("2006-01-02 15:04")
temperature.Humidity = result[0]
temperature.Temperature = result[1]
temperature.Topic = topic
temperature.Source = "mqtt"
if topic == "/device/esp8266/001" {
temperature.LocationDesc = "广东省珠海市高新区唐家湾镇东岸村水风三街28号501"
}
if topic == "/device/esp8266/002" {
temperature.LocationDesc = "广东省珠海市金湾区三灶镇百川路1号1栋1单元1508房"
}
if topic == "/device/esp8266/003" {
temperature.LocationDesc = "广东省珠海市高新区唐家湾镇南方软件园B2栋4楼珠海瑞洪智能系统工程有限公司"
}
if topic == "/device/esp8266/004" {
temperature.LocationDesc = "广东省珠海市高新区唐家湾镇东岸村水风三街28号501-01"
}
if topic == "/device/esp8266/005" {
temperature.LocationDesc = "广西壮族自治区崇左市天等县天等镇荣华村弄在屯113号"
}
fmt.Println("测温传感器地点:", temperature.LocationDesc)
models.SaveTemperatureEsp(temperature)
} else {
result := strings.Split(message, " ") result := strings.Split(message, " ")
fmt.Println(result[0]) fmt.Println(result[0])
fmt.Println(result[1]) fmt.Println(result[1])
@ -585,9 +612,6 @@ MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCYwvInDUICXbmWcOAR5hm86mz7WlKL
models.SaveTemperature(temperature) models.SaveTemperature(temperature)
} }
//uuid := uuid.New() //uuid := uuid.New()
//models.SaveProduct() //models.SaveProduct()
//models.SaveUser(uuid.String()) //models.SaveUser(uuid.String())
@ -653,7 +677,12 @@ func subAppPushDyw(client mqtt.Client) {
token.Wait() token.Wait()
fmt.Printf("Subscribed to topic: %s", topic) fmt.Printf("Subscribed to topic: %s", topic)
} }
func subEspMqtt(client mqtt.Client) {
topic := "/device/esp8266/+"
token := client.Subscribe(topic, 2, nil)
token.Wait()
fmt.Printf("Subscribed to topic: %s", topic)
}
func publish(client mqtt.Client) { func publish(client mqtt.Client) {
num := 999999000000000000 num := 999999000000000000
@ -694,6 +723,7 @@ func main() {
subTemperature(client) subTemperature(client)
subAppPush(client) subAppPush(client)
subAppPushDyw(client) subAppPushDyw(client)
subEspMqtt(client)
publish(client) publish(client)
//client.Disconnect(1000) //client.Disconnect(1000)

@ -0,0 +1,39 @@
package models
import (
"fmt"
"go_mqtt/mydb"
"time"
)
type TemperatureEsp struct {
Id int64 `gorm:"primaryKey;autoIncrement"`
CreateDate time.Time
DataDate string `gorm:"index:idx_dataDate;index:data_date_location_desc;size:20"`
DataHour string `gorm:"index:idx_dataHour;size:20"`
DataMinute string `gorm:"index:idx_dataMinute;size:20"`
Humidity string `gorm:"size:10"`
LocationDesc string `gorm:"index:idx_locationDesc;index:data_date_location_desc;size:80"`
Temperature string `gorm:"size:10"`
Topic string `gorm:"size:60"`
Source string `gorm:"size:10"`
}
func init() {
fmt.Println("TemperatureEsp init()")
mydb.DB.AutoMigrate(&TemperatureEsp{})
}
// TableName 会将 User 的表名重写为 `user`
func (TemperatureEsp) TableName() string {
return "temperature_esp"
}
func SaveTemperatureEsp(temperature *TemperatureEsp) {
result := mydb.DB.Create(&temperature)
if result.Error != nil {
fmt.Println("Failed to create TemperatureEsp:", result.Error)
} else {
fmt.Println("TemperatureEsp created successfully!")
}
}

@ -20,8 +20,8 @@ func initDatabase() {
//dsn := "root:Skyinno251,@tcp(192.168.2.18:3306)/gorm?charset=utf8mb4&parseTime=True&loc=Local" //dsn := "root:Skyinno251,@tcp(192.168.2.18:3306)/gorm?charset=utf8mb4&parseTime=True&loc=Local"
//dsn := "root:Skyinno251,@tcp(47.242.184.139:3306)/appserver?charset=utf8mb4&parseTime=True&loc=Local" //dsn := "root:Skyinno251,@tcp(47.242.184.139:3306)/appserver?charset=utf8mb4&parseTime=True&loc=Local"
//dsn := "root:Skyinno251,@tcp(localhost:3306)/appserver?charset=utf8mb4&parseTime=True&loc=Local" //dsn := "root:Skyinno251,@tcp(localhost:3306)/appserver?charset=utf8mb4&parseTime=True&loc=Local"
dsn := "root:Skyinno251,@tcp(192.168.3.9:3306)/gorm?charset=utf8mb4&parseTime=True&loc=Local" //dsn := "root:Skyinno251,@tcp(192.168.3.9:3306)/gorm?charset=utf8mb4&parseTime=True&loc=Local"
//dsn := "root:Skyinno251,@tcp(localhost:3306)/go_mqtt?charset=utf8mb4&parseTime=True&loc=Local" dsn := "root:Skyinno251,@tcp(localhost:3306)/go_mqtt?charset=utf8mb4&parseTime=True&loc=Local"
db, err := gorm.Open(mysql.New(mysql.Config{ db, err := gorm.Open(mysql.New(mysql.Config{
DSN: dsn, // DSN data source name DSN: dsn, // DSN data source name

Loading…
Cancel
Save