wiki:NodesDatabase/Schema/AWMN

 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)