more websocket work

This commit is contained in:
wh1te909
2021-04-02 22:55:16 +00:00
parent 9471e8f1fd
commit 7236fd59f8
7 changed files with 14 additions and 75 deletions

View File

@@ -843,7 +843,7 @@ class TestAgentViewsNew(TacticalTestCase):
self.authenticate()
self.setup_coresettings()
def test_agent_counts(self):
""" def test_agent_counts(self):
url = "/agents/agent_counts/"
# create some data
@@ -870,7 +870,7 @@ class TestAgentViewsNew(TacticalTestCase):
self.assertEqual(r.status_code, 200)
self.assertEqual(r.data, data) # type: ignore
self.check_not_authenticated("post", url)
self.check_not_authenticated("post", url) """
def test_agent_maintenance_mode(self):
url = "/agents/maintenance/"

View File

@@ -27,7 +27,6 @@ urlpatterns = [
path("<int:pk>/notes/", views.GetAddNotes.as_view()),
path("<int:pk>/note/", views.GetEditDeleteNote.as_view()),
path("bulk/", views.bulk),
path("agent_counts/", views.agent_counts),
path("maintenance/", views.agent_maintenance),
path("<int:pk>/wmi/", views.WMI.as_view()),
]

View File

@@ -671,49 +671,6 @@ def bulk(request):
return notify_error("Something went wrong")
@api_view(["POST"])
def agent_counts(request):
server_offline_count = len(
[
agent
for agent in Agent.objects.filter(monitoring_type="server").only(
"pk",
"last_seen",
"overdue_time",
"offline_time",
)
if not agent.status == "online"
]
)
workstation_offline_count = len(
[
agent
for agent in Agent.objects.filter(monitoring_type="workstation").only(
"pk",
"last_seen",
"overdue_time",
"offline_time",
)
if not agent.status == "online"
]
)
return Response(
{
"total_server_count": Agent.objects.filter(
monitoring_type="server"
).count(),
"total_server_offline_count": server_offline_count,
"total_workstation_count": Agent.objects.filter(
monitoring_type="workstation"
).count(),
"total_workstation_offline_count": workstation_offline_count,
}
)
@api_view(["POST"])
def agent_maintenance(request):
if request.data["type"] == "Client":

View File

@@ -9,7 +9,7 @@ from agents.models import Agent
from accounts.models import User
class NetTop(AsyncWebsocketConsumer):
class DashInfo(AsyncWebsocketConsumer):
async def connect(self):
self.user = self.scope["user"]
@@ -19,12 +19,12 @@ class NetTop(AsyncWebsocketConsumer):
await self.accept()
self.connected = True
self.net = asyncio.create_task(self.send_net_top())
self.dash_info = asyncio.create_task(self.send_dash_info())
async def disconnect(self, close_code):
try:
self.net.cancel()
self.dash_info.cancel()
except:
pass
@@ -82,7 +82,7 @@ class NetTop(AsyncWebsocketConsumer):
}
return json.dumps(ret)
async def send_net_top(self):
async def send_dash_info(self):
while self.connected:
c = await self.get_dashboard_info()
await self.send(c)

View File

@@ -32,5 +32,5 @@ if hasattr(settings, "ADMIN_ENABLED") and settings.ADMIN_ENABLED:
urlpatterns += (path(settings.ADMIN_URL, admin.site.urls),)
ws_urlpatterns = [
path("ws/nettop/", consumers.NetTop.as_asgi()), # type: ignore
path("ws/dashinfo/", consumers.DashInfo.as_asgi()), # type: ignore
]

View File

@@ -154,9 +154,6 @@ export default function () {
toggleMaintenanceMode(context, data) {
return axios.post("/agents/maintenance/", data)
},
/* getAgentCounts(context, data = {}) {
return axios.post("/agents/agent_counts/", data)
}, */
getDashInfo(context) {
return axios.get("/core/dashinfo/");
},

View File

@@ -540,7 +540,7 @@ export default {
methods: {
setupWS() {
console.log("Starting websocket");
this.ws = new WebSocket(`ws://${this.wsUrl}/ws/nettop/?access_token=${this.token}`);
this.ws = new WebSocket(`ws://${this.wsUrl}/ws/dashinfo/?access_token=${this.token}`);
this.ws.onopen = e => {
console.log("Connected to ws");
};
@@ -550,9 +550,6 @@ export default {
this.$q.dark.set(this.darkMode);
this.currentTRMMVersion = data.trmm_version;
this.serverCount = data.total_server_count;
this.$store.commit("SET_AGENT_DBLCLICK_ACTION", data.dbl_click_action);
this.$store.commit("SET_DEFAULT_AGENT_TBL_TAB", data.default_agent_tbl_tab);
this.$store.commit("SET_CLIENT_TREE_SORT", data.client_tree_sort);
this.serverOfflineCount = data.total_server_offline_count;
this.workstationCount = data.total_workstation_count;
this.workstationOfflineCount = data.total_workstation_offline_count;
@@ -562,7 +559,7 @@ export default {
if (e.code !== 1000) {
setTimeout(() => {
this.setupWS();
}, 5 * 1000);
}, 2 * 1000);
}
};
this.ws.onerror = err => {
@@ -577,7 +574,6 @@ export default {
refreshEntireSite() {
this.$store.dispatch("loadTree");
this.getDashInfo(false);
//this.getAgentCounts();
if (this.allClientsActive) {
this.loadAllClients();
@@ -709,30 +705,21 @@ export default {
livePoll() {
this.poll = setInterval(() => {
this.$store.dispatch("checkVer");
//this.getAgentCounts();
this.getDashInfo(false);
}, 60 * 5 * 1000);
},
setSplitter(val) {
this.$store.commit("SET_SPLITTER", val);
},
/* getAgentCounts(selected) {
this.$store.dispatch("getAgentCounts").then(r => {
this.serverCount = r.data.total_server_count;
this.serverOfflineCount = r.data.total_server_offline_count;
this.workstationCount = r.data.total_workstation_count;
this.workstationOfflineCount = r.data.total_workstation_offline_count;
});
}, */
getDashInfo(edited = true) {
this.$store.dispatch("getDashInfo").then(r => {
/* if (edited) {
if (edited) {
this.$store.commit("SET_DEFAULT_AGENT_TBL_TAB", r.data.default_agent_tbl_tab);
this.$store.commit("SET_CLIENT_TREE_SORT", r.data.client_tree_sort);
} */
//this.darkMode = r.data.dark_mode;
//this.$q.dark.set(this.darkMode);
//this.$store.commit("SET_AGENT_DBLCLICK_ACTION", r.data.dbl_click_action);
}
this.darkMode = r.data.dark_mode;
this.$q.dark.set(this.darkMode);
this.$store.commit("SET_AGENT_DBLCLICK_ACTION", r.data.dbl_click_action);
this.$store.commit("setShowCommunityScripts", r.data.show_community_scripts);
});
},
@@ -865,7 +852,6 @@ export default {
this.getDashInfo();
this.$store.dispatch("getUpdatedSites");
this.$store.dispatch("checkVer");
//this.getAgentCounts();
this.getTree();
},
mounted() {