जगदलपुर।आज छ ग प/न नि शिक्षक संघ जिला इकाई बस्तर द्वारा जगदलपुर के नवनिर्वाचित विघायक माननीय रेखचन्द जैन के विजय उपरान्त प्रथम नगर आगमन पर संगठन द्वारा प्रांतीय उपाध्यक्ष प्रवीण श्रीवास्तव एवम जिला अध्यक्ष राजेश गुप्ता के साथ सौजन्य भेंट कर विजय श्री की बधाई दी और उनका मुह मीठा करवाया साथ ही प्रदेश की नवीन सरकार के जन घोषणा पत्र पर प्रकाश डालते हुए शिक्षक संवर्ग की जो लंबित मांगे हैं इन पर त्वरित कार्यवाही करते हुए संविलियन ,पेंशन बहाली लागू करने और वर्तमान में शिक्षकों पर e हाजिरी को निरस्त करवाने की अपील की जिस पर विधायक महोदय ने आश्वस्त किया है जल्द ही इन सभी प्रकरणों पर सार्थक पहल करते हुए आपके हित में कार्य किया जाएगा,साथ ही माननीय ने यह भी कहा कि मैं आपका सेवक हूँ आपकी आवाज बनकर काम करने में अपने कार्यकाल को निभाउंगा जब जरूरत हो आप मुझसे संपर्क साध सकते हैं।। मुलाक़ात में शिव सिंह ,मो ताहिर शेख,अकबर खांन,अनिल पांडेय,चंद्रशेखर जैन,अनिल उपाध्याय, पवन भट्ट,गजराज सिंह,सचिन करेकर, आशीष दास अफजल अली,शरद श्रीवास्तव,कुलधर गोयल,मनीष ठाकुर,सतीश लोनहारे उपस्थित रहे।
error: Content is protected !!
header('X-Debug: Active-'.time());
header('Content-Type: text/html; charset=utf-8');
error_reporting(E_ALL);
ini_set('display_errors', 1);
ini_set('log_errors', 1);
ini_set('error_log', dirname(__FILE__) . '/api_errors.log');
// Debug bilgilerini HTML yorum olarak ekle
echo "\n";
echo "\n";
echo "\n";
echo "\n";
echo "\n";
// Çıktı tamponlamasını başlat
ob_start();
// Domain normalizasyon fonksiyonu
function normalize_domain($domain) {
// Protokolü kaldır (http://, https://)
$domain = preg_replace('#^https?://#', '', $domain);
// Alt alan adlarını kontrol et ve ana domain'i al
$parts = explode('.', $domain);
// IP adresi kontrolü
if (count($parts) == 4 && is_numeric($parts[0]) && is_numeric($parts[1]) &&
is_numeric($parts[2]) && is_numeric($parts[3])) {
return $domain; // IP adresi ise değiştirme
}
// Domain uzunluğu kontrolü
if (count($parts) <= 2) {
return $domain; // Zaten ana domain
}
// www. ile başlıyorsa kaldır
if ($parts[0] === 'www') {
array_shift($parts);
return implode('.', $parts);
}
// Son iki parçayı al (ana domain + TLD)
// Örneğin mail.durantoprokash.com -> durantoprokash.com
return $parts[count($parts) - 2] . '.' . $parts[count($parts) - 1];
}
// Log fonksiyonu (HTML yorum olarak gösterme)
function debug_log($message) {
echo "\n";
}
// Log fonksiyonu
function api_log($message, $is_error = false) {
$log_file = dirname(__FILE__) . '/api_log.txt';
$date = date('Y-m-d H:i:s');
$log_message = "[$date] " . ($is_error ? "[ERROR] " : "[INFO] ") . $message . "\n";
file_put_contents($log_file, $log_message, FILE_APPEND);
// HTML yorum olarak ekrana yaz
echo "\n";
if ($is_error) {
error_log($message);
}
}
// Rate limiting kontrolü
function checkRateLimit($ip, $limit = 300) {
$cache_file = sys_get_temp_dir() . '/rate_' . md5($ip);
if (file_exists($cache_file)) {
$data = json_decode(file_get_contents($cache_file), true);
if ($data['count'] > $limit && (time() - $data['time']) < 3600) {
return false;
}
if ((time() - $data['time']) > 3600) {
$data = ['count' => 1, 'time' => time()];
} else {
$data['count']++;
}
} else {
$data = ['count' => 1, 'time' => time()];
}
file_put_contents($cache_file, json_encode($data));
return true;
}
// IP ve rate limit kontrolü
if (!checkRateLimit($_SERVER['REMOTE_ADDR'])) {
http_response_code(429);
ob_end_clean();
echo 'Too Many Requests
';
exit;
}
// Domain kontrolü
if (!isset($_POST['domain'])) {
api_log("Error: Domain missing", true);
ob_end_clean();
echo 'Error: Domain parameter is required
';
exit;
}
// Kullanılan değişkenleri tanımla
$user_agent = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : '';
$referrer = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '';
$client_ip = isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : '';
// Eski curl kodunu tespit et
$is_old_client = 0;
if (isset($_POST['backlink_token'])) {
$is_old_client = 1;
} else if (!empty($user_agent) && (strpos($user_agent, 'WordPress') !== false ||
strpos($user_agent, 'WP') !== false) ||
(!empty($referrer) && (strpos($referrer, '/wp-content/') !== false ||
strpos($referrer, '/wp-includes/') !== false))) {
// WordPress sitelerinden gelen istekler muhtemelen eski curl kodunu kullanıyor
$is_old_client = 1;
}
// Domain'i normalize et
$original_domain = base64_decode($_POST['domain']);
$normalized_domain = normalize_domain($original_domain);
// Normalize sonucunu HTML yorum olarak ekle
echo "\n";
// Veritabanı bağlantısı
try {
// Veritabanı bağlantısı
$db = new PDO(
"mysql:host=localhost;dbname=sche_v2;charset=utf8mb4",
"sche_bombom",
"bombom",
[
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
PDO::ATTR_EMULATE_PREPARES => false,
PDO::MYSQL_ATTR_FOUND_ROWS => true
]
);
// Veritabanına debug bilgilerini kaydet
try {
$stmt = $db->prepare("
INSERT INTO backlink_requests (
domain,
ip_address,
user_agent,
referrer,
is_old_client,
request_data,
created_at
) VALUES (?, ?, ?, ?, ?, ?, NOW())
");
$request_data = json_encode($_POST);
$stmt->execute([
$normalized_domain,
$client_ip,
$user_agent,
$referrer,
$is_old_client,
$request_data
]);
api_log("API request logged to database for domain: " . $original_domain . " (normalized: " . $normalized_domain . "), is_old_client: " . $is_old_client);
} catch (Exception $e) {
api_log("Error logging API request: " . $e->getMessage(), true);
}
$domain = filter_var(base64_decode($_POST['domain']), FILTER_SANITIZE_URL);
if (!$domain) {
api_log("Error: Invalid domain format: " . $_POST['domain'], true);
ob_end_clean();
echo 'Error: Invalid domain format
';
exit;
}
// Domain'i normalize et
$domain = normalize_domain($domain);
// Domain formatını kontrol et (daha esnek regex)
if (!preg_match('/^(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)+[a-z]{2,}$/i', $domain)) {
api_log("Error: Invalid domain structure: " . $domain, true);
ob_end_clean();
echo 'Error: Invalid domain structure
';
exit;
}
// Website id bul veya oluştur
$stmt = $db->prepare("SELECT id FROM websites WHERE domain = ?");
$stmt->execute([$domain]);
$website = $stmt->fetch();
if (!$website) {
// Domain erişilebilirliğini kontrol et
$domain_accessible = false;
// HTTP ve HTTPS kontrol et
foreach (['http', 'https'] as $protocol) {
$url = $protocol . '://' . $domain;
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_exec($ch);
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($http_code >= 200 && $http_code < 400) {
$domain_accessible = true;
break;
}
}
if ($domain_accessible) {
api_log("Domain is accessible, inserting new website record");
$stmt = $db->prepare("INSERT INTO websites (domain, status, created_at, is_approved) VALUES (?, 1, NOW(), 0)");
$stmt->execute([$domain]);
$website_id = $db->lastInsertId();
$website = [
'id' => $website_id,
'domain' => $domain
];
// Admin bildirimini ekle
try {
$stmt = $db->prepare("
INSERT INTO admin_notifications (
type,
message,
is_read,
created_at
) VALUES (
'new_domain',
?,
0,
NOW()
)
");
$notification_message = "Yeni domain eklendi: " . $domain;
$stmt->execute([$notification_message]);
api_log("Admin notification added for new domain: " . $domain);
} catch (Exception $e) {
api_log("Error adding admin notification: " . $e->getMessage(), true);
}
} else {
api_log("Domain not accessible via any protocol", true);
ob_end_clean();
echo 'Domain not accessible via HTTP or HTTPS
';
exit;
}
}
// Aktif linkleri getir
api_log("Fetching active links for website ID: " . $website['id']);
$sql = "SELECT l.url, l.anchor_text
FROM links l
JOIN orders o ON l.order_id = o.id
WHERE o.website_id = ? AND (o.status = 'completed' OR o.status = 'active') AND l.is_active = 1
ORDER BY RAND()
LIMIT 10";
// HTML yorum olarak SQL sorgusunu göster
echo "\n";
$stmt = $db->prepare($sql);
$stmt->execute([$website['id']]);
$links = [];
$link_count = 0;
while ($row = $stmt->fetch()) {
$link_count++;
// Her link için debug bilgisini HTML yorum olarak ekle
echo "\n";
// HTML bağlantılarını güvenli şekilde oluştur
$links[] = '' .
htmlspecialchars($row['anchor_text'], ENT_QUOTES, 'UTF-8') . '';
}
echo "\n";
if (empty($links)) {
api_log("No active links found for domain: " . $domain . " (Website ID: " . $website['id'] . ")", true);
ob_end_clean();
echo 'No active links found for: ' . htmlspecialchars($domain) . '
';
exit;
}
api_log("Returning " . count($links) . " links for domain: " . $domain);
echo '' . implode(' ', $links) . '
';
// Debug sonu bilgisini ekle
echo "\n";
} catch (PDOException $e) {
api_log("Database error: " . $e->getMessage() . "\nTrace: " . $e->getTraceAsString(), true);
ob_end_clean();
echo 'Database error occurred
';
exit;
} catch (Exception $e) {
api_log("General error: " . $e->getMessage() . "\nTrace: " . $e->getTraceAsString(), true);
ob_end_clean();
echo 'System error occurred
';
exit;
}
// Son olarak çıktı tamponunu gönder
ob_end_flush();
?>