L
This commit is contained in:
parent
0b18622add
commit
901c6f1512
3 changed files with 36 additions and 8 deletions
|
@ -5,6 +5,8 @@ import static be.jeffcheasey88.peeratcode.framework.RequestType.OPTIONS;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.net.ServerSocket;
|
import java.net.ServerSocket;
|
||||||
import java.net.Socket;
|
import java.net.Socket;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
import java.util.regex.Matcher;
|
import java.util.regex.Matcher;
|
||||||
|
|
||||||
import javax.net.ssl.SSLServerSocket;
|
import javax.net.ssl.SSLServerSocket;
|
||||||
|
@ -64,14 +66,14 @@ public class Main{
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
initRoutes(router, config);
|
|
||||||
// RouteExtracter extracter = new RouteExtracter(router);
|
// RouteExtracter extracter = new RouteExtracter(router);
|
||||||
// extracter.extract();
|
// extracter.extract();
|
||||||
|
|
||||||
startWebServer(config, router);
|
startWebServer(config, router, initRoutes(router, config));
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void initRoutes(Router router, Configuration config){
|
private static List<Locker<?>> initRoutes(Router router, Configuration config){
|
||||||
|
List<Locker<?>> list = new ArrayList<>();
|
||||||
router.register(new ChapterElement(router.getDataBase()));
|
router.register(new ChapterElement(router.getDataBase()));
|
||||||
router.register(new ChapterList(router.getDataBase()));
|
router.register(new ChapterList(router.getDataBase()));
|
||||||
router.register(new PuzzleElement(router.getDataBase()));
|
router.register(new PuzzleElement(router.getDataBase()));
|
||||||
|
@ -83,12 +85,14 @@ public class Main{
|
||||||
router.register(new BadgeDetails(router.getDataBase()));
|
router.register(new BadgeDetails(router.getDataBase()));
|
||||||
|
|
||||||
Locker<Group> groupLock = new Locker<>();
|
Locker<Group> groupLock = new Locker<>();
|
||||||
|
list.add(groupLock);
|
||||||
router.register(new GroupCreate(router.getDataBase(), groupLock, config.getGroupJoinMinutes()));
|
router.register(new GroupCreate(router.getDataBase(), groupLock, config.getGroupJoinMinutes()));
|
||||||
|
|
||||||
DynamicLeaderboard dlb = new DynamicLeaderboard(router.getDataBase());
|
DynamicLeaderboard dlb = new DynamicLeaderboard(router.getDataBase());
|
||||||
router.register(dlb);
|
router.register(dlb);
|
||||||
|
|
||||||
Locker<Completion> leaderboard = dlb.getLocker();
|
Locker<Completion> leaderboard = dlb.getLocker();
|
||||||
|
list.add(leaderboard);
|
||||||
|
|
||||||
router.register(new PuzzleResponse(router.getDataBase(), config.getUsersFiles(), leaderboard));
|
router.register(new PuzzleResponse(router.getDataBase(), config.getUsersFiles(), leaderboard));
|
||||||
router.register(new GroupList(router.getDataBase()));
|
router.register(new GroupList(router.getDataBase()));
|
||||||
|
@ -97,9 +101,11 @@ public class Main{
|
||||||
|
|
||||||
// Bot bot = new Bot(config, router.getDataBase(), groupLock);
|
// Bot bot = new Bot(config, router.getDataBase(), groupLock);
|
||||||
// bot.start();
|
// bot.start();
|
||||||
|
|
||||||
|
return list;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void startWebServer(Configuration config, Router router) throws IOException {
|
private static void startWebServer(Configuration config, Router router, List<Locker<?>> lockers) throws IOException {
|
||||||
if (config.useSsl()) { // Not needed with the use of a proxy
|
if (config.useSsl()) { // Not needed with the use of a proxy
|
||||||
SSLServerSocket server = null;
|
SSLServerSocket server = null;
|
||||||
try {
|
try {
|
||||||
|
@ -111,7 +117,7 @@ public class Main{
|
||||||
|
|
||||||
while (!server.isClosed()) {
|
while (!server.isClosed()) {
|
||||||
Socket socket = server.accept();
|
Socket socket = server.accept();
|
||||||
Client client = new Client(socket, router);
|
Client client = new Client(socket, router, lockers);
|
||||||
client.start();
|
client.start();
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
|
@ -125,7 +131,7 @@ public class Main{
|
||||||
try (ServerSocket server = new ServerSocket(config.getTcpPort())) {
|
try (ServerSocket server = new ServerSocket(config.getTcpPort())) {
|
||||||
while (!server.isClosed()) {
|
while (!server.isClosed()) {
|
||||||
Socket socket = server.accept();
|
Socket socket = server.accept();
|
||||||
Client client = new Client(socket, router);
|
Client client = new Client(socket, router, lockers);
|
||||||
client.start();
|
client.start();
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
|
|
|
@ -2,6 +2,7 @@ package be.jeffcheasey88.peeratcode.framework;
|
||||||
|
|
||||||
import java.net.Socket;
|
import java.net.Socket;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
import org.jose4j.jwa.AlgorithmConstraints.ConstraintType;
|
import org.jose4j.jwa.AlgorithmConstraints.ConstraintType;
|
||||||
import org.jose4j.jws.AlgorithmIdentifiers;
|
import org.jose4j.jws.AlgorithmIdentifiers;
|
||||||
|
@ -14,26 +15,36 @@ public class Client extends Thread{
|
||||||
private HttpReader reader;
|
private HttpReader reader;
|
||||||
private HttpWriter writer;
|
private HttpWriter writer;
|
||||||
private Router router;
|
private Router router;
|
||||||
|
private List<Locker<?>> lockers;
|
||||||
|
|
||||||
public Client(Socket socket, Router router) throws Exception{
|
public Client(Socket socket, Router router, List<Locker<?>> lockers) throws Exception{
|
||||||
this.reader = new HttpReader(socket);
|
this.reader = new HttpReader(socket);
|
||||||
this.writer = new HttpWriter(socket);
|
this.writer = new HttpWriter(socket);
|
||||||
this.router = router;
|
this.router = router;
|
||||||
|
this.lockers = lockers;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void run(){
|
public void run(){
|
||||||
|
User user = null;
|
||||||
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));
|
||||||
reader.readHeaders();
|
reader.readHeaders();
|
||||||
|
|
||||||
router.exec(RequestType.valueOf(headers[0]), headers[1], isLogin(reader), reader, writer);
|
router.exec(RequestType.valueOf(headers[0]), headers[1], user = isLogin(reader), reader, writer);
|
||||||
writer.flush();
|
writer.flush();
|
||||||
writer.close();
|
writer.close();
|
||||||
}catch(Exception e){
|
}catch(Exception e){
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
|
if(user != null){
|
||||||
|
if(user.getKey() != null){
|
||||||
|
for(Locker<?> locker : this.lockers){
|
||||||
|
locker.remove(user.getKey());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private User isLogin(HttpReader reader) throws Exception{
|
private User isLogin(HttpReader reader) throws Exception{
|
||||||
|
|
|
@ -2,14 +2,25 @@ package be.jeffcheasey88.peeratcode.framework;
|
||||||
|
|
||||||
import org.jose4j.jwt.JwtClaims;
|
import org.jose4j.jwt.JwtClaims;
|
||||||
|
|
||||||
|
import be.jeffcheasey88.peeratcode.framework.Locker.Key;
|
||||||
|
|
||||||
public class User{
|
public class User{
|
||||||
|
|
||||||
private int id;
|
private int id;
|
||||||
|
private Key key;
|
||||||
|
|
||||||
public User(JwtClaims jwtClaims){
|
public User(JwtClaims jwtClaims){
|
||||||
this.id = ((Long) jwtClaims.getClaimValue("id")).intValue();
|
this.id = ((Long) jwtClaims.getClaimValue("id")).intValue();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setKey(Key key){
|
||||||
|
this.key = key;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Key getKey(){
|
||||||
|
return this.key;
|
||||||
|
}
|
||||||
|
|
||||||
public int getId(){
|
public int getId(){
|
||||||
return this.id;
|
return this.id;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue