Commit 66c8dabe authored by Grzegorz Pietrusza's avatar Grzegorz Pietrusza

merge tasks classes

parent 00c212d9
...@@ -30,8 +30,7 @@ import resources.ProxyResource; ...@@ -30,8 +30,7 @@ import resources.ProxyResource;
import resources.SolutionsResource; import resources.SolutionsResource;
import resources.TasksResource; import resources.TasksResource;
import resources.TeamsResource; import resources.TeamsResource;
import resources.tasks.CryptoTaskResource; import resources.TaskResource;
import resources.tasks.WebTaskResource;
import java.util.UUID; import java.util.UUID;
import java.util.stream.Stream; import java.util.stream.Stream;
...@@ -97,12 +96,7 @@ public class CTFApplication extends Application<ApplicationConfiguration> { ...@@ -97,12 +96,7 @@ public class CTFApplication extends Application<ApplicationConfiguration> {
jersey.register(injector.getInstance(TasksResource.class)); jersey.register(injector.getInstance(TasksResource.class));
jersey.register(injector.getInstance(ProxyResource.class)); jersey.register(injector.getInstance(ProxyResource.class));
jersey.register(injector.getInstance(SolutionsResource.class)); jersey.register(injector.getInstance(SolutionsResource.class));
jersey.register(injector.getInstance(TaskResource.class));
//todo: use reflections to register tasks?
//todo: move
jersey.register(new CryptoTaskResource(tasksRepository));
jersey.register(new WebTaskResource(tasksRepository));
} }
private void registerAuthFeatures(Environment environment) { private void registerAuthFeatures(Environment environment) {
...@@ -177,6 +171,7 @@ public class CTFApplication extends Application<ApplicationConfiguration> { ...@@ -177,6 +171,7 @@ public class CTFApplication extends Application<ApplicationConfiguration> {
bind(TasksResource.class).toInstance(new TasksResource(tasksRepository bind(TasksResource.class).toInstance(new TasksResource(tasksRepository
)); ));
bind(SolutionsResource.class).toInstance(new SolutionsResource(solutionsRepository)); bind(SolutionsResource.class).toInstance(new SolutionsResource(solutionsRepository));
bind(TaskResource.class).toInstance(new TaskResource(tasksRepository));
} }
}); });
} }
......
package resources.tasks; package resources;
import core.TaskType;
import io.dropwizard.auth.Auth; import io.dropwizard.auth.Auth;
import objects.User; import objects.User;
import objects.tasks.Task; import objects.tasks.Task;
import objects.tasks.TaskCryptoContent;
import objects.tasks.TaskWebContent; import objects.tasks.TaskWebContent;
import org.apache.http.HttpEntity; import org.apache.http.HttpEntity;
import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.CloseableHttpResponse;
...@@ -12,7 +12,9 @@ import org.apache.http.impl.client.CloseableHttpClient; ...@@ -12,7 +12,9 @@ import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients; import org.apache.http.impl.client.HttpClients;
import repositories.TasksRepository; import repositories.TasksRepository;
import javax.inject.Inject;
import javax.ws.rs.GET; import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path; import javax.ws.rs.Path;
import javax.ws.rs.PathParam; import javax.ws.rs.PathParam;
import javax.ws.rs.core.Response; import javax.ws.rs.core.Response;
...@@ -25,10 +27,14 @@ import java.util.stream.Collectors; ...@@ -25,10 +27,14 @@ import java.util.stream.Collectors;
/** /**
* Created by gpietrus on 23.02.2016. * Created by gpietrus on 23.02.2016.
*/ */
public class WebTaskResource extends TaskResource { @Path(value = "/task")
public class TaskResource {
public WebTaskResource(TasksRepository tasksRepository) { protected TasksRepository tasksRepository;
super(tasksRepository);
@Inject
public TaskResource(TasksRepository tasksRepository) {
this.tasksRepository = tasksRepository;
} }
public String readStream(InputStream input) throws IOException { public String readStream(InputStream input) throws IOException {
...@@ -47,21 +53,26 @@ public class WebTaskResource extends TaskResource { ...@@ -47,21 +53,26 @@ public class WebTaskResource extends TaskResource {
return entity.getContent(); return entity.getContent();
} }
//todo: merge crypto and web task? @Path("{task_level}")
// @Override
@Path("web/{task_level}")
@GET @GET
//todo: auth
public Response getTask(@Auth User user, public Response getTask(@Auth User user,
final @PathParam("task_level") int taskLevel) throws IOException { final @PathParam("task_level") int taskLevel) throws IOException {
Task task = tasksRepository.get(taskLevel);//todo Task task = tasksRepository.get(taskLevel);
if(task == null || !task.getTaskType().equals(TaskType.WEB)) { if (task == null) {
return Response.status(Response.Status.BAD_REQUEST).build(); return Response.status(Response.Status.BAD_REQUEST).build();
}
String taskText = null;
switch (task.getTaskType()) {
case CRYPTO:
taskText = ((TaskCryptoContent) task.getTaskContent()).getText();
break;
case WEB:
taskText = readStream(proxyRequest(((TaskWebContent) task.getTaskContent()).getUrl(), user));
break;
} }
TaskWebContent taskContent = (TaskWebContent) task.getTaskContent(); return Response.ok().entity(taskText).build();
String response = readStream(proxyRequest(taskContent.getUrl(), user));
return Response.ok().entity(response).build();
} }
} }
package resources.tasks;
import core.TaskType;
import io.dropwizard.auth.Auth;
import objects.User;
import objects.tasks.Task;
import objects.tasks.TaskCryptoContent;
import repositories.TasksRepository;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
/**
* Created by gpietrus on 23.02.2016.
*/
@Produces(MediaType.APPLICATION_JSON)
public class CryptoTaskResource extends TaskResource {
public CryptoTaskResource(TasksRepository tasksRepository) {
super(tasksRepository);
}
// private TasksRepository tasksRepository;
// @Inject
// public CryptoTaskResource(TasksRepository tasksRepository) {
// this.tasksRepository = tasksRepository;
// }
//todo: merge crypto and web task?
// @Override
@Path("crypto/{task_level}")
@GET
//todo: auth
public Response getTask(@Auth User user,
final @PathParam("task_level") int taskLevel) {
Task task = tasksRepository.get(taskLevel);//todo
if(task == null || !task.getTaskType().equals(TaskType.CRYPTO)) {
return Response.status(Response.Status.BAD_REQUEST).build();
}
TaskCryptoContent taskContent = (TaskCryptoContent) task.getTaskContent();
return Response.ok().entity(taskContent.getText()).build();
}
}
package resources.tasks;
import repositories.TasksRepository;
import javax.inject.Inject;
import javax.ws.rs.Path;
/**
* Created by gpietrus on 23.02.2016.
*/
@Path(value = "/task")
public abstract class TaskResource {
protected TasksRepository tasksRepository;
@Inject
public TaskResource(TasksRepository tasksRepository) {
this.tasksRepository = tasksRepository;
}
//todo
// public abstract Response getTask(); //todo: auth
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment