+++ /dev/null
-<?php
-#$GLOBALS['web'] = Db::p('extras')==='0' ? true : false;
-if (empty($DIR_SQLITE)) return;
-#if (empty($DIR_SQLITE) or !file_exists('/opt/www/sem_ui/var/db/semantico.db')) return;
-$GLOBALS['web'] = true;
-if (Db::p('noextra')==='1') $GLOBALS['web'] = false;
-
-$DBQ['_ui'] = array(
- 'title' => 'Semantico UI',
- 'type' => 'sqlite',
- 'host' => (file_exists('/opt/www/sem_ui/var/db/semantico.db') ? '/opt/www/sem_ui/var/db/semantico.db' : "$DIR_SQLITE/semantico.sqlite"),
- 'default_table' => 'node',
-
- 'tables' => array(
-
- 'aws_az' => array(
- 'extras'=> array(
- #'network_idsubnet' => "(SELECT code FROM network WHERE network.id='subnet-' || aws_az.id)",
- 'aws_region_cidr' => "(SELECT cidr FROM aws_region WHERE aws_region.id=idaws_region)",
- 'aws_region_idvpc' => "(SELECT idvpc FROM aws_region WHERE aws_region.id=idaws_region)",
- 'aws_region_sg' => "(SELECT sg FROM aws_region WHERE aws_region.id=idaws_region)",
- 'aws_ec2s' => "(SELECT count(*) FROM aws_ec2 WHERE aws_az.id=idaws_az)",
- 'idnetwork' => "(SELECT id FROM network WHERE network.id='subnet-' || aws_az.id)",
- 'network_subnet' => "(SELECT network FROM network WHERE network.id='subnet-' || aws_az.id)",
- 'ec2' => "CONCAT('--region ',(SELECT id FROM aws_region WHERE aws_region.id=idaws_region),' --subnet-id ',(SELECT id FROM aws_subnet WHERE aws_subnet.aws_azid=aws_az.id),' --security-group-ids ',(SELECT sg FROM aws_region WHERE aws_region.id=idaws_region),' --associate-public-ip-address --key-name semadm')"
- #'subnet' => "(SELECT 'subnet' || aws_az.id)",
- )
- ),
-
- 'aws_region' => array(
- 'extras'=> array(
- 'aws_az' => "(SELECT count(*) FROM aws_az WHERE idaws_region=aws_region.id)",
- 'aws_ec2' => "(SELECT count(*) FROM aws_ec2 JOIN aws_az ON idaws_region=aws_region.id)",
- 'aws_rds' => "(SELECT count(*) FROM aws_rds WHERE idaws_region=aws_region.id)",
- 'aws_elb' => "(SELECT count(*) FROM aws_elb WHERE idaws_region=aws_region.id)",
- ),
- ),
-
- 'vmware' => array(
- 'extras'=> array(
- 'vms' => "(SELECT count(*) FROM vms WHERE vms.idvmware = vmware.id)",
- 'Rack' => "(SELECT idrack FROM rack_node WHERE id=idnode LIMIT 1)",
- 'decommission' => "(SELECT 1 FROM node_decommission nd WHERE nd.id=vmware.id)",
- ),
- ),
-
- 'firewall' => array(
- 'extras'=> array(
- ' Rack' => "(SELECT idrack FROM rack_node WHERE id=idnode LIMIT 1)",
- ),
- ),
-
- 'vms' => array(
- 'extras'=> array(
- 'Rack' => "(SELECT idrack FROM rack_node WHERE idvmware=idnode LIMIT 1)",
- ),
- ),
-
- 'company' => array(
- 'extras'=> array(
- 'nodes' => "(SELECT count(*) FROM node WHERE node.idcompany = company.id)",
- 'peoples' => "(SELECT count(*) FROM people WHERE people.idcompany = company.id)",
- ),
- ),
-
- 'service' => array(
- 'extras'=> array(
- 'products' => '(SELECT GROUP_CONCAT(idproduct,", ") FROM product_service WHERE idservice=id)',
- ),
- ),
-
- 'product' => array(
- 'extras'=> array(
- 'service' => '(SELECT GROUP_CONCAT(idservice,", ") FROM product_service WHERE idproduct=id)',
- #'nodes' => "(SELECT count(*) FROM node WHERE node.id LIKE '___' || product.id || '%')",
- ),
- ),
-
- 'dc' => array(
- #'nodes' => "(SELECT count(*) FROM node WHERE node.id LIKE '%' || dc.id || '_')",
- 'nodes' => "(SELECT count(*) FROM node WHERE node.iddc = dc.id)",
- #'dns-scr' => "(SELECT count(*) FROM dns WHERE dns.src LIKE '%' || dc.id || '%')",
- #'dns-dst' => "(SELECT count(*) FROM dns WHERE dns.dst LIKE '%' || dc.id || '%')",
- ),
-
- 'node' => array(
- 'row_parse_post'=> function(&$r) {
- global $Db;
- $metas = [];
- foreach ($Db->rows(
- #"SELECT name,value FROM fact WHERE name IN ('environment','last_run') AND idnode=".$Db->quote($r['id'])
- #"SELECT * FROM (SELECT 'dell-drac' as 'n',replace(src,'.semantico.net','') as 'v' FROM dns WHERE src LIKE ".$Db->quote($r['id'].'-rac.%')." ORDER BY length(v) LIMIT 1) drac"
- ""
- ."SELECT 'idvmware',idvmware FROM vms WHERE vms.idnode=".$Db->quote($r['id'])
- ." UNION SELECT 'env',value FROM fact WHERE name = 'environment' AND idnode=".$Db->quote($r['id'])
- ." UNION SELECT 'aws_ec2',id FROM aws_ec2 WHERE aws_ec2.idnode=".$Db->quote($r['id'])
- .($GLOBALS['web'] ? " UNION SELECT 'last_backup',CONCAT('<a href=\"#\" onclick=\"alert(''Directories:\\n\\n ',replace(dirs,' ','\\n'),''');return false\">',max(date),'</a>') as v FROM backup WHERE idnode=".$Db->quote($r['id'])." GROUP BY dirs" : "")
- ." UNION SELECT 'last_run',substr(value,1,10) FROM fact WHERE name = 'last_run' AND idnode=".$Db->quote($r['id'])." AND value < ".$Db->quote(date('Y-m-d', strtotime('-3 days')))
- ." UNION SELECT 'rack',CONCAT(idrack,'/',position) FROM rack_node WHERE idnode=".$Db->quote($r['id'])." OR idnode IN (SELECT idvmware FROM vms WHERE vms.idnode=".$Db->quote($r['id']).")"
- ." UNION SELECT 'switch' as n, CONCAT(id,':',port) as v FROM switch_port WHERE switch_port.idnode=".$Db->quote($r['id'])." AND switch_port.port NOT LIKE 'ch%'"
- ,PDO::FETCH_NUM) as $f) { $metas[$f[0]] = $f[1]; }
- if ($metas) {
- $r['metas'] = join("",array_map(function($k,$v){return (string)$v==="" ? "" : "$k=$v\n";},array_keys($metas),$metas));
- }
-
- $r['keyevent'] = $Db->row("SELECT count(*) FROM keyevent WHERE idnode=".$Db->quote($r['id']));
- $r['fact'] = $Db->row("SELECT count(*) FROM fact WHERE idnode=".$Db->quote($r['id']));
-
- if($GLOBALS['web']) $r['graph'] = '<a target="_blank" href="/graphite/?Hosts='.$r['id'].'"><img alt="" src="/images/graphite.png" /></a>';
- #debug($facts);
- },
- /*
- 'extras'=> array(
- # n => v
- 'metas' => preg_replace('/(^\t|\n$)/',' ',"(SELECT GROUP_CONCAT(n || '=' || v,'\n') FROM (
- SELECT * FROM (SELECT 'dell-drac' as 'n',replace(src,'.semantico.net','') as 'v' FROM dns WHERE src LIKE CONCAT(node.id,'-rac.%') ORDER BY length(v) LIMIT 1) drac
- UNION SELECT 'idvmware' as 'n',idvmware as 'v' FROM vms WHERE vms.idnode=node.id
- UNION SELECT 'env' as 'n',value as 'v' FROM fact WHERE fact.idnode=node.id AND name='environment'
- UNION SELECT 'aws_ec2' as 'n',id as 'v' FROM aws_ec2 WHERE aws_ec2.idnode=node.id
- UNION SELECT 'last_backup' as 'n',CONCAT('<a href=\"#\" onclick=\"alert(''Directories:\\n\\n ',replace(dirs,' ','\\n'),''');return false\">',max(date),'</a>') as 'v' FROM backup WHERE idnode=node.id
- UNION SELECT name as 'n', strftime('%Y-%m-%d',value) as 'v' FROM fact WHERE idnode=id AND name='last_run' AND value < '".date('Y-m-d', strtotime('-3 days'))."'
- UNION SELECT 'rack' as'n',CONCAT(idrack,'/',position) as 'v' FROM rack_node WHERE id=idnode OR idnode IN (SELECT idvmware FROM vms WHERE vms.idnode=node.id)
- UNION SELECT 'switch' as 'n', CONCAT(id,':',port) as 'v' FROM switch_port WHERE switch_port.idnode=node.id AND switch_port.port NOT LIKE 'ch%'
- ) t)"),
- 'fact' => "(SELECT count(*) FROM fact WHERE fact.idnode=node.id)",
- 'keyevent' => "(SELECT count(*) FROM keyevent WHERE keyevent.idnode=node.id)",
- #'graph' => '\'<a target="_blank" href="/graphite/?Hosts=\' || id || \'"><img alt="" src="/images/graphite.png" /></a>\'',
- */
-
- ),
-
- 'view_backup' => array(
- 'row_parse_post'=> function(&$r) {
- if($GLOBALS['web']) $r['Detail'] = '<a target="_blank" class="view_backup" href="?table=backup&idnode='.$r['idnode'].'">View</a>';
- },
- ),
-
- 'view_pingdom_per_month' => array(
- 'row_parse_post'=> function(&$r) {
- if($GLOBALS['web']) $r['Checks'] = '<a target="_blank" class="pingdom_check_report" href="?table=pingdom_check_policy&idpingdom_policy='.$r['idpingdom_policy'].'">'.$r['Checks'].'</a>';
- },
- 'extras' => array(
- 'Checks' => '(SELECT count(*) FROM pingdom_check_policy pcp WHERE pcp.idpingdom_policy=view_pingdom_per_month.idpingdom_policy)',
- ),
- ),
-
- 'pingdom_check' => array(
- 'row_parse_post'=> function(&$r) {
- if($GLOBALS['web']) $r['View'] = '<a target="_blank" class="pingdom_check_report" href="https://my.pingdom.com/reports/uptime#check='.$r['id'].'"><img alt="" src="/images/graphite.png" /></a>';
- },
-
- ),
- 'network_ips' => array('sql' => "SELECT id as idnetwork,code,network,iddc,count(*) as count FROM network n JOIN view_ip ON cidr_range(network,ip) WHERE n.network IS NOT NULL AND n.hidden=0 AND EXISTS(SELECT 1 FROM fact WHERE value=ip AND name LIKE 'ipaddress%') GROUP BY n.id"),
- 'view_puppet_error' => array('sql' => "SELECT idnode ,idcompany ,iddc ,value as last_run FROM fact JOIN node ON id=idnode WHERE name='last_run' AND substr(value,1,10) <='".date('Y-m-d', strtotime('-3 days'))."'"),
- 'view_backup_error' => array('sql' => "SELECT idnode,idcompany,iddc,server,max(backup.date) as date FROM backup JOIN node ON id=idnode WHERE NOT EXISTS (SELECT 1 FROM node_decommission nd WHERE nd.id=node.id) GROUP BY idnode HAVING date <= '".date('Y-m-d', strtotime('-2 days'))."' ORDER BY backup.date")
-
- ),
-);
-
-if ($GLOBALS['web']) {
- $DBQ['_ui']['tables']['people'] = $DBQ['_ui']['tables']['user'] = [
- 'extras'=> [
- 'pic' => '\'<img alt="" src="/scripts/gravatar/?email=\' || contact.email || \'" />\'',
- ],
- ];
-}
-
-$DBQ['ui'] = [
- '_import' => ['_ui'],
- 'order' => (preg_match('/^(dev|isp|ist)/',php_uname('n')) ? 1 : null),
- #'order' => 1,
-];
-return;
-$DBQ['ui-pgsql'] = [
- 'host' => 'ui.semantico.net',
- 'type' => 'pgsql',
- 'name' => 'ui',
- 'pdo' => '',
- '_import' => ['_ui','_semadm'],
-];
-$DBQ['ui-mysql'] = [
- 'host' => 'ui.semantico.net',
- 'type' => 'mysql',
- 'name' => 'ui',
- 'pdo' => '',
- 'sql_pre' => [
- 'SET SESSION sql_mode=PIPES_AS_CONCAT',
- ],
- '_import' => ['_ui','_semadm'],
-];
-#bye(realpath(dirname(__FILE__).'/../../lib/php/db.php'));
-#require_once(realpath(dirname(__FILE__).'/../../lib/php/db/types/sqlite.php'));
-#bye($DB_TYPES['sqlite']);
-# NB 24.06.16 if (!empty($DB_TYPES['sqlite']) and 0)
-# NB 24.06.16 $DB_TYPES['sqlite']['sqliteCreateFunction'] = array_merge($DB_TYPES['sqlite']['sqliteCreateFunction'],array(
-# NB 24.06.16 'gethostbyaddr' => function ($value) { return gethostbyaddr($value); },
-# NB 24.06.16 'ip2int' => function ($value) { return ip2long($value); },
-# NB 24.06.16 'int2ip' => function ($value) { return long2ip($value); },
-# NB 24.06.16 'concat' => function ($v1,$v2) { return $v1.$v2; },
-# NB 24.06.16 'cidr_range' => function ( $cidr, $chkip=null ) { return cidr_range( $cidr,$chkip); },
-# NB 24.06.16 ));
-?>