mirror of
				https://github.com/NetSPI/PowerHuntShares.git
				synced 2025-10-31 11:53:29 +01:00 
			
		
		
		
	Update PowerHuntShares.psm1
Fixed sharegraph layout on page load.
This commit is contained in:
		| @@ -4,7 +4,7 @@ | ||||
| #-------------------------------------- | ||||
| # Author: Scott Sutherland, 2024 NetSPI | ||||
| # License: 3-clause BSD | ||||
| # Version: v1.110 | ||||
| # Version: v1.111 | ||||
| # References: This script includes custom code and code taken and modified from the open source projects PowerView, Invoke-Ping, and Invoke-Parrell.  | ||||
| function Invoke-HuntSMBShares | ||||
| {     | ||||
| @@ -8448,9 +8448,67 @@ document.querySelector('#nodemenu a:nth-child(2)').addEventListener('click', fun | ||||
|         // START CYTOSCAPE EVENT LISTENERS | ||||
|         // ################################# | ||||
|         StartCytoListener(); | ||||
|  | ||||
|         // ################################# | ||||
|         // START CYTOSCAPE INITIAL LAYOUT | ||||
|         // #################################		 | ||||
|         // Flag to track if the layout has been applied | ||||
|         let layoutApplied = false; | ||||
|  | ||||
|         // Set layout on sharegraph menu selection | ||||
|         document.getElementById('btnShareGraph').addEventListener('click', function () { | ||||
|  | ||||
|             // Select nodes and edges | ||||
|             var selectedNodes = cy.nodes().not('.faded'); | ||||
|             var selectedEdges = selectedNodes.connectedEdges().filter(function (edge) { | ||||
|                 return edge.target().same(selectedNodes) || edge.source().same(selectedNodes); | ||||
|             }); | ||||
|  | ||||
|             // Only apply the layout if it's the first time the button is clicked | ||||
|             if (!layoutApplied) { | ||||
|                 // Get the selected layout from the dropdown (you can update this as needed) | ||||
|                 var selectedLayout = 'breadthfirst'; | ||||
|  | ||||
|                 // Apply the selected layout to the selected nodes and edges | ||||
|                 cy.elements().layout({ | ||||
|                     name: selectedLayout, | ||||
|                     fit: false, | ||||
|                     animate: true, | ||||
|                     eles: selectedNodes.union(selectedEdges), // Apply the layout to selected nodes and edges | ||||
|                     ready: function() { | ||||
|                         // This function is called when the layout is ready but not yet applied | ||||
|                     }, | ||||
|                     stop: function() { | ||||
|                         // This function is called after the layout has been completely applied | ||||
|                  | ||||
|                         // Set the initial zoom level to 0.4 (40% of the original size) | ||||
|                         cy.zoom(0.4); | ||||
|  | ||||
|                         // Re-center the graph after zooming | ||||
|                         cy.center(selectedNodes); | ||||
|  | ||||
|                         // Optional: Ensure that the centered graph fits well within the viewport | ||||
|                         cy.fit(selectedNodes, 50); | ||||
|  | ||||
|                         // Mark that the layout has been applied | ||||
|                         layoutApplied = true; | ||||
|                     } | ||||
|                 }).run(); | ||||
| 		 | ||||
| 		cy.layout({ name: 'breadthfirst' }).run(); | ||||
| 		cy.fit(); // This ensures the graph is centered within the container | ||||
|                 // If the layout has already been applied, just re-center and zoom the graph | ||||
|                 cy.zoom(0.4); | ||||
|                 cy.center(selectedNodes); | ||||
|                 cy.fit(selectedNodes, 50);		 | ||||
|             } else { | ||||
|             } | ||||
|      | ||||
|             // Zoom-in functionality | ||||
|             document.getElementById('zoom-in').addEventListener('click', function() { | ||||
|                 const zoomLevel = cy.zoom(); | ||||
|                 cy.zoom(zoomLevel * 1.2); // Increase the zoom level by 20% | ||||
|                 cy.center(selectedNodes); // Re-center after zooming in | ||||
|             }); | ||||
|         }); | ||||
|     </script> | ||||
| </div> | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user