Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit c6e8686

Browse files
committed
Removed Mongodb, so we do not have issues with downloading the embedded Mongodb. Moved back to JPA and use HSQLDB for storing user information.
1 parent b64aa43 commit c6e8686

File tree

19 files changed

+167
-161
lines changed

19 files changed

+167
-161
lines changed

docker-compose.yml

Lines changed: 1 addition & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,15 @@
11
version: '2.0'
22

33
services:
4-
mongo:
5-
image: mongo:latest
6-
expose:
7-
- "27017"
8-
volumes:
9-
- './mongo-data:/data/db'
104
webgoat:
115
build: webgoat-server/
126
command: "sh /home/webgoat/start.sh"
137
ports:
148
- "8080:8080"
15-
depends_on:
16-
[mongo, activemq]
17-
environment:
18-
WG_MONGO_PORT: 27017
19-
WG_MONGO_HOST: mongo
20-
WG_MQ_HOST: activemq
21-
WG_MQ_PORT: 61616
22-
WG_INTERNAL_MONGO: "false"
239
webwolf:
2410
build: webwolf/
2511
command: "sh /home/webwolf/start.sh"
2612
depends_on:
2713
- webgoat
2814
ports:
29-
- "8081:8081"
30-
environment:
31-
WG_MONGO_PORT: 27017
32-
WG_MONGO_HOST: mongo
33-
WG_MQ_HOST: activemq
34-
WG_MQ_PORT: 61616
15+
- "8081:8081"

webgoat-container/pom.xml

Lines changed: 1 addition & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -36,16 +36,6 @@
3636

3737
</profiles>
3838

39-
<dependencyManagement>
40-
<dependencies>
41-
<dependency>
42-
<groupId>de.flapdoodle.embed</groupId>
43-
<artifactId>de.flapdoodle.embed.mongo</artifactId>
44-
<version>2.0.0</version>
45-
</dependency>
46-
</dependencies>
47-
</dependencyManagement>
48-
4939
<build>
5040
<resources>
5141
<resource>
@@ -127,7 +117,7 @@
127117
</dependency>
128118
<dependency>
129119
<groupId>org.springframework.boot</groupId>
130-
<artifactId>spring-boot-starter-data-mongodb</artifactId>
120+
<artifactId>spring-boot-starter-data-jpa</artifactId>
131121
</dependency>
132122
<dependency>
133123
<groupId>org.apache.commons</groupId>
@@ -202,12 +192,6 @@
202192
<version>${junit.version}</version>
203193
<type>jar</type>
204194
</dependency>
205-
<dependency>
206-
<groupId>com.github.fakemongo</groupId>
207-
<artifactId>fongo</artifactId>
208-
<version>2.1.0</version>
209-
<scope>test</scope>
210-
</dependency>
211195
<!-- ************* END: Dependencies for Unit and Integration Testing ************** -->
212196
<!-- ************* END: <dependencies> ************** -->
213197
</dependencies>

webgoat-container/src/main/java/org/owasp/webgoat/CleanupLocalProgressFiles.java

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,5 @@ public class CleanupLocalProgressFiles {
2323

2424
@PostConstruct
2525
public void clean() {
26-
File dir = new File(webgoatHome);
27-
//do it safe, check whether the subdir mongodb is available as subdirectory
28-
File[] mongoDir = dir.listFiles(f -> f.isDirectory() && f.getName().contains("mongodb"));
29-
if (mongoDir != null && mongoDir.length == 1) {
30-
FileSystemUtils.deleteRecursively(dir);
31-
}
3226
}
3327
}

webgoat-container/src/main/java/org/owasp/webgoat/lessons/Assignment.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@
22

33
import lombok.*;
44

5+
import javax.persistence.Entity;
6+
import javax.persistence.Id;
7+
import javax.persistence.OneToMany;
8+
import javax.persistence.Transient;
59
import java.util.List;
610

711
/**
@@ -38,11 +42,14 @@
3842
@NoArgsConstructor
3943
@Getter
4044
@EqualsAndHashCode
45+
@Entity
4146
public class Assignment {
4247
@NonNull
48+
@Id
4349
private String name;
4450
@NonNull
4551
private String path;
52+
@Transient
4653
private List<String> hints;
4754

4855
}

webgoat-container/src/main/java/org/owasp/webgoat/users/LessonTracker.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import org.owasp.webgoat.lessons.AbstractLesson;
88
import org.owasp.webgoat.lessons.Assignment;
99

10+
import javax.persistence.*;
1011
import java.util.List;
1112
import java.util.Map;
1213
import java.util.Optional;
@@ -44,16 +45,20 @@
4445
* @version $Id: $Id
4546
* @since October 29, 2003
4647
*/
48+
@Entity
4749
public class LessonTracker {
4850
@Getter
51+
@Id
4952
private String lessonName;
53+
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
5054
private final Set<Assignment> solvedAssignments = Sets.newHashSet();
55+
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
5156
private final List<Assignment> allAssignments = Lists.newArrayList();
5257
@Getter
5358
private int numberOfAttempts = 0;
5459

55-
protected LessonTracker() {
56-
//Mongo
60+
private LessonTracker() {
61+
//JPA
5762
}
5863

5964
public LessonTracker(AbstractLesson lesson) {

webgoat-container/src/main/java/org/owasp/webgoat/users/UserRepository.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
package org.owasp.webgoat.users;
22

3-
import org.springframework.data.mongodb.repository.MongoRepository;
3+
import org.springframework.data.jpa.repository.JpaRepository;
44

55
import java.util.List;
66

77
/**
88
* @author nbaars
99
* @since 3/19/17.
1010
*/
11-
public interface UserRepository extends MongoRepository<WebGoatUser, String> {
11+
public interface UserRepository extends JpaRepository<WebGoatUser, String> {
1212

1313
WebGoatUser findByUsername(String username);
1414

webgoat-container/src/main/java/org/owasp/webgoat/users/UserTracker.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55
import lombok.extern.slf4j.Slf4j;
66
import org.owasp.webgoat.lessons.AbstractLesson;
77
import org.owasp.webgoat.lessons.Assignment;
8-
import org.springframework.data.annotation.Id;
98

9+
import javax.persistence.*;
1010
import java.util.List;
1111
import java.util.Map;
1212
import java.util.Optional;
@@ -44,12 +44,16 @@
4444
* @since October 29, 2003
4545
*/
4646
@Slf4j
47+
@Entity
4748
public class UserTracker {
4849

4950
@Id
50-
private final String user;
51+
private String user;
52+
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
5153
private List<LessonTracker> lessonTrackers = Lists.newArrayList();
5254

55+
private UserTracker() {}
56+
5357
public UserTracker(final String user) {
5458
this.user = user;
5559
}
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
package org.owasp.webgoat.users;
22

3-
import org.springframework.data.mongodb.repository.MongoRepository;
3+
import org.springframework.data.jpa.repository.JpaRepository;
44

55
/**
66
* @author nbaars
77
* @since 4/30/17.
88
*/
9-
public interface UserTrackerRepository extends MongoRepository<UserTracker, String> {
9+
public interface UserTrackerRepository extends JpaRepository<UserTracker, String> {
1010

1111

1212
}

webgoat-container/src/main/java/org/owasp/webgoat/users/WebGoatUser.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
package org.owasp.webgoat.users;
22

33
import lombok.Getter;
4-
import org.springframework.data.annotation.Id;
5-
import org.springframework.data.annotation.Transient;
64
import org.springframework.security.core.GrantedAuthority;
75
import org.springframework.security.core.authority.SimpleGrantedAuthority;
86
import org.springframework.security.core.userdetails.User;
97
import org.springframework.security.core.userdetails.UserDetails;
108

9+
import javax.persistence.Entity;
10+
import javax.persistence.Id;
11+
import javax.persistence.Transient;
1112
import java.util.Collection;
1213
import java.util.Collections;
1314

@@ -16,6 +17,7 @@
1617
* @since 3/19/17.
1718
*/
1819
@Getter
20+
@Entity
1921
public class WebGoatUser implements UserDetails {
2022

2123
public static final String ROLE_USER = "WEBGOAT_USER";

webgoat-container/src/main/resources/application.properties

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@ server.session.timeout=600
44
server.contextPath=/WebGoat
55
server.port=8080
66

7+
spring.datasource.url=jdbc:hsqldb:file:${webgoat.server.directory}/data/webgoat
8+
spring.jpa.hibernate.ddl-auto=update
9+
710

811
logging.level.org.springframework=WARN
912
logging.level.org.springframework.boot.devtools=WARN
@@ -28,7 +31,6 @@ webgoat.feedback.address.html=<A HREF=mailto:[email protected]>[email protected]
2831
webgoat.database.driver=org.hsqldb.jdbcDriver
2932
webgoat.database.connection.string=jdbc:hsqldb:mem:{USER}
3033
webgoat.default.language=en
31-
webgoat.embedded.mongo=${WG_INTERNAL_MONGO:true}
3234

3335
webwolf.host=${WEBWOLF_HOST:localhost}
3436
webwolf.port=${WEBWOLF_PORT:8081}
@@ -39,10 +41,5 @@ webwolf.url.mail=http://${webwolf.host}:${webwolf.port}/mail
3941
spring.jackson.serialization.indent_output=true
4042
spring.jackson.serialization.write-dates-as-timestamps=false
4143

42-
spring.data.mongodb.host=${WG_MONGO_HOST:localhost}
43-
spring.data.mongodb.port=${WG_MONGO_PORT:27017}
44-
spring.data.mongodb.database=webgoat
45-
spring.mongodb.embedded.storage.databaseDir=${webgoat.user.directory}/mongodb/
46-
4744
#For static file refresh ... and faster dev :D
4845
spring.devtools.restart.additional-paths=webgoat-container/src/main/resources/static/js,webgoat-container/src/main/resources/static/css

0 commit comments

Comments
 (0)