[Nodedb-interop] why this list? goals and visions
L. Aaron Kaplan
(spam-protected)
Mon Dec 7 13:59:14 CET 2009
So here is the current funkfeuer DB (nicknamed "redeemer"). It was programmed and designed by Wolfgang Nagele (some of you might know him).
It was a very quick and fast implementation which has a few key strengths:
* it can generate DNS zone files
* it can generate Asterisk VOIP config files based on the members tables
* it can generate track when which IP as last pingable
* it can generate smokeping entries
* we have an internal whois service which connects to the DB
* our map (map.funkfeuer.at/wien) connects to the DB and can display the status of each node
However now after a few years we have a few more needs:
* we use public IPs and in v4 world these are limited. So we need to keep track of the who "hordes" v4 IPs and must have a way to get them back and re-distribute them to new nodes
* better network mgmt and planning: link calculations and planning algos are needed. We would like to be able to send mails to people with recommendations on which link would benefit them. Imagine a radio engineer expert system consulting you. Ok, I know this is far fetched... but working on it.
*.... (many more needs)
These needs will be addressed by a future version of our node DB.
For now we have the following structure:
### All tables....
redeemer_wien=# \dt
List of relations
Schema | Name | Type | Owner
--------+-----------------+-------+-------------------
public | devices | table | redeemer.frontend
public | ips | table | redeemer.frontend
public | members | table | redeemer.frontend
public | members_roles | table | redeemer.frontend
public | nodes | table | redeemer.frontend
public | roles | table | redeemer.frontend
public | voip_extensions | table | redeemer.frontend
public | voip_sip | table | redeemer.frontend
(8 rows)
##### some tables in detail
redeemer_wien=# \d members
Table "public.members"
Column | Type | Modifiers
------------------------+--------------------------+-----------
id | bigint | not null
nickname | character varying(100) | not null
password | character varying(255) | not null
firstname | character varying(50) |
lastname | character varying(50) |
street | character varying(255) |
housenumber | character varying(10) |
zip | character varying(10) |
town | character varying(255) |
telephone | character varying(25) |
mobilephone | character varying(25) |
fax | character varying(25) |
email | character varying(50) |
homepage | character varying(50) |
created | timestamp with time zone |
changed | timestamp with time zone |
redeemer_wien=# \d nodes
Table "public.nodes"
Column | Type | Modifiers
-------------+--------------------------+-----------------------
id | bigint | not null
name | character varying(250) | not null
gps_lat_deg | double precision |
gps_lat_min | double precision |
gps_lat_sec | double precision |
gps_lon_deg | double precision |
gps_lon_min | double precision |
gps_lon_sec | double precision |
map | boolean | not null default true
id_members | bigint | not null
created | timestamp with time zone |
changed | timestamp with time zone |
redeemer_wien=# \d devices
Table "public.devices"
Column | Type | Modifiers
------------------+-----------------------------+------------------------
id | bigint | not null
name | character varying(100) | not null
antenna | character varying(255) |
hardware | character varying(255) |
ssid | character varying(255) |
mac | character varying(17) |
smokeping | boolean | not null default true
last_seen | timestamp without time zone |
id_nodes | bigint |
id_members | bigint |
created | timestamp with time zone |
changed | timestamp with time zone |
delete_mail | timestamp without time zone |
delete_protected | boolean | not null default false
comment | character varying(8000) |
redeemer_wien=# \d ips
Table "public.ips"
Column | Type | Modifiers
----------------+------------------------+-----------
id | bigint | not null
ip | character varying(15) | not null
cidr | character varying(2) | not null
usage | character varying(100) | not null
dns_forward | boolean | not null
custom_forward | character varying(100) |
dns_reverse | boolean | not null
custom_reverse | character varying(100) |
id_devices | bigint |
id_members | bigint |
id_nodes | bigint |
redeemer_wien=# select * from roles;
id | name
----+-------------
1 | Admin
2 | Map
3 | Club Member
4 | Mentor
(4 rows)
I hope I could give you an impression.
More information about the Nodedb-interop
mailing list