Deepseak on Android generates addons with bash script from root dir of xf - greate idea...

Yes have installed deepseak and now i can create all in one sh adfon installer script (on Termux, Android) which generates any addons with structure and database migrations and setup and zip file also or modify existing addon within xenforo installation...
 
Upvote 0
I try to implement addon which makes modification in xenforo self - like: api extender which can make use of any end points:
1. Data (json)
2. Html
3. Js
4. Css
5. Messages and so on...
Or Data + Html with statics
It's all routed through xenforo
Yes now maybe try to generate simple front end
Without any restrictions and difficulties with seepseak get me answered in sh 1 file bash script addon generator - well done it's great 👍
 
Like termux on Android is very greate solution for web hosting - just install: php and use built-in server - don't need apache - have tried xenforo, nextcloud and wordpress on android it's all works perfect with lot addons and also database mariadb or sqlite and cronie for task jobs also nano (editor) and ncdu which shows folders size in termux on Android with daily backups to device and .bashrc which launch your services on Android automatically...
 
Automatically addon creator with bash script:

Bash:
#!/bin/bash

# XenForo Diagnostic & Fix Script v2
# С исправлением ошибки checkRequirements()

echo "========================================"
echo "XenForo Diagnostic & Fix Script v2"
echo "========================================"

# Colors for output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color

# Function to print status
print_status() {
    if [ $1 -eq 0 ]; then
        echo -e "${GREEN}✓ $2${NC}"
    else
        echo -e "${RED}✗ $2${NC}"
    fi
}

# Function to check if we're in XF root
check_xf_root() {
    if [ -f "src/XF.php" ] && [ -d "src/addons" ]; then
        echo -e "${GREEN}✓ В папке XenForo${NC}"
        return 0
    else
        echo -e "${RED}✗ Не в корне XenForo! Запустите в корневой папке XF${NC}"
        exit 1
    fi
}

# Function to fix test addon
fix_test_addon() {
    echo -e "\n${YELLOW}Исправление тестового аддона...${NC}"
    
    TEST_ADDON_DIR="src/addons/TestInstallCheck"
    
    if [ -d "$TEST_ADDON_DIR" ]; then
        # Create fixed Setup.php with checkRequirements method
        cat > "$TEST_ADDON_DIR/Setup.php" << 'EOF'
<?php
namespace TestInstallCheck;

class Setup
{
    public function install(\XF\AddOn\AbstractSetup $setup)
    {
        \XF::logError('Test addon installed successfully - installation works!');
        return $setup;
    }
    
    public function uninstall(\XF\AddOn\AbstractSetup $setup)
    {
        \XF::logError('Test addon uninstalled');
        return $setup;
    }
    
    public function upgrade(\XF\AddOn\AbstractSetup $setup)
    {
        return $setup;
    }
    
    public function checkRequirements(&$errors = [], &$warnings = [])
    {
        // No requirements for test addon
        return true;
    }
}
EOF
        print_status 0 "Тестовый аддон исправлен (добавлен checkRequirements)"
        
        # Also update addon.json to be compatible
        cat > "$TEST_ADDON_DIR/addon.json" << 'EOF'
{
    "title": "Test Install Check",
    "description": "Temporary addon to check installation functionality",
    "version_id": 1000010,
    "version_string": "1.0.0",
    "author": "Diagnostic Script",
    "require": {
        "XF": [2010010, "XenForo 2.1.0"]
    }
}
EOF
        print_status 0 "addon.json обновлен"
        
    else
        echo -e "${YELLOW}Тестовый аддон не существует. Создать новый? (y/n)${NC}"
        read -r create_new
        if [ "$create_new" = "y" ] || [ "$create_new" = "Y" ]; then
            create_test_addon
        fi
    fi
}

# Function to create test addon for installation check
create_test_addon() {
    echo -e "\n${YELLOW}Создание тестового аддона для проверки...${NC}"
    
    TEST_ADDON_DIR="src/addons/TestInstallCheck"
    
    if [ ! -d "$TEST_ADDON_DIR" ]; then
        mkdir -p "$TEST_ADDON_DIR"
        
        # Create addon.json
        cat > "$TEST_ADDON_DIR/addon.json" << 'EOF'
{
    "title": "Test Install Check",
    "description": "Temporary addon to check installation functionality",
    "version_id": 1000010,
    "version_string": "1.0.0",
    "author": "Diagnostic Script",
    "require": {
        "XF": [2010010, "XenForo 2.1.0"]
    }
}
EOF

        # Create Setup.php with all required methods
        cat > "$TEST_ADDON_DIR/Setup.php" << 'EOF'
<?php
namespace TestInstallCheck;

class Setup
{
    public function install(\XF\AddOn\AbstractSetup $setup)
    {
        \XF::logError('Test addon installed successfully - installation works!');
        return $setup;
    }
    
    public function uninstall(\XF\AddOn\AbstractSetup $setup)
    {
        \XF::logError('Test addon uninstalled');
        return $setup;
    }
    
    public function upgrade(\XF\AddOn\AbstractSetup $setup)
    {
        return $setup;
    }
    
    public function checkRequirements(&$errors = [], &$warnings = [])
    {
        // No requirements for test addon
        return true;
    }
}
EOF
        print_status 0 "Тестовый аддон создан: $TEST_ADDON_DIR"
        echo -e "${YELLOW}Попробуйте установить его через админ-панель${NC}"
        echo -e "${YELLOW}После проверки удалите папку: $TEST_ADDON_DIR${NC}"
    else
        print_status 1 "Тестовый аддон уже существует"
        fix_test_addon
    fi
}

# Function to check problematic addons
check_problematic_addons() {
    echo -e "\n${YELLOW}Поиск проблемных аддонов...${NC}"
    
    for addon_dir in src/addons/*/; do
        if [ -d "$addon_dir" ]; then
            addon_name=$(basename "$addon_dir")
            setup_file="$addon_dir/Setup.php"
            
            if [ -f "$setup_file" ]; then
                # Check if Setup.php has checkRequirements method
                if ! grep -q "checkRequirements" "$setup_file"; then
                    echo -e "${RED}✗ $addon_name: отсутствует checkRequirements()${NC}"
                    
                    # Offer to fix
                    echo -e "${YELLOW}Исправить этот аддон? (y/n)${NC}"
                    read -r fix_addon
                    if [ "$fix_addon" = "y" ] || [ "$fix_addon" = "Y" ]; then
                        backup_file="$setup_file.backup.$(date +%s)"
                        cp "$setup_file" "$backup_file"
                        echo -e "${YELLOW}Создан бэкап: $backup_file${NC}"
                        
                        # Add checkRequirements method
                        cat >> "$setup_file" << 'EOF'

    public function checkRequirements(&$errors = [], &$warnings = [])
    {
        return true;
    }
}
EOF
                        # Fix the previous closing bracket
                        sed -i 's/^}$//g' "$setup_file"
                        print_status 0 "$addon_name исправлен"
                    fi
                else
                    echo -e "${GREEN}✓ $addon_name: checkRequirements() присутствует${NC}"
                fi
            fi
        fi
    done
}

# Function to check file permissions
check_permissions() {
    echo -e "\n${YELLOW}Проверка прав доступа...${NC}"
    
    dirs=("data" "internal_data" "src/addons")
    for dir in "${dirs[@]}"; do
        if [ -d "$dir" ]; then
            perms=$(stat -c "%a" "$dir" 2>/dev/null || stat -f "%A" "$dir")
            if [ "$perms" -ge "755" ] || [ "$perms" -eq "777" ]; then
                print_status 0 "Права $dir: $perms"
            else
                print_status 1 "Права $dir: $perms (должны быть 755/777)"
                chmod 755 "$dir" 2>/dev/null && print_status 0 "Права исправлены" || print_status 1 "Не удалось исправить права"
            fi
        fi
    done
}

# Function to clear caches
clear_caches() {
    echo -e "\n${YELLOW}Очистка кешей...${NC}"
    
    cache_dirs=("internal_data/cache" "data/cache")
    for cache_dir in "${cache_dirs[@]}"; do
        if [ -d "$cache_dir" ]; then
            rm -rf "$cache_dir"/* 2>/dev/null
            print_status 0 "Очищен $cache_dir"
        fi
    done
}

# Main execution
main() {
    echo "Запуск диагностики XenForo..."
    echo "Текущая папка: $(pwd)"
    echo ""
    
    check_xf_root
    check_permissions
    clear_caches
    
    echo -e "\n${YELLOW}Выберите действие:${NC}"
    echo "1) Исправить тестовый аддон"
    echo "2) Создать новый тестовый аддон"
    echo "3) Проверить все аддоны на проблемы"
    echo "4) Выйти"
    
    read -r choice
    case $choice in
        1)
            fix_test_addon
            ;;
        2)
            create_test_addon
            ;;
        3)
            check_problematic_addons
            ;;
        4)
            exit 0
            ;;
        *)
            echo "Неверный выбор"
            ;;
    esac
    
    echo -e "\n${GREEN}Готово!${NC}"
    echo -e "${YELLOW}Теперь попробуйте установить тестовый аддон через админ-панель${NC}"
}

# Run main function
main
 
Back
Top Bottom