|
|
|
|
@ -186,7 +186,6 @@ func dbTest() {
|
|
|
|
|
stmt.Exec(1)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// GenRsaKey generates an PKCS#1 RSA keypair of the given bit size in PEM format.
|
|
|
|
|
func GenRsaKey(bits int) (prvkey, pubkey []byte, err error) {
|
|
|
|
|
// Generates private key.
|
|
|
|
|
@ -215,7 +214,6 @@ func GenRsaKey(bits int) (prvkey, pubkey []byte, err error) {
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
func ParseRSAPrivateKeyFromPEM(pemData string) (*rsa.PrivateKey, error) {
|
|
|
|
|
var keyData = []byte(pemData)
|
|
|
|
|
// 解析PEM块
|
|
|
|
|
@ -252,7 +250,7 @@ func parsePrivateKey(privateKeyFile string) (*rsa.PrivateKey, error) {
|
|
|
|
|
return privateKey, nil
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//生成RSA私钥和公钥,保存到文件中
|
|
|
|
|
// 生成RSA私钥和公钥,保存到文件中
|
|
|
|
|
func GenerateRSAKey(bits int) {
|
|
|
|
|
//GenerateKey函数使用随机数据生成器random生成一对具有指定字位数的RSA密钥
|
|
|
|
|
//Reader是一个全局、共享的密码用强随机数生成器
|
|
|
|
|
@ -403,7 +401,7 @@ func RsaEncryptBlock(src []byte, path string) (bytesEncrypt []byte, err error) {
|
|
|
|
|
// 读取公钥文件
|
|
|
|
|
keyData, err := ioutil.ReadFile(path)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return nil,err
|
|
|
|
|
return nil, err
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//pem解码
|
|
|
|
|
@ -436,7 +434,6 @@ func RsaEncryptBlock(src []byte, path string) (bytesEncrypt []byte, err error) {
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
func timing(client mqtt.Client) {
|
|
|
|
|
//定时器,10秒钟执行一次
|
|
|
|
|
ticker := time.NewTicker(10 * time.Second)
|
|
|
|
|
@ -475,7 +472,6 @@ func timing(client mqtt.Client) {
|
|
|
|
|
//fmt.Println("解密后的字符串:")
|
|
|
|
|
//fmt.Println(string(decrptCode))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
@ -488,7 +484,6 @@ var messagePubHandler mqtt.MessageHandler = func(client mqtt.Client, msg mqtt.Me
|
|
|
|
|
fmt.Println(message)
|
|
|
|
|
fmt.Println(topic)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//privatePath := "/Users/edao/GolandProjects/go_mqtt/privateKey.pem"
|
|
|
|
|
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
|
|
|
|
|
@ -502,7 +497,6 @@ MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCYwvInDUICXbmWcOAR5hm86mz7WlKL
|
|
|
|
|
}
|
|
|
|
|
//decrptCode := RSA_Decrypts(decodeByte, privatePath)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
decrptCode := RSA_DecryptsOne(decodeByte, privateKeyPEM)
|
|
|
|
|
|
|
|
|
|
fmt.Println("解密后的字符串:")
|
|
|
|
|
@ -514,11 +508,11 @@ MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCYwvInDUICXbmWcOAR5hm86mz7WlKL
|
|
|
|
|
|
|
|
|
|
if models.GetUser(&user) {
|
|
|
|
|
models.UpdateUser(&user)
|
|
|
|
|
}else{
|
|
|
|
|
} else {
|
|
|
|
|
models.SaveUser(&user)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}else if topic == "app_push_dyw" {
|
|
|
|
|
} else if topic == "app_push_dyw" {
|
|
|
|
|
fmt.Println("大亚湾电厂APP收到mqtt消息")
|
|
|
|
|
decodeByte, err := base64.StdEncoding.DecodeString(message)
|
|
|
|
|
if err != nil {
|
|
|
|
|
@ -534,11 +528,11 @@ MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCYwvInDUICXbmWcOAR5hm86mz7WlKL
|
|
|
|
|
|
|
|
|
|
if models.GetUserdyw(&user) {
|
|
|
|
|
models.UpdateUserdyw(&user)
|
|
|
|
|
}else{
|
|
|
|
|
} else {
|
|
|
|
|
models.SaveUserdyw(&user)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}else if topic == "app_push_yf" {
|
|
|
|
|
} else if topic == "app_push_yf" {
|
|
|
|
|
fmt.Println("云浮电厂APP收到mqtt消息")
|
|
|
|
|
decodeByte, err := base64.StdEncoding.DecodeString(message)
|
|
|
|
|
if err != nil {
|
|
|
|
|
@ -554,11 +548,44 @@ MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCYwvInDUICXbmWcOAR5hm86mz7WlKL
|
|
|
|
|
|
|
|
|
|
if models.GetUseryf(&user) {
|
|
|
|
|
models.UpdateUseryf(&user)
|
|
|
|
|
}else{
|
|
|
|
|
} else {
|
|
|
|
|
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, " ")
|
|
|
|
|
fmt.Println(result[0])
|
|
|
|
|
fmt.Println(result[1])
|
|
|
|
|
@ -585,9 +612,6 @@ MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCYwvInDUICXbmWcOAR5hm86mz7WlKL
|
|
|
|
|
models.SaveTemperature(temperature)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//uuid := uuid.New()
|
|
|
|
|
//models.SaveProduct()
|
|
|
|
|
//models.SaveUser(uuid.String())
|
|
|
|
|
@ -653,7 +677,12 @@ func subAppPushDyw(client mqtt.Client) {
|
|
|
|
|
token.Wait()
|
|
|
|
|
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) {
|
|
|
|
|
num := 999999000000000000
|
|
|
|
|
@ -694,6 +723,7 @@ func main() {
|
|
|
|
|
subTemperature(client)
|
|
|
|
|
subAppPush(client)
|
|
|
|
|
subAppPushDyw(client)
|
|
|
|
|
subEspMqtt(client)
|
|
|
|
|
publish(client)
|
|
|
|
|
|
|
|
|
|
//client.Disconnect(1000)
|
|
|
|
|
|