[FIXED] Solucionados problemas de conectividad con la API de Forgejo
- Cambiada URL de API de HTTPS a HTTP por defecto - Implementada detección automática del protocolo correcto (HTTP/HTTPS) - Añadido soporte para certificados autofirmados con la opción -k - Mejor diagnóstico de conectividad con pruebas de puerto 80 y 443 - Información detallada sobre problemas de conexión y respuestas de API - Salida de depuración enriquecida para facilitar la resolución de problemas 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
parent
ea581b9e8c
commit
ebdb28bb93
2 changed files with 68 additions and 17 deletions
|
@ -195,11 +195,27 @@ case $RESULT in
|
|||
if ping -c 1 -W 2 "$FORGEJO_HOST" > /dev/null 2>&1; then
|
||||
echo " ✓ Conectividad básica OK"
|
||||
echo " ℹ Comprobando servicio en puerto 443..."
|
||||
# Verificar puerto HTTPS abierto
|
||||
# Verificar puertos web abiertos (HTTP y HTTPS)
|
||||
if nc -z -w 2 "$FORGEJO_HOST" 80 2>/dev/null; then
|
||||
echo " ✓ Puerto 80 (HTTP) accesible"
|
||||
echo " ℹ Intentando conexión HTTP..."
|
||||
CURL_OUTPUT=$(mktemp)
|
||||
curl -s -v -o "$CURL_OUTPUT" --connect-timeout 5 "http://$FORGEJO_HOST/api/v1/version" 2>&1 | grep -i "HTTP\|ssl\|TLS\|error"
|
||||
cat "$CURL_OUTPUT" 2>/dev/null | head -10
|
||||
rm -f "$CURL_OUTPUT" 2>/dev/null
|
||||
fi
|
||||
|
||||
if nc -z -w 2 "$FORGEJO_HOST" 443 2>/dev/null; then
|
||||
echo " ✓ Puerto 443 accesible"
|
||||
echo " ✓ Puerto 443 (HTTPS) accesible"
|
||||
echo " ℹ Intentando conexión HTTPS segura..."
|
||||
CURL_OUTPUT=$(mktemp)
|
||||
curl -s -v -o "$CURL_OUTPUT" --connect-timeout 5 "https://$FORGEJO_HOST/api/v1/version" 2>&1 | grep -i "HTTP\|ssl\|TLS\|error"
|
||||
echo " ℹ Intentando conexión HTTPS ignorando certificado..."
|
||||
curl -s -v -k -o "$CURL_OUTPUT" --connect-timeout 5 "https://$FORGEJO_HOST/api/v1/version" 2>&1 | grep -i "HTTP\|ssl\|TLS\|error"
|
||||
cat "$CURL_OUTPUT" 2>/dev/null | head -10
|
||||
rm -f "$CURL_OUTPUT" 2>/dev/null
|
||||
else
|
||||
echo " ✗ Puerto 443 no accesible"
|
||||
echo " ✗ Puerto 443 (HTTPS) no accesible"
|
||||
fi
|
||||
else
|
||||
echo " ✗ No se puede conectar con el servidor $FORGEJO_HOST"
|
||||
|
|
|
@ -41,7 +41,7 @@ function devslib_test() {
|
|||
}
|
||||
|
||||
# Configuración global para servicios Git
|
||||
FORGEJO_API_URL="https://git.rosero.one/api/v1"
|
||||
FORGEJO_API_URL="http://git.rosero.one/api/v1" # Cambiado a HTTP en lugar de HTTPS
|
||||
FORGEJO_CONFIG_FILE="$HOME/.developer/forgejo.cfg"
|
||||
|
||||
# Set gpg environment
|
||||
|
@ -347,26 +347,61 @@ function forgejo_create_project() {
|
|||
|
||||
# Comprobar si podemos acceder a la API - Con timeout y manejo de errores de conexión
|
||||
echo "DEBUG: Verificando acceso a la API en: $FORGEJO_API_URL/version" >&2
|
||||
local API_STATUS=$(curl -s -o /dev/null -w "%{http_code}" --connect-timeout 5 --max-time 10 "$FORGEJO_API_URL/version" 2>/dev/null || echo "000")
|
||||
if [ "$API_STATUS" != "200" ]; then
|
||||
# Intentar extraer el host base para diagnóstico
|
||||
local BASE_URL=$(echo "$FORGEJO_API_URL" | sed -E 's|https?://([^/]+)/.*|\1|')
|
||||
echo "ERROR: No se puede acceder a la API de Forgejo en $BASE_URL. Código: $API_STATUS" >&2
|
||||
|
||||
# Verificar conectividad básica al host
|
||||
if ping -c 1 -W 2 "$BASE_URL" >/dev/null 2>&1; then
|
||||
echo "DEBUG: Conectividad básica OK, pero el servicio API no responde correctamente" >&2
|
||||
echo "{\"error\":\"Servidor accesible pero la API no responde. Código: $API_STATUS\"}" > "$HOME/.developer/${PROJECT_NAME}.error"
|
||||
else
|
||||
echo "DEBUG: No hay conectividad básica con el servidor" >&2
|
||||
# Verificar primero el host base
|
||||
local BASE_URL=$(echo "$FORGEJO_API_URL" | sed -E 's|https?://([^/]+)/.*|\1|')
|
||||
|
||||
if ! ping -c 1 -W 2 "$BASE_URL" >/dev/null 2>&1; then
|
||||
echo "ERROR: No se puede alcanzar el servidor $BASE_URL" >&2
|
||||
echo "{\"error\":\"No se puede conectar con el servidor $BASE_URL. Verifique su conexión y la URL.\"}" > "$HOME/.developer/${PROJECT_NAME}.error"
|
||||
return 13
|
||||
fi
|
||||
|
||||
echo "DEBUG: Verificando puertos alternativos..." >&2
|
||||
|
||||
# Prueba conexión HTTP puerto 80 primero
|
||||
if nc -z -w 2 "$BASE_URL" 80 2>/dev/null; then
|
||||
echo "DEBUG: Puerto 80 (HTTP) accesible" >&2
|
||||
|
||||
# Intenta versión HTTP explícitamente
|
||||
local HTTP_API_URL=$(echo "$FORGEJO_API_URL" | sed 's|^https://|http://|')
|
||||
local API_RESPONSE=$(curl -s -v --connect-timeout 5 --max-time 10 "$HTTP_API_URL/version" 2>/tmp/curl_verbose.log || echo "")
|
||||
|
||||
if [ -n "$API_RESPONSE" ] && echo "$API_RESPONSE" | grep -q "version"; then
|
||||
echo "DEBUG: API accesible vía HTTP (puerto 80)" >&2
|
||||
# Reemplazar URL por HTTP para el resto de la función
|
||||
FORGEJO_API_URL="$HTTP_API_URL"
|
||||
else
|
||||
echo "ERROR: Servidor accesible pero la API no responde correctamente por HTTP" >&2
|
||||
echo "{\"error\":\"Servidor accesible en puerto 80, pero la API no responde correctamente. Verifique la configuración del servidor.\"}" > "$HOME/.developer/${PROJECT_NAME}.error"
|
||||
cat /tmp/curl_verbose.log >> "$HOME/.developer/${PROJECT_NAME}.error" 2>/dev/null
|
||||
return 13
|
||||
fi
|
||||
elif nc -z -w 2 "$BASE_URL" 443 2>/dev/null; then
|
||||
echo "DEBUG: Puerto 443 (HTTPS) accesible, pero posibles problemas con certificado o API" >&2
|
||||
|
||||
# Intenta con HTTPS pero ignorando errores de certificado
|
||||
local API_RESPONSE=$(curl -s -v -k --connect-timeout 5 --max-time 10 "$FORGEJO_API_URL/version" 2>/tmp/curl_verbose.log || echo "")
|
||||
|
||||
if [ -n "$API_RESPONSE" ] && echo "$API_RESPONSE" | grep -q "version"; then
|
||||
echo "DEBUG: API accesible vía HTTPS inseguro (ignorando certificado)" >&2
|
||||
# Continuar pero usando -k para ignorar certificados
|
||||
export FORGEJO_CURL_OPTS="-k"
|
||||
else
|
||||
echo "ERROR: Servidor HTTPS accesible pero la API no responde correctamente" >&2
|
||||
echo "{\"error\":\"Servidor accesible en puerto 443, pero la API no responde. Posibles problemas de certificado o configuración.\"}" > "$HOME/.developer/${PROJECT_NAME}.error"
|
||||
cat /tmp/curl_verbose.log >> "$HOME/.developer/${PROJECT_NAME}.error" 2>/dev/null
|
||||
return 13
|
||||
fi
|
||||
else
|
||||
echo "ERROR: No se puede acceder a los puertos HTTP (80) ni HTTPS (443) en $BASE_URL" >&2
|
||||
echo "{\"error\":\"Servidor accesible por ping pero no responde en los puertos web (80/443).\"}" > "$HOME/.developer/${PROJECT_NAME}.error"
|
||||
return 13
|
||||
fi
|
||||
|
||||
# Verificar token con timeout y manejo de errores
|
||||
echo "DEBUG: Verificando token con API en: $FORGEJO_API_URL/user" >&2
|
||||
local TOKEN_CHECK=$(curl -s -o /dev/null -w "%{http_code}" --connect-timeout 5 --max-time 10 -H "Authorization: token $FORGEJO_TOKEN" "$FORGEJO_API_URL/user" 2>/dev/null || echo "000")
|
||||
local TOKEN_CHECK=$(curl ${FORGEJO_CURL_OPTS:-} -s -o /dev/null -w "%{http_code}" --connect-timeout 5 --max-time 10 -H "Authorization: token $FORGEJO_TOKEN" "$FORGEJO_API_URL/user" 2>/dev/null || echo "000")
|
||||
if [ "$TOKEN_CHECK" != "200" ]; then
|
||||
if [ "$TOKEN_CHECK" == "401" ]; then
|
||||
echo "ERROR: Token inválido o sin permisos suficientes. Código: 401" >&2
|
||||
|
@ -383,7 +418,7 @@ function forgejo_create_project() {
|
|||
|
||||
# Llamar a la API de Forgejo para crear el repositorio
|
||||
echo "DEBUG: Enviando solicitud de creación de repositorio..." >&2
|
||||
local API_RESPONSE=$(curl -s -X POST --connect-timeout 10 --max-time 30 "$FORGEJO_API_URL/user/repos" \
|
||||
local API_RESPONSE=$(curl ${FORGEJO_CURL_OPTS:-} -s -X POST --connect-timeout 10 --max-time 30 "$FORGEJO_API_URL/user/repos" \
|
||||
-H "Authorization: token $FORGEJO_TOKEN" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d "$API_DATA" 2>/tmp/curl_error.log || echo '{"error":"Falló la comunicación con el servidor"}')
|
||||
|
|
Loading…
Reference in a new issue