19 | #
20 |
21 | prefix=@prefix@
22 | datarootdir=@datarootdir@
23 | pkghome=@pkghome@
24 | supdir=@supdir@
25 | varprefix=@varprefix@
26 |
27 | rendererUrl=@rendererUrl@
28 |
29 | @SED@ \
30 | -e "s,\@webplaindir\@,@webplaindir@,g" \
31 | -e "s,\@webscriptsdir\@,@webscriptsdir@,g" \
32 | -e "s,\@rendererUrl\@,${rendererUrl},g" \
33 | -e "s,\@plainUrl\@,@plainUrl@,g" \
34 | -e "s,\@aspglobal\@,@aspglobal@,g" \
35 | $1
36 |
37 | # Local Variables:
38 | # mode: shell-script
39 | # indent-tabs-mode: nil
40 | # perl-indent-level: 4
41 | # End:
42 |
--------------------------------------------------------------------------------
/plugins/overview/overview-torruscfg.pl:
--------------------------------------------------------------------------------
1 | # Overview Torrus plugin configuration
2 |
3 | $Torrus::Renderer::styling{'default'}{'ovStylesheet'} = 'ov.css';
4 | $Torrus::Renderer::styling{'printer'}{'ovStylesheet'} = 'ov-printer.css';
5 | $Torrus::Renderer::Chooser::template = 'ov/default-chooser.html';
6 |
7 | 1;
8 |
--------------------------------------------------------------------------------
/plugins/overview/overview/common.inc:
--------------------------------------------------------------------------------
1 |
2 | NOW=<%= $Request->Params('NOW') %>&SHOWHIDDEN=<%= $Request->Params('SHOWHIDDEN') %>&AUTOSCALE=<%= $Request->Params('AUTOSCALE') %>&WINDOW=<%= $Request->Params('WINDOW') %>&CF=<%= $Request->Params('CF') %>&STRETCH=<%= $Request->Params('STRETCH') %>
3 | <%= $Request->Params('WINDOW') %><%= $Request->Params('AUTOSCALE')? 'Auto' : '' %>
4 |
--------------------------------------------------------------------------------
/plugins/overview/templates/default-chooser.html:
--------------------------------------------------------------------------------
1 | [% PROCESS 'ov/html-incblocks.txt' %]
2 | [% INCLUDE htmlstart
3 | title="Torrus Top: " _ companyName
4 | contentClass="SingleColumnContent"
5 | noTopMenu=1 %]
6 |
7 | Choose the datasource tree
8 |
9 |
10 | [% counter = 0;
11 | evenRow = 0;
12 |
13 | FOREACH tree = treeNames();
14 |
15 | IF not userAuth or mayDisplayTree(tree);
16 | counter = counter + 1;
17 |
18 | IF counter % 2 == 0;
19 | evenRow = 1;
20 | ELSE;
21 | evenRow = 0;
22 | END;
23 | %]
24 |
25 |
26 |
[% tree %]
27 |
[% xmlnorm(treeDescr(tree)) %]
28 |
29 | [% END %]
30 | [% END %]
31 |
32 |
33 |
40 |
41 | [% INCLUDE htmlend %]
42 |
--------------------------------------------------------------------------------
/plugins/overview/templates/default-recursivedir.html:
--------------------------------------------------------------------------------
1 | [% PROCESS 'ov/html-incblocks.txt' %]
2 | [% thepath=path(token) %]
3 | [% INCLUDE htmlstart title=thepath printpath=1 %]
4 |
5 | [% xmlnorm(nodeParam(token,'comment')) %]
6 |
7 | [% INCLUDE legend %]
8 |
9 | [%# ########### Recursively print the children ################ %]
10 |
11 | [% BLOCK recursiveChildren;
12 | FOREACH child = sortTokens(children(token));
13 | hidden = 0;
14 | IF nodeParam(child,'hidden') == 'yes';
15 | hidden = 1;
16 | END;
17 | IF isAlias(child);
18 | thisIsAlias = 1;
19 | urlTitle = 'Symbolic link to ' _ path(isAlias(child));
20 | ELSE;
21 | urlTitle = nodeParam(child,'comment',1);
22 | END;
23 | IF not hidden or variables.SHOWHIDDEN; %]
24 |
25 |
26 | [% thisIsAlias ? '':'';
27 | hidden ? '':'' %]
28 | [% nodeName(path(child)) %]
30 | [% hidden ? '':''; thisIsAlias ? '':''; %]
31 |
32 | [% INCLUDE recursiveChildren token=child %]
33 |
34 | [% END;
35 | END;
36 | END %]
37 |
38 |
39 | Directories you can jump to:
40 |
41 | [% INCLUDE recursiveChildren token=token %]
42 |
43 |
44 |
45 | [% INCLUDE shortcut url=url(token) text="Default view"
46 | title="Restore default subtree view";
47 | INCLUDE overviewShortcuts
48 | %]
49 |
50 |
51 | [% INCLUDE bottomline %]
52 | [% INCLUDE htmlend %]
53 |
--------------------------------------------------------------------------------
/plugins/overview/templates/default-tset.html:
--------------------------------------------------------------------------------
1 | [% PROCESS 'ov/html-incblocks.txt' %]
2 | [% comment = xmlnorm(param(token, 'comment')) %]
3 | [% INCLUDE htmlstart title=comment contentClass="SingleColumnContent" %]
4 |
5 | [% comment %]
6 |
7 | [% INCLUDE treename %]
8 |
9 | [% INCLUDE variables %]
10 |
11 | [% SET pos = 1; SET global.hwpredict = 0 %]
12 | [% FOREACH node = sortTokens(tsetMembers(token)) %]
13 |
14 | [% IF pos == 1 %]
15 |
16 | [% ELSE %]
17 |
18 | [% END %]
19 | [% nodename=nodeParam(node,'descriptive-nickname');
20 | IF nodename=='';
21 | nodename=path(node);
22 | END;
23 | INCLUDE tsgraph
24 | token=node
25 | nodename=nodename
26 | comment=nodeParam(parent(node),'comment',1)
27 | %]
28 |
29 |
30 | [% IF pos == 1 %]
31 | [% SET pos = 2 %]
32 | [% ELSE %]
33 | [% SET pos = 1 %]
34 | [% END %]
35 | [% END %]
36 |
37 |
38 | [%
39 | IF global.hwpredict;
40 | IF variables.NOHW;
41 | INCLUDE shortcut url=url(token, view, 'NOHW', '')
42 | text="Enable Holt-Winters"
43 | title="Switch Holt-Winters prediction boundaries";
44 | ELSE;
45 | INCLUDE shortcut url=url(token, view, 'NOHW', 1)
46 | text="Disable Holt-Winters"
47 | title="Switch Holt-Winters prediction boundaries";
48 | END;
49 | END
50 | %]
51 |
52 | [% INCLUDE shortcut url=url('SS') text="Back to tokensets list"
53 | title="List of non-empty tokensets"%]
54 |
55 |
56 | [% INCLUDE tsetbottomline %]
57 | [% INCLUDE htmlend %]
58 |
--------------------------------------------------------------------------------
/plugins/overview/templates/expanded-dir.html:
--------------------------------------------------------------------------------
1 | [% PROCESS 'ov/html-incblocks.txt' %]
2 | [% thepath=path(token) %]
3 | [% INCLUDE htmlstart title=thepath printpath=1 %]
4 |
5 |
[% xmlnorm(nodeParam(token,'comment')) %]
6 |
7 | [% INCLUDE variables %]
8 |
9 | [% INCLUDE legend %]
10 |
11 |
Leaf nodes:
12 | [%
13 | FOREACH child = sortTokens(children(token));
14 | IF isLeaf(child);
15 | INCLUDE overviewgraph
16 | token=child
17 | nodename=nodeName(path(child))
18 | comment=nodeParam(child,'comment',1);
19 | ELSIF isAlias(child);
20 | atoken=isAlias(child);
21 | IF isLeaf(atoken);
22 | INCLUDE shortgraph
23 | token=atoken
24 | nodename=nodeName(path(atoken))
25 | comment=path(atoken);
26 | END;
27 | END;
28 | END;
29 | %]
30 |
31 |
32 | [%
33 | IF global.hwpredict;
34 | IF variables.NOHW;
35 | INCLUDE shortcut url=url(token, view, 'NOHW', '')
36 | text="Enable Holt-Winters"
37 | title="Switch Holt-Winters prediction boundaries";
38 | ELSE;
39 | INCLUDE shortcut url=url(token, view, 'NOHW', 1)
40 | text="Disable Holt-Winters"
41 | title="Switch Holt-Winters prediction boundaries";
42 | END;
43 | END
44 | %]
45 |
46 | [% INCLUDE shortcut url=url(token) text="Default view"
47 | title="Restore default subtree view" %]
48 |
49 |
50 | [% INCLUDE bottomline %]
51 | [% INCLUDE htmlend %]
52 |
--------------------------------------------------------------------------------
/plugins/overview/templates/overview-subleaves.html:
--------------------------------------------------------------------------------
1 | [% PROCESS 'ov/html-incblocks.txt' %]
2 | [% ovs=variables.OVS; clearVar('OVS'); global.bookmarkVars=['OVS',ovs];
3 | thepath=path(token) %]
4 | [% INCLUDE htmlstart title=thepath printpath=1 %]
5 |
6 |
[% p = 'overview-page-title-' _ ovs; nodeParam(token, p, 1) %]
7 |
8 | [% INCLUDE variables %]
9 |
10 | [% INCLUDE legend %]
11 |
12 | [%
13 | FOREACH child = sortTokens(children(token));
14 | childpath = path(child);
15 | p = 'overview-subleave-name-' _ ovs;
16 | ovwpath = childpath _ nodeParam(token, p,1);
17 | IF nodeExists(ovwpath);
18 | ovwtoken = pathToken(ovwpath);
19 |
20 | urltoken = ovwtoken;
21 | p = 'overview-direct-link-' _ ovs;
22 | IF nodeParam(token, p, 1) == 'yes';
23 | urltoken = child;
24 | p = 'overview-direct-link-view-' _ ovs;
25 | urlview = nodeParam(token, p, 1);
26 | END;
27 |
28 | INCLUDE overviewgraph
29 | token=ovwtoken
30 | urltoken=urltoken
31 | urlview=urlview
32 | nodename=nodeName(path(child))
33 | comment=nodeParam(child,'comment',1);
34 | END;
35 | END
36 | %]
37 |
38 |
39 | [% INCLUDE shortcut url=url(token) text="Default view"
40 | title="Restore default subtree view" %]
41 |
42 |
43 | [% INCLUDE bottomline %]
44 | [% INCLUDE htmlend %]
45 |
--------------------------------------------------------------------------------
/plugins/overview/templates/sub-nodes-dir.html:
--------------------------------------------------------------------------------
1 | [% PROCESS 'ov/html-incblocks.txt' %]
2 | [% thepath=path(token) %]
3 | [% INCLUDE htmlstart title=thepath printpath=1 %]
4 |
5 |
[% xmlnorm(nodeParam(token,'comment')) %]
6 |
7 | [% INCLUDE variables %]
8 |
9 | [% INCLUDE legend %]
10 |
11 |
Leaf nodes:
12 | [%
13 | FOREACH child = sortTokens(children(token));
14 | IF isLeaf(child);
15 | INCLUDE overviewgraph
16 | token=child
17 | nodename=nodeName(path(child))
18 | comment=nodeParam(child,'comment',1);
19 | ELSE;
20 | FOREACH child2 = sortTokens(children(child));
21 | IF isLeaf(child2);
22 | INCLUDE overviewgraph
23 | token=child2
24 | nodeparent=nodeName(path(child))
25 | nodename=nodeName(path(child2))
26 | comment=nodeParam(child,'comment',1);
27 | END;
28 | END;
29 | END;
30 | END;
31 | %]
32 |
33 |
34 | [%
35 | IF global.hwpredict;
36 | IF variables.NOHW;
37 | INCLUDE shortcut url=url(token, view, 'NOHW', '')
38 | text="Enable Holt-Winters"
39 | title="Switch Holt-Winters prediction boundaries";
40 | ELSE;
41 | INCLUDE shortcut url=url(token, view, 'NOHW', 1)
42 | text="Disable Holt-Winters"
43 | title="Switch Holt-Winters prediction boundaries";
44 | END;
45 | END
46 | %]
47 |
48 | [% INCLUDE shortcut url=url(token) text="Default view"
49 | title="Restore default subtree view" %]
50 |
51 |
52 | [% INCLUDE bottomline %]
53 | [% INCLUDE htmlend %]
54 |
--------------------------------------------------------------------------------
/plugins/overview/templates/tset-list.html:
--------------------------------------------------------------------------------
1 | [% PROCESS 'ov/html-incblocks.txt' %]
2 | [% INCLUDE htmlstart
3 | title="Non-empty tokensets"
4 | contentClass="SingleColumnContent" %]
5 |
6 |
Non-empty tokensets
7 |
8 | [% INCLUDE treename %]
9 |
10 |
11 | [% counter = 0;
12 | evenRow = 0;
13 |
14 | FOREACH tset = tsetList();
15 | sz = tsetMembers(tset).size;
16 |
17 | IF sz > 0;
18 |
19 | counter = counter + 1;
20 |
21 | IF counter % 2 == 0;
22 | evenRow = 1;
23 | ELSE;
24 | evenRow = 0;
25 | END;
26 | %]
27 |
33 | [% END %]
34 | [% END %]
35 |
36 |
37 | [% INCLUDE tsetbottomline %]
38 | [% INCLUDE htmlend %]
39 |
--------------------------------------------------------------------------------
/plugins/overview/tp-overview.apache.conf.in:
--------------------------------------------------------------------------------
1 | ScriptAlias /menu/ "@webplaindir@/menu/"
2 | ScriptAlias /overviews/ "@webplaindir@/overviews/"
3 |
4 | PerlModule Apache::ASP
5 |
6 |
7 | Allow from all
8 | SetHandler perl-script
9 | PerlHandler Apache::ASP
10 | PerlSetVar Global @aspglobal@
11 | PerlSetVar NoState 1
12 | #PerlSetVar XSLTParser XML::Sablotron
13 | PerlSetVar XSLTParser XML::LibXSLT
14 | PerlSetVar XSLTMatch xml$
15 | PerlSetVar XSLT @webscriptsdir@/tp-overview/menu.xsl
16 | PerlSetVar RequestParams 1
17 |
18 |
19 |
20 | SetHandler perl-script
21 | PerlHandler Apache::ASP
22 | PerlSetVar Global @aspglobal@
23 | PerlSetVar NoState 1
24 | #PerlSetVar XSLTParser XML::Sablotron
25 | PerlSetVar XSLTParser XML::LibXSLT
26 | PerlSetVar XSLTMatch xml$
27 | PerlSetVar XSLT @webscriptsdir@/tp-overview/overview.xsl
28 | PerlSetVar RequestParams 1
29 |
30 |
31 |
--------------------------------------------------------------------------------
/plugins/overview/xtree/I.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ssinyagin/torrus-newfeatures/dd5978a5720ca496dcc4fb611da85bf17a6200c8/plugins/overview/xtree/I.png
--------------------------------------------------------------------------------
/plugins/overview/xtree/L.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ssinyagin/torrus-newfeatures/dd5978a5720ca496dcc4fb611da85bf17a6200c8/plugins/overview/xtree/L.png
--------------------------------------------------------------------------------
/plugins/overview/xtree/Lminus.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ssinyagin/torrus-newfeatures/dd5978a5720ca496dcc4fb611da85bf17a6200c8/plugins/overview/xtree/Lminus.png
--------------------------------------------------------------------------------
/plugins/overview/xtree/Lplus.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ssinyagin/torrus-newfeatures/dd5978a5720ca496dcc4fb611da85bf17a6200c8/plugins/overview/xtree/Lplus.png
--------------------------------------------------------------------------------
/plugins/overview/xtree/T.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ssinyagin/torrus-newfeatures/dd5978a5720ca496dcc4fb611da85bf17a6200c8/plugins/overview/xtree/T.png
--------------------------------------------------------------------------------
/plugins/overview/xtree/Tminus.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ssinyagin/torrus-newfeatures/dd5978a5720ca496dcc4fb611da85bf17a6200c8/plugins/overview/xtree/Tminus.png
--------------------------------------------------------------------------------
/plugins/overview/xtree/Tplus.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ssinyagin/torrus-newfeatures/dd5978a5720ca496dcc4fb611da85bf17a6200c8/plugins/overview/xtree/Tplus.png
--------------------------------------------------------------------------------
/plugins/overview/xtree/blank.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ssinyagin/torrus-newfeatures/dd5978a5720ca496dcc4fb611da85bf17a6200c8/plugins/overview/xtree/blank.png
--------------------------------------------------------------------------------
/plugins/overview/xtree/file.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ssinyagin/torrus-newfeatures/dd5978a5720ca496dcc4fb611da85bf17a6200c8/plugins/overview/xtree/file.png
--------------------------------------------------------------------------------
/plugins/overview/xtree/foldericon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ssinyagin/torrus-newfeatures/dd5978a5720ca496dcc4fb611da85bf17a6200c8/plugins/overview/xtree/foldericon.png
--------------------------------------------------------------------------------
/plugins/overview/xtree/new.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ssinyagin/torrus-newfeatures/dd5978a5720ca496dcc4fb611da85bf17a6200c8/plugins/overview/xtree/new.png
--------------------------------------------------------------------------------
/plugins/overview/xtree/openfoldericon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ssinyagin/torrus-newfeatures/dd5978a5720ca496dcc4fb611da85bf17a6200c8/plugins/overview/xtree/openfoldericon.png
--------------------------------------------------------------------------------
/plugins/overview/xtree/xtree.css:
--------------------------------------------------------------------------------
1 | .webfx-tree-container {
2 | margin: 0px;
3 | padding: 0px;
4 | font: icon;
5 | white-space: nowrap;
6 | }
7 |
8 | .webfx-tree-item {
9 | padding: 0px;
10 | margin: 0px;
11 | font: icon;
12 | color: black;
13 | white-space: nowrap;
14 | }
15 |
16 | .webfx-tree-item a, .webfx-tree-item a:active, .webfx-tree-item a:hover {
17 | margin-left: 3px;
18 | padding: 1px 2px 1px 2px;
19 | }
20 |
21 | .webfx-tree-item a {
22 | color: black;
23 | text-decoration: none;
24 | }
25 |
26 | .webfx-tree-item a:hover {
27 | color: blue;
28 | text-decoration: underline;
29 | }
30 |
31 | .webfx-tree-item a:active {
32 | background: highlight;
33 | color: highlighttext;
34 | text-decoration: none;
35 | }
36 |
37 | .webfx-tree-item img {
38 | vertical-align: middle;
39 | border: 0px;
40 | }
41 |
42 | .webfx-tree-icon {
43 | width: 20px;
44 | height: 20px;
45 | }
46 | .webfx-tree-item a.selected {
47 | color: selectedtext;
48 | background: selected;
49 | }
50 |
51 | .webfx-tree-item a.selected-inactive {
52 | color: windowtext;
53 | background: buttonface;
54 | }
--------------------------------------------------------------------------------
/plugins/randomcollector/AUTHORS:
--------------------------------------------------------------------------------
1 | **************************************************
2 | Stanislav Sinyagin
3 | Senior System Engineer, CCIE #5478
4 |
5 | GPS-Technik AG
6 | Zuercherstrasse 139
7 | 8952 Schlieren
8 | Switzerland
9 |
10 | Tel. +41 1 732 99 77
11 | Fax +41 1 731 18 40
12 |
13 | ssinyagin@k-open.com
14 | http://sinyagin.pp.ru
15 | **************************************************
16 |
17 |
--------------------------------------------------------------------------------
/plugins/randomcollector/ChangeLog:
--------------------------------------------------------------------------------
1 | 2003-03-01 Stanislav Sinyagin
2 |
3 | * First incarnation of the Dummy plugin
4 |
5 |
--------------------------------------------------------------------------------
/plugins/randomcollector/Makefile.am:
--------------------------------------------------------------------------------
1 |
2 | # Copyright (C) 2002 Stanislav Sinyagin
3 | #
4 | # This program is free software; you can redistribute it and/or modify
5 | # it under the terms of the GNU General Public License as published by
6 | # the Free Software Foundation; either version 2 of the License, or
7 | # (at your option) any later version.
8 | #
9 | # This program is distributed in the hope that it will be useful,
10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | # GNU General Public License for more details.
13 | #
14 | # You should have received a copy of the GNU General Public License
15 | # along with this program; if not, write to the Free Software
16 | # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
17 |
18 | # Stanislav Sinyagin
19 | #
20 |
21 | # Random Collector Torrus plugin Automake script
22 |
23 | SUBST = @abs_top_builddir@/substvars.sh
24 |
25 | noinst_SCRIPTS = substvars.sh
26 |
27 |
28 | ##### Perl modules #####
29 | myperlmoddir = $(perllibdir)/Torrus/Collector
30 | dist_myperlmod_DATA = Random.pm
31 |
32 |
33 | ##### Perl configuration files #####
34 | torruscfgdir = $(plugtorruscfgdir)
35 | dist_torruscfg_DATA = randomcollector-torruscfg.pl
36 |
37 | ##### CLI wrapper #####
38 | wrapperdir = $(plugwrapperdir)
39 | dist_wrapper_DATA = randomcollector-wrapper.sh
40 |
41 | ##### XML configuration #####
42 | myxmldir = $(distxmldir)/examples
43 | dist_myxml_DATA = random.xml
44 |
45 |
46 | ##### Executable scripts #####
47 | pkgbindir = @pkgbindir@
48 | pkgbin_SCRIPTS = genrandomcfg
49 | EXTRA_DIST = genrandomcfg.in
50 | genrandomcfg: genrandomcfg.in
51 | $(SUBST) genrandomcfg.in > genrandomcfg
52 |
53 |
54 | ##### HTML and text Templates #####
55 | tmpldir = @tmpldir@
56 | dist_tmpl_DATA = genrandomcfg.xml
57 |
58 |
59 | ##### Documentation files #####
60 | pkgdocdir = @pkgdocdir@
61 | dist_pkgdoc_DATA = tp-randomcollector.txt tp-randomcollector.pod
62 | SUFFIXES = .pod .txt
63 | .pod.txt:
64 | pod2text $< $@
65 |
66 |
67 |
68 | htdocs:
69 | for f in *.pod; do \
70 | pod2html -css=../torrusdoc.css $$f > ../../htdocs/plugins/$$f.html; \
71 | done
72 |
73 | UPLOADPATH = \
74 | ssinyagin,torrus@web.sourceforge.net:/home/groups/t/to/torrus/htdocs/devel
75 |
76 | upload: dist
77 | scp $(distdir).tar.gz $(UPLOADPATH)
78 |
--------------------------------------------------------------------------------
/plugins/randomcollector/NEWS:
--------------------------------------------------------------------------------
1 | 1-03-2003: Dummy plugin created
2 |
3 |
--------------------------------------------------------------------------------
/plugins/randomcollector/README:
--------------------------------------------------------------------------------
1 | Random Collector plugin for Torrus
2 |
3 | See randomcollector.pod or randomcollector.txt for more details.
4 |
5 | See http://torrus.sourceforge.net for Torrus project documentation
6 |
7 | (C) 2003, Stanislav Sinyagin
8 |
--------------------------------------------------------------------------------
/plugins/randomcollector/randomcollector-torruscfg.pl:
--------------------------------------------------------------------------------
1 | # HTTP Collector Torrus plugin configuration
2 |
3 | push( @Torrus::Collector::loadModules, 'Torrus::Collector::Random' );
4 | push( @Torrus::Validator::loadLeafValidators, 'Torrus::Collector::Random' );
5 |
6 | 1;
7 |
--------------------------------------------------------------------------------
/plugins/randomcollector/randomcollector-wrapper.sh:
--------------------------------------------------------------------------------
1 | # Torrus commandline wrapper configuration
2 |
3 | commands="${commands} genrandomcfg=genrandomcfg"
4 |
5 |
--------------------------------------------------------------------------------
/plugins/rawexport/AUTHORS:
--------------------------------------------------------------------------------
1 | Stanislav Sinyagin
2 | Senior System Engineer, CCIE #5478
3 | K-Open GmbH
4 | Switzerland
5 | Tel. +41 79 407 0224
6 |
7 | ssinyagin@k-open.com
8 | http://www.k-open.com
9 |
--------------------------------------------------------------------------------
/plugins/rawexport/ChangeLog:
--------------------------------------------------------------------------------
1 | 2012-06-08 Stanislav Sinyagin
2 |
3 | * NEWS: Release 2.03.01
4 |
5 | * RawExport.pm (initTarget): must return a true value
6 |
7 | 2009-04-05 Stanislav Sinyagin
8 |
9 | * NEWS: Release 1.2
10 |
11 | 2008-08-05 Stanislav Sinyagin
12 |
13 | * NEWS: Release 1.0
14 |
15 | 2008-03-17 Stanislav Sinyagin
16 |
17 | First pre-release snapshot
18 |
19 |
20 |
--------------------------------------------------------------------------------
/plugins/rawexport/Makefile.am:
--------------------------------------------------------------------------------
1 |
2 | # Copyright (C) 2008 Stanislav Sinyagin
3 | #
4 | # This program is free software; you can redistribute it and/or modify
5 | # it under the terms of the GNU General Public License as published by
6 | # the Free Software Foundation; either version 2 of the License, or
7 | # (at your option) any later version.
8 | #
9 | # This program is distributed in the hope that it will be useful,
10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | # GNU General Public License for more details.
13 | #
14 | # You should have received a copy of the GNU General Public License
15 | # along with this program; if not, write to the Free Software
16 | # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
17 |
18 | # Christian Schnidrig
19 | #
20 |
21 | # HTTP Torrus plugin Automake script
22 |
23 |
24 | ##### Perl modules #####
25 | myperlmoddir = $(perllibdir)/Torrus/Collector
26 | dist_myperlmod_DATA = RawExport.pm RawExport_Params.pm
27 |
28 | ##### Perl configuration files #####
29 | torruscfgdir = $(plugtorruscfgdir)
30 | dist_torruscfg_DATA = rawexport-torruscfg.pl
31 |
32 | xmpxmldir = $(distxmldir)/examples
33 | dist_xmpxml_DATA = rawexport-example.xml
34 |
35 |
36 | ##### Documentation files #####
37 | pkgdocdir = @pkgdocdir@
38 | dist_pkgdoc_DATA = tp-rawexport.txt tp-rawexport.pod
39 | SUFFIXES = .pod .txt
40 | .pod.txt:
41 | pod2text $< $@
42 |
43 | htdocs:
44 | for f in *.pod; do \
45 | pod2html -css=../torrusdoc.css $$f > ../../htdocs/plugins/$$f.html; \
46 | done
47 |
48 | UPLOADPATH = \
49 | ssinyagin,torrus@web.sourceforge.net:/home/groups/t/to/torrus/htdocs/devel
50 |
51 | upload: dist
52 | scp $(distdir).tar.gz $(UPLOADPATH)
53 |
--------------------------------------------------------------------------------
/plugins/rawexport/NEWS:
--------------------------------------------------------------------------------
1 | 09-JUN-2012: Release 2.03.01
2 |
3 | Bugfix for torrus-2.03 compatibility
4 |
5 | 05-APR-2008: Release 1.2
6 |
7 | Some bugfixes and minor improvements
8 |
9 | 05-AUG-2008: Release 1.0
--------------------------------------------------------------------------------
/plugins/rawexport/README:
--------------------------------------------------------------------------------
1 | Raw Export Collector plugin for Torrus
2 |
3 | See tp-rawexport.pod for more details.
4 |
5 | See http://torrus.sourceforge.net for Torrus project documentation
6 |
7 | Copyright (C) 2008, Stanislav Sinyagin
8 |
--------------------------------------------------------------------------------
/plugins/rawexport/RawExport_Params.pm:
--------------------------------------------------------------------------------
1 | #
2 | # Copyright (C) 2008 Stanislav Sinyagin
3 | #
4 | # This program is free software; you can redistribute it and/or modify
5 | # it under the terms of the GNU General Public License as published by
6 | # the Free Software Foundation; either version 2 of the License, or
7 | # (at your option) any later version.
8 | #
9 | # This program is distributed in the hope that it will be useful,
10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | # GNU General Public License for more details.
13 | #
14 | # You should have received a copy of the GNU General Public License
15 | # along with this program; if not, write to the Free Software
16 | # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
17 |
18 |
19 |
20 |
21 | package Torrus::Collector::RawExport_Params;
22 |
23 | use strict;
24 |
25 | ### Initialize the configuration validator with module-specific parameters
26 |
27 | my $validatorLeafParams = {
28 | 'raw-datadir' => undef,
29 | 'raw-file' => undef,
30 | 'raw-field-separator' => undef,
31 | 'raw-timestamp-format' => undef,
32 | 'raw-rowid' => undef,
33 | '+raw-counter-base' => {
34 | '32' => undef,
35 | '64' => undef,
36 | },
37 | '+raw-counter-maxrate' => undef,
38 | };
39 |
40 | sub initValidatorLeafParams
41 | {
42 | my $hashref = shift;
43 |
44 | $hashref->{'ds-type'}{'collector'}{'@storage-type'}{'raw'} =
45 | $validatorLeafParams;
46 | return;
47 | }
48 |
49 |
50 |
51 | 1;
52 |
53 |
--------------------------------------------------------------------------------
/plugins/rawexport/rawexport-example.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
10 |
11 |
12 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
24 |
25 |
26 |
27 |
28 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
--------------------------------------------------------------------------------
/plugins/rawexport/rawexport-torruscfg.pl:
--------------------------------------------------------------------------------
1 | # HTTP Collector Torrus plugin configuration
2 |
3 | push( @Torrus::Collector::loadModules, 'Torrus::Collector::RawExport' );
4 | push( @Torrus::Validator::loadLeafValidators,
5 | 'Torrus::Collector::RawExport_Params' );
6 |
7 |
8 | # Limit of the export queue, in number of export files
9 | $Torrus::Collector::RawExport::thrQueueLimit = 10000;
10 |
11 |
12 |
13 | 1;
14 |
--------------------------------------------------------------------------------
/plugins/rrdfit/AUTHORS:
--------------------------------------------------------------------------------
1 | **************************************************
2 | Stanislav Sinyagin
3 | CCIE #5478
4 | Tel. +41 44 732 99 53
5 | ssinyagin@k-open.com
6 | **************************************************
7 |
--------------------------------------------------------------------------------
/plugins/rrdfit/ChangeLog:
--------------------------------------------------------------------------------
1 | 2012-07-04 Stanislav Sinyagin
2 |
3 | * NEWS: tp-rrdfit release 2.03.01
4 |
5 |
--------------------------------------------------------------------------------
/plugins/rrdfit/Makefile.am:
--------------------------------------------------------------------------------
1 |
2 | # Copyright (C) 2007 Stanislav Sinyagin
3 | #
4 | # This program is free software; you can redistribute it and/or modify
5 | # it under the terms of the GNU General Public License as published by
6 | # the Free Software Foundation; either version 2 of the License, or
7 | # (at your option) any later version.
8 | #
9 | # This program is distributed in the hope that it will be useful,
10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | # GNU General Public License for more details.
13 | #
14 | # You should have received a copy of the GNU General Public License
15 | # along with this program; if not, write to the Free Software
16 | # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
17 |
18 | # Stanislav Sinyagin
19 | #
20 |
21 | # Torrus plugin Automake script
22 |
23 | SUBST = @abs_top_builddir@/substvars.sh
24 |
25 | noinst_SCRIPTS = substvars.sh
26 | EXTRA_DIST = rrdfit.in
27 |
28 |
29 |
30 | ##### CLI wrapper #####
31 | wrapperdir = $(plugwrapperdir)
32 | dist_wrapper_DATA = rrdfit-wrapper.sh
33 |
34 |
35 | ##### Executable scripts #####
36 | pkgbindir = @pkgbindir@
37 | pkgbin_SCRIPTS = rrdfit
38 | rrdfit: rrdfit.in
39 | $(SUBST) rrdfit.in > rrdfit
40 |
41 |
42 | ##### Documentation files #####
43 | pkgdocdir = @pkgdocdir@
44 | dist_pkgdoc_DATA = tp-rrdfit.txt tp-rrdfit.pod.in
45 | SUFFIXES = .pod.in .pod .txt
46 | .pod.in.pod:
47 | $(SUBST) $< > $@
48 | .pod.txt:
49 | pod2text $< $@
50 |
51 |
52 |
53 |
54 | ##### What you do not need after "make clean" #####
55 | CLEANFILES = $(pkgbin_SCRIPTS)
56 |
57 | htdocs: tp-rrdfit.pod
58 | for f in *.pod; do \
59 | pod2html -css=../torrusdoc.css $$f > ../../htdocs/plugins/$$f.html; \
60 | done
61 |
62 | UPLOADPATH = \
63 | ssinyagin,torrus@web.sourceforge.net:/home/groups/t/to/torrus/htdocs/devel
64 |
65 | upload: dist
66 | scp $(distdir).tar.gz $(UPLOADPATH)
67 |
--------------------------------------------------------------------------------
/plugins/rrdfit/NEWS:
--------------------------------------------------------------------------------
1 | 04-JUL-2012: Plugin release 2.03.01
2 |
--------------------------------------------------------------------------------
/plugins/rrdfit/README:
--------------------------------------------------------------------------------
1 | Dummy plugin for Torrus
2 |
3 | This package is only a template for real plugins.
4 |
5 | Use the follwing command for plugin installation:
6 |
7 | torrus install_plugin
8 |
9 | See http://torrus.org for more details
10 |
11 | (C) 2003, 2004 Stanislav Sinyagin
--------------------------------------------------------------------------------
/plugins/rrdfit/rrdfit-wrapper.sh:
--------------------------------------------------------------------------------
1 | # Torrus commandline wrapper configuration
2 |
3 | commands="${commands} rrdfit=rrdfit"
4 |
5 |
--------------------------------------------------------------------------------
/plugins/siam/AUTHORS:
--------------------------------------------------------------------------------
1 | **************************************************
2 | Stanislav Sinyagin
3 | CCIE #5478
4 | Tel. +41 44 732 99 53
5 | ssinyagin@k-open.com
6 | **************************************************
7 |
--------------------------------------------------------------------------------
/plugins/siam/ChangeLog:
--------------------------------------------------------------------------------
1 | 2017-12-01 Stanislav Sinyagin
2 |
3 | * siam_rebuild.in: run GIT garbage collector only once
4 |
5 | 2016-03-14 Stanislav Sinyagin
6 |
7 | * Removed siam_genxml as incompatible with SIAM v1.x data model
8 |
9 | 2014-05-30 Stanislav Sinyagin
10 |
11 | * Merged branch SIAM_v1.x into master
12 |
13 | 2012-03-20 Stanislav Sinyagin
14 |
15 | * NEWS: tp-siam plugin release 2.02.01
16 |
17 | 2012-03-07 Stanislav Sinyagin
18 |
19 | * siam_rrdfetch.in: new command-line utility
20 |
21 | 2012-02-08 Stanislav Sinyagin
22 |
23 | * split siam.in into siam_genddx.in, siam_genxml.in
24 |
25 | 2011-12-29 Stanislav Sinyagin
26 |
27 | * siam.in: aggregate traffic graphs
28 |
29 | 2011-09-11 Stanislav Sinyagin
30 |
31 | * SIAMDD.pm (checkdevtype): Improved error handling
32 |
33 | 2011-09-04 Stanislav Sinyagin
34 |
35 | * NEWS: Plugin release 2.01.01
36 |
37 |
--------------------------------------------------------------------------------
/plugins/siam/NEWS:
--------------------------------------------------------------------------------
1 | 20-MAR-2012: Plugin release 2.02.01
2 |
3 | The "siam" command is split into siam_genddx and siam_genxml. Also a new
4 | command: siam_rrdfetch
5 |
6 | 04-SEP-2011: Plugin release 2.01.01
7 |
--------------------------------------------------------------------------------
/plugins/siam/README:
--------------------------------------------------------------------------------
1 | Dummy plugin for Torrus
2 |
3 | This package is only a template for real plugins.
4 |
5 | Use the follwing command for plugin installation:
6 |
7 | torrus install_plugin
8 |
9 | See http://torrus.org for more details
10 |
11 | (C) 2003, 2004 Stanislav Sinyagin
--------------------------------------------------------------------------------
/plugins/siam/SIAM.pm:
--------------------------------------------------------------------------------
1 | # Copyright (C) 2011 Stanislav Sinyagin
2 | #
3 | # This program is free software; you can redistribute it and/or modify
4 | # it under the terms of the GNU General Public License as published by
5 | # the Free Software Foundation; either version 2 of the License, or
6 | # (at your option) any later version.
7 | #
8 | # This program is distributed in the hope that it will be useful,
9 | # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 | # GNU General Public License for more details.
12 | #
13 | # You should have received a copy of the GNU General Public License
14 | # along with this program; if not, write to the Free Software
15 | # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
16 |
17 |
18 | # Stanislav Sinyagin
19 |
20 | # This module is an interface to SIAM API
21 |
22 | package Torrus::SIAM;
23 |
24 | use strict;
25 | use warnings;
26 |
27 | use SIAM;
28 | use YAML;
29 |
30 | use Torrus::Log;
31 | use Torrus::SIAMLogger;
32 |
33 |
34 | # Variables should be initialised in siam-siteconfig.pl
35 | our $siam_config;
36 |
37 |
38 |
39 |
40 | # Creates a SIAM object, connects and returns it.
41 | sub open
42 | {
43 | my $class = shift;
44 |
45 | my $siamcfg = eval { YAML::LoadFile($siam_config) };
46 | if( $@ )
47 | {
48 | Error("Cannot load YAML data from ${siam_config}: $@");
49 | return undef;
50 | }
51 |
52 | $siamcfg->{'Logger'} = new Torrus::SIAMLogger;
53 |
54 | my $siam = new SIAM($siamcfg);
55 | if( not defined($siam) )
56 | {
57 | Error('Failed to load SIAM');
58 | return undef;
59 | }
60 |
61 | if( not $siam->connect() )
62 | {
63 | Error('Failed connecting to SIAM');
64 | return undef;
65 | }
66 |
67 | return $siam;
68 | }
69 |
70 |
71 |
72 |
73 |
74 | 1;
75 |
76 |
77 | # Local Variables:
78 | # mode: perl
79 | # indent-tabs-mode: nil
80 | # perl-indent-level: 4
81 | # End:
82 |
--------------------------------------------------------------------------------
/plugins/siam/SIAMLogger.pm:
--------------------------------------------------------------------------------
1 | # Copyright (C) 2011 Stanislav Sinyagin
2 | #
3 | # This program is free software; you can redistribute it and/or modify
4 | # it under the terms of the GNU General Public License as published by
5 | # the Free Software Foundation; either version 2 of the License, or
6 | # (at your option) any later version.
7 | #
8 | # This program is distributed in the hope that it will be useful,
9 | # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 | # GNU General Public License for more details.
12 | #
13 | # You should have received a copy of the GNU General Public License
14 | # along with this program; if not, write to the Free Software
15 | # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
16 |
17 | # Stanislav Sinyagin
18 |
19 | # Wrapper around Torrus logger to work for SIAM notifications
20 |
21 | package Torrus::SIAMLogger;
22 |
23 | use strict;
24 | use warnings;
25 |
26 | use Torrus::Log;
27 |
28 |
29 | sub new
30 | {
31 | my $self = {};
32 | my $class = shift;
33 | bless $self, $class;
34 |
35 | return $self;
36 | }
37 |
38 |
39 | sub debug
40 | {
41 | my $self = shift;
42 | my $msg = shift;
43 | Debug($msg);
44 | }
45 |
46 |
47 | sub info
48 | {
49 | my $self = shift;
50 | my $msg = shift;
51 | Info($msg);
52 | }
53 |
54 | sub warn
55 | {
56 | my $self = shift;
57 | my $msg = shift;
58 | Warn($msg);
59 | }
60 |
61 |
62 | sub error
63 | {
64 | my $self = shift;
65 | my $msg = shift;
66 | Error($msg);
67 | }
68 |
69 |
70 |
71 | 1;
72 |
73 |
74 | # Local Variables:
75 | # mode: perl
76 | # indent-tabs-mode: nil
77 | # perl-indent-level: 4
78 | # End:
79 |
--------------------------------------------------------------------------------
/plugins/siam/siam-ddconfig.pl:
--------------------------------------------------------------------------------
1 |
2 | require '@siam_config_pl@';
3 |
4 | push( @Torrus::DevDiscover::loadModules,
5 | 'Torrus::DevDiscover::SIAMDD' );
6 |
7 |
8 | 1;
9 |
--------------------------------------------------------------------------------
/plugins/siam/siam-siteconfig.pl:
--------------------------------------------------------------------------------
1 | # Torrus SIAM plugin site config. Put all your site specifics here.
2 |
3 |
4 | # Specify the location of SIAM configuration file.
5 | $Torrus::SIAM::siam_config = '/opt/pm/etc/SIAM/mysite.yaml';
6 |
7 | 1;
8 |
--------------------------------------------------------------------------------
/plugins/siam/siam-wrapper.sh:
--------------------------------------------------------------------------------
1 | # Torrus commandline wrapper configuration
2 |
3 | commands="${commands} siam_genddx=siam_genddx \
4 | siam_rrdfetch=siam_rrdfetch siam_rebuild=siam_rebuild"
5 |
6 |
--------------------------------------------------------------------------------
/src/AUTHORS:
--------------------------------------------------------------------------------
1 | ***************************************************
2 | Stanislav Sinyagin
3 | Senior System Engineer, CCIE #5478
4 | K-Open GmbH
5 | Switzerland
6 | Tel. +41 79 407 0224
7 |
8 | ssinyagin@k-open.com
9 | http://www.k-open.com
10 | ***************************************************
11 |
12 | CREDITS:
13 |
14 | Chris Amley
15 | Xylan switches SNMP discovery
16 |
17 | Scott Brooks
18 | Atmel wireless devices SNMP discovery
19 |
20 | Aaron Bush
21 | APC and HP vendor templates.
22 |
23 | Shawn Ferry
24 | Many contributions in various parts.
25 |
26 | Marc Haber
27 | Lots of bug reports and architecture ideas.
28 |
29 | Roman Hochuli
30 | Bug reports and new feature ideas.
31 | Vendor templates for Ascend and DOCSIS.
32 |
33 | Ian Holsman http://holsman.net
34 | Adapted the bluerobot.com HTML layout design for Torrus.
35 |
36 | Gord Philpott
37 | Numerous bug reports.
38 |
39 | Christian Schnidrig
40 | Architecture ideas, interface improvements, other contributions.
41 |
42 | Jurij Smakov
43 | Contributed in manpages creation. Maintainer of Debian port.
44 |
45 | Jon Nistor
46 | Bug reports and contributions for JunOS, Cisco SCE and other
47 | vendors discovery.
48 |
--------------------------------------------------------------------------------
/src/README:
--------------------------------------------------------------------------------
1 | Torrus project
2 |
3 | http://sourceforge.net/projects/torrus
4 | http://torrus.org
5 | http://sourceforge.net/apps/mediawiki/torrus/
6 |
7 | For installation instructions, see doc/install.txt or convert doc/install.pod
8 | into a format of your preference.
9 |
10 |
11 | (C) 2002-2010, Stanislav Sinyagin
12 |
--------------------------------------------------------------------------------
/src/TODO:
--------------------------------------------------------------------------------
1 | Torrus to-do list
2 |
3 |
--------------------------------------------------------------------------------
/src/bin/cleanup.in:
--------------------------------------------------------------------------------
1 | #!@SHELL@
2 | # Copyright (C) 2002 Stanislav Sinyagin
3 | #
4 | # This program is free software; you can redistribute it and/or modify
5 | # it under the terms of the GNU General Public License as published by
6 | # the Free Software Foundation; either version 2 of the License, or
7 | # (at your option) any later version.
8 | #
9 | # This program is distributed in the hope that it will be useful,
10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | # GNU General Public License for more details.
13 | #
14 | # You should have received a copy of the GNU General Public License
15 | # along with this program; if not, write to the Free Software
16 | # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
17 |
18 | # Stanislav Sinyagin
19 | #
20 |
21 | # disable Perl::Critic because this is not a Perl script
22 | ## no critic
23 |
24 | # How soon the sessions expire
25 | EXPIRE=60
26 |
27 | @FIND@ @sesstordir@ -type f -mtime +$EXPIRE -exec @RM@ '{}' ';'
28 | @FIND@ @seslockdir@ -type f -mtime +$EXPIRE -exec @RM@ '{}' ';'
29 |
30 | # Local Variables:
31 | # mode: shell-script
32 | # indent-tabs-mode: nil
33 | # perl-indent-level: 4
34 | # End:
35 |
--------------------------------------------------------------------------------
/src/bin/gc.in:
--------------------------------------------------------------------------------
1 | #!@SHELL@
2 | # Copyright (C) 2017 Stanislav Sinyagin
3 | #
4 | # This program is free software; you can redistribute it and/or modify
5 | # it under the terms of the GNU General Public License as published by
6 | # the Free Software Foundation; either version 2 of the License, or
7 | # (at your option) any later version.
8 | #
9 | # This program is distributed in the hope that it will be useful,
10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | # GNU General Public License for more details.
13 | #
14 | # You should have received a copy of the GNU General Public License
15 | # along with this program; if not, write to the Free Software
16 | # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
17 |
18 | # Stanislav Sinyagin
19 | #
20 |
21 | # disable Perl::Critic because this is not a Perl script
22 | ## no critic
23 |
24 | # Garbage collector is needed because of this:
25 | # https://github.com/libgit2/libgit2/issues/4093
26 |
27 |
28 | cd @gitrepodir@
29 |
30 | if [ $? -ne 0 ]; then
31 | echo "Could not find directory: @gitrepodir@" 1>&2
32 | exit 1
33 | fi
34 |
35 | @GIT@ gc
36 |
37 | if [ $? -ne 0 ]; then
38 | echo "git gc retuirned error" 1>&2
39 | exit 1
40 | fi
41 |
42 | @GIT@ update-server-info
43 |
44 | if [ $? -ne 0 ]; then
45 | echo "git update-server-info retuirned error" 1>&2
46 | exit 1
47 | fi
48 |
49 | exit 0
50 |
51 | # Local Variables:
52 | # mode: shell-script
53 | # indent-tabs-mode: nil
54 | # perl-indent-level: 4
55 | # End:
56 |
--------------------------------------------------------------------------------
/src/bin/install_plugin.in:
--------------------------------------------------------------------------------
1 | #!@SHELL@
2 | # Copyright (C) 2004 Stanislav Sinyagin
3 | #
4 | # This program is free software; you can redistribute it and/or modify
5 | # it under the terms of the GNU General Public License as published by
6 | # the Free Software Foundation; either version 2 of the License, or
7 | # (at your option) any later version.
8 | #
9 | # This program is distributed in the hope that it will be useful,
10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | # GNU General Public License for more details.
13 | #
14 | # You should have received a copy of the GNU General Public License
15 | # along with this program; if not, write to the Free Software
16 | # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
17 |
18 | # Stanislav Sinyagin
19 | #
20 |
21 | # disable Perl::Critic because this is not a Perl script
22 | ## no critic
23 |
24 | # Torrus plugin installation utility
25 |
26 | plugin=$1
27 | shift
28 |
29 | if test -z "$plugin"; then
30 | echo "Usage: $0 plugin_dir [options...]" 1>&2
31 | exit 1
32 | fi
33 |
34 | if test ! -d $plugin; then
35 | echo "No such directory: $plugin" 1>&2
36 | exit 1
37 | fi
38 |
39 | echo Installing Torrus plugin from $plugin
40 |
41 | cd $plugin
42 | eval './configure '`cat @cfgdefdir@/instvars`' '$@ || exit 1
43 | make || exit 1
44 | make install || exit 1
45 |
46 | echo Plugin installation finished
47 |
48 |
49 | # Local Variables:
50 | # mode: shell-script
51 | # indent-tabs-mode: nil
52 | # perl-indent-level: 4
53 | # End:
54 |
--------------------------------------------------------------------------------
/src/bin/torrus.fcgi.in:
--------------------------------------------------------------------------------
1 | #!@PERL@ -w
2 | # Copyright (C) 2010 Stanislav Sinyagin
3 | #
4 | # This program is free software; you can redistribute it and/or modify
5 | # it under the terms of the GNU General Public License as published by
6 | # the Free Software Foundation; either version 2 of the License, or
7 | # (at your option) any later version.
8 | #
9 | # This program is distributed in the hope that it will be useful,
10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | # GNU General Public License for more details.
13 | #
14 | # You should have received a copy of the GNU General Public License
15 | # along with this program; if not, write to the Free Software
16 | # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
17 |
18 | # Stanislav Sinyagin
19 |
20 | # FastCGI handler
21 | # Can be used as alternative to mod_perl in Apache
22 | # Can also be used with lighttpd
23 |
24 |
25 | use strict;
26 | use warnings;
27 | BEGIN { require '@torrus_config_pl@'; }
28 |
29 | use CGI::Fast;
30 | use Torrus::Log;
31 | use Torrus::CGI;
32 |
33 |
34 | if( $Torrus::Renderer::globalDebug )
35 | {
36 | &Torrus::Log::setLevel('debug');
37 | }
38 |
39 |
40 | # The FCGI handler process exits after a while and lets FCGI re-spawn
41 | # the process. The limits are randomized, so that multiple FCGI
42 | # processes don't stop at the same time
43 |
44 | my $max_req_count = $Torrus::FCGI::maxRequests +
45 | rand($Torrus::FCGI::maxRequestsRandomFactor);
46 |
47 | my $max_time = time() + $Torrus::FCGI::maxLifetime +
48 | rand($Torrus::FCGI::maxLifetimeRandomFactor);
49 |
50 | my $req_count = 0;
51 | while( my $q = new CGI::Fast )
52 | {
53 | Torrus::CGI->process($q);
54 | $req_count++;
55 |
56 | if( $req_count > $max_req_count or
57 | time() > $max_time )
58 | {
59 | exit(0);
60 | }
61 | }
62 |
63 |
64 | # Local Variables:
65 | # mode: perl
66 | # indent-tabs-mode: nil
67 | # perl-indent-level: 4
68 | # End:
69 |
--------------------------------------------------------------------------------
/src/configs/Makefile.am:
--------------------------------------------------------------------------------
1 |
2 | # Copyright (C) 2004 Stanislav Sinyagin
3 | #
4 | # This program is free software; you can redistribute it and/or modify
5 | # it under the terms of the GNU General Public License as published by
6 | # the Free Software Foundation; either version 2 of the License, or
7 | # (at your option) any later version.
8 | #
9 | # This program is distributed in the hope that it will be useful,
10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | # GNU General Public License for more details.
13 | #
14 | # You should have received a copy of the GNU General Public License
15 | # along with this program; if not, write to the Free Software
16 | # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
17 |
18 | # Stanislav Sinyagin
19 | #
20 |
21 | EXTRA_DIST = \
22 | devdiscover-config.pl \
23 | devdiscover-siteconfig.pl \
24 | email-siteconfig.pl \
25 | initscript.conf \
26 | notify-siteconfig.pl \
27 | snmptrap-siteconfig.pl \
28 | torrus-config.pl \
29 | torrus-siteconfig.pl
30 |
31 | DISTCLEANFILES = instvars
32 |
33 | instvarsdir = $(cfgdefdir)
34 | nodist_instvars_DATA = instvars
35 |
36 | install-data-local:
37 | $(mkinstalldirs) $(DESTDIR)$(cfgdefdir) $(DESTDIR)$(siteconfdir)
38 | for f in initscript.conf devdiscover-config.pl torrus-config.pl; do \
39 | @abs_top_builddir@/setup_tools/substvars.sh $$f > \
40 | $(DESTDIR)$(cfgdefdir)/$$f; \
41 | done
42 | for f in devdiscover-siteconfig.pl email-siteconfig.pl \
43 | notify-siteconfig.pl \
44 | snmptrap-siteconfig.pl torrus-siteconfig.pl; do \
45 | if test ! -r $(DESTDIR)$(siteconfdir)/$$f; then \
46 | $(INSTALL_DATA) $$f $(DESTDIR)$(siteconfdir)/$$f; \
47 | fi \
48 | done
49 |
--------------------------------------------------------------------------------
/src/configs/devdiscover-siteconfig.pl:
--------------------------------------------------------------------------------
1 | # Torrus Device Discovery Site config. Put all your site specifics here.
2 |
3 |
4 | 1;
5 |
--------------------------------------------------------------------------------
/src/configs/email-siteconfig.pl:
--------------------------------------------------------------------------------
1 | # Torrus Email notifications configuration. Put all your site specifics here.
2 |
3 | # The URL where the user can browse the datasources
4 | $Torrus::Email::url = 'http://localhost/torrus';
5 |
6 | # Filename within templates directory which will be used
7 | # for e-mail notification
8 | $Torrus::Email::template = 'email-alarm.txt';
9 |
10 | 1;
11 |
12 | # Local Variables:
13 | # mode: perl
14 | # indent-tabs-mode: nil
15 | # perl-indent-level: 4
16 | # End:
17 |
--------------------------------------------------------------------------------
/src/configs/initscript.conf:
--------------------------------------------------------------------------------
1 | # Torrus init script configuration
2 | # You can override any value in @siteconfdir@/initscript.siteconf
3 |
4 | # setuid to this user before launching the daemons
5 | TORRUS_USER=@torrus_user@
6 |
7 |
8 |
9 |
10 | # Local Variables:
11 | # mode: shell-script
12 | # indent-tabs-mode: nil
13 | # perl-indent-level: 4
14 | # End:
15 |
--------------------------------------------------------------------------------
/src/configs/notify-siteconfig.pl:
--------------------------------------------------------------------------------
1 |
2 | %Torrus::Notify::programs =
3 | (
4 | 'mailto' => '$TORRUS_BIN/action_printemail | /usr/bin/mail $ARG1',
5 | 'page' => '/usr/bin/echo $TORRUS_NODEPATH:$TORRUS_MONITOR ' .
6 | '>> /tmp/monitor.$ARG1.log'
7 | );
8 |
9 | %Torrus::Notify::policies =
10 | (
11 | 'CUST_A' => {
12 | 'match' => sub { $ENV{'TORRUS_P_notify_policy'} eq 'A' },
13 | 'severity' => {
14 | '3' => [ 'mailto:aaa@domain.com',
15 | 'mailto:bbb@domain.com' ],
16 | '5' => [ 'page:1234', 'mailto:boss@domain.com' ] } } );
17 |
18 |
19 |
20 |
21 | # Torrus::Log::setLevel('debug');
22 |
23 |
24 |
25 | 1;
26 |
27 | # Local Variables:
28 | # mode: perl
29 | # indent-tabs-mode: nil
30 | # perl-indent-level: 4
31 | # End:
32 |
--------------------------------------------------------------------------------
/src/configs/snmptrap-siteconfig.pl:
--------------------------------------------------------------------------------
1 | # Torrus SNMP Trap configuration. Put all your site specifics here.
2 |
3 | # Hosts that will receive traps
4 | @Torrus::Snmptrap::hosts = qw( localhost );
5 |
6 | # SNMP community for trap sending
7 | $Torrus::Snmptrap::community = 'public';
8 |
9 | # SNMP trap port.
10 | $Torrus::Snmptrap::port = 162;
11 |
12 |
13 | 1;
14 |
15 | # Local Variables:
16 | # mode: perl
17 | # indent-tabs-mode: nil
18 | # perl-indent-level: 4
19 | # End:
20 |
--------------------------------------------------------------------------------
/src/configs/torrus-siteconfig.pl:
--------------------------------------------------------------------------------
1 | # Torrus Site config. Put all your site specifics here.
2 | # You need to stop and start Apache server every time you change this file.
3 |
4 | use Sys::Hostname qw(hostname);
5 |
6 | @Torrus::Global::xmlAlwaysIncludeFirst = ( 'defaults.xml', 'site-global.xml' );
7 |
8 | %Torrus::Global::treeConfig =
9 | (
10 | 'main' => {
11 | 'description' => 'The main tree',
12 | 'info' => 'some tree',
13 | 'xmlfiles' => [qw(routers.xml)],
14 | 'run' => { 'collector' => 1, 'monitor' => 0 } }
15 | );
16 |
17 | # Customizable look in the HTML page top
18 | # $Torrus::Renderer::companyName = 'Your company name';
19 | # $Torrus::Renderer::companyURL = 'http://torrus.sf.net';
20 | # $Torrus::Renderer::siteInfo = hostname();
21 |
22 |
23 | 1;
24 |
--------------------------------------------------------------------------------
/src/critic.profile:
--------------------------------------------------------------------------------
1 | # This is the Torrus-specific profile for Perl::Critic
2 | # The defaults are sometimes too demanding and require too much effort to fix,
3 | # so this profile proposes a certain compromise.
4 |
5 | severity = 3
6 |
7 | # Package vars are used a lot in torrus
8 | [Variables::ProhibitPackageVars]
9 | severity = 1
10 |
11 | # Complexity is fine as long as it's designed properly :)
12 | [Modules::ProhibitExcessMainComplexity]
13 | severity = 1
14 |
15 | [Subroutines::ProhibitExcessComplexity]
16 | severity = 1
17 |
18 | [ControlStructures::ProhibitDeepNests]
19 | severity = 1
20 |
21 |
22 | # there is a lot of whitespace garbage, but removing all of it will make
23 | # the code unmanageable
24 | [CodeLayout::ProhibitTrailingWhitespace]
25 | severity = 1
26 |
27 | # Tabs are bad
28 | [CodeLayout::ProhibitHardTabs]
29 | severity = 5
30 |
31 | # torrus-coonfig.pl is explicitly require'd
32 | [Modules::RequireBarewordIncludes]
33 | severity = 1
34 |
35 | # new Object() is used everywhere
36 | [Objects::ProhibitIndirectSyntax]
37 | severity = 1
38 |
39 |
40 | # if-elsif-elsif-elsif are used in a couple of files
41 | [ControlStructures::ProhibitCascadingIfElse]
42 | severity = 1
43 |
44 |
45 | # they tell to use /x in every regexp, but we don't
46 | [RegularExpressions::RequireExtendedFormatting]
47 | severity = 1
48 |
49 |
50 | # we use "my %options = @_;" in new() constructors, probably need to
51 | # change that later
52 | [Subroutines::RequireArgUnpacking]
53 | severity = 2
54 |
55 | # We use return undef very often as an indication that the value is undefined.
56 | [Subroutines::ProhibitExplicitReturnUndef]
57 | severity = 1
58 |
59 | # string eval is used rarely and in places where we really need it
60 | [BuiltinFunctions::ProhibitStringyEval]
61 | severity = 1
62 |
63 | # using oct(664) is just odd. Everyone knows what leading zero means
64 | [ValuesAndExpressions::ProhibitLeadingZeros]
65 | severity = 1
66 |
67 | # global signal handling is critical for correct BerkeleyDB functioning
68 | # also $0 is needed to set the process status
69 | [Variables::RequireLocalizedPunctuationVars]
70 | allow = %SIG $0
71 |
72 | # we've got a few subroutines with too many arguments
73 | [Subroutines::ProhibitManyArgs]
74 | max_arguments = 7
75 |
76 | # maybe I should change it later
77 | [ErrorHandling::RequireCarping]
78 | severity = 1
79 |
80 |
--------------------------------------------------------------------------------
/src/discovery/README:
--------------------------------------------------------------------------------
1 | This directory is a typical place for SNMP device discovery instruction
2 | files.
3 |
4 | The discovery instruction files may be generated by "genddx" utility.
5 | They are used as the input for "devdiscover" utility.
6 |
--------------------------------------------------------------------------------
/src/doc/ABOUT:
--------------------------------------------------------------------------------
1 | Round Robin Database Framework will be the universal
2 | framework, or a frontend for Round-Robin Database (RRDtool).
3 | Unlike the other frontends, it will prioritize the following
4 | features:
5 |
6 | -- Have flexible hierarchical configuration (like Cricket)
7 | -- Wildcards in configuration for grouping the databases
8 | (or regexp'ed filenames?)
9 | -- Arbitrary DS naming (Cricket understands only ds0, ds1...)
10 | -- Monitor the RRDs according to specified rules, and automatically
11 | create the summary page with the graphs of the RRDs showing
12 | troubles (like Cricket's threshold monitoring. But it only creates
13 | a list of DSes, and you have to go and see them by yourself).
14 | -- Browse the available RRDs in a hierarchical manner (like Cricket,
15 | but able to handle newly-created databases, like RRGrapher)
16 | -- no data collection at all. just monitoring and displaying the data
17 | collected by someone else.
18 |
19 | In more details, the first requirements draft is available at:
20 | http://carrierin.sourceforge.net/rrframework.html
21 |
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/src/doc/Makefile.am:
--------------------------------------------------------------------------------
1 |
2 | # Copyright (C) 2002 Stanislav Sinyagin
3 | #
4 | # This program is free software; you can redistribute it and/or modify
5 | # it under the terms of the GNU General Public License as published by
6 | # the Free Software Foundation; either version 2 of the License, or
7 | # (at your option) any later version.
8 | #
9 | # This program is distributed in the hope that it will be useful,
10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | # GNU General Public License for more details.
13 | #
14 | # You should have received a copy of the GNU General Public License
15 | # along with this program; if not, write to the Free Software
16 | # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
17 |
18 | # Stanislav Sinyagin
19 | #
20 |
21 | SUBDIRS = . manpages
22 |
23 | SUBST = @abs_top_builddir@/setup_tools/substvars.sh
24 |
25 | CLEANFILES = $(POD_FILES) $(nodist_pkgdoc_DATA)
26 | EXTRA_DIST = $(SRCPOD)
27 |
28 | SRCPOD = \
29 | install.pod.in \
30 | nodeid_usage.pod.in \
31 | reporting_setup.pod.in \
32 | rpnexpr.pod.in \
33 | scalability.pod.in \
34 | snmpdiscovery.pod.in \
35 | stylingprofile.pod.in \
36 | userguide.pod.in \
37 | vendorsupport.pod.in \
38 | webintf.pod.in \
39 | xmlconfig.pod.in
40 |
41 | POD_FILES = \
42 | install.pod \
43 | nodeid_usage.pod \
44 | reporting_setup.pod \
45 | rpnexpr.pod \
46 | scalability.pod \
47 | snmpdiscovery.pod \
48 | stylingprofile.pod \
49 | userguide.pod \
50 | vendorsupport.pod \
51 | webintf.pod \
52 | xmlconfig.pod
53 |
54 |
55 | pkgdocdir = @pkgdocdir@
56 |
57 | if POD2TEXT_PRESENT
58 | nodist_pkgdoc_DATA = \
59 | install.txt \
60 | nodeid_usage.txt \
61 | reporting_setup.txt \
62 | rpnexpr.txt \
63 | scalability.txt \
64 | snmpdiscovery.txt \
65 | stylingprofile.txt \
66 | userguide.txt \
67 | vendorsupport.txt \
68 | webintf.txt \
69 | xmlconfig.txt
70 | endif
71 |
72 | devdocdir = $(pkgdocdir)/devdoc
73 |
74 | dist_devdoc_DATA = \
75 | devdoc/architecture.pod \
76 | devdoc/devdiscover.pod \
77 | devdoc/progstyle.pod
78 |
79 | SUFFIXES = .pod.in .pod .txt
80 |
81 | .PRECIOUS: $(POD_FILES)
82 |
83 | .pod.in.pod:
84 | $(SUBST) $< > $@
85 |
86 | if POD2TEXT_PRESENT
87 | .pod.txt:
88 | $(POD2TEXT) $< > $@
89 | endif
90 |
91 | htdocs: $(POD_FILES)
92 | cd manpages; make pods
93 | HTMLDIR=@abs_top_builddir@/../htdocs $(SHELL) mkhtdocs.sh
94 |
95 |
--------------------------------------------------------------------------------
/src/doc/devdoc/v3_changes:
--------------------------------------------------------------------------------
1 | configure.ac
2 | ============
3 |
4 | Perl threads are required (they were optional for v2).
5 |
6 | Renamed "perllib" to "lib".
7 |
8 | Perl version 5.8.9 or higher.
9 |
10 | New perl modules required:
11 | Redis::Fast
12 | Git::Raw (version 0.72 or higher)
13 | Git::ObjectStore (version 0.005 or higher)
14 | Digest::SHA
15 | Cache::Ref
16 | FCGI
17 |
18 | Perl modules not needed:
19 | BerkeleyDB
20 |
21 | Removed variables:
22 | perlithreads
23 | cachedir
24 | dbhome
25 |
26 | New variable:
27 | gitrepodir
28 |
29 | New software daemon required:
30 | redis
31 |
32 |
33 | Variables var_user, var_group, var_mode are set in configure script
34 |
35 | Apache mod_perl handlers are removed
36 |
37 |
38 | torrus-config.pl
39 | ================
40 |
41 | Removed config:
42 | $Torrus::Global::threadsEnabled
43 | $Torrus::Collector::RRDStorage::useThreads
44 | $Torrus::Global::cacheDir
45 | $Torrus::Renderer::cacheMaxAge
46 | $Torrus::Global::dbHome
47 | $Torrus::DB::dbSub
48 | $Torrus::Global::ConfigReadyTimeout
49 | $Torrus::Global::ConfigReadyRetryPeriod
50 | $Torrus::Global::ConfigReadersWaitPeriod
51 | $Torrus::Collector::exclusiveStartupLock
52 |
53 | Changed defaults:
54 | $Torrus::Collector::fastCycles = 0;
55 |
56 | New config:
57 | $Torrus::Global::redisServer
58 | $Torrus::Global::redisPrefix
59 | $Torrus::ConfigTree::objCacheSize
60 | $Torrus::Global::RRDCachedSock
61 |
62 | Torrus::ConfigTree
63 | ==================
64 |
65 | Aliases are no longer supported
66 |
67 |
68 | Default parameters changed:
69 |
70 | last24h-small,last24h,lastweek,lastmonth,lastyear
71 |
72 |
73 |
74 |
75 | Systemd service:
76 | cp systemd/torrus.service /lib/systemd/system/
77 | cp systemd/torrus.tmpfile /usr/lib/tmpfiles.d/torrus.conf
78 | systemctl enable torrus
79 |
80 |
81 |
--------------------------------------------------------------------------------
/src/doc/headers:
--------------------------------------------------------------------------------
1 |
2 | # Copyright (C) 2002 Stanislav Sinyagin
3 | #
4 | # This program is free software; you can redistribute it and/or modify
5 | # it under the terms of the GNU General Public License as published by
6 | # the Free Software Foundation; either version 2 of the License, or
7 | # (at your option) any later version.
8 | #
9 | # This program is distributed in the hope that it will be useful,
10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | # GNU General Public License for more details.
13 | #
14 | # You should have received a copy of the GNU General Public License
15 | # along with this program; if not, write to the Free Software
16 | # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
17 |
18 | # Stanislav Sinyagin
19 | #
20 | #
21 |
22 |
43 |
44 |
45 |
--------------------------------------------------------------------------------
/src/doc/manpages/torrus_buildsearchdb.pod.in:
--------------------------------------------------------------------------------
1 | # Copyright (C) 2007 Stanislav Sinyagin
2 | #
3 | # This program is free software; you can redistribute it and/or modify
4 | # it under the terms of the GNU General Public License as published by
5 | # the Free Software Foundation; either version 2 of the License, or
6 | # (at your option) any later version.
7 | #
8 | # This program is distributed in the hope that it will be useful,
9 | # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 | # GNU General Public License for more details.
12 | #
13 | # You should have received a copy of the GNU General Public License
14 | # along with this program; if not, write to the Free Software
15 | # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
16 |
17 | # Stanislav Sinyagin
18 | #
19 | #
20 |
21 | =head1 NAME
22 |
23 | buildsearchdb - Build the search database
24 |
25 | =head1 SYNOPSIS
26 |
27 | B I
28 |
29 | =head1 DESCRIPTION
30 |
31 | This command indexes the Torrus configuration objects and builds the
32 | search index database. One of the three options B<--tree>, B<--all> or
33 | B<--global> is required.
34 |
35 | =head1 OPTIONS
36 |
37 | =over 4
38 |
39 | =item B<--tree>=I
40 |
41 | Build the indexes for a given tree.
42 |
43 | =item B<--all>
44 |
45 | Builds the tree indexes for all trees.
46 |
47 | =item B<--nogc>
48 |
49 | Normally the Git garbage collector is launched after the search database
50 | is updated. This option makes the builder skip the GC run.
51 |
52 | =item B<--verbose>
53 |
54 | Prints extra information
55 |
56 | =item B<--debug>
57 |
58 | Prints debugging information
59 |
60 | =item B<--help>
61 |
62 | Displays a help message.
63 |
64 | =back
65 |
66 | =head1 SEE ALSO
67 |
68 | L
69 |
70 | =head1 NOTES
71 |
72 | See more documentation at Torrus home page: http://torrus.org
73 |
74 | =head1 AUTHOR
75 |
76 | Stanislav Sinyagin Essinyagin@k-open.comE
77 |
--------------------------------------------------------------------------------
/src/doc/manpages/torrus_cleanup.pod.in:
--------------------------------------------------------------------------------
1 | # Copyright (C) 2004 Stanislav Sinyagin
2 | #
3 | # This program is free software; you can redistribute it and/or modify
4 | # it under the terms of the GNU General Public License as published by
5 | # the Free Software Foundation; either version 2 of the License, or
6 | # (at your option) any later version.
7 | #
8 | # This program is distributed in the hope that it will be useful,
9 | # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 | # GNU General Public License for more details.
12 | #
13 | # You should have received a copy of the GNU General Public License
14 | # along with this program; if not, write to the Free Software
15 | # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
16 |
17 | # Stanislav Sinyagin
18 | #
19 | #
20 |
21 | =head1 NAME
22 |
23 | cleanup - Cleans up Torrus web session data.
24 |
25 | =head1 SYNOPSIS
26 |
27 | B
28 |
29 | =head1 DESCRIPTION
30 |
31 | This command cleans out the expired (older than 2 days) Torrus web interface
32 | session data.
33 |
34 | =head1 FILES
35 |
36 | =over 4
37 |
38 | =item F<@sesstordir@>
39 |
40 | Torrus session data storage directory.
41 |
42 | =item F<@seslockdir@>
43 |
44 | Torrus session data lock directory.
45 |
46 | =back
47 |
48 | =head1 SEE ALSO
49 |
50 | L
51 |
52 | =head1 NOTES
53 |
54 | See more documentation at Torrus home page: http://torrus.org
55 |
56 | =head1 AUTHOR
57 |
58 | Stanislav Sinyagin Essinyagin@k-open.comE
59 |
60 |
--------------------------------------------------------------------------------
/src/doc/manpages/torrus_clearcache.pod.in:
--------------------------------------------------------------------------------
1 | # Copyright (C) 2004 Stanislav Sinyagin
2 | #
3 | # This program is free software; you can redistribute it and/or modify
4 | # it under the terms of the GNU General Public License as published by
5 | # the Free Software Foundation; either version 2 of the License, or
6 | # (at your option) any later version.
7 | #
8 | # This program is distributed in the hope that it will be useful,
9 | # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 | # GNU General Public License for more details.
12 | #
13 | # You should have received a copy of the GNU General Public License
14 | # along with this program; if not, write to the Free Software
15 | # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
16 |
17 | # Stanislav Sinyagin
18 | #
19 | #
20 |
21 | =head1 NAME
22 |
23 | clearcache - Clears the Torrus Renderer's cache.
24 |
25 | =head1 SYNOPSIS
26 |
27 | B
28 |
29 | =head1 DESCRIPTION
30 |
31 | This program clears Torrus Renderer's cache. It is intended for debugging
32 | purposes only.
33 |
34 | =head1 SEE ALSO
35 |
36 | L
37 |
38 | =head1 NOTES
39 |
40 | See more documentation at Torrus home page: http://torrus.org
41 |
42 |
43 | =head1 AUTHOR
44 |
45 | Stanislav Sinyagin Essinyagin@k-open.comE
46 |
47 |
--------------------------------------------------------------------------------
/src/doc/manpages/torrus_configinfo.pod.in:
--------------------------------------------------------------------------------
1 | # Copyright (C) 2004 Stanislav Sinyagin
2 | #
3 | # This program is free software; you can redistribute it and/or modify
4 | # it under the terms of the GNU General Public License as published by
5 | # the Free Software Foundation; either version 2 of the License, or
6 | # (at your option) any later version.
7 | #
8 | # This program is distributed in the hope that it will be useful,
9 | # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 | # GNU General Public License for more details.
12 | #
13 | # You should have received a copy of the GNU General Public License
14 | # along with this program; if not, write to the Free Software
15 | # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
16 |
17 | # Stanislav Sinyagin
18 | #
19 | #
20 |
21 | =head1 NAME
22 |
23 | configinfo - Displays useful statistics for all Torrus trees.
24 |
25 | =head1 SYNOPSIS
26 |
27 | B
28 |
29 | =head1 DESCRIPTION
30 |
31 | This command displays information on all available Torrus trees, including
32 | the names of the trees, counts of leaves, subtrees, views, monitors and
33 | actions, and other information.
34 |
35 | =head1 SEE ALSO
36 |
37 | L
38 |
39 | =head1 NOTES
40 |
41 | See more documentation at Torrus home page: http://torrus.org
42 |
43 | =head1 AUTHOR
44 |
45 | Stanislav Sinyagin Essinyagin@k-open.comE
46 |
--------------------------------------------------------------------------------
/src/doc/manpages/torrus_flushmonitors.pod.in:
--------------------------------------------------------------------------------
1 | # Copyright (C) 2010 Stanislav Sinyagin
2 | #
3 | # This program is free software; you can redistribute it and/or modify
4 | # it under the terms of the GNU General Public License as published by
5 | # the Free Software Foundation; either version 2 of the License, or
6 | # (at your option) any later version.
7 | #
8 | # This program is distributed in the hope that it will be useful,
9 | # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 | # GNU General Public License for more details.
12 | #
13 | # You should have received a copy of the GNU General Public License
14 | # along with this program; if not, write to the Free Software
15 | # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
16 |
17 | # Stanislav Sinyagin
18 | #
19 | #
20 |
21 | =head1 NAME
22 |
23 | flushmonitors - Flush monitor alarms and tokenset members
24 |
25 | =head1 SYNOPSIS
26 |
27 | B --tree=I [I]
28 |
29 | =head1 DESCRIPTION
30 |
31 | This command flushes the state of all monitor alarms for a given tree,
32 | and also the tokenset members which were originated by the monitor alarms.
33 |
34 | =head1 OPTIONS
35 |
36 | =over 4
37 |
38 | =item B<--all>
39 |
40 | Instructs to flush all trees.
41 |
42 | =item B<--debug>
43 |
44 | Sets the log level to debug.
45 |
46 | =item B<--verbose>
47 |
48 | Sets the debug level to info.
49 |
50 | =item B<--help>
51 |
52 | Displays a help message.
53 |
54 | =back
55 |
56 | =head1 SEE ALSO
57 |
58 | L
59 |
60 | =head1 NOTES
61 |
62 | See more documentation at Torrus home page: http://torrus.org
63 |
64 |
65 | =head1 AUTHOR
66 |
67 | Stanislav Sinyagin Essinyagin@k-open.comE
68 |
--------------------------------------------------------------------------------
/src/doc/manpages/torrus_genlist.pod.in:
--------------------------------------------------------------------------------
1 | # Copyright (C) 2004 Stanislav Sinyagin
2 | #
3 | # This program is free software; you can redistribute it and/or modify
4 | # it under the terms of the GNU General Public License as published by
5 | # the Free Software Foundation; either version 2 of the License, or
6 | # (at your option) any later version.
7 | #
8 | # This program is distributed in the hope that it will be useful,
9 | # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 | # GNU General Public License for more details.
12 | #
13 | # You should have received a copy of the GNU General Public License
14 | # along with this program; if not, write to the Free Software
15 | # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
16 |
17 | # Stanislav Sinyagin
18 | #
19 | #
20 |
21 | =head1 NAME
22 |
23 | genlist - Lists Torrus objects
24 |
25 | =head1 SYNOPSIS
26 |
27 | B --tree=I [I]
28 |
29 | =head1 DESCRIPTION
30 |
31 | This command generates a listing of objects in Torrus
32 | configuration tree I. Currently it lists the RRD files only.
33 |
34 | =head1 OPTIONS
35 |
36 | =over 4
37 |
38 | =item B<--path>=I
39 |
40 | Sets the subtree path to I. Default values is "/".
41 |
42 | =item B<--what>=I
43 |
44 | Includes items I in the listing. Currently only "rrdfiles" is
45 | a supported item.
46 |
47 | =item B<--type>=I
48 |
49 | Sets selection type. Currently supported values are "collector" (Collector
50 | leaves), "readonly" (read-only leaves) and "all" (this also happens to be
51 | default value).
52 |
53 | =item B<--help>
54 |
55 | Displays a help message.
56 |
57 | =back
58 |
59 | =head1 SEE ALSO
60 |
61 | L
62 |
63 | =head1 NOTES
64 |
65 | See more documentation at Torrus home page: http://torrus.org
66 |
67 | =head1 AUTHOR
68 |
69 | Stanislav Sinyagin Essinyagin@k-open.comE
70 |
71 |
--------------------------------------------------------------------------------
/src/doc/manpages/torrus_install_plugin.pod.in:
--------------------------------------------------------------------------------
1 | # Copyright (C) 2007 Stanislav Sinyagin
2 | #
3 | # This program is free software; you can redistribute it and/or modify
4 | # it under the terms of the GNU General Public License as published by
5 | # the Free Software Foundation; either version 2 of the License, or
6 | # (at your option) any later version.
7 | #
8 | # This program is distributed in the hope that it will be useful,
9 | # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 | # GNU General Public License for more details.
12 | #
13 | # You should have received a copy of the GNU General Public License
14 | # along with this program; if not, write to the Free Software
15 | # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
16 |
17 | # Stanislav Sinyagin
18 | #
19 | #
20 |
21 | =head1 NAME
22 |
23 | install_plugin - Installs the Torrus plugin
24 |
25 | =head1 SYNOPSIS
26 |
27 | B I
28 |
29 | =head1 DESCRIPTION
30 |
31 | This command installs a Torrus plugin. Prior to executing this command,
32 | unpack the plugin package into some directory, and then point
33 | C to the path of the unpacked plugin distribution.
34 |
35 | The command would launch the C<./configure> script for the plugin
36 | and supply all options that specify the current Torrus installation paths.
37 | Then it would execute C and C.
38 |
39 | =head1 SEE ALSO
40 |
41 | L
42 |
43 | =head1 NOTES
44 |
45 | See more documentation at Torrus home page: http://torrus.org
46 |
47 | =head1 AUTHOR
48 |
49 | Stanislav Sinyagin Essinyagin@k-open.comE
50 |
51 |
--------------------------------------------------------------------------------
/src/doc/manpages/torrus_monitor.pod.in:
--------------------------------------------------------------------------------
1 | # Copyright (C) 2004 Stanislav Sinyagin
2 | #
3 | # This program is free software; you can redistribute it and/or modify
4 | # it under the terms of the GNU General Public License as published by
5 | # the Free Software Foundation; either version 2 of the License, or
6 | # (at your option) any later version.
7 | #
8 | # This program is distributed in the hope that it will be useful,
9 | # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 | # GNU General Public License for more details.
12 | #
13 | # You should have received a copy of the GNU General Public License
14 | # along with this program; if not, write to the Free Software
15 | # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
16 |
17 | # Stanislav Sinyagin
18 | #
19 | #
20 |
21 | =head1 NAME
22 |
23 | monitor - Torrus Monitor.
24 |
25 | =head1 SYNOPSIS
26 |
27 | B --tree=I [I]
28 |
29 | =head1 DESCRIPTION
30 |
31 | This command starts the Monitor process for the tree I. By
32 | default it forks into a daemon, and sleeps until the next cycle in its
33 | schedule.
34 |
35 | =head1 OPTIONS
36 |
37 | =over 4
38 |
39 | =item B<--nodaemon>
40 |
41 | Prevents the process from becoming a daemon and sets the log to STDERR.
42 |
43 | =item B<--runonce>
44 |
45 | Instructs the script to run once and exit. Implies B<--nodaemon>.
46 |
47 | =item B<--delay=N>
48 |
49 | Makes the daemon sleep for N minutes before starting the first cycle.
50 | This would happen on the daemon startup and also after each configuration
51 | recompilation.
52 | For example, when monitor and collector start simultaneously, the collector
53 | needs some time to retrieve the data being monitored.
54 |
55 | =item B<--debug>
56 |
57 | Sets the log level to debug.
58 |
59 | =item B<--verbose>
60 |
61 | Sets the debug level to info.
62 |
63 | =item B<--help>
64 |
65 | Displays a help message.
66 |
67 | =back
68 |
69 | =head1 FILES
70 |
71 | =over 4
72 |
73 | =item F<@siteconfdir@/torrus-siteconfig.pl>
74 |
75 | Torrus site configuration script.
76 |
77 | =back
78 |
79 | =head1 SEE ALSO
80 |
81 | L
82 |
83 | =head1 NOTES
84 |
85 | See more documentation at Torrus home page: http://torrus.org
86 |
87 | =head1 AUTHOR
88 |
89 | Stanislav Sinyagin Essinyagin@k-open.comE
90 |
--------------------------------------------------------------------------------
/src/doc/mkhtdocs.sh:
--------------------------------------------------------------------------------
1 | #
2 | # Generate HTML files out of POD
3 | #
4 | # Stanislav Sinyagin
5 | #
6 |
7 | gen_html () {
8 | in=$1
9 | opt=$2
10 | out=${HTMLDIR}/${in}.html
11 | css=torrusdoc.css
12 |
13 | if ( echo ${in} | grep '/' > /dev/null ); then
14 | css='../'${css}
15 | fi
16 |
17 | if test ! -f ${out} -o ${in} -nt ${out}; then
18 | echo Updating ${in}
19 | pod2html -css=${css} --infile=${in} --outfile=${out} ${opt}
20 | fi
21 | }
22 |
23 | if test x${HTMLDIR} = x; then
24 | echo HTMLDIR environment variable not defined 1>&2
25 | exit 1
26 | fi
27 |
28 | for f in *.pod devdoc/*.pod; do
29 | gen_html $f
30 | done
31 | for f in manpages/*.pod; do
32 | gen_html $f --noindex
33 | done
34 |
35 | # Local Variables:
36 | # mode: shell-script
37 | # sh-shell: sh
38 | # indent-tabs-mode: nil
39 | # sh-basic-offset: 4
40 | # End:
41 |
--------------------------------------------------------------------------------
/src/doc/torrus_rrdworld.xml:
--------------------------------------------------------------------------------
1 |
2 | Torrus
3 | Stanislav Sinyagin
4 |
5 | A robust and flexible framework for data collection and processing.
6 | Includes a modular SNMP discovery engine, SNMP collector, threshold monitor,
7 | hierarchical web interface.
8 |
9 | http://torrus.org/
10 | 20056
11 | GPL
12 | ssinyagin@k-open.com
13 |
14 |
--------------------------------------------------------------------------------
/src/examples/Makefile.am:
--------------------------------------------------------------------------------
1 |
2 | # Copyright (C) 2002 Stanislav Sinyagin
3 | #
4 | # This program is free software; you can redistribute it and/or modify
5 | # it under the terms of the GNU General Public License as published by
6 | # the Free Software Foundation; either version 2 of the License, or
7 | # (at your option) any later version.
8 | #
9 | # This program is distributed in the hope that it will be useful,
10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | # GNU General Public License for more details.
13 | #
14 | # You should have received a copy of the GNU General Public License
15 | # along with this program; if not, write to the Free Software
16 | # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
17 |
18 | # Stanislav Sinyagin
19 | #
20 |
21 | examplesdir = $(exmpdir)
22 | dist_examples_DATA = \
23 | README \
24 | onms.tmpl \
25 | onmsInterfaces.sh \
26 | torrus-siteconfig.powerbook.pl \
27 | setmonitor.xupdate.xml
28 |
29 |
--------------------------------------------------------------------------------
/src/examples/README:
--------------------------------------------------------------------------------
1 | Some useful exmples of Torrus configuration and usage.
2 |
3 | XML configuration examples reside in xmlconfig/examples.
4 |
5 | *.xupdate.xml files are examples of XUpdate usage to modify the XML files
6 | generated by devdiscover. See also:
7 | Torrus User Guide
8 | XUpdate specification: http://www.xmldb.org/xupdate/
9 | XUpdate implementation in Perl by Petr Pajas: XML::XUpdate::LibXML
10 | XML Editing shell by Petr Pajas: http://xsh.sourceforge.net/
11 |
12 |
13 |
--------------------------------------------------------------------------------
/src/examples/onms.tmpl:
--------------------------------------------------------------------------------
1 | [%#
2 | Template-Toolkit template for OpenNMS Torrus config generation.
3 | Author: Gustavo Torres
4 | $Id$
5 | %]
6 |
7 |
10 |
11 | [% PROCESS $data %]
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 | [% FOREACH interface = ifs %]
33 |
34 |
35 |
36 |
37 |
38 |
39 | [% FOREACH svc = interface.services;
40 | IF svc.name == 'icmp' %]
41 |
42 | [% ELSE %]
43 |
44 |
45 |
46 |
47 |
48 |
49 | [% END;
50 | END %]
51 |
52 | [% END %]
53 |
54 |
55 |
--------------------------------------------------------------------------------
/src/examples/onmsInterfaces.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | # Copyright (C) 2004 Gustavo Torres
3 | # Copyright (C) 2004 Stanislav Sinyagin
4 | #
5 | # This program is free software; you can redistribute it and/or modify
6 | # it under the terms of the GNU General Public License as published by
7 | # the Free Software Foundation; either version 2 of the License, or
8 | # (at your option) any later version.
9 | #
10 | # This program is distributed in the hope that it will be useful,
11 | # but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | # GNU General Public License for more details.
14 | #
15 | # You should have received a copy of the GNU General Public License
16 | # along with this program; if not, write to the Free Software
17 | # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
18 |
19 | # Gustavo Torres
20 | # Stanislav Sinyagin
21 | #
22 |
23 | # This shell script extracts OpenNMS information about interfaces
24 | # and builds the data file which you can use with onms.tmpl to generate
25 | # Torrus XML configuration.
26 |
27 | # Usage (RESPONSEDIR setting may be skipped if it's in the default path)
28 | #
29 | # RESPONSEDIR=/var/opennms/rrd/response
30 | # export RESPONSEDIR
31 | # cd /usr/local/torrus-0.1/share/torrus/
32 | # ./examples/onmsInterfaces.sh > onms.data
33 | # tpage --define data=onms.data examples/onms.tmpl > xmlconfig/onms.xml
34 |
35 |
36 | if test x"$RESPONSEDIR" = x""; then
37 | RESPONSEDIR=/var/opennms/rrd/response
38 | fi
39 |
40 | echo '[% responsedir = "'$RESPONSEDIR'" %]'
41 | echo '[% ifs = ['
42 |
43 | for ipaddr in `ls ${RESPONSEDIR}`; do
44 | echo " { addr => '$i',";
45 | echo " services => [";
46 | for service in `ls ${RESPONSEDIR}/$i | awk -F. '{print $1}'`; do
47 | echo -n " {name => '${service}', "
48 | legend=`echo $j | awk '{print toupper($1)}'`
49 | echo "legend => '${legend}'}"
50 | done
51 | echo ' ]';
52 | echo ' }';
53 | done
54 | echo '] %]'
55 |
56 | # Local Variables:
57 | # mode: shell-script
58 | # indent-tabs-mode: nil
59 | # perl-indent-level: 4
60 | # End:
61 |
--------------------------------------------------------------------------------
/src/examples/setmonitor.xupdate.xml:
--------------------------------------------------------------------------------
1 |
2 |
23 |
24 |
27 |
28 |
30 |
31 |
32 |
34 |
35 | This file was modified with XUpdate script setmonitor.xupdate.xml
36 |
37 |
38 |
39 |
40 |
41 |
42 | ifErrors
43 |
44 |
45 |
46 |
47 |
48 |
--------------------------------------------------------------------------------
/src/examples/torrus-siteconfig.powerbook.pl:
--------------------------------------------------------------------------------
1 | # Torrus Site config. Put all your site specifics here.
2 | # You need to stop and start Apache server every time you change this file.
3 | #
4 | # An example using the rainbow-schema overlay.
5 | # Shawn Ferry
6 | #
7 | # (ssinyagin) You can use statements like these from inside your
8 | # XML configurations:
9 | #
10 | # Besides, "devdiscover" discovery tool will soon support most
11 | # of these vendor definitions.
12 |
13 | # @(#) 10/18/03 torrus-siteconfig.pl 1.3 (10/18/03 18:44:31) sferry
14 |
15 | @Torrus::Global::xmlAlwaysIncludeFirst =
16 | qw(
17 | defaults.xml
18 | snmp-defs.xml
19 | collector-periods.xml
20 | vendor/cisco.ios.xml
21 | generic/rfc2790.host-resources.xml
22 | generic/rfc1213.xml
23 | vendor/ucd-snmp.xml
24 | );
25 |
26 | %Torrus::Global::treeConfig =
27 | (
28 | 'powerbook' => {
29 | 'description' => 'Powerbook Laptop Tree',
30 | 'xmlfiles' => [qw(
31 | powerbook/powerbook-defaults.xml
32 | powerbook/powerbook-ti.xml
33 | )],
34 | 'run' => {
35 | 'collector' => 1,
36 | }
37 | },
38 |
39 | ); # CLOSE %Torrus::Global::treeConfig
40 |
41 |
42 | # Override values in the current schema with those in
43 | # rainbow schema, schema changes require an apache restart
44 | $Torrus::Renderer::stylingProfileOverlay = "rainbow-schema";
45 |
46 |
47 | 1;
48 |
--------------------------------------------------------------------------------
/src/examples/v3_perf/read.pl:
--------------------------------------------------------------------------------
1 | use strict;
2 | use warnings;
3 | use JSON;
4 | use IO::File;
5 | use IO::Dir;
6 |
7 | my $homedir = '/opt/t3/t/data/';
8 |
9 | my $json = JSON->new;
10 |
11 |
12 | my $d0 = IO::Dir->new($homedir) or die($!);
13 |
14 | while( defined(my $dir0 = $d0->read()) )
15 | {
16 | if( $dir0 =~ /^\w{2}$/ )
17 | {
18 | my $path1 = $homedir . '/' . $dir0;
19 | my $d1 = IO::Dir->new($path1) or die($!);
20 |
21 | while( defined(my $dir1 = $d1->read()) )
22 | {
23 | if( $dir1 =~ /^\w{2}$/ )
24 | {
25 | my $path2 = $path1 . '/' . $dir1;
26 | my $d2 = IO::Dir->new($path2) or die($!);
27 |
28 | while( defined(my $fname = $d2->read()) )
29 | {
30 | if( $fname =~ /\w/ )
31 | {
32 | local $/;
33 | my $filepath = $path2 . '/' . $fname;
34 | my $fh = IO::File->new($filepath)
35 | or die("Cannot open $filepath: $!");
36 |
37 | my $data = $json->decode($fh->getline);
38 | die("empty data") unless defined($data);
39 | die("not a hash") unless ref($data) eq 'HASH';
40 |
41 | $fh->close;
42 | }
43 | }
44 | }
45 | }
46 | }
47 | }
48 |
49 |
--------------------------------------------------------------------------------
/src/examples/v3_perf/results:
--------------------------------------------------------------------------------
1 | ##################################
2 | digitalocean SSD:
3 |
4 | root@do01:~# time perl write.pl 200000
5 |
6 | real 1m36.161s
7 | user 0m28.252s
8 | sys 0m25.768s
9 |
10 | root@do01:~# time perl read.pl
11 |
12 | real 1m28.023s
13 | user 0m28.696s
14 | sys 0m23.756s
15 |
16 |
17 | ##################################
18 | tor01 ext4 in the lab (3.5" disks with software mirror and LVM)
19 |
20 | root@tor01:/opt/t3/t# time perl write.pl 200000
21 |
22 | real 8m7.494s
23 | user 0m16.688s
24 | sys 0m12.808s
25 | root@tor01:/opt/t3/t# time perl read.pl
26 |
27 | real 9m56.452s
28 | user 0m14.528s
29 | sys 0m9.392s
30 |
31 |
32 | ##################################
33 | tor01 BTRFS:
34 |
35 | root@tor01:/opt/t3/t# time perl write.pl 200000
36 |
37 | real 1m29.186s
38 | user 0m18.544s
39 | sys 0m20.388s
40 | root@tor01:/opt/t3/t# time perl read.pl
41 |
42 | real 2m24.438s
43 | user 0m15.948s
44 | sys 0m9.704s
45 |
46 |
47 | ##################################
48 | tor01 BTRFS on top of ext4
49 |
50 | apt-get install btrfs-tools
51 | dd if=/dev/zero of=/opt/t3/t/dataimg bs=64M count=100
52 | mkfs.btrfs /opt/t3/t/dataimg
53 | mkdir /opt/t3/t/data/
54 | mount /opt/t3/t/dataimg /opt/t3/t/data/
55 |
56 |
57 | root@tor01:/opt/t3/t# time perl write.pl 200000
58 |
59 | real 4m42.214s
60 | user 0m18.312s
61 | sys 0m22.456s
62 |
63 | root@tor01:/opt/t3/t# time perl read.pl
64 |
65 | real 8m50.374s
66 | user 0m17.828s
67 | sys 0m14.360s
68 |
69 |
70 | ##################################
71 | tor01 BTRFS:
72 |
73 | time perl src/examples/v3_perf/write.pl 50000
74 |
75 | real 0m13.011s
76 | user 0m6.136s
77 | sys 0m5.204s
78 |
79 | cd /opt/t3/t/data/
80 | git init
81 | time git add --all
82 |
83 | real 0m36.877s
84 | user 0m31.472s
85 | sys 0m3.656s
86 |
87 | time git commit -m 'xx'
88 |
89 | real 0m19.054s
90 | user 0m3.172s
91 | sys 0m7.812s
92 |
93 | time git status
94 | On branch master
95 | nothing to commit, working directory clean
96 |
97 | real 0m1.940s
98 | user 0m0.636s
99 | sys 0m1.400s
100 |
101 |
102 | # ext4
103 | cd /var/tmp/
104 | time git clone /opt/t3/t/data
105 | Cloning into 'data'...
106 | done.
107 | Checking out files: 100% (50001/50001), done.
108 |
109 | real 0m15.816s
110 | user 0m2.968s
111 | sys 0m7.820s
112 |
113 |
--------------------------------------------------------------------------------
/src/examples/v3_perf/write.pl:
--------------------------------------------------------------------------------
1 | use strict;
2 | use warnings;
3 | use Digest::SHA qw(sha1_hex);
4 | use File::Path qw(make_path);
5 | use JSON;
6 | use IO::File;
7 |
8 |
9 | my $homedir = '/opt/t3/t/data/';
10 | my $count = $ARGV[0] or die("Need numeric argument");
11 |
12 | my $data = {
13 | 'docsIfDownstreamChannelTable' => '1.3.6.1.2.1.10.127.1.1.1',
14 | 'docsIfCmtsDownChannelCounterTable' => '1.3.6.1.2.1.10.127.1.3.10',
15 | 'docsIfSigQSignalNoise' => '1.3.6.1.2.1.10.127.1.1.4.1.5',
16 | 'ciscoLS1010' => '1.3.6.1.4.1.9.1.107',
17 | 'ciscoImageTable' => '1.3.6.1.4.1.9.9.25.1.1',
18 | 'ceImageTable' => '1.3.6.1.4.1.9.9.249.1.1.1',
19 | 'bufferElFree' => '1.3.6.1.4.1.9.2.1.9.0',
20 | 'cipSecGlobalHcInOctets' => '1.3.6.1.4.1.9.9.171.1.3.1.4.0',
21 | 'cbgpPeerAddrFamilyName' => '1.3.6.1.4.1.9.9.187.1.2.3.1.3',
22 | 'cbgpPeerAcceptedPrefixes' => '1.3.6.1.4.1.9.9.187.1.2.4.1.1',
23 | 'cbgpPeerPrefixAdminLimit' => '1.3.6.1.4.1.9.9.187.1.2.4.1.3',
24 | 'ccarConfigType' => '1.3.6.1.4.1.9.9.113.1.1.1.1.3',
25 | 'ccarConfigAccIdx' => '1.3.6.1.4.1.9.9.113.1.1.1.1.4',
26 | 'ccarConfigRate' => '1.3.6.1.4.1.9.9.113.1.1.1.1.5',
27 | 'ccarConfigLimit' => '1.3.6.1.4.1.9.9.113.1.1.1.1.6',
28 | 'ccarConfigExtLimit' => '1.3.6.1.4.1.9.9.113.1.1.1.1.7',
29 | 'ccarConfigConformAction' => '1.3.6.1.4.1.9.9.113.1.1.1.1.8',
30 | 'ccarConfigExceedAction' => '1.3.6.1.4.1.9.9.113.1.1.1.1.9',
31 | 'cvpdnSystemTunnelTotal' => '1.3.6.1.4.1.9.10.24.1.1.4.1.2',
32 | 'c3gStandard' => '1.3.6.1.4.1.9.9.661.1.1.1.1',
33 | 'cportQosDropPkts' => '1.3.6.1.4.1.9.9.189.1.3.2.1.7',
34 | };
35 |
36 | my $json = JSON->new;
37 |
38 | while( $count-- > 0 )
39 | {
40 | my $sha = sha1_hex(' ' . $count . ' ');
41 |
42 | my $dir = $homedir . substr($sha, 0, 2) . '/' .
43 | substr($sha, 2, 2) . '/';
44 |
45 | if( not -d $dir )
46 | {
47 | make_path($dir) or die("Cannot mkdir $dir: $!");
48 | }
49 |
50 | my $filepath = $dir . $sha;
51 |
52 | my $fh = IO::File->new($filepath, 'w') or die("Cannot open $filepath: $!");
53 | $fh->print($json->encode($data));
54 | $fh->close;
55 | }
56 |
57 |
--------------------------------------------------------------------------------
/src/init.d/torrus.in:
--------------------------------------------------------------------------------
1 | #!@SHELL@
2 | #
3 | # init.d script for Torrus
4 | # Install it as /etc/init.d/torrus (most UNIXes),
5 | # or as /usr/local/etc/rc.d/torrus.sh (FreeBSD), or probably somewhere else.
6 | #
7 | # Stanislav Sinyagin
8 | #
9 | #
10 | ### chkconfig info
11 | # chkconfig: 2345 90 10
12 | # description: Starts/Stops Torrus collectors and monitors
13 | ###
14 | #
15 | ### BEGIN INIT INFO
16 | # Provides: torrus-collector torrus-monitor
17 | # Required-Start: $local_fs $remote_fs $syslog $named $network $time
18 | # Required-Stop: $local_fs $remote_fs $syslog $named $network
19 | # Should-Start:
20 | # Should-Stop:
21 | # Default-Start: 2 3 4 5
22 | # Default-Stop: 0 1 6
23 | # Short-Description: Torrus collectors and monitors
24 | # Description: Start/stop Torrus collectors and monitors
25 | ### END INIT INFO
26 |
27 | prefix=@prefix@
28 | sysconfdir=@sysconfdir@
29 | pkghome=@pkghome@
30 | cmddir=@pkgbindir@
31 | piddir=@piddir@
32 | sitedir=@sitedir@
33 |
34 | . @cfgdefdir@/initscript.conf
35 | if test -f @siteconfdir@/initscript.siteconf; then
36 | . @siteconfdir@/initscript.siteconf
37 | fi
38 |
39 | START_ARGS="--cmd=start"
40 | STOP_ARGS="--cmd=stop"
41 |
42 | if test x"${TORRUS_USER}" != x; then
43 | START_ARGS=${START_ARGS}' --user='${TORRUS_USER}
44 | STOP_ARGS=${STOP_ARGS}' --user='${TORRUS_USER}
45 | fi
46 |
47 |
48 | start_daemons () {
49 | ${cmddir}/launcher ${START_ARGS} 2>&1 | tee -a @logdir@/launcher_start.log
50 |
51 | # RHEL based systems (RHEL, CentOS, Fedora) ignore the KXXtorrus script
52 | # unless the corresponding lock is present
53 | if test -d /var/lock/subsys; then
54 | touch /var/lock/subsys/torrus
55 | fi
56 | }
57 |
58 | stop_daemons () {
59 | ${cmddir}/launcher ${STOP_ARGS} 2>&1 | tee -a @logdir@/launcher_stop.log
60 |
61 | # RHEL specifics
62 | if test -d /var/lock/subsys; then
63 | rm -f /var/lock/subsys/torrus
64 | fi
65 | }
66 |
67 | case "$1" in
68 | 'start') start_daemons
69 | ;;
70 |
71 | 'stop') stop_daemons
72 | ;;
73 |
74 | 'restart') stop_daemons; start_daemons
75 | ;;
76 |
77 | 'status') ${cmddir}/launcher --cmd=status
78 | ;;
79 |
80 | *) echo "Usage: $0 [start|stop|restart]"
81 | ;;
82 | esac
83 |
84 | # Local Variables:
85 | # mode: shell-script
86 | # sh-shell: sh
87 | # indent-tabs-mode: nil
88 | # sh-basic-offset: 2
89 | # End:
90 |
--------------------------------------------------------------------------------
/src/lib/Makefile.am:
--------------------------------------------------------------------------------
1 |
2 | # Copyright (C) 2002 Stanislav Sinyagin
3 | #
4 | # This program is free software; you can redistribute it and/or modify
5 | # it under the terms of the GNU General Public License as published by
6 | # the Free Software Foundation; either version 2 of the License, or
7 | # (at your option) any later version.
8 | #
9 | # This program is distributed in the hope that it will be useful,
10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | # GNU General Public License for more details.
13 | #
14 | # You should have received a copy of the GNU General Public License
15 | # along with this program; if not, write to the Free Software
16 | # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
17 |
18 | # Stanislav Sinyagin
19 | #
20 |
21 |
22 | install-data-local:
23 | $(mkinstalldirs) $(DESTDIR)$(perllibdir)
24 | find * -type d ! -name CVS -print >list.tmp
25 | for d in `cat list.tmp`; do \
26 | $(mkinstalldirs) $(DESTDIR)$(perllibdir)/$$d; done
27 | find * \( -name '*.pm' \) -type f -print >list.tmp
28 | for f in `cat list.tmp`; do \
29 | $(INSTALL_DATA) $$f $(DESTDIR)$(perllibdir)/$$f; done
30 | rm -f list.tmp
31 |
32 |
33 | uninstall-local:
34 | find * -type d ! -name CVS -print >list.tmp
35 | for d in `cat list.tmp`; do \
36 | rm -r $(DESTDIR)$(perllibdir)/$$d; done
37 | rm -f list.tmp
38 |
39 |
40 | dist-hook:
41 | find * -type d ! -name CVS -print >list.tmp
42 | for d in `cat list.tmp`; do \
43 | mkdir $(distdir)/$$d; done
44 | find * \( -name '*.pm' -o -name '*.txt' \) -type f -print >list.tmp
45 | for f in `cat list.tmp`; do \
46 | cp $$f $(distdir)/$$f; done
47 | rm -f list.tmp
48 |
--------------------------------------------------------------------------------
/src/lib/Torrus/ACL/AuthLocalMD5.pm:
--------------------------------------------------------------------------------
1 | # Copyright (C) 2002 Stanislav Sinyagin
2 | #
3 | # This program is free software; you can redistribute it and/or modify
4 | # it under the terms of the GNU General Public License as published by
5 | # the Free Software Foundation; either version 2 of the License, or
6 | # (at your option) any later version.
7 | #
8 | # This program is distributed in the hope that it will be useful,
9 | # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 | # GNU General Public License for more details.
12 | #
13 | # You should have received a copy of the GNU General Public License
14 | # along with this program; if not, write to the Free Software
15 | # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
16 |
17 | # Stanislav Sinyagin
18 |
19 |
20 | package Torrus::ACL::AuthLocalMD5;
21 |
22 | use strict;
23 | use warnings;
24 |
25 | use Torrus::Log;
26 | use Digest::MD5 qw(md5_hex);
27 |
28 | sub new
29 | {
30 | my $self = {};
31 | my $class = shift;
32 | bless $self, $class;
33 | return $self;
34 | }
35 |
36 |
37 | sub getUserAttrList
38 | {
39 | return qw(userPasswordMD5);
40 | }
41 |
42 | sub authenticateUser
43 | {
44 | my $self = shift;
45 | my $uid = shift;
46 | my $password = shift;
47 | my $attrValues = shift;
48 |
49 | if( not $password or not $attrValues->{'userPasswordMD5'} )
50 | {
51 | return undef;
52 | }
53 | my $pw_md5 = md5_hex( $password );
54 | return( $pw_md5 eq $attrValues->{'userPasswordMD5'} );
55 | }
56 |
57 |
58 | sub setPassword
59 | {
60 | my $self = shift;
61 | my $uid = shift;
62 | my $password = shift;
63 |
64 | my $attrValues = {};
65 | $attrValues->{'userPasswordMD5'} = md5_hex( $password );
66 | return $attrValues;
67 | }
68 |
69 |
70 |
71 |
72 | 1;
73 |
74 |
75 | # Local Variables:
76 | # mode: perl
77 | # indent-tabs-mode: nil
78 | # perl-indent-level: 4
79 | # End:
80 |
--------------------------------------------------------------------------------
/src/lib/Torrus/Collector/CDef_Params.pm:
--------------------------------------------------------------------------------
1 | #
2 | # Copyright (C) 2004 Christian Schnidrig
3 | #
4 | # This program is free software; you can redistribute it and/or modify
5 | # it under the terms of the GNU General Public License as published by
6 | # the Free Software Foundation; either version 2 of the License, or
7 | # (at your option) any later version.
8 | #
9 | # This program is distributed in the hope that it will be useful,
10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | # GNU General Public License for more details.
13 | #
14 | # You should have received a copy of the GNU General Public License
15 | # along with this program; if not, write to the Free Software
16 | # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
17 |
18 | # Christian Schnidrig
19 |
20 |
21 | # Parameter definitions for CDef collector plugin
22 |
23 | package Torrus::Collector::CDef_Params;
24 |
25 | use strict;
26 | use warnings;
27 |
28 | ### Initialize the configuration validator with module-specific parameters
29 | our %params =
30 | (
31 | 'rpn-expr' => undef,
32 | 'cdef-collector-delay' => undef,
33 | 'cdef-collector-tolerance' => undef,
34 | );
35 |
36 |
37 | sub initValidatorLeafParams
38 | {
39 | my $hashref = shift;
40 | $hashref->{'ds-type'}{'collector'}{'collector-type'}{'cdef'} =
41 | \%params;
42 | return;
43 | }
44 |
45 |
46 | my %admInfoParamCategories =
47 | (
48 | 'cdef-collector-delay' => 'CDef_Collector',
49 | 'cdef-collector-tolerance' => 'CDef_Collector',
50 | );
51 |
52 |
53 | sub initAdmInfo
54 | {
55 | my $map = shift;
56 | my $categories = shift;
57 |
58 | $map->{'ds-type'}{'collector'}{'collector-type'}{'cdef'} =
59 | \%params;
60 |
61 | while( my ($pname, $category) = each %admInfoParamCategories )
62 | {
63 | $categories->{$pname} = $category;
64 | }
65 | return;
66 | }
67 |
68 |
69 |
70 | 1;
71 |
72 |
--------------------------------------------------------------------------------
/src/lib/Torrus/Collector/SNMP_TS_Params.pm:
--------------------------------------------------------------------------------
1 | # Copyright (C) 2018 Stanislav Sinyagin
2 | #
3 | # This program is free software; you can redistribute it and/or modify
4 | # it under the terms of the GNU General Public License as published by
5 | # the Free Software Foundation; either version 2 of the License, or
6 | # (at your option) any later version.
7 | #
8 | # This program is distributed in the hope that it will be useful,
9 | # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 | # GNU General Public License for more details.
12 | #
13 | # You should have received a copy of the GNU General Public License
14 | # along with this program; if not, write to the Free Software
15 | # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
16 |
17 | # Stanislav Sinyagin
18 |
19 | package Torrus::Collector::SNMP_TS_Params;
20 |
21 |
22 | use strict;
23 |
24 | # List of needed parameters and default values
25 |
26 | our %requiredLeafParams =
27 | (
28 | 'snmp-ts-column-oid' => undef, # the actual data column
29 | 'snmp-ts-ref-oid' => undef, # reference column
30 | '+snmp-ts-unit-scale' => undef, # how timestamp relates to 1 second
31 | );
32 |
33 |
34 | my %skip_snmp_params =
35 | (
36 | 'snmp-object' => 1,
37 | 'snmp-object-type' => 1,
38 | );
39 |
40 |
41 | sub initValidatorLeafParams
42 | {
43 | my $hashref = shift;
44 |
45 | # Copy parameters from SNMP collector, except for 'snmp-object'
46 | while(my($key, $val) =
47 | each %{$hashref->{'ds-type'}{'collector'}{'collector-type'}{'snmp'}})
48 | {
49 | if( not $skip_snmp_params{$key} )
50 | {
51 | $requiredLeafParams{$key} = $val;
52 | }
53 | }
54 |
55 | $hashref->{'ds-type'}{'collector'}{'collector-type'}{'snmp-ts'} =
56 | \%requiredLeafParams;
57 | }
58 |
59 |
60 |
61 |
62 | 1;
63 |
64 |
65 | # Local Variables:
66 | # mode: perl
67 | # indent-tabs-mode: nil
68 | # perl-indent-level: 4
69 | # End:
70 |
--------------------------------------------------------------------------------
/src/lib/Torrus/DevDiscover/NexComm.pm:
--------------------------------------------------------------------------------
1 | # Copyright (C) 2011 Stanislav Sinyagin
2 | #
3 | # This program is free software; you can redistribute it and/or modify
4 | # it under the terms of the GNU General Public License as published by
5 | # the Free Software Foundation; either version 2 of the License, or
6 | # (at your option) any later version.
7 | #
8 | # This program is distributed in the hope that it will be useful,
9 | # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 | # GNU General Public License for more details.
12 | #
13 | # You should have received a copy of the GNU General Public License
14 | # along with this program; if not, write to the Free Software
15 | # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
16 |
17 | # NexComm System xDSL gateways
18 | # Only interface indexing and naming is handled here.
19 |
20 | package Torrus::DevDiscover::NexComm;
21 |
22 | use strict;
23 | use warnings;
24 |
25 | use Torrus::Log;
26 |
27 |
28 | $Torrus::DevDiscover::registry{'NexComm'} = {
29 | 'sequence' => 500,
30 | 'checkdevtype' => \&checkdevtype,
31 | 'discover' => \&discover,
32 | 'buildConfig' => \&buildConfig
33 | };
34 |
35 |
36 | our %oiddef =
37 | (
38 | 'nexcomm_products' => '1.3.6.1.4.1.5927.1',
39 | );
40 |
41 |
42 | sub checkdevtype
43 | {
44 | my $dd = shift;
45 | my $devdetails = shift;
46 |
47 | if( not $dd->oidBaseMatch
48 | ( 'nexcomm_products',
49 | $devdetails->snmpVar( $dd->oiddef('sysObjectID') ) ) )
50 | {
51 | return 0;
52 | }
53 |
54 | $devdetails->setCap('interfaceIndexingPersistent');
55 |
56 | return 1;
57 | }
58 |
59 |
60 | sub discover
61 | {
62 | my $dd = shift;
63 | my $devdetails = shift;
64 |
65 | my $data = $devdetails->data();
66 | my $session = $dd->session();
67 |
68 | $data->{'param'}{'snmp-oids-per-pdu'} = 10;
69 |
70 | return 1;
71 | }
72 |
73 |
74 | sub buildConfig
75 | {
76 | my $devdetails = shift;
77 | my $cb = shift;
78 | my $devNode = shift;
79 | return;
80 | }
81 |
82 |
83 |
84 | 1;
85 |
86 |
87 | # Local Variables:
88 | # mode: perl
89 | # indent-tabs-mode: nil
90 | # perl-indent-level: 4
91 | # End:
92 |
--------------------------------------------------------------------------------
/src/lib/Torrus/DevDiscover/Patton.pm:
--------------------------------------------------------------------------------
1 | # Copyright (C) 2011 Stanislav Sinyagin
2 | #
3 | # This program is free software; you can redistribute it and/or modify
4 | # it under the terms of the GNU General Public License as published by
5 | # the Free Software Foundation; either version 2 of the License, or
6 | # (at your option) any later version.
7 | #
8 | # This program is distributed in the hope that it will be useful,
9 | # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 | # GNU General Public License for more details.
12 | #
13 | # You should have received a copy of the GNU General Public License
14 | # along with this program; if not, write to the Free Software
15 | # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
16 |
17 | # Patton devices
18 | # Only interface indexing and naming is handled here.
19 |
20 | package Torrus::DevDiscover::Patton;
21 |
22 | use strict;
23 | use warnings;
24 |
25 | use Torrus::Log;
26 |
27 |
28 | $Torrus::DevDiscover::registry{'Patton'} = {
29 | 'sequence' => 500,
30 | 'checkdevtype' => \&checkdevtype,
31 | 'discover' => \&discover,
32 | 'buildConfig' => \&buildConfig
33 | };
34 |
35 |
36 | our %oiddef =
37 | (
38 | 'patton_products' => '1.3.6.1.4.1.1768.100',
39 | );
40 |
41 |
42 | sub checkdevtype
43 | {
44 | my $dd = shift;
45 | my $devdetails = shift;
46 |
47 | if( not $dd->oidBaseMatch
48 | ( 'patton_products',
49 | $devdetails->snmpVar( $dd->oiddef('sysObjectID') ) ) )
50 | {
51 | return 0;
52 | }
53 |
54 | $devdetails->setCap('interfaceIndexingPersistent');
55 |
56 | return 1;
57 | }
58 |
59 |
60 | sub discover
61 | {
62 | my $dd = shift;
63 | my $devdetails = shift;
64 |
65 | my $data = $devdetails->data();
66 | my $session = $dd->session();
67 |
68 | $data->{'param'}{'snmp-oids-per-pdu'} = 10;
69 |
70 | return 1;
71 | }
72 |
73 |
74 | sub buildConfig
75 | {
76 | my $devdetails = shift;
77 | my $cb = shift;
78 | my $devNode = shift;
79 | return;
80 | }
81 |
82 |
83 |
84 | 1;
85 |
86 |
87 | # Local Variables:
88 | # mode: perl
89 | # indent-tabs-mode: nil
90 | # perl-indent-level: 4
91 | # End:
92 |
--------------------------------------------------------------------------------
/src/lib/Torrus/DevDiscover/RFC1657_BGP4_MIB.pm:
--------------------------------------------------------------------------------
1 | # Copyright (C) 2005 Stanislav Sinyagin
2 | #
3 | # This program is free software; you can redistribute it and/or modify
4 | # it under the terms of the GNU General Public License as published by
5 | # the Free Software Foundation; either version 2 of the License, or
6 | # (at your option) any later version.
7 | #
8 | # This program is distributed in the hope that it will be useful,
9 | # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 | # GNU General Public License for more details.
12 | #
13 | # You should have received a copy of the GNU General Public License
14 | # along with this program; if not, write to the Free Software
15 | # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
16 |
17 | # Stanislav Sinyagin
18 |
19 | # Discovery module for BGP4-MIB (RFC 1657)
20 | # This module does not generate any XML, but provides information
21 | # for other discovery modules. For the sake of discovery time and traffic,
22 | # it is not implicitly executed during the normal discovery process.
23 |
24 | package Torrus::DevDiscover::RFC1657_BGP4_MIB;
25 |
26 | use strict;
27 | use warnings;
28 |
29 | use Torrus::Log;
30 |
31 |
32 | our %oiddef =
33 | (
34 | # BGP4-MIB
35 | 'bgpPeerRemoteAs' => '1.3.6.1.2.1.15.3.1.9',
36 | );
37 |
38 |
39 |
40 |
41 | sub discover
42 | {
43 | my $dd = shift;
44 | my $devdetails = shift;
45 |
46 | my $data = $devdetails->data();
47 | my $session = $dd->session();
48 |
49 | my $table = $dd->walkSnmpTable('bgpPeerRemoteAs');
50 |
51 | if( scalar(keys %{$table}) > 0 )
52 | {
53 | $devdetails->setCap('bgpPeerTable');
54 |
55 | while( my ($ipAddr, $asNum) = each %{$table} )
56 | {
57 | $data->{'bgpPeerAS'}{$ipAddr} = $asNum;
58 | }
59 | }
60 |
61 | return 1;
62 | }
63 |
64 |
65 |
66 | 1;
67 |
68 |
69 | # Local Variables:
70 | # mode: perl
71 | # indent-tabs-mode: nil
72 | # perl-indent-level: 4
73 | # End:
74 |
--------------------------------------------------------------------------------
/src/lib/Torrus/Redis.pm:
--------------------------------------------------------------------------------
1 | # Copyright (C) 2017 Stanislav Sinyagin
2 | #
3 | # This program is free software; you can redistribute it and/or modify
4 | # it under the terms of the GNU General Public License as published by
5 | # the Free Software Foundation; either version 2 of the License, or
6 | # (at your option) any later version.
7 | #
8 | # This program is distributed in the hope that it will be useful,
9 | # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 | # GNU General Public License for more details.
12 | #
13 | # You should have received a copy of the GNU General Public License
14 | # along with this program; if not, write to the Free Software
15 | # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
16 |
17 | # Stanislav Sinyagin
18 |
19 |
20 | package Torrus::Redis;
21 |
22 | use strict;
23 | use warnings;
24 |
25 | use base 'Redis::Fast';
26 |
27 | 1;
28 |
--------------------------------------------------------------------------------
/src/scripts/rrdup_notify.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | #
3 | # Periodically check if there are RRD files not updated by collector,
4 | # and email the warning message.
5 | # *.old.rrd files are ignored
6 |
7 | # Stanislav Sinyagin
8 | #
9 |
10 | # Where the RRD files are located. Separate multiple paths with space
11 | RRDSTORAGE=/srv/torrus/collector_rrd
12 |
13 | # Maximum allowed age of an RRD file, in minutes.
14 | MAXAGE=60
15 |
16 | # Where to send complaints
17 | NOTIFY=root
18 |
19 | TMPFILE=/tmp/rrdup_notify.$$
20 |
21 | cp /dev/null ${TMPFILE}
22 |
23 | for d in ${RRDSTORAGE}; do
24 | find ${d} -name '*.rrd' ! -name '*.old.rrd' \
25 | -mmin +${MAXAGE} -print >>${TMPFILE}
26 | done
27 |
28 | nLines=`wc -l ${TMPFILE} | awk '{print $1}'`
29 |
30 | if test ${nLines} -gt 0; then
31 | cat ${TMPFILE} | \
32 | mail -s "`printf \"Warning: %d aged RRD files\" ${nLines}`" ${NOTIFY}
33 | fi
34 |
35 | rm ${TMPFILE}
36 |
37 | # Local Variables:
38 | # mode: shell-script
39 | # indent-tabs-mode: nil
40 | # perl-indent-level: 4
41 | # End:
42 |
--------------------------------------------------------------------------------
/src/scripts/xml/extract-skeleton.xsl:
--------------------------------------------------------------------------------
1 |
2 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 | This file is a result of extract-skeleton.xsl template
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
--------------------------------------------------------------------------------
/src/setup_tools/check_perlthreading.pl:
--------------------------------------------------------------------------------
1 |
2 | use threads;
3 |
4 | $| = 1;
5 |
6 | print "The child thread must keep ticking while the main thread sleeps\n";
7 | print "If it's not so, then we have a compatibility problem\n";
8 |
9 |
10 |
11 | my $thrChild = threads->create( \&child );
12 | $thrChild->detach();
13 |
14 | print "P> Launched the child thread. Now I sleep 20 seconds\n";
15 | sleep(20);
16 | print "P> Parent woke up. Was there ticking inbetween?\n";
17 |
18 | exit 0;
19 |
20 |
21 |
22 | sub child
23 | {
24 | print "C> Child thread started. I will print 10 lines, one per second\n";
25 |
26 | foreach my $i (1..10)
27 | {
28 | print("C> Child tick " . $i . "\n");
29 | sleep(1);
30 | }
31 | }
32 |
33 |
34 |
35 |
36 |
37 |
38 |
--------------------------------------------------------------------------------
/src/setup_tools/configure_fhs:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | # Configure script for FHC compliant setup (http://www.pathname.com/fhs/)
4 | # Stanislav Sinyagin
5 |
6 | if test ! -x ./configure; then
7 | echo "$0: cannot find ./configure" 2>&1
8 | echo "Usage: ./setup_tools/configure_fhs [configure options]..." 2>&1
9 | exit 1
10 | fi
11 |
12 | ./configure \
13 | --prefix=/opt \
14 | --mandir=/opt/share/man \
15 | pkghome=/opt/torrus \
16 | sitedir=/etc/opt/torrus \
17 | "$@"
18 |
--------------------------------------------------------------------------------
/src/setup_tools/cpanm_install_modules.sh:
--------------------------------------------------------------------------------
1 | for m in \
2 | IO::Socket::SSL \
3 | Redis::Fast \
4 | Git::Raw \
5 | Git::ObjectStore \
6 | Digest::SHA \
7 | Cache::Ref \
8 | JSON \
9 | JSON::XS \
10 | XML::LibXML \
11 | Template \
12 | Proc::Daemon \
13 | Net::SNMP \
14 | URI::Escape \
15 | Apache::Session \
16 | Date::Parse \
17 | CGI::Fast \
18 | FCGI \
19 | Excel::Writer::XLSX \
20 | ;do
21 | cpanm --notest $m
22 | if [ $? -ne 0 ]; then exit 1; fi
23 | done
24 |
25 |
--------------------------------------------------------------------------------
/src/setup_tools/mkvardir.sh.in:
--------------------------------------------------------------------------------
1 | #!@SHELL@
2 | # Copyright (C) 2002 Stanislav Sinyagin
3 | #
4 | # This program is free software; you can redistribute it and/or modify
5 | # it under the terms of the GNU General Public License as published by
6 | # the Free Software Foundation; either version 2 of the License, or
7 | # (at your option) any later version.
8 | #
9 | # This program is distributed in the hope that it will be useful,
10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | # GNU General Public License for more details.
13 | #
14 | # You should have received a copy of the GNU General Public License
15 | # along with this program; if not, write to the Free Software
16 | # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
17 |
18 | # Stanislav Sinyagin
19 | #
20 |
21 | dir=$1
22 | user=@var_user@
23 | group=@var_group@
24 | mode=@var_mode@
25 | SHELL=@SHELL@
26 |
27 | if test ! -d $dir; then
28 |
29 | @install_sh@ -d $dir || exit 1
30 |
31 | if test "@enable_varperm@" = "yes"; then
32 | test -z "$mode" || chmod $mode $dir || (rmdir $dir; exit 1)
33 | test -z "$user" || chown $user $dir || (rmdir $dir; exit 1)
34 | test -z "$group" || (chgrp $group $dir && chmod g+s $dir) || \
35 | (rmdir $dir; exit 1)
36 | fi
37 | fi
38 |
39 | exit 0
40 |
41 |
42 |
43 | # Local Variables:
44 | # mode: shell-script
45 | # indent-tabs-mode: nil
46 | # perl-indent-level: 4
47 | # End:
48 |
--------------------------------------------------------------------------------
/src/sup/Makefile.am:
--------------------------------------------------------------------------------
1 |
2 | # Copyright (C) 2002 Stanislav Sinyagin
3 | #
4 | # This program is free software; you can redistribute it and/or modify
5 | # it under the terms of the GNU General Public License as published by
6 | # the Free Software Foundation; either version 2 of the License, or
7 | # (at your option) any later version.
8 | #
9 | # This program is distributed in the hope that it will be useful,
10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | # GNU General Public License for more details.
13 | #
14 | # You should have received a copy of the GNU General Public License
15 | # along with this program; if not, write to the Free Software
16 | # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
17 |
18 | # Stanislav Sinyagin
19 | #
20 |
21 | dtddir = $(supdir)/dtd
22 | dist_dtd_DATA = dtd/snmp-discovery.dtd dtd/torrus-config.dtd
23 |
24 | mibsdir = $(supdir)/mibs
25 | dist_mibs_DATA = mibs/RRDTOOL-SMI.txt \
26 | mibs/TORRUS-MIB.txt
27 |
28 | styldir = $(supdir)/styling
29 | dist_styl_DATA = \
30 | styling/colornames.pl \
31 | styling/rainbow-schema.pl \
32 | styling/torrus-schema.pl \
33 | styling/critical.png \
34 | styling/good.png \
35 | styling/warning.png \
36 | styling/unknown.png
37 |
38 |
39 | webplaindir = @webplaindir@
40 | dist_webplain_DATA = \
41 | webplain/explain-rrdgraph.html \
42 | webplain/torrus.css \
43 | webplain/torrus-printer.css \
44 | webplain/torrus-report.css
45 |
46 |
47 | install-data-local:
48 | $(mkinstalldirs) $(DESTDIR)$(webscriptsdir)
49 |
--------------------------------------------------------------------------------
/src/sup/dtd/snmp-discovery.dtd:
--------------------------------------------------------------------------------
1 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
--------------------------------------------------------------------------------
/src/sup/mibs/RRDTOOL-SMI.txt:
--------------------------------------------------------------------------------
1 | RRDTOOL-SMI DEFINITIONS ::= BEGIN
2 |
3 | IMPORTS
4 | MODULE-IDENTITY,
5 | OBJECT-IDENTITY,
6 | enterprises
7 | FROM SNMPv2-SMI;
8 |
9 | rrdtool MODULE-IDENTITY
10 | LAST-UPDATED "200209150000Z"
11 | ORGANIZATION "RRD Tool"
12 | CONTACT-INFO
13 | " Tobi Oetiker
14 |
15 | Postal: ETZ J97, ETH
16 | 8092 Zurich
17 | Switzerland
18 |
19 | Telephone: +41 1 632-5286
20 | E-mail: oetiker@ee.ethz.ch
21 |
22 | RRD Tool Information:
23 | http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/
24 | "
25 | DESCRIPTION
26 | "The Structure of RRDTool fellow projects"
27 | ::= { enterprises 14697 } -- assigned by IANA
28 |
29 | torrus OBJECT-IDENTITY
30 | STATUS current
31 | DESCRIPTION
32 | "Round Robin Database Framework.
33 | http://torrus.sourceforge.net/
34 | "
35 | ::= { rrdtool 1 }
36 |
37 | -- more to come if necessary.
38 |
39 | END
40 |
--------------------------------------------------------------------------------
/src/sup/styling/ICONS:
--------------------------------------------------------------------------------
1 | Free icons by Aha-Soft Team
2 | http://www.small-icons.com/packs/16x16-free-application-icons.htm
3 |
--------------------------------------------------------------------------------
/src/sup/styling/critical.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ssinyagin/torrus-newfeatures/dd5978a5720ca496dcc4fb611da85bf17a6200c8/src/sup/styling/critical.png
--------------------------------------------------------------------------------
/src/sup/styling/good.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ssinyagin/torrus-newfeatures/dd5978a5720ca496dcc4fb611da85bf17a6200c8/src/sup/styling/good.png
--------------------------------------------------------------------------------
/src/sup/styling/rainbow-schema.pl:
--------------------------------------------------------------------------------
1 | # Example of alternate style
2 | # rougly the traditional colors in a rainbow.
3 | # Shawn Ferry
4 | #
5 | # This file should be referenced using the
6 | # $Torrus::Renderer::stylingProfileOverlay option:
7 | # $Torrus::Renderer::stylingProfileOverlay = "rainbow-schema";
8 |
9 | $Torrus::Renderer::graphStyles{'one'}{'color'} = '##darkred';
10 | $Torrus::Renderer::graphStyles{'two'}{'color'} = '##red';
11 | $Torrus::Renderer::graphStyles{'three'}{'color'} = '##yellow';
12 | $Torrus::Renderer::graphStyles{'four'}{'color'} = '##deeppink';
13 | $Torrus::Renderer::graphStyles{'five'}{'color'} = '##forestgreen';
14 | $Torrus::Renderer::graphStyles{'six'}{'color'} = '##orange';
15 | $Torrus::Renderer::graphStyles{'seven'}{'color'} = '##indigo';
16 | $Torrus::Renderer::graphStyles{'eight'}{'color'} = '##blueviolet';
17 | $Torrus::Renderer::graphStyles{'nine'}{'color'} = '##blue';
18 | $Torrus::Renderer::graphStyles{'ten'}{'color'} = '##deepskyblue';
19 |
20 | # slightly off white background with gold grid lines
21 | push( @Torrus::Renderer::graphExtraArgs,
22 | '--color=CANVAS#DCDCDC', #light grey
23 | '--color=BACK#808080', # darker grey
24 | '--color=GRID#FFD700' ); # gold
25 |
26 | 1;
27 |
--------------------------------------------------------------------------------
/src/sup/styling/unknown.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ssinyagin/torrus-newfeatures/dd5978a5720ca496dcc4fb611da85bf17a6200c8/src/sup/styling/unknown.png
--------------------------------------------------------------------------------
/src/sup/styling/warning.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ssinyagin/torrus-newfeatures/dd5978a5720ca496dcc4fb611da85bf17a6200c8/src/sup/styling/warning.png
--------------------------------------------------------------------------------
/src/systemd/torrus.service.in:
--------------------------------------------------------------------------------
1 | [Unit]
2 | Description=Torrus collector and monitor daemons
3 | Wants=redis-server.service
4 | After=redis-server.service
5 |
6 | [Service]
7 | Type=forking
8 | ExecStart=@pkgbindir@/launcher --cmd=start
9 | ExecStop=@pkgbindir@/launcher --cmd=stop
10 | GuessMainPID=false
11 | TimeoutSec=45s
12 | Restart=no
13 | KillMode=control-group
14 | User=root
15 | Group=daemon
16 |
17 |
18 |
19 | [Install]
20 | WantedBy=multi-user.target
21 |
--------------------------------------------------------------------------------
/src/systemd/torrus.tmpfile.in:
--------------------------------------------------------------------------------
1 | d @piddir@ 0755 @var_user@ @var_group@
2 |
--------------------------------------------------------------------------------
/src/templates/aclexport.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | 1.1
8 |
9 |
10 |
11 | [% FOREACH group = groups() %]
12 |
13 | [% privhash = privileges(group);
14 | FOREACH object = privhash.keys.sort;
15 | FOREACH priv = privhash.$object.keys.sort %]
16 |
17 | [% END;
18 | END;
19 | FOREACH attr = gattrlist(group); %]
20 |
21 | [% END; %]
22 |
23 | [% END %]
24 |
25 |
26 |
27 | [% FOREACH uid = users() %]
28 |
29 | [% FOREACH group = memberof(uid) %]
30 |
31 | [% END;
32 | FOREACH attr = uattrlist(uid);
33 | IF attr != 'uid' %]
34 |
35 | [% END;
36 | END %]
37 |
38 | [% END %]
39 |
40 |
41 |
--------------------------------------------------------------------------------
/src/templates/adminfo.html:
--------------------------------------------------------------------------------
1 | [% PROCESS 'html-incblocks.txt' %]
2 | [% INCLUDE htmlstart
3 | title='Administrative information: ' _ path(token)
4 | contentClass="SingleColumnContent"
5 | noTopMenu=1 %]
6 |
7 | Administrative information
8 | [% INCLUDE treename %]
9 | Path: [% path(token) %]
10 |
11 | [%
12 | FOREACH category = adminfo.keys.sort;
13 | %]
14 | [% category %]
15 |
16 | [%
17 | counter = 0;
18 | evenRow = 0;
19 |
20 | FOREACH pname = adminfo.$category.keys.sort;
21 | counter = counter + 1;
22 | IF counter % 2 == 0;
23 | evenRow = 1;
24 | ELSE;
25 | evenRow = 0;
26 | END;
27 | %]
28 |
29 | [% pname %]
30 | [% adminfo.$category.$pname %]
31 |
32 |
33 | [% END %]
34 |
35 | [%
36 | END %]
37 |
38 | [% INCLUDE htmlend %]
39 |
--------------------------------------------------------------------------------
/src/templates/default-chooser.html:
--------------------------------------------------------------------------------
1 | [% PROCESS 'html-incblocks.txt' %]
2 | [% INCLUDE htmlstart
3 | title="Torrus Top: " _ companyName
4 | contentClass="SingleColumnContent"
5 | noTopMenu=1 %]
6 |
7 | Choose the datasource tree
8 |
9 |
10 | [% counter = 0;
11 | evenRow = 0;
12 |
13 | FOREACH tree = treeNames();
14 |
15 | IF not userAuth or mayDisplayTree(tree);
16 | counter = counter + 1;
17 |
18 | IF counter % 2 == 0;
19 | evenRow = 1;
20 | ELSE;
21 | evenRow = 0;
22 | END;
23 | %]
24 |
25 |
26 |
[% tree %]
27 |
[% xmlnorm(treeDescr(tree)) %]
28 |
29 | [% END %]
30 | [% END %]
31 |
32 |
33 | [% global.contentFinished = 1 %]
34 |
37 | [% INCLUDE htmlend %]
38 |
--------------------------------------------------------------------------------
/src/templates/default-dir.html:
--------------------------------------------------------------------------------
1 | [% PROCESS 'html-incblocks.txt' %]
2 | [% thepath=path(token) %]
3 | [% INCLUDE htmlstart title=thepath printpath=1 %]
4 |
5 | [% xmlnorm(nodeParam(token,'comment')) %]
6 |
7 | [% INCLUDE legend %]
8 |
9 | Directories you can jump to:
10 |
11 | [% hasLeaves = 0; hasSubtrees = 0;
12 | childCounter = 0;
13 | evenRow = 0;
14 | FOREACH child = sortTokens(children(token));
15 | hidden = 0;
16 | IF nodeParam(child,'hidden') == 'yes';
17 | hidden = 1;
18 | END;
19 | comment = nodeParam(child,'comment',1);
20 | IF not hidden or variables.SHOWHIDDEN;
21 | childCounter = childCounter + 1;
22 | evenRow = childCounter % 2 == 0;
23 | IF isLeaf(child);
24 | hasLeaves = hasLeaves + 1;
25 | ELSE;
26 | hasSubtrees = 1;
27 | urlTitle = '';
28 | END;
29 | %]
30 |
31 |
32 | [% IF displayHealth and nodeParam(child,'has-health-status',1) == 'yes' %]
33 |
34 | [% END %]
35 | [% hidden ? '':'' %]
36 | [% nodeName(child) %]
37 | [% hidden ? '':'' %]
38 |
39 | [% IF comment %]
40 |
41 | [% hidden ? '':'' %]
42 | [% xmlnorm(comment) %]
43 | [% hidden ? '':'' %]
44 |
45 | [% END %]
46 |
47 | [% END %]
48 | [% END %]
49 |
50 |
51 |
52 | [% IF hasLeaves > 1;
53 | INCLUDE shortcut url=url(token, 'expanded-dir-html')
54 | text="Expand leaves"
55 | title="Show all leaf graphs in one page";
56 | END;
57 | IF hasSubtrees and nodeParam(token,'show-recursive',1) == 'yes';
58 | INCLUDE shortcut url=url(token, 'recursive-dir-html')
59 | text="Recursive view"
60 | title="Show all subtrees and leaves in one page";
61 |
62 | END;
63 | INCLUDE overviewShortcuts %]
64 |
65 |
66 | [% INCLUDE bottomline %]
67 | [% INCLUDE htmlend %]
68 |
--------------------------------------------------------------------------------
/src/templates/default-helptext.html:
--------------------------------------------------------------------------------
1 | [%# #### We don't need the standard header and footer ####### %]
2 | [% PROCESS 'html-incblocks.txt' %]
3 | [% thepath=path(token) %]
4 |
6 |
7 |
8 |
9 | Help: [%thepath%]
10 |
11 |
17 |
18 |
19 |
20 |
21 |
24 |
25 |
28 |
29 | [% helptext=nodeParam(token, 'help-text', 1); %]
30 |
31 | [% markup( helptext ) %]
32 |
33 |
34 |
37 |
38 |
39 |
40 |
--------------------------------------------------------------------------------
/src/templates/default-login.html:
--------------------------------------------------------------------------------
1 | [% PROCESS 'html-incblocks.txt' %]
2 | [% INCLUDE htmlstart
3 | title="Torrus Login: " _ companyName
4 | contentClass="SingleColumnContent"
5 | noTopMenu=1 %]
6 |
7 | [% IF authFailed %]
8 | Incorrect username or password.
9 | [% END %]
10 |
11 | Please authenticate yourself
12 |
13 |
53 | [% IF lostPasswordURL %]
54 |
57 | [% END %]
58 |
59 | [% INCLUDE htmlend %]
60 |
--------------------------------------------------------------------------------
/src/templates/default-recursivedir.html:
--------------------------------------------------------------------------------
1 | [% PROCESS 'html-incblocks.txt' %]
2 | [% thepath=path(token) %]
3 | [% INCLUDE htmlstart title=thepath printpath=1 %]
4 |
5 | [% xmlnorm(nodeParam(token,'comment')) %]
6 |
7 | [% INCLUDE legend %]
8 |
9 | [%# ########### Recursively print the children ################ %]
10 |
11 | [% BLOCK recursiveChildren;
12 | FOREACH child = sortTokens(children(token));
13 | hidden = 0;
14 | IF nodeParam(child,'hidden') == 'yes';
15 | hidden = 1;
16 | END;
17 | urlTitle = nodeParam(child,'comment',1);
18 | IF not hidden or variables.SHOWHIDDEN; %]
19 |
20 |
21 | [% hidden ? '':'' %]
22 | [% nodeName(child) %]
24 | [% hidden ? '':'' %]
25 |
26 | [% INCLUDE recursiveChildren token=child %]
27 |
28 | [% END;
29 | END;
30 | END %]
31 |
32 |
33 | Directories you can jump to:
34 |
35 | [% INCLUDE recursiveChildren token=token %]
36 |
37 |
38 |
39 | [% INCLUDE shortcut url=url(token) text="Default view"
40 | title="Restore default subtree view";
41 | INCLUDE overviewShortcuts
42 | %]
43 |
44 |
45 | [% INCLUDE bottomline %]
46 | [% INCLUDE htmlend %]
47 |
--------------------------------------------------------------------------------
/src/templates/email-alarm.txt:
--------------------------------------------------------------------------------
1 | Subject: Monitor event: [%event%], [% nickname %]
2 |
3 | This is automatic Torrus event notification.
4 |
5 | Event timestamp: [% timestamp %]
6 |
7 | Tree name: [% tree %]
8 | Node path: [% path %]
9 | Node description: [% npcomment %]
10 | Monitor name: [% monitor %]
11 | Monitor description: [% mcomment %]
12 |
13 | Event type: [% event %]
14 | [% IF event=='escalate' %]Escalation time: [% escalation %] seconds [% END %]
15 |
16 | You can browse the node up-to-date graphs at this URL:
17 | [% url %]
18 |
19 |
20 |
21 | Event types description:
22 | set Alarm condition is met first time
23 | repeat Alarm condition repeats
24 | escalate Alarm is persistent for the escalation period
25 | clear Alarm condition is no longer met
26 | forget Information about this alarm has expired
27 |
28 | Torrus home page and documentation:
29 | http://torrus.sourceforge.net
--------------------------------------------------------------------------------
/src/templates/expanded-dir.html:
--------------------------------------------------------------------------------
1 | [% PROCESS 'html-incblocks.txt' %]
2 | [% INCLUDE setdate %]
3 | [% thepath=path(token) %]
4 | [% INCLUDE htmlstart title=thepath printpath=1 %]
5 |
6 | [% xmlnorm(nodeParam(token,'comment')) %]
7 |
8 | [% INCLUDE variables %]
9 |
10 | [% INCLUDE legend %]
11 |
12 | Leaf nodes:
13 | [%
14 | FOREACH child = sortTokens(children(token));
15 | IF isLeaf(child);
16 | INCLUDE shortgraph
17 | token=child
18 | nodename=nodeName(child)
19 | comment=nodeParam(child,'comment',1);
20 | END;
21 | END;
22 | %]
23 |
24 |
25 | [%
26 | IF global.hwpredict;
27 | IF variables.NOHW;
28 | INCLUDE shortcut url=url(token, view, 'NOHW', '')
29 | text="Enable Holt-Winters"
30 | title="Switch Holt-Winters prediction boundaries";
31 | ELSE;
32 | INCLUDE shortcut url=url(token, view, 'NOHW', 1)
33 | text="Disable Holt-Winters"
34 | title="Switch Holt-Winters prediction boundaries";
35 | END;
36 | END
37 | %]
38 |
39 | [% INCLUDE shortcut url=url(token) text="Default view"
40 | title="Restore default subtree view" %]
41 |
42 |
43 | [% INCLUDE bottomline %]
44 | [% INCLUDE htmlend %]
45 |
--------------------------------------------------------------------------------
/src/templates/globalsearch.html:
--------------------------------------------------------------------------------
1 | [% PROCESS 'html-incblocks.txt' %]
2 | [% global.SearchString = variables.SEARCH; clearVar('SEARCH') %]
3 | [% INCLUDE htmlstart
4 | title='Global Search results: ' _ global.SearchString
5 | contentClass="SingleColumnContent"
6 | noTopMenu=1 %]
7 |
8 |
12 |
13 | Global Search results: [% global.SearchString %]
14 |
15 | [% results = searchResults( global.SearchString );
16 | counter = 0;
17 |
18 | FOREACH entry IN results;
19 |
20 | counter = counter + 1;
21 | IF counter % 2 == 0;
22 | evenRow = 1;
23 | ELSE;
24 | evenRow = 0;
25 | END;
26 |
27 | %]
28 |
29 |
[%entry.tree%]:
30 |
31 | [% entry.path %]
32 | [% FOREACH param IN entry.match.keys %]
33 |
34 | [% param _ ': ' _ xmlnorm(entry.match.$param) %]
35 |
36 | [% END %]
37 |
38 | [% END %]
39 |
40 |
41 |
42 | [% global.contentFinished = 1 %]
43 |
46 |
47 | [% INCLUDE htmlend %]
48 |
--------------------------------------------------------------------------------
/src/templates/overview-subleaves.html:
--------------------------------------------------------------------------------
1 | [% PROCESS 'html-incblocks.txt' %]
2 | [% INCLUDE setdate %]
3 | [% ovs=variables.OVS; clearVar('OVS'); global.bookmarkVars=['OVS',ovs];
4 | thepath=path(token) %]
5 | [% INCLUDE htmlstart title=thepath printpath=1 %]
6 |
7 | [% p = 'overview-page-title-' _ ovs; nodeParam(token, p, 1) %]
8 |
9 | [% INCLUDE variables %]
10 |
11 | [% INCLUDE legend %]
12 |
13 | [%
14 | FOREACH child = sortTokens(children(token));
15 | childpath = path(child);
16 | p = 'overview-subleave-name-' _ ovs;
17 | FOREACH childname = nodeParam(token, p,1).split('\s*,\s*');
18 | ovwpath = childpath _ childname;
19 | IF nodeExists(ovwpath);
20 | ovwtoken = pathToken(ovwpath);
21 |
22 | urltoken = ovwtoken;
23 | p = 'overview-direct-link-' _ ovs;
24 | IF nodeParam(token, p, 1) == 'yes';
25 | urltoken = child;
26 | p = 'overview-direct-link-view-' _ ovs;
27 | urlview = nodeParam(token, p, 1);
28 | END;
29 |
30 | INCLUDE shortgraph
31 | token=ovwtoken
32 | urltoken=urltoken
33 | urlview=urlview
34 | nodename=nodeName(child)
35 | comment=nodeParam(child,'comment',1);
36 | END;
37 | END;
38 | END
39 | %]
40 |
41 |
42 | [% INCLUDE shortcut url=url(token) text="Default view"
43 | title="Restore default subtree view" %]
44 |
45 |
46 | [% INCLUDE bottomline %]
47 | [% INCLUDE htmlend %]
48 |
--------------------------------------------------------------------------------
/src/templates/report-index.html:
--------------------------------------------------------------------------------
1 | [% PROCESS 'html-incblocks.txt' %]
2 | [% INCLUDE htmlstart
3 | title="Torrus Reports"
4 | contentClass="SingleColumnContent"
5 | noTopMenu=1 %]
6 |
7 | Torrus reports
8 |
9 | [% INCLUDE treename %]
10 |
11 |
12 |
13 |
14 | Year |
15 |
16 | [% rowCount = 0;
17 | FOREACH yr = data.keys.sort;
18 | rowCount = rowCount + 1;
19 | IF rowCount % 2 %]
20 |
21 | [% ELSE %]
22 |
23 | [% END %]
24 | [% yr %] |
25 |
26 | [% END %]
27 |
28 |
29 | [% INCLUDE htmlend %]
30 |
--------------------------------------------------------------------------------
/src/templates/report-yearly.html:
--------------------------------------------------------------------------------
1 | [% PROCESS 'html-incblocks.txt' %]
2 | [% INCLUDE htmlstart
3 | title="Torrus Reports: " _ year
4 | contentClass="SingleColumnContent"
5 | noTopMenu=1 %]
6 |
7 |
8 |
9 | [% INCLUDE treename %]
10 |
11 |
12 | Monthly reports
13 |
14 | Month |
15 |
16 | [% rowCount = 0;
17 | FOREACH mth = data.months;
18 | rowCount = rowCount + 1;
19 | IF rowCount % 2 %]
20 |
21 | [% ELSE %]
22 |
23 | [% END %]
24 |
25 | [% monthName(mth) _ ' ' _ year %]
26 | |
27 |
28 | [% END %]
29 |
30 |
31 | [% INCLUDE htmlend %]
32 |
--------------------------------------------------------------------------------
/src/templates/search.html:
--------------------------------------------------------------------------------
1 | [% PROCESS 'html-incblocks.txt' %]
2 | [% global.SearchString = variables.SEARCH; clearVar('SEARCH') %]
3 | [% INCLUDE htmlstart
4 | title='Search results: ' _ global.SearchString
5 | contentClass="SingleColumnContent" %]
6 |
7 | Search results: [% global.SearchString %]
8 | [% INCLUDE treename %]
9 |
10 | [% results = searchResults(global.SearchString);
11 | counter = 0;
12 |
13 | FOREACH entry IN results;
14 |
15 | counter = counter + 1;
16 | IF counter % 2 == 0;
17 | evenRow = 1;
18 | ELSE;
19 | evenRow = 0;
20 | END;
21 | %]
22 |
23 |
24 | [% entry.path %]
25 | [% FOREACH param IN entry.match.keys %]
26 |
27 | [% param _ ': ' _ xmlnorm(entry.match.$param) %]
28 |
29 | [% END %]
30 |
31 | [% END %]
32 |
33 |
34 |
35 | [% global.contentFinished = 1 %]
36 |
41 |
42 | [% INCLUDE htmlend %]
43 |
--------------------------------------------------------------------------------
/src/templates/tset-list.html:
--------------------------------------------------------------------------------
1 | [% PROCESS 'html-incblocks.txt' %]
2 | [% INCLUDE htmlstart
3 | title="Non-empty tokensets"
4 | contentClass="SingleColumnContent" %]
5 |
6 | Tokensets
7 |
8 | [% INCLUDE treename %]
9 |
10 |
11 | [% counter = 0;
12 | evenRow = 0;
13 |
14 | FOREACH tset = tsetList().sort;
15 | sz = tsetMembers(tset).size;
16 | IF sz.length == 0; sz=0; END;
17 |
18 | counter = counter + 1;
19 |
20 | IF counter % 2 == 0;
21 | evenRow = 1;
22 | ELSE;
23 | evenRow = 0;
24 | END;
25 | %]
26 |
32 | [% END %]
33 |
34 |
35 | [% INCLUDE tsetbottomline %]
36 | [% INCLUDE htmlend %]
37 |
--------------------------------------------------------------------------------
/src/xmlconfig/examples/apc-ups.xml:
--------------------------------------------------------------------------------
1 |
2 |
23 |
24 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 | Location: Chen's take-away, Duebendorf;
48 | Contact: Chen;
49 | Power consumer: Microwave oven
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
--------------------------------------------------------------------------------
/src/xmlconfig/examples/ascend.max.xml:
--------------------------------------------------------------------------------
1 |
2 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 | Location: Hardstrasse 235;
40 | Contact: GPS Technik AG, Zuercherstrasse 139, CH-8952 Schlieren
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
--------------------------------------------------------------------------------
/src/xmlconfig/examples/servers.data:
--------------------------------------------------------------------------------
1 | [%#
2 | Example of using tpage for Torrus config generation.
3 | This is an example only. See User Guide for more details.
4 | Author: Christian Schnidrig
5 | Generate the XML configuration with
6 | tpage --define data=servers.data servers.tmpl >servers.xml
7 | %]
8 | [%
9 | servers = [
10 | {
11 | name => 'torrus'
12 | type => 'Linux',
13 | location => 'Binz'
14 | description => 'Torrus (Front-end)'
15 | community => 'blabla',
16 | ram => 3000000000
17 | numCpu => 2,
18 | disks => [
19 | {name => '/', nickName => 'Root'}
20 | {name => '/var/snmpcollector/0', nickName => 'Collector_0'}
21 | {name => '/var/snmpcollector/1', nickName => 'Collector_1'}
22 | {name => '/var/snmpcollector/2', nickName => 'Collector_2'}
23 | {name => '/var/snmpcollector/3', nickName => 'Collector_3'}
24 | {name => '/var/snmpcollector/4', nickName => 'Collector_4'}
25 | ],
26 | nics => [
27 | {name => 'eth0', nickName => 'nic', speed => 100000000}
28 | {name => 'eth1', nickName => 'local', speed => 1000000000}
29 | ]
30 | }
31 | {
32 | name => 'torrus2'
33 | type => 'Linux',
34 | location => 'Binz'
35 | description => 'Torrus (Collector)'
36 | community => 'blabla',
37 | ram => 3000000000
38 | numCpu => 2,
39 | disks => [
40 | {name => '/', nickName => 'Root'}
41 | {name => '/var/snmpcollector/5', nickName => 'Collector_5'}
42 | {name => '/var/snmpcollector/6', nickName => 'Collector_6'}
43 | {name => '/var/snmpcollector/7', nickName => 'Collector_7'}
44 | {name => '/var/snmpcollector/8', nickName => 'Collector_8'}
45 | {name => '/var/snmpcollector/9', nickName => 'Collector_9'}
46 | ],
47 | nics => [
48 | {name => 'eth0', nickName => 'nic', speed => 100000000}
49 | {name => 'eth1', nickName => 'local', speed => 1000000000}
50 | ]
51 | }
52 | {
53 | name => 'someSolarisMachine',
54 | type => 'Solaris',
55 | location => 'Binz',
56 | description => 'Tacacs Server',
57 | community => 'blabla',
58 | ram => 224000000,
59 | numCpu => 1,
60 | disks => [
61 | {name => '/', nickName => 'Root'}
62 | {name => '/log', nickName => 'Log'}
63 | ],
64 | nics => [
65 | {name => 'le0', nickName => 'nic', speed => 100000000}
66 | ]
67 | }
68 | ]
69 | %]
70 |
--------------------------------------------------------------------------------
/src/xmlconfig/site-global.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/src/xmlconfig/vendor/betternetworks.xml:
--------------------------------------------------------------------------------
1 |
2 |
26 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
42 |
44 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
54 |
55 |
56 |
57 |
--------------------------------------------------------------------------------
/src/xmlconfig/vendor/cisco.wlc.xml:
--------------------------------------------------------------------------------
1 |
2 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
50 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
--------------------------------------------------------------------------------