From: Josef Schlehofer
Date: Thu, 28 Sep 2023 07:34:27 +0000 (+0200)
Subject: luci-app-bmx6: drop this because of security vulnerabilities
X-Git-Url: http://git.lede-project.org./?a=commitdiff_plain;h=c2124dd2ad542f526ee84e1984f03dd2f5b34dfe;p=feed%2Frouting.git
luci-app-bmx6: drop this because of security vulnerabilities
DependencyBot, which are using is sending us emails about these CVEs:
CVE-2012-6708
CVE-2020-23064
CVE-2019-11358
This was reported to maintainer in April 2023, but no one stepped it to fix that,
so let's drop this.
Replacement could be luci-app-bmx7.
Signed-off-by: Josef Schlehofer
---
diff --git a/luci-app-bmx6/COPYING b/luci-app-bmx6/COPYING
deleted file mode 100644
index d511905..0000000
--- a/luci-app-bmx6/COPYING
+++ /dev/null
@@ -1,339 +0,0 @@
- GNU GENERAL PUBLIC LICENSE
- Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
- Preamble
-
- The licenses for most software are designed to take away your
-freedom to share and change it. By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users. This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it. (Some other Free Software Foundation software is covered by
-the GNU Lesser General Public License instead.) You can apply it to
-your programs, too.
-
- When we speak of free software, we are referring to freedom, not
-price. Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
- To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
- For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have. You must make sure that they, too, receive or can get the
-source code. And you must show them these terms so they know their
-rights.
-
- We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
- Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software. If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
- Finally, any free program is threatened constantly by software
-patents. We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary. To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
- The precise terms and conditions for copying, distribution and
-modification follow.
-
- GNU GENERAL PUBLIC LICENSE
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
- 0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License. The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language. (Hereinafter, translation is included without limitation in
-the term "modification".) Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope. The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
- 1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
- 2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
- a) You must cause the modified files to carry prominent notices
- stating that you changed the files and the date of any change.
-
- b) You must cause any work that you distribute or publish, that in
- whole or in part contains or is derived from the Program or any
- part thereof, to be licensed as a whole at no charge to all third
- parties under the terms of this License.
-
- c) If the modified program normally reads commands interactively
- when run, you must cause it, when started running for such
- interactive use in the most ordinary way, to print or display an
- announcement including an appropriate copyright notice and a
- notice that there is no warranty (or else, saying that you provide
- a warranty) and that users may redistribute the program under
- these conditions, and telling the user how to view a copy of this
- License. (Exception: if the Program itself is interactive but
- does not normally print such an announcement, your work based on
- the Program is not required to print an announcement.)
-
-These requirements apply to the modified work as a whole. If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works. But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
- 3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
- a) Accompany it with the complete corresponding machine-readable
- source code, which must be distributed under the terms of Sections
- 1 and 2 above on a medium customarily used for software interchange; or,
-
- b) Accompany it with a written offer, valid for at least three
- years, to give any third party, for a charge no more than your
- cost of physically performing source distribution, a complete
- machine-readable copy of the corresponding source code, to be
- distributed under the terms of Sections 1 and 2 above on a medium
- customarily used for software interchange; or,
-
- c) Accompany it with the information you received as to the offer
- to distribute corresponding source code. (This alternative is
- allowed only for noncommercial distribution and only if you
- received the program in object code or executable form with such
- an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it. For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable. However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
- 4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License. Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
- 5. You are not required to accept this License, since you have not
-signed it. However, nothing else grants you permission to modify or
-distribute the Program or its derivative works. These actions are
-prohibited by law if you do not accept this License. Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
- 6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions. You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
- 7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all. For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices. Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
- 8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded. In such case, this License incorporates
-the limitation as if written in the body of this License.
-
- 9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time. Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number. If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation. If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
- 10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission. For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this. Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
- NO WARRANTY
-
- 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
- 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
- END OF TERMS AND CONDITIONS
-
- How to Apply These Terms to Your New Programs
-
- If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
- To do so, attach the following notices to the program. It is safest
-to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
-
- Copyright (C)
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License along
- with this program; if not, write to the Free Software Foundation, Inc.,
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
- Gnomovision version 69, Copyright (C) year name of author
- Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
- This is free software, and you are welcome to redistribute it
- under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License. Of course, the commands you use may
-be called something other than `show w' and `show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary. Here is a sample; alter the names:
-
- Yoyodyne, Inc., hereby disclaims all copyright interest in the program
- `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
- , 1 April 1989
- Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into
-proprietary programs. If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library. If this is what you want to do, use the GNU Lesser General
-Public License instead of this License.
diff --git a/luci-app-bmx6/Makefile b/luci-app-bmx6/Makefile
deleted file mode 100644
index 6ee9390..0000000
--- a/luci-app-bmx6/Makefile
+++ /dev/null
@@ -1,99 +0,0 @@
-# Copyright (C) 2011 Pau Escrich
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License along
-# with this program; if not, write to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# The full GNU General Public License is included in this distribution in
-# the file called "COPYING".
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=luci-app-bmx6
-PKG_RELEASE:=6
-
-PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME)
-PKG_LICENSE:=GPL-2.0+
-
-include $(INCLUDE_DIR)/package.mk
-
-define Package/luci-app-bmx6
- SECTION:=luci
- CATEGORY:=LuCI
- SUBMENU:=3. Applications
- TITLE:= bmx6 configuration, status and visualization module
- DEPENDS:=+luci-lib-json +luci-base +luci-lib-httpclient +bmx6 +luci-lib-jquery-1-4 +luci-lib-dracula
- MAINTAINER:= Pau Escrich
-endef
-
-define Package/luci-lib-jquery-1-4
- SECTION:=luci
- CATEGORY:=LuCI
- TITLE:=LuCI - Lua Configuration Interface
- MAINTAINER:=Gui Iribarren
- SUBMENU:=6. Libraries
- TITLE:=jQuery 1.4 javascript library
-endef
-
-define Package/luci-lib-dracula
- SECTION:=luci
- CATEGORY:=LuCI
- TITLE:=LuCI - Lua Configuration Interface
- MAINTAINER:=Pau Escrich
- SUBMENU:=6. Libraries
- TITLE:=dracula graph javascript library
-endef
-
-define Package/luci-app-bmx6/description
- bmx6 web application (status and configuration) for LuCi web interface
-endef
-
-define Package/luci-lib-jquery-1-4/description
- minified javascript jQuery 1.4 library
-endef
-
-define Package/luci-lib-dracula-graph/description
- minified dracula javascript graph library
-endef
-
-define Package/luci-app-bmx6/conffiles
- /etc/config/luci-bmx6
-endef
-
-define Build/Prepare
-endef
-
-define Build/Configure
-endef
-
-define Build/Compile
-endef
-
-define Package/luci-app-bmx6/install
- $(CP) ./bmx6/* $(1)/
- chmod 755 $(1)/www/cgi-bin/bmx6-info
-endef
-
-define Package/luci-lib-jquery-1-4/install
- $(INSTALL_DIR) $(1)/www/luci-static/resources/jquery/
- $(CP) ./jquery/* $(1)/www/luci-static/resources/jquery/
-endef
-
-define Package/luci-lib-dracula/install
- $(INSTALL_DIR) $(1)/www/luci-static/resources/dracula
- $(CP) ./dracula/* $(1)/www/luci-static/resources/dracula/
-endef
-
-$(eval $(call BuildPackage,luci-app-bmx6))
-$(eval $(call BuildPackage,luci-lib-jquery-1-4))
-$(eval $(call BuildPackage,luci-lib-dracula))
diff --git a/luci-app-bmx6/bmx6/etc/config/luci-bmx6 b/luci-app-bmx6/bmx6/etc/config/luci-bmx6
deleted file mode 100644
index df1e715..0000000
--- a/luci-app-bmx6/bmx6/etc/config/luci-bmx6
+++ /dev/null
@@ -1,7 +0,0 @@
-config 'bmx6' 'luci'
- option ignore '0'
- option place 'admin network BMX6'
- #option place 'qmp Mesh'
- option position '3'
- #option json 'http://127.0.0.1/cgi-bin/bmx6-info?'
- option json 'exec:/www/cgi-bin/bmx6-info -s'
diff --git a/luci-app-bmx6/bmx6/usr/lib/lua/luci/controller/bmx6.lua b/luci-app-bmx6/bmx6/usr/lib/lua/luci/controller/bmx6.lua
deleted file mode 100644
index 5842fc9..0000000
--- a/luci-app-bmx6/bmx6/usr/lib/lua/luci/controller/bmx6.lua
+++ /dev/null
@@ -1,277 +0,0 @@
---[[
- Copyright (C) 2011 Pau Escrich
- Contributors Jo-Philipp Wich
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License along
- with this program; if not, write to the Free Software Foundation, Inc.,
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
- The full GNU General Public License is included in this distribution in
- the file called "COPYING".
---]]
-
-local bmx6json = require("luci.model.bmx6json")
-
-module("luci.controller.bmx6", package.seeall)
-
-function index()
- local place = {}
- local ucim = require "luci.model.uci"
- local uci = ucim.cursor()
-
- -- checking if ignore is on
- if uci:get("luci-bmx6","luci","ignore") == "1" then
- return nil
- end
-
- -- getting value from uci database
- local uci_place = uci:get("luci-bmx6","luci","place")
-
- -- default values
- if uci_place == nil then
- place = {"bmx6"}
- else
- local util = require "luci.util"
- place = util.split(uci_place," ")
- end
-
- -- getting position of menu
- local uci_position = uci:get("luci-bmx6","luci","position")
-
- ---------------------------
- -- Starting with the pages
- ---------------------------
-
- --- status (default)
- entry(place,call("action_nodes_j"),place[#place],tonumber(uci_position))
-
- table.insert(place,"Status")
- entry(place,call("action_status_j"),"Status",0)
- table.remove(place)
-
- --- nodes
- table.insert(place,"Nodes")
- entry(place,call("action_nodes_j"),"Nodes",1)
- table.remove(place)
-
- --- links
- table.insert(place,"Links")
- entry(place,call("action_links"),"Links",2).leaf = true
- table.remove(place)
-
- -- Tunnels
- table.insert(place,"Tunnels")
- entry(place,call("action_tunnels_j"), "Tunnels", 3).leaf = true
- table.remove(place)
-
- --- Chat
- table.insert(place,"Chat")
- entry(place,call("action_chat"),"Chat",5)
- table.remove(place)
-
- --- Graph
- table.insert(place,"Graph")
- entry(place, template("bmx6/graph"), "Graph",4)
- table.remove(place)
-
- --- Topology (hidden)
- table.insert(place,"topology")
- entry(place, call("action_topology"), nil)
- table.remove(place)
-
- --- configuration (CBI)
- table.insert(place,"Configuration")
- entry(place, cbi("bmx6/main"), "Configuration",6).dependent=false
-
- table.insert(place,"General")
- entry(place, cbi("bmx6/main"), "General",1)
- table.remove(place)
-
- table.insert(place,"Advanced")
- entry(place, cbi("bmx6/advanced"), "Advanced",5)
- table.remove(place)
-
- table.insert(place,"Interfaces")
- entry(place, cbi("bmx6/interfaces"), "Interfaces",2)
- table.remove(place)
-
- table.insert(place,"Tunnels")
- entry(place, cbi("bmx6/tunnels"), "Tunnels",3)
- table.remove(place)
-
- table.insert(place,"Plugins")
- entry(place, cbi("bmx6/plugins"), "Plugins",6)
- table.remove(place)
-
- table.insert(place,"HNAv6")
- entry(place, cbi("bmx6/hna"), "HNAv6",4)
- table.remove(place)
-
- table.remove(place)
-
-end
-
-function action_status_j()
- luci.template.render("bmx6/status_j", {})
-end
-
-
-function action_nodes_j()
- local http = require "luci.http"
- local link_non_js = "/cgi-bin/luci" .. http.getenv("PATH_INFO") .. '/nodes_nojs'
-
- luci.template.render("bmx6/nodes_j", {link_non_js=link_non_js})
-end
-
-function action_gateways_j()
- luci.template.render("bmx6/gateways_j", {})
-end
-
-function action_tunnels_j()
- luci.template.render("bmx6/tunnels_j", {})
-end
-
-function action_links(host)
- local links = bmx6json.get("links", host)
- local devlinks = {}
- local _,l
-
- if links ~= nil then
- links = links.links
- for _,l in ipairs(links) do
- devlinks[l.viaDev] = {}
- end
- for _,l in ipairs(links) do
- l.name = luci.util.split(l.name,'.')[1]
- table.insert(devlinks[l.viaDev],l)
- end
- end
-
- luci.template.render("bmx6/links", {links=devlinks})
-end
-
-function action_topology()
- local originators = bmx6json.get("originators/all")
- local o,i,l,i2
- local first = true
- local topology = '[ '
- local cache = '/tmp/bmx6-topology.json'
- local offset = 60
-
- local cachefd = io.open(cache,r)
- local update = false
-
- if cachefd ~= nil then
- local lastupdate = tonumber(cachefd:read("*line")) or 0
- if os.time() >= lastupdate + offset then
- update = true
- else
- topology = cachefd:read("*all")
- end
- cachefd:close()
- end
-
- if cachefd == nil or update then
- for i,o in ipairs(originators) do
- local links = bmx6json.get("links",o.primaryIp)
- if links then
- if first then
- first = false
- else
- topology = topology .. ', '
- end
-
- topology = topology .. '{ "name": "%s", "links": [' %o.name
-
- local first2 = true
-
- for i2,l in ipairs(links.links) do
- if first2 then
- first2 = false
- else
- topology = topology .. ', '
- end
- name = l.name or l.llocalIp or "unknown"
- topology = topology .. '{ "name": "%s", "rxRate": %s, "txRate": %s }'
- %{ name, l.rxRate, l.txRate }
-
- end
-
- topology = topology .. ']}'
- end
-
- end
-
- topology = topology .. ' ]'
-
- -- Upgrading the content of the cache file
- cachefd = io.open(cache,'w+')
- cachefd:write(os.time()..'\n')
- cachefd:write(topology)
- cachefd:close()
- end
-
- luci.http.prepare_content("application/json")
- luci.http.write(topology)
-end
-
-
-function action_chat()
- local sms_dir = "/var/run/bmx6/sms"
- local rcvd_dir = sms_dir .. "/rcvdSms"
- local send_file = sms_dir .. "/sendSms/chat"
- local sms_list = bmx6json.get("rcvdSms")
- local sender = ""
- local sms_file = ""
- local chat = {}
- local to_send = nil
- local sent = ""
- local fd = nil
-
- if luci.sys.call("test -d " .. sms_dir) ~= 0 then
- luci.template.render("bmx6/error", {txt="sms plugin disabled or some problem with directory " .. sms_dir})
- return nil
- end
-
- sms_list = luci.util.split(luci.util.exec("ls "..rcvd_dir.."/*:chat"))
-
- for _,sms_path in ipairs(sms_list) do
- if #sms_path > #rcvd_dir then
- sms_file = luci.util.split(sms_path,'/')
- sms_file = sms_file[#sms_file]
- sender = luci.util.split(sms_file,':')[1]
-
- -- Trying to clean the name
- if string.find(sender,".") ~= nil then
- sender = luci.util.split(sender,".")[1]
- end
-
- fd = io.open(sms_path,"r")
- chat[sender] = fd:read()
- fd:close()
- end
- end
-
- to_send = luci.http.formvalue("toSend")
- if to_send ~= nil and #to_send > 1 then
- fd = io.open(send_file,"w")
- fd:write(to_send)
- fd:close()
- sent = to_send
- else
- sent = luci.util.exec("cat "..send_file)
- end
-
- luci.template.render("bmx6/chat", {chat=chat,sent=sent})
-end
-
diff --git a/luci-app-bmx6/bmx6/usr/lib/lua/luci/model/bmx6json.lua b/luci-app-bmx6/bmx6/usr/lib/lua/luci/model/bmx6json.lua
deleted file mode 100644
index a61362b..0000000
--- a/luci-app-bmx6/bmx6/usr/lib/lua/luci/model/bmx6json.lua
+++ /dev/null
@@ -1,224 +0,0 @@
---[[
- Copyright (C) 2011 Pau Escrich
- Contributors Jo-Philipp Wich
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License along
- with this program; if not, write to the Free Software Foundation, Inc.,
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
- The full GNU General Public License is included in this distribution in
- the file called "COPYING".
---]]
-
-local ltn12 = require("luci.ltn12")
-local json = require("luci.json")
-local util = require("luci.util")
-local uci = require("luci.model.uci")
-local sys = require("luci.sys")
-local template = require("luci.template")
-local http = require("luci.http")
-local string = require("string")
-local table = require("table")
-local nixio = require("nixio")
-local nixiofs = require("nixio.fs")
-local ipairs = ipairs
-
-module "luci.model.bmx6json"
-
--- Returns a LUA object from bmx6 JSON daemon
-
-function get(field, host)
- local url
- if host ~= nil then
- if host:match(":") then
- url = 'http://[%s]/cgi-bin/bmx6-info?' % host
- else
- url = 'http://%s/cgi-bin/bmx6-info?' % host
- end
- else
- url = uci.cursor():get("luci-bmx6","luci","json")
- end
-
- if url == nil then
- print_error("bmx6 json url not configured, cannot fetch bmx6 daemon data",true)
- return nil
- end
-
- local json_url = util.split(url,":")
- local raw = ""
-
- if json_url[1] == "http" then
- raw,err = wget(url..field,1000)
- sys.exec("")
- else
-
- if json_url[1] == "exec" then
- raw = sys.exec(json_url[2]..' '..field)
- else
- print_error("bmx6 json url not recognized, cannot fetch bmx6 daemon data. Use http: or exec:",true)
- return nil
- end
-
- end
-
- local data = nil
-
- if raw and raw:len() > 10 then
- local decoder = json.Decoder()
- ltn12.pump.all(ltn12.source.string(raw), decoder:sink())
- data = decoder:get()
--- else
--- print_error("Cannot get data from bmx6 daemon",true)
--- return nil
- end
-
- return data
-end
-
-function print_error(txt,popup)
- util.perror(txt)
- sys.call("logger -t bmx6json " .. txt)
-
- if popup then
- http.write('')
- else
- http.write("
')
- end
-
-end
-
-function text2html(txt)
- txt = string.gsub(txt,"<","{")
- txt = string.gsub(txt,">","}")
- txt = util.striptags(txt)
- return txt
-end
-
-
-function wget(url, timeout)
- local rfd, wfd = nixio.pipe()
- local pid = nixio.fork()
- if pid == 0 then
- rfd:close()
- nixio.dup(wfd, nixio.stdout)
- -- candidates for wget, try first ones with SSL support
- local candidates = {{"/usr/bin/wget-ssl",1},{"/usr/bin/wget",0},{"/bin/wget",0}}
- local _, bin
- for _, bin in ipairs(candidates) do
- if nixiofs.access(bin[1], "x") then
- if bin[2] == 0 then
- nixio.exec(bin[1], "-q", "-O", "-", url)
- else
- nixio.exec(bin[1], "--no-check-certificate", "-q", "-O", "-", url)
- end
- end
- end
- return
- else
- wfd:close()
- rfd:setblocking(false)
-
- local buffer = { }
- local err1, err2
-
- while true do
- local ready = nixio.poll({{ fd = rfd, events = nixio.poll_flags("in") }}, timeout)
- if not ready then
- nixio.kill(pid, nixio.const.SIGKILL)
- err1 = "timeout"
- break
- end
-
- local rv = rfd:read(4096)
- if rv then
- -- eof
- if #rv == 0 then
- break
- end
-
- buffer[#buffer+1] = rv
- else
- -- error
- if nixio.errno() ~= nixio.const.EAGAIN and
- nixio.errno() ~= nixio.const.EWOULDBLOCK then
- err1 = "error"
- err2 = nixio.errno()
- end
- end
- end
-
- nixio.waitpid(pid, "nohang")
- if not err1 then
- return table.concat(buffer)
- else
- return nil, err1, err2
- end
- end
-end
-
-function getOptions(name)
- -- Getting json and Checking if bmx6-json is avaiable
- local options = get("options")
- if options == nil or options.OPTIONS == nil then
- m.message = "bmx6-json plugin is not running or some mistake in luci-bmx6 configuration, check /etc/config/luci-bmx6"
- return nil
- else
- options = options.OPTIONS
- end
-
- -- Filtering by the option name
- local i,_
- local namedopt = nil
- if name ~= nil then
- for _,i in ipairs(options) do
- if i.name == name and i.CHILD_OPTIONS ~= nil then
- namedopt = i.CHILD_OPTIONS
- break
- end
- end
- end
-
- return namedopt
-end
-
--- Rturns a help string formated to be used in HTML scope
-function getHtmlHelp(opt)
- if opt == nil then return nil end
-
- local help = ""
- if opt.help ~= nil then
- help = text2html(opt.help)
- end
- if opt.syntax ~= nil then
- help = help .. " Syntax: " .. text2html(opt.syntax)
- end
-
- return help
-end
-
-function testandreload()
- local test = sys.call('bmx6 -c --test > /tmp/bmx6-luci.err.tmp')
- if test ~= 0 then
- return sys.exec("cat /tmp/bmx6-luci.err.tmp")
- end
-
- local err = sys.call('bmx6 -c --configReload > /tmp/bmx6-luci.err.tmp')
- if err ~= 0 then
- return sys.exec("cat /tmp/bmx6-luci.err.tmp")
- end
-
- return nil
-end
-
diff --git a/luci-app-bmx6/bmx6/usr/lib/lua/luci/model/cbi/bmx6/advanced.lua b/luci-app-bmx6/bmx6/usr/lib/lua/luci/model/cbi/bmx6/advanced.lua
deleted file mode 100644
index c254899..0000000
--- a/luci-app-bmx6/bmx6/usr/lib/lua/luci/model/cbi/bmx6/advanced.lua
+++ /dev/null
@@ -1,75 +0,0 @@
---[[
- Copyright (C) 2011 Pau Escrich
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License along
- with this program; if not, write to the Free Software Foundation, Inc.,
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
- The full GNU General Public License is included in this distribution in
- the file called "COPYING".
---]]
-
-m = Map("bmx6", "bmx6")
-
-local bmx6json = require("luci.model.bmx6json")
-local util = require("luci.util")
-local http = require("luci.http")
-local sys = require("luci.sys")
-
-local options = bmx6json.get("options")
-if options == nil or options.OPTIONS == nil then
- m.message = "bmx6-json plugin is not running or some mistake in luci-bmx6 configuration, check /etc/config/luci-bmx6"
- options = {}
-else
- options = options.OPTIONS
-end
-
-local general = m:section(NamedSection,"general","bmx6")
-general.addremove = true
-
-local name = ""
-local help = ""
-local value = nil
-local _,o
-
-for _,o in ipairs(options) do
- if o.name ~= nil and o.CHILD_OPTIONS == nil and o.configurable == 1 then
- help = ""
- name = o.name
-
- if o.help ~= nil then
- help = bmx6json.text2html(o.help)
- end
-
- if o.syntax ~= nil then
- help = help .. " Syntax: " .. bmx6json.text2html(o.syntax)
- end
-
- if o.def ~= nil then
- help = help .. " Default: " .. o.def
- end
-
- value = general:option(Value,name,name,help)
-
- end
-end
-
-function m.on_commit(self,map)
- local err = sys.call('bmx6 -c --configReload > /tmp/bmx6-luci.err.tmp')
- if err ~= 0 then
- m.message = sys.exec("cat /tmp/bmx6-luci.err.tmp")
- end
-end
-
-return m
-
diff --git a/luci-app-bmx6/bmx6/usr/lib/lua/luci/model/cbi/bmx6/hna.lua b/luci-app-bmx6/bmx6/usr/lib/lua/luci/model/cbi/bmx6/hna.lua
deleted file mode 100644
index db98ae6..0000000
--- a/luci-app-bmx6/bmx6/usr/lib/lua/luci/model/cbi/bmx6/hna.lua
+++ /dev/null
@@ -1,47 +0,0 @@
---[[
- Copyright (C) 2011 Pau Escrich
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License along
- with this program; if not, write to the Free Software Foundation, Inc.,
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
- The full GNU General Public License is included in this distribution in
- the file called "COPYING".
---]]
-
-local sys = require("luci.sys")
-
-m = Map("bmx6", "bmx6")
-
-local hna = m:section(TypedSection,"unicastHna","IPv6 HNA")
-hna.addremove = true
-hna.anonymous = true
-local hna_option = hna:option(Value,"unicastHna", "IPv6 Host Network Announcement. Syntax /")
-
---function hna_option:validate(value)
--- local err = sys.call('bmx6 -c --test -a ' .. value)
--- if err ~= 0 then
--- return nil
--- end
--- return value
---end
-
-function m.on_commit(self,map)
- local err = sys.call('bmx6 -c --configReload > /tmp/bmx6-luci.err.tmp')
- if err ~= 0 then
- m.message = sys.exec("cat /tmp/bmx6-luci.err.tmp")
- end
-end
-
-return m
-
diff --git a/luci-app-bmx6/bmx6/usr/lib/lua/luci/model/cbi/bmx6/interfaces.lua b/luci-app-bmx6/bmx6/usr/lib/lua/luci/model/cbi/bmx6/interfaces.lua
deleted file mode 100644
index fb1261b..0000000
--- a/luci-app-bmx6/bmx6/usr/lib/lua/luci/model/cbi/bmx6/interfaces.lua
+++ /dev/null
@@ -1,77 +0,0 @@
---[[
- Copyright (C) 2011 Pau Escrich
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License along
- with this program; if not, write to the Free Software Foundation, Inc.,
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
- The full GNU General Public License is included in this distribution in
- the file called "COPYING".
---]]
-
-local sys = require("luci.sys")
-local bmx6json = require("luci.model.bmx6json")
-local m = Map("bmx6", "bmx6")
-
-local eth_int = sys.net.devices()
-local interfaces = m:section(TypedSection,"dev","Devices","")
-interfaces.addremove = true
-interfaces.anonymous = true
-
-local intlv = interfaces:option(ListValue,"dev","Device")
-
-for _,i in ipairs(eth_int) do
- intlv:value(i,i)
-end
-
--- Getting json and looking for device section
-local json = bmx6json.get("options")
-
-if json == nil or json.OPTIONS == nil then
- m.message = "bmx6-json plugin is not running or some mistake in luci-bmx6 configuration, check /etc/config/luci-bmx6"
- json = {}
-else
- json = json.OPTIONS
-end
-
-local dev = {}
-for _,j in ipairs(json) do
- if j.name == "dev" and j.CHILD_OPTIONS ~= nil then
- dev = j.CHILD_OPTIONS
- break
- end
-end
-
-local help = ""
-local name = ""
-
-for _,o in ipairs(dev) do
- if o.name ~= nil then
- help = ""
- name = o.name
- if o.help ~= nil then
- help = bmx6json.text2html(o.help)
- end
-
- if o.syntax ~= nil then
- help = help .. " Syntax: " .. bmx6json.text2html(o.syntax)
- end
-
- value = interfaces:option(Value,name,name,help)
- value.optional = true
- end
-end
-
-
-return m
-
diff --git a/luci-app-bmx6/bmx6/usr/lib/lua/luci/model/cbi/bmx6/main.lua b/luci-app-bmx6/bmx6/usr/lib/lua/luci/model/cbi/bmx6/main.lua
deleted file mode 100644
index 8ff3520..0000000
--- a/luci-app-bmx6/bmx6/usr/lib/lua/luci/model/cbi/bmx6/main.lua
+++ /dev/null
@@ -1,105 +0,0 @@
---[[
- Copyright (C) 2011 Pau Escrich
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License along
- with this program; if not, write to the Free Software Foundation, Inc.,
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
- The full GNU General Public License is included in this distribution in
- the file called "COPYING".
---]]
-
-local sys = require("luci.sys")
-local bmx6json = require("luci.model.bmx6json")
-
-m = Map("bmx6", "bmx6")
-
--- Getting json and Checking if bmx6-json is avaiable
-local options = bmx6json.get("options")
-if options == nil or options.OPTIONS == nil then
- m.message = "bmx6-json plugin is not running or some mistake in luci-bmx6 configuration, check /etc/config/luci-bmx6"
- return m
-else
- options = options.OPTIONS
-end
-
--- Getting a list of interfaces
-local eth_int = luci.sys.net.devices()
-
-local tunDev = m:section(TypedSection,"tunDev",translate("Tunnel device"),translate("Define incoming ipip tunnel interface name"))
-tunDev.addremove = true
-tunDev.anonymous = true
-tunDev:option(Value,"tunDev",translate("Name"),translate("Name for the tunnel network device"))
-tunDev:option(Value,"tun4Address", translate("IPv4 address/length"),translate("Specify default IPv4 tunnel address and announced range (ex. 10.1.2.3/24)"))
-tunDev:option(Value,"tun6Address", translate("IPv6 address/length"),translate("Specify default IPv6 tunnel address and announced range (ex. 2012:0:0:123:0:0:0:1/64)"))
-
--- IP section
-local ipV = m:section(NamedSection,"ipVersion","ipVersion",translate("Miscellaneous IP options"))
-ipV.addremove = false
-local lipv = ipV:option(ListValue,"ipVersion",translate("IP version"))
-lipv:value("6","6")
-lipv.default = "6"
-
--- rest of ip options are optional, getting them from json
-local ipoptions = {}
-for _,o in ipairs(options) do
- if o.name == "ipVersion" and o.CHILD_OPTIONS ~= nil then
- ipoptions = o.CHILD_OPTIONS
- break
- end
-end
-
-local help = ""
-local name = ""
-local value = nil
-
-for _,o in ipairs(ipoptions) do
- if o.name ~= nil then
- help = ""
- name = o.name
- if o.help ~= nil then
- help = bmx6json.text2html(o.help)
- end
-
- if o.syntax ~= nil then
- help = help .. " Syntax: " .. bmx6json.text2html(o.syntax)
- end
-
- if o.def ~= nil then
- help = help .. " Default: " .. bmx6json.text2html(o.def)
- end
-
- value = ipV:option(Value,name,name,help)
- value.optional = true
- end
-end
-
--- Interfaces section
-local interfaces = m:section(TypedSection,"dev",translate("Devices"),translate("Network devices to mesh with"))
-interfaces.addremove = true
-interfaces.anonymous = true
-local intlv = interfaces:option(ListValue,"dev",translate("Device"))
-
-for _,i in ipairs(eth_int) do
- intlv:value(i,i)
-end
-
-function m.on_commit(self,map)
- local err = sys.call('bmx6 -c --configReload > /tmp/bmx6-luci.err.tmp')
- if err ~= 0 then
- m.message = sys.exec("cat /tmp/bmx6-luci.err.tmp")
- end
-end
-
-return m
-
diff --git a/luci-app-bmx6/bmx6/usr/lib/lua/luci/model/cbi/bmx6/plugins.lua b/luci-app-bmx6/bmx6/usr/lib/lua/luci/model/cbi/bmx6/plugins.lua
deleted file mode 100644
index 518864e..0000000
--- a/luci-app-bmx6/bmx6/usr/lib/lua/luci/model/cbi/bmx6/plugins.lua
+++ /dev/null
@@ -1,50 +0,0 @@
---[[
- Copyright (C) 2011 Pau Escrich
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License along
- with this program; if not, write to the Free Software Foundation, Inc.,
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
- The full GNU General Public License is included in this distribution in
- the file called "COPYING".
---]]
-local sys = require("luci.sys")
-
-m = Map("bmx6", "bmx6")
-plugins_dir = {"/usr/lib/","/var/lib","/lib"}
-
-plugin = m:section(TypedSection,"plugin","Plugin")
-plugin.addremove = true
-plugin.anonymous = true
-plv = plugin:option(ListValue,"plugin", "Plugin")
-
-for _,d in ipairs(plugins_dir) do
- pl = luci.sys.exec("cd "..d..";ls bmx6_*")
- if #pl > 6 then
- for _,v in ipairs(luci.util.split(pl,"\n")) do
- plv:value(v,v)
- end
- end
-end
-
-
-function m.on_commit(self,map)
- local err = sys.call('/etc/init.d/bmx6 restart')
- if err ~= 0 then
- m.message = sys.exec("Cannot restart bmx6")
- end
-end
-
-
-return m
-
diff --git a/luci-app-bmx6/bmx6/usr/lib/lua/luci/model/cbi/bmx6/tunnels.lua b/luci-app-bmx6/bmx6/usr/lib/lua/luci/model/cbi/bmx6/tunnels.lua
deleted file mode 100644
index 92b14fc..0000000
--- a/luci-app-bmx6/bmx6/usr/lib/lua/luci/model/cbi/bmx6/tunnels.lua
+++ /dev/null
@@ -1,70 +0,0 @@
---[[
- Copyright (C) 2011 Pau Escrich
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License along
- with this program; if not, write to the Free Software Foundation, Inc.,
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
- The full GNU General Public License is included in this distribution in
- the file called "COPYING".
---]]
-
-local sys = require("luci.sys")
-local bmx6json = require("luci.model.bmx6json")
-
-m = Map("bmx6", "bmx6")
-
--- tunOut
-local tunnelsOut = m:section(TypedSection,"tunOut",translate("Networks to fetch"),translate("Gateways announcements to fetch"))
-tunnelsOut.addremove = true
-tunnelsOut.anonymous = true
-tunnelsOut:option(Value,"tunOut","Name")
-tunnelsOut:option(Value,"network", translate("Network to fetch"))
-
-local tunoptions = bmx6json.getOptions("tunOut")
-local _,o
-for _,o in ipairs(tunoptions) do
- if o.name ~= nil and o.name ~= "network" then
- help = bmx6json.getHtmlHelp(o)
- value = tunnelsOut:option(Value,o.name,o.name,help)
- value.optional = true
- end
-end
-
-
--- tunOut
-local tunnelsIn = m:section(TypedSection,"tunIn",translate("Networks to offer"),translate("Gateways to announce in the network"))
-tunnelsIn.addremove = true
-tunnelsIn.anonymous = true
-tunnelsIn:option(Value,"tunIn","Name")
-tunnelsIn:option(Value,"network", translate("Network to offer"))
-
-local tunInoptions = bmx6json.getOptions("tunIn")
-local _,o
-for _,o in ipairs(tunInoptions) do
- if o.name ~= nil and o.name ~= "network" then
- help = bmx6json.getHtmlHelp(o)
- value = tunnelsIn:option(Value,o.name,o.name,help)
- value.optional = true
- end
-end
-
-function m.on_commit(self,map)
- --Not working. If test returns error the changes are still commited
- local msg = bmx6json.testandreload()
- if msg ~= nil then
- m.message = msg
- end
-end
-
-return m
diff --git a/luci-app-bmx6/bmx6/usr/lib/lua/luci/view/admin_status/index/neighbours_simple.htm b/luci-app-bmx6/bmx6/usr/lib/lua/luci/view/admin_status/index/neighbours_simple.htm
deleted file mode 100644
index 07412b7..0000000
--- a/luci-app-bmx6/bmx6/usr/lib/lua/luci/view/admin_status/index/neighbours_simple.htm
+++ /dev/null
@@ -1,108 +0,0 @@
-
-
-
This is sms a chat where all bmx6 nodes can participate. The data is replayed using routing packets, so there is a limit of 2040 bytes. Use it only to send short messages.
-
Each participant can only send one sms at same time.
-
-
-Received SMS
-
-
-<% for orig,sms in pairs(chat) do %>
- <%=orig%>:<%=sms%>
-<% end %>
-
-
-<%+footer%>
-
diff --git a/luci-app-bmx6/bmx6/usr/lib/lua/luci/view/bmx6/graph.htm b/luci-app-bmx6/bmx6/usr/lib/lua/luci/view/bmx6/graph.htm
deleted file mode 100644
index 0655302..0000000
--- a/luci-app-bmx6/bmx6/usr/lib/lua/luci/view/bmx6/graph.htm
+++ /dev/null
@@ -1,49 +0,0 @@
-<%#
-Copyright (C) 2011 Pau Escrich
-Contributors Jo-Philip
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License along
-with this program; if not, write to the Free Software Foundation, Inc.,
-51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-The full GNU General Public License is included in this distribution in
-the file called "COPYING".
--%>
-
-<%
- luci.http.prepare_content("text/html")
-
- local location = { unpack(luci.dispatcher.context.path) }
- location[#location] = "topology"
-%>
-
-<%+header%>
-
-
-
-
Rate (rx/tx):
- <% if l.rxRate+l.txRate < 120 then %>
-
- <% else %>
-
- <% end %>
- <%=l.rxRate%>/<%=l.txRate%>
-
-
-
Routes: <%=l.routes%>
-
-
-
-
-
-<% end %>
-
-<% end %>
-
-
-
-
-<%+footer%>
diff --git a/luci-app-bmx6/bmx6/usr/lib/lua/luci/view/bmx6/nodes_j.htm b/luci-app-bmx6/bmx6/usr/lib/lua/luci/view/bmx6/nodes_j.htm
deleted file mode 100644
index 6a43e2d..0000000
--- a/luci-app-bmx6/bmx6/usr/lib/lua/luci/view/bmx6/nodes_j.htm
+++ /dev/null
@@ -1,204 +0,0 @@
-<%#
- Copyright (C) 2011 Pau Escrich
- Contributors Lluis Esquerda
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License along
- with this program; if not, write to the Free Software Foundation, Inc.,
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
- The full GNU General Public License is included in this distribution in
- the file called "COPYING".
--%>
-
-<%+header%>
-
-
-
-
-
-
-
-
-
-a mesh routing protocol for Linux devices.
-Visit bmx6.net for more info.
-
-
-
-
-
status
-
-
-
-
-
-
-
-<%+footer%>
-
diff --git a/luci-app-bmx6/bmx6/usr/lib/lua/luci/view/bmx6/tunnels_j.htm b/luci-app-bmx6/bmx6/usr/lib/lua/luci/view/bmx6/tunnels_j.htm
deleted file mode 100644
index 244d04f..0000000
--- a/luci-app-bmx6/bmx6/usr/lib/lua/luci/view/bmx6/tunnels_j.htm
+++ /dev/null
@@ -1,106 +0,0 @@
-<%#
- Copyright (C) 2011 Pau Escrich
- Contributors Lluis Esquerda
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License along
- with this program; if not, write to the Free Software Foundation, Inc.,
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
- The full GNU General Public License is included in this distribution in
- the file called "COPYING".
--%>
-
-
-<%+header%>
-
-
-
-
-
-
-
-
Gateways tunnel announcements
-
-
-
-
-
-
-
-<%+footer%>
-
diff --git a/luci-app-bmx6/bmx6/www/cgi-bin/bmx6-info b/luci-app-bmx6/bmx6/www/cgi-bin/bmx6-info
deleted file mode 100755
index 8f5555e..0000000
--- a/luci-app-bmx6/bmx6/www/cgi-bin/bmx6-info
+++ /dev/null
@@ -1,126 +0,0 @@
-#!/bin/sh
-# This script gives information about bmx6
-# Can be executed from a linux shell: ./bmx6-info -s links
-# Or from web interfae (with cgi enabled): http://host/cgi-bin/bmx6-info?links
-# Special methods are tagged with '$', like $myself or $neighbours: http://host/cgi-bin/bmx6-info?$myself
-# When '$' is not used, raw bmx6 information from the filesystem is returned (/var/runb/bmx6/json/)
-
-BMX6_DIR="$(uci get bmx6.general.runtimeDir 2>/dev/null)" || BMX6_DIR="/var/run/bmx6/json"
-
-#Checking if shell mode or cgi-bin mode
-if [ "$1" == "-s" ]; then
- QUERY="$2"
-else
- QUERY="${QUERY_STRING%%=*}"
- QUERY="${QUERY%%\?*}"
- QUERY="${QUERY%%\&*}"
- echo "Content-type: application/json"
- echo ""
-fi
-
-# workaround to support old format starting with '$'
-QUERY="$(echo "$QUERY" | sed s/'\$'//)"
-
-check_path() {
- [ -d "$1" ] && path=$(cd $1; pwd)
- [ -f "$1" ] && path=$(cd $1/..; pwd)
- [ $(echo "$path" | grep -c "^$BMX6_DIR") -ne 1 ] && exit 1
-}
-
-print_query() {
- # If the query is a directory
- [ -d "$BMX6_DIR/$1" ] &&
- {
- # If /all has not been specified
- [ -z "$QALL" ] &&
- {
- total=$(ls $BMX6_DIR/$1 | wc -w)
- i=1
- echo -n "{ \"$1\": [ "
- for f in $(ls $BMX6_DIR/$1); do
- echo -n "{ \"name\": \"$f\" }"
- [ $i -lt $total ] && echo -n ','
- i=$(( $i + 1 ))
- done
- echo -n " ] }"
-
- # If /all has been specified, printing all the files together
- } || {
- comma=""
- echo -n "[ "
- for entry in "$BMX6_DIR/$1/"*; do
- [ -f "$entry" ] &&
- {
- ${comma:+echo -n "$comma"}
- tr -d '\n' < "$entry"
- comma=","
- }
- done
- echo -n " ]"
- }
- }
- # If the query is a file, just printing the file
- [ -f "$BMX6_DIR/$1" ] && cat "$BMX6_DIR/$1";
-}
-
-if [ "${QUERY##*/}" == "all" ]; then
- QUERY="${QUERY%/all}"
- QALL=1
-fi
-
-if [ "$QUERY" == 'myself' ]; then
- hostname="$(cat /proc/sys/kernel/hostname)"
- ip6="$(bmx6 -c show=status | grep ^BMX | awk '{print $5}')"
- ip4="$(bmx6 -c show=status | grep ^BMX | awk '{print $6}')"
- cidr6=$(lua -l luci.ip -e "ip=luci.ip.new(\"$ip6\"); print(ip:network():string()..'/'..ip:prefix())")
- cidr4=$(lua -l luci.ip -e "ip=luci.ip.new(\"$ip4\"); print(ip:network():string()..'/'..ip:prefix())")
- echo -n "{\"myself\":{\"hostname\":\"$hostname\",\"ip6\":\"$ip6\",\"ip4\":\"$ip4\",\"net6\":\"$cidr6\",\"net4\":\"$cidr4\"}}"
- exit 0
-fi
-
-if [ "$QUERY" == 'info' ]; then
- echo -n '{ "info": [ '
- print_query status
- echo -n ","
- print_query interfaces
- echo -n "] }"
- exit 0
-fi
-
-if [ "$QUERY" == 'neighbours' ]; then
- QALL=1
- echo -n '{ "neighbours": [ '
- echo -n '{ "originators": '
- print_query originators
- echo -n '}, '
- echo -n '{ "descriptions": '
- print_query descriptions
- echo -n "} ] }"
- exit 0
-fi
-
-if [ "$QUERY" == 'tunnels' ]; then
- tunnels=$(bmx6 -c --jshow tunnels /r=0)
- if [ -z "$tunnels" ]; then
- echo '{ "tunnels" : [] }'
- else
- echo $tunnels
- fi
- exit 0
-fi
-
-if [ "$QUERY" == "" ]; then
- echo -n '{ "queries": ['
- echo -n '{ "name": "myself", "info": "basic network information of self node" },'
- echo -n '{ "name": "info", "info": "full network and device information of self node" },'
- echo -n '{ "name": "tunnels", "info": "accnouncements (tunnels) published by the mesh network" },'
- echo -n '{ "name": "neighbours", "info": "list of all my neighbours and their information" },'
- echo -n '{ "name": "/", "info": "raw bmx6 json API" }]}'
- exit 0
-fi
-
-check_path "$BMX6_DIR/$QUERY"
-print_query $QUERY
-
-#ls -1F "$BMX6_DIR"
-exit 0
diff --git a/luci-app-bmx6/bmx6/www/luci-static/resources/bmx6/bmx6logo.png b/luci-app-bmx6/bmx6/www/luci-static/resources/bmx6/bmx6logo.png
deleted file mode 100644
index 12f7526..0000000
Binary files a/luci-app-bmx6/bmx6/www/luci-static/resources/bmx6/bmx6logo.png and /dev/null differ
diff --git a/luci-app-bmx6/bmx6/www/luci-static/resources/bmx6/js/bmx6-graph.js b/luci-app-bmx6/bmx6/www/luci-static/resources/bmx6/js/bmx6-graph.js
deleted file mode 100644
index e3ff009..0000000
--- a/luci-app-bmx6/bmx6/www/luci-static/resources/bmx6/js/bmx6-graph.js
+++ /dev/null
@@ -1,234 +0,0 @@
-var graph, canvas, layouter, renderer, divwait, nodes, announcements, nodesIndex, palette, localInfo;
-document.addEventListener( "DOMContentLoaded", init, false);
-
-/**
- * Returns an index of nodes by name
- */
-function createNodeIndex(nodes) {
- var inode, index = {};
-
- for (inode in nodes)
- index[nodes[inode].name] = nodes[inode];
-
- return index;
-}
-
-/**
- * Updates to have announcements in nodes list
- */
-function processNodeAnnouncements(nodes, announcements) {
- var iannouncement, remoteNode, announcement;
- nodesIndex = createNodeIndex(nodes);
-
- for(iannouncement in announcements) {
- announcement = announcements[iannouncement];
- if (announcement.remoteName == '---' ) continue;
- if (!( announcement.remoteName in nodesIndex )) {
- newNode = {
- name: announcement.remoteName,
- links: []
- };
- nodes.push(newNode);
- nodesIndex[newNode.name] = newNode;
- };
-
- remoteNode = nodesIndex[announcement.remoteName];
- if (!( 'announcements' in remoteNode )) remoteNode.announcements = [];
- remoteNode.announcements.push(announcement);
- };
-}
-
-function init() {
- palette = generatePalette(200);
-
- graph = new Graph();
- canvas = document.getElementById('canvas');
- layouter = new Graph.Layout.Spring(graph);
- renderer = new Graph.Renderer.Raphael(canvas.id, graph, canvas.offsetWidth, canvas.offsetHeight);
-
- divwait = document.getElementById("wait");
-
- XHR.get('/cgi-bin/luci/admin/network/BMX6/topology', null, function(nodesRequest, nodesData) {
- nodes = nodesData;
-
- XHR.get('/cgi-bin/bmx6-info?$myself&', null, function(myselfRequest, myselfData) {
- if (myselfData)
- localAnnouncements = [
- {remoteName: myselfData.myself.hostname, advNet: myselfData.myself.net4},
- {remoteName: myselfData.myself.hostname, advNet: myselfData.myself.net6}
- ];
-
- XHR.get('/cgi-bin/bmx6-info?$tunnels=&', null, function(tunnelsRequest, tunnelsData) {
- var iAnnouncement;
-
- announcements = tunnelsData.tunnels;
- for(iAnnouncement in localAnnouncements) {
- announcements.push(localAnnouncements[iAnnouncement])
- };
-
- processNodeAnnouncements(nodes, announcements);
-
- divwait.parentNode.removeChild(divwait);
- draw(nodes);
- });
- });
- });
-}
-
-function hashCode(str) {
- var hash = 0;
- if (str.length == 0) return hash;
- for (i = 0; i < str.length; i++) {
- char = str.charCodeAt(i);
- hash = ((hash<<5)-hash)+char;
- hash = hash & hash; // Convert to 32bit integer
- }
- return hash;
-}
-
-function generatePalette(size) {
- var i, arr = [];
- Raphael.getColor(); // just to remove the grey one
- for(i = 0; i < size; i++) {
- arr.push(Raphael.getColor())
- }
-
- return arr;
-}
-
-function getFillFromHash(hash) {
- return palette[Math.abs(hash % palette.length)];
-}
-
-function hashAnnouncementsNames(announcementsNames) {
- return hashCode(announcementsNames.sort().join('-'));
-}
-
-function getNodeAnnouncements(networkNode) {
- return networkNode.announcements;
-}
-
-function nodeRenderer(raphael, node) {
- var nodeFill, renderedNode, options;
- options = {
- 'fill': 'announcements' in node.networkNode ? getFillFromHash(
- hashAnnouncementsNames(
- getNodeAnnouncements(node.networkNode).map(function(ann) {return ann.advNet;})
- )
- ) : '#bfbfbf',
- 'stroke-width': 1,
-
- };
-
- renderedNode = raphael.set();
-
- renderedNode.push(raphael.ellipse(node.point[0], node.point[1], 30, 20).attr({"fill": options['fill'], "stroke-width": options['stroke-width']}));
- renderedNode.push(raphael.text(node.point[0], node.point[1] + 30, node.networkNode.name).attr({}));
-
- renderedNode.items.forEach(function(el) {
- var announcements, tooltip = raphael.set();
- tooltip.push(raphael.rect(-60, -60, 120, 60).attr({"fill": "#fec", "stroke-width": 1, r : "9px"}));
-
- announcements = getNodeAnnouncements(node.networkNode);
- if (announcements) {
-
- announcements = announcements.map(function(ann) {return ann.advNet});
- tooltip.push(raphael.text(0, -40, 'announcements\n' + announcements.join('\n')).attr({}));
- };
-
- el.tooltip(tooltip);
- });
-
- return renderedNode;
-}
-
-function genericNodeRenderer(raphael, node) {
- var renderedNode;
-
- renderedNode = raphael.set();
-
- renderedNode.push(raphael.ellipse(node.point[0], node.point[1], 30, 20).attr({"fill": '#bfbfbf', "stroke-width": 1}));
- renderedNode.push(raphael.text(node.point[0], node.point[1] + 30, node.networkNode.name).attr({}));
-
- return renderedNode;
-}
-
-function redraw() {
- layouter.layout();
- renderer.draw();
-}
-
-function interpolateColor(minColor,maxColor,maxDepth,depth){
-
- function d2h(d) {return d.toString(16);}
- function h2d(h) {return parseInt(h,16);}
-
- if(depth == 0){
- return minColor;
- }
- if(depth == maxDepth){
- return maxColor;
- }
-
- var color = "#";
-
- for(var i=1; i <= 6; i+=2){
- var minVal = new Number(h2d(minColor.substr(i,2)));
- var maxVal = new Number(h2d(maxColor.substr(i,2)));
- var nVal = minVal + (maxVal-minVal) * (depth/maxDepth);
- var val = d2h(Math.floor(nVal));
- while(val.length < 2){
- val = "0"+val;
- }
- color += val;
- }
- return color;
-}
-function draw(nodes) {
- var node, neighbourNode, seenKey, rxRate, txRate, seen, i, j, currentName, linkQuality;
-
- seen = { };
-
- for (i = 0; i < (nodes.length); i++) {
- node = nodes[i];
- graph.addNode(node.name, {
- networkNode: node,
- render: nodeRenderer
- });
- };
-
- for (i = 0; i < (nodes.length); i++) {
- node = nodes[i];
-
- if (! node.name) continue;
-
- currentName = node.name;
-
- for (j = 0; j < (node.links.length); j++) {
- neighbourNode = node.links[j];
-
- graph.addNode(neighbourNode.name, {render: genericNodeRenderer, networkNode: neighbourNode});
-
- seenKey = (node.name < neighbourNode.name) ? node.name + '|' + neighbourNode.name : neighbourNode.name + '|' + node.name;
-
- rxRate = neighbourNode.rxRate;
- txRate = neighbourNode.txRate;
-
- if (!seen[seenKey] && rxRate > 0 && txRate > 0) {
- linkQuality = ( rxRate + txRate ) / 2;
-
- graph.addEdge(node.name, neighbourNode.name, {
- 'label': rxRate + '/' + txRate,
- 'directed': false,
- 'stroke': interpolateColor('FF0000','00FF00', 5, 5 * ( linkQuality - 1 )/100),
- 'fill': interpolateColor('FF0000','00FF00', 5, 5 * ( linkQuality - 1 )/100),
- 'label-style': { 'font-size': 8 }
- });
-
- seen[seenKey] = true;
- }
- }
- }
-
- redraw();
-}
diff --git a/luci-app-bmx6/bmx6/www/luci-static/resources/bmx6/js/polling.js b/luci-app-bmx6/bmx6/www/luci-static/resources/bmx6/js/polling.js
deleted file mode 100644
index 8f81443..0000000
--- a/luci-app-bmx6/bmx6/www/luci-static/resources/bmx6/js/polling.js
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- Copyright (C) 2011 Pau Escrich
- Contributors Lluis Esquerda
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License along
- with this program; if not, write to the Free Software Foundation, Inc.,
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
- The full GNU General Public License is included in this distribution in
- the file called "COPYING".
-*/
-
-
-/*
- Table pooler is a function to easy call XHR poller.
-
- new TablePooler(5,"/cgi-bin/bmx6-info", {'status':''}, "status_table", function(st){
- var table = Array()
- table.push(st.first,st.second)
- return table
- }
- Parameters are:
- polling_time: time between pollings
- json_url: the json url to fetch the data
- json_call: the json call
- output_table_id: the table where javascript will put the data
- callback_function: the function that will be executed each polling_time
-
- The callback_function must return an array of arrays (matrix).
- In the code st is the data obtained from the json call
-*/
-
- function TablePooler (time, jsonurl, getparams, table_id, callback) {
- this.table = document.getElementById(table_id);
- this.callback = callback;
- this.jsonurl = jsonurl;
- this.getparams = getparams;
- this.time = time;
-
- this.clear = function(){
- /* clear all rows */
- while( this.table.rows.length > 1 ) this.table.deleteRow(1);
- }
- this.start = function(){
- XHR.poll(this.time, this.jsonurl, this.getparams, function(x, st){
- var data = this.callback(st);
- var content, tr, td;
- this.clear();
- for (var i = 0; i < data.length; i++){
- tr = this.table.insertRow(-1);
- tr.className = 'cbi-section-table-row cbi-rowstyle-' + ((i % 2) + 1);
-
- for (var j = 0; j < data[i].length; j++){
- td = tr.insertCell(-1);
- if (data[i][j].length == 2) {
- td.colSpan = data[i][j][1];
- content = data[i][j][0];
- }
- else content = data[i][j];
- td.innerHTML = content;
- }
- }
- }.bind(this));
- }
-
-
- this.start();
- }
-
-
-
diff --git a/luci-app-bmx6/bmx6/www/luci-static/resources/bmx6/link.png b/luci-app-bmx6/bmx6/www/luci-static/resources/bmx6/link.png
deleted file mode 100644
index 58977ff..0000000
Binary files a/luci-app-bmx6/bmx6/www/luci-static/resources/bmx6/link.png and /dev/null differ
diff --git a/luci-app-bmx6/bmx6/www/luci-static/resources/bmx6/style.css b/luci-app-bmx6/bmx6/www/luci-static/resources/bmx6/style.css
deleted file mode 100644
index d8191a7..0000000
--- a/luci-app-bmx6/bmx6/www/luci-static/resources/bmx6/style.css
+++ /dev/null
@@ -1,22 +0,0 @@
- table {
- width:90%;
- border-top:1px solid #e5eaf8;
- border-right:1px solid #e5eaf8;
- margin:1em auto;
- border-collapse:collapse;
- }
-
- td {
- color:#678197;
- border-bottom:1px solid #e6eff8;
- border-left:1px solid #e6eff8;
- padding:.3em 1em;
- text-align:center;
- }
- th {
- background:#f4f9fe;
- text-align:center;
- font:bold 1.2em/2em Century Gothic,Trebuchet MS,Arial,Helvetica,sans-serif;
- color:#66a3d3;
- }
-
diff --git a/luci-app-bmx6/bmx6/www/luci-static/resources/bmx6/wifi.png b/luci-app-bmx6/bmx6/www/luci-static/resources/bmx6/wifi.png
deleted file mode 100644
index 4195b08..0000000
Binary files a/luci-app-bmx6/bmx6/www/luci-static/resources/bmx6/wifi.png and /dev/null differ
diff --git a/luci-app-bmx6/bmx6/www/luci-static/resources/bmx6/world.png b/luci-app-bmx6/bmx6/www/luci-static/resources/bmx6/world.png
deleted file mode 100644
index 29b53c9..0000000
Binary files a/luci-app-bmx6/bmx6/www/luci-static/resources/bmx6/world.png and /dev/null differ
diff --git a/luci-app-bmx6/bmx6/www/luci-static/resources/bmx6/world_small.png b/luci-app-bmx6/bmx6/www/luci-static/resources/bmx6/world_small.png
deleted file mode 100644
index f5f3105..0000000
Binary files a/luci-app-bmx6/bmx6/www/luci-static/resources/bmx6/world_small.png and /dev/null differ
diff --git a/luci-app-bmx6/dracula/dracula_graffle.js b/luci-app-bmx6/dracula/dracula_graffle.js
deleted file mode 100644
index 9832727..0000000
--- a/luci-app-bmx6/dracula/dracula_graffle.js
+++ /dev/null
@@ -1 +0,0 @@
-Raphael.fn.connection=function(a,b,c){var d=this,e={draw:function(){for(var f=a.getBBox(),g=b.getBBox(),h=0,i=0,j=[{x:f.x+f.width/2,y:f.y-h},{x:f.x+f.width/2,y:f.y+f.height+h},{x:f.x-h,y:f.y+f.height/2},{x:f.x+f.width+h,y:f.y+f.height/2},{x:g.x+g.width/2,y:g.y-i},{x:g.x+g.width/2,y:g.y+g.height+i},{x:g.x-i,y:g.y+g.height/2},{x:g.x+g.width+i,y:g.y+g.height/2}],k={},l=[],m=0;m<4;m++)for(var n=4;n<8;n++){var o=Math.abs(j[m].x-j[n].x),p=Math.abs(j[m].y-j[n].y);(m==n-4||(3!=m&&6!=n||j[m].xj[n].x)&&(0!=m&&5!=n||j[m].y>j[n].y)&&(1!=m&&4!=n||j[m].ye.width-20?c-e.width+20:0),g=a.clientY-(d<20?d-20:d>e.height-20?d-e.height+20:0);e.isDrag.set.translate(f-Math.round(e.isDrag.dx),g-Math.round(e.isDrag.dy));for(var h in e.graph.edges)e.graph.edges[h].connection&&e.graph.edges[h].connection.draw();e.isDrag.dx=f,e.isDrag.dy=g}},f.onmouseup=function(){e.isDrag&&e.isDrag.set.animate({"fill-opacity":.6},500),e.isDrag=!1},this.draw()},Graph.Renderer.Raphael.prototype={translate:function(a){return[(a[0]-this.graph.layoutMinX)*this.factorX+this.radius,(a[1]-this.graph.layoutMinY)*this.factorY+this.radius]},rotate:function(a,b,c){var d=b*Math.cos(c),e=b*Math.sin(c);return[a[0]+d,a[1]+e]},draw:function(){this.factorX=(this.width-2*this.radius)/(this.graph.layoutMaxX-this.graph.layoutMinX),this.factorY=(this.height-2*this.radius)/(this.graph.layoutMaxY-this.graph.layoutMinY);for(a in this.graph.nodes)this.drawNode(this.graph.nodes[a]);for(var a=0;ab&&(b=e),ed&&(d=f),fk&&(i=k),i<-k&&(i=-k),j>k&&(j=k),j<-k&&(j=-k),h.layoutPosX+=i,h.layoutPosY+=j,h.layoutForceX=0,h.layoutForceY=0}},layoutRepulsive:function(a,b){if("undefined"!=typeof a&&"undefined"!=typeof b){var c=b.layoutPosX-a.layoutPosX,d=b.layoutPosY-a.layoutPosY,e=c*c+d*d;if(e<.01){c=.1*Math.random()+.1,d=.1*Math.random()+.1;var e=c*c+d*d}var f=Math.sqrt(e);if(fthis.maxRepulsiveForceDistance&&(g=this.maxRepulsiveForceDistance,f=g*g);var h=(f-this.k*this.k)/this.k;void 0==a.attraction&&(a.attraction=1),h*=.5*Math.log(a.attraction)+1,c.layoutForceX-=h*d/g,c.layoutForceY-=h*e/g,b.layoutForceX+=h*d/g,b.layoutForceY+=h*e/g}},Graph.Layout.Ordered=function(a,b){this.graph=a,this.order=b,this.layout()},Graph.Layout.Ordered.prototype={layout:function(){this.layoutPrepare(),this.layoutCalcBounds()},layoutPrepare:function(a){for(i in this.graph.nodes){var b=this.graph.nodes[i];b.layoutPosX=0,b.layoutPosY=0}var c=0;for(i in this.order){var b=this.order[i];b.layoutPosX=c,b.layoutPosY=Math.random(),c++}},layoutCalcBounds:function(){var a=1/0,b=-(1/0),c=1/0,d=-(1/0);for(i in this.graph.nodes){var e=this.graph.nodes[i].layoutPosX,f=this.graph.nodes[i].layoutPosY;e>b&&(b=e),ed&&(d=f),f