Clean up a few interface things, for humans
This commit is contained in:
		
							parent
							
								
									02667774f3
								
							
						
					
					
						commit
						e23cacfcbe
					
				| @ -5,4 +5,4 @@ export DISPLAY=:1337 | ||||
| cd /breach/Into* | ||||
| xvfb-run -n 1337  -s "-screen 0 1280x720x24" ./Breach & | ||||
| 
 | ||||
| /interface/flaskstuff.py | ||||
| /interface/main.py | ||||
|  | ||||
| @ -3,7 +3,7 @@ | ||||
| <head> | ||||
|     <meta charset="UTF-8"> | ||||
|     <meta name="viewport" content="width=device-width, initial-scale=1.0"> | ||||
|     <title>Flask Screenshot & Click</title> | ||||
|     <title>Into The Breach as a Service</title> | ||||
|     <style> | ||||
|         body { | ||||
|             font-family: Arial, sans-serif; | ||||
| @ -18,21 +18,7 @@ | ||||
|             color: green; | ||||
|         } | ||||
|     </style> | ||||
| </head> | ||||
| <body> | ||||
| 
 | ||||
|     <h1>Flask Screenshot & Click App</h1> | ||||
|     <p><strong>Take a Screenshot:</strong></p> | ||||
|     <button onclick="takeScreenshot()">Take Screenshot</button> | ||||
|     <div id="screenshot-div"> | ||||
|         <p><strong>Click on the Image to Trigger Click at X, Y:</strong></p> | ||||
|         <img id="screenshot" width='1280px' height='720px' style="display:none;" /> | ||||
|     </div> | ||||
| 
 | ||||
|     <div class="message" id="click-message"></div> | ||||
| 
 | ||||
|     <script> | ||||
|         // Function to take a screenshot by calling the Flask /screenshot endpoint | ||||
|         function takeScreenshot() { | ||||
|             fetch('/screenshot') | ||||
|                 .then(response => response.blob()) | ||||
| @ -47,27 +33,38 @@ | ||||
|                 }); | ||||
|         } | ||||
| 
 | ||||
|         // Function to simulate a click at the (x, y) coordinates of the image | ||||
|         const clickableImage = document.getElementById('screenshot'); | ||||
|         clickableImage.addEventListener('click', function(event) { | ||||
|         function handleClick(event) { | ||||
|             const x = event.pageX - this.offsetLeft; | ||||
|             const y = event.pageY - this.offsetTop; | ||||
| 
 | ||||
|             // Trigger the Flask /click/x/y endpoint using the x and y coordinates of the click | ||||
|             fetch(`/click/${x}/${y}`) | ||||
|                 .then(response => response.text()) | ||||
|                 .then(message => { | ||||
|                     document.getElementById('click-message').innerText = message; | ||||
|                 }) | ||||
|                 .catch(error => { | ||||
|                     console.error('Error triggering click:', error); | ||||
|                 }) | ||||
|                 .then(() => { | ||||
|                   takeScreenshot(); | ||||
|                 }) | ||||
|                 .catch(error => { | ||||
|                     console.error('Error triggering click:', error); | ||||
|                 }); | ||||
|         }); | ||||
|     </script> | ||||
|         } | ||||
| 
 | ||||
|         function init() { | ||||
|           const clickableImage = document.getElementById('screenshot'); | ||||
|           clickableImage.addEventListener('click', handleClick); | ||||
|           takeScreenshot(); | ||||
|         } | ||||
|     </script> | ||||
| </head> | ||||
| <body onload="init()"> | ||||
|     <button onclick="takeScreenshot()">Refresh Screenshot</button> | ||||
|     <div id="screenshot-div"> | ||||
|         <p><strong>Click on the Image to Trigger Click at X, Y:</strong></p> | ||||
|         <img id="screenshot" width='1280px' height='720px' style="display:none;" /> | ||||
|     </div> | ||||
| 
 | ||||
|     <div class="message" id="click-message"></div> | ||||
| </body> | ||||
| </html> | ||||
| 
 | ||||
| @ -7,41 +7,27 @@ from datetime import datetime | ||||
| 
 | ||||
| app = Flask(__name__) | ||||
| 
 | ||||
| # Folder to store the screenshots | ||||
| SCREENSHOT_DIR = "/tmp/screenshots" | ||||
| if not os.path.exists(SCREENSHOT_DIR): | ||||
|     os.makedirs(SCREENSHOT_DIR) | ||||
| 
 | ||||
| @app.route('/') | ||||
| def index(): | ||||
|     return ''' | ||||
|     <h1>Flask Screenshot & Click App</h1> | ||||
|     <p>Take a screenshot: <a href="/screenshot">/screenshot</a></p> | ||||
|     <p>Click at position (x, y): <a href="/click/100/100">/click/x/y</a></p> | ||||
|     ''' | ||||
|     return send_file('index.html', mimetype='text/html') | ||||
| 
 | ||||
| @app.route('/screenshot') | ||||
| def screenshot(): | ||||
|     # Generate a screenshot file name | ||||
|     timestamp = datetime.now().strftime('%Y%m%d_%H%M%S') | ||||
|     screenshot_path = os.path.join(SCREENSHOT_DIR, f'screenshot_{timestamp}.png') | ||||
| 
 | ||||
|     # Capture the screenshot using `scrot` | ||||
|     subprocess.run(['scrot', screenshot_path]) | ||||
| 
 | ||||
|     # Return the screenshot file as response | ||||
|     return send_file(screenshot_path, mimetype='image/png') | ||||
| 
 | ||||
| @app.route('/click/<int:x>/<int:y>') | ||||
| def click(x, y): | ||||
|     # Perform a click at the specified (x, y) position using `xdotool` | ||||
|     subprocess.run(['xdotool', 'mousemove', str(x), str(y), 'click', '1']) | ||||
| 
 | ||||
|     return f'Click performed at position ({x}, {y})' | ||||
| 
 | ||||
| @app.route('/htmlthing') | ||||
| def htmlstuff(): | ||||
|     return send_file('htmlthing.html', mimetype='text/html') | ||||
| 
 | ||||
| if __name__ == '__main__': | ||||
|     app.run(debug=True, host='0.0.0.0', port=5000) | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user