| import subprocess | |
| import time | |
| import os | |
| from flask import Flask, jsonify | |
| app = Flask(__name__) | |
| def health_check(): | |
| return jsonify({"status": "3x-ui is running"}) | |
| def health(): | |
| # Check if 3x-ui process is alive | |
| result = subprocess.run(['pgrep', 'x-ui'], capture_output=True) | |
| if result.returncode == 0: | |
| return jsonify({"status": "healthy"}), 200 | |
| return jsonify({"status": "unhealthy"}), 503 | |
| if __name__ == '__main__': | |
| # Change port | |
| subprocess.run(['/usr/bin/x-ui', 'setting', '-port', '7860']) | |
| # Start 3x-ui in background | |
| subprocess.Popen(['/usr/bin/x-ui', 'start']) | |
| time.sleep(5) | |
| # Run Flask on the same port? No, it's occupied. | |
| # We'll run Flask on port 7860 and use it as a reverse proxy, or run on a different port. | |
| # Actually, we can run Flask on 7860 and forward requests to 3x-ui on a different port. | |
| # But 3x-ui is listening on 7860. This is conflicting. | |
| # Solution: Run 3x-ui on 8080, and Flask on 7860 and proxy. | |
| # Or run Flask on 7860 and 3x-ui on another port. Let's do Flask on 7860 and proxy. | |
| # But then we need to implement a proxy in Flask. | |
| # It's more complex. The start.sh approach is simpler. |