Status page blank on DNS 323 after RC5 upgrade

3,461 views
Skip to first unread message

JavCam

unread,
Jun 30, 2016, 8:09:52 AM6/30/16
to al...@googlegroups.com
Edited: This is a simptom of the "RC5 network data corruption", see how to fix https://groups.google.com/d/msg/alt-f/cFQ6SzsK0ss/YP-yvq20CwAJ


Since RC5 upgrade, the status page only show the text "Alt-F 0.1RC5 Status Page".

Any idea?

Thanks so much!

Norbert Horváth

unread,
Jun 30, 2016, 8:38:17 AM6/30/16
to Alt-F
it seems like a common bug, there are other posts. You can help Joao by telling what your hardware is and how did you upgrade and what other symptoms did you find, if any.
In my case if I click the "Status" or other menu items a few times, sometimes it works.


Since RC5 upgrade, the status page only show the text "Alt-F 0.1RC5 Status Page help" .

JavCam

unread,
Jul 1, 2016, 6:36:11 AM7/1/16
to Alt-F
Thanks for your answer.
Seeing the view-source in chrome, i detected an error in the code (mark as red) ,Copy an paste the code in an html file, and correcting it the Status page works.
Can i correct in my Dns 323?

----
"requestfromserver('printers_st', 23)
requestfromserver('error_st', 31)
requestfromserver('news_st', 59)
}
else
arefresh = false
}
</scriptri<div"
......

João Cardoso

unread,
Jul 1, 2016, 2:30:22 PM7/1/16
to Alt-F


On Friday, 1 July 2016 11:36:11 UTC+1, JavCam wrote:
Thanks for your answer.
Seeing the view-source in chrome, i detected an error in the code (mark as red) ,Copy an paste the code in an html file, and correcting it the Status page works.
Can i correct in my Dns 323?

----
"requestfromserver('printers_st', 23)
requestfromserver('error_st', 31)
requestfromserver('news_st', 59)
}
else
arefresh = false
}
</scriptri<div"
......

I can't reproduce that in the (qemu) Simulator (I'm out of home,  no access to boxes).
What I can see on Chrome/linux is:

 
requestfromserver('printers_st', 23)
requestfromserver('error_st', 31)
requestfromserver('news_st', 59)
}
else
arefresh = false
}
</script>
<div id="st_tt" class="ttip">
 
which is correct.

You can edit the cgi script at /usr/www/cgi-bin/status.cgi after logging in as the 'root' user, same password as the webUI.
The original can be found at /rootmnt/ro/usr/www/cgi-bin/status.cgi and is not editable, as is on read-only flash memory.
If you find that they are different, and both contain the error you report, then there is some problem.
Anyway, any changes will vanish after a reboot, so to make them permanent please report back your results for further steps.
if the changes *always* works, as Norbert says that sometimes it works after navigating away from the Status and returning to Status afterwards.

And BTW, what is your DNS-323 revision level? A1, B1 or C1?

vibe...@gmail.com

unread,
Jul 2, 2016, 2:39:05 AM7/2/16
to al...@googlegroups.com

Hello.

I have the same probleme but with a DNS325 A

The status.cgi work when i put " //" after  "</script>"

"requestfromserver('printers_st', 23)
requestfromserver('error_st', 31)
requestfromserver('news_st', 59)
}
else
arefresh = false
}
</script> //
OEF"

But " //" appear in the top of status page
and error msg stay on the top too.

Thank a lot Joao for this works
Cordially

Rolf Pedersen

unread,
Jul 2, 2016, 3:04:21 AM7/2/16
to al...@googlegroups.com


On 07/01/2016 11:39 PM, vibe...@gmail.com wrote:

Hello.

I have the same probleme but with a DNS325 A

The status.cgi work when i put " //" after  "</script>"

"requestfromserver('printers_st', 23)
requestfromserver('error_st', 31)
requestfromserver('news_st', 59)
}
else
arefresh = false
}
</script> //
OEF"


I would think OEF is a typo, isn't it?  I've got EOF in Alt-F 0.1RC4.1 DNS-323 A1
End Of File, right?
Rolf

But " //" appear in the top of status page
and error msg stay on the top too.

Thank a lot Joao for this works
Cordially

Le 01/07/2016 à 20:30, João Cardoso a écrit :
which is correct.

You can edit the cgi script at /usr/www/cgi-bin/status.cgi after logging in as the 'root' user, same password as the webUI.
The original can be found at /rootmnt/ro/usr/www/cgi-bin/status.cgi and is not editable, as is on read-only flash memory.
If you find that they are different, and both contain the error you report, then there is some problem.
Anyway, any changes will vanish after a reboot, so to make them permanent please report back your results for further steps.
if the changes *always* works, as Norbert says that sometimes it works after navigating away from the Status and returning to Status afterwards.

And BTW, what is your DNS-323 revision level? A1, B1 or C1?


--
You received this message because you are subscribed to the Google Groups "Alt-F" group.
To unsubscribe from this group and stop receiving emails from it, send an email to alt-f+un...@googlegroups.com.
Visit this group at https://groups.google.com/group/alt-f.
For more options, visit https://groups.google.com/d/optout.

vibe...@gmail.com

unread,
Jul 2, 2016, 3:12:48 AM7/2/16
to al...@googlegroups.com

I don't no,  but when I change "</script>" to "</script><//>" Status page is fine.

lucien

unread,
Jul 2, 2016, 4:49:09 AM7/2/16
to Alt-F


Le samedi 2 juillet 2016 09:12:48 UTC+2, lucien a écrit :

I don't no,  but when I change "</script>" to "</script><//>" Status page is fine.

Yes EOF not OEF.
Sorry.

João Cardoso

unread,
Jul 2, 2016, 11:49:01 AM7/2/16
to Alt-F


On Saturday, 2 July 2016 07:39:05 UTC+1, lucien wrote:

Hello.

I have the same probleme but with a DNS325 A

The status.cgi work when i put " //" after  "</script>"


Sorry, that makes no sense... tabs are very important, it is EOF and not OEF, and no character (not even a space) must exists after the EOF

Better use the shipped cgi script and check the generated status page at https://validator.w3.org/#validate_by_input, a browser agnostic html validator. That's what I use.

To remove edited copies of files shipped on the firmware use System->Utilities->Fixes, RemoveAll. That is done automatically as flash time, to guarantee that what is in use is what comes with the new fw and not leftovers from previous versions.

I have a DNS-325-rev-A1 that works fine with Chrome and Firefox on linux, but I can only recheck it again next week.

vibe...@gmail.com

unread,
Jul 2, 2016, 11:56:46 AM7/2/16
to al...@googlegroups.com

When I put "<//>" after "</script>" in status.cgi, Status page is OK for me (under firefox).

Cordialy

Charles Guo

unread,
Jul 2, 2016, 7:21:23 PM7/2/16
to al...@googlegroups.com
Same issue like JavCam.
Model: DNS-323-B1
Update from RC 4 to RC5 and the status page was empty. It display fine sometimes.
Add "<//>" after "</script>" in status.cgi file fix the issue.

I can see the markup is broken while I view HTML source:

function frefresh(obj) {
arg = obj.checked == true ? "yes" : "no"

if (arg == "yes") {
arefresh = true
requestfromserver('systems_st', 11)
requestfromserver('network_st', 11)
requestfromserver('disks_st', 13)
requestfromserver('raid_st', 13)
requestfromserver('mounted_filesystems_st', 17)
requestfromserver('mounted_remote_filesystems_st', 17)
requestfromserver('remotely_mounted_filesystems_st', 19)
requestfromserver('backup_st', 19)
requestfromserver('filesystem_maintenance_st', 23)
requestfromserver('printers_st', 23)
requestfromserver('error_st', 31)
requestfromserver('news_st', 59)
}
else
arefresh = false
}
</scriptri<div id="st_tt" class="ttip">Checking this will refresh different sections in the page every 10 to 20 seconds.<br>
This consumes CPU, so if you are waiting for something lengthly to accomplish<br>
it will actually take more time if autorefresh is enabled.</div>

João Cardoso

unread,
Jul 2, 2016, 9:27:54 PM7/2/16
to Alt-F


On Sunday, 3 July 2016 00:21:23 UTC+1, Charles wrote:
Same issue like JavCam.
Model: DNS-323-B1
Update from RC 4 to RC5 and the status page was empty. It display fine sometimes.
Add "<//>" after "</script>" in status.cgi file fix the issue.

OK, the fix is independently confirmed to work, but I can't reproduce it nor identify the issue origin. And by nature I will not apply a fix that I don't understand.
Where is the fault? In the cgi script or in the browser that interprets its output and displays the erroneous html that you see?
It's easy to see where the fault is, just login the box and do

wget -O status.out http://localhost/cgi-bin/status.cgi

then examine the status.out generated file and see if the
</scriptri<div
error appears.
If it does, the culprit is indeed the cgi script, and I (we?) need to find where the error is so the
<//>
 is needed.

And I even glimpsed the html4 spec https://www.w3.org/TR/html4/appendix/notes.html#h-B.3.2 (see the highlight red box example), quoting:

When script or style data is the content of an element (SCRIPT and STYLE), the data begins immediately after the element start tag and ends at the first ETAGO ("</") delimiter followed by a name start character ([a-zA-Z]); note that this may not be the element's end tag. Authors should therefore escape "</" within the content. Escape mechanisms are specific to each scripting or style sheet language.

Is this the issue origin? where?

Thanks.

vibe...@gmail.com

unread,
Jul 3, 2016, 4:14:55 AM7/3/16
to al...@googlegroups.com

HI

"wget -O status.out http://localhost/cgi-bin/status.cgi" return that

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head profile="http://www.w3.org/2005/10/profile">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="icon" type="image/png" href="../dns-323.png">
<title>Alt-F 0.1RC5 Status Page</title>
<style type="text/css">
.bgl {text-align: center; font-weight: bold; width: 100px; }
</style>
<link rel="stylesheet" type="text/css" href="/scripts/dull/dull.css">
<script type="text/javascript" src="/scripts/dull/dull.js"></script>
</head>
<body >
<script type="text/javascript">
var menu = new Array();
var men = {label:"Logout", url:"/cgi-bin/logout.cgi"};
menu.push(men);
men = {label:"Status", url:"/cgi-bin/status.cgi"};
menu.push(men);
men = {label:"Shortcuts", smenu:[{item:"Add", url:"\"\" onclick=\"return addbookmark()\""},
{item:"Remove", url:"\"\" onclick=\"return rmbookmark()\""},
{item:"Remove All", url:"\"\" onclick=\"return rmall()\""},
{item:"<hr>", url:"#"},
]};
menu.push(men);
men = {label:"Setup", smenu:[{item:"Host", url:"host.cgi "},
{item:"Time", url:"time.cgi"},
{item:"Mail", url:"mail.cgi"},
{item:"Proxy", url:"proxy.cgi"},
{item:"Hosts", url:"hosts.cgi"},
{item:"Users", url:"usersgroups.cgi"},
{item:"Debian", url:"debian.cgi"},
{item:"Folders", url:"browse_dir.cgi?wind=no?browse=/mnt"},
]};
menu.push(men);
men = {label:"Disk", smenu:[{item:"Utilities", url:"diskutil.cgi"},
{item:"Filesystems", url:"diskmaint.cgi"},
{item:"RAID", url:"raid.cgi"},
{item:"Partitioner", url:"diskpart.cgi"},
{item:"Wizard", url:"diskwiz.cgi"},
{item:"Quotas", url:"quota.cgi?admin=admin"},
]};
menu.push(men);
men = {label:"Services", smenu:[{item:"Network", url:"net_services.cgi"},
{item:"System", url:"sys_services.cgi"},
{item:"User", url:"user_services.cgi"},
]};
menu.push(men);
men = {label:"Packages", smenu:[{item:"Alt-F", url:"packages_ipkg.cgi"},
{item:"ffp", url:"packages_ffp.cgi"},
]};
menu.push(men);
men = {label:"System", smenu:[{item:"Utilities", url:"sys_utils.cgi"},
{item:"Settings", url:"settings.cgi"},
{item:"Firmware", url:"firmware.cgi"},
{item:"About", url:"about.cgi"},
]};
menu.push(men);
menuSetup("top","");
</script>
<div id="tt_help" class="ttip">Get a descriptive help</div>
<div id="tt_settings" class="ttip"></div>
<h2 class="title">Alt-F 0.1RC5 Status Page <a href="../status_hlp.html" onmouseover="popUp(event,'tt_help')" onmouseout="popDown('tt_help')"><img src="../help.png" alt="help" border=0></a></h2>


<noscript>
<p class="error"><strong>
JavaScript is needed by Alt-F web pages, and you don't have it enabled.<br>
See <a href="http://www.enable-javascript.com" target="_blank">
how to enable JavaSCript</a> on your browser.
</strong></p>
</noscript>
<script type="text/javascript">
arefresh = false
function requestfromserver(target, refresh) {
var req = new XMLHttpRequest();               
if (req == null)
return;

req.onreadystatechange = function() {
if (req.readyState != 4) return; // only if req is "loaded"
if (req.status != 200) return; // only if "OK"
document.getElementById(target).innerHTML = req.responseText;
delete req;
if (arefresh == true && refresh != 0)
setTimeout(    function() {requestfromserver(target, refresh);}, refresh * 1000);
}
url="/cgi-bin/status.cgi?refresh=" + target
req.open("GET", url, true);
req.send();


}

function frefresh(obj) {
arg = obj.checked == true ? "yes" : "no"

if (arg == "yes") {
arefresh = true
requestfromserver('systems_st', 11)
requestfromserver('network_st', 11)
requestfromserver('disks_st', 13)
requestfromserver('raid_st', 13)
requestfromserver('mounted_filesystems_st', 17)
requestfromserver('mounted_remote_filesystems_st', 17)
requestfromserver('remotely_mounted_filesystems_st', 19)
requestfromserver('backup_st', 19)
requestfromserver('filesystem_maintenance_st', 23)
requestfromserver('printers_st', 23)
requestfromserver('error_st', 31)
requestfromserver('news_st', 59)
}
else
arefresh = false
}
</script>

<div id="st_tt" class="ttip">Checking this will refresh different sections in the page every 10 to 20 seconds.<br>
This consumes CPU, so if you are waiting for something lengthly to accomplish<br>
it will actually take more time if autorefresh is enabled.</div>

<div id="error_st">
<fieldset><legend class="red">Errors/Warnings</legend>
<form action="/cgi-bin/sys_utils_proc.cgi" method="post">
Examine and Clear the error/warning messages:
<input type=submit name="logaction" value="/var/log/systemerror.log">
</form>
<ul><li>Your md0 raid1 device is degraded!</li></ul>
</fieldset>
</div>
<div id="news_st">
</div>
<div id="systems_st">
<fieldset><legend>System</legend>
<table><tr>
<td><div class="bgl">Temperature</div> <div class="meter-wrap">
<div class="meter-value" style="background-color: #6F6; width: 70%;">
<div class="meter-text" style="color: #000;">38.0&deg;C/100&deg;F</div>
</div>
</div></td>
<td><div class="bgl">Fan speed</div> <div class="meter-wrap">
<div class="meter-value" style="background-color: #6F6; width: 50%;">
<div class="meter-text" style="color: #000;">3000</div>
</div>
</div></td>
<td><div class="bgl">Load</div> <div class="meter-wrap">
<div class="meter-value" style="background-color: #6F6; width: 73%;">
<div class="meter-text" style="color: #000;">1.47</div>
</div>
</div></td>
<td><div class="bgl">CPU</div> <div class="meter-wrap">
<div class="meter-value" style="background-color: #F66; width: 100%;">
<div class="meter-text" style="color: #FFF;">100%</div>
</div>
</div></td>
<td><div class="bgl">Memory</div> <div class="meter-wrap">
<div class="meter-value" style="background-color: #6F6; width: 86%;">
<div class="meter-text" style="color: #000;">86% of 256MB</div>
</div>
</div></td>
<td><div class="bgl">Swap</div> <div class="meter-wrap">
<div class="meter-value" style="background-color: #6F6; width: 0%;">
<div class="meter-text" style="color: #000;">0% of 517MB</div>
</div>
</div></td>
</tr><tr>
<td colspan=2><strong>Name:</strong> HDSAVE-DNS-325</td><td></td>
<td colspan=2><strong>Model:</strong> DNS-325-Ax</td><td></td>
</tr><tr>
<td colspan=3><strong>Date:</strong> Sun Jul  3 10:12:41 CEST 2016</td>
<td colspan=2><strong>Uptime:</strong> 0 day(s) 0 hour(s)</td><td></td>
</tr></table></fieldset>
</div>
<div id="network_st">
<fieldset><legend>Network</legend>
<strong>Speed:</strong>1000Mbps
<strong>Duplex:</strong>full
<strong>MTU:</strong>1500
<strong>TX:</strong>244.3KiB
<strong>Rx:</strong>234.9KiB
<strong>IP:</strong>192.168.0.171

</fieldset>
</div>
<div id="disks_st">
<fieldset><legend>Disks</legend>
<table><tr><th align=left>Bay</th>
<th>Dev.</th>
<th>Model</th>
<th>Capacity</th>
<th>Power Status</th>
<th>Temp</th>
<th>Health</th>
</tr>
<tr align=center>
<td align=left>left</td>
<td>sda</td>
<td align=left>WDC WD30EZRX-00DC0B0</td>
<td> 3.0TB </td>
<td id=sda_pstatus_id>  active or idle </td>
<td id=sda_temp_id> 35&deg;C/95&deg;F </td>
<td id=sda_health_id> <span class=black>passed</span> </td>
</tr>
<tr align=center>
<td align=left>right</td>
<td>sdb</td>
<td align=left>WDC WD15EARS-00Z5B1</td>
<td> 1.5TB </td>
<td id=sdb_pstatus_id>  active or idle </td>
<td id=sdb_temp_id> 36&deg;C/96&deg;F </td>
<td id=sdb_health_id> <span class=black>passed</span> </td>
</tr>
<tr align=center>
<td align=left>usb</td>
<td>sdc</td>
<td align=left>HDT725032VLAT80</td>
<td> 320.1GB </td>
<td id=sdc_pstatus_id> -- </td>
<td id=sdc_temp_id> -- </td>
<td id=sdc_health_id> -- </td>
</tr>
</table></fieldset>
</div>
<div id="raid_st">
<fieldset><legend>RAID</legend>
<table><tr align=center>
<th align=left>Dev.</th>
<th>Capacity</th>
<th>Level</th><th>State</th>
<th>Status</th><th>Action</th>
<th>Done</th><th>ETA</th>
         </tr>
<tr align=center>
<td align=left>md0</td>
<td>0.5GB</td>
<td>raid1</td>
<td>clean</td>
<td><span class="red">degraded</span></td>
<td>idle</td>
<td align=left></td>
<td></td>
</tr>
</table></fieldset>
</div>
<div id="mounted_filesystems_st">
<fieldset><legend>Mounted Filesystems</legend>
<table><tr align=center>
<th>Dev.</th>
<th>Label</th>
<th>Capacity</th><th>Available</th>
<th>FS</th><th>Mode</th>
<th>Dirty</th><th>Automatic FSCK in</th>
</tr>
<tr>
<td>sda2</td>
<td></td>
<td align=right>2.7TB</td>
<td><div class="meter-wrap">
<div class="meter-value" style="background-color: #6F6; width: 66%;">
<div class="meter-text" style="color: #000;">936.8GB</div>
</div>
</div></td>
<td>ext4</td>
<td>RW</td>
<td><span class="red"></span> </td>
<td>11 mounts or 65 days</td>
</tr>
<tr>
<td>sda4</td>
<td></td>
<td align=right>460.6MB</td>
<td><div class="meter-wrap">
<div class="meter-value" style="background-color: #6F6; width: 1%;">
<div class="meter-text" style="color: #000;">452.4MB</div>
</div>
</div></td>
<td>ext4</td>
<td>RW</td>
<td><span class="red"></span> </td>
<td>10 mounts or 65 days</td>
</tr>
<tr>
<td>sdb2</td>
<td></td>
<td align=right>1.3TB</td>
<td><div class="meter-wrap">
<div class="meter-value" style="background-color: #6F6; width: 40%;">
<div class="meter-text" style="color: #000;">824.5GB</div>
</div>
</div></td>
<td>ext4</td>
<td>RW</td>
<td><span class="red"></span> </td>
<td>16 mounts or 75 days</td>
</tr>
<tr>
<td>sdb4</td>
<td></td>
<td align=right>476.3MB</td>
<td><div class="meter-wrap">
<div class="meter-value" style="background-color: #6F6; width: 1%;">
<div class="meter-text" style="color: #000;">468.8MB</div>
</div>
</div></td>
<td>ext4</td>
<td>RW</td>
<td><span class="red"></span> </td>
<td>13 mounts or 65 days</td>
</tr>
<tr>
<td>sdc1</td>
<td>Philips External</td>
<td align=right>293.3GB</td>
<td><div class="meter-wrap">
<div class="meter-value" style="background-color: #6F6; width: 14%;">
<div class="meter-text" style="color: #000;">252.4GB</div>
</div>
</div></td>
<td>ext4</td>
<td>RW</td>
<td><span class="red"></span> </td>
<td>8 mounts or 65 days</td>
</tr>
</table></fieldset>
</div>
<div id="mounted_remote_filesystems_st">
</div>
<div id="remotely_mounted_filesystems_st">
<fieldset><legend>Remotely Mounted Filesystems</legend>
<table><tr align=center>
<th>Host</th>
<th>Share</th>
<th>FS</th>
</tr>
<tr><td>pc-luc</td><td>volume_1     </td><td>cifs</td></tr>
<tr><td>pc-luc</td><td>volume_2     </td><td>cifs</td></tr>
</table></fieldset>
</div>
<div id="backup_st">
</div>
<div id="filesystem_maintenance_st">
</div>
<div id="printers_st">
</div>
    <form action="">
Autorefresh <input type=checkbox name="arefresh" value="yes" onclick="frefresh(this)" onmouseover="popUp(event,'st_tt')" onmouseout="popDown('st_tt')">
    </form></body></html>

-- You received this message because you are subscribed to the Google Groups "Alt-F" group. To unsubscribe from this group and stop receiving emails from it, send an email to alt-f+un...@googlegroups.com. Visit this group at https://groups.google.com/group/alt-f. For more options, visit https://groups.google.com/d/optout.

lucien

unread,
Jul 3, 2016, 4:24:17 AM7/3/16
to al...@googlegroups.com

Line 20  "JavaScript is needed by Alt-F web pages, and you don't have it enabled.<br>"

without "."  before "<br> and without another mod, status page work fine or with a space after "." and "<br />" instead of "<br>" and without another mod, status page work fine too.

"JavaScript is needed by Alt-F web pages, and you don't have it enabled. <br />" work fine for me on (Windows 10 and Firefox 47 or Edge or IE11) or (Windows 7 and Firefox 47 or IE11)

https://developer.mozilla.org/fr/docs/Web/HTML/Element/br "Omission de balises Doit avoir une balise d'ouverture, et aucune balise de fermeture. Dans les documents XHTML, écrivez cet élément <br />."

lucien

unread,
Jul 3, 2016, 7:37:01 AM7/3/16
to Alt-F
On android 4.4.2 and firefox 47,
before and after the changes, the two versions It Works


Le jeudi 30 juin 2016 14:09:52 UTC+2, JavCam a écrit :
Since RC5 upgrade, the status page only show the text "Alt-F 0.1RC5 Status Page help" .

JavCam

unread,
Jul 4, 2016, 4:09:21 AM7/4/16
to Alt-F
Ok , with <//> status page works fine, my box is a DNS 323-A1.



El jueves, 30 de junio de 2016, 14:09:52 (UTC+2), JavCam escribió:
Since RC5 upgrade, the status page only show the text "Alt-F 0.1RC5 Status Page help" .

JavCam

unread,
Jul 4, 2016, 7:02:57 AM7/4/16
to Alt-F
Lucien`s solution it`s ok for me too, DNS 323-A1 : JavaScript is needed by Alt-F web pages, and you don't have it enabled. <br />

but NOT works:

JavaScript is needed by Alt-F web pages, and you don't have it enabled. <br/>  

JavaScript is needed by Alt-F web pages, and you don't have it enabled.<br/>

JavaScript is needed by Alt-F web pages, and you don't have it enabled.<br />

Must have a space after "." an after "<br"

JavCam

unread,
Jul 4, 2016, 7:16:17 AM7/4/16
to Alt-F
other Lucien`s option also works, JavaScript is needed by Alt-F web pages, and you don't have it enabled<br>


El domingo, 3 de julio de 2016, 10:24:17 (UTC+2), lucien escribió:

João Cardoso

unread,
Jul 4, 2016, 9:49:17 AM7/4/16
to al...@googlegroups.com


On Sunday, 3 July 2016 09:24:17 UTC+1, lucien wrote:

Line 20  "JavaScript is needed by Alt-F web pages, and you don't have it enabled.<br>"

without "."  before "<br> and without another mod, status page work fine or with a space after "." and "<br />" instead of "<br>" and without another mod, status page work fine too.

Thanks for hunting it down.

But does it makes sense? adding a space before the '.'? And Alt-F has not a single "<br />".

But I was able to reproduce the issue on an old win-6 machine on several browsers!

To me, the issue is caused by browsers. The fact that sometimes it works and others not, together with the correct html generated by the status.cgi script (but shown as invalid on the browser source code view) pointed me in that direction.

The (browsers) issue seems to be bad code reuse from the <script> and <noscript> elements; accordingly to the 4.01 standard, the first can't have '</' before the closing </script>, while the second can. I.e., within a <script> no end tag is allowed, but on a <noscript> it is allowed (the standard even gives examples of <noscript> with end tags).
But I might be misreading the standard.

So I escaped (highlighted in red) the three existing end tags within the <noscript> code as:

jscripts() {
cat<<-EOF
<noscript>
<p class="error"><strong>
JavaScript is needed by Alt-F web pages, and you don't have it enabled.<br>
See <a href="http://www.enable-javascript.com" target="_blank">
how to enable JavaSCript<\/a> on your browser.
<\/strong><\/p>
</noscript>
<script type="text/javascript">

and it started working on all browsers I tested in win-6 that failed before.

Can you please try and confirm on your prefered browser? I can release a fix to cure this.

Thanks!
João

vibe...@gmail.com

unread,
Jul 4, 2016, 1:43:24 PM7/4/16
to al...@googlegroups.com

Hello

adding escaped works on all tested configurations.

Joao thank you very much.



Le 04/07/2016 à 15:49, João Cardoso a écrit :
Thanks for hunting it down.

But does it makes sense? adding a space before the '.'? And Alt-F has not find a single "<br />".

But I was able to reproduce the issue on an old win-6 machine on several browsers!

To me, the issue is caused by browsers. The fact that sometimes it works and others not, together with the correct html generated by the status.cgi script (but shown as invalid on the browser source code view) pointed me in that direction.

The (browsers) issue seems to be bad code reuse from the <script> and <noscript> elements; accordingly to the 4.01 standard, the first can't have '/>' before the closing </script>, while the second can. I.e., within a <noscript> no end tag is allowed, but on a <noscript> it is allowed (the standard even gives examples of <noscript> with end tags).
But I might be misreading the standard.

So I escaped (highlighted in red) the existing end tags within the <noscript> code as:

João Cardoso

unread,
Jul 4, 2016, 2:02:19 PM7/4/16
to Alt-F


On Monday, 4 July 2016 18:43:24 UTC+1, lucien wrote:

Hello

adding escaped works on all tested configurations.


Thanks.

JavCam, Charles, Norbert et all... any feedback would be appreciated.

JavCam

unread,
Jul 5, 2016, 3:09:09 AM7/5/16
to Alt-F
The error is a mystery, because for  work status page, only have to write 3 or more characters where you want or delete 3 or more characters.

For example:

I write three "a" marked in red , the status page works, however if i write two "a" the status page don't work

<noscript>
<p class="error"><strong>
JavaScript is needed by Alt-F web pages, and you don't have it enabled.<br>
See <a href="http://www.enable-javascript.com" target="_blank">
how to enable JavaSCript</a> on your browser.
</strong></p>a
</noscript>
<script type="text/javascript">a
arefresh = false
function requestfromserver(target, refresh) {
var req = new XMLHttpRequest();    
if (req == null)
return;

req.onreadystatechange = function() {
if (req.readyState != 4) return; // only if req is "loaded"
if (req.status != 200) return; // only if "OK"
document.getElementById(target).innerHTML = req.responseText;
delete req;
if (arefresh == true && refresh != 0)
setTimeout( function() {requestfromserver(target, refresh);}, refresh * 1000);
}
url="/cgi-bin/status.cgi?refresh=" + target
req.open("GET", url, true);
req.send();
}
a
function frefresh(obj) 


Other example if i'll delete "/p>" (three characters) in noscript section the status page works also.

noscript>
<p class="error"><strong>
JavaScript is needed by Alt-F web pages, and you don't have it enabled.<br>
See <a href="http://www.enable-javascript.com" target="_blank">
how to enable JavaSCript</a> on your browser.
</strong><   

Why? I don't know, 

JavCam

unread,
Jul 5, 2016, 3:18:18 AM7/5/16
to Alt-F
This works for my DNS 323-A1, João

Jefta

unread,
Jul 6, 2016, 3:21:39 PM7/6/16
to Alt-F
Hello,

If I can add something interesting ..

I've got  DNS323-B1 and Status don't work on HTTP but all is OK on HTTPS.. strange ..

J.

Bill Rosenberg

unread,
Jul 7, 2016, 12:18:48 AM7/7/16
to Alt-F
I see the same thing. In fact when I look at the status.cgi file that the browser fetches (MS Edge), the HTTP version has the "</scriptri<div" error mentioned earlier and the HTTPS does not. So I don't think we are dealing with an issue with the file but instead the issue is with the webserver itself.

HTTPS:
</script>
<div id="st_tt" class="ttip">Checking this will refresh different sections in the page every 10 to 20 seconds.<br>

HTTP:
</scriptri<div id="st_tt" class="ttip">Checking this will refresh different sections in the page every 10 to 20 seconds.<br>

This is the only place the files are different. I suspect it has something to do with segmentation, and all the changes proposed previously (which are before this line) may just be moving the corruption point around to a place where the script still works.

Bill Rosenberg

unread,
Jul 7, 2016, 1:12:54 AM7/7/16
to Alt-F
The corruption happens when there is TCP segmentation. In this case a small HTTP continuation message (264 bytes) is being segmented into a 2 byte followed by a 262 byte TCP message and being corrupted in the process. I have no idea why such a small message is getting segmented.

The previous HTTP continuation message has the "...</script" portion at the end and the next HTTP continuation message has "ri" in the first segment and "<div..." in the second. It is very strange. If you know how to use Wireshark look at frames 32 and 34 in the attachment. Beyond this I don't know how to narrow down the source of this corrupted segmentation (webserver? kernel?).
RC5 status page 1.pcapng

João Cardoso

unread,
Jul 7, 2016, 11:16:32 AM7/7/16
to al...@googlegroups.com


On Thursday, 7 July 2016 06:12:54 UTC+1, Bill Rosenberg wrote:
The corruption happens when there is TCP segmentation.

Then wouldn't most file transmission, on any protocol,  be in error? why just the status page? Why not ftp/ssh/samba/etc?
 
In this case a small HTTP continuation message (264 bytes) is being segmented into a 2 byte followed by a 262 byte TCP message and being corrupted in the process. I have no idea why such a small message is getting segmented.

The previous HTTP continuation message has the "...</script" portion at the end and the next HTTP continuation message has "ri" in the first segment and "<div..." in the second. It is very strange. If you know how to use Wireshark look at frames 32 and 34 in the attachment. Beyond this I don't know how to narrow down the source of this corrupted segmentation (webserver? kernel?).

I only have basic networking knowledge at that level, but if it were the kernel, wouldn't most file transmissions be in error? why only http? and the status page in particular?
On the other side, the http server has no knowledge of https, https is handled by a separate process (stunnel) that tunnels data to/from the normal http server.

And if you add or remove a single character to the file, before the spot in question, wouldn't the segmentation occur a single char ahead/behind of what occurs now? Do you observe that?

That http/https possible TCP segmentation issues rises a completely new aspect to the issue, certainly. Too exoteric... at the application level? hmmm

Reducing the frame size to, say 200 bytes, wouldn't  aggravate the issue? On all protocols?
I think that TCP segmentation is handled offload by the hardware, not directly by the kernel. 'ethtool' says on a DNS-325:

[root@DNS-325]# ethtool --show-offload eth0
Features for eth0:
...
tcp-segmentation-offload: on
        tx-tcp-segmentation: on
        tx-tcp-ecn-segmentation: off [fixed]
        tx-tcp6-segmentation: off [fixed]


Don't know what to think. I was setting up an automatic fix to RC5 based on my escaping of end tags within the noscript content.
If it were not your factual observations, I would believe the issue to be in the <noscript> contents. All user tests add or remove characters in that file section (which is entirely optional, BTW, as javascript is certainly enabled on all browsers)

???

Bill Rosenberg

unread,
Jul 7, 2016, 7:37:12 PM7/7/16
to Alt-F
My Linux debugging skills are not that great (I am primarily a protocol guy) but I will do what I can to assist here. What I did try is changing the frame size in the host setup page from 1500 to 1480 and the status page now loads using HTTP. As far as I can tell there is no corruption of the page either (no TCP segmentation seen in a packet capture.) I'm not sure what this means yet but I think we are getting closer.

I wonder if this is the same issue from another thread about problems streaming video files with RC5.

Paulo Elifaz Andrielli

unread,
Jul 7, 2016, 8:37:46 PM7/7/16
to al...@googlegroups.com

Hummmm about the video files....

In that case, I should increase the jumbo frames toore than 1500 (used by old devices, and kept this value due to compatibility).

I will set to 3000, and see how it goes with the videofiles.....

[]'s
Paulo
sent from Android

Em 07/07/2016 20:37, "Bill Rosenberg" <bill_ro...@hotmail.com> escreveu:
My Linux debugging skills are not that great (I am primarily a protocol guy) but I will do what I can to assist here. What I did try is changing the frame size in the host setup page from 1500 to 1480 and the status page now loads using HTTP. As far as I can tell there is no corruption of the page either (no TCP segmentation seen in a packet capture.) I'm not sure what this means yet but I think we are getting closer.

I wonder if this is the same issue from another thread about problems streaming video files with RC5.

--

Bill Rosenberg

unread,
Jul 7, 2016, 9:36:21 PM7/7/16
to Alt-F
João,

I have more interesting data. I installed ethtool and turned tcp-segmentation-offload "off" with the following command:

ethtool -K eth0 tso off

Now the status page loads with a 1500 frame size. If I go back to the original value of "on" the page fails to load again.

ethtool -K eth0 tso on

I think this is all pointing to a kernel problem.

João Cardoso

unread,
Jul 8, 2016, 10:42:31 AM7/8/16
to Alt-F
Yes. Looks like the kernel is badly configuring the SoC hardware tcp-segmentation-offload. Permanently disabling that will degrade the box performance... would setting a lower default MTU (with hw tcp-segmentation enabled) solve all (see bellow) issues?

That could explain the video pixelation already reported on this forum or the data corruption bug reported on ticket 386 and it rebates my counter-arguments why only the status page (and not other protocols) are affected.

It however remains to be explained why didn't I notice that during my (mostly NFS/FTP) transfers between my linux box and the 5 NAS I have... are my NFS backups compromised? I have been using RC5 routinely for some 8 months now.

The 323 is a Marvell Orion SoC architecture, shared with the 321; the 320/320L/325 have a Kirkwood SoC architecture that shares some of the Orion architecture and code (does the issue affect also those machines?); the 327 is a new Armada architecture, should not be affected.
"recently" there has been some changes at the kernel level on how to deal with similar/identical SoCs, the "Device Tree", and some code reorganization happened. Perhaps that could explains the issue (the 323/321 still uses the old kernel infrastructure) -- this is just me just talking to myself.


João Cardoso

unread,
Jul 8, 2016, 1:18:12 PM7/8/16
to Alt-F
This seems to be a recurring issue, see the Linux 4.3 Changelog:

 net: mv643xx_eth: TSO TX data corruption fixes
    
    as previously discussed [1] the mv643xx_eth driver has some
    issues with data corruption when using TCP segmentation offload (TSO)

The mv643xx_eth driver applies to our box. 

Also, I found a reference on TCP segmentation offload on kernel 3.16.0

The IBM Knowledge Center recommends:
To support TCP segmentation offload (TSO), a network device must support outbound (TX) checksumming and scatter gather. For this reason, you must turn on scatter gather and outbound checksumming prior to configuring TSO. All three options can be turned on or off with a single ethtool command of the form:
# ethtool -K <interface_name> tx <value> sg <value> tso <value>

And others.

Still to know if they apply exactly to our box and which boxes models/rev are a target. Users feedback needed.

I just ftp transferred back and forth 92 files totaling 4.4GB between my linux desktop PC and a DNS-323-B1, 1500 MTU/TSO on/1 Gbps network, without any data corruption. The same test using SMB (smbclient) translated on 2 file corruptions!
I will repeat the tests with a larger number of smaller files and other protocols, but file corruption using samba seems to be confirmed.


Norbert Horváth

unread,
Jul 8, 2016, 4:20:53 PM7/8/16
to Alt-F
Actually, I am dealing with some data corruption problem on my DNS-320-A1, I thought of everything that can be the cause, but did not came here to search till now, my bad. This morning I copied photos to my NAS (smb) and out of about 10 files at least 3 were corrupted, it was repeatable, it happened every time, but with different files. Now I reconfigured my network to the original state (tried just about everything in the afternoon) and smb copy (win7->nas) still corrupts data. It is quite random which and how many files, but there are about 10 corrupt files of 200 so if you are affected, you will get errors soon. Trying "ethtool -K eth0 tso off" with the same files, it seems that the problem either disappeared or became much less frequent, no corrupt files yet.

João Cardoso

unread,
Jul 8, 2016, 5:20:39 PM7/8/16
to Alt-F


On Friday, 8 July 2016 21:20:53 UTC+1, Norbert Horváth wrote:
Actually, I am dealing with some data corruption problem on my DNS-320-A1, I thought of everything that can be the cause, but did not came here to search till now

You are right, and I have opened a new topic with an adequate subject.
Although intimately related, this discussion is going off-topic.

yannick...@gmail.com

unread,
Jul 20, 2016, 6:28:16 AM7/20/16
to Alt-F
Hello,
how can I edit this file and where is it located?
I've a DNS-320L revA and I've the same problem with the status page with RC5.
Thank you.

vibe...@gmail.com

unread,
Jul 20, 2016, 6:41:22 AM7/20/16
to al...@googlegroups.com

Hello

Use "ethtool -K eth0 tso off" in script user

Tom Cadorette

unread,
Jul 23, 2016, 10:45:07 PM7/23/16
to Alt-F

A minor cosmetic bug, in addition to the non-appearance of the status (which I am also having, a DNS-323 Rev B). The text in the left hand text options still reads "Alt-F 0.1RC4 Status Page"

Image attached. 

Gregory Didycz

unread,
Aug 10, 2016, 10:46:52 AM8/10/16
to Alt-F


On Thursday, June 30, 2016 at 8:09:52 AM UTC-4, JavCam wrote:
Since RC5 upgrade, the status page only show the text "Alt-F 0.1RC5 Status Page help" .

Any idea?

Thanks so much!

Using https to access the webUI resolved the issue for me. everything else seems to work fine for now. I'm sure this cosmetic issue will be resolved shortly.

Norbert Horváth

unread,
Aug 10, 2016, 5:52:10 PM8/10/16
to Alt-F
Please read the WARNING: Network data corruption on RC5 thread also, https may fix the status page, but the same problem causes corrupted files transferred via samba.

Gregory Didycz

unread,
Aug 11, 2016, 11:25:04 AM8/11/16
to Alt-F
Thank you for pointing that out to me. I have applied the hotfix, and it has resolved the status page on http and the data corruption issue. I have tested file transfers numerous times with no corruption.

Thanks for pointing that out Norbert

Gregory Didycz

unread,
Oct 18, 2016, 3:57:35 PM10/18/16
to Alt-F
see data corruption issue

Mark van Roosmalen

unread,
Dec 21, 2016, 4:12:51 PM12/21/16
to Alt-F
in line 63 the original file (usr/www/cgi-bin/status.cgi)  else is used without the use of brackets.

else {
                    arefresh = false }
solves the problem....

You can test and confirm if this is indeed the proper solution...
edit usr/www/cgi-bin/status.cgi
add the brackets and save the file. refresh your browser and the status should pop-up.

Mark

João Cardoso

unread,
Dec 23, 2016, 9:38:45 AM12/23/16
to Alt-F


On Wednesday, 21 December 2016 21:12:51 UTC, Mark van Roosmalen wrote:
in line 63 the original file (usr/www/cgi-bin/status.cgi)  else is used without the use of brackets.

else {
                    arefresh = false }
solves the problem....

Don't be mislead by that. I myself never saw a Status blank page; that depends on the contents (size) of the page, and each user has different values on it.

As told before, there is rare silent network corruption on files read from the NAS on RC5, and the fix is mandatory and described in the related top-post topic.

Nicolas Desveaux

unread,
May 7, 2017, 10:16:06 AM5/7/17
to al...@googlegroups.com
This silent corruption over samba is quite worrying.. Is there a release fix or we have to use "ethtool -K eth0 tso off" in script user?
Will that work on every reboot?
I just installed Alt-F yesterday and curiosity about the non working status page brought me here so I'm quite new to all this.
Sorry if there's a new thread about this?

Btw the command above fixed the status page issue. However I seem to remember Joao mentioned it would cause performance issues?

João Cardoso

unread,
May 7, 2017, 4:21:07 PM5/7/17
to Alt-F


On Sunday, 7 May 2017 15:16:06 UTC+1, Nicolas Desveaux wrote:
This silent corruption over samba is quite worrying.. Is there a release fix or we have to use "ethtool -K eth0 tso off" in script user?

 
Will that work on every reboot?

Yes, while the disk where it is installed is available.
 
I just installed Alt-F yesterday and curiosity about the non working status page

hmmm, curiosity killed the cat :-)

The problem and fix is documented in the download site README file and the know issues release notes and in the Status News section (after the fix being applied :-(

Nicolas Desveaux

unread,
May 8, 2017, 2:24:55 AM5/8/17
to Alt-F
Thank you for your fast reply Joao.
I've added the script to the startup as explained in another thread. I'll wait for a final RC6 to upgrade.
Reply all
Reply to author
Forward
0 new messages