Giter Club home page Giter Club logo

iiab-admin-console's Introduction

Sharing the World's Free Knowledge

Internet-in-a-Box (IIAB)

Internet-in-a-Box (IIAB) is a “learning hotspot” that brings the Internet's crown jewels (Wikipedia in any language, thousands of Khan Academy videos, zoomable OpenStreetMap, electronic books, WordPress journaling, “Toys from Trash” electronics projects, ETC) to those without Internet.

You can build your own tiny, affordable server (an offline digital library) for your school, your medical clinic, your prison, your region and/or your very own family — accessible with any nearby smartphone, tablet or laptop.

Internet-in-a-Box gives you the DIY tools to:

  1. Download then drag-and-drop to arrange the very best of the World’s Free Knowledge.
  2. Choose among 30+ powerful educational apps for your school or learning/teaching community, optionally with a complete LMS (learning management system).
  3. Exchange local/indigenous knowledge with nearby communities, using our Manage Content interface and possible mesh networking.

FYI this community product is enabled by professional volunteers working side-by-side with schools, clinics and libraries around the world. Thank you for being a part of our http://OFF.NETWORK grassroots technology movement!

Installation

Install Internet-in-a-Box (IIAB) from: download.iiab.io

Please see FAQ.IIAB.IO which has 40+ questions and answers to help you along the way (e.g. “Is a quick installation possible?”) as you put together the “local learning hotspot” most suitable for your own teaching/learning community. Here are 2 ways to install IIAB:

Our HOW-TO videos can be very helpful and the Installation wiki page has more intricate details e.g. if you're trying to install Internet-in-a-Box (IIAB) onto a another Linux that has not yet been tried.

See our Tech Docs Wiki for more about the underlying nuts and bolts.

After you've installed the software, you should add content, which can of course take time when downloading multi-gigabyte Content Packs!

Finally, you can customize your Internet-in-a-Box home page (typically http://box or http://box.lan) using our drag-and-drop Admin Console (http://box.lan/admin) — to arrange Content Packs and IIAB Apps (services) for your local community's needs.

Community

Global community updates and videos are regularly posted to: @internet_in_box

Internet-in-a-Box (IIAB) greatly welcomes contributions from educators, librarians and IT/UX/QA people of all kinds!

If you would like to volunteer, please make contact after looking over “How can I help?” at: FAQ.IIAB.IO

To learn more about our open community architecture for “offline” learning, check out “What technical documentation exists?” FYI we use Ansible to install, deploy, configure and manage the various software components.

Thank you for helping us enable offline access to the Internet's free/open knowledge jewels, as well as “Sneakernet-of-Alexandria” distribution of local/indigenous content, when mass media channels do not serve grassroots voices.

Versions

Pre-releases of Internet-in-a-Box (IIAB) undergo continuous QA / continuous integration / continuous deployment and are strongly recommended!

Install our latest pre-release using the 1-line installer at: download.iiab.io

You can also consider earlier official releases at: github.com/iiab/iiab/releases

For much older versions, see: github.com/xsce, schoolserver.org

iiab-admin-console's People

Contributors

avni avatar floydianslips avatar georgejhunt avatar holta avatar jvonau avatar kw4np avatar tim-moody avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

iiab-admin-console's Issues

Admin Console download of OpenMapTiles.com requires catalog of URLs [OSM]

Tim's problem statement:
4. Add Get OSM Tiles to Admin Console Install Content (without using iframes). What I would like would be to capture the navigation html, especially the region tree, allow a click, and capture the download url, which would then be passed to the cmdsrv to actually do the download and then run your db merge on it.

Overwrite of menu-defs

Has anyone seen that doing a repeat of install for Admin Console overwrites modified menu-defs. This was supposed to have been prevented some time ago.

Concurrent calls to iiab-make-kiwix-lib fail? (when too many ZIM installs complete at the same time?)

Just a theory at this point, but here's an example after using Admin Console to install 10 tiny ZIM's simultaneously:

  1. I just installed 10 test ZIM's on RPi3 using http://box/admin and yet nothing showed at http://box:3000, even long after it was done. I waited about 10 min to be sure. Still nothing.

  2. Then I ran "systemctl restart kiwix-serve" and 3 ZIM's showed up at http://box:3000 but waiting/reloading page did not help.

  3. Then I clicked "Install Content" -> "Restart Kiwix Server" and all 10 ZIM's finally showed up at http://box:3000

I've seen this before. Often you need to run iiab-make-kiwix-lib (or likewise click "Restart Kiwix Serve") an additional time after the GUI (http://box/admin -> Install Content) jobs complete. IIAB veterans knows this, but this is terribly confusing to new users, and should prob be fixed :/

home menu not rendering in admin console

Intermittently some items on the home page menu do not render in Content Item List. They are in the generated html with display: none

if the load menu button is clicked they do render.

Editing menu item from admin console breaks link from home page

I edited the "credits" menu item from the admin console (to translate to Spanish), which broke the link from the home page. The link appeared as http://box.lan/undefined. Copying the link text (commons/html/credits.html) made that box.lan/undefined/commons/html/credits.html. Reverting to the original version of en-credits.json fixed the issue.

Steps:

Click on Content menus/Edit menu items
Change text in item and description
Click Update Menu Item Definition

Admin Console failed to install (intermittent, on IIAB 6.5 RC)

@tim-moody & @jvonau: is there any evidence below that this is related to installing over WiFi, i.e. a DNS or Internet glitch possibly? This occurred on a fully updated Raspbian Lite on RPi 3 B+.

2018-04-05 18:22:15,129 p=2373 u=root | fatal: [127.0.0.1]: FAILED! => {"changed": false, "cmd": "/usr/bin/pip2 install --download /opt/iiab/pip-packages speedtest-cli", "failed": true, "msg": "stdout: Collecting speedtest-cli\n\n:stderr: DEPRECATION: pip install --download has been deprecated and will be removed in the future. Pip now has a download command that should be used instead.\nException:\nTraceback (most recent call last):\n File "/usr/lib/python2.7/dist-packages/pip/basecommand.py", line 215, in main\n status = self.run(options, args)\n File "/usr/lib/python2.7/dist-packages/pip/commands/install.py", line 342, in run\n requirement_set.prepare_files(finder)\n File "/usr/lib/python2.7/dist-packages/pip/req/req_set.py", line 380, in prepare_files\n ignore_dependencies=self.ignore_dependencies))\n File "/usr/lib/python2.7/dist-packages/pip/req/req_set.py", line 554, in _prepare_file\n require_hashes\n File "/usr/lib/python2.7/dist-packages/pip/req/req_install.py", line 278, in populate_link\n self.link = finder.find_requirement(self, upgrade)\n File "/usr/lib/python2.7/dist-packages/pip/index.py", line 465, in find_requirement\n all_candidates = self.find_all_candidates(req.name)\n File "/usr/lib/python2.7/dist-packages/pip/index.py", line 423, in find_all_candidates\n for page in self._get_pages(url_locations, project_name):\n File "/usr/lib/python2.7/dist-packages/pip/index.py", line 568, in _get_pages\n page = self._get_page(location)\n File "/usr/lib/python2.7/dist-packages/pip/index.py", line 683, in _get_page\n return HTMLPage.get_page(link, session=self.session)\n File "/usr/lib/python2.7/dist-packages/pip/index.py", line 792, in get_page\n "Cache-Control": "max-age=600",\n File "/usr/share/python-wheels/requests-2.12.4-py2.py3-none-any.whl/requests/sessions.py", line 501, in get\n return self.request('GET', url, **kwargs)\n File "/usr/lib/python2.7/dist-packages/pip/download.py", line 386, in request\n return super(PipSession, self).request(method, url, *args, **kwargs)\n File "/usr/share/python-wheels/requests-2.12.4-py2.py3-none-any.whl/requests/sessions.py", line 488, in request\n resp = self.send(prep, **send_kwargs)\n File "/usr/share/python-wheels/requests-2.12.4-py2.py3-none-any.whl/requests/sessions.py", line 609, in send\n r = adapter.send(request, **kwargs)\n File "/usr/share/python-wheels/CacheControl-0.11.7-py2.py3-none-any.whl/cachecontrol/adapter.py", line 47, in send\n resp = super(CacheControlAdapter, self).send(request, **kw)\n File "/usr/share/python-wheels/requests-2.12.4-py2.py3-none-any.whl/requests/adapters.py", line 423, in send\n timeout=timeout\n File "/usr/share/python-wheels/urllib3-1.19.1-py2.py3-none-any.whl/urllib3/connectionpool.py", line 643, in urlopen\n _stacktrace=sys.exc_info()[2])\n File "/usr/share/python-wheels/urllib3-1.19.1-py2.py3-none-any.whl/urllib3/util/retry.py", line 315, in increment\n total -= 1\nTypeError: unsupported operand type(s) for -=: 'Retry' and 'int'\n"}

need button to refresh menu display

adm cons does not know when zim or module finishes installing, so new menu def can be generated that is not in memory.

add button to refresh

optionally / if poss consider official names for server apps we include?

Not everyone knows what "KA Lite" stands for, so prominent mention of "Khan Academy" is important / alongside / any which way. In any case, these are the official & widely circulated spellings / typography on the right side:

Khan Academy Lite -> KA Lite
Khan Academy Downloader -> KA Lite Downloader   (Is this separately installable/removable?)
SugarLabs -> Sugar Labs
ELGG -> Elgg
NextCloud -> Nextcloud
SAMBA -> Samba
VnStat fine as is... (official name is vnStat but this is the beginning of a sentence!)
PhpMyadmin -> PhpMyAdmin (official name is phpMyAdmin but this is the beginning of a sentence!)
Open VPN -> OpenVPN

On the left side is what current appears in our roles/console/files/htmlf/20-configure.html.

Raspberry Pi User Guide (PDF)

Downloaded a RPi guide from here as /library/www/html/modules/en-rpi_guide/Raspberry_Pi_Beginners_Guide_v1.pdf.

Then updated /library/www/html/js-menu/menu-files/menu-defs/en-rpi_guide.json as attached ...
en-rpi_guide.json.zip

(For KoC/Uganda; as requested by @holta)

remove xsce legacy

xsce_base is no longer needed
probably cmsrv/tasks/packages is not needed

change 3 instances of kiwix_serve to kiwix to fix Kiwix checkbox?

@tim-moody can you investigate if this is why the Kiwix checkbox is highly flaky[*] in Admin Console?

<div class="checkbox kiwix_serve_service">
<label>
<input type="checkbox" name="kiwix_serve_enabled" id="kiwix_serve_enabled">Kiwix, serves Wikipediae and other content from sources below. You must also install content.

I'm hoping it's as easy as converting all 3 instances from kiwix_serve_* to kiwix_* ?

[*] symptoms I've seen today:

  • Kiwix checkbox appears even when Kiwix is False/False in local_vars.yml
  • Kiwix checkbox remains unchecked even after all others appears as checked (upon my 1. setting all server apps to True/True in local_vars.yml, 2. running ./runansible 3. executing "systemctl restart iiab-cmdsrv.service" to be safe)

Bug: Admin Console: Received error after attempting to cancel job. [OSM]

Expected behavior and actual behavior.

Received error after attempting to cancel job. See image.

Steps to reproduce the problem.

Go to http://box.lan/admin/, Select "Utilities", Select "Display Job Status", Select a job to cancel, Click "Cancel Checked Jobs"; Tried selecting different jobs, all jobs, all cancelations failed.

Specifications like the version of the IIAB, operating system version, or hardware details.

Macbook Pro 2.7 Ghz 8 GB Ram
Mac OS Sierra 10.12.6
Chrome Version 74.0.3729.169
Server: RPI 4B Buster Lite
IIAB: 7.0 pre-release

image

Duplicate ZIMs very hard to visualize in "Remove Content"

  1. Is it possible the ZIM deletion interface[*] could sort all installed ZIMs alphabetically by filename (or by name) to make deletion of outdated-but-similarly-named ZIM files much easier?

  2. Or perhaps better: could the UX match the order shown on the "Get ZIM Files from Kiwix" page?

  3. In the distant future, would it make sense to add & delete ZIMs from the very same page, instead of having 2 separate pages?

[*] http://box/admin -> Install Content -> Remove Content

Known Problem - OEWR2GO Catalog

The oer2go catalog is sometimes offline and sometimes broken in the sense that the json can not be parsed due to non-utf8 characters.

These errors are trapped, but result in no download. That means that warnings about the catalog being more than 30 days old will persist.

Oer2Go sample links and icons are null

I've been trying to install IIAB and hit an error on the iiab-admin-console section. The error was caused by the script wanting to create a symlink - TASK [cmdsrv : Create symlink from /common/assets to oer2go_catalog.json]. The file didn't exist. I traced it back to this script and it seems that oer2go_cat_url = 'http://dev.worldpossible.org/cgi/json_api_v1.pl' isn't a valid link. Also dev.worldpossible.org/rachelmods/ isn't valid.

OSM variable missing?

I can't seem to finish installing the admin console since the latest update. It seems like there is a variable missing but I'm not sure where it's supposed to be. Have you seen this before?

TASK [js-menu : Put the OSM update program in place] ********************************************************************************************************************
fatal: [127.0.0.1]: FAILED! => {"changed": false, "msg": "AnsibleUndefinedVariable: 'vector_map_path' is undefined"}
	to retry, use: --limit @/opt/iiab/iiab-admin-console/iiab-admin.retry

Feature Request: Add Toggle Display Button to Menu [Desktop view often needed by Mobile users, for Content Pack details/metadata/footnote]

On the home page menu add a button to toggle between desktop and mobile layouts:

  • Placement: at bottom between Poweroff and trademark
  • Function: switches layout of menu items between what is configured for mobile devices and what is configured for desktop devices. This may or may not be between maximum and minimum verbosity depending on the configuration. It does not change the overall layout of the page, only the layout of individual menu items.
  • Storage: when the button is clicked it stores display_mode = 'default' or 'override' in localStorage. When the menu is loaded it will check this value to decide whether to display in mobile or desktop layout for a given device.
  • Configuration: Fields similar to those for power off will be added to the Admin Console to allow configuration of this feature.

apache2: Ansible src option requires state to be 'link' or 'hard' (not 'absent')

Identical error to iiab/iiab#860 :

TASK [console : Make the admin-console ssl version disabled in apache2] ********
[WARNING]: The src option requires state to be 'link' or 'hard'. This will
become an error in Ansible 2.10

Erroneous "src" lines (BOTH) appear to be:

Admin Console would not load on RPi3 & Ubuntu 16.04 LTS

The very latest Admin Console would not fully load for me on RPi3 (Raspbian Desktop) earlier this week, even after rebooting.

Admin Console loaded the 1st time, but not after that.

Installation occurred using http://download.iiab.io/6.5/rpi/load.txt in both cases (on Raspbian 2017-11-29 and Ubuntu).

In each case on RPi3, ZIM-CAT never appeared on screen (in the browser) possibly due to ongoing ZIM downloads.

The workaround was:

systemctl restart iiab-cmdsrv

missing icons

en-catdogbooks_logo.png 404 (Not Found)
en-mustardseedbooks_logo.png 404 (Not Found)
en-openstax_OpenStaxLogo.jpeg 404 (Not Found)

on current master

node-red menuing is not backwards compatible

TASK [js-menu : Install js-menu config file] *************************************************************************************************************************************************
fatal: [127.0.0.1]: FAILED! => {"changed": false, "msg": "AnsibleUndefinedVariable: 'nodered_port' is undefined"}

Admin Console erroneously truncating ZIM filenames that contain dots

http://box/admin -> Utilties -> Display Job Status -> "Command" Column shows:

/usr/bin/wget -c --progress=dot:giga http://download.kiwix.org/zim/stack_exchange/es.stackoverflow.com_es_all_2018-03.zim -O /library/working/zims/es.zim

The result is that ZIM files containing periods (.) are erroneously truncated.

In the case of es.stackoverflow.com_es_all_2018-03.zim above, the ZIM file's content was downloaded correctly, but it ended up misnamed as follows:

root@box:/library/zims/content# ls -lh es.zim
-rw-r--r-- 1 root root 1.1G Mar 24 07:14 es.zim

time to review artificial heading

formerly project gutenberg zims did not have a usable category, so one was calculated. now looks like gutenberg_fr_all appears in gutenberg and Gutenberg

mouseover to disambiguate which ZIM is the right one to download?

Oftentimes there are similar ZIM files available for download within Admin Console (http://box/admin) -> Install Content menu -> "Get ZIM Files from Kiwix"

Any mouseover/tooltips/hovering method that allows these ZIM names/filenames to be disambiguated (so implementers can tell which to download) would be priceless — would a simple-if-ugly quick HTML hack be sufficient?

(Understandably mouseover does not work in mobile browsers, but that's Ok here as any "content curator" in their right mind is generally NOT using a mobile browser, when building up their Internet-in-a-Box "master copy" for just about any field community...)

JS should be able to make metadata substitutions into menu items

  1. Menu runtime substitutions. Currently ##HOST## gets replaced at runtime by the proper href with the host as accessed. I had planned, mostly for zims, to provide other substitutions, like number of articles, size, etc., anything in the kiwix catalog. This is less important for oer2go items as they are pretty static, so I am less disturbed by hard coding numbers of pdfs etc. I have already stubbed this in with an (empty) array of substitution strings, but there is no code. We don't want to read the whole kiwix catalog at menu runtime, so we also need a data structure along the lines of /library/www/html/common/assets/zim_version_idx.json and I had thought to just add additional attributes to that file as it is already needed by the menuing runtime.

xo-services vs xo_services

We must have moved incompletely from xo-services to xo_services. There are still a few tags in iiab that are xo-services. But all the variables are xo_services.

But /etc/iiab/config_vars.yml still has xo-services, and therefore does not have any effect.

Design Change: moddir vs start_url

I think moddir use should be restricted to type 'html', where it is the sub directory under modules and start_url should be used for webroot, download, and possibly others.

6.4 backward compatibility

iiab 6.5 changes ini variable section from network to computed_network

/opt/admin/console/js/admin_console.js follows this change and is incompatible with earlier versions
which require line 622 setRadioButton("gui_desired_network_role", iiab_ini.network.iiab_network_mode)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.