diff --git a/.gitignore b/.gitignore index c256322..0d1798c 100644 --- a/.gitignore +++ b/.gitignore @@ -2,4 +2,3 @@ .DS_Store target/ - diff --git a/pom.xml b/pom.xml index b9975d4..8746082 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ 4.0.0 com.factionsecurity faction-extender - 2.5 + 2.7 jar Faction Extender API API to interfaces for building extensions for Faction. @@ -30,7 +30,7 @@ scm:git:https://github.com/factionsecurity/FactionExtender.git scm:git:https://github.com/factionsecurity/FactionExtender.git - 2.2 + 2.6 2.18.16 @@ -124,6 +124,12 @@ + + org.projectlombok + lombok + 1.18.36 + provided + org.junit.jupiter junit-jupiter-api diff --git a/pom.xml.releaseBackup b/pom.xml.releaseBackup index 642f026..3c1c9db 100644 --- a/pom.xml.releaseBackup +++ b/pom.xml.releaseBackup @@ -1,8 +1,8 @@ 4.0.0 - FactionSecurity + com.factionsecurity faction-extender - 2.3-SNAPSHOT + 2.6-SNAPSHOT jar Faction Extender API API to interfaces for building extensions for Faction. @@ -14,29 +14,92 @@ repo + + + Josh Summitt + develop@factionsecurity.com + Faction Security + https://www.factionsecurity.com + + https://github.com/factionsecurity/FactionExtender.git - scm:git:https://github.com/factionsecurity/FactionExtender.git + + scm:git:https://github.com/factionsecurity/FactionExtender.git scm:git:https://github.com/factionsecurity/FactionExtender.git - 2.2 + 2.6 2.18.16 github github - - - github - Faction Extender - https://maven.pkg.github.com/factionsecurity/FactionExtender - - src/main/java - src/test/java + src/test/java + + org.apache.maven.plugins + maven-source-plugin + 3.3.0 + + + attach-sources + + jar-no-fork + + + + + + org.apache.maven.plugins + maven-javadoc-plugin + + + attach-javadocs + + jar + + + + + + net.ju-n.maven.plugins + checksum-maven-plugin + 1.2 + + + + artifacts + + + + + + org.apache.maven.plugins + maven-gpg-plugin + 3.1.0 + + + sign-artifacts + verify + + sign + + + + + + org.sonatype.central + central-publishing-maven-plugin + 0.3.0 + true + + sonatype + true + + org.apache.maven.plugins maven-release-plugin diff --git a/release.properties b/release.properties index 42b52f7..0fe11f1 100644 --- a/release.properties +++ b/release.properties @@ -1,22 +1,22 @@ #release configuration -#Sun Jan 14 16:44:12 CST 2024 -completedPhase=end-release +#Fri Dec 20 14:11:30 CST 2024 +completedPhase=generate-release-poms exec.additionalArguments=-Dmaven.javadoc.skip\=true -Dmaven.test.skipTests\=true -Dmaven.test.skip\=true -P github exec.snapshotReleasePluginAllowed=false preparationGoals=clean verify -project.dev.FactionSecurity\:faction-extender=2.4-SNAPSHOT -project.rel.FactionSecurity\:faction-extender=2.3 -project.scm.FactionSecurity\:faction-extender.connection=scm\:git\:https\://github.com/factionsecurity/FactionExtender.git -project.scm.FactionSecurity\:faction-extender.developerConnection=scm\:git\:https\://github.com/factionsecurity/FactionExtender.git -project.scm.FactionSecurity\:faction-extender.id=github -project.scm.FactionSecurity\:faction-extender.tag=2.2 -project.scm.FactionSecurity\:faction-extender.url=https\://github.com/factionsecurity/FactionExtender.git +project.dev.com.factionsecurity\:faction-extender=2.7-SNAPSHOT +project.rel.com.factionsecurity\:faction-extender=2.6 +project.scm.com.factionsecurity\:faction-extender.connection=scm\:git\:https\://github.com/factionsecurity/FactionExtender.git +project.scm.com.factionsecurity\:faction-extender.developerConnection=scm\:git\:https\://github.com/factionsecurity/FactionExtender.git +project.scm.com.factionsecurity\:faction-extender.id=github +project.scm.com.factionsecurity\:faction-extender.tag=2.6 +project.scm.com.factionsecurity\:faction-extender.url=https\://github.com/factionsecurity/FactionExtender.git projectVersionPolicyId=default pushChanges=true remoteTagging=true scm.commentPrefix=[maven-release-plugin] scm.id=github -scm.tag=2.3 +scm.tag=2.6 scm.tagNameFormat=@{project.version} scm.url=scm\:git\:https\://github.com/factionsecurity/FactionExtender.git scm.username=summitt diff --git a/src/main/java/com/faction/elements/Assessment.java b/src/main/java/com/faction/elements/Assessment.java index fd018e9..0255464 100644 --- a/src/main/java/com/faction/elements/Assessment.java +++ b/src/main/java/com/faction/elements/Assessment.java @@ -8,6 +8,9 @@ import com.faction.elements.User; + +import lombok.Data; + /** * The Assessment Class is used to store all elements of a Faction Assessment */ @@ -34,175 +37,7 @@ public class Assessment { private String status; private Integer workflow; private List customFields; - - public String getSummary() { - return summary; - } - - public String getRiskAnalysis() { - - return this.riskAnalysis; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public String getAppId() { - return appId; - } - - public void setAppId(String appId) { - this.appId = appId; - } - - public Date getStart() { - return start; - } - - public void setStart(Date start) { - this.start = start; - } - - public Date getEnd() { - return end; - } - - public void setEnd(Date end) { - this.end = end; - } - - public Date getCompleted() { - return completed; - } - - public void setCompleted(Date completed) { - this.completed = completed; - } - - public String getNotes() { - return Notes; - } - - public String getDistributionList() { - return DistributionList; - } - - public void setDistributionList(String distributionList) { - DistributionList = distributionList; - } - - public String getAccessNotes() { - return AccessNotes; - } - - public String getPr_sum_notes() { - return pr_sum_notes; - } - - public String getPr_risk_notes() { - return pr_risk_notes; - } - - public String getType() { - return type; - } - - public byte[] getFinalReport() { - return finalReport; - } - - public String getCampaign() { - return campaign; - } - - public User getEngagementContact() { - return engagementContact; - } - - public User getRemediationContact() { - return remediationContact; - } - - public void setEngagementContact(User engagementContact) { - this.engagementContact = engagementContact; - } - - public void setRemediationContact(User remediationContact) { - this.remediationContact = remediationContact; - } - - public List getAssessors() { - return assessors; - } - - public void setAssessors(List assessors) { - this.assessors = assessors; - } - - public String getStatus() { - return status; - } - - public Integer getWorkflow() { - return workflow; - } - - public void setSummary(String summary) { - this.summary = summary; - } - - public void setRiskAnalysis(String riskAnalysis) { - this.riskAnalysis = riskAnalysis; - } - - public void setNotes(String notes) { - Notes = notes; - } - - public void setAccessNotes(String accessNotes) { - AccessNotes = accessNotes; - } - - public void setType(String type) { - this.type = type; - } - - public void setFinalReport(byte[] finalReport) { - this.finalReport = finalReport; - } - - public void setCampaign(String campaign) { - this.campaign = campaign; - } - - public void setPr_sum_notes(String pr_sum_notes) { - this.pr_sum_notes = pr_sum_notes; - } - - public void setPr_risk_notes(String pr_risk_notes) { - this.pr_risk_notes = pr_risk_notes; - } - - public void setStatus(String status) { - this.status = status; - } - - public void setWorkflow(Integer workflow) { - this.workflow = workflow; - } - - public void setCustomFields(List fields) { - this.customFields = fields; - } - - public List getCustomFields() { - return this.customFields; - } + private List checklists; } diff --git a/src/main/java/com/faction/elements/CheckList.java b/src/main/java/com/faction/elements/CheckList.java new file mode 100644 index 0000000..4244c3e --- /dev/null +++ b/src/main/java/com/faction/elements/CheckList.java @@ -0,0 +1,12 @@ +package com.faction.elements; + +import java.util.List; + +import lombok.Data; + +@Data +public class CheckList { + private String name; + private List checkListItems; + +} diff --git a/src/main/java/com/faction/elements/CheckListItem.java b/src/main/java/com/faction/elements/CheckListItem.java new file mode 100644 index 0000000..245aa40 --- /dev/null +++ b/src/main/java/com/faction/elements/CheckListItem.java @@ -0,0 +1,37 @@ +package com.faction.elements; + +import lombok.Data; + +@Data +public class CheckListItem { + + private String notes; + private String question; + private Answer answer; + + public static enum Answer { + Pass(3), Fail(2), NA(1), Incomplete(0); + + private final int value; + private Answer(int value) { + this.value = value; + } + + public int getValue() { + return value; + } + public static Answer getAnswer(int value){ + switch(value){ + case 0 : return Incomplete; + case 1 : return NA; + case 2 : return Fail; + case 3 : return Pass; + default: + return Incomplete; + } + } + + } + + +} diff --git a/src/main/java/com/faction/elements/Vulnerability.java b/src/main/java/com/faction/elements/Vulnerability.java index 269d0a8..3ec035f 100644 --- a/src/main/java/com/faction/elements/Vulnerability.java +++ b/src/main/java/com/faction/elements/Vulnerability.java @@ -28,6 +28,9 @@ public class Vulnerability{ private Date opened; private Date devClosed; private String tracking; + private String cvssScore; + private String cvssString; + private String section; private List customFields; @@ -126,6 +129,40 @@ public void setCustomFields( List fields) { public List getCustomFields(){ return this.customFields; } + + public String getCategory() { + return category; + } + + public void setCategory(String category) { + this.category = category; + } + + public String getCvssScore() { + return cvssScore; + } + + public void setCvssScore(String cvssScore) { + this.cvssScore = cvssScore; + } + + public String getCvssString() { + return cvssString; + } + + public void setCvssString(String cvssString) { + this.cvssString = cvssString; + } + + public String getSection() { + return section; + } + + public void setSection(String section) { + this.section = section; + } + + diff --git a/src/test/java/com/faction/unittests/ExtenderTestCase.java b/src/test/java/com/faction/unittests/ExtenderTestCase.java index d5c6df8..73dc6b3 100644 --- a/src/test/java/com/faction/unittests/ExtenderTestCase.java +++ b/src/test/java/com/faction/unittests/ExtenderTestCase.java @@ -15,6 +15,8 @@ import com.faction.elements.Assessment; import com.faction.elements.BaseExtension; +import com.faction.elements.CheckList; +import com.faction.elements.CheckListItem; import com.faction.elements.Vulnerability; import com.faction.elements.results.AssessmentManagerResult; import com.faction.elements.utils.Log; @@ -42,15 +44,37 @@ void test() { List vulns = new ArrayList<>(); vulns.add(vuln); + CheckList checklist = new CheckList(); + CheckListItem item1 = new CheckListItem(); + item1.setNotes("note1"); + item1.setQuestion("question1"); + item1.setAnswer(CheckListItem.Answer.Fail); + CheckListItem item2 = new CheckListItem(); + item2.setNotes("note2"); + item2.setQuestion("question2"); + item2.setAnswer(CheckListItem.Answer.Pass); + + checklist.setName("checklist1"); + checklist.setCheckListItems(new ArrayList<>()); + checklist.getCheckListItems().add(item1); + checklist.getCheckListItems().add(item2); + + asmt.setChecklists(new ArrayList<>()); + asmt.getChecklists().add(checklist); + + + + AssessmentManagerResult result = asmtMgr.assessmentChange(asmt, vulns, Operation.Create); assertTrue(result.getAssessment().getSummary().equals("This is a test")); - assertTrue(asmtMgr.getLogs().size() == 2); + assertTrue(asmtMgr.getLogs().size() == 3); List logs = asmtMgr.getLogs(); assertTrue(logs.stream().anyMatch( log -> log.getMessage().equals("Got Config1: Test Config 1"))); assertTrue(logs.stream().anyMatch( log -> log.getMessage().equals("Got Config2: Test Config 2"))); + assertTrue(logs.stream().anyMatch( log -> log.getMessage().equals("Got Checklist: checklist1"))); @@ -71,6 +95,8 @@ public AssessmentManagerResult assessmentChange(Assessment asmt, List