From d2b2e8d262641758f3036168a5f8bb72f2ed6e1a Mon Sep 17 00:00:00 2001
From: Yutousama <583819556@qq.com>
Date: Mon, 15 Jun 2020 23:54:13 +0800
Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=9C=BA=E5=99=A8=E4=BA=BA?=
=?UTF-8?q?=E5=8A=9F=E8=83=BD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
pom.xml | 2 +-
.../com/yutou/tools/ToolsApplication.java | 2 +
.../com/yutou/tools/utils/RedisTools.java | 208 +++++++++++++++---
.../java/com/yutou/tools/utils/Tools.java | 1 +
4 files changed, 177 insertions(+), 36 deletions(-)
diff --git a/pom.xml b/pom.xml
index 9e4149e..0a9998c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -10,7 +10,7 @@
com.yutou
tools
- 1.0.7.3
+ 1.0.8
tools
Demo project for Spring Boot
diff --git a/src/main/java/com/yutou/tools/ToolsApplication.java b/src/main/java/com/yutou/tools/ToolsApplication.java
index 8d96b18..6b4651c 100644
--- a/src/main/java/com/yutou/tools/ToolsApplication.java
+++ b/src/main/java/com/yutou/tools/ToolsApplication.java
@@ -1,5 +1,6 @@
package com.yutou.tools;
+import com.yutou.tools.utils.RedisTools;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@@ -8,6 +9,7 @@ public class ToolsApplication {
public static void main(String[] args) {
SpringApplication.run(ToolsApplication.class, args);
+ RedisTools.initRedisPoolSub();
}
}
diff --git a/src/main/java/com/yutou/tools/utils/RedisTools.java b/src/main/java/com/yutou/tools/utils/RedisTools.java
index 574d7d5..1b11490 100644
--- a/src/main/java/com/yutou/tools/utils/RedisTools.java
+++ b/src/main/java/com/yutou/tools/utils/RedisTools.java
@@ -1,16 +1,24 @@
package com.yutou.tools.utils;
+import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
+import java.io.InputStreamReader;
import java.util.Properties;
import java.util.Set;
+import com.alibaba.fastjson.JSONObject;
import redis.clients.jedis.Jedis;
+import redis.clients.jedis.JedisPool;
+import redis.clients.jedis.JedisPoolConfig;
+import redis.clients.jedis.JedisPubSub;
+
+import javax.accessibility.AccessibleAction;
public class RedisTools {
private static String host;
private static int port;
- public static int TOKEN_TIMEOUT_DEFAULT=360;
+ public static int TOKEN_TIMEOUT_DEFAULT = 360;
private RedisTools() {
@@ -21,15 +29,16 @@ public class RedisTools {
//Properties properties = PropertyUtil.loadProperties("jedis.properties");
//host = properties.getProperty("redis.host");
//port = Integer.valueOf(properties.getProperty("redis.port"));
- host="127.0.0.1";
- port=6379;
+ host = "127.0.0.1";
+ port = 6379;
}
- public static boolean set(int dbIndex,String key,String value){
+
+ public static boolean set(int dbIndex, String key, String value) {
try {
- Jedis jedis =getRedis();
+ Jedis jedis = getRedis();
jedis.select(dbIndex);
- String ret=jedis.set(key,value);
- System.out.println("Redis set ="+ret);
+ String ret = jedis.set(key, value);
+ System.out.println("Redis set =" + ret);
jedis.close();
} catch (Exception e) {
// TODO: handle exception
@@ -38,29 +47,31 @@ public class RedisTools {
}
return true;
}
+
public static boolean set(String key, String value) {
- return set(0,key,value);
+ return set(0, key, value);
}
- public static boolean set(String key,String value,int timeout) {
+ public static boolean set(String key, String value, int timeout) {
try {
- Jedis jedis=getRedis();
- if(timeout==-1){
- jedis.set(key,value);
- }else {
+ Jedis jedis = getRedis();
+ if (timeout == -1) {
+ jedis.set(key, value);
+ } else {
jedis.setex(key, timeout, value);
}
jedis.close();
- }catch (Exception e) {
+ } catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
return false;
}
return true;
}
- public static String get(String key,int dbIndex){
+
+ public static String get(String key, int dbIndex) {
String value = "-999";
- Jedis jedis=null;
+ Jedis jedis = null;
try {
jedis = getRedis();
jedis.select(dbIndex);
@@ -69,50 +80,57 @@ public class RedisTools {
} catch (Exception e) {
// TODO: handle exception
// e.printStackTrace();
- }finally {
- if(jedis!=null)
+ } finally {
+ if (jedis != null)
jedis.close();
}
return value;
}
- public static String get(String key) {
- return get(key,0);
+
+ public static String get(String key) {
+ return get(key, 0);
}
+
public static boolean remove(String key) {
- Jedis jedis=getRedis();
- Long i=jedis.del(key);
+ Jedis jedis = getRedis();
+ Long i = jedis.del(key);
jedis.close();
- if(i>0) {
+ if (i > 0) {
return true;
- }else {
+ } else {
return false;
}
}
+
public static void removeLoginState(String uid) {
- Jedis jedis=getRedis();
- Set keys=jedis.keys("*");
+ Jedis jedis = getRedis();
+ Set keys = jedis.keys("*");
for (String string : keys) {
- if(string.equals(uid)) {
+ if (string.equals(uid)) {
jedis.del(string);
}
}
}
+
public static String ping() {
- Jedis jedis=getRedis();
- String tmp=jedis.ping();
+ Jedis jedis = getRedis();
+ String tmp = jedis.ping();
jedis.close();
return tmp;
}
- public static boolean exists(String key,String value) {
- Jedis jedis=getRedis();
- boolean flag=value.equals(jedis.get(key));
+
+ public static boolean exists(String key, String value) {
+ Jedis jedis = getRedis();
+ boolean flag = value.equals(jedis.get(key));
jedis.close();
return flag;
}
+
public static Jedis getRedis() {
- return new Jedis(host,port);
+ return new Jedis(host, port);
}
+
private static class PropertyUtil {
// 加载property文件到io流里面
@@ -130,8 +148,128 @@ public class RedisTools {
return properties;
}
}
+
+ private static Jedis getPoolRedis() {
+ JedisPoolConfig poolConfig = new JedisPoolConfig();
+ poolConfig.setMaxIdle(0);
+ poolConfig.setMaxWaitMillis(1000);
+ JedisPool pool = new JedisPool(poolConfig, host);
+ return pool.getResource();
+ }
+
+ public static void pullMsg(String channel, String msg) {
+ System.out.println("1");
+ Jedis jedis = getPoolRedis();
+ System.out.println("2");
+ jedis.publish(channel, msg);
+ System.out.println("3");
+ jedis.close();
+ System.out.println("4");
+ }
+
+ private static boolean init = false;
+
+ public static void initRedisPoolSub() {
+ if (init)
+ return;
+ init = true;
+ System.out.println("初始化订阅");
+ new Thread(new Runnable() {
+ @Override
+ public void run() {
+ Jedis jedis = getPoolRedis();
+ jedis.psubscribe(new Consumer(), "*");
+ }
+ }).start();
+
+ }
+
+ private static class Consumer extends JedisPubSub {
+ @Override
+ public void onPMessage(String pattern, String channel, String message) {
+ super.onPMessage(pattern, channel, message);
+ System.out.println("onPMessage: channel=" + channel + " msg=" + message + " pattern=" + pattern);
+ switch (channel) {
+ case "system":
+ switch (message){
+ case "openPC":
+ system("openPC",null);
+ break;
+ case "updateIP":
+ system("updateIP",null);
+ break;
+ }
+ break;
+ case "bot":
+ bot(message);
+ break;
+ case "cmd":
+ system("cmd", message);
+ break;
+ }
+ }
+
+ @Override
+ public void onMessage(String channel, String message) {
+ super.onMessage(channel, message);
+ System.out.println("onMessage: channel=" + channel + " msg=" + message);
+ }
+
+ private void system(String type, String value) {
+ try {
+ String exec = null;
+ switch (type) {
+ case "openPC":
+ exec = "wakeonlan 00:D8:61:6F:02:2F";
+ break;
+ case "cmd":
+ exec = value;
+ break;
+ case "updateIP":
+ exec="python3 /media/yutou/4t/public/Python/tools/ip.py";
+ break;
+ }
+ if (exec != null) {
+ Process process = Runtime.getRuntime().exec(exec);
+ processOut(process.getInputStream());
+ processOut(process.getErrorStream());
+ process.destroy();
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ private void processOut(InputStream inputStream) {
+
+ String tmp, str = "null";
+ try {
+ BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
+ while ((tmp = reader.readLine()) != null) {
+ str += tmp + "\n";
+ }
+ reader.close();
+ inputStream.close();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ System.out.println("cmd > " + str);
+ RedisTools.set(1, "msg_" + System.currentTimeMillis(), str);
+ System.out.println("线程结束");
+ }
+
+ private void bot(String value) {
+ switch (value) {
+ case "getip":
+ JSONObject json = JSONObject.parseObject(Tools.get("https://api.asilu.com/ip/"));
+ String ip = json.getString("ip");
+ RedisTools.set(1, "msg_" + System.currentTimeMillis(), "服务器IP:\n" + ip);
+ break;
+ }
+ }
+ }
+
public static void main(String[] args) {
- String str= "\"aaa\"";
- str=str.replaceAll("\"aaa\"", "0");
+ RedisTools.pullMsg("msg", "abc");
}
}
diff --git a/src/main/java/com/yutou/tools/utils/Tools.java b/src/main/java/com/yutou/tools/utils/Tools.java
index a11aa69..c792d72 100644
--- a/src/main/java/com/yutou/tools/utils/Tools.java
+++ b/src/main/java/com/yutou/tools/utils/Tools.java
@@ -187,6 +187,7 @@ public class Tools {
public static String get(String url) {
try {
HttpURLConnection connection = (HttpURLConnection) new URL(url).openConnection();
+ connection.setRequestProperty("User-Agent","Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36");
BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
StringBuilder str = new StringBuilder();
String tmp;