да-да. я пытался его сюда запостить, но сайт ругается, что он слишком длинный. попробую в три приема, потому как в два не получается.
..................не. даже в 4 приема не выходит. разве что архивом?
Модератор: Модераторы разделов
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
Bizdelnick писал(а): ↑17.12.2015 15:22pastebin же. Или заархивируйте, только не в rar. Но лучше на pastebin, так читать удобнее.
Код: Выделить всё
/*******************************
* Decode Firmware after v0.2.0
*******************************/
$tmp_img1 = "$fw_dir/img.tmp.1";
$tmp_img2 = "$fw_dir/img.tmp.2";
@system("/bin/dd skip=0 count=1 bs=5120 if=$fw_dir/{$fw_img} of=$tmp_img1");
@system("/bin/dd skip=15 count=1 bs=5120 if=$fw_dir/{$fw_img} of=$tmp_img2");
@copy("$fw_dir/{$fw_img}", "$fw_dir/{$fw_img}.orig");
@system("/bin/dd seek=0 count=1 bs=5120 if=$tmp_img2 of=$fw_dir/{$fw_img}");
@system("/bin/dd skip=1 seek=1 bs=5120 if=$fw_dir/{$fw_img}.orig of=$fw_dir/{$fw_img}");
@copy("$fw_dir/{$fw_img}", "$fw_dir/{$fw_img}.orig");
@system("/bin/dd seek=15 count=1 bs=5120 if=$tmp_img1 of=$fw_dir/{$fw_img}");
@system("/bin/dd skip=16 seek=16 bs=5120 if=$fw_dir/{$fw_img}.orig of=$fw_dir/{$fw_img}");
@unlink($tmp_img1);
@unlink($tmp_img2);
@unlink("$fw_dir/{$fw_img}.orig");
/**********************
* Uncompress Firmware
**********************/
@system("/bin/tar zxf $fw_dir/$fw_img -C $fw_dir >/dev/null 2>&1", $retval);
if (!is_numeric($retval) || $retval != 0) {
$this->__debug("failed to untar $fw_img");
$this->clear_upload_dir();
@unlink($file_fw_is_updating);
return FALSE;
}
$this->reset_message();
$this->message[] = $this->lang['hooks']['errmsg'][47];
/*****************************************************
* Compare between new firmware model and current
* system model in the system
*****************************************************/
$forAllVersion = '0';
if($isServicePack) {
$forAllVersion = trim(file_get_contents("$fw_dir/forallver"));
}
if($forAllVersion == '0') {
if(!$isMionet) {
$current_model = trim(file_get_contents("/etc/model"));
$new_model = trim(file_get_contents("$fw_dir/model"));
if($current_model != $new_model){
$this->__debug('model name was not matched');
$this->clear_upload_dir();
@unlink($file_fw_is_updating);
return FALSE;
} else {
@unlink("$fw_dir/model");
}
$this->reset_message();
$this->message[] = $this->lang['hooks']['errmsg'][48];
/*****************************************************
* Compare between new firmware's version and current
* firmware's version in the system
*****************************************************/
$current_ver = trim(@file_get_contents('/etc/version'));
$new_ver = trim(@file_get_contents("$fw_dir/fw.ver"));
if ($current_ver > $new_ver) {
$this->__debug('new firmware version is too old');
$this->clear_upload_dir();
@unlink($file_fw_is_updating);
return FALSE;
} else {
@unlink("$fw_dir/fw.ver");
}
} else {
if(is_file('/etc/.mionet_installed')) {
$current_ver = trim(@file_get_contents('/etc/.mionet_installed'));
$new_ver = trim(@file_get_contents("$fw_dir/mionet.ver"));
if($current_ver > $new_ver) {
$this->__debug('new mionet version is too old');
$this->clear_upload_dir();
@unlink($file_fw_is_updating);
return FALSE;
} else {
@unlink("$fw_dir/mionet.ver");
}
}
}
if($isServicePack) {
$current_sp = trim(@file_get_contents('/etc/sp'));
$new_sp = trim(@file_get_contents("$fw_dir/sp"));
if ($current_sp > $new_sp) {
$this->__debug('new service pack version is too old');
$this->clear_upload_dir();
@unlink($file_fw_is_updating);
return FALSE;
}
}
}
$this->reset_message();
$this->message[] = $this->lang['hooks']['errmsg'][47];
/****************************
* Checksum for new firmware
****************************/
$PWD = getcwd();
@chdir($fw_dir);
if($isServicePack) {
@system("/usr/bin/md5sum -c $servicePack.md5 >/dev/null 2>&1", $retval_sp);
if(!is_numeric($retval_sp) || $retval_sp != 0) {
$this->__debug("failed to checksum $fw_img");
$this->clear_upload_dir();
@unlink($file_fw_is_updating);
return FALSE;
}
@system("$fw_dir/pre_setup.sh >/dev/null 2>&1");
@chdir('/');
@system("/bin/tar zxvf $fw_dir/$servicePack >/dev/null 2>&1", $retval);
if($retval != 0) {
$this->__debug("failed to update $fw_img");
$this->clear_upload_dir();
@unlink($file_fw_is_updating);
return FALSE;
} else {
@chdir($fw_dir);
@system('/bin/cp sp /etc/sp >/dev/null 2>&1');
@unlink("$fw_dir/sp");
@system("$fw_dir/post_setup.sh >/dev/null 2>&1");
@header('Location: system_firmware_sp.php');
$this->Reboot();
}
} else if($isMionet) {
@system("/usr/bin/md5sum -c $mionetPack.md5 >/dev/null 2>&1", $retval_mionet);
if(!is_numeric($retval_mionet) || $retval_mionet != 0) {
$this->__debug("failed to checksum $fw_img");
$this->clear_upload_dir();
@unlink($file_fw_is_updating);
return FALSE;
}
@chdir('/usr');
@system('/usr/mionet/mionetd stop >/dev/null 2>&1');
@system("/bin/tar xvf $fw_dir/$mionetPack >/dev/null 2>&1", $retval);
if($retval != 0) {
$this->__debug("failed to update $fw_img");
$this->clear_upload_dir();
@unlink($file_fw_is_updating);
return FALSE;
} else {
@chdir($fw_dir);
@system('/bin/cp mionet.ver /etc/.mionet_installed >/dev/null 2>&1');
@system('/bin/touch /etc/.mionet_on_startup');
@unlink("$fw_dir/mionet.ver");
@system('/usr/mionet/mionetd start >/dev/null 2>&1');
@chdir('/');
$this->clear_upload_dir();
return 2;
}
} else {
@system("/usr/bin/md5sum -c $kernel.md5 >/dev/null 2>&1", $retval_kernel);
@system("/usr/bin/md5sum -c $rootfs.md5 >/dev/null 2>&1", $retval_rootfs);
if (!is_numeric($retval_kernel) || $retval_kernel != 0 ||
!is_numeric($retval_rootfs) || $retval_rootfs != 0) {
$this->__debug("failed to checksum $fw_img");
$this->clear_upload_dir();
@unlink($file_fw_is_updating);
return FALSE;
}
@chdir($PWD);
@system('/usr/bin/fw_update.sh >/dev/null 2>&1 &');
@header('Location: system_firmware_status.php?lang='.$GLOBALS['__GET']["lang"]);
}
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
Bizdelnick писал(а): ↑17.12.2015 18:04Надо писать. На первый взгляд тот шелл-скрипт, который Вы выкладывали выше, делает примерно то же самое, но могут быть отличия в деталях — я не особо вчитывался. Времени, увы, совершенно нет.