Merge branch 'main' into routes
This commit is contained in:
commit
65177b21fc
7 changed files with 147 additions and 10 deletions
|
@ -3,5 +3,6 @@
|
||||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
|
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
|
||||||
<classpathentry kind="src" path="src"/>
|
<classpathentry kind="src" path="src"/>
|
||||||
<classpathentry exported="true" kind="lib" path="json-simple-1.1.1.jar"/>
|
<classpathentry exported="true" kind="lib" path="json-simple-1.1.1.jar"/>
|
||||||
|
<classpathentry exported="true" kind="lib" path="mysql-connector-java-8.0.28.jar"/>
|
||||||
<classpathentry kind="output" path="bin"/>
|
<classpathentry kind="output" path="bin"/>
|
||||||
</classpath>
|
</classpath>
|
||||||
|
|
3
.gitignore
vendored
3
.gitignore
vendored
|
@ -1,3 +1,4 @@
|
||||||
.settings/
|
.settings/
|
||||||
bin/
|
bin/
|
||||||
.project
|
.project
|
||||||
|
config.txt
|
BIN
mysql-connector-java-8.0.28.jar
Normal file
BIN
mysql-connector-java-8.0.28.jar
Normal file
Binary file not shown.
76
src/be/jeffcheasey88/peeratcode/Configuration.java
Normal file
76
src/be/jeffcheasey88/peeratcode/Configuration.java
Normal file
|
@ -0,0 +1,76 @@
|
||||||
|
package be.jeffcheasey88.peeratcode;
|
||||||
|
|
||||||
|
import java.io.BufferedReader;
|
||||||
|
import java.io.BufferedWriter;
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.FileReader;
|
||||||
|
import java.io.FileWriter;
|
||||||
|
import java.lang.reflect.Field;
|
||||||
|
|
||||||
|
public class Configuration {
|
||||||
|
|
||||||
|
private String db_host;
|
||||||
|
private String db_port;
|
||||||
|
private String db_user;
|
||||||
|
private String db_database;
|
||||||
|
private String db_password;
|
||||||
|
|
||||||
|
private File _file;
|
||||||
|
|
||||||
|
public Configuration(String path){
|
||||||
|
this._file = new File(path);
|
||||||
|
System.out.println("Config on "+_file.getAbsolutePath());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void load() throws Exception{
|
||||||
|
if(!this._file.exists()) return;
|
||||||
|
BufferedReader reader = new BufferedReader(new FileReader(this._file));
|
||||||
|
String line;
|
||||||
|
while((line = reader.readLine()) != null){
|
||||||
|
String[] split = line.split("=");
|
||||||
|
Field field = getClass().getDeclaredField(split[0]);
|
||||||
|
if(field == null) continue;
|
||||||
|
field.setAccessible(true);
|
||||||
|
field.set(this, split[1]);
|
||||||
|
}
|
||||||
|
reader.close();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void save() throws Exception{
|
||||||
|
if(!_file.exists()){
|
||||||
|
File parent = _file.getParentFile();
|
||||||
|
if(!parent.exists()) parent.mkdirs();
|
||||||
|
_file.createNewFile();
|
||||||
|
}
|
||||||
|
Field[] fields = getClass().getDeclaredFields();
|
||||||
|
BufferedWriter writer = new BufferedWriter(new FileWriter(_file));
|
||||||
|
for(Field field : fields){
|
||||||
|
field.setAccessible(true);
|
||||||
|
if(field.getName().startsWith("_")) continue;
|
||||||
|
Object value = field.get(this);
|
||||||
|
writer.write(field.getName()+"="+value);
|
||||||
|
}
|
||||||
|
writer.flush();
|
||||||
|
writer.close();
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getDbHost(){
|
||||||
|
return this.db_host;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getDbPort(){
|
||||||
|
return this.db_port;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getDbUser(){
|
||||||
|
return this.db_user;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getDbDatabase(){
|
||||||
|
return this.db_database;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getDbPassword(){
|
||||||
|
return this.db_password;
|
||||||
|
}
|
||||||
|
}
|
|
@ -2,6 +2,8 @@ package be.jeffcheasey88.peeratcode;
|
||||||
|
|
||||||
import java.net.ServerSocket;
|
import java.net.ServerSocket;
|
||||||
import java.net.Socket;
|
import java.net.Socket;
|
||||||
|
import java.sql.Connection;
|
||||||
|
import java.sql.DriverManager;
|
||||||
import java.util.regex.Matcher;
|
import java.util.regex.Matcher;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
|
@ -16,6 +18,12 @@ import be.jeffcheasey88.peeratcode.webserver.Router;
|
||||||
public class Main {
|
public class Main {
|
||||||
|
|
||||||
public static void main(String[] args) throws Exception {
|
public static void main(String[] args) throws Exception {
|
||||||
|
Configuration config = new Configuration("config.txt");
|
||||||
|
config.load();
|
||||||
|
|
||||||
|
Class.forName("com.mysql.cj.jdbc.Driver");
|
||||||
|
Connection con = DriverManager.getConnection("jdbc:mysql://"+config.getDbHost()+":"+config.getDbPort()+"/"+config.getDbDatabase()+"",config.getDbUser(), config.getDbPassword());
|
||||||
|
|
||||||
Router router = new Router();
|
Router router = new Router();
|
||||||
|
|
||||||
router.setDefault(new Response(){
|
router.setDefault(new Response(){
|
||||||
|
@ -32,7 +40,8 @@ public class Main {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
initRoutes(router);
|
initRoutes(router, con);
|
||||||
|
|
||||||
|
|
||||||
ServerSocket server = new ServerSocket(80);
|
ServerSocket server = new ServerSocket(80);
|
||||||
|
|
||||||
|
@ -41,10 +50,10 @@ public class Main {
|
||||||
Client client = new Client(socket, router);
|
Client client = new Client(socket, router);
|
||||||
client.start();
|
client.start();
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
}
|
||||||
private static void initRoutes(Router router){
|
private static void initRoutes(Router router, Connection con){
|
||||||
router.register(new PuzzleList());
|
router.register(new PuzzleList(con));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,7 +20,7 @@ public class Client extends Thread{
|
||||||
@Override
|
@Override
|
||||||
public void run(){
|
public void run(){
|
||||||
try {
|
try {
|
||||||
String[] headers = reader.readLine().split("\s");
|
String[] headers = reader.readLine().split("\\s");
|
||||||
System.out.println(Arrays.toString(headers));
|
System.out.println(Arrays.toString(headers));
|
||||||
router.exec(headers[0], headers[1], reader, writer);
|
router.exec(headers[0], headers[1], reader, writer);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
|
|
|
@ -4,8 +4,6 @@ import java.security.MessageDigest;
|
||||||
import java.util.regex.Matcher;
|
import java.util.regex.Matcher;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
import javax.xml.bind.DatatypeConverter;
|
|
||||||
|
|
||||||
import org.json.simple.parser.JSONParser;
|
import org.json.simple.parser.JSONParser;
|
||||||
|
|
||||||
public class HttpUtil {
|
public class HttpUtil {
|
||||||
|
@ -32,7 +30,7 @@ public class HttpUtil {
|
||||||
writer.write("Connection: Upgrade\n");
|
writer.write("Connection: Upgrade\n");
|
||||||
writer.write("Upgrade: websocket\n");
|
writer.write("Upgrade: websocket\n");
|
||||||
writer.write("Sec-WebSocket-Accept: "+
|
writer.write("Sec-WebSocket-Accept: "+
|
||||||
DatatypeConverter.printBase64Binary(
|
printBase64Binary(
|
||||||
MessageDigest.getInstance("SHA-1").
|
MessageDigest.getInstance("SHA-1").
|
||||||
digest((key+"258EAFA5-E914-47DA-95CA-C5AB0DC85B11").getBytes("UTF-8")))+"\n");
|
digest((key+"258EAFA5-E914-47DA-95CA-C5AB0DC85B11").getBytes("UTF-8")))+"\n");
|
||||||
writer.write("\n");
|
writer.write("\n");
|
||||||
|
@ -257,4 +255,56 @@ public class HttpUtil {
|
||||||
return " ";
|
return " ";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//From javax.xml.bind.DatatypeConverter
|
||||||
|
private static String printBase64Binary(byte[] array){
|
||||||
|
char[] arrayOfChar = new char[(array.length + 2) / 3 * 4];
|
||||||
|
int i = _printBase64Binary(array, 0, array.length, arrayOfChar, 0);
|
||||||
|
assert i == arrayOfChar.length;
|
||||||
|
return new String(arrayOfChar);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static int _printBase64Binary(byte[] paramArrayOfbyte, int paramInt1, int paramInt2, char[] paramArrayOfchar, int paramInt3) {
|
||||||
|
int i = paramInt2;
|
||||||
|
int j;
|
||||||
|
for (j = paramInt1; i >= 3; j += 3) {
|
||||||
|
paramArrayOfchar[paramInt3++] = encode(paramArrayOfbyte[j] >> 2);
|
||||||
|
paramArrayOfchar[paramInt3++] = encode((paramArrayOfbyte[j] & 0x3) << 4 | paramArrayOfbyte[j + 1] >> 4 & 0xF);
|
||||||
|
paramArrayOfchar[paramInt3++] = encode((paramArrayOfbyte[j + 1] & 0xF) << 2 | paramArrayOfbyte[j + 2] >> 6 & 0x3);
|
||||||
|
paramArrayOfchar[paramInt3++] = encode(paramArrayOfbyte[j + 2] & 0x3F);
|
||||||
|
i -= 3;
|
||||||
|
}
|
||||||
|
if (i == 1) {
|
||||||
|
paramArrayOfchar[paramInt3++] = encode(paramArrayOfbyte[j] >> 2);
|
||||||
|
paramArrayOfchar[paramInt3++] = encode((paramArrayOfbyte[j] & 0x3) << 4);
|
||||||
|
paramArrayOfchar[paramInt3++] = '=';
|
||||||
|
paramArrayOfchar[paramInt3++] = '=';
|
||||||
|
}
|
||||||
|
if (i == 2) {
|
||||||
|
paramArrayOfchar[paramInt3++] = encode(paramArrayOfbyte[j] >> 2);
|
||||||
|
paramArrayOfchar[paramInt3++] = encode((paramArrayOfbyte[j] & 0x3) << 4 | paramArrayOfbyte[j + 1] >> 4 & 0xF);
|
||||||
|
paramArrayOfchar[paramInt3++] = encode((paramArrayOfbyte[j + 1] & 0xF) << 2);
|
||||||
|
paramArrayOfchar[paramInt3++] = '=';
|
||||||
|
}
|
||||||
|
return paramInt3;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static char encode(int paramInt) {
|
||||||
|
return encodeMap[paramInt & 0x3F];
|
||||||
|
}
|
||||||
|
private static final char[] encodeMap = initEncodeMap();
|
||||||
|
|
||||||
|
private static char[] initEncodeMap() {
|
||||||
|
char[] arrayOfChar = new char[64];
|
||||||
|
byte b;
|
||||||
|
for (b = 0; b < 26; b++)
|
||||||
|
arrayOfChar[b] = (char)(65 + b);
|
||||||
|
for (b = 26; b < 52; b++)
|
||||||
|
arrayOfChar[b] = (char)(97 + b - 26);
|
||||||
|
for (b = 52; b < 62; b++)
|
||||||
|
arrayOfChar[b] = (char)(48 + b - 52);
|
||||||
|
arrayOfChar[62] = '+';
|
||||||
|
arrayOfChar[63] = '/';
|
||||||
|
return arrayOfChar;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue