diff --git a/README.md b/README.md index c611272cc..b91f67ebd 100644 --- a/README.md +++ b/README.md @@ -1,14 +1,14 @@ # Internet-in-a-Box (IIAB) -Welcome to the GitHub repository for Internet-in-a-Box (IIAB). IIAB is a small and inexpensive device which provides essential Internet resources (Wikipedia, OpenStreetMap, Khan Academy and others) *usable even when offline!*. +Welcome to the GitHub repository for [Internet-in-a-Box (IIAB)](http://internet-in-a-box.org). IIAB is a small and inexpensive device which provides essential Internet resources (Wikipedia, OpenStreetMap, Khan Academy and others) *usable even when offline!* Create the digital library needed by your school, your medical clinic, your region and/or your very own family — accessible with any nearby smartphone, tablet or laptop. -Internet-in-a-Box provides you the tools to DIY (download and customize) a local content hotspot or server, with the very best of the World’s Free Knowledge. +Internet-in-a-Box provides you the tools to DIY (download and customize) a local content hotspot or server, using the Internet's crown jewels and the very best of the World’s Free Knowledge. Schools can also choose among [30 powerful educational apps](http://wiki.laptop.org/go/IIAB/FAQ#What_services_.28IIAB_apps.29_are_suggested_during_installation.3F) for teachers and students, optionally with a complete LMS (learning management system). -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 grassroots technology movement!* +FYI this community product is enabled by professional volunteers working [side-by-side](http://wiki.laptop.org/go/IIAB/FAQ#What_are_the_best_places_for_community_support.3F) with schools, clinics and libraries around the world. *Thank you for being a part of our grassroots technology movement!* ## Installation @@ -18,6 +18,10 @@ Please see "What are the best places for community support?" at http://FAQ.IIAB. The [Installation](https://github.com/iiab/iiab/wiki/IIAB-Installation) wiki page has more intricate details e.g. if you're trying to install Internet-in-a-Box (IIAB) on a [different platform](https://github.com/iiab/iiab/wiki/IIAB-Platforms) that has not yet been tried. +Then you [add content](https://github.com/iiab/iiab/wiki/IIAB-Installation#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](http://wiki.laptop.org/go/IIAB/FAQ#How_do_I_customize_my_Internet-in-a-Box_home_page.3F) (typically http://box or http://box.lan) using our drag-and-drop Admin Console (http://box/admin) — to arrange Content Packs and IIAB Apps (services) for your local community's needs. + #### Built with Ansible FYI we use [Ansible](http://wiki.laptop.org/go/IIAB/FAQ#What_is_Ansible_and_what_version_should_I_use.3F) as the underlying technology to install, deploy, configure and manage the various software components. @@ -26,16 +30,18 @@ FYI we use [Ansible](http://wiki.laptop.org/go/IIAB/FAQ#What_is_Ansible_and_what We greatly welcome contributions from educators, librarians *and* IT/UX/QA people of all kinds! -Please see "How can I help?" at http://FAQ.IIAB.IO +Please see "[How can I help?](http://wiki.laptop.org/go/IIAB/FAQ#How_can_I_help.3F)" at: http://FAQ.IIAB.IO Check out our [Contributors Guide](https://github.com/iiab/iiab/wiki/IIAB-Contributors-Guide) to learn more about contributing directly to Internet-in-a-Box (IIAB) software and its open community architecture for education. *Thank you for helping us enable offline access to the Internet's open knowledge jewels, as well as "Sneakernet-of-Alexandria" distribution of local/indigenous content, when mass media channels do not serve grassroots voices.* -## Versioning +## Versions -Pre-releases of Internet-in-a-Box (IIAB) are available from http://download.iiab.io — click on the highest version number and then launch the 1-line installer. +Pre-releases of Internet-in-a-Box (IIAB) undergo continuous QA / continuous deployment and are strongly recommended. -You can also track the latest Internet-in-a-Box (IIAB) [official releases here](https://github.com/iiab/iiab/releases). +Install our latest pre-release using the 1-line installer at: http://download.iiab.io -Finally older versions are also available, from [github.com/xsce](http://github.com/xsce) and [schoolserver.org](http://schoolserver.org). +You can also consider the official releases at: [github.com/iiab/iiab/releases](https://github.com/iiab/iiab/releases) + +Finally, older versions are here: [github.com/xsce](http://github.com/xsce), [schoolserver.org](http://schoolserver.org) diff --git a/iiab-install b/iiab-install index d46604b75..6d38c5598 100755 --- a/iiab-install +++ b/iiab-install @@ -10,7 +10,7 @@ CWD=`pwd` OS=`grep ^ID= /etc/*release|cut -d= -f2` OS=${OS//\"/} MIN_RPI_KERN=4.9.59-v7+ -MIN_ANSIBLE_VER=2.6.13 +MIN_ANSIBLE_VER=2.6.14 if [ ! -f /etc/iiab/local_vars.yml ]; then diff --git a/roles/captive-portal/templates/capture-wsgi.py b/roles/captive-portal/templates/capture-wsgi.py index 37352603f..4dc61ba43 100755 --- a/roles/captive-portal/templates/capture-wsgi.py +++ b/roles/captive-portal/templates/capture-wsgi.py @@ -177,27 +177,7 @@ def set_lasttimestamp(ip): conn.commit() # ################### Action routines based on OS ################3 -def microsoft_splash(environ,start_response): - en_txt={ 'message':"Click on the button to go to the IIAB home page",\ - "FQDN": fully_qualified_domain_name, \ - 'btn1':"GO TO IIAB HOME PAGE",'doc_root':get_iiab_env("WWWROOT")} - es_txt={ 'message':"Haga clic en el botón para ir a la página de inicio de IIAB",\ - "FQDN": fully_qualified_domain_name, \ - 'btn1':"IIAB",'doc_root':get_iiab_env("WWWROOT")} - txt = en_txt - if lang == "en": - txt = en_txt - elif lang == "es": - txt = es_txt - response_body = str(j2_env.get_template("simple.template").render(**txt)) - status = '200 OK' - response_headers = [('Content-type','text/html'), - ('Content-Length',str(len(response_body)))] - start_response(status, response_headers) - return [response_body] - def microsoft(environ,start_response): - global MICROSOFT_TRIGGERED # firefox -- seems both mac and Windows use it agent = environ.get('HTTP_USER_AGENT','default_agent') if agent.startswith('Mozilla'): @@ -205,7 +185,7 @@ def microsoft(environ,start_response): logger.debug("sending microsoft redirect") response_body = "" status = '302 Moved Temporarily' - response_headers = [('Location','/microsoft_splash'), + response_headers = [('Location','http://box.lan/home'), ('Content-type','text/html'), ('Content-Length',str(len(response_body)))] start_response(status, response_headers) @@ -228,8 +208,8 @@ def android(environ, start_response): else: ip = environ['REMOTE_ADDR'].strip() system,system_version = platform_info(ip) - if not system_version: - put_302(environ, start_response) + if system_version is None: + return put_302(environ, start_response) if system_version[0:1] < '6': logger.debug("system < 6:%s"%system_version) location = '/android_splash' @@ -340,7 +320,7 @@ def banner(environ, start_response): status = '200 OK' headers = [('Content-type', 'image/png')] start_response(status, headers) - image = open("%s/iiab-menu/menu-files/images/iiab_banner6.png"%doc_root, "rb").read() + image = open("%s/js-menu/menu-files/images/iiab_banner6.png"%doc_root, "rb").read() return [image] def bootstrap(environ, start_response): @@ -542,10 +522,6 @@ def application (environ, start_response): return android(environ, start_response) # microsoft - if environ['PATH_INFO'] == "/microsoft_splash": - return microsoft_splash(environ, start_response) - if environ['PATH_INFO'] == "/connecttest.txt" and not is_inactive(ip): - return microsoft_connect(environ, start_response) if environ['HTTP_HOST'] == "ipv6.msftncsi.com" or\ environ['HTTP_HOST'] == "detectportal.firefox.com" or\ environ['HTTP_HOST'] == "ipv6.msftncsi.com.edgesuite.net" or\ @@ -557,7 +533,7 @@ def application (environ, start_response): environ['HTTP_HOST'] == "teredo.ipv6.microsoft.com.nsatc.net": return microsoft(environ, start_response) - logger.debug("executing the default 204 response. [%s"%data) + logger.debug("executing the default 302 response. [%s"%data) return put_302(environ,start_response) # Instantiate the server diff --git a/roles/elgg/README.rst b/roles/elgg/README.rst index 4eac3ea7d..fc5fb12a2 100644 --- a/roles/elgg/README.rst +++ b/roles/elgg/README.rst @@ -52,6 +52,6 @@ There are a number of seemingly similar usernames and passwords in this installa More Tips & Tricks ------------------ -If you're online, please see "Elgg Administration: What tips & tricks exist? " at: http://FAQ.IIAB.IO +If you're online, please see "Elgg Administration: What tips & tricks exist?" at: http://FAQ.IIAB.IO If you're offline, Internet-in-a-Box's FAQ (Frequently Asked Questions) is here: http://box/info diff --git a/roles/lokole/defaults/main.yml b/roles/lokole/defaults/main.yml index f19b68b05..91271f72a 100644 --- a/roles/lokole/defaults/main.yml +++ b/roles/lokole/defaults/main.yml @@ -5,7 +5,7 @@ # If nec, change them by editing /etc/iiab/local_vars.yml prior to installing! # Info needed to install Lokole -lokole_version: "0.1.36" +lokole_version: "0.1.38" lokole_admin_user: admin # lowercase seems nec here (even though uppercase Admin/changeme is IIAB's OOB recommendation!) lokole_admin_password: changeme lokole_install_path: "{{ content_base }}/lokole" # /library/lokole diff --git a/roles/nodered/README.rst b/roles/nodered/README.rst index cadcca326..20ce9603f 100644 --- a/roles/nodered/README.rst +++ b/roles/nodered/README.rst @@ -14,13 +14,13 @@ Prior to installing IIAB, make sure your `/etc/iiab/local_vars.yml `_ +To change this password, please see: `roles/nodered/defaults/main.yml `_ You can monitor the Node-RED service with command:: diff --git a/roles/nodered/defaults/main.yml b/roles/nodered/defaults/main.yml index ab61daafe..2bbe417aa 100644 --- a/roles/nodered/defaults/main.yml +++ b/roles/nodered/defaults/main.yml @@ -2,11 +2,12 @@ # nodered_enabled: False # nodered_port: 1880 +# For http://box/nodered reverse proxy of http://box:1880/nodered +# nodered_web_path: nodered + # All above are set in: github.com/iiab/iiab/blob/master/vars/default_vars.yml # If nec, change them by editing /etc/iiab/local_vars.yml prior to installing! -nodered_web_path: nodered # http://box/nodered reverse proxies http://box:1880 - nodered_user: Admin nodered_password: changeme # REMOVE THIS PASSWORD REMINDER LINE AS NECESSARY nodered_password_hash: $2b$08$oxgvoU9et3deSbXY8UNVTOWHSTQAyEASIal86RHVMqYQJhpPMNz7q diff --git a/roles/nodered/tasks/main.yml b/roles/nodered/tasks/main.yml index a85c8d839..8b37c6b41 100644 --- a/roles/nodered/tasks/main.yml +++ b/roles/nodered/tasks/main.yml @@ -192,7 +192,7 @@ name: proxy_wstunnel when: nodered_install -- name: Restart Apache service ({{ apache_service }}) to enable/disable http://box/nodered (not just http://box:{{ nodered_port }}) +- name: Restart Apache service ({{ apache_service }}) to enable/disable http://box/nodered (not just http://box:{{ nodered_port }}/nodered) systemd: #daemon_reload: yes name: "{{ apache_service }}" # httpd or apache2 diff --git a/roles/pbx/README.rst b/roles/pbx/README.rst index 81b6445f7..6c8724293 100644 --- a/roles/pbx/README.rst +++ b/roles/pbx/README.rst @@ -33,6 +33,13 @@ You can monitor the FreePBX service with command:: systemctl status freepbx +Raspberry Pi Known Issue +------------------------ + +As of 2019-02-14, "systemctl restart freepbx" fails more than 50% of the time when run on a `BIG-sized `_ install of IIAB 6.7 on RPi 3 or RPi 3 B+. + +It is possible that FreePBX restarts much more reliably when run on a MIN-sized install of IIAB? Please `contact us `_ if you can assist here in any way: `#1493 `_ + Raspberry Pi Zero W Warning --------------------------- diff --git a/scripts/ansible b/scripts/ansible index e08178100..047219d52 100755 --- a/scripts/ansible +++ b/scripts/ansible @@ -1,7 +1,7 @@ #!/bin/bash -e CURR_VER="undefined" # Ansible version you currently have installed -GOOD_VER="2.7.7" # For XO laptops (pip install) & CentOS (yum install rpm) +GOOD_VER="2.7.8" # For XO laptops (pip install) & CentOS (yum install rpm) # On other OS's we attempt the latest from PPA, which might be more recent export DEBIAN_FRONTEND=noninteractive diff --git a/scripts/ansible-2.6.x b/scripts/ansible-2.6.x index 74c11cde0..baae8e3b0 100755 --- a/scripts/ansible-2.6.x +++ b/scripts/ansible-2.6.x @@ -1,7 +1,7 @@ #!/bin/bash -e CURR_VER="undefined" # Ansible version you currently have installed -GOOD_VER="2.7.7" # For XO laptops (pip install) & CentOS (yum install rpm) +GOOD_VER="2.7.8" # For XO laptops (pip install) & CentOS (yum install rpm) # On other OS's we attempt the latest from PPA, which might be more recent export DEBIAN_FRONTEND=noninteractive diff --git a/scripts/ansible-2.7.x b/scripts/ansible-2.7.x index 01ca3dcf8..5942c50a9 100755 --- a/scripts/ansible-2.7.x +++ b/scripts/ansible-2.7.x @@ -1,7 +1,7 @@ #!/bin/bash -e CURR_VER="undefined" # Ansible version you currently have installed -GOOD_VER="2.7.7" # For XO laptops (pip install) & CentOS (yum install rpm) +GOOD_VER="2.7.8" # For XO laptops (pip install) & CentOS (yum install rpm) # On other OS's we attempt the latest from PPA, which might be more recent export DEBIAN_FRONTEND=noninteractive diff --git a/vars/default_vars.yml b/vars/default_vars.yml index 325ac21fa..a760af4b3 100644 --- a/vars/default_vars.yml +++ b/vars/default_vars.yml @@ -292,12 +292,13 @@ nodejs_version: 10.x # was 8.x until 2019-02-02 nodered_install: False nodered_enabled: False nodered_port: 1880 +nodered_web_path: nodered nextcloud_install: False nextcloud_enabled: False # A full-featured PBX (for rural telephony, etc) based on Asterisk and FreePBX. -# Should work on Ubuntu 18.04, Debian 9 and Raspbian/RPi 3. Uses Node.js 10.x +# Works on Ubuntu 18.04, Debian 9. Experimental on Rasp/RPi 3. Uses Node.js 10.x pbx_install: False pbx_enabled: False asterisk_chan_dongle: False diff --git a/vars/local_vars_big.yml b/vars/local_vars_big.yml index eec083954..ba6614808 100644 --- a/vars/local_vars_big.yml +++ b/vars/local_vars_big.yml @@ -196,9 +196,9 @@ nextcloud_install: True nextcloud_enabled: True # A full-featured PBX (for rural telephony, etc) based on Asterisk and FreePBX. -# Should work on Ubuntu 18.04, Debian 9 and Raspbian/RPi 3. Uses Node.js 10.x -pbx_install: True -pbx_enabled: True +# Works on Ubuntu 18.04, Debian 9. Experimental on Rasp/RPi 3. Uses Node.js 10.x +pbx_install: False +pbx_enabled: False asterisk_chan_dongle: False # If using WordPress intensively, set apache_high_php_limits in 3-BASE-SERVER diff --git a/vars/local_vars_medium.yml b/vars/local_vars_medium.yml index 18e2d905b..fa40d5ca0 100644 --- a/vars/local_vars_medium.yml +++ b/vars/local_vars_medium.yml @@ -196,7 +196,7 @@ nextcloud_install: True nextcloud_enabled: True # A full-featured PBX (for rural telephony, etc) based on Asterisk and FreePBX. -# Should work on Ubuntu 18.04, Debian 9 and Raspbian/RPi 3. Uses Node.js 10.x +# Works on Ubuntu 18.04, Debian 9. Experimental on Rasp/RPi 3. Uses Node.js 10.x pbx_install: False pbx_enabled: False asterisk_chan_dongle: False diff --git a/vars/local_vars_min.yml b/vars/local_vars_min.yml index b15ceccff..bbab412b4 100644 --- a/vars/local_vars_min.yml +++ b/vars/local_vars_min.yml @@ -196,7 +196,7 @@ nextcloud_install: False nextcloud_enabled: False # A full-featured PBX (for rural telephony, etc) based on Asterisk and FreePBX. -# Should work on Ubuntu 18.04, Debian 9 and Raspbian/RPi 3. Uses Node.js 10.x +# Works on Ubuntu 18.04, Debian 9. Experimental on Rasp/RPi 3. Uses Node.js 10.x pbx_install: False pbx_enabled: False asterisk_chan_dongle: False