更新小米路由器API调用接口
更新小米路由器获取公网IP的接口
This commit is contained in:
parent
6ed42d3e80
commit
120392be17
@ -63,7 +63,7 @@ public class MiRouterDevices {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private String getRemoteAddress(String ip) {
|
private String getRemoteAddress(String ip) {
|
||||||
JSONObject data = JSON.parseObject(HttpTools.get(XiaoMiRouter.getDeviceListUrl()));
|
JSONObject data = JSON.parseObject(HttpTools.get(XiaoMiRouter.getInstance().getDeviceListUrl()));
|
||||||
if (data.getInteger("code") == 0) {
|
if (data.getInteger("code") == 0) {
|
||||||
JSONArray array=data.getJSONArray("list");
|
JSONArray array=data.getJSONArray("list");
|
||||||
for (Object o : array) {
|
for (Object o : array) {
|
||||||
|
@ -10,7 +10,7 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
|
|||||||
|
|
||||||
@SpringBootApplication
|
@SpringBootApplication
|
||||||
public class QQBotApplication {
|
public class QQBotApplication {
|
||||||
public static final String version = "QQBot v.1.7.5";
|
public static final String version = "QQBot v.1.7.6";
|
||||||
|
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
System.out.println("version = " + version);
|
System.out.println("version = " + version);
|
||||||
|
@ -10,6 +10,7 @@ import com.yutou.qqbot.MessageEvent.AdminMessage;
|
|||||||
import com.yutou.qqbot.models.Model;
|
import com.yutou.qqbot.models.Model;
|
||||||
import com.yutou.qqbot.utlis.AppTools;
|
import com.yutou.qqbot.utlis.AppTools;
|
||||||
import com.yutou.qqbot.utlis.RedisTools;
|
import com.yutou.qqbot.utlis.RedisTools;
|
||||||
|
import com.yutou.qqbot.utlis.XiaoMiRouter;
|
||||||
import org.springframework.stereotype.Controller;
|
import org.springframework.stereotype.Controller;
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.ResponseBody;
|
import org.springframework.web.bind.annotation.ResponseBody;
|
||||||
@ -89,4 +90,15 @@ public class QQBotController {
|
|||||||
}
|
}
|
||||||
return "200";
|
return "200";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ResponseBody
|
||||||
|
@RequestMapping("/router/wan1ip.do")
|
||||||
|
public String getWan1IP(){
|
||||||
|
return XiaoMiRouter.getInstance().getWan1IPAddress();
|
||||||
|
}
|
||||||
|
@ResponseBody
|
||||||
|
@RequestMapping("/router/wan2ip.do")
|
||||||
|
public String getWan2IP(){
|
||||||
|
return XiaoMiRouter.getInstance().getWan2IPAddress();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -64,7 +64,7 @@ public class MiRouter extends Model {
|
|||||||
isRunTime = false;
|
isRunTime = false;
|
||||||
}
|
}
|
||||||
private void run()throws Exception{
|
private void run()throws Exception{
|
||||||
String url = XiaoMiRouter.getDeviceListUrl();
|
String url = XiaoMiRouter.getInstance().getDeviceListUrl();
|
||||||
JSONObject json = JSON.parseObject(HttpTools.get(url));
|
JSONObject json = JSON.parseObject(HttpTools.get(url));
|
||||||
if (json.getInteger("code") == 0) {
|
if (json.getInteger("code") == 0) {
|
||||||
String _tmp = RedisTools.get(redis_key);
|
String _tmp = RedisTools.get(redis_key);
|
||||||
@ -114,7 +114,7 @@ public class MiRouter extends Model {
|
|||||||
}
|
}
|
||||||
RedisTools.set(redis_key, devs.toString());
|
RedisTools.set(redis_key, devs.toString());
|
||||||
}else {
|
}else {
|
||||||
XiaoMiRouter.setNotToken();
|
XiaoMiRouter.getInstance().setNotToken();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -7,19 +7,30 @@ import org.apache.commons.codec.digest.DigestUtils;
|
|||||||
import java.nio.charset.StandardCharsets;
|
import java.nio.charset.StandardCharsets;
|
||||||
|
|
||||||
public class XiaoMiRouter {
|
public class XiaoMiRouter {
|
||||||
|
private static XiaoMiRouter router;
|
||||||
private final static String key = "a2ffa5c9be07488bbb04a3a47d3c5f6a";
|
private final static String key = "a2ffa5c9be07488bbb04a3a47d3c5f6a";
|
||||||
private static String token = null;
|
private String token = null;
|
||||||
|
|
||||||
public static void setNotToken() {
|
private XiaoMiRouter() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public static XiaoMiRouter getInstance() {
|
||||||
|
if (router == null) {
|
||||||
|
router = new XiaoMiRouter();
|
||||||
|
}
|
||||||
|
return router;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setNotToken() {
|
||||||
token = null;
|
token = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String getToken() {
|
private String getToken() {
|
||||||
if (token != null) {
|
if (token != null) {
|
||||||
return token;
|
return token;
|
||||||
}
|
}
|
||||||
String nonce = nonceCreat();
|
String nonce = nonceCreat();
|
||||||
String oldPwd = DigestUtils.sha1Hex(nonce + DigestUtils.sha1Hex("34864394" + key));
|
String oldPwd = DigestUtils.sha256Hex(nonce + DigestUtils.sha256Hex("34864394" + key));
|
||||||
JSONObject json = new JSONObject();
|
JSONObject json = new JSONObject();
|
||||||
json.put("username", "admin");
|
json.put("username", "admin");
|
||||||
json.put("password", oldPwd);
|
json.put("password", oldPwd);
|
||||||
@ -33,17 +44,72 @@ public class XiaoMiRouter {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String getDeviceListUrl() {
|
private String getHomeUrl() {
|
||||||
return "http://192.168.31.1/cgi-bin/luci/;stok=" + getToken() + "/api/misystem/devicelist";
|
return getHomeUrl(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static String nonceCreat() {
|
private String getHomeUrl(boolean check) {
|
||||||
return String.format("%s_%s_%s_%s", 0, HttpTools.getLocalMacAddress(), (int) (System.currentTimeMillis() / 1000), (int) (Math.random() * 10000));
|
if (check && !checkToken()) {
|
||||||
|
token = null;
|
||||||
|
}
|
||||||
|
return "http://192.168.31.1/cgi-bin/luci/;stok=" + getToken();
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getDeviceListUrl() {
|
||||||
|
return getHomeUrl() + "/api/misystem/devicelist";
|
||||||
|
}
|
||||||
|
|
||||||
|
private String nonceCreat() {
|
||||||
|
return String.format("%s_%s_%s_%s", 0, "7c:83:34:bd:a3:9f", (int) (System.currentTimeMillis() / 1000), (int) (Math.random() * 10000));
|
||||||
|
}
|
||||||
|
|
||||||
|
private String getWan1StatusUrl() {
|
||||||
|
return getHomeUrl() + "/api/xqnetwork/get_wan_status";
|
||||||
|
}
|
||||||
|
|
||||||
|
private String getWan2StatusUrl() {
|
||||||
|
return getHomeUrl() + "/api/xqnetwork/pppoe_status?wan_name=WAN2";
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean checkToken() {
|
||||||
|
String url = getHomeUrl(false) + "/api/misystem/messages";
|
||||||
|
JSONObject json = JSON.parseObject(HttpTools.get(url));
|
||||||
|
return json.getInteger("code") == 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getWan1IPAddress() {
|
||||||
|
String url = getWan1StatusUrl();
|
||||||
|
JSONObject json = JSON.parseObject(HttpTools.get(url));
|
||||||
|
try {
|
||||||
|
return json.getJSONObject("ipv4").getJSONObject("ip").getString("address");
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
return getIPv4();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getWan2IPAddress() {
|
||||||
|
String url = getWan2StatusUrl();
|
||||||
|
JSONObject json = JSON.parseObject(HttpTools.get(url));
|
||||||
|
try {
|
||||||
|
return json.getJSONObject("ip").getString("address");
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
return getIPv4();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getIPv4() {
|
||||||
|
return HttpTools.get("https://4.ipw.cn/");
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
String url = XiaoMiRouter.getDeviceListUrl();
|
System.out.println(XiaoMiRouter.getInstance().getWan1IPAddress());
|
||||||
JSONObject json = JSON.parseObject(HttpTools.get(url));
|
XiaoMiRouter.getInstance().clear();
|
||||||
System.out.println("json = " + json);
|
System.out.println(XiaoMiRouter.getInstance().getWan2IPAddress());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void clear() {
|
||||||
|
token="";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user