You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
54 lines
2.0 KiB
54 lines
2.0 KiB
from http.server import BaseHTTPRequestHandler, HTTPServer
|
|
import subprocess
|
|
import urllib.parse
|
|
|
|
# Configurar el puerto del servidor
|
|
PORT = 8788
|
|
|
|
class RequestHandler(BaseHTTPRequestHandler):
|
|
def do_GET(self):
|
|
# Parsear los parámetros de la URL
|
|
parsed_url = urllib.parse.urlparse(self.path)
|
|
query_params = urllib.parse.parse_qs(parsed_url.query)
|
|
|
|
# Obtener el parámetro recording_id
|
|
recording_id = query_params.get('recording_id', [None])[0]
|
|
|
|
if recording_id:
|
|
# Ejecutar el script con el parámetro recording_id
|
|
try:
|
|
result = subprocess.run(
|
|
["sudo", "python3", "/home/resume_end_call.py", recording_id],
|
|
capture_output=True,
|
|
text=True
|
|
)
|
|
# Concatenar stdout y stderr
|
|
output = f"STDOUT:\n{result.stdout}\n\nSTDERR:\n{result.stderr}"
|
|
# Responder con el resultado
|
|
self.send_response(200)
|
|
self.send_header("Content-type", "text/plain")
|
|
self.end_headers()
|
|
self.wfile.write(result.stdout.encode())
|
|
except Exception as e:
|
|
# Manejar errores de ejecución
|
|
self.send_response(500)
|
|
self.send_header("Content-type", "text/plain")
|
|
self.end_headers()
|
|
self.wfile.write(f"Error executing script: {str(e)}".encode())
|
|
else:
|
|
# Manejar el caso de parámetro faltante
|
|
self.send_response(400)
|
|
self.send_header("Content-type", "text/plain")
|
|
self.end_headers()
|
|
self.wfile.write(b"Missing 'recording_id' parameter")
|
|
|
|
# Configurar y ejecutar el servidor
|
|
def run(server_class=HTTPServer, handler_class=RequestHandler):
|
|
server_address = ("", PORT)
|
|
httpd = server_class(server_address, handler_class)
|
|
print(f"Server running on port {PORT}...")
|
|
httpd.serve_forever()
|
|
|
|
if __name__ == "__main__":
|
|
run()
|