═══════════════════════════════════════════════════════════════════ 🔥 DIDON PANEL - Installation Guide ═══════════════════════════════════════════════════════════════════ 📋 PREREQUISITES: ───────────────────────────────────────────────────────────────── ✅ PHP 7.4+ with PDO MySQL ✅ MySQL 5.7+ or MariaDB 10.3+ ✅ Apache or Nginx ✅ mod_rewrite enabled (Apache) 📦 STEP 1: DATABASE SETUP ───────────────────────────────────────────────────────────────── # Login to MySQL mysql -u root -p # Run the setup script source /var/www/html/setup_database.sql # Or manually: mysql -u root -p < /var/www/html/setup_database.sql # Verify mysql -u root -p -e "USE didon_panel; SHOW TABLES;" 📂 STEP 2: FILE STRUCTURE ───────────────────────────────────────────────────────────────── Create this structure: /var/www/html/ ├── PanelAndroid/ │ ├── API.php → Symlink to NEW_PANEL_API.php │ ├── media/ │ │ ├── Flag/ → Country flags │ │ ├── Intro/ → Intro images/videos │ │ └── Main/ → Main banners │ └── logs/ → API logs (chmod 777) ├── user/ │ └── API.php → Symlink to NEW_PANEL_API.php └── NEW_PANEL_API.php → Main API file # Execute: mkdir -p /var/www/html/PanelAndroid/media/{Flag,Intro,Main} mkdir -p /var/www/html/PanelAndroid/logs mkdir -p /var/www/html/user ln -s /var/www/html/NEW_PANEL_API.php /var/www/html/PanelAndroid/API.php ln -s /var/www/html/NEW_PANEL_API.php /var/www/html/user/API.php chmod 777 /var/www/html/PanelAndroid/logs 🔧 STEP 3: CONFIGURE API ───────────────────────────────────────────────────────────────── Edit NEW_PANEL_API.php: // Database configuration $db_host = 'localhost'; // Your MySQL host $db_name = 'didon_panel'; // Database name $db_user = 'root'; // MySQL username $db_pass = 'your_password'; // MySQL password 🎨 STEP 4: UPLOAD MEDIA ───────────────────────────────────────────────────────────────── Upload files to: - /var/www/html/PanelAndroid/media/Flag/ → usa.png, uk.png, etc. - /var/www/html/PanelAndroid/media/Intro/ → intro1.jpg, intro2.mp4 - /var/www/html/PanelAndroid/media/Main/ → banner1.jpg, banner2.jpg 🧪 STEP 5: TEST THE API ───────────────────────────────────────────────────────────────── # Test Method 5 (Configuration) curl -X POST http://YOUR_SERVER/PanelAndroid/API.php?methode=5 \ -H "Content-Type: application/json" \ -d '{"str1":"","str2":"","str3":"","str4":"","str5":"","str6":""}' # Expected response: { "str0": "API.php?methode=", "str1": "http://YOUR_SERVER", ... } # Test Method 2 (Login) - Use code from database curl -X POST http://YOUR_SERVER/PanelAndroid/API.php?methode=2 \ -H "Content-Type: application/json" \ -d '{"code":"123456","android_id":"test123","macE":"","macW":"0"}' # Expected success: { "id": 1, "userName": "TestUser", "code": "123456", ... } # Test Method 1 (Initial Data) curl -X POST http://YOUR_SERVER/PanelAndroid/API.php?methode=1 \ -H "Content-Type: application/json" \ -d '{"code":"123456","android_id":"test123","macE":"","macW":"0"}' # Expected: { "rad": [...], "bou": [...], "intro": [...], "main": [...], "cat": [...], "date": "25-11-19 12:34:56" } 📱 STEP 6: MODIFY APK (OPTIONAL) ───────────────────────────────────────────────────────────────── To point app to your server: # 1. Decompile APK apktool d DIDON.apk -o didon_decoded # 2. Find and replace URLs grep -r "chattibatti.netmos.ovh" didon_decoded/ grep -r "pro.netmos.ovh" didon_decoded/ # Replace with your server URL in smali files # 3. Recompile apktool b didon_decoded -o DIDON_modified.apk # 4. Sign keytool -genkey -v -keystore my-key.keystore -alias didon \ -keyalg RSA -keysize 2048 -validity 10000 jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 \ -keystore my-key.keystore DIDON_modified.apk didon 🔐 STEP 7: ADD USERS ───────────────────────────────────────────────────────────────── # Via MySQL: mysql -u root -p didon_panel INSERT INTO users (username, code, expiry_date, status) VALUES ('Customer1', 'CODE123', DATE_ADD(CURDATE(), INTERVAL 1 YEAR), 'active'), ('Customer2', 'CODE456', DATE_ADD(CURDATE(), INTERVAL 6 MONTH), 'active'); # Verify: SELECT * FROM users WHERE status = 'active'; 📊 STEP 8: POPULATE CONTENT ───────────────────────────────────────────────────────────────── # Add categories INSERT INTO categories (name, name_ar, type, display_order) VALUES ('Sports', 'رياضة', 'live', 1), ('News', 'أخبار', 'live', 2), ('Movies', 'أفلام', 'vod', 3); # Add channels INSERT INTO channels (name, logo, stream_url, category_id, type) VALUES ('Sport 1', 'http://yourserver/logos/sport1.png', 'http://stream.example.com/sport1.m3u8', 1, 'live'), ('News 24', 'http://yourserver/logos/news.png', 'http://stream.example.com/news.m3u8', 2, 'live'); 🔍 STEP 9: MONITOR LOGS ───────────────────────────────────────────────────────────────── # View API logs tail -f /var/www/html/PanelAndroid/logs/api_$(date +%Y-%m-%d).log # View login attempts mysql -u root -p -e " USE didon_panel; SELECT * FROM login_logs ORDER BY login_time DESC LIMIT 20; " 🚀 STEP 10: GO LIVE ───────────────────────────────────────────────────────────────── 1. ✅ Database configured 2. ✅ API tested 3. ✅ Users added 4. ✅ Content populated 5. ✅ Media uploaded 6. ✅ APK modified (optional) 7. ✅ Logs monitoring Your panel is now ready! Test with DIDON app: - Open app - Enter activation code: 123456 - Should login successfully ═══════════════════════════════════════════════════════════════════ 🎯 QUICK REFERENCE ═══════════════════════════════════════════════════════════════════ API Endpoints: Method 1: Get initial data (categories, intro, etc.) Method 2: User login Method 5: Get server configuration Method 10: Get channels by category URLs: Panel API: http://YOUR_SERVER/PanelAndroid/API.php?methode=X User API: http://YOUR_SERVER/user/API.php?methode=X Test Credentials: Code: 123456 User: TestUser ═══════════════════════════════════════════════════════════════════ 📞 TROUBLESHOOTING ═══════════════════════════════════════════════════════════════════ ❌ "Database connection failed" → Check database credentials in NEW_PANEL_API.php → Verify MySQL is running: service mysql status ❌ "Invalid methode" → Check URL: ?methode=X (lowercase) → Verify API.php is accessible ❌ Login returns id=0 → Check activation code exists in database → Verify code is active and not expired → Check logs table for failed attempts ❌ Empty arrays in method 1 → Populate database with categories/channels → Check is_active = TRUE in tables ═══════════════════════════════════════════════════════════════════ ✅ INSTALLATION COMPLETE! ═══════════════════════════════════════════════════════════════════