Commit 9858b9ef authored by Dominik Rosiek's avatar Dominik Rosiek

flag md5

parents 2ad9d9e6 e78511c8
...@@ -21,7 +21,7 @@ import java.util.List; ...@@ -21,7 +21,7 @@ import java.util.List;
public class WebTask extends Task public class WebTask extends Task
{ {
private String url; private String url;
private static final Joiner URL_JOINER = Joiner.on("/"); private static final Joiner URL_JOINER = Joiner.on("/"); //todo
public WebTask(String name, int level, String description, List<Flag> flags, String url) public WebTask(String name, int level, String description, List<Flag> flags, String url)
{ {
...@@ -35,7 +35,8 @@ public class WebTask extends Task ...@@ -35,7 +35,8 @@ public class WebTask extends Task
public String getTextForUser(User user, String path) throws IOException public String getTextForUser(User user, String path) throws IOException
{ {
String url = URL_JOINER.join(getUrl(), path); // String url = URL_JOINER.join(getUrl(), path); //todo: rethink
String url = getUrl() + path;
return StreamUtils.readStream(proxyRequest(url, user)); return StreamUtils.readStream(proxyRequest(url, user));
} }
......
...@@ -4,12 +4,15 @@ import com.telephoners.krakyournet.ctf.beans.User; ...@@ -4,12 +4,15 @@ import com.telephoners.krakyournet.ctf.beans.User;
import com.telephoners.krakyournet.ctf.beans.tasks.Task; import com.telephoners.krakyournet.ctf.beans.tasks.Task;
import com.telephoners.krakyournet.ctf.repositories.TasksRepository; import com.telephoners.krakyournet.ctf.repositories.TasksRepository;
import io.dropwizard.auth.Auth; import io.dropwizard.auth.Auth;
import org.glassfish.jersey.server.ContainerRequest;
import javax.inject.Inject; import javax.inject.Inject;
import javax.inject.Singleton; import javax.inject.Singleton;
import javax.ws.rs.GET; import javax.ws.rs.GET;
import javax.ws.rs.Path; import javax.ws.rs.Path;
import javax.ws.rs.PathParam; import javax.ws.rs.PathParam;
import javax.ws.rs.container.ContainerRequestContext;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.Response; import javax.ws.rs.core.Response;
import java.io.IOException; import java.io.IOException;
...@@ -29,10 +32,17 @@ public class TaskResource ...@@ -29,10 +32,17 @@ public class TaskResource
@GET @GET
public Response getTask(@Auth User user, public Response getTask(@Auth User user,
final @PathParam("task_level") int taskLevel, final @PathParam("task_level") int taskLevel,
final @PathParam("path") String path) throws IOException final @PathParam("path") String path,
@Context ContainerRequestContext containerRequestContext) throws IOException
{ {
Task task = tasksRepository.getByLevel(taskLevel); Task task = tasksRepository.getByLevel(taskLevel);
//todo: refactor, path not necessary in textTasks //todo: refactor, path not necessary in textTasks
return Response.ok().entity(task.getTextForUser(user, path)).build(); ContainerRequest context = (ContainerRequest) containerRequestContext;
String query = context.getRequestUri().getQuery();
String fullPath = path;
if(query != null) { //todo: refactor
fullPath = fullPath + "?" + query;
}
return Response.ok().entity(task.getTextForUser(user, fullPath)).build();
} }
} }
(function(){ (function(){
angular.module('ctfApp').controller('LoginController', angular.module('ctfApp').controller('LoginController',
['$scope', '$rootScope', '$location', 'AuthenticationService', '$window', 'NavbarService', ['$scope', '$rootScope', '$location', 'AuthenticationService', '$window', 'NavbarService', 'AppSettings',
function ($scope, $rootScope, $location, AuthenticationService, $window, NavbarService) { function ($scope, $rootScope, $location, AuthenticationService, $window, NavbarService, AppSettings) {
// reset login status // reset login status
AuthenticationService.clearCredentials(); AuthenticationService.clearCredentials();
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
$location.path('/'); $location.path('/');
AuthenticationService.setCredentials($scope.username, $scope.password, response.team); AuthenticationService.setCredentials($scope.username, $scope.password, response.team);
// redirect to additional external auth point // redirect to additional external auth point
$window.location.href = "http://"+$scope.username+":"+$scope.password+"@52.28.244.24:8080/api/v1/auth"; $window.location.href = AppSettings.getApiAddressWithCredentials($scope.username, $scope.password) + '/auth';
} else { } else {
Materialize.toast('Błąd logowania! Spróbuj jeszcze raz.', 5000 ,'toast-error'); Materialize.toast('Błąd logowania! Spróbuj jeszcze raz.', 5000 ,'toast-error');
$scope.dataLoading = false; $scope.dataLoading = false;
......
(function(){ (function(){
angular.module('ctfApp').controller('TaskController', ['$scope', '$stateParams', 'APIProvider', 'AppSettings', function($scope, $stateParams, APIProvider, AppSettings) { angular.module('ctfApp').controller('TaskController', ['$scope', '$stateParams', 'APIProvider', 'AppSettings', function($scope, $stateParams, APIProvider, AppSettings) {
$scope.submitUnknown = false; $scope.submitUnknown = false;
$scope.apiAddress = 'http://' + AppSettings.apiAddress; $scope.apiAddress = AppSettings.getApiAddress();
$scope.selectedTaskId = $stateParams.taskLevel; $scope.selectedTaskId = $stateParams.taskLevel;
// console.log('SELECTED TASK ID', $scope.selectedTaskId); // console.log('SELECTED TASK ID', $scope.selectedTaskId);
APIProvider.getTaskById($scope.selectedTaskId, function(data){ APIProvider.getTaskById($scope.selectedTaskId, function(data){
......
(function(){ (function(){
angular.module('ctfApp').controller('TasksController', ['$scope', '$http', 'APIProvider', 'AppSettings', function($scope, $http, APIProvider, AppSettings) { angular.module('ctfApp').controller('TasksController', ['$scope', '$http', 'APIProvider', 'AppSettings', function($scope, $http, APIProvider, AppSettings) {
$scope.apiAddress = AppSettings.apiAddress; $scope.apiAddress = AppSettings.getApiAddress();
APIProvider.getTasks(function(data){ APIProvider.getTasks(function(data){
// console.log(data); // console.log(data);
$.each(data, function(key){
data[key].short_description = data[key].description.split(" ").slice(0,6).join(" ").concat("...");
});
APIProvider.getMyCompletedLevelsList(function(completed){ APIProvider.getMyCompletedLevelsList(function(completed){
$.each(data, function(key, task){ $.each(data, function(key, task){
if (completed.indexOf(task.level) !== -1){ if (completed.indexOf(task.level) !== -1){
...@@ -13,7 +18,9 @@ ...@@ -13,7 +18,9 @@
} }
}); });
}); });
$scope.tasks = data; $scope.tasks = data;
}); });
}]); }]);
})(); })();
\ No newline at end of file
...@@ -37,12 +37,31 @@ ...@@ -37,12 +37,31 @@
}]); }]);
app.factory('AppSettings', function() { app.factory('AppSettings', ['$http', function($http) {
var dev = "localhost:8080/api/v1", prod = "52.28.244.24:8080/api/v1";
// fallback into defaults, if everything fails, world collapses, hell freezes and /startup will not resolve
var domainName = '52.25.28.64', port = "http", schema = 8080;
return { return {
apiAddress: prod
initAPI: function(){
$http.get('/api/v1/startup').success(function(data){
console.debug(data);
domainName = data.domainName;
port = data.port;
schema = data.schema;
});
},
getApiAddress: function(){
return schema + "://" + domainName + ":" + port + "/api/v1";
},
getApiAddressWithCredentials: function(username, password){
return schema + "://" + username + ":" + password + "@" + domainName + ":" + port + "/api/v1";
}
}; };
}); }]);
app.config(['$httpProvider', function ($httpProvider) { app.config(['$httpProvider', function ($httpProvider) {
...@@ -59,8 +78,10 @@ ...@@ -59,8 +78,10 @@
}]); }]);
app.run(['$rootScope', '$location', '$cookieStore', '$http', 'NavbarService', app.run(['$rootScope', '$location', '$cookieStore', '$http', 'NavbarService', 'AppSettings',
function ($rootScope, $location, $cookieStore, $http, NavbarService) { function ($rootScope, $location, $cookieStore, $http, NavbarService, AppSettings) {
AppSettings.initAPI();
$(".button-collapse").sideNav(); $(".button-collapse").sideNav();
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
getScores: function(callback){ getScores: function(callback){
$http.get('http://' + AppSettings.apiAddress + '/solutions/all'). $http.get(AppSettings.getApiAddress() + '/solutions/all').
success(function(data) { success(function(data) {
scores = data; scores = data;
if (callback) callback(data); if (callback) callback(data);
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
}, },
getTasks: function(callback){ getTasks: function(callback){
$http.get('http://' + AppSettings.apiAddress + '/tasks'). $http.get(AppSettings.getApiAddress() + '/tasks').
success(function(data) { success(function(data) {
this.getMySolutions(function(solutions){ this.getMySolutions(function(solutions){
if (solutions){ if (solutions){
...@@ -69,7 +69,7 @@ ...@@ -69,7 +69,7 @@
* @param callback * @param callback
*/ */
getMyCompletedLevelsList: function(callback){ getMyCompletedLevelsList: function(callback){
$http.get('http://' + AppSettings.apiAddress + '/solutions/my/completed'). $http.get(AppSettings.getApiAddress() + '/solutions/my/completed').
success(function(data) { success(function(data) {
if (callback) callback(data); if (callback) callback(data);
}); });
...@@ -82,7 +82,7 @@ ...@@ -82,7 +82,7 @@
* @returns {HttpPromise} * @returns {HttpPromise}
*/ */
submitFlag: function(level, flag){ submitFlag: function(level, flag){
return $http.post('http://' + AppSettings.apiAddress + '/solutions/' + level, flag); return $http.post(AppSettings.getApiAddress() + '/solutions/' + level, flag);
} }
}; };
}]); }]);
......
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
*/ */
login: function (username, password, callback) { login: function (username, password, callback) {
$http.get('http://' + username + ":" + password + "@" + AppSettings.apiAddress + '/whoami', { $http.get(AppSettings.getApiAddressWithCredentials(username, password) + '/whoami', {
headers: {'Authorization': 'Basic ' + Base64.encode(username + ':' + password)} headers: {'Authorization': 'Basic ' + Base64.encode(username + ':' + password)}
}) })
.then(function (response) { .then(function (response) {
...@@ -35,7 +35,7 @@ ...@@ -35,7 +35,7 @@
*/ */
logout: function (callback) { logout: function (callback) {
$http.get('http://' + 'askdjfadsf' + ':' + 'adsfasskdjfadsf' + '@' + AppSettings.apiAddress + '/whoami', { $http.get(AppSettings.getApiAddressWithCredentials('askdjfadsf', 'adsfasskdjfadsf') + '/whoami', {
headers: {'Authorization': 'Basic ' + Base64.encode('askdjfadsf' + ':' + 'adsfasskdjfadsf')} headers: {'Authorization': 'Basic ' + Base64.encode('askdjfadsf' + ':' + 'adsfasskdjfadsf')}
}).then(function(response){ }).then(function(response){
this.clearCredentials(); this.clearCredentials();
......
...@@ -18,11 +18,7 @@ ...@@ -18,11 +18,7 @@
</div> </div>
</span> </span>
<p> <p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut {{task.description}}
labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco
laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in
voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat
non proident, sunt in culpa qui officia deserunt mollit anim id est laborum
</p> </p>
</div> </div>
</div> </div>
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
<i ng-if="task.taskType === 'WEB'" class="fa fa-globe" alt="Zadanie webowe"></i> <i ng-if="task.taskType === 'WEB'" class="fa fa-globe" alt="Zadanie webowe"></i>
{{task.name}} {{task.name}}
</span> </span>
<p>Poziom {{task.level}}. Super zadanie.</p> <p>Poziom {{task.level}}. {{task.short_description}}</p>
</div> </div>
<div class="card-action"> <div class="card-action">
<a href="#/task/{{task.level}}">Przejdź do zadania</a></td> <a href="#/task/{{task.level}}">Przejdź do zadania</a></td>
......
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