Накопитель WD80000 (нужна помощь)

Ethernet card, Wi-Fi, Bluetooth, IrDA, ADSL-модемы, модемы

Модератор: Модераторы разделов

Аватара пользователя
LoWo
Сообщения: 21
ОС: маздайка

Накопитель WD80000

Сообщение LoWo »

Итак.
Имеется NAS WD80000A4NC-00, доставшийся в подарок. При обновлении ПО он завис и его выключили из розетки. После включения он стал кирпичом и был подарен мне.
Начав изучать сей девайс я обнаружил, что у него имеется одна лазейка, а именно: доступ через telnet.
логин: root
пароль: welc0me
К сожалению я в линуксе совершеннейший ноль. Может найдутся добрые энтузиасты, которые подскажут каким методом можно восстановить прошивку?
Только не отсылайте в службу поддержки WD. С ними я уже перетёр.
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20752
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Накопитель WD80000

Сообщение Bizdelnick »

Кто ж его знает, что там у него унутре. Документация-то хоть есть? А сама прошивка? Дайте ссылку на сайт производителя, я там такого продукта просто не нашёл.

LoWo писал(а):
01.12.2015 15:13
Начав изучать сей девайс я обнаружил, что у него имеется одна лазейка, а именно: доступ через telnet.
логин: root
пароль: welc0me

Ни фига ж себе лазейка. Это дырища, а не лазейка. Спасибо, что рассказали, никогда не буду покупать NAS'ы от WD.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
yars
Сообщения: 1144
Статус: Slacker!
ОС: Slackware64-current

Re: Накопитель WD80000

Сообщение yars »

Ну, telnet-то можно прикрыть, я полагаю. По идее, должно отключаться в настройках.
Slackware64-current/Xfce 4.12/Acer TravelMate 5760
-------------
Registered Linux User #557010
Спасибо сказали:
Аватара пользователя
LoWo
Сообщения: 21
ОС: маздайка

Re: Накопитель WD80000

Сообщение LoWo »

сцылко на зверя вот: http://westerndigital.nas-central.org/wiki...gory:ShareSpace

Прошивка частично запорота. Веб интерфейс не работает. Браузер его вроде как цепляет, но страничку не открывает.
Мысль покопаться в сервисах и службах...или что там у него. ну или инстальнуть браузер и запустить.

ЗЫ.
Раньше у него даже работал веб интерфейс. Ну как работал... по адресу 192.168.1.2 открывалось окно со строкой прогресса.....открывалось.....открывалось....и где-то на 60-80% так и оставалось. Чего-то ему там не хватало.
Я пригласил одного знакомца (типа шарит в линях) ну он пришел, оценил, поиграл программно светодиодами на железке, попищал зуммером.... выпил баттл пива и смылся. И вот после него браузер уже ни гу-гу.

/ $ /etc/init.d/S55mini_httpd stop
Stopping mini_httpd: OK
/ $ /etc/init.d/S55mini_httpd start
Starting mini_httpd: OK
насколько я понимаю - это отрабатывается успешно. куда б копнуть еще?
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20752
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Накопитель WD80000

Сообщение Bizdelnick »

Ага, вот это интересно:
dpkg is installed
Может там и apt есть, при посредстве которого он обновляется? Попробуйте дать команду apt-get -f install и покажите, что он на это скажет.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
LoWo
Сообщения: 21
ОС: маздайка

Re: Накопитель WD80000

Сообщение LoWo »

Bizdelnick писал(а):
01.12.2015 15:49
Ага, вот это интересно:
dpkg is installed
Может там и apt есть, при посредстве которого он обновляется? Попробуйте дать команду apt-get -f install и покажите, что он на это скажет.


~ $ apt-get -f install
-sh: apt-get: not found
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20752
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Накопитель WD80000

Сообщение Bizdelnick »

Не угадал. ☹
Тут нашлась какая-никакая документашка и исходники, видимо, от GPLных частей прошивки. По ним, может быть, удастся разобраться хотя бы в общих чертах, что она из себя представляет. Только времени у меня сейчас на это нет...
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
LoWo
Сообщения: 21
ОС: маздайка

Re: Накопитель WD80000

Сообщение LoWo »

Bizdelnick писал(а):
01.12.2015 16:01
Не угадал. ☹
Тут нашлась какая-никакая документашка и исходники, видимо, от GPLных частей прошивки. По ним, может быть, удастся разобраться хотя бы в общих чертах, что она из себя представляет. Только времени у меня сейчас на это нет...


Ну время когда-нибудь и появится. Девайс все равно уже давно пылится под столом. Вот добрался до него потому как появилось время (оказался безработный). Нашел на одном британском сайте материнку от него - заломили больше 18тыр. Да я за такие деньги современный NAS новенький мог бы купить. Только вот этот жалко выкидывать.... каким-то местом чую, что можно его реанимировать.

Спасибо сказали:
Аватара пользователя
s.xbatob
Сообщения: 1139
ОС: Fedora

Re: Накопитель WD80000

Сообщение s.xbatob »

Bizdelnick писал(а):
01.12.2015 15:20
Ни фига ж себе лазейка. Это дырища, а не лазейка. Спасибо, что рассказали, никогда не буду покупать NAS'ы от WD.

Ни хрена подобного:

Код: Выделить всё

$ telnet 192.168.74.146
Trying 192.168.74.146...
telnet: connect to address 192.168.74.146: Connection refused

Вероятно это из-за того, что система ушла в recovery mode
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20752
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Накопитель WD80000

Сообщение Bizdelnick »

Ну если это рекавери... Не работает ли на нём до кучи ещё и TFTP-сервер (порт 69 UDP)?
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
LoWo
Сообщения: 21
ОС: маздайка

Re: Накопитель WD80000

Сообщение LoWo »

Bizdelnick писал(а):
01.12.2015 20:23
Ну если это рекавери... Не работает ли на нём до кучи ещё и TFTP-сервер (порт 69 UDP)?


по ходу не работает
Спасибо сказали:
Аватара пользователя
s.xbatob
Сообщения: 1139
ОС: Fedora

Re: Накопитель WD80000

Сообщение s.xbatob »

Bizdelnick писал(а):
01.12.2015 20:23
Не работает ли на нём до кучи ещё и TFTP-сервер?

А что он там забыл - при живом telnet-е? Там нужны клиенты, а не сервисы.
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20752
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Накопитель WD80000

Сообщение Bizdelnick »

Да мало ли, какой там сервисный способ заливки прошивки может быть... Конечно, шансов было мало, но проверить стоило.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
LoWo
Сообщения: 21
ОС: маздайка

Re: Накопитель WD80000

Сообщение LoWo »

Даже если бы и был открыт TFTP, то прошивки для такого случая я еще не встречал. Признаю, это довольно-таки удобно (как-то шил SIP от D-Link).
Но тут есть TELNET с гораздо бОльшими возможностями. Наверное в родных СЦ с ними так и работали (пока девайс не сняли с производства и не закончилась поддержка). Для обычного же юзера предлагалось обновление только через вебку и никак иначе.
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20752
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Накопитель WD80000

Сообщение Bizdelnick »

LoWo писал(а):
02.12.2015 01:07
Даже если бы и был открыт TFTP, то прошивки для такого случая я еще не встречал.

Почему Вы считаете, что для такого случая нужна какая-то особая прошивка? Та же самая, только способ заливки другой. Надо, значит, этот способ заливки найти. В СЦ его, конечно, знают, но не скажут.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
LoWo
Сообщения: 21
ОС: маздайка

Re: Накопитель WD80000

Сообщение LoWo »

Bizdelnick писал(а):
02.12.2015 01:10
LoWo писал(а):
02.12.2015 01:07
Даже если бы и был открыт TFTP, то прошивки для такого случая я еще не встречал.

Почему Вы считаете, что для такого случая нужна какая-то особая прошивка? Та же самая, только способ заливки другой. Надо, значит, этот способ заливки найти. В СЦ его, конечно, знают, но не скажут.


Ну в таком случае такая прошивка у меня есть. Просто я думал, что она для заливки через веб. К тому же исходя из опыта по прошивке того же SIPа, там как раз файлы отличались.
Спасибо сказали:
Аватара пользователя
alv
Бывший модератор
Сообщения: 7274
Статус: Пенсионер в законе
ОС: Cintu
Контактная информация:

Re: Накопитель WD80000

Сообщение alv »

Bizdelnick писал(а):
02.12.2015 01:10
В СЦ его, конечно, знают, но не скажут.

В СЦ, конечно, нет. А вот на каком-нибудь около-СЦ'шном форуме - очень даже может быть. Такой форум есть обязательно, и на таких форумах народ очень любит жаловаться-хвастаться: вы, СЦ'шники, мне ничего не сказали, а я вот такой умный, сам всё придумал и теперь всему свету по секрету...
4 ТС. Искать, разумеется, не по русски
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20752
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Накопитель WD80000

Сообщение Bizdelnick »

LoWo писал(а):
02.12.2015 01:29
такая прошивка у меня есть.

Понятное дело, что есть: вот она.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
LoWo
Сообщения: 21
ОС: маздайка

Re: Накопитель WD80000

Сообщение LoWo »

Я вот подумал..... веб интерфейс - это ж шняга для таких ламеров, как я. Чтоб было удобно загрузить прошиву тупо шлепая по кнопкам. А в это время оболочка вебки рулит какими-то скриптами и они выполняют уже всю работу по прошивке девайса. И вот значить пошел я потрошить GPL от этого NASа. И нарыл там несколько интересных файлов (в аттаче file). А еще в инете наковырял один скрипт для прошивки WD MyBook World Ed (в аттаче file2 ....собсна и источник http://mybookworld.wikidot.com/forum/t-175889) . Для ShareSpace он конечно не подойдет, но так как эти железяки родственные, то вероятно скрипт можно как-то модифицировать под мою?
Вложения
file2.rar
(912 байт) 20 скачиваний
file.rar
(12.14 КБ) 18 скачиваний
Спасибо сказали:
Аватара пользователя
LoWo
Сообщения: 21
ОС: маздайка

Re: Накопитель WD80000

Сообщение LoWo »

А тут еще вот какая фигня получается.
пишу ~ $ reboot .... и в момент перезапуска в браузере всплывает такая вот весчь -
Вложения
what.png
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20752
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Накопитель WD80000

Сообщение Bizdelnick »

Так непонятно же, проблема в одном только веб-интерфейсе, или что-то ещё поломалось. Причём более вероятно что что-то ещё.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
LoWo
Сообщения: 21
ОС: маздайка

Re: Накопитель WD80000

Сообщение LoWo »

Bizdelnick писал(а):
15.12.2015 12:02
Так непонятно же, проблема в одном только веб-интерфейсе, или что-то ещё поломалось. Причём более вероятно что что-то ещё.


Дык я же и говорил - прошивка на какую-то часть битая. Хочет установиться, а "хвоста" не хватает. Вот она и висит на каком-то проценте прогресса.
Задача - методом скрипта установить целую прошиву, благо она имеется.
Спасибо сказали:
Аватара пользователя
LoWo
Сообщения: 21
ОС: маздайка

Re: Накопитель WD80000

Сообщение LoWo »

Для WD My Book Live есть инструкция прошивки по SSH/ (к примеру https://community.wd.com/t/firmware-update-via-ssh/55615 ), но там расширение файла прошивки *.DEB (наверное это дебиан)
Или вот WD My Live/Book/Cloud/Cloud Mirror (http://4pda.ru/forum/index.php?showtopic=467828) целая тема. Но там почему-то прошивка состоит из трех файлов: rootfs.img, kernel.img, config.img
Для своей железки никак не могу ничего найти.
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20752
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Накопитель WD80000

Сообщение Bizdelnick »

LoWo писал(а):
15.12.2015 00:36
нарыл там несколько интересных файлов (в аттаче file).

А можно их увидеть не в виде rar-архива?
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
LoWo
Сообщения: 21
ОС: маздайка

Re: Накопитель WD80000

Сообщение LoWo »

Bizdelnick писал(а):
17.12.2015 00:31
LoWo писал(а):
15.12.2015 00:36
нарыл там несколько интересных файлов (в аттаче file).

А можно их увидеть не в виде rar-архива?


В каком виде нужно предоставить?
Спасибо сказали:
Аватара пользователя
LoWo
Сообщения: 21
ОС: маздайка

Re: Накопитель WD80000

Сообщение LoWo »

fw_chk.php
Spoiler

#!/usr/bin/php
<?php
/**
* @version $Id: fw_chk.php,v 1.1.2.4 2009/09/16 08:14:53 arsene Exp $
* @author Wiley Li <wiley_li@wistron.com.tw>
* @copyright Copyright © 2004 Wistron Corporation.
*/

// Set flag that this is a parent file
define( '_VALID_MOS', 1 );
define( '_VALID_EXT', 1 );

if(isset($_SERVER)) {
$GLOBALS['__GET'] = &$_GET;
$GLOBALS['__POST'] = &$_POST;
$GLOBALS['__SERVER'] = &$_SERVER;
$GLOBALS['__FILES'] = &$_FILES;
} elseif(isset($HTTP_SERVER_VARS)) {
$GLOBALS['__GET'] = &$HTTP_GET_VARS;
$GLOBALS['__POST'] = &$HTTP_POST_VARS;
$GLOBALS['__SERVER'] = &$HTTP_SERVER_VARS;
$GLOBALS['__FILES'] = &$HTTP_POST_FILES;
} else {
die("<B>ERROR: Your PHP version is too old</B><BR>".
"You need at least PHP 4.0.0 to run Share Explorer; preferably PHP 4.3.1 or higher.");
}

@session_start();

if(isset($_SESSION)) $GLOBALS['__SESSION']=&$_SESSION;
elseif(isset($HTTP_SESSION_VARS)) $GLOBALS['__SESSION']=&$HTTP_SESSION_VARS;

require_once('users.php');
require_once('conf.php');
require_once('.htadmin.php');
require_once('.htusers.php');
require_once('.htshares.php');
require_once('translate.inc');

if(isset($GLOBALS['__SESSION']['s_user'])) {
if(!activate_user($GLOBALS['__SESSION']['s_user'],$GLOBALS['__SESSION']['s_pass'])) {
exit;
} else if (!in_array($GLOBALS['__SESSION']['s_user'], $GLOBALS['admin_users'])) {
exit;
}
} else { exit; }

?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Check New Firmware</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script language="javascript">
<!--
function check_refused(msg) { parent.checkNewFirmwareCallBackResult(-1,msg); }
function check_available(msg) { parent.checkNewFirmwareCallBackResult(1,msg); }
function check_no_available(msg) { parent.checkNewFirmwareCallBackResult(0,msg); }
function fw_is_updating() { parent.checkNewFirmwareCallBackResult(-100,""); }
//-->
</script>
</head>

<body>
<?php
if(file_exists("/etc/.fw_is_updating")){
echo '<script>fw_is_updating()</script>';
} else {
$type = $_GET['type'];
$fw = $_GET['fw'];

$checkrefused = htmlspecialchars($lang['system']['firmwareupdate']['checkrefused']);
$checknoavailable = htmlspecialchars($lang['system']['firmwareupdate']['checknoavailable']);
$checkavailable = htmlspecialchars($lang['system']['firmwareupdate']['checkavailable']);

// -1: Connection refused
// 0: no upgrade available
// 1: upgrade file
//$check = @file_get_contents("http://10.34.33.159/no_upgrade_available.html");
//$check = @file_get_contents("http://10.34.33.159/available.html");
$twonky_installed = is_file('/etc/.mediaserver_installed');
if(!$twonky_installed) {
$fw="2.1.92";
}
$check = @file_get_contents("http://websupport.wdc.com/firmware/list.asp?type=".$type."&fw=".$fw);
//$check = '<html><head><title>Firmware Updates</title></head> <body> <a href="http://10.34.33.159/wdg4nc40000-01.01.06.img">upgrade file</a> </body> </html>';

// debug if need (uncomment them)
/*echo '<script>alert("'.htmlspecialchars($check).'");</script>';*/

if ($check==false)
echo '<script>check_refused("'.$checkrefused.'")</script>';
else {
if((strpos($check, "upgrade file"))==true) {
$pos = strpos($check,'<a href="') + 9;
$len = strlen($check);
$img_url = '';
for($i=$pos; $i<$len; $i++) {
if($check[$i]=='"') break;
$img_url .= $check[$i];
}

//$checkavailable = str_replace('__HREF_S__ ', '<a href=\\"#\\" onclick=\\"return popitup(\''.$img_url.'\')\\">', $checkavailable);
//$checkavailable = str_replace(' __HREF_E__', '</a>', $checkavailable);

//echo '<script>check_available("'.$checkavailable.'")</script>';

$checkavailable = str_replace('__BR__', '<br/>', $checkavailable);
$checkavailable = $checkavailable.' <input type=\\"button\\" name=\\"downloadnow\\" value=\\"Download\\" onClick=\\"dnFW(\''.urlencode($img_url).'\')\\">';

echo '<script>check_available("'.$checkavailable.'")</script>';
} else {
echo '<script>check_no_available("'.$checknoavailable.'")</script>';
}
}
}
?>
</body>
</html>


fw_dn_now.php
Spoiler

#!/usr/bin/php
<?php
/**
* @version $Id: fw_dn_now.php,v 1.1.2.4 2008/06/24 09:39:44 wiley Exp $
* @author Wiley Li <wileyli@wistron.com.tw>
* @copyright Copyright © 2004 Wistron Corporation.
*/

require_once('fw_settings.inc');
require_once('wget.inc');
require_once('dn_extra.inc');

$jsCallBackTemplate = <<<EOD
<script>parent.processDnFWCallBackResult("%s");</script>
EOD;

@session_start();

if(session_id() != $_GET['id']) { exit; }

if(wgpid_running($abs_fw_wgpid)) {
printf($jsCallBackTemplate, '__DNINGNOW__'); exit; // New firmware is downloading now!
}

// -------------------------------------------------------------
@mkdir($fw_destination);
if(!is_dir($fw_destination)) {
printf($jsCallBackTemplate, '__PERMDENIED__'); exit; // Permission Denied!
}
// -------------------------------------------------------------
$fw_img_url = urldecode($_GET['url']);

//$wget_sess = new wget_agent($fw_img_url, $fw_destination, "30k"); /* rate limit for debug */
$wget_sess = new wget_agent($fw_img_url, $fw_destination);
$wget_sess->wget_session_id($fw_session_id);
$wget_sess->wget_log_prefix($fw_wget_log_prefix);
$wget_sess->output_name($fw_output_name);

$error = $wget_sess->get_error();
if(!$error["error_no"]){
$wget_sess->wget_run();
sleep(1); printf($jsCallBackTemplate, ''); exit;
} else {
printf($jsCallBackTemplate, '__TRYAGAIN__'); exit; // Failed to download new firmware. Please try it again!
}
// -------------------------------------------------------------
?>


fw_dn_query.php
Spoiler

#!/usr/bin/php
<?
require_once('fw_settings.inc');
require_once('dn_extra.inc');

@session_start();

if(session_id() != $_GET['id']) { exit; }

// get downloaded size
$ds_result = wglog_ds($abs_fw_wglog);

// get total size
if(($wgspider_size = wgspider_size($abs_fw_wgspider))==''){
@unlink($abs_fw_wgspider);
$wgspider_size = wglog_size($abs_fw_wglog);
}

if($ds_result!==false && $wgspider_size!=''){
$percentage = floor((($ds_result[0]*1024) / $wgspider_size) * 100);
} else { $percentage = 0; }

if($percentage<=0){
if(file_exists($abs_fw_output_name)){
if(filesize($abs_fw_output_name) == $wgspider_size){
$percentage = 100;
}
}
}

header("Content-type: text/xml;charset=ISO-8859-1");
echo "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n";
echo "<value>".$percentage."</value>";
?>


fw_settings.inc
Spoiler

<?php
// the directory for downloading firmware by wget agent
$fw_destination = '/ftmp';

$fw_session_id = '_downloaded_automatically';
$fw_wget_log_prefix = 'wixFW';
$fw_output_name = 'new_wix_nas_firmware.img';

$abs_fw_wglog = $fw_destination.'/'.$fw_wget_log_prefix.$fw_session_id.'.wglog';
$abs_fw_wgpid = $fw_destination.'/'.$fw_wget_log_prefix.$fw_session_id.'.wgpid';
$abs_fw_wgspider = $fw_destination.'/'.$fw_wget_log_prefix.$fw_session_id.'.wgspider';
$abs_fw_output_name = $fw_destination.'/'.$fw_output_name;
?>


system_firmware_automated.php
Spoiler

#!/usr/bin/php
<?php

/**
* @version $Id: system_firmware_automated.php,v 1.1.2.14 2010/09/21 08:52:58 jason Exp $
* @author Wiley Li <wileyli@wistron.com.tw>
* @copyright Copyright © 2004 Wistron Corporation.
*/
$tabidx = 1;
$skip_check_initsetup = TRUE;
$skip_check_ready = TRUE;
require_once('guiconfig.inc');
require_once('fw_settings.inc');
require_once('dn_extra.inc');

$help_anchor = $htmlObj->Help('system', 'firmware_update');
$pgtitle = array($lang['system']['title'],
$lang['system']['firmwareupdate']['title']);
$pgtitle_omit = false;

$fw_wgpid_running = wgpid_running($abs_fw_wgpid);
$current_session_id = session_id();

$fw_download_completed = false;
if(!$fw_wgpid_running) {
if(file_exists($abs_fw_output_name)){
$wgspider_size = wgspider_size($abs_fw_wgspider);

if($wgspider_size!=''){
$fw_download_completed = (filesize($abs_fw_output_name) == $wgspider_size);
}
}
}

if($fw_wgpid_running){
$head_js = <<<EOD
<script type="text/javascript" src="/ctcs/js/prototype-1.6.0.2.js"></script>
<script type="text/javascript" src="/admin/js/ajax_dn_fw.js"></script>
EOD;
} else {
$current_php_self = $_SERVER['PHP_SELF'].$nLUS;

$msg0 = htmlspecialchars($lang['system']['message'][19]);
$msg1 = htmlspecialchars($lang['system']['firmwareupdate']['warning']);

$msg_tryagain = htmlspecialchars($lang['system']['firmwareupdate']['tryagain']);
$msg_dningnow = htmlspecialchars($lang['system']['firmwareupdate']['dningnow']);
$msg_permdenied = htmlspecialchars($lang['system']['firmwareupdate']['permdenied']);

$head_js = <<<EOD
<script type="text/javascript">
<!--
function checkNewFirmware(type, fw) {
var docRef = hidden_frame.document;
docRef.open();
docRef.write ('<html><body onload="document.forms[0].submit();">');
docRef.write ('<form name="dummyName" method="post" action="/admin/fw_chk.php?type='+type+'&fw='+fw+'">');
docRef.write ('</form>');
docRef.write ('</body></html>');
docRef.close();
return;
}

function checkNewFirmwareCallBackResult(status, msg) {
// -1: Connection refused
// 0: no upgrade available
// 1: upgrade file
if(status == -100) {
window.location.href="{$current_php_self}";
} else if(status==-1) {
document.getElementById('newfirmware').innerHTML =
'<span class="check_refused">'+msg+'</span>';
} else if(status==0) {
document.getElementById('newfirmware').innerHTML =
'<span class="check_no_available">'+msg+'</span>';
} else if(status==1) {
document.getElementById('newfirmware').innerHTML =
'<span class="check_available">'+msg+'</span>';
}

if(status==0 || status==1) {
toggleHTMLItem('checkfirmware', false);
}
}

function dnFW(url) {
var docRef = hidden_frame.document;
docRef.open();
docRef.write ('<html><body onload="document.forms[0].submit();">');
docRef.write ('<form name="dummyName" method="post" action="/admin/fw_dn_now.php?id={$current_session_id}&url='+url+'">');
docRef.write ('</form>');
docRef.write ('</body></html>');
docRef.close();
return;
}

function processDnFWCallBackResult(message) {
if(message != '') {
if(message == '__TRYAGAIN__')
alert('{$msg_tryagain}');
else if(message == '__DNINGNOW__')
alert('{$msg_dningnow}');
else if(message == '__PERMDENIED__')
alert('{$msg_permdenied}');
}
window.location.href="{$current_php_self}";
}

function onSubmit() {
return confirm("{$msg1}");
}
-->
</script>
EOD;
}

if ($_POST && !$_POST['ACKNOWLEDGE']) {
unset($info_type);
unset($message);

$info_type = __INFO_ERROR__; // tpye of default message
if (!is_array($message)) {
$dnfw = array('fw_output_name'=>$fw_output_name, 'fw_destination'=>$fw_destination);
$retval = $webHooks->Upgrade($dnfw,true);
if ($retval === false) {
$message = $webHooks->GetErrMsg();
@unlink("/etc/.fw_is_updating");
} else if($retval === -1) {
$message = $webHooks->GetErrMsg();
}

// Success
if (!isset($message)) {
$info_type = __INFO_SUCCESS__;
$message = htmlspecialchars($lang['system']['message'][1]);
} else {
$fw_download_completed = false; // set FALSE if this firmware is not valid
}
}
}
?>

<?php include('NEW_fbegin.inc'); ?>
<?php
displayPATH(array(
array('link'=>'./system_index.php'.$nLUS,
'desc'=>$lang['homepage']),
array('link'=>$_SERVER['PHP_SELF'].$nLUS,
'desc'=>$lang['system']['firmwareupdate']['title'])
));
?>
<form action="<?=$_SERVER['PHP_SELF'].$nLUS?>" method="post" enctype="multipart/form-data" name="setup_form" id="setup_form" onSubmit="return onSubmit();">
<?displayRtnMessage($info_type, $message);?>
<table cellpadding="0" cellspacing="0" class="tbSetup">
<tr>
<td>
<ul id="tabnav">
<li class="tabact">
<a href="./system_firmware_automated.php<?=$nLUS?>">
<?=htmlspecialchars($lang['system']['firmwareupdate']['automated']);?>
</a>
</li>
<li class="tabinact">
<a href="./system_firmware_manual.php<?=$nLUS?>">
<?=htmlspecialchars($lang['system']['firmwareupdate']['manual']);?>
</a>
</li>
</ul>
</td>
</tr>
<tr>
<td class="tabcont" style="text-align: left;">
<table cellpadding="0" cellspacing="0">
<tr>
<td colspan="2" class="listtopic" style="border-bottom: 2px #2365AF solid;">
<?=htmlspecialchars($lang['system']['firmwareupdate']['information']);?>
</td>
</tr>
<tr>
<td class="vncellt" style="border-bottom: 2px #2365AF solid;">
<?=htmlspecialchars($lang['system']['firmwareupdate']['desc']);?>
</td>
<td class="listr" style="border-bottom: 2px #2365AF solid;">
<?=trim(file_get_contents("/etc/fw_desc"), "\n");?>
</td>
</tr>
<tr>
<td class="vncellt" style="border-bottom: 2px #2365AF solid;">
<?=htmlspecialchars($lang['system']['firmwareupdate']['version']);?>
</td>
<td class="listr" style="border-bottom: 2px #2365AF solid;">
<?php
$isMionet = is_file('/etc/.mionet_installed');
if($isMionet) {
$mionetVer = trim(file_get_contents('/etc/.mionet_installed'));
}

if(is_file('/etc/sp')) {
$spVer = trim(file_get_contents('/etc/sp'));
if(!empty($spVer)) {
if($isMionet) {
echo $sysinfo['VER'].' SP'.$spVer.' '.str_replace('__MIONETVER__', $mionetVer, $lang['status']['system']['withmionet']);
} else {
echo $sysinfo['VER'].' SP'.$spVer;
}
} else {
if($isMionet) {
echo $sysinfo['VER'].' '.str_replace('__MIONETVER__', $mionetVer, $lang['status']['system']['withmionet']);
} else {
echo $sysinfo['VER'];
}
}
} else {
if($isMionet) {
echo $sysinfo['VER'].' '.str_replace('__MIONETVER__', $mionetVer, $lang['status']['system']['withmionet']);
} else {
echo $sysinfo['VER'];
}
}
?>
</td>
</tr>
<tr>
<td class="vncellt" style="border-bottom: 2px #2365AF solid;">
<?=htmlspecialchars($lang['system']['firmwareupdate']['builddate']);?>
</td>
<td class="listr" style="border-bottom: 2px #2365AF solid;">
<?=$sysinfo['LASTUPDATE']?>
</td>
</tr>
<tr><td colspan="2" class="vncellempty">&nbsp;</td></tr>
<tr>
<td colspan="2" class="listtopic" style="border-bottom: 2px #2365AF solid;">
<?=htmlspecialchars($lang['system']['firmwareupdate']['upgradeinfo']);?>
</td>
</tr>
<tr>
<td class="vncellt" style="border: 0;">
<?=htmlspecialchars($lang['system']['firmwareupdate']['newfirmware']);?>
</td>
<td class="listrnobg" style="border-bottom: 0;">
<? if($fw_wgpid_running): ?>
<?=htmlspecialchars($lang['system']['firmwareupdate']['fwdning']);?> [<span id="dn_fw_percentage">0%</span>]
<? elseif($fw_download_completed): ?>
<?=htmlspecialchars($lang['system']['firmwareupdate']['fwdnok']);?>
<input type="submit" name="upgradenewfwnow" id="upgradenewfwnow" value="Upgrade"/>
<? else: ?>
<div id="checkfirmware">
<input type="button" name="check_new" class="formbtn" value="<?=htmlspecialchars($lang['system']['firmwareupdate']['chkfw']);?>" onClick="checkNewFirmware('wda4nc','<?=$sysinfo['VER']?>');">
</div>
<div id="newfirmware" style="color: #FFFFFF;">
</div>
<? endif; ?>
</td>
</tr>
</table>
</td>
</tr>
</table>
<iframe name="hidden_frame" src="/blank.html" width="0" height="0" frameborder="0" framespacing="0" border="0"></iframe>
</form>
<? if($fw_wgpid_running): ?>
<script type="text/javascript">
//<![CDATA[
var progress = new AjaxProgressBar("<?=$current_session_id?>", "dn_fw_percentage", {
reload_page: "system_firmware_automated.php<?=$nLUS?>"
});
progress.start();
//]]>
</script>
<? endif; ?>
<?php include('NEW_fend.inc'); ?>


system_firmware_manual.php
Spoiler

#!/usr/bin/php
<?php

/**
* @version $Id: system_firmware_manual.php,v 1.1.2.13 2010/09/21 08:52:58 jason Exp $
* @author Wiley Li <wileyli@wistron.com.tw>
* @copyright Copyright © 2004 Wistron Corporation.
*/
$tabidx = 1;
$skip_check_initsetup = TRUE;
$skip_check_ready = TRUE;
require_once('guiconfig.inc');

$help_anchor = $htmlObj->Help('system', 'firmware_update');
$pgtitle = array($lang['system']['title'],
$lang['system']['firmwareupdate']['title']);
$pgtitle_omit = false;

$msg0 = htmlspecialchars($lang['system']['message'][19]);
$msg1 = htmlspecialchars($lang['system']['firmwareupdate']['warning']);
$head_js = <<<EOD
<script type="text/javascript">
<!--
function wixMakeForm() {
if(document.setup_form.upload.value=="") {
alert("{$msg0}");
return false
} else {
return confirm("{$msg1}");
}
return true;
}
-->
</script>
EOD;

$volList = $webHooks->conf['storage']['nasvolume'];

if ($_POST && !$_POST['ACKNOWLEDGE']) {
unset($info_type);
unset($message);

$info_type = __INFO_ERROR__; // tpye of default message
if (!is_array($message)) {
$retval = $webHooks->Upgrade($_FILES);
if ($retval === false) {
$message = $webHooks->GetErrMsg();
@unlink("/etc/.fw_is_updating");
} else if($retval === -1) {
$message = $webHooks->GetErrMsg();
}

// Success
if (!isset($message)) {
$info_type = __INFO_SUCCESS__;
if($retval == 2) {
$message = htmlspecialchars($lang['network']['message'][5]);
} else {
$message = htmlspecialchars($lang['system']['message'][1]);
}
}
}
}
?>

<?php include('NEW_fbegin.inc'); ?>
<?php
displayPATH(array(
array('link'=>'./system_index.php'.$nLUS,
'desc'=>$lang['homepage']),
array('link'=>'./system_firmware_automated.php'.$nLUS,
'desc'=>$lang['system']['firmwareupdate']['title'])
));
?>
<form action="<?=$_SERVER['PHP_SELF'].$nLUS?>" method="post" enctype="multipart/form-data" name="setup_form" id="setup_form" onSubmit="return wixMakeForm();">
<?displayRtnMessage($info_type, $message);?>
<table cellpadding="0" cellspacing="0" class="tbSetup">
<tr>
<td>
<ul id="tabnav">
<li class="tabinact">
<a href="./system_firmware_automated.php<?=$nLUS?>">
<?=htmlspecialchars($lang['system']['firmwareupdate']['automated']);?>
</a>
</li>
<li class="tabact">
<a href="./system_firmware_manual.php<?=$nLUS?>">
<?=htmlspecialchars($lang['system']['firmwareupdate']['manual']);?>
</a>
</li>
</ul>
</td>
</tr>
<tr>
<td class="tabcont" style="text-align: left;">
<table cellpadding="0" cellspacing="0">
<tr>
<td colspan="2" class="listtopic" style="border-bottom: 2px #2365AF solid;">
<?=htmlspecialchars($lang['system']['firmwareupdate']['information']);?>
</td>
</tr>
<tr>
<td class="vncellt" style="border-bottom: 2px #2365AF solid;">
<?=htmlspecialchars($lang['system']['firmwareupdate']['desc']);?>
</td>
<td class="listr" style="border-bottom: 2px #2365AF solid;">
<?=trim(file_get_contents("/etc/fw_desc"), "\n");?>
</td>
</tr>
<tr>
<td class="vncellt" style="border-bottom: 2px #2365AF solid;">
<?=htmlspecialchars($lang['system']['firmwareupdate']['version']);?>
</td>
<td class="listr" style="border-bottom: 2px #2365AF solid;">
<?php
$isMionet = is_file('/etc/.mionet_installed');
if($isMionet) {
$mionetVer = trim(file_get_contents('/etc/.mionet_installed'));
}

if(is_file('/etc/sp')) {
$spVer = trim(file_get_contents('/etc/sp'));
if(!empty($spVer)) {
if($isMionet) {
echo $sysinfo['VER'].' SP'.$spVer.' '.str_replace('__MIONETVER__', $mionetVer, $lang['status']['system']['withmionet']);
} else {
echo $sysinfo['VER'].' SP'.$spVer;
}
} else {
if($isMionet) {
echo $sysinfo['VER'].' '.str_replace('__MIONETVER__', $mionetVer, $lang['status']['system']['withmionet']);
} else {
echo $sysinfo['VER'];
}
}
} else {
if($isMionet) {
echo $sysinfo['VER'].' '.str_replace('__MIONETVER__', $mionetVer, $lang['status']['system']['withmionet']);
} else {
echo $sysinfo['VER'];
}
}
?>
</td>
</tr>
<tr>
<td class="vncellt" style="border-bottom: 2px #2365AF solid;">
<?=htmlspecialchars($lang['system']['firmwareupdate']['builddate']);?>
</td>
<td class="listr" style="border-bottom: 2px #2365AF solid;">
<?=$sysinfo['LASTUPDATE']?>
</td>
</tr>
<tr><td colspan="2" class="vncellempty">&nbsp;</td></tr>
<tr>
<td colspan="2" class="listtopic" style="border-bottom: 2px #2365AF solid;">
<?=htmlspecialchars($lang['system']['firmwareupdate']['upgradeinfo']);?>
</td>
</tr>
<tr>
<td class="vncellt" style="border: 0;">
<?=htmlspecialchars($lang['system']['firmwareupdate']['newfirmware']);?>
</td>
<td class="listrnobg" style="border-bottom: 0;">
<input type="file" name="upload" size="30" class="formfld">
</td>
</tr>
<?=$htmlObj->SubmitCancel();?>
</table>
</td>
</tr>
</table>
<table cellpadding="0" cellspacing="0" class="tbSetup">
<tr>
<td colspan="2" class="vncellempty">
<div id="warning">
<strong><?=htmlspecialchars(__STR_WARNING__);?>:</strong>
<ol>
<li><?=htmlspecialchars($lang['system']['firmwareupdate']['updatenote1']);?></li>
<li><?=str_replace('__PROJECT_NAME__', __PROJECT_NAME__, htmlspecialchars($lang['system']['firmwareupdate']['updatenote2']));?></li>
<li><?=htmlspecialchars($lang['system']['firmwareupdate']['updatenote3']);?></li>
</ol>
</div>
</td>
</tr>
</table>
<script>document.getElementById('cancel').style.display = 'none';</script>
<iframe name="hidden_frame" src="/blank.html" width="0" height="0" frameborder="0" framespacing="0" border="0"></iframe>
</form>
<?php include('NEW_fend.inc'); ?>


system_firmware_sp.php
Spoiler

#!/usr/bin/php
<?php

/**
* @version $Id: system_firmware_sp.php,v 1.3.4.1 2008/06/24 07:27:06 wiley Exp $
* @author Wiley Li <wileyli@wistron.com.tw>
* @copyright Copyright © 2004 Wistron Corporation.
*/

if(isset($_SERVER)) {
$GLOBALS['__GET'] = &$_GET;
$GLOBALS['__POST'] = &$_POST;
$GLOBALS['__SERVER'] = &$_SERVER;
$GLOBALS['__FILES'] = &$_FILES;
} elseif(isset($HTTP_SERVER_VARS)) {
$GLOBALS['__GET'] = &$HTTP_GET_VARS;
$GLOBALS['__POST'] = &$HTTP_POST_VARS;
$GLOBALS['__SERVER'] = &$HTTP_SERVER_VARS;
$GLOBALS['__FILES'] = &$HTTP_POST_FILES;
} else {
die("<B>ERROR: Your PHP version is too old</B><BR>".
"You need at least PHP 4.0.0 to run System Configuration; preferably PHP 4.3.1 or higher.");
}


// --------------------------------------------------------------------
require_once('xml.inc');

// Get Language
$lang="en"; // english by default
if(isset($GLOBALS['__GET']["lang"])) $lang=$GLOBALS['__GET']["lang"];
elseif(isset($GLOBALS['__POST']["lang"])) $lang=$GLOBALS['__POST']["lang"];

$abs_lang_file = '/proto/SxM_webui/admin/lang/'.$lang.'.xml';

if(!file_exists($abs_lang_file))
$abs_lang_file = '/proto/SxM_webui/admin/lang/en.xml'; // by default

$L = XML_unserialize(file_get_contents($abs_lang_file), "UTF-8");
$L = $L["wixnas"];
// --------------------------------------------------------------------

$timeout = 90000;
?>
<html>
<head>
<title><?=$L['fwupstatus']['title']?></title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<style type="text/css">
<!--
body {
text-align: center;
font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif;
font-size: 12px;
padding-top: 60px;
}
.mailbar {
background-image: url(image/mailerbar_bg.gif);
background-repeat: no-repeat;
height: 60px;
width: 514px;
margin-right: auto;
margin-left: auto;
}
.baritems {
padding-top: 10px;
padding-left: 7px;
text-align: left;
}
.statusbox {
background-color: #FFFFFF;
position: absolute;
left: 50%;
width: 514px;
margin-left: -257px;
height: 10px;
text-align: left;
}
.textbox {
background-color: #FFFFFF;
position: absolute;
left: 50%;
margin-left: 260px;
width: 40px;
font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif;
font-size: 14px;
font-weight: bold;
color: #999999;
text-align: right;
}

.notice {
background-color: #FFFFFF;
position: absolute;
left: 50%;
margin-left: -245px;
width: 495px;
font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif;
font-size: 14px;
color: #990000;
text-align: justify;
}
-->
</style>
</head>

<body>
<span class="notice" style="z-index:0; top: 250px; text-align: center;">
<strong><?=$L['fwupstatus']['success']?></strong>
</span>

<?php
$_IPADDR = $GLOBALS['__SERVER']['HTTP_HOST'];
$_SSL_PORT = trim(file_get_contents("/etc/port_ssl"));
$_PORT = trim(file_get_contents("/etc/port_http"));

if($_SERVER['SERVER_PORT'] == $_SSL_PORT) {
$_CUR_PORT = $_SSL_PORT;
} else { $_CUR_PORT = $_PORT; }

if(strpos($_IPADDR,':')!==false){
$_tmp = explode(':',$_IPADDR);
$_IPADDR = "{$_tmp[0]}:{$_CUR_PORT}";
}

// Address to redirect to after the loop has finished.
// Use empty string to disable redirecting
if($_SERVER['SERVER_PORT'] == $_SSL_PORT ) {
$redirect_url = "https://{$_IPADDR}/index.php?lang={$lang}";
} else {
$redirect_url = "http://{$_IPADDR}/index.php?lang={$lang}";
}

if($redirect_url != "") { ?>
<script language="javaScript" type="text/javaScript">
<!--
function go() {
top.location.href='<?php echo $redirect_url; ?>'
}
setTimeout('go()', <?=$timeout?>);
//-->
</script>
<?php } ?>
</body>
</html>


system_firmware_status.php
Spoiler

#!/usr/bin/php
<?php

/**
* @version $Id: system_firmware_status.php,v 1.15.4.7 2010/03/31 11:35:30 arsene Exp $
* @author Wiley Li <wileyli@wistron.com.tw>
* @copyright Copyright © 2004 Wistron Corporation.
*/

include_once('translate.inc');
include_once('webhooks.inc');
require_once('wixNIC.class');

$sysinfo = $webHooks->SystemInfo();

if(isset($_SERVER)) {
$GLOBALS['__GET'] = &$_GET;
$GLOBALS['__POST'] = &$_POST;
$GLOBALS['__SERVER'] = &$_SERVER;
$GLOBALS['__FILES'] = &$_FILES;
} elseif(isset($HTTP_SERVER_VARS)) {
$GLOBALS['__GET'] = &$HTTP_GET_VARS;
$GLOBALS['__POST'] = &$HTTP_POST_VARS;
$GLOBALS['__SERVER'] = &$HTTP_SERVER_VARS;
$GLOBALS['__FILES'] = &$HTTP_POST_FILES;
} else {
die("<B>ERROR: Your PHP version is too old</B><BR>".
"You need at least PHP 4.0.0 to run System Configuration; preferably PHP 4.3.1 or higher.");
}

// --------------------------------------------------------------------
require_once('xml.inc');

// Get Language
$lang="en"; // english by default
if(isset($GLOBALS['__GET']["lang"])) $lang=$GLOBALS['__GET']["lang"];
elseif(isset($GLOBALS['__POST']["lang"])) $lang=$GLOBALS['__POST']["lang"];

$abs_lang_file = '/proto/SxM_webui/admin/lang/'.$lang.'.xml';

if(!file_exists($abs_lang_file))
$abs_lang_file = '/proto/SxM_webui/admin/lang/en.xml'; // by default

$L = XML_unserialize(file_get_contents($abs_lang_file), "UTF-8");
$L = $L["wixnas"];
// --------------------------------------------------------------------


$skip_check_initsetup = TRUE;
$fdir = '/ftmp';
$kernel_status_file = "$fdir/fwud_k_status";
$rootfs_status_file = "$fdir/fwud_r_status";
$update_status = TRUE;
$update_kernel_failed = FALSE;
$update_rootfs_failed = FALSE;
$timeout = 120000;
$nicObj = new wixNIC();
$currentIP = $nicObj->getIP("egiga0");
$i = strpos($currentIP,"169.254");
if ( $i === 0 ) {
$timeout = 230000; //increase timeout value for autoip
}


sleep(1);

$display_status = TRUE;
if (!is_file($kernel_status_file) || !is_file($rootfs_status_file)) {
$display_status = FALSE;
@header("Location: system_firmware_automated.php?lang={$lang}");
}

function get_status($file, &$status){
if (!is_readable($file)) { return 0; }

$percent = file_get_contents($file);

if (trim($percent) == '-1') { // failed if got -1
$status = FALSE;
return -1;
}

if (strpos($percent, '100%') !== FALSE) {
return 100;
} else {
if (is_numeric($percent[0])) { return (int)$percent; }
}

// for end of line (or begining)
$percent = trim($percent);

// from everywhere
$percent = str_replace("\n", '', $percent);
$percent = str_replace("\r", '', $percent);

$pos = strrpos($percent, '%');
return (int)(substr($percent, ($pos - 3), 3));
}
?><html>
<head>
<title><?=__PROJECT_NAME__.' - '.$sysinfo['MNAME']?></title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<style type="text/css">
<!--
body {
text-align: center;
font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif;
font-size: 12px;
padding-top: 60px;
}
.mailbar {
background-image: url(image/mailerbar_bg.gif);
background-repeat: no-repeat;
height: 60px;
width: 514px;
margin-right: auto;
margin-left: auto;
}
.baritems {
padding-top: 10px;
padding-left: 7px;
text-align: left;
}
.statusbox {
background-color: #FFFFFF;
position: absolute;
left: 50%;
width: 514px;
margin-left: -257px;
height: 10px;
text-align: left;
}
.textbox {
background-color: #FFFFFF;
position: absolute;
left: 50%;
margin-left: 260px;
width: 40px;
font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif;
font-size: 14px;
font-weight: bold;
color: #999999;
text-align: right;
}

.notice {
background-color: #FFFFFF;
position: absolute;
left: 50%;
margin-left: -245px;
width: 495px;
font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif;
font-size: 14px;
color: #990000;
text-align: justify;
}
-->
</style>
</head>

<body>
<?php
// Flush all buffers
ob_end_flush();
flush();
?>

<?php if($display_status): ?>
<span class="notice" style="z-index:0; top: 280px;">
<strong><?=$L['common']['renmsgtype']['warning']?>:</strong><br>
&nbsp;&nbsp;&nbsp;<?=str_replace('__PROJECT_NAME__', __PROJECT_NAME__, $L['fwupstatus']['warning1']);?>
</span>
<div style="padding-top: 0px;">
<div class="statusbox" style="z-index:1; top: 65px;">
<strong>&nbsp;* <?=$L['fwupstatus']['steptitle1']?>:</strong>
</div>
<div class="mailbar">
<div class="baritems">
<span class="textbox" style="z-index:0; top: 85px;">0%</span>
<?php
$percent_now = 0;
while($update_status) {
sleep(1);
$status = TRUE;

$percent = (int) get_status($kernel_status_file, &$status);

if (!$status) { // failed
$update_status = FALSE;
$update_kernel_failed = TRUE;
break;
}

if ($percent != 100) {
$percent = $percent - mt_rand(0, 9);
}

if ($percent_now < $percent) {
$difference = $percent - $percent_now;
$percent_now = $percent;
for($i = 1; $i <= $difference; $i++) {
?><span class="textbox" style="z-index:<?=$percent_now?>; top: 85px;"><?=$percent_now?>%</span><?php
echo '<img src="image/mailerbar_single.gif" width="5" height="15">';
}
if ($percent >= 100) {
?><span class="textbox" style="z-index:100; top: 85px;">100%</span><?php
break;
}
flush();
}
}
?>
</div>
</div>
</div>

<?php if ($update_status): ?>
<div style="padding-top: 50px;">
<div class="statusbox" style="z-index:1; top: 175px;">
<strong>&nbsp;* <?=$L['fwupstatus']['steptitle2']?>:</strong>
</div>
<div class="mailbar">
<div class="baritems">
<span class="textbox" style="z-index:0; top: 195px;">0%</span>
<?php
$percent_now = 0;
while($update_status) {
sleep(1);
$status = TRUE;

$percent = (int) get_status($rootfs_status_file, &$status);

if (!$status) { // failed
$update_status = FALSE;
$update_rootfs_failed = TRUE;
break;
}

if ($percent_now < $percent) {
$difference = $percent - $percent_now;
$percent_now = $percent;
for($i = 1; $i <= $difference; $i++) {
?><span class="textbox" style="z-index:<?=$percent_now?>; top: 195px;"><?=$percent_now?>%</span><?php
echo '<img src="image/mailerbar_single.gif" width="5" height="15">';
}

if ($percent >= 100) {
?><span class="textbox" style="z-index:100; top: 195px;">100%</span><?php
break;
}
flush();
}
}
?>
</div>
</div>
</div>
<?php endif; ?>
<?php endif; ?>

<?php if ($update_kernel_failed): ?>
<span class="notice" style="z-index:0; top: 140px; text-align: center;">
<strong><?=$L['fwupstatus']['err1']?></strong>
</span>
<?php endif; ?>

<?php if ($update_rootfs_failed): ?>
<span class="notice" style="z-index:0; top: 250px; text-align: center;">
<strong><?=$L['fwupstatus']['err2']?></strong>
</span>
<?php endif; ?>

<?php if (!$update_kernel_failed&&!$update_rootfs_failed): ?>
<span class="notice" style="z-index:0; top: 250px; text-align: center;">
<strong><?=$L['fwupstatus']['success']?></strong>
</span>
<?php endif; ?>

<?php
// send event when failed to update firmware
if (!$update_status) {
@exec("/usr/sbin/wixsendevent system softwareupdate 1");
}
?>

<?php
$_IPADDR = $GLOBALS['__SERVER']['HTTP_HOST'];
$_SSL_PORT = trim(file_get_contents("/etc/port_ssl"));
$_PORT = trim(file_get_contents("/etc/port_http"));

if($_SERVER['SERVER_PORT'] == $_SSL_PORT) {
$_CUR_PORT = $_SSL_PORT;
} else { $_CUR_PORT = $_PORT; }

if(strpos($_IPADDR,':')!==false){
$_tmp = explode(':',$_IPADDR);
$_IPADDR = "{$_tmp[0]}:{$_CUR_PORT}";
}

// Address to redirect to after the loop has finished.
// Use empty string to disable redirecting
if($_SERVER['SERVER_PORT'] == $_SSL_PORT ) {
$redirect_url = "https://{$_IPADDR}/index.php?lang={$lang}";
} else {
$redirect_url = "http://{$_IPADDR}/index.php?lang={$lang}";
}

if($redirect_url != "" && $update_status) { ?>
<script language="javaScript" type="text/javaScript">
<!--
function go() {
top.location.href='<?php echo $redirect_url; ?>'
}
setTimeout('go()', <?=$timeout?>);
//-->
</script>
<?php } ?>
</body>
</html>
Спасибо сказали:
Аватара пользователя
LoWo
Сообщения: 21
ОС: маздайка

Re: Накопитель WD80000

Сообщение LoWo »

А вот скрипт для прошивки WD MyBook World Edition
unpack_fw.sh
Spoiler

#!/bin/sh
# unpack_fw.sh - written by blip@mockmoon-cybernetics.ch
# Changelog:
# 16.10.2013: Removed download since it doesn't work any longer
# 21.09.2009: Added autodetect of newest firmware version - Blip
# 04.09.2009: Corrected the bug mentioned by frater. Thank you, frater.

if [ $# -ne 1 ]; then
echo usage: $0 firmware-file
exit 1
fi
# only change if you know what you are doing. upgrade1.sh relies on this.
UPGRADE_DIR="/var/upgrade"

fw_dir="/var/upgrade_download"
fw_img="test_fw.img"
tmp_img1="$fw_dir/img.tmp.1"
tmp_img2="$fw_dir/img.tmp.2"

# Make the download directory
if [ ! -d $fw_dir ]; then
mkdir $fw_dir
if [ "$?" -ne 0 ]; then
exit 1
fi
fi
cp $1 $fw_dir/$fw_img
cd $fw_dir
# "decode" the firmware image
dd skip=0 count=1 bs=5120 if=$fw_dir/$fw_img of=$tmp_img1 2>/dev/null
dd skip=15 count=1 bs=5120 if=$fw_dir/$fw_img of=$tmp_img2 2>/dev/null
cp $fw_dir/$fw_img $fw_dir/$fw_img.orig
dd seek=0 count=1 bs=5120 if=$tmp_img2 of=$fw_dir/$fw_img 2>/dev/null
dd skip=1 seek=1 bs=5120 if=$fw_dir/$fw_img.orig of=$fw_dir/$fw_img 2>/dev/null
cp $fw_dir/$fw_img $fw_dir/$fw_img.orig
dd seek=15 count=1 bs=5120 if=$tmp_img1 of=$fw_dir/$fw_img 2>/dev/null
dd skip=16 seek=16 bs=5120 if=$fw_dir/$fw_img.orig of=$fw_dir/$fw_img 2>/dev/null
# clean up the "decoding"
rm $tmp_img1
rm $tmp_img2
rm $fw_dir/$fw_img.orig
# unpack the image
tar zxf $fw_img -C $fw_dir
# check if md5sum matches
md5sum -c upgrd-pkg-1nc.wdg.md5 > /dev/null 2>&1
if [ "$?" -ne 0 ]; then
echo "md5sum of upgrd-pkg-1nc.wdg does not match"
exit 3
fi
# execute the file - it unpacks itself to /var/upgrade
$fw_dir/upgrd-pkg-1nc.wdg
# check md5sums
cd $UPGRADE_DIR
md5sum -c md5sum.lst > /dev/null 2>&1
if [ "$?" -ne 0 ]; then
echo "some checksum error in md5sum.lst"
exit 5
fi
# then run upgrade script
echo "Now run \"nohup $UPGRADE_DIR/upgrade1.sh &\""
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20752
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Накопитель WD80000

Сообщение Bizdelnick »

LoWo писал(а):
17.12.2015 00:58
$retval = $webHooks->Upgrade($_FILES);

Надо найти определение этого метода.

Скорее всего, искать надо здесь:
LoWo писал(а):
17.12.2015 00:58
include_once('webhooks.inc');

Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
LoWo
Сообщения: 21
ОС: маздайка

Re: Накопитель WD80000

Сообщение LoWo »

Ничего там особенного нет в файле этом.
webhooks.inc
Spoiler

<?php

/**
* @version $Id: webhooks.inc,v 1.1 2006/05/10 08:45:34 wiley Exp $
* @author Wiley Li <wileyli@wistron.com.tw>
* @copyright Copyright © 2004 Wistron Corporation.
*/

require_once('wixHooks.class');

$webHooks = new wixHooks();
?>
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20752
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Накопитель WD80000

Сообщение Bizdelnick »

Значит надо смотреть wixHooks.class.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Ответить