Слияние кода завершено, страница обновится автоматически
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script type="text/javascript" src="hex_hmac_sha1.js"></script>
<link rel="shortcut icon" href="favicon.ico" type="image/x-icon">
<link rel="icon" href="favicon.ico" type="image/x-icon">
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script src="https://cdn.bootcdn.net/ajax/libs/particles.js/2.0.0/particles.min.js"></script>
<!-- <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.css"> -->
<link rel="stylesheet" href="https://at.alicdn.com/t/font_1796094_4zoaryp2io2.css">
<link rel="stylesheet" href="aliyun_mqtt.css">
</head>
<body>
<div id="particles-js"></div>
<style type="text/css">
#particles-js {
z-index: 0;
position: absolute;
top: 0;
height: 100%;
width: 100%;
background: #2c3e50;
}
</style>
<input type="checkbox" id="check">
<label for="check">
<i class="iconfont iconbars" id="btn"></i>
<i class="iconfont" id="cancel"></i>
</label>
<div class="sidebar">
<header class="iconfont iconwulianwang">Dapenson</header>
<ul>
<li><a href="https://www.cnblogs.com/dapenson" target="_blank"><i class="iconfont iconblog"></i>Dapenson Blog</a></li>
<li><a href="https://x223222981.gitee.io/navigation_page/" target="_blank"><i class="iconfont iconnavigation"></i>Navigation</a></li>
<li><a href="https://223222981.github.io/MQTT-Token-Get/onenetToken" target="_blank"><i class="iconfont iconmqtt"></i>Onenet MQTT</a></li>
<!-- <li><a href="#"><i class="iconfont fa-calendar-week"></i>Events</a></li>
<li><a href="#"><i class="far fa-question-circle"></i>About</a></li>
<li><a href="#"><i class="iconfont fa-sliders-h"></i>Services</a></li>
<li><a href="#"><i class="far fa-envelope"></i>Contact</a></li> -->
</ul>
</div>
<section class="section"></section>
<div class="container">
<h1>阿里云IOT接入</h1>
<h3>你的阿里云物联网信息:</h3>
<input class="tbx" type="text" id="productKey" name="productKey" placeholder="productKey"></input>
<input class="tbx" type="text" id="deviceName" name="deviceName" placeholder="deviceName"></input>
<input class="tbx" type="text" id="deviceSecret" name="deviceSecret" placeholder="deviceSecret"></input>
<input class="tbx" type="text" id="clientId" name="clientId" placeholder="clientId(任意) "></input>
<input type="text" id="timestamp" name="timestamp" style="visibility:hidden"></input>
<!--method:默认使用hmacmd5 -->
<select id="signMethod" name="signMethod" style="visibility:hidden">
<!-- <option value="hmacmd5">hmacmd5</option> -->
<option value="hmacsha1" selected>hmacsha1</option>
</select>
<button class="sub" id="onSign" name="onSign" onclick="onSign()"><b>一键生成接入信息</b></button>
<br>
<h3>MQTT接入信息:</h3>
<input class="tbx" type="text" id="mqtt_url" name="mqtt_url" placeholder="URL"></input>
<input class="tbx" type="text" id="mqtt_port" name="mqtt_port" placeholder="port"> </input>
<input class="tbx" type="text" id="mqtt_clientid" name="mqtt_clientid" placeholder="clientID"></input>
<input class="tbx" type="text" id="mqtt_name" name="mqtt_name" placeholder="Username"></input>
<input class="tbx" type="text" id="password" name="password" placeholder="password"></input>
<h3>HTTP接入信息:</h3>
<textarea class="tbx" type="text" id="https_info" name="https_info" placeholder="设备认证"></textarea>
</div>
</body>
<script>
function onSign() {
var pk = document.getElementById("productKey").value;
var dn = document.getElementById("deviceName").value;
var ds = document.getElementById("deviceSecret").value;
var ts = document.getElementById("timestamp").value;
var ci = document.getElementById("clientId").value;
var sm = document.getElementById("signMethod").value;
var pw = document.getElementById("password");
var url = document.getElementById("mqtt_url");
var port = document.getElementById("mqtt_port");
var id = document.getElementById("mqtt_clientid");
var name = document.getElementById("mqtt_name");
var hp = document.getElementById("https_info");
if (pk == null || pk == "" || dn == null || dn == ""
|| ds == null || ds == "" || ci == null || ci == "") {
alert("productKey,deviceName,deviceSecret,clientId 不能为空");
return;
}
var options = {
productKey: pk,
deviceName: dn,
timestamp: ts,
clientId: ci
}
if (ts == null || ts == "") {
options = {
productKey: pk,
deviceName: dn,
clientId: ci
}
}
var keys = Object.keys(options).sort();
// 按字典序排序
keys = keys.sort();
var list = [];
keys.forEach(function (key) {
list.push(key + options[key]);
});
var contentStr = list.join('');
var sign = "";
if (sm == "hmacmd5") {
sign = hex_hmac_md5(ds, contentStr);
} else if (sm == "hmacsha1") {
sign = hex_hmac_sha1(ds, contentStr);
} else {
alert("method is invalid");
}
pw.value = sign.toUpperCase();
url.value = mix('${YourProductKey}.iot-as-mqtt.cn-shanghai.aliyuncs.com', { YourProductKey: pk });
port.value = mix('${port}', { port: 1883 });
id.value = mix('${clientID}|securemode=3,signmethod=hmacsha1|', { clientID: ci });
name.value = mix('${YourDeviceName}&${YourProductKey}', { YourDeviceName: dn, YourProductKey: pk });
hp.value = mix('"{\\"clientId\\":\\"${clientID}\\",\\"signmethod\\":\\"hmacsha1\\",\\"sign\\":\\"${sign}\\",\\"productKey\\":\\"${YourProductKey}\\",\\"deviceName\\":\\"${YourDeviceName}\\"}"', { clientID: ci, sign: pw.value, YourProductKey: pk, YourDeviceName: dn });
}
function mix(str, group) {
var reg = /\$\{[^{}]+\}/gm;
var strArr = str.split(reg);
var labelArr = str.match(reg);
var returnString = '',
i = 0,
label, len = labelArr.length;
for (; i < len; i++) {
label = labelArr[i].slice(2, -1);
returnString += strArr[i] + (group[label] != null ? group[label] : '');
}
return returnString + strArr[i];
}
document.onkeydown = function (e) { // 回车提交表单
// 兼容FF和IE和Opera
var theEvent = window.event || e;
var code = theEvent.keyCode || theEvent.which || theEvent.charCode;
if (code == 13) {
onSign();
}
}
particlesJS('particles-js',
{
"particles": {
"number": {
"value": 80,
"density": {
"enable": true,
"value_area": 800
}
},
"color": {
"value": "#6dedff"
},
"shape": {
"type": "edge",
"stroke": {
"width": 0,
"color": "#6dedff"
},
"polygon": {
"nb_sides": 5
},
"image": {
"src": "img/github.svg",
"width": 100,
"height": 100
}
},
"opacity": {
"value": 0.5,
"random": 1,
"anim": {
"enable": false,
"speed": 1,
"opacity_min": 0.1,
"sync": false
}
},
"size": {
"value": 3,
"random": true,
"anim": {
"enable": false,
"speed": 10,
"size_min": 0.1,
"sync": false
}
},
"line_linked": {
"enable": true,
"distance": 150,
"color": "#6dedff",
"opacity": 0.4,
"width": 1
},
"move": {
"enable": true,
"speed": 2,
"direction": "none",
"random": false,
"straight": false,
"out_mode": "out",
"attract": {
"enable": 1,
"rotateX": 600,
"rotateY": 1200
}
}
},
"interactivity": {
"detect_on": "canvas",
"events": {
"onhover": {
"enable": true,
"mode": "grab"
},
"onclick": {
"enable": true,
"mode": "push"
},
"resize": true
},
"modes": {
"grab": {
"distance": 200,
"line_linked": {
"opacity": 0.75
}
},
"bubble": {
"distance": 400,
"size": 40,
"duration": 2,
"opacity": 8,
"speed": 3
},
"repulse": {
"distance": 200
},
"push": {
"particles_nb": 4
},
"remove": {
"particles_nb": 2
}
}
},
"retina_detect": true,
"config_demo": {
"hide_card": false,
"background_color": "#2c3e50",
"background_image": "",
"background_position": "50% 50%",
"background_repeat": "no-repeat",
"background_size": "cover"
}
}
)
</script>
</html>
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарий ( 0 )