Skip to content
This repository was archived by the owner on Sep 19, 2022. It is now read-only.

Commit 6bff53f

Browse files
Merge pull request #23 from BaranekD/statsAsIdpOrSp
Added option to run the statistics as PROXY/IDP/SP
2 parents 9d3a249 + 7cfed11 commit 6bff53f

File tree

13 files changed

+254
-44
lines changed

13 files changed

+254
-44
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ All notable changes to this project will be documented in this file.
44
## [Unreleased]
55
#### Added
66
- Added configuration file for ESLint
7+
- Module now supports running statistics as IDP/SP
78

89
#### Changed
910
- Using of short array syntax (from array() to [])

config-templates/module_statisticsproxy.php

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,35 @@
88

99
$config = [
1010

11+
/*
12+
* Choose one from the following modes: PROXY, IDP, SP
13+
*/
14+
'mode' => '',
15+
16+
/*
17+
* EntityId of IdP
18+
* REQUIRED FOR IDP MODE
19+
*/
20+
'idpEntityId' => '',
21+
22+
/*
23+
* Name of IdP
24+
* REQUIRED FOR IDP MODE
25+
*/
26+
'idpName' => '',
27+
28+
/*
29+
* EntityId of SP
30+
* REQUIRED FOR SP MODE
31+
*/
32+
'spEntityId' => '',
33+
34+
/*
35+
* Name of SP
36+
* REQUIRED FOR SP MODE
37+
*/
38+
'spName' => '',
39+
1140
/*
1241
* Fill the serverName
1342
*/

lib/Auth/Process/DatabaseCommand.php

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
namespace SimpleSAML\Module\proxystatistics\Auth\Process;
44

5+
use SimpleSAML\Error\Exception;
56
use SimpleSAML\Logger;
67

78
/**
@@ -18,10 +19,26 @@ public static function insertLogin(&$request, &$date)
1819
$statisticsTableName = $databaseConnector->getStatisticsTableName();
1920
$identityProvidersMapTableName = $databaseConnector->getIdentityProvidersMapTableName();
2021
$serviceProvidersMapTableName = $databaseConnector->getServiceProvidersMapTableName();
21-
$idpEntityID = $request['saml:sp:IdP'];
22-
$idpName = $request['Attributes']['sourceIdPName'][0];
23-
$spEntityId = $request['Destination']['entityid'];
24-
$spName = $request['Destination']['name']['en'];
22+
23+
if ($databaseConnector->getMode() === 'IDP') {
24+
$idpName = $databaseConnector->getIdpName();
25+
$idpEntityID = $databaseConnector->getIdpEntityId();
26+
$spEntityId = $request['Destination']['entityid'];
27+
$spName = $request['Destination']['name']['en'];
28+
} elseif ($databaseConnector->getMode() === 'SP') {
29+
$idpName = $request['Attributes']['sourceIdPName'][0];
30+
$idpEntityID = $request['saml:sp:IdP'];
31+
$spEntityId = $databaseConnector->getSpEntityId();
32+
$spName = $databaseConnector->getSpName();
33+
} elseif ($databaseConnector->getMode() === 'PROXY') {
34+
$idpName = $request['Attributes']['sourceIdPName'][0];
35+
$idpEntityID = $request['saml:sp:IdP'];
36+
$spEntityId = $request['Destination']['entityid'];
37+
$spName = $request['Destination']['name']['en'];
38+
} else {
39+
throw new Exception('Unknown mode is set. Mode has to be one of the following: PROXY, IDP, SP.');
40+
}
41+
2542
$year = $date->format('Y');
2643
$month = $date->format('m');
2744
$day = $date->format('d');

lib/Auth/Process/DatabaseConnector.php

Lines changed: 40 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,11 @@ class DatabaseConnector
2424
private $sslCert;
2525
private $sslKey;
2626
private $sslCAPath;
27+
private $mode;
28+
private $idpEntityId;
29+
private $idpName;
30+
private $spEntityId;
31+
private $spName;
2732

2833
const CONFIG_FILE_NAME = 'module_statisticsproxy.php';
2934
const SERVER = 'serverName';
@@ -39,7 +44,11 @@ class DatabaseConnector
3944
const SSL_CERT = 'ssl_cert_path';
4045
const SSL_KEY = 'ssl_key_path';
4146
const SSL_CA_PATH = 'ssl_ca_path';
42-
47+
const MODE = 'mode';
48+
const IDP_ENTITY_ID = 'idpEntityId';
49+
const IDP_NAME = 'idpName';
50+
const SP_ENTITY_ID = 'spEntityId';
51+
const SP_NAME = 'spName';
4352

4453
public function __construct()
4554
{
@@ -57,6 +66,11 @@ public function __construct()
5766
$this->sslCert = $conf->getString(self::SSL_CERT, '');
5867
$this->sslKey = $conf->getString(self::SSL_KEY, '');
5968
$this->sslCAPath = $conf->getString(self::SSL_CA_PATH, '');
69+
$this->mode = $conf->getString(self::MODE, 'PROXY');
70+
$this->idpEntityId = $conf->getString(self::IDP_ENTITY_ID, '');
71+
$this->idpName = $conf->getString(self::IDP_NAME, '');
72+
$this->spEntityId = $conf->getString(self::SP_ENTITY_ID, '');
73+
$this->spName = $conf->getString(self::SP_NAME, '');
6074
}
6175

6276
public function getConnection()
@@ -99,4 +113,29 @@ public function getServiceProvidersMapTableName()
99113
{
100114
return $this->serviceProvidersMapTableName;
101115
}
116+
117+
public function getMode()
118+
{
119+
return $this->mode;
120+
}
121+
122+
public function getIdpEntityId()
123+
{
124+
return $this->idpEntityId;
125+
}
126+
127+
public function getIdpName()
128+
{
129+
return $this->idpName;
130+
}
131+
132+
public function getSpEntityId()
133+
{
134+
return $this->spEntityId;
135+
}
136+
137+
public function getSpName()
138+
{
139+
return $this->spName;
140+
}
102141
}

templates/idpDetail-tpl.php

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -71,16 +71,18 @@
7171
<div id="control_div"></div>
7272
</div>
7373

74-
<h3><?php echo $this->t('{proxystatistics:Proxystatistics:templates/idpDetail_graph_header}'); ?></h3>
75-
<div class="legend">
76-
<div><?php echo $this->t('{proxystatistics:Proxystatistics:templates/idpDetail_graph_legend}'); ?></div>
77-
</div>
78-
<div class="row">
79-
<div class="col-md-8">
80-
<div id="accessedSpsChartDetail" class="pieChart"></div>
74+
<div class="<?php echo $this->data['idpDetailGraphClass'] ?>">
75+
<h3><?php echo $this->t('{proxystatistics:Proxystatistics:templates/idpDetail_graph_header}'); ?></h3>
76+
<div class="legend">
77+
<div><?php echo $this->t('{proxystatistics:Proxystatistics:templates/idpDetail_graph_legend}'); ?></div>
8178
</div>
82-
<div class="col-md-4">
83-
<div id="accessedSpsTable" class="table"></div>
79+
<div class="row">
80+
<div class="col-md-8">
81+
<div id="accessedSpsChartDetail" class="pieChart"></div>
82+
</div>
83+
<div class="col-md-4">
84+
<div id="accessedSpsTable" class="table"></div>
85+
</div>
8486
</div>
8587
</div>
8688
</body>

templates/spDetail-tpl.php

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -71,16 +71,18 @@
7171
<div id="control_div"></div>
7272
</div>
7373

74-
<h3><?php echo $this->t('{proxystatistics:Proxystatistics:templates/spDetail_graph_header}'); ?></h3>
75-
<div class="legend">
76-
<div><?php echo $this->t('{proxystatistics:Proxystatistics:templates/spDetail_graph_legend}'); ?></div>
77-
</div>
78-
<div class="row">
79-
<div class="col-md-8">
80-
<div id="usedIdPsChartDetail" class="pieChart"></div>
74+
<div class="<?php echo $this->data['spDetailGraphClass'] ?>">
75+
<h3><?php echo $this->t('{proxystatistics:Proxystatistics:templates/spDetail_graph_header}'); ?></h3>
76+
<div class="legend">
77+
<div><?php echo $this->t('{proxystatistics:Proxystatistics:templates/spDetail_graph_legend}'); ?></div>
8178
</div>
82-
<div class="col-md-4">
83-
<div id="usedIdPsTable" class="table"></div>
79+
<div class="row">
80+
<div class="col-md-8">
81+
<div id="usedIdPsChartDetail" class="pieChart"></div>
82+
</div>
83+
<div class="col-md-4">
84+
<div id="usedIdPsTable" class="table"></div>
85+
</div>
8486
</div>
8587
</div>
8688
</body>

templates/statistics-tpl.php

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -56,17 +56,20 @@
5656

5757
<div id="tabdiv" data-activetab="<?php echo htmlspecialchars($this->data['tab']);?>">
5858
<ul class="tabset_tabs" width="100px">
59-
<li><a id="tab-1"
60-
href='<?php echo "summary.php?lastDays=" . $this->data['lastDays']; ?>'>
61-
<?php echo $this->t('{proxystatistics:Proxystatistics:summary}'); ?></a>
59+
<li>
60+
<a <?php echo $this->data['tabsAttributes']['PROXY'] ?>>
61+
<?php echo $this->t('{proxystatistics:Proxystatistics:summary}'); ?>
62+
</a>
6263
</li>
63-
<li><a id="tab-2"
64-
href='<?php echo "identityProviders.php?lastDays=" . $this->data['lastDays']; ?>'>
65-
<?php echo $this->t('{proxystatistics:Proxystatistics:templates/statistics-tpl_idpsDetail}'); ?></a>
64+
<li>
65+
<a <?php echo $this->data['tabsAttributes']['IDP'] ?>>
66+
<?php echo $this->t('{proxystatistics:Proxystatistics:templates/statistics-tpl_idpsDetail}'); ?>
67+
</a>
6668
</li>
67-
<li><a id="tab-3"
68-
href='<?php echo "serviceProviders.php?lastDays=" . $this->data['lastDays']; ?>'>
69-
<?php echo $this->t('{proxystatistics:Proxystatistics:templates/statistics-tpl_spsDetail}'); ?></a>
69+
<li>
70+
<a <?php echo $this->data['tabsAttributes']['SP'] ?>>
71+
<?php echo $this->t('{proxystatistics:Proxystatistics:templates/statistics-tpl_spsDetail}'); ?>
72+
</a>
7073
</li>
7174
</ul>
7275
</div>

templates/summary-tpl.php

Lines changed: 26 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -25,22 +25,38 @@
2525
</div>
2626

2727
<div class="row tableMaxHeight">
28-
<div class="col-md-6 graph">
28+
<div class="<?php echo $this->data['summaryGraphs']['identityProviders'] ?>">
2929
<h2><?php echo $this->t('{proxystatistics:Proxystatistics:templates/graphs_id_providers}'); ?></h2>
30-
<div class="legend">
31-
<div id="summaryIdp">
32-
<?php echo $this->t('{proxystatistics:Proxystatistics:templates/summary_idps_info}'); ?>
30+
<div class="row">
31+
<div class="<?php echo $this->data['summaryGraphs']['identityProvidersLegend'] ?>">
32+
<div class="legend">
33+
<div id="summaryIdp">
34+
<?php echo $this->t('{proxystatistics:Proxystatistics:templates/summary_idps_info}'); ?>
35+
</div>
36+
</div>
37+
</div>
38+
</div>
39+
<div class="row">
40+
<div class="<?php echo $this->data['summaryGraphs']['identityProvidersGraph'] ?>">
41+
<div id="idpsChart" class="pieChart chart-idpsChart"></div>
3342
</div>
3443
</div>
35-
<div id="idpsChart" class="pieChart chart-idpsChart"></div>
3644
</div>
37-
<div class="col-md-6">
45+
<div class="<?php echo $this->data['summaryGraphs']['serviceProviders'] ?>">
3846
<h2><?php echo $this->t('{proxystatistics:Proxystatistics:templates/graphs_service_providers}'); ?></h2>
39-
<div class="legend">
40-
<div>
41-
<?php echo $this->t('{proxystatistics:Proxystatistics:templates/summary_sps_info}'); ?>
47+
<div class="row">
48+
<div class="<?php echo $this->data['summaryGraphs']['serviceProvidersLegend'] ?>">
49+
<div class="legend">
50+
<div>
51+
<?php echo $this->t('{proxystatistics:Proxystatistics:templates/summary_sps_info}'); ?>
52+
</div>
53+
</div>
54+
</div>
55+
</div>
56+
<div class="row">
57+
<div class="<?php echo $this->data['summaryGraphs']['serviceProvidersGraph'] ?>">
58+
<div id="spsChart" class="pieChart chart-spsChart"></div>
4259
</div>
4360
</div>
44-
<div id="spsChart" class="pieChart chart-spsChart"></div>
4561
</div>
4662
</div>

www/idpDetail.php

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,15 @@
88
* @author Pavel Vyskočil <[email protected]>
99
*/
1010

11+
const CONFIG_FILE_NAME_STATISTICSPROXY = 'module_statisticsproxy.php';
12+
const MODE = 'mode';
13+
1114
$config = Configuration::getInstance();
1215
$session = Session::getSessionFromRequest();
1316

17+
$configStatisticsproxy = Configuration::getConfig(CONFIG_FILE_NAME_STATISTICSPROXY);
18+
$mode = $configStatisticsproxy->getString(MODE, 'PROXY');
19+
1420
$t = new Template($config, 'proxystatistics:idpDetail-tpl.php');
1521

1622
$t->data['lastDays'] = filter_input(
@@ -20,4 +26,11 @@
2026
['options'=>['default'=>0,'min_range'=>0]]
2127
);
2228
$t->data['entityId'] = filter_input(INPUT_GET, 'entityId', FILTER_SANITIZE_STRING);
29+
30+
if ($mode === 'SP') {
31+
$t->data['idpDetailGraphClass'] = 'hidden';
32+
} else {
33+
$t->data['idpDetailGraphClass'] = '';
34+
}
35+
2336
$t->show();

www/index.php

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,20 +8,51 @@
88
* @author Pavel Vyskočil <[email protected]>
99
*/
1010

11+
const CONFIG_FILE_NAME_STATISTICSPROXY = 'module_statisticsproxy.php';
12+
const MODE = 'mode';
13+
1114
$config = Configuration::getInstance();
1215
$session = Session::getSessionFromRequest();
1316

17+
$configStatisticsproxy = Configuration::getConfig(CONFIG_FILE_NAME_STATISTICSPROXY);
18+
$mode = $configStatisticsproxy->getString(MODE, 'PROXY');
19+
1420
$t = new Template($config, 'proxystatistics:statistics-tpl.php');
15-
$t->data['lastDays'] = filter_input(
21+
22+
$lastDays = filter_input(
1623
INPUT_POST,
1724
'lastDays',
1825
FILTER_VALIDATE_INT,
1926
['options'=>['default'=>0,'min_range'=>0]]
2027
);
28+
29+
$t->data['lastDays'] = $lastDays;
30+
2131
$t->data['tab'] = filter_input(
2232
INPUT_POST,
2333
'tab',
2434
FILTER_VALIDATE_INT,
2535
['options'=>['default'=>0,'min_range'=>1]]
2636
);
37+
38+
if ($mode === 'IDP') {
39+
$t->data['tabsAttributes'] = [
40+
'PROXY' => 'id="tab-1" href="summary.php?lastDays=' . $lastDays . '"',
41+
'IDP' => 'class="hidden" id="tab-2" href="identityProviders.php?lastDays=' . $lastDays . '"',
42+
'SP' => 'id="tab-3" href="serviceProviders.php?lastDays=' . $lastDays . '"',
43+
];
44+
} elseif ($mode === 'SP') {
45+
$t->data['tabsAttributes'] = [
46+
'PROXY' => 'id="tab-1" href="summary.php?lastDays=' . $lastDays . '"',
47+
'IDP' => 'id="tab-2" href="identityProviders.php?lastDays=' . $lastDays . '"',
48+
'SP' => 'class="hidden" id="tab-3" href="serviceProviders.php?lastDays=' . $lastDays . '"',
49+
];
50+
} elseif ($mode === 'PROXY') {
51+
$t->data['tabsAttributes'] = [
52+
'PROXY' => 'id="tab-1" href="summary.php?lastDays=' . $lastDays . '"',
53+
'IDP' => 'id="tab-2" href="identityProviders.php?lastDays=' . $lastDays . '"',
54+
'SP' => 'id="tab-3" href="serviceProviders.php?lastDays=' . $lastDays . '"',
55+
];
56+
}
57+
2758
$t->show();

0 commit comments

Comments
 (0)