i need some tests on a new contribs: nethserver-arpwatch.
Before install it, keep in mind that this is my first try to do a contrib and also if this is a conversion of an existent sme contribs, please use only in a test environment. tnx
some enhancements like that you will find all interfaces with a green role…IMHO the status propriety should be enabled by default
# -u <username> : defines with what user id arpwatch should run
# -e <email> : the <email> where to send the reports
# -s <from> : the <from>-address
{
use esmith::NetworksDB;
my $ndb = esmith::NetworksDB->open_ro();
my $bogonset='';
my $bogon = ${'arpwatch'}{'bogon'};
if ($bogon eq 'enabled') {
$bogonset = '';
}
else {
$bogonset = '-N';
}
my $mailset= ${'arpwatch'}{'email'};
foreach my $i ($ndb->green) {
my $interfaces = $i->key;
$OUT .= "OPTIONS=\"-i $interfaces $bogonset -f /var/lib/arpwatch/arp.dat -u arpwatch -e $mailset -s 'arpwatch\@${'DomainName'}'\"\n";
}
}
yes, i will… but i can’t attach within discourse pm, it’s ok if i copy/paste it in a pm?
btw i didn’t see nethforge-testing folder for 6.7 on mirror it’s correct?
thank you steph, i agree with you the status should be enabled by default (btw thanks for the code to identify the green net )… but as i say i’m using it as training, i’ll try to explain my intention:
i’ve added some property like email and interface, because i would also try to make (in a long time ) the gui to change config for email and interface, and also it would be nice to see the status table of arpwatch.
Now, to do this i was thinking to identify the green net only when installing package, and populate the interface property, to start correctly the service. So if i understood correctly i can’t do this in template.
Yesterday, i’ve found this http://www.nethserver.org/dokuwiki/doku.php?id=spec_file_notes on the brand new wiki (as always tnx for that) … maybe i could use the %post of specfile to achieve this… it is correct or there is a better way?
tnx
the problem of identify the nic only when you install the rpm is not satisfying, because you must think the case where the sysadmin will swap his nics…look after the network event and expand your template with this event.
for now go to documentation [Stephdl Repository] you have more stuffs to read…concerning the %post you shouldn’t use it…the %pre is different, sometime you must create an user before to install the rpm.
If you want to expand a template only for the installation, you should create two events
nethserver-myrpm-update → expanded by the rpm installation
nethserver-myrpm-save → expanded by the admin in the terminal or in the GUI, this event doesn’t expand the template
I agree with Stephan on interface property, it should be a comma-separated list of roles.
The template can than expand the role into interfaces names (but I don’t know how arpwatch deals with multiple interfaces).
If you set the default value of interface property to green, you can leave the daemon enabled by default.
Last, the template fragment /etc/e-smith/templates/etc/sysconfig/arpwatch/ALL should be renamed to /etc/e-smith/templates/etc/sysconfig/arpwatch/10base, but this is not mandatory, it’s only a best practice.
wow lot of useful info here tnx @stephdl@giacomo@davidep …
unluckily i did not have (and i will not have) much time this week and considering that i’m not a dev i really need lot of time
but i’ve done some tests based on first infos steph gave me, and it works correctly with only one eth, then i’ve tried with multiple green and after some tests i’ve found the same link posted above to have the daemon working on multiple eth … then my son wakes up and no more perl or rpm
So considering that this is a training i was thinking that maybe the correct way to proceed could be (ordered by increasing difficulty):
do the correction to package implementing yours advice, to have arpwatch
Started after install
Configured on first green ethx found
Use nethserver-arpwatch-update and nethserver-arpwatch-save
implement a script to update ethercodes.dat using Sanitized IEEE OUI Date (oui.txt) (or put it in the file to separate rpm, or … honestly i’m not sure at the moment how to do but i would like to have it updated :))
try to implement arpwatch for multiple eth (with multiple arp.dat, with a customized init script), the idea is to have at the end the opportunity to select for role or for single eth
a gui (???) if i will ever complete points 2 and 3
do you think it could be a good work path, while trying to learn something?
i’m sorry to have posted a incomplete version and i’m a little bit ashamed to do so basic questions, but i’ve done most of this one month ago, and the idea was that putting it on the public forum could help me to don’t forgive the study of perl/nethserver…
i hope to post soon an update to close the point 1… tnx again
This rpm comes from SME Server which was supposed to have only one Internal NIC, therefore the rpm was not intended to find which NIC has a green role, but NethServer lets a lot of freedom on the choices of your network. IMHO the rpm needs to be adapted to this case of configuration, and we must implement the multiple NIC case (one deamon and one arp-etX.dat file for each NIC).
A fallback choice should be to propose the rpm like you did and let the sysadmin decide which unique NIC is monitored.
From my point of view, the gui is really not a mandatory, this rpm is aimed to be to the destination of sysadmin who have the need to keep informations about IP/Mac which are connected to their local network, but of course, since it is said, someone will come with this need
With smeserver-geoip we have the same issue, the geoip database needs to be updated sometime, by a cron each month, and following the installation.
finally today i’ve had some hours to dedicate to code (well, to try to code )
i think i’ve solved how to find multiple eth on green and generate correct config, and tested with the customized init.d script it works… what is not clear to me is this part:
do you know where i can find some info or some examples in other contribs, or have any hints in how overwrite the init.d script?
Another solution could be to create an upstart job, see /etc/e-smith/templates.metadata/etc/init/httpd-admin.conf for example.
If I recall well the documentation the upstart init script has the priority against a sysvinit script,so it is used first…but I have not played with upstart script so I have no example with my modules I can point you as examples.