Kullanımı oldukça basit. Minimum mIRC 6.2 üzerine "MIRC KODU" Başlıklı Satırdaki Kodları Load ediyorsanuz. Kod Kendini 60 Saniyede bir otomatik olarak çalıştıracaktır. İlk açılışta Belirli Bilgileri Girmeniz gerekiyor...
Daha sonrasında da ftp ye import.php 'yi atıyorsunuz. import.php 'de de belirli açıklamalarla sizden bilgiler isteyecektir. Onları da girdikten sonra Kullanıma hazır.
Botu düzenleyip bazı kişilerin elinde oyuncak olmamanız için 2 Güvenlik önlemi koydum. Bunlar;
1- Security Password. Güvenlik Şifresini Hem mIRC Kodundaki Satıra hem de import.php 'ye girdiğinizde sadece bu şifreden gelen bilgileri uygulayacaktır.
2- Kabul Edilebilir IP. Eğer Statik IP Kullanıyorsanız ya da Bir Server Üzerinden Kullanıma açtıysanız Bu IP 'leri virgülle sıralayın. import.php Yalnızca o IP 'lerden gelen verileri takip edecektir...
Şunu da bilmenizi isterim ki. PHP Kodlarını da, mIRC Kodlarını da Geliştirilebilir Bir Sistem çıkarttım. Vizelerim bittiğinde belki devam ederiz :p
Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.
Her İki Koduda Rar lı bir şekilde Ekten İndirebilirsiniz.
import.php Kodları Kod: Kodu kopyalamak için üzerine çift tıklayın!
<?php
/*-------------------------------------------------------------*\
| _____________________________________________________________ |
|// \\|
|||---------- Bu Script PHP ile Kodlanmıştır -----------------|||
|||----- Script, Özel İsteğe Göre Sıfırdan Dizayn Edildi -----|||
|||------------------- Nickolas ------------------------------|||
|\\__________________________________________________________// |
| |
\*-------------------------------------------------------------*/
// ##############################################################
// Script Ayarları...
$config = array();
/*********************
* *
* GÜVENLİK AYARLARI *
* *
*********************/
// Scripti Düzenleyip de Alay Konusu olmamak için Bir Güvenlik Şifresi
// Kullanmayı uygun gördük. Aynı Şifreyi Botun Config Satırlarında da Kullanmanız gerekiyor.
// Lütfen Sadece a-z, A-Z ve 0-9 Karekter Aralıklarını kullanın... (Türkçe Karekter Hariç)
$config['Security']['Password'] = '';
// Eğer İsterseniz Belirli IP Adreslerini Sıralayarak Yalnızca Bu IP Adreslerinden Gelen Bilgileri Kabul Ettirebilirsiniz...
// Örnek: 123.123.123.123, 127.0.0.1, 127.0.0.2
$config['Security']['OnlyIps'] = '';
/************************
* *
* VERİ TABANI AYARLARI *
* *
************************/
$config['MySQL']['DbName'] = ''; // Veri Tabanınızın Adı...
$config['MySQL']['Server'] = 'localhost'; // Veri Tabanınızın Sunucu IP Adresi...
$config['MySQL']['Port'] = '3306'; // MySQL Server Bağlantı Portu. Standard olarak 3306 'dır.
$config['MySQL']['Username'] = ''; // MySQL Server Veri Tabanı Bağlantısı için Kullanıcı Adı
$config['MySQL']['Password'] = ''; // MySQL Server Veri Tabanı Bağlantısı için Şifre
$config['MySQL']['Usept'] = false; // Devamlı Bağlantı Bağlantı kullanmak istiyorsanız (mysql_pconnect) Burayı true yapın.
$config['MySQL']['Charset'] = ''; // Eğer MySQL v4.1+ Kullanıyor ve de Türkçe Karekter Problemi Oluşursa Buraya latin5 Değerini Girin.
$config['MySQL']['ForceSQL'] = false; // Eğer MySQL v4.1+ Kullanıyorsanız Lütfen Burayı true yapın...
// ############################################################
// Bazı Fonksiyonlar...
function print_error($errorphrase)
{
global $is_mircbot;
if ($is_mircbot)
{
echo "\n$errorphrase\n";
exit;
}
trigger_error(fetch_error($errorphrase), E_USER_ERROR);
}
function fetch_error($phrase)
{
switch ($phrase)
{
case 'mysql_field_missing':
$text = "Lutfen \$config Alanlarindaki DbName, Server, Username ve Password Kisimlarini Girin";
break;
case 'connection_link_not_found':
$text = "MySQL Bağlantı Linki Bulunamadı...";
break;
case 'sql_error':
$text = "SQL Hatası";
break;
case 'mysql_couldnt_connect':
$text = "MySQL Sunucuna Bağlanılamadı";
break;
case 'db_not_found':
$text = "MySQL Veri Tabanı Bulunamadı";
break;
case 'couldnt_create_table':
$text = "Ana Tablo Oluşturulamadı";
break;
case 'not_valid_ip':
$text = "Üzgünüm! IP Adresiniz Kabul Edilebilir IP 'ler Arasında Değil...";
break;
case 'wrong_password':
$text = "Yanlış Şifre!";
break;
default:
$text = "Bilinmeyen Hata!";
}
return $text;
}
// SELECT ile Kullanılan SQL Kodları için...
function mysql_query_read($sqlcode, $connection = NULL)
{
if ($connection === NULL)
{
global $connection_link;
if ($connection_link == NULL)
{
print_error('connection_link_not_found');
}
$connection =& $connection_link;
}
if (!($result = @mysql_query($sqlcode, $connection)))
{
print_error('sql_error');
}
return $result;
}
// UPDATE, DELETE ile Kullanılan SQL Kodları için
// Yukarıdaki Fonksiyondan Farkı Herhangi bir sonuca dönmüyor...
function mysql_query_write($sqlcode, $connection = NULL)
{
if ($connection === NULL)
{
global $connection_link;
if ($connection_link == NULL)
{
print_error('connection_link_not_found');
}
$connection =& $connection_link;
}
if (!@mysql_query($sqlcode, $connection))
{
print_error('sql_error');
}
}
$input = NULL;
define('TYPE_STR', 2); // String Type
define('TYPE_INT', 4); // Integer Type
define('TYPE_UINT', 8); // Universal Integer Type
define('TYPE_BOOL', 32); // BOOLEAN Type
define('TYPE_ARRAY', 64); // Array Type
clean_input('g', 'd', TYPE_INT);
function clean_input($shortglobal, $datavar, $type = TYPE_STR)
{
global $input;
if (!in_array($shortglobal, array('p', 'r', 'g')))
{
return null;
}
switch ($shortglobal)
{
case 'p':
$data = $GLOBALS["_POST"]["$datavar"];
break;
case 'r':
$data = $GLOBALS["_REQUEST"]["$datavar"];
break;
case 'g':
$data = $GLOBALS["_GET"]["$datavar"];
break;
}
switch ($type)
{
case TYPE_STR:
$data = trim(strval($data));
break;
case TYPE_INT:
$data = (($tempdata = intval($data)) ? $tempdata : 0);
break;
case TYPE_UINT:
$data = ((($tempdata = intval($data)) > 0) ? $tempdata : 0);
break;
case TYPE_BOOL:
$data = $data ? 1 : 0;
break;
case TYPE_ARRAY:
$data = (is_array($data) ? $data : array());
break;
default:
$data = null;
}
$input->GPC["$datavar"] = $data;
return $data;
}
function clean_input_array($shortglobal, $datas)
{
if (!is_array($datas))
{
return;
}
foreach ($datas AS $input => $data)
{
clean_input($shortglobal, $input, $data);
}
}
// #############################################################
// Script Başlangıcı, Süper Global Düzenlemeleri...
if (@ini_get('register_globals'))
{
@ini_set('register_globals', 0); // Register Globals Özelliğini en başından beri gereksiz bulmuşumdur :)
}
$is_mircbot = $_SERVER['HTTP_USER_AGENT'] == 'Lusers Updater via Nickolas' ? true : false;
if (strtolower($_SERVER['REQUEST_METHOD']) !== 'post' OR $is_mircbot === false)
{
exit;
}
if (!empty($config['Security']['OnlyIps'])) // Kabul edilebilir IP Tanımlanmış. Bakalım IP 'ler Formata Uygun mu...
{
$validips = array();
$ips = split(',', $config['Security']['OnlyIps']);
foreach ($ips AS $ip)
{
$notvalidip = false;
if (($ip = trim($ip)) AND preg_match('#(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})#', $ip, $result))
{
for ($i = 0; $i <= 3; $i++)
{
if ($result[$i] > 255 OR $result[$i] < 0)
{
$notvalidip = true;
break;
}
}
if ($notvalidip === false)
{
$validips[] = $ip;
}
}
}
if (!in_array($_SERVER['REMOTE_ADDR'], $validips)) // IP Kabul edilebilir IP 'ler Arasında değil. Bu nedenle... Error!
{
print_error('not_valid_ip');
}
}
clean_input_array('p', array('securitypassword' => TYPE_STR, 'usernumbers' => TYPE_UINT));
if (!empty($config['Security']['Password']))
{
$securitypassword = preg_replace('#([^a-zA-Z0-9]*)#', '_', $config['Security']['Password']); // Kabul Edilebilir Formata Alıyoruz.
if (!empty($securitypassword) AND $input->GPC['securitypassword'] !== $securitypassword)
{
print_error('wrong_password');
}
}
// ############################################################
// MySQL Açılış Kodları...
if (empty($config['MySQL']['DbName']) OR empty($config['MySQL']['Username']) OR empty($config['MySQL']['Password']) OR empty($config['MySQL']['Server']))
{
print_error('mysql_field_missing');
}
$mysql_connect = $config['MySQL']['Usept'] ? 'mysql_pconnect' : 'mysql_connect';
$mysql_port = $config['MySQL']['Port'] ? $config['MySQL']['Port'] : 3306;
$mysql_server = $config['MySQL']['Server'] . ":" . $mysql_port;
$escape_string = function_exists('mysql_real_escape_string') ? 'mysql_real_escape_string' : 'mysql_escape_string';
if (!($connection_link = @$mysql_connect($mysql_server, $config['MySQL']['Username'], $config['MySQL']['Password'])))
{
print_error('mysql_couldnt_connect');
}
if (!@mysql_select_db($config['MySQL']['DbName'], $connection_link))
{
print_error('db_not_found');
}
if ($config['MySQL']['ForceSQL'])
{
@mysql_query("SET @@sql_mode = ' '", $connection_link);
}
if (!($lusers = @mysql_query("SELECT lusersid FROM lusers LIMIT 1", $connection_link)))
{
if (mysql_errno() == 1146) // Hımm.. Tablo Mevcut değil. Sanırım ilk açılıştı bu. Biz de Yeni Bir Tablo oluşturalım.
{
$create = @mysql_query("
CREATE TABLE lusers(
lusersid INT UNSIGNED NOT NULL AUTO_INCREMENT,
lusers INT(5) NOT NULL DEFAULT '0',
PRIMARY KEY(lusersid)
);", $connection_link);
if (!$create)
{
print_error('couldnt_create_table');
}
@mysql_query("INSERT INTO lusers(lusersid, lusers) VALUES(1, 0)", $connection_link);
$lusers['lusersid'] = 1;
}
}
else
{
$lusers = mysql_fetch_array($lusers, MYSQL_ASSOC);
}
if (!empty($input->GPC['usernumbers']))
{
// Buraya Kadar Herşey Başarılı... eee Bize de Tabloya veriyi yazmak düşer:P
mysql_query_write("
UPDATE lusers SET lusers = " . $escape_string($input->GPC['usernumbers']) . "
WHERE lusersid = $lusers[lusersid]", $connection_link);
if ($is_mircbot)
{
echo "\nprocess_success\n";
}
else
{
echo "Başarıyla Güncellendi...";
}
}
@mysql_close($connection_link);
?>
MIRC KODLARI Kod: Kodu kopyalamak için üzerine çift tıklayın!
on *:START: {
; -------------------------------------------------------------------------------------------------------------
; Bu kısma IP ya da Host Adını ve Port yazın. Eğer Host adı yazacaksanız
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] 80 şeklinde yazın.
_setcfg host
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] 80
; IRC Adresini ve Portunu yazın
_setcfg ircserver irc.server.com 6667
; Eğer Güvenlik Şifresi Tanımladıysanız "; _setcfg password" Satırındaki Noktalı Virgülü Kaldırın ve Bir Değer girin
; Unutmayın a-z, A-Z, 0-9 Değerleri girmelisiniz. Türkçe Karekter Girmeyin...
; _setcfg password
; -------------------------------------------------------------------------------------------------------------
; ------- SCRIPTIN BU SATIRINDAN İTİBAREN DÜZENLEMEYİN ----------------
_adderror mysql_field_missing Lutfen \$config Alanlarindaki DbName, Server, Username ve Password Kisimlarini Girin
_adderror connection_link_not_found MySQL Bağlantı Linki Bulunamadı...
_adderror sql_error SQL Hatası
_adderror mysql_couldnt_connect MySQL Sunucuna Bağlanılamadı
_adderror db_not_found MySQL Veri Tabanı Bulunamadı
_adderror couldnt_create_table Ana Tablo Oluşturulamadı
_adderror not_valid_ip Üzgünüm! IP Adresiniz Kabul Edilebilir IP 'ler Arasında Değil...
_adderror wrong_password Yanlış Şifre!
.timer.start 0 1 connectirc
; Uygun Format Dışında Geldiği İhtimaline Göre Yeniden Yazdırıyoruz.
if ($_cfg(password)) _setcfg password $regsubex($_cfg(password), /([^0-9]*)/gi, $null)
}
alias _setcfg hadd -m config $1 $2-
alias _cfg return $hget(config, $1)
alias _adderror hadd -m errors $1 $2-
alias _geterror return $hget(errors, $1)
alias sw {
if (!@window(SOCK)) window -e @SOCK
aline @SOCK $1 - $2-
sockwrite -nt $1 $2-
}
alias connectirc if (!$sock(updatebot)) sockopen updatebot $_cfg(ircserver)
alias trim return $regsubex($1-, /^\s+|\s+$/g, $null)
alias escape_unnumber return $regsubex($1-, /([^0-9]*)/gi, $null)
alias build_query {
var %sock = $1
var %data = usernumbers= $+ $escape_unnumber($trim($_cfg(usernumbers)))
if ($_cfg(password)) %data = securitypassword= $+ $_cfg(password) $+ & $+ %data
sw %sock POST /import.php?s= $+ $r(58478946654, 54613564554564654) HTTP/1.1
sw %sock Host: $gettok($_cfg(host), 1, 32)
sw %sock User-Agent: Lusers Updater via Nickolas
sw %sock Content-type: application/x-
Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.sw %sock Content-Length: $len(%data)
sw %sock Connection: close
sw %sock
sw %sock %data
}
on *:SOCKOPEN:updatebot: {
var %bot = updatebot_ $+ $r(100, 9999)
sw $sockname NICK %bot
sw $sockname USER SiteBot "" " $+ $iif($host, $host, $ip) $+ " : $+ Kullanıcı Sayısı Güncelleyici Bot
}
on *:SOCKREAD:updatebot: {
var %b
sockread %b
tokenize 32 %b
if (!@window(IRCDEBUG)) {
window -e @IRCDEBUG
}
aline @IRCDEBUG DEGUG - %b
if ($1 == PING) sw $sockname PONG $2
if ($2 == 002) .timer.sockwrite 0 60 sw updatebot lusers
if ($regex($1-, /^:updatebot_([0-9]{3,4})\sMODE\supdatebot_([0-9]{3,4})\s:\+i.*$/i)) sw $sockname join #2,00
if ($2 == 265) {
if ($regex(local, $4-, /^:([^:]*):\s(\d*)\s([^:]*):\s(\d*)/)) {
var %local = $regml(local, 2)
var %max_local = $regml(local, 4)
; Burada Hangisini Yollamak istiyorsan Onu göndert :P %local dersen Local Users Gider
_setcfg usernumbers %local
$update_site
}
}
}
alias update_site sockopen sender $_cfg(host)
on *:SOCKOPEN:sender: build_query $sockname
on *:SOCKREAD:sender: {
var %b
sockread %b
if (!@window(DEBUG)) {
window -e @DEBUG
}
tokenize 32 %b
aline @DEBUG DEBUG - %b
if ($1 == process_success) echo -a Başarıyla Güncellendi...
elseif ($_geterror($1)) echo -a HATA: $_geterror($1)
}