Linux spg1.cloudpowerdns.com 5.14.0-611.34.1.el9_7.x86_64 #1 SMP PREEMPT_DYNAMIC Wed Feb 18 05:51:10 EST 2026 x86_64
LiteSpeed
Server IP : 176.9.63.151 & Your IP : 216.73.217.60
Domains :
Cant Read [ /etc/named.conf ]
User : fastear1
Terminal
Auto Root
Create File
Create Folder
Localroot Suggester
Backdoor Destroyer
Readme
/
home /
fastear1 /
.trash /
public /
Delete
Unzip
Name
Size
Permission
Date
Action
data
[ DIR ]
drwxr-xr-x
2025-09-15 23:22
uploads
[ DIR ]
drwxr-xr-x
2025-09-15 18:00
COMPLETE_SETUP_GUIDE.md
5.02
KB
-rw-r--r--
2025-09-15 23:45
DATABASE_SETUP.md
2.84
KB
-rw-r--r--
2025-09-15 23:41
FIX_ACCESS_DENIED.md
2.36
KB
-rw-r--r--
2025-09-16 00:07
MIGRATION_SUMMARY.md
4.28
KB
-rw-r--r--
2025-09-15 23:45
NEXT_STEPS.md
2.18
KB
-rw-r--r--
2025-09-15 23:45
PHPMYADMIN_SETUP_GUIDE.md
3.61
KB
-rw-r--r--
2025-09-15 23:43
QUICK_FIX_INSTRUCTIONS.md
1.99
KB
-rw-r--r--
2025-09-16 00:09
admin-dashboard.html
25.26
KB
-rw-r--r--
2025-09-15 17:29
admin-login.html
5.25
KB
-rw-r--r--
2025-09-15 02:24
admin-profile.html
24.21
KB
-rw-r--r--
2025-09-15 17:43
analytics.html
25.08
KB
-rw-r--r--
2025-09-15 16:13
check_mysql.php
1.33
KB
-rw-r--r--
2025-09-15 23:44
cleanup_duplicates.php
1.46
KB
-rw-r--r--
2025-09-15 23:08
complete_workflow_test.php
4.46
KB
-rw-r--r--
2025-09-15 23:22
create_test_user.php
1.15
KB
-rw-r--r--
2025-09-15 23:20
database.php
4.29
KB
-rw-r--r--
2025-09-15 23:43
database_mysql.php
9.98
KB
-rw-r--r--
2025-09-16 00:08
db_config.php
587
B
-rw-r--r--
2025-09-16 00:07
demo-enhanced.html
45.46
KB
-rw-r--r--
2025-09-15 01:43
deposit.html
10.83
KB
-rw-r--r--
2025-09-15 17:08
error_log
825
B
-rw-r--r--
2025-10-04 15:48
fastearnads.sql
6.12
KB
-rw-r--r--
2025-09-15 23:39
fastearnads_tables_only.sql
5.96
KB
-rw-r--r--
2025-09-16 00:07
final_test.php
4.73
KB
-rw-r--r--
2025-09-15 23:29
import_database.bat
1.03
KB
-rw-r--r--
2025-09-15 23:45
index.php
50.11
KB
-rw-r--r--
2025-09-15 23:40
manage-ads.html
25.39
KB
-rw-r--r--
2025-09-15 16:12
manage-users.html
42.4
KB
-rw-r--r--
2025-09-15 16:54
manage-withdraws.html
49.19
KB
-rw-r--r--
2025-09-15 15:54
migrate_data.php
1.6
KB
-rw-r--r--
2025-09-15 23:40
simple-login.html
1.19
KB
-rw-r--r--
2025-09-15 02:08
start_mysql.bat
948
B
-rw-r--r--
2025-09-15 23:45
test_admin_approval.php
3.55
KB
-rw-r--r--
2025-09-15 23:21
test_connection_with_user.php
1.9
KB
-rw-r--r--
2025-09-15 19:19
test_db_connection.php
1.54
KB
-rw-r--r--
2025-09-15 23:41
test_deposit_fix.php
2.88
KB
-rw-r--r--
2025-09-15 23:09
test_frontend.html
3.49
KB
-rw-r--r--
2025-09-15 23:22
test_user_activity_history.php
2.96
KB
-rw-r--r--
2025-09-15 23:21
user-ads.html
18.36
KB
-rw-r--r--
2025-09-15 14:39
user-dashboard.html
47.77
KB
-rw-r--r--
2025-09-15 23:26
user-login.html
5.78
KB
-rw-r--r--
2025-09-15 02:27
user-profile.html
33.93
KB
-rw-r--r--
2025-09-15 18:33
user-register.html
7.56
KB
-rw-r--r--
2025-09-15 02:27
user-transactions.html
31.83
KB
-rw-r--r--
2025-09-15 22:58
user-withdraw.html
29.48
KB
-rw-r--r--
2025-09-15 21:52
user-withdrawals.html
29.17
KB
-rw-r--r--
2025-09-15 21:51
waiting-approval.html
5.46
KB
-rw-r--r--
2025-09-15 03:23
Save
Rename
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Watch Ads & Earn - FastEarnAds</title> <script src="https://cdn.tailwindcss.com"></script> <script defer src="https://unpkg.com/alpinejs@3.x.x/dist/cdn.min.js"></script> </head> <body class="bg-gray-50" x-data="adsData()" x-init="loadData()"> <!-- Header --> <header class="bg-white shadow-sm border-b border-gray-200"> <div class="max-w-4xl mx-auto px-4 py-4"> <div class="flex items-center justify-between"> <div class="flex items-center space-x-3"> <div class="w-10 h-10 bg-gradient-to-r from-green-600 to-blue-600 rounded-lg flex items-center justify-center"> <svg class="w-6 h-6 text-white" fill="none" viewBox="0 0 24 24" stroke="currentColor"> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15 10l4.553-2.276A1 1 0 0121 8.618v6.764a1 1 0 01-1.447.894L15 14M5 18h8a2 2 0 002-2V8a2 2 0 00-2-2H5a2 2 0 00-2 2v8a2 2 0 002 2z"/> </svg> </div> <div> <h1 class="text-xl font-bold text-gray-900">Watch Ads & Earn</h1> <p class="text-sm text-gray-600">View ads and earn money instantly</p> </div> </div> <div class="flex items-center space-x-4"> <a href="/dashboard" class="text-gray-600 hover:text-gray-800 text-sm font-medium"> ← Dashboard </a> <form action="/user/logout" method="POST" class="inline"> <button type="submit" class="text-red-600 hover:text-red-700 text-sm font-medium"> Logout </button> </form> </div> </div> </div> </header> <!-- Main Content --> <div class="max-w-4xl mx-auto px-4 py-8"> <!-- Stats Cards --> <div class="grid grid-cols-1 md:grid-cols-3 gap-6 mb-8"> <!-- Total Earned --> <div class="bg-gradient-to-r from-green-500 to-green-600 rounded-xl p-6 text-white"> <div class="flex items-center justify-between"> <div> <p class="text-green-100 text-sm">Total Earned</p> <p class="text-2xl font-bold" x-text="'$' + totalEarned">$0.00</p> </div> <div class="w-12 h-12 bg-white bg-opacity-20 rounded-lg flex items-center justify-center"> <svg class="w-6 h-6 text-white" fill="none" viewBox="0 0 24 24" stroke="currentColor"> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 8c-1.657 0-3 .895-3 2s1.343 2 3 2 3 .895 3 2-1.343 2-3 2m0-8c1.11 0 2.08.402 2.599 1M12 8V7m0 1v8m0 0v1m0-1c-1.11 0-2.08-.402-2.599-1"/> </svg> </div> </div> </div> <!-- Ads Watched --> <div class="bg-gradient-to-r from-blue-500 to-blue-600 rounded-xl p-6 text-white"> <div class="flex items-center justify-between"> <div> <p class="text-blue-100 text-sm">Ads Watched</p> <p class="text-2xl font-bold" x-text="adsWatched">0</p> </div> <div class="w-12 h-12 bg-white bg-opacity-20 rounded-lg flex items-center justify-center"> <svg class="w-6 h-6 text-white" fill="none" viewBox="0 0 24 24" stroke="currentColor"> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15 10l4.553-2.276A1 1 0 0121 8.618v6.764a1 1 0 01-1.447.894L15 14M5 18h8a2 2 0 002-2V8a2 2 0 00-2-2H5a2 2 0 00-2 2v8a2 2 0 002 2z"/> </svg> </div> </div> </div> <!-- Available Ads --> <div class="bg-gradient-to-r from-purple-500 to-purple-600 rounded-xl p-6 text-white"> <div class="flex items-center justify-between"> <div> <p class="text-purple-100 text-sm">Available Ads</p> <p class="text-2xl font-bold" x-text="availableAds.length">0</p> </div> <div class="w-12 h-12 bg-white bg-opacity-20 rounded-lg flex items-center justify-center"> <svg class="w-6 h-6 text-white" fill="none" viewBox="0 0 24 24" stroke="currentColor"> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 11H5m14 0a2 2 0 012 2v6a2 2 0 01-2 2H5a2 2 0 01-2-2v-6a2 2 0 012-2m14 0V9a2 2 0 00-2-2M5 11V9a2 2 0 012-2m0 0V5a2 2 0 012-2h6a2 2 0 012 2v2M7 7h10"/> </svg> </div> </div> </div> </div> <!-- Available Ads --> <div class="bg-white rounded-xl shadow-sm border mb-8"> <div class="p-6 border-b border-gray-200"> <h3 class="text-lg font-semibold text-gray-900">Available Ads</h3> <p class="text-sm text-gray-600 mt-1">Click on ads to start earning money</p> </div> <div class="p-6"> <!-- Loading State --> <div x-show="loading" class="text-center py-8"> <div class="animate-spin rounded-full h-8 w-8 border-b-2 border-green-600 mx-auto"></div> <p class="text-gray-600 mt-2">Loading ads...</p> </div> <!-- Ads Grid --> <div x-show="!loading && availableAds.length > 0" class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6"> <template x-for="ad in availableAds" :key="ad.id"> <div class="border border-gray-200 rounded-lg p-4 hover:border-green-300 hover:shadow-md transition-all"> <div class="flex items-center justify-between mb-3"> <span class="text-xs bg-green-100 text-green-800 px-2 py-1 rounded-full" x-text="ad.category || 'General'"></span> <span class="text-lg font-bold text-green-600" x-text="'$' + parseFloat(ad.reward || 0.05).toFixed(2)"></span> </div> <h4 class="font-semibold text-gray-900 mb-2" x-text="ad.title || 'Sponsored Ad'"></h4> <p class="text-sm text-gray-600 mb-3" x-text="ad.description || 'Watch this ad to earn rewards'"></p> <div class="flex items-center justify-between mb-4"> <span class="text-xs text-gray-500"> <svg class="w-4 h-4 inline mr-1" fill="none" viewBox="0 0 24 24" stroke="currentColor"> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"/> </svg> <span x-text="(ad.duration || 30) + ' seconds'"></span> </span> <span class="text-xs text-gray-500" x-text="(ad.views || 0) + ' views'"></span> </div> <button @click="watchAd(ad)" class="w-full bg-green-600 text-white py-2 px-4 rounded-lg hover:bg-green-700 transition-colors"> <svg class="w-4 h-4 inline mr-2" fill="none" viewBox="0 0 24 24" stroke="currentColor"> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M14.828 14.828a4 4 0 01-5.656 0M9 10h1m4 0h1m-6 4h8m2-10a9 9 0 11-18 0 9 9 0 0118 0z"/> </svg> Watch Ad </button> </div> </template> </div> <!-- No Ads Available --> <div x-show="!loading && availableAds.length === 0" class="text-center py-12 text-gray-500"> <div class="w-16 h-16 bg-gray-100 rounded-full flex items-center justify-center mx-auto mb-4"> <svg class="w-8 h-8 text-gray-400" fill="none" viewBox="0 0 24 24" stroke="currentColor"> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15 10l4.553-2.276A1 1 0 0121 8.618v6.764a1 1 0 01-1.447.894L15 14M5 18h8a2 2 0 002-2V8a2 2 0 00-2-2H5a2 2 0 00-2 2v8a2 2 0 002 2z"/> </svg> </div> <p class="text-lg font-medium">No ads available</p> <p class="text-sm mt-1">Check back later for new earning opportunities</p> </div> </div> </div> <!-- Earnings History --> <div class="bg-white rounded-xl shadow-sm border"> <div class="p-6 border-b border-gray-200"> <h3 class="text-lg font-semibold text-gray-900">Earnings History</h3> <p class="text-sm text-gray-600 mt-1">Your recent ad watching activities and earnings</p> </div> <div class="p-6"> <div class="space-y-4"> <template x-for="activity in earningsHistory" :key="activity.id"> <div class="flex items-center justify-between p-4 border border-gray-200 rounded-lg hover:bg-gray-50"> <div class="flex items-center space-x-3"> <div class="w-10 h-10 bg-green-100 text-green-600 rounded-full flex items-center justify-center"> <svg class="w-5 h-5" fill="none" viewBox="0 0 24 24" stroke="currentColor"> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15 10l4.553-2.276A1 1 0 0121 8.618v6.764a1 1 0 01-1.447.894L15 14M5 18h8a2 2 0 002-2V8a2 2 0 00-2-2H5a2 2 0 00-2 2v8a2 2 0 002 2z"/> </svg> </div> <div> <p class="font-medium text-gray-900" x-text="activity.description || 'Watched ad and earned reward'"></p> <p class="text-sm text-gray-600" x-text="formatDate(activity.created_at)"></p> </div> </div> <div class="text-right"> <p class="font-bold text-green-600" x-text="'+$' + parseFloat(activity.reward || 0).toFixed(2)"></p> <p class="text-xs text-gray-500">Completed</p> </div> </div> </template> <div x-show="earningsHistory.length === 0" class="text-center py-12 text-gray-500"> <div class="w-16 h-16 bg-gray-100 rounded-full flex items-center justify-center mx-auto mb-4"> <svg class="w-8 h-8 text-gray-400" fill="none" viewBox="0 0 24 24" stroke="currentColor"> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5H7a2 2 0 00-2 2v10a2 2 0 002 2h8a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"/> </svg> </div> <p class="text-lg font-medium">No earnings yet</p> <p class="text-sm mt-1">Start watching ads to see your earnings here</p> </div> </div> </div> </div> </div> <script> function adsData() { return { loading: true, totalEarned: 0.00, adsWatched: 0, availableAds: [], earningsHistory: [], async loadData() { try { // Load user stats const statsResponse = await fetch('/user/stats'); if (statsResponse.ok) { const statsData = await statsResponse.json(); this.totalEarned = parseFloat(statsData.totalEarned || 0).toFixed(2); this.adsWatched = statsData.adsWatched || 0; } // Load available ads const adsResponse = await fetch('/user/available-ads'); if (adsResponse.ok) { this.availableAds = await adsResponse.json(); } // Load earnings history (filter only ad watching activities) const activityResponse = await fetch('/user/activity-history'); if (activityResponse.ok) { const activityData = await activityResponse.json(); this.earningsHistory = activityData.filter(activity => activity.type === 'ad_watch') || []; } this.loading = false; } catch (error) { console.error('Error loading ads data:', error); this.loading = false; } }, async watchAd(ad) { // Confirm user wants to watch the ad if (!confirm(`Watch "${ad.title}" for $${parseFloat(ad.reward || 0.05).toFixed(2)}?\nDuration: ${ad.duration || 30} seconds`)) { return; } try { // Open ad in new window const adWindow = window.open(ad.url, '_blank', 'width=800,height=600'); // Simulate ad watching timer let timeLeft = ad.duration || 30; const timer = setInterval(() => { console.log(`Ad timer: ${timeLeft} seconds remaining`); timeLeft--; if (timeLeft <= 0) { clearInterval(timer); this.completeAdWatch(ad); } }, 1000); // Show countdown in current window alert(`Ad opened in new window! Watch for ${ad.duration || 30} seconds to earn $${parseFloat(ad.reward || 0.05).toFixed(2)}`); } catch (error) { console.error('Error watching ad:', error); alert('Error opening ad. Please try again.'); } }, async completeAdWatch(ad) { try { // Send completion to server const response = await fetch('/user/watch-ad', { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ ad_id: ad.id, reward: ad.reward || 0.05, duration: ad.duration || 30 }) }); if (response.ok) { const result = await response.json(); // Update local stats this.totalEarned = parseFloat((parseFloat(this.totalEarned) + (ad.reward || 0.05)).toFixed(2)); this.adsWatched += 1; // Add to earnings history this.earningsHistory.unshift({ id: Date.now(), description: `Watched "${ad.title || 'Ad'}" and earned reward`, created_at: new Date().toISOString(), reward: ad.reward || 0.05, type: 'ad_watch' }); alert(`🎉 Congratulations! You earned $${parseFloat(ad.reward || 0.05).toFixed(2)}!`); } else { alert('Error recording ad completion. Please try again.'); } } catch (error) { console.error('Error completing ad watch:', error); alert('Network error. Please check your connection.'); } }, formatDate(dateString) { const date = new Date(dateString); const now = new Date(); const diffMs = now - date; const diffMins = Math.floor(diffMs / 60000); const diffHours = Math.floor(diffMins / 60); const diffDays = Math.floor(diffHours / 24); if (diffMins < 1) return 'Just now'; if (diffMins < 60) return `${diffMins} minute${diffMins > 1 ? 's' : ''} ago`; if (diffHours < 24) return `${diffHours} hour${diffHours > 1 ? 's' : ''} ago`; if (diffDays < 7) return `${diffDays} day${diffDays > 1 ? 's' : ''} ago`; return date.toLocaleDateString(); } } } </script> </body> </html>