Commit 09311297 authored by Grzegorz Pietrusza's avatar Grzegorz Pietrusza

put whole app in proper package

parent 68a7f7f0
import auth.ExampleAuthenticator; package com.telephoners.krakyournet.ctf;
import com.bazaarvoice.dropwizard.webjars.WebJarBundle; import com.bazaarvoice.dropwizard.webjars.WebJarBundle;
import com.google.inject.Guice; import com.google.inject.Guice;
import com.google.inject.Injector; import com.google.inject.Injector;
import commands.PurgeDatabaseCommand; import com.telephoners.krakyournet.ctf.auth.ExampleAuthenticator;
import commands.RegisterTasksCommand; import com.telephoners.krakyournet.ctf.commands.PurgeDatabaseCommand;
import commands.RegisterTeamsCommand; import com.telephoners.krakyournet.ctf.commands.RegisterTasksCommand;
import core.ApplicationConfiguration; import com.telephoners.krakyournet.ctf.commands.RegisterTeamsCommand;
import com.telephoners.krakyournet.ctf.core.ApplicationConfiguration;
import com.telephoners.krakyournet.ctf.modules.ApplicationModule;
import com.telephoners.krakyournet.ctf.objects.User;
import com.telephoners.krakyournet.ctf.repositories.UsersRepository;
import com.telephoners.krakyournet.ctf.resources.*;
import io.dropwizard.Application; import io.dropwizard.Application;
import io.dropwizard.assets.AssetsBundle; import io.dropwizard.assets.AssetsBundle;
import io.dropwizard.auth.AuthDynamicFeature; import io.dropwizard.auth.AuthDynamicFeature;
...@@ -15,11 +21,7 @@ import io.dropwizard.auth.basic.BasicCredentialAuthFilter; ...@@ -15,11 +21,7 @@ import io.dropwizard.auth.basic.BasicCredentialAuthFilter;
import io.dropwizard.jersey.setup.JerseyEnvironment; import io.dropwizard.jersey.setup.JerseyEnvironment;
import io.dropwizard.setup.Bootstrap; import io.dropwizard.setup.Bootstrap;
import io.dropwizard.setup.Environment; import io.dropwizard.setup.Environment;
import modules.ApplicationModule;
import objects.User;
import org.glassfish.jersey.server.filter.RolesAllowedDynamicFeature; import org.glassfish.jersey.server.filter.RolesAllowedDynamicFeature;
import repositories.UsersRepository;
import resources.*;
import java.util.stream.Stream; import java.util.stream.Stream;
......
package com.telephoners.krakyournet.ctf;
import com.mongodb.client.FindIterable; import com.mongodb.client.FindIterable;
import org.bson.Document; import org.bson.Document;
......
package auth; package com.telephoners.krakyournet.ctf.auth;
import com.google.common.base.Optional; import com.google.common.base.Optional;
import com.google.inject.Inject; import com.google.inject.Inject;
import com.telephoners.krakyournet.ctf.objects.User;
import com.telephoners.krakyournet.ctf.repositories.UsersRepository;
import io.dropwizard.auth.AuthenticationException; import io.dropwizard.auth.AuthenticationException;
import io.dropwizard.auth.Authenticator; import io.dropwizard.auth.Authenticator;
import io.dropwizard.auth.basic.BasicCredentials; import io.dropwizard.auth.basic.BasicCredentials;
import objects.User;
import repositories.UsersRepository;
public class ExampleAuthenticator implements Authenticator<BasicCredentials, User>
public class ExampleAuthenticator implements Authenticator<BasicCredentials, User> { {
private UsersRepository usersRepository; private UsersRepository usersRepository;
@Inject @Inject
public ExampleAuthenticator(UsersRepository usersRepository) { public ExampleAuthenticator(UsersRepository usersRepository)
{
this.usersRepository = usersRepository; this.usersRepository = usersRepository;
} }
@Override @Override
public com.google.common.base.Optional<User> authenticate(BasicCredentials credentials) throws AuthenticationException { public Optional<User> authenticate(BasicCredentials credentials) throws AuthenticationException
{
User user = usersRepository.authenticateUser(credentials); User user = usersRepository.authenticateUser(credentials);
if (user != null) { if (user != null) {
return Optional.of(user); return Optional.of(user);
......
package commands; package com.telephoners.krakyournet.ctf.commands;
import com.google.inject.Guice; import com.google.inject.Guice;
import com.google.inject.Injector; import com.google.inject.Injector;
import core.ApplicationConfiguration; import com.telephoners.krakyournet.ctf.core.ApplicationConfiguration;
import com.telephoners.krakyournet.ctf.modules.ApplicationModule;
import io.dropwizard.cli.ConfiguredCommand; import io.dropwizard.cli.ConfiguredCommand;
import io.dropwizard.setup.Bootstrap; import io.dropwizard.setup.Bootstrap;
import modules.ApplicationModule;
import net.sourceforge.argparse4j.inf.Namespace; import net.sourceforge.argparse4j.inf.Namespace;
import org.mongodb.morphia.Datastore; import org.mongodb.morphia.Datastore;
......
package commands; package com.telephoners.krakyournet.ctf.commands;
import com.google.inject.Guice; import com.google.inject.Guice;
import com.google.inject.Injector; import com.google.inject.Injector;
import com.mongodb.MongoClient; import com.telephoners.krakyournet.ctf.core.ApplicationConfiguration;
import core.ApplicationConfiguration; import com.telephoners.krakyournet.ctf.core.TaskType;
import core.TaskType; import com.telephoners.krakyournet.ctf.helpers.TextTaskConfig;
import helpers.TextTaskConfig; import com.telephoners.krakyournet.ctf.helpers.WebTaskConfig;
import helpers.WebTaskConfig; import com.telephoners.krakyournet.ctf.modules.ApplicationModule;
import com.telephoners.krakyournet.ctf.objects.Flag;
import com.telephoners.krakyournet.ctf.objects.tasks.Task;
import com.telephoners.krakyournet.ctf.objects.tasks.TaskCryptoContent;
import com.telephoners.krakyournet.ctf.objects.tasks.TaskWebContent;
import com.telephoners.krakyournet.ctf.repositories.TasksRepository;
import io.dropwizard.cli.ConfiguredCommand; import io.dropwizard.cli.ConfiguredCommand;
import io.dropwizard.setup.Bootstrap; import io.dropwizard.setup.Bootstrap;
import modules.ApplicationModule;
import net.sourceforge.argparse4j.inf.Namespace; import net.sourceforge.argparse4j.inf.Namespace;
import objects.Flag;
import objects.tasks.Task;
import objects.tasks.TaskCryptoContent;
import objects.tasks.TaskWebContent;
import org.mongodb.morphia.Datastore;
import org.mongodb.morphia.Morphia;
import repositories.TasksRepository;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
......
package commands; package com.telephoners.krakyournet.ctf.commands;
import com.google.inject.Guice; import com.google.inject.Guice;
import com.google.inject.Injector; import com.google.inject.Injector;
import core.ApplicationConfiguration; import com.telephoners.krakyournet.ctf.core.ApplicationConfiguration;
import com.telephoners.krakyournet.ctf.modules.ApplicationModule;
import com.telephoners.krakyournet.ctf.repositories.TeamsRepository;
import com.telephoners.krakyournet.ctf.repositories.UsersRepository;
import io.dropwizard.cli.ConfiguredCommand; import io.dropwizard.cli.ConfiguredCommand;
import io.dropwizard.setup.Bootstrap; import io.dropwizard.setup.Bootstrap;
import modules.ApplicationModule;
import net.sourceforge.argparse4j.inf.Namespace; import net.sourceforge.argparse4j.inf.Namespace;
import org.mongodb.morphia.Datastore;
import repositories.TeamsRepository;
import repositories.UsersRepository;
public class RegisterTeamsCommand extends ConfiguredCommand<ApplicationConfiguration> public class RegisterTeamsCommand extends ConfiguredCommand<ApplicationConfiguration>
{ {
......
package core; package com.telephoners.krakyournet.ctf.core;
import helpers.TextTaskConfig; import com.telephoners.krakyournet.ctf.helpers.TextTaskConfig;
import helpers.WebTaskConfig; import com.telephoners.krakyournet.ctf.helpers.WebTaskConfig;
import com.telephoners.krakyournet.ctf.objects.Team;
import com.telephoners.krakyournet.ctf.objects.User;
import io.dropwizard.Configuration; import io.dropwizard.Configuration;
import objects.Team;
import objects.User;
import java.util.List; import java.util.List;
......
package core; package com.telephoners.krakyournet.ctf.core;
/** /**
* Created by gpietrus on 20.02.2016. * Created by gpietrus on 20.02.2016.
......
package core; package com.telephoners.krakyournet.ctf.core;
/** /**
* Created by gpietrus on 21.02.2016. * Created by gpietrus on 21.02.2016.
......
package helpers; package com.telephoners.krakyournet.ctf.helpers;
import helpers.PublicProperty; import com.telephoners.krakyournet.ctf.objects.tasks.Task;
import objects.tasks.Task;
import java.lang.reflect.Field; import java.lang.reflect.Field;
import java.util.List; import java.util.List;
......
package helpers; package com.telephoners.krakyournet.ctf.helpers;
import java.lang.annotation.Retention; import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy; import java.lang.annotation.RetentionPolicy;
......
package helpers; package com.telephoners.krakyournet.ctf.helpers;
import java.util.List; import java.util.List;
......
package helpers; package com.telephoners.krakyournet.ctf.helpers;
import java.util.List; import java.util.List;
......
package modules; package com.telephoners.krakyournet.ctf.modules;
import com.google.inject.AbstractModule; import com.google.inject.AbstractModule;
import com.mongodb.MongoClient; import com.mongodb.MongoClient;
import core.ApplicationConfiguration; import com.telephoners.krakyournet.ctf.core.ApplicationConfiguration;
import org.mongodb.morphia.Datastore; import org.mongodb.morphia.Datastore;
import org.mongodb.morphia.Morphia; import org.mongodb.morphia.Morphia;
......
package objects; package com.telephoners.krakyournet.ctf.objects;
import java.util.Random; import java.util.Random;
......
package objects; package com.telephoners.krakyournet.ctf.objects;
import objects.tasks.Task; import com.telephoners.krakyournet.ctf.objects.tasks.Task;
import org.bson.types.ObjectId; import org.bson.types.ObjectId;
import org.mongodb.morphia.annotations.Entity; import org.mongodb.morphia.annotations.Entity;
import org.mongodb.morphia.annotations.Id; import org.mongodb.morphia.annotations.Id;
......
package objects; package com.telephoners.krakyournet.ctf.objects;
import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonProperty;
......
package objects; package com.telephoners.krakyournet.ctf.objects;
import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonProperty;
......
package objects.tasks; package com.telephoners.krakyournet.ctf.objects.tasks;
import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonInclude;
import core.TaskType; import com.telephoners.krakyournet.ctf.core.TaskType;
import helpers.PublicProperty; import com.telephoners.krakyournet.ctf.helpers.PublicProperty;
import objects.Flag; import com.telephoners.krakyournet.ctf.objects.Flag;
import org.bson.types.ObjectId; import org.bson.types.ObjectId;
import org.mongodb.morphia.annotations.Entity; import org.mongodb.morphia.annotations.Entity;
import org.mongodb.morphia.annotations.Id; import org.mongodb.morphia.annotations.Id;
......
package objects.tasks; package com.telephoners.krakyournet.ctf.objects.tasks;
/** /**
* Created by gpietrus on 23.02.2016. * Created by gpietrus on 23.02.2016.
......
package objects.tasks; package com.telephoners.krakyournet.ctf.objects.tasks;
/** /**
* Created by gpietrus on 23.02.2016. * Created by gpietrus on 23.02.2016.
*/ */
public class TaskCryptoContent extends TaskContent { public class TaskCryptoContent extends TaskContent
{
private String text; private String text;
public TaskCryptoContent(String text) { public TaskCryptoContent(String text) {
......
package objects.tasks; package com.telephoners.krakyournet.ctf.objects.tasks;
/** /**
* Created by gpietrus on 23.02.2016. * Created by gpietrus on 23.02.2016.
*/ */
public class TaskWebContent extends TaskContent { public class TaskWebContent extends TaskContent
{
private String url; private String url;
public TaskWebContent(String url) { public TaskWebContent(String url) {
......
package repositories; package com.telephoners.krakyournet.ctf.repositories;
import java.util.List; import java.util.List;
......
package repositories; package com.telephoners.krakyournet.ctf.repositories;
import objects.Solution; import com.telephoners.krakyournet.ctf.objects.Solution;
import org.mongodb.morphia.Datastore; import org.mongodb.morphia.Datastore;
import javax.inject.Inject; import javax.inject.Inject;
import javax.inject.Singleton; import javax.inject.Singleton;
import java.util.List; import java.util.List;
/**
* Created by gpietrus on 20.02.2016.
*/
@Singleton @Singleton
public class SolutionsRepository implements Repository { public class SolutionsRepository implements Repository
{
private Datastore datastore; private Datastore datastore;
@Inject @Inject
......
package repositories; package com.telephoners.krakyournet.ctf.repositories;
import core.ApplicationConfiguration; import com.telephoners.krakyournet.ctf.core.ApplicationConfiguration;
import helpers.DBObjectUtils; import com.telephoners.krakyournet.ctf.helpers.DBObjectUtils;
import objects.Solution; import com.telephoners.krakyournet.ctf.objects.Solution;
import objects.Team; import com.telephoners.krakyournet.ctf.objects.Team;
import objects.tasks.Task; import com.telephoners.krakyournet.ctf.objects.tasks.Task;
import org.apache.commons.codec.binary.Hex; import org.apache.commons.codec.binary.Hex;
import org.mongodb.morphia.Datastore; import org.mongodb.morphia.Datastore;
......
package repositories; package com.telephoners.krakyournet.ctf.repositories;
import core.ApplicationConfiguration; import com.telephoners.krakyournet.ctf.core.ApplicationConfiguration;
import objects.Team; import com.telephoners.krakyournet.ctf.objects.Team;
import objects.User; import com.telephoners.krakyournet.ctf.objects.User;
import org.mongodb.morphia.Datastore; import org.mongodb.morphia.Datastore;
import javax.inject.Inject; import javax.inject.Inject;
...@@ -15,7 +15,8 @@ import java.util.UUID; ...@@ -15,7 +15,8 @@ import java.util.UUID;
* Created by gpietrus on 20.02.2016. * Created by gpietrus on 20.02.2016.
*/ */
@Singleton @Singleton
public class TeamsRepository implements Repository { public class TeamsRepository implements Repository
{
private Datastore datastore; private Datastore datastore;
private ApplicationConfiguration applicationConfiguration; private ApplicationConfiguration applicationConfiguration;
...@@ -23,13 +24,15 @@ public class TeamsRepository implements Repository { ...@@ -23,13 +24,15 @@ public class TeamsRepository implements Repository {
@Inject @Inject
public TeamsRepository(Datastore datastore, ApplicationConfiguration applicationConfiguration, public TeamsRepository(Datastore datastore, ApplicationConfiguration applicationConfiguration,
UsersRepository usersRepository) { UsersRepository usersRepository)
{
this.datastore = datastore; this.datastore = datastore;
this.applicationConfiguration = applicationConfiguration; this.applicationConfiguration = applicationConfiguration;
this.usersRepository = usersRepository; this.usersRepository = usersRepository;
} }
public Optional<Team> getTeamByUser(User user) { public Optional<Team> getTeamByUser(User user)
{
return datastore.createQuery(Team.class).asList().stream() return datastore.createQuery(Team.class).asList().stream()
.filter(team -> team.getMembers().contains(user)) .filter(team -> team.getMembers().contains(user))
.findFirst(); .findFirst();
...@@ -40,22 +43,26 @@ public class TeamsRepository implements Repository { ...@@ -40,22 +43,26 @@ public class TeamsRepository implements Repository {
return getTeamByUser(usersRepository.getUserByName(username)); return getTeamByUser(usersRepository.getUserByName(username));
} }
public void get(UUID uuid) { public void get(UUID uuid)
{
} }
public List<Team> getAll() { public List<Team> getAll()
{
return datastore.createQuery(Team.class).asList(); return datastore.createQuery(Team.class).asList();
} }
//todo: move to interface //todo: move to interface
//todo: use default as interface-implemented methods //todo: use default as interface-implemented methods
public void add(Team team) { public void add(Team team)
{
datastore.save(team); datastore.save(team);
} }
//todo: move clean to upper class? //todo: move clean to upper class?
public void clean() { public void clean()
{
datastore.getCollection(Team.class).drop(); datastore.getCollection(Team.class).drop();
} }
} }
package repositories; package com.telephoners.krakyournet.ctf.repositories;
import com.google.inject.Inject; import com.google.inject.Inject;
import com.google.inject.Singleton; import com.google.inject.Singleton;
import com.telephoners.krakyournet.ctf.objects.User;
import io.dropwizard.auth.basic.BasicCredentials; import io.dropwizard.auth.basic.BasicCredentials;
import objects.User;
import org.apache.commons.codec.binary.Hex; import org.apache.commons.codec.binary.Hex;
import org.mongodb.morphia.Datastore; import org.mongodb.morphia.Datastore;
......
package resources; package com.telephoners.krakyournet.ctf.resources;
import com.telephoners.krakyournet.ctf.objects.User;
import io.dropwizard.auth.Auth; import io.dropwizard.auth.Auth;
import objects.User;
import org.apache.http.HttpEntity; import org.apache.http.HttpEntity;
import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpGet;
...@@ -16,9 +16,6 @@ import javax.ws.rs.core.MediaType; ...@@ -16,9 +16,6 @@ import javax.ws.rs.core.MediaType;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
/**
* Created by gpietrus on 16.02.16.
*/
@Path(value = "/proxy/task") @Path(value = "/proxy/task")
@Produces(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON)
public class ProxyResource { public class ProxyResource {
......
package resources; package com.telephoners.krakyournet.ctf.resources;
import com.telephoners.krakyournet.ctf.objects.Solution;
import com.telephoners.krakyournet.ctf.objects.User;
import com.telephoners.krakyournet.ctf.repositories.SolutionsRepository;
import com.telephoners.krakyournet.ctf.repositories.TasksRepository;
import io.dropwizard.auth.Auth; import io.dropwizard.auth.Auth;
import objects.Solution;
import objects.User;
import repositories.SolutionsRepository;
import repositories.TasksRepository;
import javax.inject.Inject; import javax.inject.Inject;
import javax.inject.Singleton; import javax.inject.Singleton;
......
package resources; package com.telephoners.krakyournet.ctf.resources;
import com.telephoners.krakyournet.ctf.objects.User;
import com.telephoners.krakyournet.ctf.objects.tasks.Task;
import com.telephoners.krakyournet.ctf.objects.tasks.TaskCryptoContent;
import com.telephoners.krakyournet.ctf.objects.tasks.TaskWebContent;
import com.telephoners.krakyournet.ctf.repositories.TasksRepository;
import io.dropwizard.auth.Auth; import io.dropwizard.auth.Auth;
import objects.User;
import objects.tasks.Task;
import objects.tasks.TaskCryptoContent;
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;
import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient; 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 javax.inject.Inject; import javax.inject.Inject;
import javax.inject.Singleton; import javax.inject.Singleton;
......
package resources; package com.telephoners.krakyournet.ctf.resources;
import com.telephoners.krakyournet.ctf.objects.User;
import com.telephoners.krakyournet.ctf.objects.tasks.Task;
import com.telephoners.krakyournet.ctf.repositories.TasksRepository;
import io.dropwizard.auth.Auth; import io.dropwizard.auth.Auth;
import objects.User;
import objects.tasks.Task;
import org.apache.commons.collections.MapUtils; import org.apache.commons.collections.MapUtils;
import repositories.TasksRepository;
import javax.inject.Inject; import javax.inject.Inject;
import javax.inject.Singleton; import javax.inject.Singleton;
import javax.ws.rs.*; 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.MediaType;
import javax.ws.rs.core.Response; import javax.ws.rs.core.Response;
import java.util.List; import java.util.List;
......
package resources; package com.telephoners.krakyournet.ctf.resources;
import objects.Team; import com.telephoners.krakyournet.ctf.objects.Team;
import repositories.TeamsRepository; import com.telephoners.krakyournet.ctf.repositories.TeamsRepository;
import javax.inject.Inject; import javax.inject.Inject;
import javax.inject.Singleton; import javax.inject.Singleton;
......
package resources; package com.telephoners.krakyournet.ctf.resources;
import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableMap;
import com.telephoners.krakyournet.ctf.objects.Team;
import com.telephoners.krakyournet.ctf.objects.User;
import com.telephoners.krakyournet.ctf.repositories.TeamsRepository;
import io.dropwizard.auth.Auth; import io.dropwizard.auth.Auth;
import objects.Team;
import objects.User;
import repositories.TeamsRepository;
import javax.inject.Inject; import javax.inject.Inject;
import javax.inject.Singleton; import javax.inject.Singleton;
......
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