PDA

View Full Version : share bản autoupdate



thanhhue
29-07-08, 04:34 PM
Như đã hứa với các bạn hôm nay mình share cho các bạn bản upautodate mà mình đã sử dụng cho server online của mình.
Bản này có ưu điểm là có thể upload lên host khác (không nằm cùng với server) nên có thể vừa làm tự động cập nhập cho clinet vừa làm thông báo cho server khi server bảo trì. Tuy nhiên có 1 nhược điểm là không thể tự động unzip hoặc unrar.

Đây cũng là điều mà mình đang cố gắng khắc phục.

Cấu hình server
Bước 1:
- Bạn tạo 1 sub có dạng <b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>

- Tạo 1 file có tên filelist.php và chép đoạn code này vào:

<?php

class Boot
{
private $i = 0;

///////////////////////////////////////
//// Tao code cho file list
////
//// * Thanhhue
//// *
//// *
/////////////////////////////////////////
public function Create($FILEN, $mode)
{
$dir = "./";

if(is_dir($dir))
{
$Handle = opendir($dir);
if($Handle)
{
$FHandle = fopen($FILEN, 'w');
$this->ReadDir($Handle, $dir, $FHandle, $mode);
//Cut trails
$temps = file_get_contents($FILEN);
$temps[strlen($temps) - 1] = "";
file_put_contents($FILEN, $temps);


}
}

return true;
}

/**
* Read all files in a given directory.
*
<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>
<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>
<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>
<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>
<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>
*/
private function ReadDir($Handle, $dir, $FHandle, $mode)
{


while (($file = readdir($Handle)) !== false)
{

if(is_dir($dir.$file) && $file != ".." && $file != ".")
{
$NHandle = opendir($dir.$file."/");
if($NHandle)
{
$this->ReadDir($NHandle, $dir.$file."/", $FHandle, $mode);

}

}
elseif (is_file($dir.$file))
{
$Skip = array(
'file.list',
'filelist.php'
);
if($mode == 1)
{
if($this->FileExt($file) == "zip" && !array_key_exists($file, $Skip) && $file[0] != '_')
{
$data = $this->FileName($file) . "," . filesize($dir.$file) . "*";
$dat = $data;
fwrite($FHandle, $dat);
$this->i++;
}
}
else
if(!$this->CheckName($file, $Skip) && $file[0] != '_')
{
$data = $dir.$file . "," .md5_file($dir.$file);
$dat = "$data\r\n";
fwrite($FHandle, $dat);
$this->i++;

}

}
else
{
}

}

closedir($Handle);
return true;
}

/**
* Returns the extension of the file name
*
<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>
<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>
*/
private function FileExt($file)
{
$TEMP = explode('.', $file);
return $TEMP[count($TEMP) - 1];
}

private function FileName($file)
{
$TEMP = explode('.', $file);
return $TEMP[0];
}

/**
* Loads a boot file.
*
<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>
<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>
*/
public function Load($FILEN)
{
$fp = fopen("list.txt", 'r');
$TEMP['RESOURCE'] = fopen($FILEN, 'r');

$i = 0;

while (!feof($TEMP['RESOURCE']))
{
$TEMP['FILE'][$i] = fgets($TEMP['RESOURCE'], 1024);
$i++;
}

for($c = 0; $c < count($TEMP['FILE']); $c++)
{
include($TEMP['FILE'][$i]);
}

unset($TEMP);
return true;
}

private function CheckName($file, $array)
{
for($i = 0; $i < count($array); $i++)
{
if($file == $array[$i])
{
return true;
break;
}
}

return false;
}

}
if(isset($_POST['submit']) && $_POST['pa'] == "123456" && $_POST['user'] == "thanhhue")
{
$boot = new Boot();
$boot->Create("file.list", 0);
echo "Cap nhat game thanh cong!";
}
else echo "Ban hay kiem tra lai thong tin";
?>
<form method="POST" action="">
<table width="271" border="0">
<tr>
<td width="117">Ten nguoi quan tri:</td>
<td width="144"><input type="text" maxlength="50" name="user"></td>
</tr>
<tr>
<td>Mat khau:</td>
<td><input type="password" maxlength="50" name="pa"></td>
</tr>
<tr>
<td>&nbsp;</td>
<td><input type="submit" name="submit" value="Cap nhat."></td>
</tr>
</table>
</form>

Chú Ý đoạn này


if(isset($_POST['submit']) && $_POST['pa'] == "123456" && $_POST['user'] == "thanhhue")


Đây chính là user và pass của admin để cập nhật, bạn có thể thay đổi theo ý bạn

Bước 2

Tạo 1 file có tên là file.list không có nội dung gì bên trong cả.

Bước 3

Tạo 1 file notice.txt file này dùng để thông báo phiên bản hoặc server bảo trì.
Chép các file cập nhật của bạn vào thư mục này.
Nếu muốn cập nhật cho clinet file config.pk thì bạn tạo thư mục như sau data/config/ sau đó chép file config.pk vào đấy.

Bây giờ bạn truy cập vào địa chỉ <b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>

Gõ user và pass vào để tạo list cập nhật.
Ok xong phần Server.

Cấu hình cho Clinet

- Bạn vào địa chỉ <b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b> tải bản Update v.1.0 của mình và chép vào clinet của bạn.

- Mở file updater.ini sửa lại các thông số của server bạn.


UpdateHost=<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>
UpdateFile=file.list
NoticeFile=notice.txt
WebsiteButtonURL=<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>
UpdaterTitle=KalOnline Viet Nam


Ok như vậy là xong vào clinet chay file kalonline.exe và xem nó có làm việc không nhé :wink:

Bản này đang chạy cho server online của mình (hiện tại mình close để nâng cấp phiên bả rùi) nên chắc chắn nếu làm theo hướng dẫn sẽ được.

ngosithien
30-11-08, 03:47 PM
Update v.1.0 Ko tải được bạn ơi coi lại giùm đi