File size: 2,329 Bytes
b0bca3f
 
 
 
 
 
 
 
 
 
 
8f10eaa
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
---

title: 42CodeRunner Backend
emoji: 馃殌
colorFrom: blue
colorTo: indigo
sdk: docker
sdk_version: latest
app_file: app.py
pinned: false
---


# 42CodeRunner - Backend

Este es el backend para 42CodeRunner, un servicio que permite compilar y ejecutar c贸digo C de forma segura a trav茅s de una API REST.

## Requisitos

- Python 3.8+
- GCC (para compilar c贸digo C)
- Docker (opcional, para ejecutar en contenedor)

## Instalaci贸n

### Instalaci贸n local

```bash

# Clonar el repositorio

git clone https://github.com/yourusername/42CodeRunner.git

cd 42CodeRunner/backend



# Crear entorno virtual (opcional pero recomendado)

python -m venv venv



# Activar entorno virtual

# En Windows

venv\Scripts\activate

# En Linux/Mac

# source venv/bin/activate



# Instalar dependencias

pip install -r requirements.txt



# Ejecutar el servidor

python app.py

```

El servidor estar谩 disponible en http://localhost:5000

### Instalaci贸n con Docker

```bash

# Construir la imagen

docker build -t 42coderunner-backend .



# Ejecutar el contenedor

docker run -p 5000:5000 42coderunner-backend

```

## API

### Ejecutar c贸digo C

**Endpoint:** `POST /api/execute`

**Cuerpo de la solicitud:**

```json

{

  "code": "#include <stdio.h>\n\nint main() {\n    printf(\"Hello, World!\\n\");\n    return 0;\n}"

}

```

**Respuesta exitosa:**

```json

{

  "success": true,

  "output": "Hello, World!\n",

  "error": "",

  "execution_time": 0.023

}

```

**Respuesta con error:**

```json

{

  "success": false,

  "error": "main.c:3:5: error: expected ';' before 'printf'"

}

```

### Verificar estado del servicio

**Endpoint:** `GET /api/health`

**Respuesta:**

```json

{

  "status": "ok"

}

```

## Seguridad

El servicio implementa las siguientes medidas de seguridad:

1. L铆mite de tiempo de ejecuci贸n (5 segundos por defecto)
2. Ejecuci贸n en archivos temporales con nombres aleatorios
3. Limpieza autom谩tica de archivos temporales

## Despliegue en Hugging Face

Para desplegar este servicio en Hugging Face Spaces:

1. Crea un nuevo Space en Hugging Face
2. Selecciona Docker como tipo de espacio
3. Sube los archivos del backend (incluyendo el Dockerfile)
4. Configura el espacio para exponer el puerto 5000

## Licencia

MIT