WiND - Wireless Nodes Database
WiND is a Web application targeted at Wireless Community Networks. It was created as a replacement for NodeDB for the members of Athens Wireless Metropolitan Network (AWMN) located in Athens, Greece. It has evolved into much more as you can see below in the feature list. License
WiND was created by a team of people and each piece of code remains under the copyright of their respective author.
WiND is Free Software, licensed under the GNU GPL. Everyone can see the source code and everyone can contribute to it. In fact, please do!
AWMN Installation
AWMN - Athens Wireless Metropolitan Network
Techical information
WiND is written in PHP and uses a MySQL backend for storing the data. Smarty is used as the theme engine.
Features
- Supports multiple users and multiple nodes per user
- User management: different access rights for each job
- Stores all the node information a Wireless MAN will need: location, height, area, region, backbone & AP interfaces, roof view photos, subnets & hosts in a node etc.
- Provides an easy (but powerful) way of searching for specific nodes
- Using NASA's SRTM data, it graphs the Line of Sight (and Fresnel Zone) between two nodes and calculates Free Space Loss for the distance between them
- Uses Google Maps to show the nodes and their links on the map.
- Can be used to manage the distribution of IP Ranges and forward/reverse DNS assigned to each node (Hostmaster)
- Fully themeable interface (using simple (X)HTML templates)
- Support for localization; Unicode/UTF-8 support
- Integrates with BIND Nameserver for serving the DNS zones, PowerDNS integration planned
- A WHOIS server is provided that serves the data using the WHOIS protocol
Wind Database Tables
+-----------------------+ | Tables_in_wind | +-----------------------+ | areas | | dns_nameservers | | dns_zones | | dns_zones_nameservers | | ip_addresses | | ip_ranges | | links | | nodes | | nodes_services | | photos | | regions | | rights | | services | | subnets | | users | | users_nodes | | visits | +-----------------------+
Fields-Schema of the database
mysql> desc areas; +-----------+------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-----------+------------------+------+-----+---------+----------------+ | id | int(10) unsigned | NO | PRI | NULL | auto_increment | | region_id | int(10) unsigned | NO | MUL | 0 | | | name | varchar(40) | NO | MUL | | | | ip_start | int(10) | NO | MUL | 0 | | | ip_end | int(10) | NO | MUL | 0 | | | info | text | YES | | NULL | | +-----------+------------------+------+-----+---------+----------------+ 6 rows in set (0.00 sec) mysql> desc dns_nameservers; +------------+---------------------------------------------------------+------+-----+---------------------+----------------+ | Field | Type | Null | Key | Default | Extra | +------------+---------------------------------------------------------+------+-----+---------------------+----------------+ | id | int(10) unsigned | NO | PRI | NULL | auto_increment | | date_in | datetime | NO | MUL | 0000-00-00 00:00:00 | | | node_id | int(10) unsigned | NO | MUL | 0 | | | name | enum('ns0','ns1','ns2','ns3') | NO | MUL | ns0 | | | ip | int(10) | NO | MUL | 0 | | | status | enum('waiting','active','pending','rejected','invalid') | NO | MUL | waiting | | | delete_req | enum('Y','N') | NO | MUL | N | | +------------+---------------------------------------------------------+------+-----+---------------------+----------------+ 7 rows in set (0.01 sec) mysql> desc dns_zones; +------------+---------------------------------------------------------+------+-----+---------------------+----------------+ | Field | Type | Null | Key | Default | Extra | +------------+---------------------------------------------------------+------+-----+---------------------+----------------+ | id | int(10) unsigned | NO | PRI | NULL | auto_increment | | date_in | datetime | NO | MUL | 0000-00-00 00:00:00 | | | type | enum('forward','reverse') | NO | MUL | forward | | | name | varchar(30) | NO | MUL | | | | node_id | int(10) unsigned | YES | MUL | 0 | | | status | enum('waiting','active','pending','rejected','invalid') | NO | MUL | waiting | | | info | text | YES | | NULL | | | delete_req | enum('Y','N') | NO | MUL | N | | +------------+---------------------------------------------------------+------+-----+---------------------+----------------+ 8 rows in set (0.01 sec) mysql> desc dns_zones_nameservers; +---------------+------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +---------------+------------------+------+-----+---------+----------------+ | id | int(10) unsigned | NO | PRI | NULL | auto_increment | | zone_id | int(10) unsigned | NO | MUL | 0 | | | nameserver_id | int(10) unsigned | NO | MUL | 0 | | +---------------+------------------+------+-----+---------+----------------+ 3 rows in set (0.00 sec) mysql> desc ip_addresses; +-----------+------------------------------------------------------------------------+------+-----+---------------------+----------------+ | Field | Type | Null | Key | Default | Extra | +-----------+------------------------------------------------------------------------+------+-----+---------------------+----------------+ | id | int(10) unsigned | NO | PRI | NULL | auto_increment | | date_in | datetime | NO | | 0000-00-00 00:00:00 | | | hostname | varchar(50) | NO | MUL | | | | ip | int(10) | NO | MUL | 0 | | | mac | varchar(17) | YES | | NULL | | | node_id | int(10) unsigned | NO | MUL | 0 | | | type | enum('router','server','pc','wireless-bridge','voip','camera','other') | NO | MUL | pc | | | always_on | enum('Y','N') | NO | | N | | | info | text | YES | | NULL | | +-----------+------------------------------------------------------------------------+------+-----+---------------------+----------------+ 9 rows in set (0.00 sec) mysql> desc ip_ranges; +------------+---------------------------------------------------------+------+-----+---------------------+----------------+ | Field | Type | Null | Key | Default | Extra | +------------+---------------------------------------------------------+------+-----+---------------------+----------------+ | id | int(10) unsigned | NO | PRI | NULL | auto_increment | | date_in | datetime | NO | MUL | 0000-00-00 00:00:00 | | | node_id | int(10) unsigned | NO | MUL | 0 | | | ip_start | int(10) | NO | MUL | 0 | | | ip_end | int(10) | NO | MUL | 0 | | | status | enum('waiting','active','pending','rejected','invalid') | NO | MUL | waiting | | | info | text | YES | | NULL | | | delete_req | enum('Y','N') | NO | MUL | N | | +------------+---------------------------------------------------------+------+-----+---------------------+----------------+ 8 rows in set (0.00 sec) mysql> desc links; +--------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+------+-----+---------------------+----------------+ | Field | Type | Null | Key | Default | Extra | +--------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+------+-----+---------------------+----------------+ | id | int(10) unsigned | NO | PRI | NULL | auto_increment | | date_in | datetime | NO | | 0000-00-00 00:00:00 | | | node_id | int(10) unsigned | NO | MUL | 0 | | | peer_node_id | int(10) unsigned | YES | MUL | NULL | | | peer_ap_id | int(10) unsigned | YES | MUL | NULL | | | type | enum('p2p','ap','client') | NO | MUL | p2p | | | ssid | varchar(50) | YES | | NULL | | | protocol | enum('IEEE 802.11b','IEEE 802.11g','IEEE 802.11a','IEEE 802.11n','IEEE 802.3i (Ethernet)','IEEE 802.3u (Fast Ethernet)','IEEE 802.3ab (Gigabit Ethernet)','other') | YES | | NULL | | | channel | varchar(50) | YES | | NULL | | | status | enum('active','inactive') | NO | MUL | active | | | equipment | text | YES | | NULL | | | info | text | YES | | NULL | | +--------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+------+-----+---------------------+----------------+ 12 rows in set (0.00 sec) mysql> desc nodes; +-----------+------------------+------+-----+---------------------+----------------+ | Field | Type | Null | Key | Default | Extra | +-----------+------------------+------+-----+---------------------+----------------+ | id | int(10) unsigned | NO | PRI | NULL | auto_increment | | date_in | datetime | NO | MUL | 0000-00-00 00:00:00 | | | name | varchar(50) | NO | MUL | | | | name_ns | varchar(50) | NO | UNI | | | | area_id | int(10) unsigned | YES | MUL | 0 | | | latitude | float | YES | MUL | NULL | | | longitude | float | YES | MUL | NULL | | | elevation | int(10) unsigned | YES | | NULL | | | info | text | YES | | NULL | | +-----------+------------------+------+-----+---------------------+----------------+ 9 rows in set (0.00 sec) mysql> desc nodes_services; +------------+---------------------------+------+-----+---------------------+----------------+ | Field | Type | Null | Key | Default | Extra | +------------+---------------------------+------+-----+---------------------+----------------+ | id | int(10) unsigned | NO | PRI | NULL | auto_increment | | date_in | datetime | NO | MUL | 0000-00-00 00:00:00 | | | node_id | int(10) unsigned | NO | MUL | 0 | | | service_id | int(10) unsigned | NO | MUL | 0 | | | ip_id | int(10) unsigned | YES | | 0 | | | url | varchar(255) | YES | | NULL | | | info | text | YES | | NULL | | | status | enum('active','inactive') | NO | | active | | | protocol | enum('tcp','udp') | YES | | NULL | | | port | int(10) unsigned | YES | | NULL | | +------------+---------------------------+------+-----+---------------------+----------------+ 10 rows in set (0.00 sec) mysql> desc photos; +------------+-------------------------------------------------------+------+-----+---------------------+----------------+ | Field | Type | Null | Key | Default | Extra | +------------+-------------------------------------------------------+------+-----+---------------------+----------------+ | id | int(10) unsigned | NO | PRI | NULL | auto_increment | | date_in | datetime | NO | MUL | 0000-00-00 00:00:00 | | | node_id | int(10) unsigned | NO | MUL | 0 | | | type | enum('galery','view') | NO | MUL | galery | | | view_point | enum('N','NE','E','SE','S','SW','W','NW','PANORAMIC') | YES | MUL | NULL | | | info | text | YES | | NULL | | +------------+-------------------------------------------------------+------+-----+---------------------+----------------+ 6 rows in set (0.00 sec) mysql> desc regions; +----------+------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +----------+------------------+------+-----+---------+----------------+ | id | int(10) unsigned | NO | PRI | NULL | auto_increment | | name | varchar(40) | NO | MUL | | | | ip_start | int(10) | NO | MUL | 0 | | | ip_end | int(10) | NO | MUL | 0 | | | info | text | YES | | NULL | | +----------+------------------+------+-----+---------+----------------+ 5 rows in set (0.00 sec) mysql> desc rights; +---------+--------------------------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +---------+--------------------------------------+------+-----+---------+----------------+ | id | int(10) unsigned | NO | PRI | NULL | auto_increment | | user_id | int(10) unsigned | NO | MUL | 0 | | | type | enum('blocked','admin','hostmaster') | NO | MUL | blocked | | +---------+--------------------------------------+------+-----+---------+----------------+ 3 rows in set (0.00 sec) mysql> desc services; +----------+-------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +----------+-------------------+------+-----+---------+----------------+ | id | int(10) unsigned | NO | PRI | NULL | auto_increment | | title | varchar(255) | NO | MUL | | | | protocol | enum('tcp','udp') | YES | | NULL | | | port | int(10) unsigned | YES | | 0 | | +----------+-------------------+------+-----+---------+----------------+ 4 rows in set (0.00 sec) mysql> desc subnets; +----------------+-------------------------------+------+-----+---------------------+----------------+ | Field | Type | Null | Key | Default | Extra | +----------------+-------------------------------+------+-----+---------------------+----------------+ | id | int(10) unsigned | NO | PRI | NULL | auto_increment | | date_in | datetime | NO | | 0000-00-00 00:00:00 | | | node_id | int(10) unsigned | YES | MUL | NULL | | | ip_start | int(10) | NO | | 0 | | | ip_end | int(10) | NO | | 0 | | | type | enum('local','link','client') | NO | | local | | | link_id | int(10) unsigned | YES | | NULL | | | client_node_id | int(10) unsigned | YES | | NULL | | +----------------+-------------------------------+------+-----+---------------------+----------------+ 8 rows in set (0.00 sec) mysql> desc users; +--------------+-----------------------------+------+-----+---------------------+----------------+ | Field | Type | Null | Key | Default | Extra | +--------------+-----------------------------+------+-----+---------------------+----------------+ | id | int(10) unsigned | NO | PRI | NULL | auto_increment | | date_in | datetime | NO | MUL | 0000-00-00 00:00:00 | | | username | varchar(30) | NO | UNI | | | | password | varchar(40) | YES | MUL | NULL | | | surname | varchar(30) | YES | MUL | NULL | | | name | varchar(30) | YES | MUL | NULL | | | phone | varchar(60) | YES | | NULL | | | email | varchar(50) | NO | UNI | | | | info | text | YES | | NULL | | | last_session | datetime | YES | | NULL | | | last_visit | datetime | YES | | NULL | | | status | enum('activated','pending') | NO | MUL | pending | | | account_code | varchar(20) | YES | | NULL | | | language | varchar(30) | YES | | NULL | | +--------------+-----------------------------+------+-----+---------------------+----------------+ 14 rows in set (0.00 sec) mysql> desc users_nodes; +---------+------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +---------+------------------+------+-----+---------+----------------+ | id | int(10) unsigned | NO | PRI | NULL | auto_increment | | user_id | int(10) unsigned | NO | MUL | 0 | | | node_id | int(10) unsigned | NO | MUL | 0 | | | owner | enum('Y','N') | NO | | N | | +---------+------------------+------+-----+---------+----------------+ 4 rows in set (0.00 sec) mysql> desc visits; +-------+---------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+---------+------+-----+---------+-------+ | v | int(11) | YES | | NULL | | +-------+---------+------+-----+---------+-------+ 1 row in set (0.00 sec)