Guest User

Untitled

a guest
Jan 26th, 2018
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 12.36 KB | None | 0 0
  1. package server.webadmin;
  2.  
  3. import java.io.*;
  4. import java.net.*;
  5. import java.util.*;
  6.  
  7. import server.Config;
  8. import server.Connection;
  9. import server.Server;
  10. import server.model.players.Client;
  11.  
  12. public class WebAdmin implements Runnable {
  13. Socket client;
  14. BufferedReader reader;
  15. PrintWriter writer;
  16. Socket sock;
  17. public class ReadRequest implements Runnable {
  18. BufferedReader reader;
  19. WebAdmin webadmin;
  20. PrintWriter writer;
  21. public ReadRequest(Socket client) {
  22. try {
  23. webadmin = new WebAdmin();
  24. writer = new PrintWriter(client.getOutputStream(), true);
  25. InputStreamReader isReader = new InputStreamReader(client.getInputStream());
  26. reader = new BufferedReader(isReader);
  27. } catch(Exception ex) {
  28. System.out.println("[WebAdmin][Error]: Exception reading buffered of client socket (Function: ReadRequest(Socket))");
  29. }
  30. }
  31. public void run() {
  32. String msg;
  33. try {
  34.  
  35. while((msg = reader.readLine()) != null) {
  36. handleLine(msg);
  37. }
  38. reader.close();
  39. } catch(Exception ex) {
  40. System.out.println("[WebAdmin][Error]: Exception reading lines of client socket (Function: run())");
  41. ex.printStackTrace();
  42. }
  43. }
  44. public void handleLine(String msg) {
  45. String[] seperate = msg.split("\\|");
  46.  
  47. String username = seperate[0];
  48. String password = seperate[1];
  49. int command = Integer.parseInt(seperate[2]);
  50. String[] parameters = null;
  51. parameters = seperate[3].split("\\:\\:");
  52.  
  53. if(command == -1) {
  54. if(checkUser(username, password) == true) {
  55. reply("true");
  56. } else {
  57. reply("false");
  58. }
  59. } else {
  60. if(checkUser(username, password) == true) {
  61. handleCommand(command, parameters);
  62. } else {
  63. reply("Your username is wrong, doesnt exist, or doesnt have sufficient permission.");
  64. }
  65. }
  66. }
  67. private void handleCommand(int command, String[] parameters) {
  68. // TODO Auto-generated method stub
  69. boolean success = false;
  70. System.out.println("[WebAdmin][Command Executed]: A client executed command id '"+ command +"'.");
  71. switch(command) {
  72. case 1: //Send Message
  73. if(parameters.length == 2) {
  74. for (int j = 0; j < Server.playerHandler.players.length; j++) {
  75. if (Server.playerHandler.players[j] != null) {
  76. Client c2 = (Client)Server.playerHandler.players[j];
  77. c2.sendMessage("[WebAdmin]["+ parameters[0] +"]: "+parameters[1]);
  78. reply("You have successfully send a global message");
  79. success = true;
  80. }
  81. }
  82. }
  83. if(success == false)
  84. reply("An error has occured while sending a global message");
  85. break;
  86.  
  87. case 2: //Give item to player
  88. if(parameters.length == 3) {
  89. int session;
  90. if((session = getSession(parameters[0])) != -1) {
  91. Client ses = (Client)Server.playerHandler.players[session];
  92. ses.getItems().addItem(Integer.parseInt(parameters[1]), Integer.parseInt(parameters[2]));
  93. reply("You have successfully given the user the item.");
  94. ses.sendMessage("[WebAdmin]: You have recieved an item.");
  95. success = true;
  96. }
  97. }
  98. if(success == false)
  99. reply("An error has occured while giving the item to the user");
  100. break;
  101.  
  102. case 3: //Kick user
  103. if(parameters.length == 1) {
  104. int session;
  105. if((session = getSession(parameters[0])) != -1) {
  106. Client ses = (Client)Server.playerHandler.players[session];
  107. ses.disconnected = true;
  108. reply("You have successfully kicked the player.");
  109. success = true;
  110. }
  111. }
  112. if(success == false)
  113. reply("An error has occured while kicking the user");
  114. break;
  115.  
  116. case 4: //Check status
  117. if(parameters.length == 3) {
  118. int session;
  119. if((session = getSession(parameters[0])) != -1) {
  120. reply("online");
  121. success = true;
  122. }
  123. }
  124. if(success == false)
  125. reply("offline");
  126. break;
  127.  
  128. case 5: //PM user
  129. if(parameters.length == 3) {
  130. int session;
  131. if((session = getSession(parameters[0])) != -1) {
  132. Client ses = (Client)Server.playerHandler.players[session];
  133. ses.sendMessage("[WebAdmin-PM]["+ parameters[1] +"]: "+ parameters[2]);
  134. reply("Message successfully sent to user");
  135. success = true;
  136. }
  137. }
  138. if(success == false)
  139. reply("An error has occured while private messaging the user");
  140. break;
  141.  
  142. case 6://get players
  143. String users = "";
  144. for(int i = 0; i < Config.MAX_PLAYERS; i++) {
  145. if(Server.playerHandler.players[i] != null) {
  146. Client ses = (Client)Server.playerHandler.players[i];
  147. users = users + ses.playerName +"::";
  148. }
  149. }
  150. reply(users);
  151. break;
  152.  
  153. case 7://get users
  154. String staff = "";
  155. for(int i = 0; i < Config.MAX_PLAYERS; i++) {
  156. if(Server.playerHandler.players[i] != null) {
  157. Client ses = (Client)Server.playerHandler.players[i];
  158. staff = staff + ses.playerName +","+ ses.playerRights +"::";
  159. }
  160. }
  161. reply(staff);
  162. break;
  163.  
  164. case 8: //IP Ban user
  165. if(parameters.length == 1) {
  166. int session;
  167. if((session = getSession(parameters[0])) != -1) {
  168. Client ses = (Client)Server.playerHandler.players[session];
  169. Connection.addIpToBanList(ses.connectedFrom);
  170. Connection.addIpToFile(ses.connectedFrom);
  171. ses.disconnected = true;
  172. reply("User successfully ip banned");
  173. success = true;
  174. }
  175. }
  176. if(success == false)
  177. reply("An error has occured while ip banning the user");
  178. break;
  179.  
  180. case 9: //Ban user
  181. if(parameters.length == 1) {
  182. int session;
  183. if((session = getSession(parameters[0])) != -1) {
  184. Client ses = (Client)Server.playerHandler.players[session];
  185. Connection.addNameToBanList(ses.playerName);
  186. Connection.addNameToFile(ses.playerName);
  187. ses.disconnected = true;
  188. reply("User successfully banned");
  189. success = true;
  190. } else {
  191. Connection.addNameToBanList(parameters[0]);
  192. Connection.addNameToFile(parameters[0]);
  193. reply("User successfully added to ban list");
  194. success = true;
  195. }
  196. }
  197. if(success == false)
  198. reply("An error has occured while banning the user");
  199. break;
  200.  
  201. case 10: //Un-ban user
  202. if(parameters.length == 1) {
  203. Connection.removeNameFromBanList(parameters[0]);
  204. reply("User successfully un-banned");
  205. success = true;
  206. }
  207. if(success == false)
  208. reply("An error has occured while un-banning the user");
  209. break;
  210.  
  211. case 11: //Mute user
  212. if(parameters.length == 1) {
  213. Connection.addNameToMuteList(parameters[0]);
  214. reply("You have successfully muted the player");
  215. success = true;
  216. }
  217. if(success == false)
  218. reply("An error has occured while muting the user");
  219. break;
  220.  
  221. case 12: //Un-mute user
  222. if(parameters.length == 1) {
  223. Connection.removeNameFromMuteList(parameters[0]);
  224. reply("You have successfully un-muted the user");
  225. success = true;
  226. }
  227. if(success == false)
  228. reply("An error has occured while un-muting the user");
  229. break;
  230.  
  231. case 13: //IP mute user
  232. if(parameters.length == 1) {
  233. int session;
  234. if((session = getSession(parameters[0])) != -1) {
  235. Client ses = (Client)Server.playerHandler.players[session];
  236. Connection.addIpToMuteFile(ses.connectedFrom);
  237. reply("You have successfully ip muted the user");
  238. success = true;
  239. }
  240. }
  241. if(success == false)
  242. reply("An error has occured while ip muting the user");
  243. break;
  244.  
  245. case 14: //Un-ip mute
  246. if(parameters.length == 1) {
  247. Connection.unIPMuteUser(parameters[0]);
  248. reply("You have successfully un-ip muted the user");
  249. success = true;
  250. }
  251. if(success == false)
  252. reply("An error has occured while un-ip muting the user");
  253. break;
  254.  
  255. case 15: //un-ip ban
  256. if(parameters.length == 1) {
  257. Connection.removeIpFromBanList(parameters[0]);
  258. reply("You have successfully un-ip banned the user");
  259. success = true;
  260. }
  261. if(success == false)
  262. reply("An error has occured while un-ip banning the user");
  263. break;
  264.  
  265. case 16: //Give mod
  266. if(parameters.length == 1) {
  267. int session;
  268. if((session = getSession(parameters[0])) != -1) {
  269. Client ses = (Client)Server.playerHandler.players[session];
  270. ses.playerRights = 1;
  271. reply("You have successfully promoted the user to mod");
  272. success = true;
  273. }
  274. }
  275. if(success == false)
  276. reply("An error has occured while promoting the user");
  277. break;
  278.  
  279. case 17: //Give Admin
  280. if(parameters.length == 1) {
  281. int session;
  282. if((session = getSession(parameters[0])) != -1) {
  283. Client ses = (Client)Server.playerHandler.players[session];
  284. ses.playerRights = 2;
  285. reply("You have successfully promoted the user to admin");
  286. success = true;
  287. }
  288. }
  289. if(success == false)
  290. reply("An error has occured while promoting the user");
  291. break;
  292.  
  293. case 18: //Give co-owner
  294. if(parameters.length == 1) {
  295. int session;
  296. if((session = getSession(parameters[0])) != -1) {
  297. Client ses = (Client)Server.playerHandler.players[session];
  298. ses.playerRights = 3;
  299. reply("You have successfully promoted the user to co-owner");
  300. success = true;
  301. }
  302. }
  303. if(success == false)
  304. reply("An error has occured while promoting the user");
  305. break;
  306.  
  307.  
  308. case 19: //Give player rights
  309. if(parameters.length == 1) {
  310. int session;
  311. if((session = getSession(parameters[0])) != -1) {
  312. Client ses = (Client)Server.playerHandler.players[session];
  313. ses.playerRights = 0;
  314. reply("You have successfully demoting the user to player");
  315. success = true;
  316. }
  317. }
  318. if(success == false)
  319. reply("An error has occured while demoting the user");
  320. break;
  321.  
  322. default:
  323. reply("No command was given");
  324. break;
  325. }
  326. }
  327.  
  328. public int getSession(String user) {
  329. for(int i = 0; i < Config.MAX_PLAYERS; i++) {
  330. if(Server.playerHandler.players[i] != null) {
  331. if(Server.playerHandler.players[i].playerName.equalsIgnoreCase(user)) {
  332. return i;
  333. }
  334. }
  335. }
  336. return -1;
  337. }
  338. public void reply(String reply) {
  339. // TODO Auto-generated method stub
  340. try {
  341. writer.println(reply);
  342. } catch(Exception ex) {
  343. System.out.println("[WebAdmin][Error]: Exception replying to client (Function: reply())");
  344. }
  345. }
  346. private boolean checkUser(String username, String password) {
  347. // TODO Auto-generated method stub
  348. String[] line = null;
  349. ArrayList<String> lines = new ArrayList();
  350. try {
  351. File file = new File("./Data/characters/"+username+".txt");
  352. BufferedReader characterfile = new BufferedReader(new FileReader(file));
  353. String strLine;
  354. //Read File Line By Line
  355. while ((strLine = characterfile.readLine()) != null) {
  356. // Print the content on the console
  357. lines.add(strLine);
  358. //line[i] = strLine;
  359. }
  360. } catch(Exception e) {
  361. System.out.println("Error reading user file content");
  362. }
  363. try {
  364. String[] userInfo = lines.get(1).split("\\ = ");
  365. String[] passInfo = lines.get(2).split("\\ = ");
  366. String[] rightsInfo = lines.get(8).split("\\ = ");
  367. String user = userInfo[1];
  368. String pass = passInfo[1];
  369. int rights = Integer.parseInt(rightsInfo[1]);
  370. if(username.equalsIgnoreCase(user) && password.equalsIgnoreCase(pass)) {
  371. if(rights == 3) {
  372. return true;
  373. }
  374. }
  375. } catch(Exception ex) {
  376. System.out.println("[WebAdmin][Error]: User trying to connect doesnt exist in the files.");
  377. }
  378.  
  379. return false;
  380. }
  381. }
  382.  
  383. public void run() {
  384. try {
  385. ServerSocket serverSocket = new ServerSocket(33300);
  386.  
  387. while(true) {
  388. client = serverSocket.accept();
  389.  
  390. Thread readRequest = new Thread(new ReadRequest(client));
  391. readRequest.start();
  392. System.out.println("[WebAdmin][New Client]: A new client has connected to WebAdmin");
  393. }
  394. } catch(Exception ex) {
  395. System.out.println("[WebAdmin][Error]: Exception initializing WebAdmin server (Function: init())");
  396. ex.printStackTrace();
  397. }
  398. }
  399. }
Add Comment
Please, Sign In to add comment