unRAID-Web - complete web server w/ php for unRAID


Recommended Posts

  • Replies 280
  • Created
  • Last Reply

Top Posters In This Topic

Top Posters In This Topic

Posted Images

At boot, it could be exported as UNRAID_VERSION.

 

That make the assumption that it is installed on day one which you cannot make.

 

Dependencies... dependencies...  First rule of unWeb:  No dependencies!  (other than emhttp and stock unRAID).

 

So far, parsing the live HTML from the emhttp interface is the only choice.

 

Agreed. There was a feature request a while back for a version file which unRAID really should have. Like most things its never materialized but it should be requested again.

 

A better way than parsing emHTTP would be to check the md5 of a stock unRAID file since it doesn't rely on a daemon being available and removes one more dependency.

Link to comment
check the md5 of a stock unRAID file

 

However, I use multiple emhttp executibles, based on different versions... and the script will only be able to detect KNOWN versions, in a fixed path.

 

Parsing the html is still a better solution... and it ain't so bad.  The only negative is that it only provides info if emhttp is loaded and working.... but it if ain't, you can't get unraid info anyway. 

Link to comment

I have a workaround... I can append a child node of a hidden iframe to the DOM, and src it to the url for the running emhttp process.  This will solve the x-site scripting issue, and if the user has a root pw, they will get the standard browser login dialog.  Once the iframe loads, an on-load event will fire to let the parent know it is loaded, and then the contents can be scraped by the parent, and the child node deleted.

 

It is a bit of a pain, but it will work and it is transparent to the user.

 

Once Tom has an enhanced /proc/mdcmd interface, I can convert to that easily and all existing code will still function.

Link to comment

I am working on the extension-manager and how extensions are packaged/distributed/installed.  I plan to have it working in the next release.  Here's what I am planning so far:

 

- write your extension in its own home directory

- create the extension.dat file in your extension home.

- create a "do_install.sh" script in your extension home if needed.

- create a "do_upgrade.sh" script in your extension home if needed.

 

When an extension is installed/upgraded, the extension-manager will unzip the zip file, and then run the appropriate script (if it exists).

 

I have added this info to the documentation in the wiki.

Link to comment

Version 0.0.6 is now posted.

 

- Extension manager is cleaned up.

- Reworked logic on getting drive temps.

- added the content to the "About" tab

- cleaned up tabs

 

- Curl and libraries are also included, since php needed them to do background downloading.

 

I've gotten a lot of the underlying management code done.  Joe was kind enough to do some work and find some bugs in the user config file code, so that will be the next target.

Link to comment

Version 0.0.07 is posted.  Link is in OP.

 

New:

=======================

- vastly improved config manager code (thanks to Joe)

- the Custom Interface now indicates if files are open in the main interface page.

 

This version also has the first button to talk directly to unRAID... to reset the statistics counters.  More can be added fairly easily now.

 

Still need to do more bounds checking, error traping, and documenting in the code, but it's getting there.

Link to comment

On the custom interface page, i imagine the little folder icons are to allow you to view the contents of each disk correct? I keep getting an error that the disk cannot be found (tower:89/disk1 cannot be found). Any ideas why?

 

Also, any limitations on the main custom page as to how the data can be presented? Do you have to use a table format? Or could you use a more graphic intensive layout? I know thats probably not the focus now but have a few ideas that i thought id shoot your way

Link to comment
I keep getting an error that the disk cannot be found (tower:89/disk1 cannot be found). Any ideas why?

 

Ooops... a bug.  I'll fix it.

 

Also, any limitations on the main custom page as to how the data can be presented?

 

Nope.  You can do anything you can do on a web page.

Link to comment

Here is a mock up of a more Graphic intensive interface for the Overview page. Clicking on the disk name would open the same window it does now in your version. Additionally, I was thinking that clicking on the actual disk icon would open the view of the contents of each disk. Two versions, slightly different placements of some of the information. This is a quick mockup so its a little rough. Curious your thoughts. Too much? If you like, I am happy to make all the necessary icons for you.

 

Feedback is welcome as I think this is a great project and making the web interface more visually appealing should hopefully attract more users to the project.

Link to comment

I have been giving this some more thought and I really think emHTTP shouldnt be a dependency.

 

Unfortunately there is no particularly nice way to do it without it so i suggest this an a OPTIONAL feature for users in the interim.

 

Based on this work...

 

 

grep "unRAID System Management" /var/log/syslog | awk '{ print $NF; }'

 

Currently, it produces the simple 5 letter string 4.4.2

 

we could have something like this added to the go script:

 

grep "unRAID System Management" /var/log/syslog | awk '{ print $NF; }' >/etc/unraid_version

 

And check for that before we do the emHTTP parsing.

 

Remember I am saying this would be optional and those that choose to do it will be removing the basic emHTTP dependency.

 

In time I expect this file or similar to exist in the official distro since it is fairly standard OS practice

 

 

Link to comment

The unraid version string is stored in "unraid->current_version" and is globally accessible.

 

The code that populates it does several things, in decreasing order of accuracy:

 

1) query and parse the html -- this is the MOST accurate since some people (like me) sometimes load an older version of emhttp for testing.

2) If that fails, then grep the syslog. 

3) If that fails, check the filesize of bzimage  (I use filesize, since a user can easily determine it and reporte to me for debugging).

 

If all fail, it is reported as "unknown"

 

 

Link to comment

@dhy8386:  I like it, except that it is using a lot of real estate per drive.  For main status screens, I want everything visible w/o scrolling.... otherwise the user can miss something important.

 

I think that we could live w/o the disl serial number on the main overview page however... that will space space in your design.  A more detailed table page can have it under the "details" or "devices" tab.

 

I would be interested in other users' opinions, but it is my impression that thermometers for space on each drive is not particularly useful.  I believe a lot of people fill up several drives to near max, and then add new files to just one or 2 drives where nearly all the free space will be.  99.8% used is perfectly fine for many drives, and doesn't deserve a red color.  99% used on the entire array however is a different matter!

 

However, I am working on a table display very much like yours for user shares.  So you can see the amount free, as a thermometer, for each user share.

 

Now icons... boy I would love a nice themed icon set custom for unRAID!

Link to comment

The unraid version string is stored in "unraid->current_version" and is globally accessible.

 

The code that populates it does several things, in decreasing order of accuracy:

 

1) query and parse the html -- this is the MOST accurate since some people (like me) sometimes load an older version of emhttp for testing.

2) If that fails, then grep the syslog. 

3) If that fails, check the filesize of bzimage  (I use filesize, since a user can easily determine it and reporte to me for debugging).

 

If all fail, it is reported as "unknown"

 

Sounds very good to me. I am not going to labor the point as we would be moving away from the core of what you project is about and moving in realms of making up for missing unRAID components but would you consider populating /etc/unraid_version if it is empty on completion of this process?

 

The file should really exist by default and it in some ways makes sense to create it so it can be used outwith the bounds of this project and hopefully inspire unRAID to accept it as a standard and include it in future as previously requested.

 

I wont be disappointing if you say no as I accept what I am requesting is starting to stray from core functionality; its just so small a change to add it would be nice if it did exist at the end of the process

Link to comment
would you consider populating /etc/unraid_version if it is empty on completion of this process?

 

Sure, but I have no way to delete it if emhttp is unloaded.... and it won't be there unless and until you hit my custom interface extensions un unRAID-Web.

Link to comment

I see theres a thread dedicated to /etc/unraid_version type discussions now. Might be worth taking this over there.

 

In general though just keep the idea in your head. Ive added the line to my go script to populate the file but i need to make it a bit slicker so it doesnt blank it if it exists already.

Link to comment

Here is a mock up of a more Graphic intensive interface for the Overview page. Clicking on the disk name would open the same window it does now in your version. Additionally, I was thinking that clicking on the actual disk icon would open the view of the contents of each disk. Two versions, slightly different placements of some of the information. This is a quick mockup so its a little rough. Curious your thoughts. Too much? If you like, I am happy to make all the necessary icons for you.

 

Feedback is welcome as I think this is a great project and making the web interface more visually appealing should hopefully attract more users to the project.

 

I like the screenshots and think it is a aesthetically pleasing presentation.

 

The only comment is a nit - but the column is labeled "free space" when it is showing "used space".

Link to comment

Here is a mock up of a more Graphic intensive interface for the Overview page. Clicking on the disk name would open the same window it does now in your version. Additionally, I was thinking that clicking on the actual disk icon would open the view of the contents of each disk. Two versions, slightly different placements of some of the information. This is a quick mockup so its a little rough. Curious your thoughts. Too much? If you like, I am happy to make all the necessary icons for you.

 

Feedback is welcome as I think this is a great project and making the web interface more visually appealing should hopefully attract more users to the project.

 

I like the screenshots and think it is a aesthetically pleasing presentation.

 

The only comment is a nit - but the column is labeled "free space" when it is showing "used space".

bjp999,

 

You might like the following screen shot too.  It is a work in progress, but I'm porting unmenu.awk to work as an "extension" under unRAID-Web.

I've gotten the basic screens for each plug-in to work, but do not yet have their links and buttons working.  (I've made NO changes to any of the unmenu plug-in files. 

 

My "php" code is dynamically defining the "Tabs" in the interface and then using the plug-in files in the "unmenu" directory.  It is a real challenge to me, as "php" is a new language for me. (I'm still forgetting to put the semicolon at the ends of lines on occasion)

 

Note that this example does not use the "awk" web-server at all, but instead uses lighttpd, the web-server BubbaQ has built into the unRADI-Web interface.  You can see the "debugging" line above the plug-in showing the variables I use when invoking the specific plug-in.

 

The 404-not found at the bottom is because the current code in the plugin is looking to open a "sys_log_tail" web-pageto display the end of the syslog, but no such "php" web-page exists.

 

When (if) I get this working, you should be able to use the existing plug-ins under this new web-interface.  You will not need to start the unmenu web-server at all and we can continue unMENU plug-in development using shell and awk as you desire, until such time that "php" equivalents are written.

 

Joe L.

szd6ic.jpg

 

 

Link to comment

@dhy8386:  I like it, except that it is using a lot of real estate per drive.  For main status screens, I want everything visible w/o scrolling.... otherwise the user can miss something important.

 

I think that we could live w/o the disl serial number on the main overview page however... that will space space in your design.  A more detailed table page can have it under the "details" or "devices" tab.

 

I would be interested in other users' opinions, but it is my impression that thermometers for space on each drive is not particularly useful.  I believe a lot of people fill up several drives to near max, and then add new files to just one or 2 drives where nearly all the free space will be.  99.8% used is perfectly fine for many drives, and doesn't deserve a red color.  99% used on the entire array however is a different matter!

 

However, I am working on a table display very much like yours for user shares.  So you can see the amount free, as a thermometer, for each user share.

 

Now icons... boy I would love a nice themed icon set custom for unRAID!

 

I hear the point on "real estate". I revised this somewhat so more disks could fit on the same amount of space. Still less than in a table but in a full web browser, should be able to show many disks before need to scroll.

 

On the space thermometers, thats interesting. I use high water so many of my disks have space on them. Some more full than others. This is how i see a few people using them as well but i would be interested to know others thoughts as well.

 

My other thought was to have just the disk icon, disk name, and device in say column 1. Than all the other statistics appear in a frame to the right as you click on each disk. This allows you to consolidate all disk information into one frame (temp, r/w/e, firmware, used space, serial, smart info, etc). This would be in place of the pop up you now are utilizing. If people are interested in this, i could mock it up quickly. Downside is you have to click on each disk to see more info and part of the simplicity of the overview page is seeing the right amount of info without having to click through.

Link to comment

dhy8386

 

I like where this is going. I would suggest though that my preference runs to subdued colors by default and strnig primarys when its trying to show you an exception i.e. red when nearly full.

 

I also strongly dislike any huge fonts as they, to me at least, make me think home made.

 

Positive responses through comments not a criticism

Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.