View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0000893 | bareos-core | webui | public | 2018-01-23 08:46 | 2019-12-18 15:25 |
Reporter | tonyalbers | Assigned To | frank | ||
Priority | high | Severity | major | Reproducibility | always |
Status | closed | Resolution | fixed | ||
Platform | Linux | OS | CentOS | OS Version | 7 |
Product Version | 17.2.4 | ||||
Summary | 0000893: webui cannot list dirs with only files in them | ||||
Description | We have a user's homedir which contains only files. When trying to browse the backup in the webui, it says: "Oops, something went wrong, probably too many files." The user has 76 files in his homedir. Another user's homedir which has files AND folders is browsable. | ||||
Steps To Reproduce | Not entirely sure, but we use the following fileset resource: FileSet { Name = "p004home" Description = "Backup Project 004 user homedirs." Include { Options { exclude = yes wilddir = /data/home/*p004/data wild = /data/home/*lock_file* } Options { signature = MD5 wilddir = /data/home/*p004 wild = /data/home/*p004/* } Options { exclude = yes wilddir = /data/home/* } File = /data/home/ } } | ||||
Additional Information | May be related to: 0000891 Also, it seems that in the output it misses a comma sometimes. If I open the webui in Chrome, choose CTRL+SHIFT+I for developer tools and use network monitoring, I can see that in the last communication before the popup there's something wrong with the json output. First statement is not separated from the second by a comma: [{"id":"-12408","text":".ssh/","icon":"glyphicon glyphicon-folder-close","state":"","data":{"type":"D","fullpath":"\/data\/home\/tegp004\/.ssh\/","pathid":12408,"fileid":1990019,"stat":{"atime":1516607463,"dev":64770,"ino":9840045,"group":"20503","rdev":0,"mtime":1511276383,"mode":16832,"nlink":2,"user":"20503","size":4096,"ctime":1511276394},"name":".ssh\/","jobid":21643,"lstat":"P0C liWt EHA C FAX FAX A BAA BAA I BaZZfn BaFD9f BaFD9q A A C","linkfileindex":0},"children":true}{"id"... (Last few words, no comma between } and { ) | ||||
Tags | webui | ||||
893.patch (1,166 bytes)
Index: module/Restore/src/Restore/Controller/RestoreController.php IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- module/Restore/src/Restore/Controller/RestoreController.php (revision 7d9c6270c5c01c7944a09d2777d8d08b0cc305f1) +++ module/Restore/src/Restore/Controller/RestoreController.php (date 1516708101000) @@ -326,6 +326,7 @@ $dnum = count($this->directories); $fnum = count($this->files); + //$tmp is the number of directories minus . and .. $tmp = $dnum; // Build Json for JStree @@ -336,10 +337,12 @@ foreach($this->directories as $dir) { if($dir['name'] == ".") { --$dnum; + --$tmp; next($this->directories); } elseif($dir['name'] == "..") { --$dnum; + --$tmp; next($this->directories); } else { @@ -360,7 +363,7 @@ } - if( $tmp > 2 && $fnum > 0 ) { + if( $tmp > 0 && $fnum > 0 ) { $items .= ","; } |
|
Uploaded patch that solves the problem. The problem is that is that if the directory list does not include . and .., the RemoteController will fail when generating JSON output. It expects the list to contain . and .., which it filters out. But it only puts a , after the directory list if the list contains more than 2 directories. However, if the list does NOT contain . and .., this means the produced JSON will be invalid if the list contains less than 3 normal directories. |
|
So the bug title is actually wrong. It should be something like "webui cannot list directories with at least 1 file and between 1 and 3 direct subdirectories" And the error message should probably not be "Oops, something went wrong, probably too many files.", but rather "Oops, something went wrong, probably too few directories." ;) |
|
Fix committed to bareos-webui bareos-17.2 branch with changesetid 7738. | |
bareos-webui: bareos-17.2 ee232a6f 2018-02-13 19:43 Ported: N/A Details Diff |
Fix to bugreport 0000905 and 0000893 Regarding 0000905: When returning an Ajax result, inside a json string value don't use addslashes. You don't want both " and ' escaped at the same time. Instead just use str_replace('"','\"',$Str). Regarding 0000893: A misplaced dir and file separator ',' lead to malformed json which could result in a non loadable subtree. Fixes 0000893: webui cannot list dirs with only files in them Fixes 0000905: Restore WebUI - Enable to browse directory when a file name contain a single quote |
Affected Issues 0000893, 0000905 |
|
mod - module/Restore/src/Restore/Controller/RestoreController.php | Diff File |
Date Modified | Username | Field | Change |
---|---|---|---|
2018-01-23 08:46 | tonyalbers | New Issue | |
2018-01-23 15:07 | asger_blekinge | File Added: 893.patch | |
2018-01-23 15:10 | asger_blekinge | Note Added: 0002879 | |
2018-01-23 15:12 | asger_blekinge | Note Added: 0002880 | |
2018-01-23 15:13 | asger_blekinge | Tag Attached: webui | |
2018-01-26 16:29 | frank | Assigned To | => frank |
2018-01-26 16:29 | frank | Status | new => assigned |
2018-02-13 18:42 | frank | Status | assigned => confirmed |
2018-02-13 18:52 | frank | Changeset attached | => bareos-webui bareos-17.2 ee232a6f |
2018-02-13 18:52 | frank | Note Added: 0002909 | |
2018-02-13 18:52 | frank | Status | confirmed => resolved |
2018-02-13 18:52 | frank | Resolution | open => fixed |
2018-02-13 18:55 | frank | Relationship added | child of 0000910 |
2018-03-12 11:33 | frank | Relationship added | related to 0000891 |
2019-12-18 15:25 | arogge | Status | resolved => closed |