config.pm 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277
  1. package eyelib::config;
  2. #
  3. # Copyright (C) Roman Dmitiriev, rnd@rajven.ru
  4. #
  5. use utf8;
  6. use strict;
  7. use English;
  8. use FindBin '$Bin';
  9. use lib "$Bin";
  10. use base 'Exporter';
  11. use vars qw(@EXPORT @ISA);
  12. use Config::Tiny;
  13. use File::Basename;
  14. use Data::Dumper;
  15. @ISA = qw(Exporter);
  16. @EXPORT = qw(
  17. $HOME_DIR
  18. @FN
  19. $MY_NAME
  20. $SPID
  21. $LOG_DIR
  22. $LOG_COMMON
  23. $LOG
  24. $LOG_ERR
  25. $LOG_DEBUG
  26. $DHCPD_CONF
  27. $BEGIN_STR
  28. $END_STR
  29. $WARN_MSG
  30. $WAIT_TIME
  31. $MIN_SLEEP
  32. $MAX_SLEEP
  33. $admin_email
  34. $sender_email
  35. $send_email
  36. $HOSTNAME
  37. $debug
  38. $log_enable
  39. $log_level
  40. $W_INFO
  41. $W_ERROR
  42. $W_DEBUG
  43. $DBHOST
  44. $DBNAME
  45. $DBUSER
  46. $DBPASS
  47. $domain_auth
  48. $winexe
  49. $fping
  50. $log_owner_user
  51. $log_owner_group
  52. $use_smsd
  53. $smsaero_wait
  54. $smsd_group
  55. $smsd_user
  56. $def_timeout
  57. $parallel_process_count
  58. $save_detail
  59. $add_unknown_user
  60. $router_ip
  61. $dns_server
  62. $dhcp_server
  63. $snmp_default_version
  64. $snmp_default_community
  65. $KB
  66. $office_networks
  67. $hotspot_networks
  68. $all_networks
  69. @office_network_list
  70. @hotspot_network_list
  71. @all_network_list
  72. $dhcp_pool
  73. $history
  74. $history_dhcp
  75. $router_login
  76. $router_password
  77. $router_port
  78. $org_name
  79. $domain_name
  80. $connections_history
  81. $dbh
  82. $urgent_sync
  83. $default_user_ou_id
  84. $default_hotspot_ou_id
  85. $ignore_hotspot_dhcp_log
  86. $ignore_update_dhcp_event
  87. $update_hostname_from_dhcp
  88. @subnets
  89. %subnets_ref
  90. $history_log_day
  91. $history_syslog_day
  92. $history_trafstat_day
  93. $free_networks
  94. $vpn_networks
  95. @free_network_list
  96. @vpn_network_list
  97. %config_ref
  98. %switch_auth
  99. $last_refresh_config
  100. $tftp_dir
  101. $tftp_server
  102. $cpu_count
  103. );
  104. BEGIN
  105. {
  106. our $HOME_DIR = '/opt/Eye/scripts';
  107. my $config_file = $HOME_DIR."/cfg/config";
  108. if (! -e "$config_file") { die "Config $config_file not found!"; }
  109. my $Config = Config::Tiny->new;
  110. $Config = Config::Tiny->read($config_file, 'utf8' );
  111. our %config_ref;
  112. ### current script pathname
  113. our @FN=split("/",$0);
  114. ### script pid file name
  115. $config_ref{my_name}=$FN[-1];
  116. $config_ref{pid_file}="/var/run/".$FN[-1];
  117. $config_ref{log_dir}=$Config->{_}->{log_dir} || '/opt/Eye/scripts/log';
  118. $config_ref{log_common}=$config_ref{log_dir}."/$FN[-1].log";
  119. $config_ref{dhcpd_conf}=$Config->{_}->{dhcpd_conf} || "/etc/dnsmasq.d";
  120. $config_ref{DBHOST} = $Config->{_}->{DBSERVER} || '127.0.0.1';
  121. $config_ref{DBNAME} = $Config->{_}->{DBNAME} || "stat";
  122. $config_ref{DBUSER} = $Config->{_}->{DBUSER} || "rstat";
  123. $config_ref{DBPASS} = $Config->{_}->{DBPASS} || "rstat";
  124. $config_ref{domain_auth}= $Config->{_}->{domain_auth} || 'Administrator%password';
  125. $config_ref{winexe} = $Config->{_}->{winexe} || '/usr/bin/winexe';
  126. $config_ref{fping} = $Config->{_}->{fping} || '/sbin/fping';
  127. #$config_ref{log_owner_user}= $Config->{_}->{user} || 'nagios';
  128. $config_ref{log_owner_user}= $Config->{_}->{user} || 'tcpdump';
  129. #$config_ref{log_owner_group}= $Config->{_}->{group} || 'nagios';
  130. $config_ref{log_owner_group}= $Config->{_}->{group} || 'tcpdump';
  131. $config_ref{nagios_dir}=$Config->{_}->{nagios_dir} || '/etc/nagios4';
  132. $config_ref{nagios_dir}=~s/\/$//;
  133. $config_ref{nagios_cmd}=$Config->{_}->{nagios_cmd} || '/var/spool/nagios/cmd/nagios.cmd';
  134. $config_ref{nagios_event_socket}=$Config->{_}->{nagios_event_socket} || '/var/spool/nagios/hoststate.socket';
  135. $config_ref{encryption_key}=$Config->{_}->{encryption_key} || '!!!CHANGE_ME!!!';
  136. $config_ref{encryption_iv}=$Config->{_}->{encryption_iv} || '123456782345';
  137. our $MY_NAME=$FN[-1];
  138. our $SPID="/var/run/".$FN[-1];
  139. #iptables log
  140. our $LOG_DIR = $Config->{_}->{log_dir} || '/var/log/scripts';
  141. our $LOG_COMMON = "$LOG_DIR/$FN[-1].log";
  142. our $LOG = $LOG_COMMON;
  143. our $LOG_ERR = $LOG_COMMON;
  144. our $LOG_DEBUG = $LOG_COMMON;
  145. our $DHCPD_CONF = $Config->{_}->{dhcpd_conf} || "/etc/dnsmasq.d";
  146. our $BEGIN_STR ="================= Start transaction ========================";
  147. our $END_STR ="================= Stop transaction ========================";
  148. our $WARN_MSG ="# DYNAMIC GENERATED FILE\n# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN\n";
  149. ### timeout for wait remove lock before exit
  150. our $WAIT_TIME =600;
  151. our $MIN_SLEEP =5;
  152. our $MAX_SLEEP =30;
  153. ### mail options
  154. our $admin_email;
  155. our $sender_email;
  156. our $send_email = 0;
  157. my $HOSTNAME1=`hostname`;
  158. chomp($HOSTNAME1);
  159. our $HOSTNAME=$HOSTNAME1;
  160. ### debug
  161. our $debug=1;
  162. our $log_enable = 1;
  163. our $log_level = 2;
  164. our $W_INFO = 0;
  165. our $W_ERROR = 1;
  166. our $W_DEBUG = 2;
  167. our $DBHOST = $Config->{_}->{DBSERVER} || '127.0.0.1';
  168. our $DBNAME = $Config->{_}->{DBNAME} || "stat";
  169. our $DBUSER = $Config->{_}->{DBUSER} || "rstat";
  170. our $DBPASS = $Config->{_}->{DBPASS} || "rstat";
  171. our $domain_auth = $Config->{_}->{domain_auth} || 'Administrator%password';
  172. our $winexe = $Config->{_}->{winexe} || '/usr/bin/winexe';
  173. our $fping = $Config->{_}->{fping} || '/sbin/fping';
  174. our @subnets=();
  175. our $history_log_day;
  176. our $history_syslog_day;
  177. our $history_trafstat_day;
  178. our $log_owner_user = $Config->{_}->{user} || 'nagios';
  179. our $log_owner_group = $Config->{_}->{group} || 'nagios';
  180. ################################################################
  181. our $def_timeout = 90;
  182. our $parallel_process_count = 10;
  183. our $cpu_count = 1;
  184. ################## DB options ##################################
  185. our $save_detail;
  186. our $add_unknown_user;
  187. our $router_ip;
  188. our $dns_server;
  189. our $dhcp_server;
  190. our $snmp_default_version;
  191. our $snmp_default_community;
  192. our $KB;
  193. our $office_networks;
  194. our $hotspot_networks;
  195. our $all_networks;
  196. our @office_network_list;
  197. our @hotspot_network_list;
  198. our @all_network_list;
  199. our $free_networks;
  200. our $vpn_networks;
  201. our @free_network_list;
  202. our @vpn_network_list;
  203. our $dhcp_pool;
  204. our $default_user_ou_id;
  205. our $default_hotspot_ou_id;
  206. our $history;
  207. our $history_dhcp;
  208. our $router_login;
  209. our $router_password;
  210. our $router_port;
  211. our $org_name;
  212. our $domain_name;
  213. our $connections_history;
  214. our $dbh;
  215. our $urgent_sync = 0;
  216. our $tftp_dir=$Config->{_}->{tftp_dir} || '/var/lib/tftpboot';
  217. our $tftp_server=$Config->{_}->{tftp_server} || '';
  218. our $last_refresh_config = time();
  219. our %switch_auth = (
  220. '8'=>{'vendor'=>'Allied Telesis','enable'=>'en','proto'=>'telnet','port'=>'23','login'=> '(login|User Name):','password'=>'Password:','prompt'=>qr/(\010\013){0,5}(([-\w]+|[-\w(config)+])\#|[-\w]+\>)/},
  221. '3'=>{'vendor'=>'Huawei','proto'=>'tssh','port'=>'22','enable'=>'system-view','login'=> 'login as:','password'=>'Password: ','prompt'=>qr/(\<.*\>|\[.*\])/},
  222. '16'=>{'vendor'=>'Cisco','proto'=>'telnet','port'=>'23','enable'=>'en','login'=> 'Username:','password'=>'Password:','prompt'=>qr/([-\w]+|[-\w(config)+])\#/},
  223. '5'=>{'vendor'=>'Raisecom','proto'=>'telnet','port'=>'23','enable'=>'en','login'=> 'Login:','password'=>'Password:','prompt'=>qr/([-\w]+|[-\w(config)+])\#/},
  224. '6'=>{'vendor'=>'SNR','proto'=>'telnet','port'=>'23','login'=> 'login:','password'=>'Password:','prompt'=>qr/([-\w]+|[-\w(config)+])\#/},
  225. '7'=>{'vendor'=>'Dlink','proto'=>'telnet','port'=>'23','login'=> 'UserName:','password'=>'PassWord:','prompt'=>qr/[-\w]+\#$/},
  226. #'15'=>{'vendor'=>'HP','proto'=>'telnet','port'=>'23','enable'=>'system-view','login'=> 'login:','password'=>'Password:','prompt'=>qr/([-\w]+|[-\w(config)+])\#/},
  227. '2'=>{'vendor'=>'Eltex','proto'=>'telnet','port'=>'23','login'=> 'User Name:','password'=>'Password:','prompt'=>qr/([-\w]+|[-\w(config)+])\#/},
  228. '17'=>{'vendor'=>'Maipu','proto'=>'telnet','port'=>'23','login'=> 'login:','password'=>'password:','prompt'=>qr/([-\w]+|[-\w(config)+])\#/},
  229. '4'=>{'vendor'=>'Zyxel','proto'=>'telnet','port'=>'23','login'=> 'User name:','password'=>'Password:','prompt'=>qr/([-\w]+|[-\w(config)+]|[-\w(config-interface)+])\#/},
  230. '38'=>{'vendor'=>'Qtech','proto'=>'telnet','port'=>'23','enable'=>'en','login'=> 'login:','password'=>'Password:','prompt'=>qr/([-\w]+|[-\w(config)+])\#/},
  231. '9'=>{'vendor'=>'Mikrotik','proto'=>'ssh','port'=>'22','login'=> 'login as:','password'=>'password:','prompt'=>qr/\[[-\w]+\@[-\w]+\]\s+\>/},
  232. '39'=>{'vendor'=>'Extreme','proto'=>'telnet','port'=>'23','login'=> 'login:','password'=>'password:','prompt'=>qr/[-\w]+\s\#\s/},
  233. );
  234. mkdir $LOG_DIR unless (-d $LOG_DIR);
  235. my @cpu_list = `grep ^processor /proc/cpuinfo`;
  236. $cpu_count = scalar @cpu_list;
  237. 1;
  238. }