mirror of
https://e.coding.net/circlecloud/CTZServer.git
synced 2024-11-21 11:28:47 +00:00
use CTZServerCommon...
Signed-off-by: 502647092 <jtb1@163.com>
This commit is contained in:
parent
e2a2fedf53
commit
ac513ed551
6
pom.xml
6
pom.xml
@ -61,6 +61,12 @@
|
|||||||
<type>jar</type>
|
<type>jar</type>
|
||||||
<version>1.0</version>
|
<version>1.0</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>cn.citycraft</groupId>
|
||||||
|
<artifactId>CTZServerCommon</artifactId>
|
||||||
|
<type>jar</type>
|
||||||
|
<version>1.0</version>
|
||||||
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>mysql</groupId>
|
<groupId>mysql</groupId>
|
||||||
<artifactId>mysql-connector-java</artifactId>
|
<artifactId>mysql-connector-java</artifactId>
|
||||||
|
@ -1,47 +0,0 @@
|
|||||||
package cn.citycraft.CTZServer;
|
|
||||||
|
|
||||||
import cn.citycraft.PluginHelper.sql.KeyValue;
|
|
||||||
import cn.citycraft.PluginHelper.sql.SQLHelper;
|
|
||||||
import cn.citycraft.PluginHelper.utils.StringUtil;
|
|
||||||
|
|
||||||
public class CTZAuth {
|
|
||||||
static final String TableName = "ctzserver";
|
|
||||||
static final String UserField = "player";
|
|
||||||
static final String PWDField = "password";
|
|
||||||
static final String ISLoginField = "islogin";
|
|
||||||
static final String ALLOWLoginField = "allowlogin";
|
|
||||||
static SQLHelper sql;
|
|
||||||
|
|
||||||
public static void changePassword(String username, String password) {
|
|
||||||
// TODO 处理玩家密码修改事件
|
|
||||||
}
|
|
||||||
|
|
||||||
public static boolean checkPassword(String username, String password) {
|
|
||||||
return sql.isFieldExists(TableName, new KeyValue(UserField, username).add(PWDField, StringUtil.getMD5Code(password)));
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void init(SQLHelper sql) {
|
|
||||||
CTZAuth.sql = sql;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static boolean isLogin(String username) {
|
|
||||||
String result = sql.dbSelectFirst(TableName, ISLoginField, new KeyValue(UserField, username));
|
|
||||||
return (result != null && result.equalsIgnoreCase("1"));
|
|
||||||
}
|
|
||||||
|
|
||||||
public static boolean isRegistered(String username) {
|
|
||||||
return sql.isFieldExists(TableName, new KeyValue(UserField, username));
|
|
||||||
}
|
|
||||||
|
|
||||||
public static boolean login(String username) {
|
|
||||||
return sql.dbUpdate(TableName, new KeyValue(ALLOWLoginField, "1"), new KeyValue(UserField, username));
|
|
||||||
}
|
|
||||||
|
|
||||||
public static boolean registerPlayer(String username, String password) {
|
|
||||||
if (isRegistered(username))
|
|
||||||
return false;
|
|
||||||
else
|
|
||||||
return sql.dbInsert(TableName, new KeyValue(UserField, username).add(PWDField, StringUtil.getMD5Code(password)));
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,260 +0,0 @@
|
|||||||
package cn.citycraft.CTZServer;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Set;
|
|
||||||
|
|
||||||
import org.bukkit.configuration.ConfigurationSection;
|
|
||||||
|
|
||||||
import com.google.gson.Gson;
|
|
||||||
|
|
||||||
public class CTZServer {
|
|
||||||
protected static Logger log = new Logger();
|
|
||||||
|
|
||||||
static ServerInfo sl = new ServerInfo();
|
|
||||||
static Gson gson = new Gson();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 把中文转成Unicode码
|
|
||||||
*
|
|
||||||
* @param str
|
|
||||||
* - 待转换的字符串
|
|
||||||
* @return 转换后的字符串
|
|
||||||
*/
|
|
||||||
public static String chinaToUnicode(String str) {
|
|
||||||
String result = "";
|
|
||||||
for (int i = 0; i < str.length(); i++) {
|
|
||||||
int chr1 = str.charAt(i);
|
|
||||||
if (chr1 >= 19968 && chr1 <= 171941)
|
|
||||||
result += "\\u" + Integer.toHexString(chr1);
|
|
||||||
else
|
|
||||||
result += str.charAt(i);
|
|
||||||
}
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获得json字符串
|
|
||||||
*
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
public static String getJson() {
|
|
||||||
return chinaToUnicode(gson.toJson(sl));
|
|
||||||
}
|
|
||||||
|
|
||||||
// public static Logger getLogger() {
|
|
||||||
// return log;
|
|
||||||
// }
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 初始化服务器序列化类
|
|
||||||
*
|
|
||||||
* @param 配置类
|
|
||||||
*/
|
|
||||||
public static void Init(ConfigurationSection cs) {
|
|
||||||
Set<String> arealist = cs.getKeys(false);
|
|
||||||
for (String a : arealist) {
|
|
||||||
Area area = new Area();
|
|
||||||
area.setName(cs.getString(a + ".name"));
|
|
||||||
Set<String> serverlist = cs.getConfigurationSection(a + ".servers").getKeys(false);
|
|
||||||
for (String s : serverlist) {
|
|
||||||
Server server = new Server();
|
|
||||||
server.name = cs.getString(a + ".servers." + s + ".name");
|
|
||||||
server.address = cs.getString(a + ".servers." + s + ".address");
|
|
||||||
server.port = cs.getInt(a + ".servers." + s + ".port");
|
|
||||||
server.version = cs.getString(a + ".servers." + s + ".version");
|
|
||||||
server.info = cs.getString(a + ".servers." + s + ".info");
|
|
||||||
server.url = cs.getString(a + ".servers." + s + ".url");
|
|
||||||
server.depend = cs.getString(a + ".servers." + s + ".depend");
|
|
||||||
area.servers.add(server);
|
|
||||||
}
|
|
||||||
sl.areas.add(area);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 初始化服务器序列化类
|
|
||||||
*
|
|
||||||
* @param json
|
|
||||||
* - json字符串
|
|
||||||
*/
|
|
||||||
public static boolean Init(String json) {
|
|
||||||
try {
|
|
||||||
sl = gson.fromJson(json, ServerInfo.class);
|
|
||||||
return true;
|
|
||||||
} catch (Exception e) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void print(String message) {
|
|
||||||
log.info(message);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void warn(String message) {
|
|
||||||
log.warning(message);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 判断是否为中文字符
|
|
||||||
*
|
|
||||||
* @param c
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
public boolean isChinese(char c) {
|
|
||||||
Character.UnicodeBlock ub = Character.UnicodeBlock.of(c);
|
|
||||||
if (ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS || ub == Character.UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS || ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A
|
|
||||||
|| ub == Character.UnicodeBlock.GENERAL_PUNCTUATION || ub == Character.UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION || ub == Character.UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS)
|
|
||||||
return true;
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
class Area {
|
|
||||||
/**
|
|
||||||
* 大区名称
|
|
||||||
*/
|
|
||||||
String name;
|
|
||||||
/**
|
|
||||||
* 服务器信息
|
|
||||||
*/
|
|
||||||
List<Server> servers = new ArrayList<Server>();
|
|
||||||
|
|
||||||
public String getName() {
|
|
||||||
return name;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<Server> getServers() {
|
|
||||||
return servers;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setName(String name) {
|
|
||||||
this.name = name;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setServers(List<Server> servers) {
|
|
||||||
this.servers = servers;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 服务器数据序列化类
|
|
||||||
*
|
|
||||||
* @author 蒋天蓓
|
|
||||||
* 2015年8月14日下午4:36:12
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
class Server {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 服务器名称
|
|
||||||
*/
|
|
||||||
public String name;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 服务器地址
|
|
||||||
*/
|
|
||||||
public String address;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 服务器端口
|
|
||||||
*/
|
|
||||||
public int port;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 服务器描述
|
|
||||||
*/
|
|
||||||
public String info;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 服务器版本
|
|
||||||
*/
|
|
||||||
public String version;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 版本下载地址
|
|
||||||
*/
|
|
||||||
public String url;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 依赖版本
|
|
||||||
*/
|
|
||||||
public String depend;
|
|
||||||
|
|
||||||
public String getAddress() {
|
|
||||||
return address;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getDepend() {
|
|
||||||
return depend;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getInfo() {
|
|
||||||
return info;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getName() {
|
|
||||||
return name;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getPort() {
|
|
||||||
return port;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getUrl() {
|
|
||||||
return url;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getVersion() {
|
|
||||||
return version;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setAddress(String address) {
|
|
||||||
this.address = address;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setDepend(String depend) {
|
|
||||||
this.depend = depend;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setInfo(String info) {
|
|
||||||
this.info = info;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setName(String name) {
|
|
||||||
this.name = name;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setPort(int port) {
|
|
||||||
this.port = port;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setUrl(String url) {
|
|
||||||
this.url = url;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setVersion(String version) {
|
|
||||||
this.version = version;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String toString() {
|
|
||||||
return String.format("{0}:{1}", address, port);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class ServerInfo {
|
|
||||||
/**
|
|
||||||
* 服务器分区信息
|
|
||||||
*/
|
|
||||||
List<Area> areas = new ArrayList<Area>();
|
|
||||||
|
|
||||||
public List<Area> getAreas() {
|
|
||||||
return areas;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setAreas(List<Area> aareas) {
|
|
||||||
areas = aareas;
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,41 +0,0 @@
|
|||||||
package cn.citycraft.CTZServer;
|
|
||||||
|
|
||||||
import java.text.SimpleDateFormat;
|
|
||||||
import java.util.Date;
|
|
||||||
|
|
||||||
import net.md_5.bungee.api.ChatColor;
|
|
||||||
|
|
||||||
public class Logger {
|
|
||||||
enum LEVEL {
|
|
||||||
INFO("信息"),
|
|
||||||
WARN("警告"),
|
|
||||||
ERROR("错误");
|
|
||||||
String prefix;
|
|
||||||
|
|
||||||
LEVEL(String prefix) {
|
|
||||||
this.prefix = prefix;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String toString() {
|
|
||||||
return prefix;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void error(String string) {
|
|
||||||
log(LEVEL.ERROR, string);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void info(String string) {
|
|
||||||
log(LEVEL.INFO, string);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void log(LEVEL lvl, String string) {
|
|
||||||
String time = new SimpleDateFormat("HH:mm:ss").format(new Date(System.currentTimeMillis()));
|
|
||||||
System.out.println(String.format("[%1$s %2$s] %3$s", time, lvl, ChatColor.stripColor(string)));
|
|
||||||
}
|
|
||||||
|
|
||||||
public void warning(String string) {
|
|
||||||
log(LEVEL.WARN, string);
|
|
||||||
}
|
|
||||||
}
|
|
@ -7,8 +7,8 @@ import java.io.InputStreamReader;
|
|||||||
|
|
||||||
import cn.citycraft.CTZServer.commands.HandlerCommand;
|
import cn.citycraft.CTZServer.commands.HandlerCommand;
|
||||||
import cn.citycraft.CTZServer.socket.CTZLoginServerSocket;
|
import cn.citycraft.CTZServer.socket.CTZLoginServerSocket;
|
||||||
import cn.citycraft.PluginHelper.sql.KeyValue;
|
import cn.citycraft.CTZServerCommon.CTZAuth;
|
||||||
import cn.citycraft.PluginHelper.sql.MySQLHelper;
|
import cn.citycraft.CTZServerCommon.CTZServer;
|
||||||
import cn.citycraft.PluginHelper.sql.SQLHelper;
|
import cn.citycraft.PluginHelper.sql.SQLHelper;
|
||||||
import cn.citycraft.PluginHelper.utils.FileUtil;
|
import cn.citycraft.PluginHelper.utils.FileUtil;
|
||||||
import net.md_5.bungee.api.ChatColor;
|
import net.md_5.bungee.api.ChatColor;
|
||||||
@ -28,9 +28,8 @@ public class ServerThread implements Runnable {
|
|||||||
CTZServer.print(ChatColor.GREEN + "服务器开始启动...");
|
CTZServer.print(ChatColor.GREEN + "服务器开始启动...");
|
||||||
|
|
||||||
initCommand();
|
initCommand();
|
||||||
initDatabase();
|
|
||||||
initServerInfo();
|
initServerInfo();
|
||||||
CTZAuth.init(sql);
|
CTZAuth.init(sql, "127.0.0.1", 3306, "ctzserver", "root", "325325");
|
||||||
|
|
||||||
server = new CTZLoginServerSocket();
|
server = new CTZLoginServerSocket();
|
||||||
server.start();
|
server.start();
|
||||||
@ -58,39 +57,6 @@ public class ServerThread implements Runnable {
|
|||||||
handlercmd = new HandlerCommand(this);
|
handlercmd = new HandlerCommand(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 初始化数据库
|
|
||||||
*/
|
|
||||||
void initDatabase() {
|
|
||||||
String dbtable = "ctzserver";
|
|
||||||
CTZServer.print(ChatColor.GREEN + "初始化数据库连接...");
|
|
||||||
sql = new MySQLHelper("127.0.0.1", 3306, "minecraft", "root", "325325");
|
|
||||||
if (!sql.dbConnection()) {
|
|
||||||
CTZServer.warn(ChatColor.RED + "数据库连接失败...");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
CTZServer.print(ChatColor.GREEN + "数据库连接成功,检查数据表是否存在...");
|
|
||||||
if (!sql.isTableExists(dbtable)) {
|
|
||||||
CTZServer.print(ChatColor.RED + "数据表不存在,新建表" + dbtable + "...");
|
|
||||||
KeyValue kv = new KeyValue("player", "VARCHAR(16) NOT NULL")
|
|
||||||
.add("password", "VARCHAR(50) NOT NULL")
|
|
||||||
.add("ip", "VARCHAR(40) NOT NULL DEFAULT '127.0.0.1'")
|
|
||||||
.add("lastloginout", "BIGINT(20) NOT NULL DEFAULT 0")
|
|
||||||
.add("x", "DOUBLE NOT NULL DEFAULT 0")
|
|
||||||
.add("y", "DOUBLE NOT NULL DEFAULT 0")
|
|
||||||
.add("z", "DOUBLE NOT NULL DEFAULT 0")
|
|
||||||
.add("email", "VARCHAR(50) NOT NULL DEFAULT 'mc@mc.com'")
|
|
||||||
.add("world", "VARCHAR(20) DEFAULT 'world'")
|
|
||||||
.add("islogged", "SMALLINT(6) NOT NULL DEFAULT 0")
|
|
||||||
.add("allowlogin", "SMALLINT(6) NOT NULL DEFAULT 0");
|
|
||||||
String Conditions = "UNIQUE (`player`)";
|
|
||||||
if (!sql.createTables(dbtable, kv, Conditions))
|
|
||||||
CTZServer.warn(ChatColor.RED + "数据表 " + dbtable + " 创建失败,请尝试手动创建并重启服务器...");
|
|
||||||
else
|
|
||||||
CTZServer.print(ChatColor.GREEN + "数据表 " + dbtable + " 创建成功...");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 初始化服务器信息
|
* 初始化服务器信息
|
||||||
*/
|
*/
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
package cn.citycraft.CTZServer.commands;
|
package cn.citycraft.CTZServer.commands;
|
||||||
|
|
||||||
import cn.citycraft.CTZServer.CTZServer;
|
|
||||||
import cn.citycraft.CTZServer.ServerThread;
|
import cn.citycraft.CTZServer.ServerThread;
|
||||||
|
import cn.citycraft.CTZServerCommon.CTZServer;
|
||||||
import cn.citycraft.PluginHelper.utils.StringUtil;
|
import cn.citycraft.PluginHelper.utils.StringUtil;
|
||||||
import cn.citycraft.PluginHelper.utils.SystemUtil;
|
import cn.citycraft.PluginHelper.utils.SystemUtil;
|
||||||
import net.md_5.bungee.api.ChatColor;
|
import net.md_5.bungee.api.ChatColor;
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
package cn.citycraft.CTZServer.commands;
|
package cn.citycraft.CTZServer.commands;
|
||||||
|
|
||||||
import cn.citycraft.CTZServer.CTZAuth;
|
|
||||||
import cn.citycraft.CTZServer.CTZServer;
|
|
||||||
import cn.citycraft.CTZServer.ServerThread;
|
import cn.citycraft.CTZServer.ServerThread;
|
||||||
|
import cn.citycraft.CTZServerCommon.CTZAuth;
|
||||||
|
import cn.citycraft.CTZServerCommon.CTZServer;
|
||||||
import net.md_5.bungee.api.ChatColor;
|
import net.md_5.bungee.api.ChatColor;
|
||||||
|
|
||||||
public class CommandRegister extends BaseCommand {
|
public class CommandRegister extends BaseCommand {
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
package cn.citycraft.CTZServer.commands;
|
package cn.citycraft.CTZServer.commands;
|
||||||
|
|
||||||
import cn.citycraft.CTZServer.CTZServer;
|
|
||||||
import cn.citycraft.CTZServer.ServerThread;
|
import cn.citycraft.CTZServer.ServerThread;
|
||||||
|
import cn.citycraft.CTZServerCommon.CTZServer;
|
||||||
import net.md_5.bungee.api.ChatColor;
|
import net.md_5.bungee.api.ChatColor;
|
||||||
|
|
||||||
public class CommandStop extends BaseCommand {
|
public class CommandStop extends BaseCommand {
|
||||||
|
@ -3,8 +3,8 @@ package cn.citycraft.CTZServer.commands;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import cn.citycraft.CTZServer.CTZServer;
|
|
||||||
import cn.citycraft.CTZServer.ServerThread;
|
import cn.citycraft.CTZServer.ServerThread;
|
||||||
|
import cn.citycraft.CTZServerCommon.CTZServer;
|
||||||
import cn.citycraft.PluginHelper.utils.StringUtil;
|
import cn.citycraft.PluginHelper.utils.StringUtil;
|
||||||
import net.md_5.bungee.api.ChatColor;
|
import net.md_5.bungee.api.ChatColor;
|
||||||
|
|
||||||
|
@ -8,9 +8,9 @@ import java.io.PrintWriter;
|
|||||||
import java.net.ServerSocket;
|
import java.net.ServerSocket;
|
||||||
import java.net.Socket;
|
import java.net.Socket;
|
||||||
|
|
||||||
import cn.citycraft.CTZServer.CTZAuth;
|
|
||||||
import cn.citycraft.CTZServer.CTZServer;
|
|
||||||
import cn.citycraft.CTZServer.socket.Response.HttpStates;
|
import cn.citycraft.CTZServer.socket.Response.HttpStates;
|
||||||
|
import cn.citycraft.CTZServerCommon.CTZAuth;
|
||||||
|
import cn.citycraft.CTZServerCommon.CTZServer;
|
||||||
import net.md_5.bungee.api.ChatColor;
|
import net.md_5.bungee.api.ChatColor;
|
||||||
|
|
||||||
public class CTZLoginServerSocket extends Thread {
|
public class CTZLoginServerSocket extends Thread {
|
||||||
@ -124,7 +124,7 @@ public class CTZLoginServerSocket extends Thread {
|
|||||||
}
|
}
|
||||||
if (CTZAuth.checkPassword(username, password)) {
|
if (CTZAuth.checkPassword(username, password)) {
|
||||||
res.setHtml("true");
|
res.setHtml("true");
|
||||||
// TODO 是否检查登录IP
|
CTZAuth.login(username, ip);
|
||||||
CTZServer.print("§6玩家: §a" + username + " §3登录成功 IP: " + ip);
|
CTZServer.print("§6玩家: §a" + username + " §3登录成功 IP: " + ip);
|
||||||
} else
|
} else
|
||||||
res.setHtml("false");
|
res.setHtml("false");
|
||||||
|
Loading…
Reference in New Issue
Block a user