mirror of https://github.com/OpenIPC/wiki.git
70 lines
2.9 KiB
Markdown
70 lines
2.9 KiB
Markdown
# OpenIPC Wiki
|
|
[Table of Content](../README.md)
|
|
|
|
Help: Web UI
|
|
------------
|
|
|
|
### Updating Web UI from Web UI.
|
|
|
|
In some cases, especially if you think that something does not work as it should,
|
|
try to update Web UI once more, overriding version checking for the second update.
|
|
This may be required because of some changes we have possibly made to the updating
|
|
routine, thus you shall retrieve the updating routine code with the first update,
|
|
and then use it for the consecutive update.
|
|
|
|
### Web UI Development.
|
|
|
|
If you want to help us with developing of the web interface for our
|
|
firmware, here is what you need to know beforehands. Cameras are very
|
|
limited in terms of space and performance. The only available option
|
|
we have now in the firmware which is more or less suitable for dynamic
|
|
generating of HTML pages is `haserl`, a fancy cousin of `ash` bent for
|
|
serving as a CGI wrapper. Did I say `ash`? Right, because we don't have
|
|
`bash`, `tcsh`, `zsh` in our Linux. Ash it is. As in A shell, full name
|
|
Almquist shell. Tiny, lightweight, and kinda limited. System is limited,
|
|
too -- in most parts it is `busybox`. So, if you still feel comfortable
|
|
to make your hands dirty with a very 80s style of web development then
|
|
welcome aboard.
|
|
|
|
Recent interface is built around [Bootstrap](https://getbootstrap.com/)
|
|
CSS framework which is a little overkill for the purpose but allowed us
|
|
to fast-track from the original microbe web to what we have now. We would
|
|
like to slim down the original Bootstrap bundle and create a custom pack
|
|
with only the features we use. If you posses such a skill, come and work
|
|
with us.
|
|
|
|
Also, we're considering the possibility of switching to a client-side
|
|
web interface builder, leaving only data-tossing to the server. Vue.js
|
|
or similar. Have something to add here? Spill it out.
|
|
|
|
Any other ideas? We would like to listen them, too.
|
|
|
|
### Running a development version of Web UI.
|
|
|
|
To start improving the web interface, clone its GitHub repo locally and
|
|
set up an NFS mount on your camera to the root directory of the local copy:
|
|
|
|
```bash
|
|
mkdir -p /tmp/dev
|
|
mount -t nfs -o nolock,tcp 192.168.1.123:/full/path/to/web/files /tmp/dev
|
|
```
|
|
|
|
> _(replace 192.168.1.123 and /full/path/to/web/files with your own IP and path)_
|
|
|
|
Then start another instance of httpd daemon to serve your version of Web UI
|
|
on another port of the camera, say port 86:
|
|
|
|
```bash
|
|
httpd -p 86 -h "/tmp/dev/var/www" -c /dev/null
|
|
```
|
|
|
|
Now you can work on Web UI source code in your favorite IDE or a text editor
|
|
on your workstation, and immediately test the changes with a web browser
|
|
pointed to port 86 on the camera. _(E.g. http://192.168.1.10:86/)_
|
|
|
|
Remember that you substitute only web server contents, but there are also
|
|
supporting scripts residing outside web directory. These scripts might require
|
|
updating on camera in case you make changes to them, as well. To update a
|
|
script on camera, open ssh session to the camera and copy updated version of
|
|
the script from `/tmp/dev/usr/sbin/` to `/usr/sbin/`.
|