diff --git a/CHANGELOG.md b/CHANGELOG.md
index c8c409d..a5c2bac 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -5,8 +5,44 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+**Added** for new features.
+**Changed** for changes in existing functionality.
+**Deprecated** for soon-to-be removed features.
+**Removed** for now removed features.
+**Fixed** for any bug fixes.
+**Security** in case of vulnerabilities.
+
## [Unreleased]
+## [2.7.1] - 2023-12-03
+
+### Changed
+
+- Remove Interactive Agent Shell from README
+
+## [2.7.0] - 2023-11-15
+
+### Added
+
+- Add agent dropdown when Agent is a field in a form
+- Add auto-refresh on Agents / Agents Tasks page
+- Add auto-refresh on Plugins Tasks page
+
+### Changed
+
+- Migrate from Vuex to Pinia
+
+### Fixed
+
+- Fix form dropdowns getting out of sync with reality by refreshing the store on load
+- Making edits to an Agent on the 'View' tab now properly updates the parent Agent page
+- Updating an agent's name no longer refreshes the page on submit
+- After updating a stager, the download/clipboard of the stager now reflects the changes without requiring the page to be reloaded
+
+### Removed
+
+- Remove unused AgentCommandViewer component
+
## [2.6.1] - 2023-09-25
- Make notification bell menu scrollable with a max height
@@ -307,7 +343,11 @@ Including but not limited to:
- Initial Release
-[Unreleased]: https://github.com/BC-SECURITY/Starkiller-Sponsors/compare/v2.6.1...HEAD
+[Unreleased]: https://github.com/BC-SECURITY/Starkiller-Sponsors/compare/v2.7.1...HEAD
+
+[2.7.1]: https://github.com/BC-SECURITY/Starkiller-Sponsors/compare/v2.7.0...v2.7.1
+
+[2.7.0]: https://github.com/BC-SECURITY/Starkiller-Sponsors/compare/v2.6.1...v2.7.0
[2.6.1]: https://github.com/BC-SECURITY/Starkiller-Sponsors/compare/v2.6.0...v2.6.1
diff --git a/README.md b/README.md
index 74ece7d..0cfcf00 100644
--- a/README.md
+++ b/README.md
@@ -52,10 +52,6 @@ At the moment, the extra Starkiller sponsorship features include:
-## Interactive agent shell
-
-
-
## Process Browser
diff --git a/package.json b/package.json
index 5e45dab..02da505 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "starkiller",
- "version": "2.6.1",
+ "version": "2.7.1",
"private": true,
"scripts": {
"dev": "vite",
@@ -18,6 +18,8 @@
"axios": "^0.24.0",
"lodash.debounce": "^4.0.8",
"moment": "^2.29.1",
+ "pinia": "^2.1.7",
+ "pinia-plugin-persistedstate": "^3.2.0",
"portal-vue": "^2.1.7",
"qs": "^6.10.3",
"semver": "^7.3.5",
@@ -28,9 +30,7 @@
"vue": "2.7",
"vue-beautiful-chat": "^2.5.0",
"vue-router": "^3.5.1",
- "vuetify": "^2.6.0",
- "vuex": "^3.6.2",
- "vuex-persistedstate": "^3.0.1"
+ "vuetify": "^2.6.0"
},
"devDependencies": {
"@rushstack/eslint-patch": "^1.2.0",
@@ -42,6 +42,6 @@
"prettier": "^3.0.2",
"sass": "~1.32",
"unplugin-vue-components": "^0.22.12",
- "vite": "^3"
+ "vite": "^4"
}
}
diff --git a/src/App.vue b/src/App.vue
index 6db6310..56b17aa 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -1,6 +1,6 @@
-
+
import Vue from "vue";
import semver from "semver";
-import { mapGetters, mapState } from "vuex";
+import { mapState } from "pinia";
import SideNav from "@/components/SideNav.vue";
import Confirm from "@/components/Confirm.vue";
import SocketNotifications from "@/components/SocketNotifications.vue";
import StarkillerSnackbar from "@/components/StarkillerSnackbar.vue";
import NotificationBell from "@/components/NotificationBell.vue";
+import { useApplicationStore } from "@/stores/application-module";
export default {
name: "App",
@@ -88,14 +89,12 @@ export default {
StarkillerSnackbar,
},
computed: {
- ...mapGetters({
- isLoggedIn: "application/isLoggedIn",
- isDarkMode: "application/isDarkMode",
- }),
- ...mapState({
- empireVersion: (state) => state.application.empireVersion,
- connectionError: (state) => state.application.connectionError,
- }),
+ ...mapState(useApplicationStore, [
+ "isLoggedIn",
+ "darkMode",
+ "empireVersion",
+ "connectionError",
+ ]),
isLoginPage() {
return this.$route.name === "home";
},
@@ -114,7 +113,7 @@ export default {
}
},
},
- isDarkMode: {
+ darkMode: {
immediate: true,
handler(val) {
if (val === true) {
diff --git a/src/api/axios-instance.js b/src/api/axios-instance.js
index ff0b8ca..49002ec 100644
--- a/src/api/axios-instance.js
+++ b/src/api/axios-instance.js
@@ -1,7 +1,5 @@
import axios from "axios";
-
-// I don't like this cyclic dependency, but struggling to find a better way atm.
-import store from "@/store/index";
+import { useApplicationStore } from "@/stores/application-module";
// eslint-disable-next-line import/no-mutable-exports
export let axiosInstance = null;
@@ -20,12 +18,13 @@ export function setInstance(url, token) {
(response) => response,
(err) => {
if (!err?.response) {
- store.dispatch("application/connectionError");
+ useApplicationStore().connectionError += 1;
}
if (err?.response?.status === 401 || err?.response?.status === 403) {
- store.dispatch("application/logout");
+ useApplicationStore().logout();
}
+
return Promise.reject(err);
},
);
diff --git a/src/api/bypass-api.js b/src/api/bypass-api.js
index 8370f12..f49f66d 100644
--- a/src/api/bypass-api.js
+++ b/src/api/bypass-api.js
@@ -3,7 +3,6 @@ import { axiosInstance as axios, handleError } from "@/api/axios-instance";
/**
* Returns a full list of bypasses.
*/
-// eslint-disable-next-line import/prefer-default-export
export function getBypasses() {
return axios
.get("/bypasses")
diff --git a/src/components/Chat.vue b/src/components/Chat.vue
index 04e54da..a8c449a 100644
--- a/src/components/Chat.vue
+++ b/src/components/Chat.vue
@@ -43,7 +43,8 @@
diff --git a/src/components/Login.vue b/src/components/Login.vue
index c0c8f33..3ead211 100644
--- a/src/components/Login.vue
+++ b/src/components/Login.vue
@@ -21,7 +21,7 @@
diff --git a/src/components/agents/AgentCommandViewer.vue b/src/components/agents/AgentCommandViewer.vue
deleted file mode 100644
index dc2674d..0000000
--- a/src/components/agents/AgentCommandViewer.vue
+++ /dev/null
@@ -1,111 +0,0 @@
-
-
-
-
-
-
-
diff --git a/src/components/agents/AgentCommandViewerEntry.vue b/src/components/agents/AgentCommandViewerEntry.vue
deleted file mode 100644
index bfe9b9f..0000000
--- a/src/components/agents/AgentCommandViewerEntry.vue
+++ /dev/null
@@ -1,79 +0,0 @@
-
-
-
- ({{ result.username }}) {{
- result.input
- }}
-
- {{ result.ogOutput }}
-
-
-
-
-
-
diff --git a/src/components/agents/AgentExecuteModule.vue b/src/components/agents/AgentExecuteModule.vue
index 416e93a..a2679a9 100644
--- a/src/components/agents/AgentExecuteModule.vue
+++ b/src/components/agents/AgentExecuteModule.vue
@@ -108,10 +108,10 @@