The following 221 words could not be found in the dictionary of 1275 words (including 1275 LocalSpellingWords) and are highlighted below:
1a9   6d   6d7d   6dfd   71ce   7c   99e   9e   accept   accepting   active   Actually   adv   already   apply   assume   At   attached   auth   Auth   authorized   automatic   back   bash   bat   batctl   batman   be   belong   bin   Bm   bool   bootmode   Broadcasted   But   but   by   Can   can   cannot   ce   Channel   channel   characterized   clients   common   community   config   connected   cp   description   develop   device   devices   different   differents   duplicated   each   Each   echo   eeab   eigen   Eigenlab   eigenlab   eigennet   etc   ethernet   every   example   exist   explain   ext   extension   father   fc   file   Find   for   forces   functions   get   Go   goes   grep   himself   how   id   Id   Idea   if   information   init   interested   interfaces   Join   json   just   key   Key   know   language   like   List   load   local   lot   Mac   maintain   manage   managing   manual   manually   many   map   matching   Me   me   measurement   mesh   method   monitoring   more   much   name   Name   needs   neigh   neighbor   ner   Net   net   network   networks   node   nodes   obviously   on   one   only   or   otherwise   ours   pacinotti   part   pass   passwd   permit   Picostation   Pisa   possible   potencial   present   Problem   property   pure   put   quality   reach   readeable   really   restart   Ring   Rome   routed   same   servers   set   sh   shot   should   sintax   sluf   slug   so   some   someone   something   somethings   ssh   status   Step   step   still   stuf   stuff   suck   suggest   supply   systems   tail   template   that   their   there   they   things   think   this   tiny   tl   to   traffic   uci   understand   user   userid   values   very   Very   wait   We   we   What   what   wifi   wireless   Wireless   work   Wow   Wrt   Yes  

Clear message
Italiano English
Edit History Actions

netring

The Problem

Actually each community network do a lot of duplicated work to develop/maintain/manage their monitoring/managing systems

The Idea

Join forces to develop a common code base for ours map servers.

Very different community networks have, many differents needs, but very tiny core of common needs is still present.

Step 1

Find What is really common, for example

Can we assume on every community network:

Each node have one or more device? Yes core for me

Each device can belong just to one node? Yes core for me

Each device have one or more neighbor ( that can belong to the same or to a different node ) attached by a link? Yes core for me

Each link can be characterized by different values ( for example in Pisa we have TQ, but in Rome they have dBm and ETX )so here i think we can assume as common part that the link may exist or not and do "quality measurement" an extension <- Not core for me

and so on

so we can define a set of property i suggest in a json like sintax that all node and devices have so for example

node.status={active, potencial}

node.readeableName="Pisa::Eigenlab"

node.slug="eigenlab"

.

.

.

device.father="" <- node sluf or id or something like that goes here

device.reachMeAt="" <- something that permit to reach the device, can be for example one or more of eigenlab.n.ninux.org, 2001:1418:1a9:eeab:0:15:6dfd:71ce, 00:15:6d:fc:71:ce

device.neigh="" <- things like 00:15:6d:7c:09:9e, pacinotti.n.ninux.org, 2001:1418:1a9:eeab:0:15:6d7d:99e

and so on

Step 2

Wow it is just the core but there are already a lot of information i have to put all of this manually :( ? No we have to do that more automatic possible, so we should put on netRing just device.reachMeAt more an userid+pass or an ssh authorized key or stuf like that so netRing can suck by himself all that stuff

But how netRing know how to do that ?? Go to step 4 if you cannot wait ;)

Step 3

Each community can define one or more extension property that some of their nodes/devices may have for example someone can be interested in what clients are connected to their node or how much traffic the node routed

Step 4

We have to add supply a "template file" that explain to netRing ( obviously nerRing have to understand that language ) how to do that and it could be somethings like that

<template name="UBNT_PICO_OWRT_EGN" description="Picostation M* OpenWrt + eigenNet template">
        <property name="reachMeAt" coreId="device.reachMeAt" get="manual" />
        <property name="user" coreId="device.auth.user" get="manual" />
        <property name="user" extId="device.auth.passwd" get="manual" />
        <property name="user" extId="device.auth.sshAuthKey" get="manual" />
        <property name="accept_clients" extId="uci.eigennet.network.accept_clients">
                <description>
                        1 if the device accept clients.
                        0 if the device is a pure node ( doesn't accept ethernet and wireless clients )
                </description>
                <method name="get">
                        <?bash
                                #!/bin/bash
                                ssh_shot ${device.reachMeAt} '
                                . /etc/functions.sh
                                config_load eigennet
                                local accept_clients
                                config_get_bool accept_clients network "accept_clients" 1
                                echo $accept_clients
                                '
                        ?>
                </method>
                <method name="set">
                        <?bash
                                #!/bin/bash
                                ssh_shot ${device.reachMeAt} "uci set eigennet.network.accept_clients=$1"
                        ?>
                </method>
        </property>
        <property name="wifi_clients" extId="uci.eigennet.network.wifi_clients">
                <description>
                        1 if the device is accepting wireless clients
                        0 otherwise
                </description>
                <method name="get">
                        <?bash
                                #!/bin/bash
                                ssh_shot ${device.reachMeAt} '
                                . /etc/functions.sh
                                config_load eigennet
                                local wifi_clients
                                config_get_bool wifi_clients network "wifi_clients" 1
                                echo $wifi_clients
                                '
                        ?>
                </method>
                <method name="set">
                        <?bash
                                #!/bin/bash
                                ssh_shot ${device.reachMeAt} "uci set eigennet.network.wifi_clients=$1"
                        ?>
                </method>
        </property>
        <property name="meshSSID" extId="uci.eigennet.wireless.meshSSID">
                <description>
                        Broadcasted SSID on wireless mesh interfaces
                </description>
                <method name="get">
                        <?bash
                                #!/bin/bash
                                ssh_shot ${device.reachMeAt} '
                                . /etc/functions.sh
                                config_load eigennet
                                local meshSSID
                                config_get meshSSID wireless "meshSSID"
                                echo $meshSSID
                                '
                        ?>
                </method>
                <method name="set">
                        <?bash
                                #!/bin/bash
                                ssh_shot ${device.reachMeAt} "uci set eigennet.wireless.meshSSID=$1"
                        ?>
                </method>
        </property>
        <property name="meshChannel" extId="uci.eigennet.wireless.meshChannel">
                <description>
                        Wireless mesh channel
                </description>
                <method name="get">
                        <?bash
                                #!/bin/bash
                                ssh_shot ${device.reachMeAt} '
                                . /etc/functions.sh
                                config_load eigennet
                                local meshChannel
                                config_get meshChannel wireless "meshChannel"
                                echo $meshChannel
                                '
                        ?>
                </method>
                <method name="set">
                        <?bash
                                #!/bin/bash
                                ssh_shot ${device.reachMeAt} "uci set eigennet.wireless.meshSSID=$1"
                        ?>
                </method>
        </property>
        <property name="clientsMacList" extId="batman-adv.tl">
                <method name="get">
                <?bash
                        #!/bin/bash
                        ssh_shot ${device.reachMeAt} "batctl tl" | tail -n +2 bat | grep --only-matching -i '[0-9A-F]\{2\}\(:[0-9A-F]\{2\}\)\{5\}'
                ?>
                </method>
        </property>
        <method name="apply">
                <?bash
                        #!/bin/bash
                        ssh_shot ${device.reachMeAt} "
                        cp -r /etc/config /etc/config.back
                        uci set eigennet.bootmode=4
                        /etc/init.d/eigennet restart"
                ?>
        </method>
        <method name="test">
                <method name="apply">
                <?bash
                        #!/bin/bash
                        ssh_shot ${device.reachMeAt} "
                        uci set eigennet.bootmode=1
                        /etc/init.d/eigennet restart"
                ?>
        </method>
</template>