├── adminportal ├── favicon.png ├── images │ └── ipsk-logo.gif ├── .htaccess ├── styles │ ├── installer.css │ ├── signin.css │ └── dashboard.css ├── scripts │ └── dashboard.js ├── 404.php ├── 500.php └── logoff.php ├── docimages ├── dashboard.png └── portalview.png ├── .gitignore ├── portals ├── 404 │ ├── ipsk-logo.gif │ └── signin.css ├── .htaccess └── 404.php ├── supportfiles ├── adminportals │ └── modules │ │ ├── additionalmenus.json │ │ ├── sysconfig │ │ ├── delete.inc.php │ │ ├── create.inc.php │ │ ├── advanced.inc.php │ │ ├── portal.inc.php │ │ └── smtp.inc.php │ │ ├── wireless │ │ ├── update.inc.php │ │ ├── create.inc.php │ │ ├── add.inc.php │ │ ├── view.inc.php │ │ ├── delete.inc.php │ │ ├── edit.inc.php │ │ └── wireless.inc.php │ │ ├── internalusers │ │ ├── update.inc.php │ │ ├── updategroups.inc.php │ │ ├── updatepass.inc.php │ │ ├── create.inc.php │ │ ├── delete.inc.php │ │ ├── view.inc.php │ │ └── edit.inc.php │ │ ├── epgroup │ │ ├── create.inc.php │ │ ├── update.inc.php │ │ ├── delete.inc.php │ │ └── epgroup.inc.php │ │ ├── internalgroups │ │ ├── create.inc.php │ │ ├── update.inc.php │ │ ├── delete.inc.php │ │ └── view.inc.php │ │ ├── ldap │ │ ├── create.inc.php │ │ ├── update.inc.php │ │ └── delete.inc.php │ │ ├── portals │ │ ├── create.inc.php │ │ ├── update.inc.php │ │ ├── delete.inc.php │ │ └── portals.inc.php │ │ ├── authz │ │ ├── create.inc.php │ │ ├── delete.inc.php │ │ ├── update.inc.php │ │ └── authz.inc.php │ │ ├── sponsorgroups │ │ └── delete.inc.php │ │ └── endpoints │ │ ├── suspend.inc.php │ │ ├── delete.inc.php │ │ └── activate.inc.php ├── portals │ ├── captiveportal │ │ ├── commonfiles │ │ │ ├── images │ │ │ │ ├── favicon.png │ │ │ │ └── ipsk-logo.gif │ │ │ ├── styles │ │ │ │ ├── signin.css │ │ │ │ └── sponsor.css │ │ │ └── scripts │ │ │ │ └── ipsk-portal-v1.js │ │ └── default │ │ │ ├── logoff.inc.php │ │ │ ├── performcoa.inc.php │ │ │ └── index.inc.php │ └── sponsorportal │ │ ├── commonfiles │ │ ├── images │ │ │ ├── favicon.png │ │ │ └── ipsk-logo.gif │ │ ├── styles │ │ │ ├── signin.css │ │ │ └── sponsor.css │ │ └── scripts │ │ │ └── ipsk-portal-v1.js │ │ └── default │ │ ├── logoff.inc.php │ │ ├── query.inc.php │ │ ├── index.inc.php │ │ ├── suspend.inc.php │ │ ├── activate.inc.php │ │ └── delete.inc.php └── include │ ├── config.sample.php │ └── phpmailer │ └── Exception.php ├── HEADER ├── .github └── ISSUE_TEMPLATE │ ├── feature_request.md │ └── bug_report.md ├── CONTRIBUTING.md ├── schemaupdate-v4.sql ├── CODE_OF_CONDUCT.md ├── schemaupdate-v6.sql └── schemaupdate-v5.sql /adminportal/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CiscoDevNet/iPSK-Manager/HEAD/adminportal/favicon.png -------------------------------------------------------------------------------- /docimages/dashboard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CiscoDevNet/iPSK-Manager/HEAD/docimages/dashboard.png -------------------------------------------------------------------------------- /docimages/portalview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CiscoDevNet/iPSK-Manager/HEAD/docimages/portalview.png -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.log 2 | patches.json 3 | 4 | supportfiles/include/config.php 5 | 6 | Dockerfile 7 | .DS_Store 8 | -------------------------------------------------------------------------------- /portals/404/ipsk-logo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CiscoDevNet/iPSK-Manager/HEAD/portals/404/ipsk-logo.gif -------------------------------------------------------------------------------- /adminportal/images/ipsk-logo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CiscoDevNet/iPSK-Manager/HEAD/adminportal/images/ipsk-logo.gif -------------------------------------------------------------------------------- /supportfiles/adminportals/modules/additionalmenus.json: -------------------------------------------------------------------------------- 1 | {"0":{"id":"menuLogging","module":"logging","data-feather":"flag","menuText":"System Logging"},"menuItems":1,"menuEnabled":0} -------------------------------------------------------------------------------- /supportfiles/portals/captiveportal/commonfiles/images/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CiscoDevNet/iPSK-Manager/HEAD/supportfiles/portals/captiveportal/commonfiles/images/favicon.png -------------------------------------------------------------------------------- /supportfiles/portals/sponsorportal/commonfiles/images/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CiscoDevNet/iPSK-Manager/HEAD/supportfiles/portals/sponsorportal/commonfiles/images/favicon.png -------------------------------------------------------------------------------- /supportfiles/portals/captiveportal/commonfiles/images/ipsk-logo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CiscoDevNet/iPSK-Manager/HEAD/supportfiles/portals/captiveportal/commonfiles/images/ipsk-logo.gif -------------------------------------------------------------------------------- /supportfiles/portals/sponsorportal/commonfiles/images/ipsk-logo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CiscoDevNet/iPSK-Manager/HEAD/supportfiles/portals/sponsorportal/commonfiles/images/ipsk-logo.gif -------------------------------------------------------------------------------- /adminportal/.htaccess: -------------------------------------------------------------------------------- 1 | 2 | Options -Indexes 3 | Options +FollowSymLinks 4 | 5 | ErrorDocument 404 /404.php 6 | 7 | DirectoryIndex index.php 8 | 9 | 10 | AuthType shibboleth 11 | ShibRequestSetting requireSession 1 12 | Require valid-user 13 | 14 | 15 | RedirectMatch 404 ^/ajax/?$ 16 | RedirectMatch 404 ^/scripts/?$ 17 | RedirectMatch 404 ^/images/?$ 18 | RedirectMatch 404 ^/styles/?$ -------------------------------------------------------------------------------- /HEADER: -------------------------------------------------------------------------------- 1 | Copyright 2021 Cisco Systems, Inc. or its affiliates 2 | 3 | Licensed under the Apache License, Version 2.0 (the "License"); 4 | you may not use this file except in compliance with the License. 5 | You may obtain a copy of the License at 6 | 7 | http://www.apache.org/licenses/LICENSE-2.0 8 | 9 | Unless required by applicable law or agreed to in writing, software 10 | distributed under the License is distributed on an "AS IS" BASIS, 11 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | See the License for the specific language governing permissions and 13 | limitations under the License. 14 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature request 3 | about: Suggest an idea for this project 4 | title: '' 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Is your feature request related to a problem? Please describe.** 11 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] 12 | 13 | **Describe the solution you'd like** 14 | A clear and concise description of what you want to happen. 15 | 16 | **Describe alternatives you've considered** 17 | A clear and concise description of any alternative solutions or features you've considered. 18 | 19 | **Additional context** 20 | Add any other context or screenshots about the feature request here. 21 | -------------------------------------------------------------------------------- /portals/.htaccess: -------------------------------------------------------------------------------- 1 | Options -Indexes 2 | Options +FollowSymLinks 3 | 4 | DirectoryIndex index.php 5 | 6 | 7 | AuthType shibboleth 8 | ShibRequestSetting requireSession 1 9 | Require valid-user 10 | 11 | 12 | 13 | 14 | RewriteEngine On 15 | AddDefaultCharset UTF-8 16 | 17 | 18 | SetEnv HTTP_MOD_REWRITE On 19 | 20 | 21 | #RewriteCond %{HTTPS} off 22 | #RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 23 | 24 | RewriteCond %{REQUEST_FILENAME} !-f 25 | RewriteCond %{REQUEST_FILENAME} !-d 26 | #RewriteCond %{REQUEST_FILENAME} (index\.php) 27 | RewriteCond %{REQUEST_FILENAME} !(404\.php) 28 | RewriteCond %{REQUEST_FILENAME} !(favicon\.ico|robots\.txt) 29 | 30 | RewriteRule ^(.*)$ index.php?portal=$1 [L,QSA] 31 | 32 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug report 3 | about: Create a report to help us improve 4 | title: '' 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Describe the bug** 11 | A clear and concise description of what the bug is. 12 | 13 | **To Reproduce** 14 | Steps to reproduce the behavior: 15 | 1. Go to '...' 16 | 2. Click on '....' 17 | 3. Scroll down to '....' 18 | 4. See error 19 | 20 | **Expected behavior** 21 | A clear and concise description of what you expected to happen. 22 | 23 | **Screenshots** 24 | If applicable, add screenshots to help explain your problem. 25 | 26 | **Desktop (please complete the following information):** 27 | - OS: [e.g. iOS] 28 | - Browser [e.g. chrome, safari] 29 | - Version [e.g. 22] 30 | 31 | **Smartphone (please complete the following information):** 32 | - Device: [e.g. iPhone6] 33 | - OS: [e.g. iOS8.1] 34 | - Browser [e.g. stock browser, safari] 35 | - Version [e.g. 22] 36 | 37 | **Additional context** 38 | Add any other context about the problem here. 39 | -------------------------------------------------------------------------------- /adminportal/styles/installer.css: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2021 Cisco Systems, Inc. or its affiliates 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | 17 | html, 18 | body { 19 | height: 100%; 20 | } 21 | 22 | body { 23 | display: -ms-flexbox; 24 | display: flex; 25 | -ms-flex-align: center; 26 | align-items: center; 27 | padding-top: 40px; 28 | padding-bottom: 40px; 29 | background-color: #f5f5f5; 30 | } 31 | 32 | .float-rounded { 33 | border-radius: 25px; 34 | } 35 | 36 | .window-install { 37 | width: 100%; 38 | max-width: 896px; 39 | padding: 15px; 40 | margin: auto; 41 | } -------------------------------------------------------------------------------- /supportfiles/include/config.sample.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /supportfiles/portals/captiveportal/default/logoff.inc.php: -------------------------------------------------------------------------------- 1 | generateLogData(Array("sanitizedInput"=>$sanitizedInput)); 24 | $logMessage = "REQUEST:SUCCESS;ACTION:CAPTIVELOGOFF;REMOTE-IP:".$_SERVER['REMOTE_ADDR'].";USER:".$_SESSION['logonUsername'].";SID:".$_SESSION['logonSID'].";"; 25 | $ipskISEDB->addLogEntry($logMessage, __FILE__, __FUNCTION__, __CLASS__, __METHOD__, __LINE__, $logData); 26 | 27 | $portalId = $_GET['portalId']; 28 | $_SESSION = null; 29 | session_destroy(); 30 | header("Location: index.php?portalId=$portalId"); 31 | ?> -------------------------------------------------------------------------------- /supportfiles/portals/sponsorportal/default/logoff.inc.php: -------------------------------------------------------------------------------- 1 | generateLogData(Array("sanitizedInput"=>$sanitizedInput)); 24 | $logMessage = "REQUEST:SUCCESS;ACTION:SPONSORLOGOFF;REMOTE-IP:".$_SERVER['REMOTE_ADDR'].";USER:".$_SESSION['logonUsername'].";SID:".$_SESSION['logonSID'].";"; 25 | $ipskISEDB->addLogEntry($logMessage, __FILE__, __FUNCTION__, __CLASS__, __METHOD__, __LINE__, $logData); 26 | 27 | $portalId = $_GET['portalId']; 28 | $_SESSION = null; 29 | session_destroy(); 30 | header("Location: index.php?portalId=$portalId"); 31 | ?> -------------------------------------------------------------------------------- /supportfiles/include/phpmailer/Exception.php: -------------------------------------------------------------------------------- 1 | 10 | * @author Jim Jagielski (jimjag) 11 | * @author Andy Prevost (codeworxtech) 12 | * @author Brent R. Matzelle (original founder) 13 | * @copyright 2012 - 2020 Marcus Bointon 14 | * @copyright 2010 - 2012 Jim Jagielski 15 | * @copyright 2004 - 2009 Andy Prevost 16 | * @license https://www.gnu.org/licenses/old-licenses/lgpl-2.1.html GNU Lesser General Public License 17 | * @note This program is distributed in the hope that it will be useful - WITHOUT 18 | * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 19 | * FITNESS FOR A PARTICULAR PURPOSE. 20 | */ 21 | 22 | namespace PHPMailer\PHPMailer; 23 | 24 | /** 25 | * PHPMailer exception handler. 26 | * 27 | * @author Marcus Bointon 28 | */ 29 | class Exception extends \Exception 30 | { 31 | /** 32 | * Prettify error message output. 33 | * 34 | * @return string 35 | */ 36 | public function errorMessage() 37 | { 38 | return '' . htmlspecialchars($this->getMessage(), ENT_COMPAT | ENT_HTML401) . "
\n"; 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /supportfiles/adminportals/modules/sysconfig/delete.inc.php: -------------------------------------------------------------------------------- 1 | deleteHostnameById($sanitizedHostnames, $_SESSION['logonSID']); 27 | 28 | print $hostnameResult; 29 | }elseif( $sanitizedInput['module-action'] == "protocol" && is_array($_POST['id'])){ 30 | $temp = $_POST['id']; 31 | $sanitizedPortalProtocols = filter_var_array($temp,FILTER_VALIDATE_INT); 32 | 33 | $protocolResult = $ipskISEDB->deleteProtocolPortById($sanitizedPortalProtocols, $_SESSION['logonSID']); 34 | 35 | print $protocolResult; 36 | } 37 | 38 | ?> -------------------------------------------------------------------------------- /supportfiles/adminportals/modules/sysconfig/create.inc.php: -------------------------------------------------------------------------------- 1 | addHostname($sanitizedInput['hostname'], $_SESSION['logonSID']); 25 | if($hostnameId){ 26 | print $hostnameId; 27 | }else{ 28 | print false; 29 | } 30 | 31 | }elseif($sanitizedInput['module-action'] == "protocol" && $sanitizedInput['portalPort'] != "" && $sanitizedInput['protocol'] != ""){ 32 | 33 | $protocolPortId = $ipskISEDB->addProtocolPort($sanitizedInput['protocol'], $sanitizedInput['portalPort'], $_SESSION['logonSID']); 34 | if($protocolPortId){ 35 | print $protocolPortId; 36 | }else{ 37 | print false; 38 | } 39 | 40 | }else{ 41 | print false; 42 | } 43 | 44 | ?> -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Guidance on how to contribute 2 | 3 | Contributions to this code are welcome and appreciated. 4 | Please adhere to our [Code of Conduct](./CODE_OF_CONDUCT.md) at all times. 5 | 6 | > All contributions to this code will be released under the terms of the [LICENSE](./LICENSE) of this code. By submitting a pull request or filing a bug, issue, or feature request, you are agreeing to comply with this waiver of copyright interest. Details can be found in our [LICENSE](./LICENSE). 7 | 8 | There are two primary ways to contribute: 9 | 10 | 1. Using the issue tracker 11 | 2. Changing the codebase 12 | 13 | 14 | ## Using the issue tracker 15 | 16 | Use the issue tracker to suggest feature requests, report bugs, and ask questions. This is also a great way to connect with the developers of the project as well as others who are interested in this solution. 17 | 18 | Use the issue tracker to find ways to contribute. Find a bug or a feature, mention in the issue that you will take on that effort, then follow the _Changing the codebase_ guidance below. 19 | 20 | 21 | ## Changing the codebase 22 | 23 | Generally speaking, you should fork this repository, make changes in your own fork, and then submit a pull request. All new code should have associated unit tests (if applicable) that validate implemented features and the presence or lack of defects. 24 | 25 | Additionally, the code should follow any stylistic and architectural guidelines prescribed by the project. In the absence of such guidelines, mimic the styles and patterns in the existing codebase. 26 | -------------------------------------------------------------------------------- /adminportal/styles/signin.css: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2021 Cisco Systems, Inc. or its affiliates 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | 17 | html, 18 | body { 19 | height: 100%; 20 | } 21 | 22 | body { 23 | display: -ms-flexbox; 24 | display: flex; 25 | -ms-flex-align: center; 26 | align-items: center; 27 | padding-top: 40px; 28 | padding-bottom: 40px; 29 | background-color: #f5f5f5; 30 | } 31 | 32 | .float-rounded { 33 | border-radius: 25px; 34 | } 35 | 36 | .form-signin { 37 | width: 100%; 38 | max-width: 380px; 39 | padding: 15px; 40 | margin: auto; 41 | } 42 | .form-signin .checkbox { 43 | font-weight: 400; 44 | } 45 | .form-signin .form-control { 46 | position: relative; 47 | box-sizing: border-box; 48 | height: auto; 49 | padding: 10px; 50 | font-size: 16px; 51 | } 52 | .form-signin .form-control:focus { 53 | z-index: 2; 54 | } 55 | .form-signin input[type="email"] { 56 | margin-bottom: -1px; 57 | border-bottom-right-radius: 0; 58 | border-bottom-left-radius: 0; 59 | } 60 | 61 | .card-footer { 62 | font-size: .875rem; 63 | } 64 | -------------------------------------------------------------------------------- /supportfiles/portals/captiveportal/commonfiles/styles/signin.css: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2021 Cisco Systems, Inc. or its affiliates 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | 16 | AUTHOR(s): Gary Oppel (gaoppel@cisco.com) 17 | Hosuk Won (howon@cisco.com) 18 | CONTRIBUTOR(s): Drew Betz (anbetz@cisco.com) 19 | */ 20 | 21 | 22 | html, 23 | body { 24 | height: 100%; 25 | } 26 | 27 | body { 28 | display: -ms-flexbox; 29 | display: flex; 30 | -ms-flex-align: center; 31 | align-items: center; 32 | padding-top: 40px; 33 | padding-bottom: 40px; 34 | background-color: #f5f5f5; 35 | } 36 | 37 | .float-rounded { 38 | border-radius: 25px; 39 | } 40 | 41 | .form-signin { 42 | width: 100%; 43 | max-width: 380px; 44 | padding: 15px; 45 | margin: auto; 46 | } 47 | .form-signin .checkbox { 48 | font-weight: 400; 49 | } 50 | .form-signin .form-control { 51 | position: relative; 52 | box-sizing: border-box; 53 | height: auto; 54 | padding: 10px; 55 | font-size: 16px; 56 | } 57 | .form-signin .form-control:focus { 58 | z-index: 2; 59 | } 60 | .form-signin input[type="email"] { 61 | margin-bottom: -1px; 62 | border-bottom-right-radius: 0; 63 | border-bottom-left-radius: 0; 64 | } -------------------------------------------------------------------------------- /supportfiles/adminportals/modules/wireless/update.inc.php: -------------------------------------------------------------------------------- 1 | 25 | $.ajax({ 26 | url: "ajax/getmodule.php", 27 | 28 | data: { 29 | module: 'wireless' 30 | }, 31 | type: "POST", 32 | dataType: "html", 33 | success: function (data) { 34 | $('#mainContent').html(data); 35 | }, 36 | error: function (xhr, status) { 37 | $('#mainContent').html("
Error Loading Selection: Verify the installation/configuration and/or contact your system administrator!
"); 38 | }, 39 | complete: function (xhr, status) { 40 | //$('#showresults').slideDown('slow') 41 | } 42 | }); 43 | 44 | HTML; 45 | 46 | if($sanitizedInput['ssidName'] != "" && isset($sanitizedInput['id']) && isset($_POST['id'])){ 47 | 48 | $ipskISEDB->updateWirelessNetwork($sanitizedInput['id'], $sanitizedInput['ssidName'], $sanitizedInput['ssidDescription'], $_SESSION['logonSID']); 49 | 50 | } 51 | 52 | print $htmlbody; 53 | ?> -------------------------------------------------------------------------------- /portals/404/signin.css: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2021 Cisco Systems, Inc. or its affiliates 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | 17 | html, 18 | body { 19 | height: 100%; 20 | } 21 | 22 | body { 23 | display: -ms-flexbox; 24 | display: flex; 25 | -ms-flex-align: center; 26 | align-items: center; 27 | padding-top: 40px; 28 | padding-bottom: 40px; 29 | background-color: #f5f5f5; 30 | } 31 | 32 | .float-rounded { 33 | border-radius: 25px; 34 | } 35 | 36 | .form-signin { 37 | width: 100%; 38 | max-width: 380px; 39 | padding: 15px; 40 | margin: auto; 41 | } 42 | .form-signin .checkbox { 43 | font-weight: 400; 44 | } 45 | .form-signin .form-control { 46 | position: relative; 47 | box-sizing: border-box; 48 | height: auto; 49 | padding: 10px; 50 | font-size: 16px; 51 | } 52 | .form-signin .form-control:focus { 53 | z-index: 2; 54 | } 55 | .form-signin input[type="email"] { 56 | margin-bottom: -1px; 57 | border-bottom-right-radius: 0; 58 | border-bottom-left-radius: 0; 59 | } 60 | .form-signin input[type="password"] { 61 | margin-bottom: 10px; 62 | border-top-left-radius: 0; 63 | border-top-right-radius: 0; 64 | } 65 | 66 | .card-footer { 67 | font-size: .875rem; 68 | } 69 | -------------------------------------------------------------------------------- /adminportal/scripts/dashboard.js: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2021 Cisco Systems, Inc. or its affiliates 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | 17 | 18 | /* globals Chart:false, feather:false */ 19 | (function () { 20 | 'use strict' 21 | 22 | // Graphs 23 | var ctx = document.getElementById('myChart') 24 | // eslint-disable-next-line no-unused-vars 25 | var myChart = new Chart(ctx, { 26 | type: 'line', 27 | data: { 28 | labels: [ 29 | 'Sunday', 30 | 'Monday', 31 | 'Tuesday', 32 | 'Wednesday', 33 | 'Thursday', 34 | 'Friday', 35 | 'Saturday' 36 | ], 37 | datasets: [{ 38 | data: [ 39 | 15339, 40 | 21345, 41 | 18483, 42 | 24003, 43 | 23489, 44 | 24092, 45 | 12034 46 | ], 47 | lineTension: 0, 48 | backgroundColor: 'transparent', 49 | borderColor: '#007bff', 50 | borderWidth: 4, 51 | pointBackgroundColor: '#007bff' 52 | }] 53 | }, 54 | options: { 55 | scales: { 56 | yAxes: [{ 57 | ticks: { 58 | beginAtZero: false 59 | } 60 | }] 61 | }, 62 | legend: { 63 | display: false 64 | } 65 | } 66 | }) 67 | }()) 68 | -------------------------------------------------------------------------------- /supportfiles/adminportals/modules/internalusers/update.inc.php: -------------------------------------------------------------------------------- 1 | 25 | $.ajax({ 26 | url: "ajax/getmodule.php", 27 | 28 | data: { 29 | module: 'internalusers' 30 | }, 31 | type: "POST", 32 | dataType: "html", 33 | success: function (data) { 34 | $('#mainContent').html(data); 35 | }, 36 | error: function (xhr, status) { 37 | $('#mainContent').html("
Error Loading Selection: Verify the installation/configuration and/or contact your system administrator!
"); 38 | }, 39 | complete: function (xhr, status) { 40 | //$('#showresults').slideDown('slow') 41 | } 42 | }); 43 | 44 | HTML; 45 | 46 | if($sanitizedInput['id'] > 1 && $sanitizedInput['userName'] != "" && $sanitizedInput['fullName'] != ""){ 47 | $ipskISEDB->updateInternalUser($sanitizedInput['id'], $sanitizedInput['userName'], $sanitizedInput['fullName'], $sanitizedInput['description'], $sanitizedInput['email'], $_SESSION['logonSID']); 48 | 49 | print $htmlbody; 50 | } 51 | ?> -------------------------------------------------------------------------------- /supportfiles/portals/sponsorportal/commonfiles/styles/signin.css: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2021 Cisco Systems, Inc. or its affiliates 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | 16 | AUTHOR(s): Gary Oppel (gaoppel@cisco.com) 17 | Hosuk Won (howon@cisco.com) 18 | CONTRIBUTOR(s): Drew Betz (anbetz@cisco.com) 19 | */ 20 | 21 | 22 | html, 23 | body { 24 | height: 100%; 25 | } 26 | 27 | body { 28 | display: -ms-flexbox; 29 | display: flex; 30 | -ms-flex-align: center; 31 | align-items: center; 32 | padding-top: 40px; 33 | padding-bottom: 40px; 34 | background-color: #f5f5f5; 35 | } 36 | 37 | .float-rounded { 38 | border-radius: 25px; 39 | } 40 | 41 | .form-signin { 42 | width: 100%; 43 | max-width: 380px; 44 | padding: 15px; 45 | margin: auto; 46 | } 47 | .form-signin .checkbox { 48 | font-weight: 400; 49 | } 50 | .form-signin .form-control { 51 | position: relative; 52 | box-sizing: border-box; 53 | height: auto; 54 | padding: 10px; 55 | font-size: 16px; 56 | } 57 | .form-signin .form-control:focus { 58 | z-index: 2; 59 | } 60 | .form-signin input[type="email"] { 61 | margin-bottom: -1px; 62 | border-bottom-right-radius: 0; 63 | border-bottom-left-radius: 0; 64 | } 65 | 66 | .card-footer { 67 | font-size: .875rem; 68 | } 69 | -------------------------------------------------------------------------------- /supportfiles/adminportals/modules/epgroup/create.inc.php: -------------------------------------------------------------------------------- 1 | 24 | $.ajax({ 25 | url: "ajax/getmodule.php", 26 | 27 | data: { 28 | module: 'epgroup' 29 | }, 30 | type: "POST", 31 | dataType: "html", 32 | success: function (data) { 33 | $('#mainContent').html(data); 34 | }, 35 | error: function (xhr, status) { 36 | $('#mainContent').html("
Error Loading Selection: Verify the installation/configuration and/or contact your system administrator!
"); 37 | }, 38 | complete: function (xhr, status) { 39 | //$('#showresults').slideDown('slow') 40 | } 41 | }); 42 | 43 | HTML; 44 | 45 | 46 | if($sanitizedInput['epGroupName'] != "" && $sanitizedInput['authzTemplate'] != 0 && isset($sanitizedInput['notificationPermission'])){ 47 | $ipskISEDB->addEndpointGroup($sanitizedInput['epGroupName'], $sanitizedInput['epGroupDescription'], $sanitizedInput['authzTemplate'], $sanitizedInput['notificationPermission'], $_SESSION['logonSID']); 48 | print $htmlbody; 49 | } 50 | 51 | ?> 52 | -------------------------------------------------------------------------------- /supportfiles/adminportals/modules/epgroup/update.inc.php: -------------------------------------------------------------------------------- 1 | 25 | $.ajax({ 26 | url: "ajax/getmodule.php", 27 | 28 | data: { 29 | module: 'epgroup' 30 | }, 31 | type: "POST", 32 | dataType: "html", 33 | success: function (data) { 34 | $('#mainContent').html(data); 35 | }, 36 | error: function (xhr, status) { 37 | $('#mainContent').html("
Error Loading Selection: Verify the installation/configuration and/or contact your system administrator!
"); 38 | }, 39 | complete: function (xhr, status) { 40 | //$('#showresults').slideDown('slow') 41 | } 42 | }); 43 | 44 | HTML; 45 | 46 | if($sanitizedInput['id'] != 0 && $sanitizedInput['epGroupName'] != "" && $sanitizedInput['authzTemplate'] != 0 && isset($sanitizedInput['notificationPermission'])){ 47 | $ipskISEDB->updateEndpointGroup($sanitizedInput['id'], $sanitizedInput['epGroupName'], $sanitizedInput['epGroupDescription'], $sanitizedInput['authzTemplate'], $sanitizedInput['notificationPermission'], $_SESSION['logonSID']); 48 | print $htmlbody; 49 | } 50 | 51 | ?> -------------------------------------------------------------------------------- /supportfiles/adminportals/modules/internalusers/updategroups.inc.php: -------------------------------------------------------------------------------- 1 | 25 | $.ajax({ 26 | url: "ajax/getmodule.php", 27 | 28 | data: { 29 | module: 'internalusers' 30 | }, 31 | type: "POST", 32 | dataType: "html", 33 | success: function (data) { 34 | $('#mainContent').html(data); 35 | }, 36 | error: function (xhr, status) { 37 | $('#mainContent').html("
Error Loading Selection: Verify the installation/configuration and/or contact your system administrator!
"); 38 | }, 39 | complete: function (xhr, status) { 40 | //$('#showresults').slideDown('slow') 41 | } 42 | }); 43 | 44 | HTML; 45 | 46 | if(isset($_POST['id']) && isset($_POST['memberof']) && is_array($_POST['memberof'])){ 47 | 48 | $temp = $_POST['memberof']; 49 | $sanitizedInternalGroups = filter_var_array($temp, FILTER_VALIDATE_INT); 50 | $sanitizedId = filter_var($_POST['id'], FILTER_VALIDATE_INT); 51 | 52 | $ipskISEDB->updateInternalUserGroupMapping($sanitizedInternalGroups, $sanitizedId, $_SESSION['logonSID']); 53 | } 54 | 55 | print $htmlbody; 56 | ?> -------------------------------------------------------------------------------- /supportfiles/adminportals/modules/internalusers/updatepass.inc.php: -------------------------------------------------------------------------------- 1 | 25 | $.ajax({ 26 | url: "ajax/getmodule.php", 27 | 28 | data: { 29 | module: 'internalusers' 30 | }, 31 | type: "POST", 32 | dataType: "html", 33 | success: function (data) { 34 | $('#mainContent').html(data); 35 | }, 36 | error: function (xhr, status) { 37 | $('#mainContent').html("
Error Loading Selection: Verify the installation/configuration and/or contact your system administrator!
"); 38 | }, 39 | complete: function (xhr, status) { 40 | //$('#showresults').slideDown('slow') 41 | } 42 | }); 43 | 44 | HTML; 45 | 46 | if($sanitizedInput['id'] > 0 && $sanitizedInput['password'] != "" && $sanitizedInput['confirmpassword'] != ""){ 47 | if($sanitizedInput['password'] == $sanitizedInput['confirmpassword']){ 48 | if(strlen($sanitizedInput['confirmpassword']) > 5){ 49 | 50 | $ipskISEDB->resetUserPassword($sanitizedInput['id'], password_hash($sanitizedInput['password'], PASSWORD_DEFAULT), $_SESSION['logonSID']); 51 | 52 | print $htmlbody; 53 | 54 | } 55 | } 56 | } 57 | ?> -------------------------------------------------------------------------------- /adminportal/404.php: -------------------------------------------------------------------------------- 1 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | iPSK Manager for Cisco ISE 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 |
47 |
48 | 49 |
50 | 51 |
52 |
53 | 54 |
55 | 56 | -------------------------------------------------------------------------------- /adminportal/500.php: -------------------------------------------------------------------------------- 1 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | iPSK Manager for Cisco ISE 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 |
47 |
48 | 49 |
50 | 51 |
52 |
53 | 54 |
55 | 56 | -------------------------------------------------------------------------------- /supportfiles/adminportals/modules/internalgroups/create.inc.php: -------------------------------------------------------------------------------- 1 | 25 | $.ajax({ 26 | url: "ajax/getmodule.php", 27 | 28 | data: { 29 | module: 'internalgroups' 30 | }, 31 | type: "POST", 32 | dataType: "html", 33 | success: function (data) { 34 | $('#mainContent').html(data); 35 | }, 36 | error: function (xhr, status) { 37 | $('#mainContent').html("
Error Loading Selection: Verify the installation/configuration and/or contact your system administrator!
"); 38 | }, 39 | complete: function (xhr, status) { 40 | //$('#showresults').slideDown('slow') 41 | } 42 | }); 43 | 44 | HTML; 45 | 46 | if($sanitizedInput['groupName'] != ""){ 47 | if($sanitizedInput['groupType'] == "1" && $sanitizedInput['groupDn'] != ""){ 48 | $ipskISEDB->addInternalGroup($sanitizedInput['groupName'], $sanitizedInput['groupType'], $sanitizedInput['description'], $sanitizedInput['groupDn'], $sanitizedInput['permission'], $_SESSION['logonSID']); 49 | print $htmlbody; 50 | }else{ 51 | $ipskISEDB->addInternalGroup($sanitizedInput['groupName'], $sanitizedInput['groupType'], $sanitizedInput['description'], "", $sanitizedInput['permission'], $_SESSION['logonSID']); 52 | print $htmlbody; 53 | } 54 | } 55 | ?> -------------------------------------------------------------------------------- /supportfiles/adminportals/modules/internalusers/create.inc.php: -------------------------------------------------------------------------------- 1 | 25 | $.ajax({ 26 | url: "ajax/getmodule.php", 27 | 28 | data: { 29 | module: 'internalusers' 30 | }, 31 | type: "POST", 32 | dataType: "html", 33 | success: function (data) { 34 | $('#mainContent').html(data); 35 | }, 36 | error: function (xhr, status) { 37 | $('#mainContent').html("
Error Loading Selection: Verify the installation/configuration and/or contact your system administrator!
"); 38 | }, 39 | complete: function (xhr, status) { 40 | //$('#showresults').slideDown('slow') 41 | } 42 | }); 43 | 44 | HTML; 45 | 46 | if($sanitizedInput['userName'] != "" && $sanitizedInput['fullName'] != "" && $sanitizedInput['password'] != "" && $sanitizedInput['confirmpassword'] != ""){ 47 | if($sanitizedInput['password'] == $sanitizedInput['confirmpassword']){ 48 | if(strlen($sanitizedInput['confirmpassword']) > 5){ 49 | 50 | $ipskISEDB->addInternalUser($sanitizedInput['userName'], $sanitizedInput['fullName'], $sanitizedInput['description'], $sanitizedInput['email'], password_hash($sanitizedInput['password'], PASSWORD_DEFAULT), $_SESSION['logonSID']); 51 | 52 | print $htmlbody; 53 | 54 | } 55 | } 56 | } 57 | ?> -------------------------------------------------------------------------------- /portals/404.php: -------------------------------------------------------------------------------- 1 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | iPSK Manager for Cisco ISE 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 |
48 |
49 | 50 |
51 | 52 |
53 |
54 | 55 |
56 | 57 | -------------------------------------------------------------------------------- /supportfiles/portals/captiveportal/default/performcoa.inc.php: -------------------------------------------------------------------------------- 1 | getISEMntHostname(); 36 | 37 | //Perform CoA against the MnT persona with the MAC address of the device 38 | $outputData = $ipskISEMNT->invokeSessionCoADisconnectShutdown($mntHostname,$clientMac); 39 | 40 | print $outputData; 41 | }else{ 42 | //LOG::Entry 43 | $logData = $ipskISEDB->generateLogData(Array("clientMac"=>$clientMac), Array("sanitizedInput"=>$sanitizedInput)); 44 | $logMessage = "REQUEST:FAILURE[integration_disabled_or_mac_missing];ACTION:ACTIONPORTAL-COA;CLIENT-MAC:clientMac;MNT-ENABLED:$iseMNTIntegrationAvailable;HOSTNAME:".$_SERVER['SERVER_NAME'].";"; 45 | $ipskISEDB->addLogEntry($logMessage, __FILE__, __FUNCTION__, __CLASS__, __METHOD__, __LINE__, $logData); 46 | } 47 | ?> -------------------------------------------------------------------------------- /supportfiles/adminportals/modules/internalgroups/update.inc.php: -------------------------------------------------------------------------------- 1 | 25 | $.ajax({ 26 | url: "ajax/getmodule.php", 27 | 28 | data: { 29 | module: 'internalgroups' 30 | }, 31 | type: "POST", 32 | dataType: "html", 33 | success: function (data) { 34 | $('#mainContent').html(data); 35 | }, 36 | error: function (xhr, status) { 37 | $('#mainContent').html("
Error Loading Selection: Verify the installation/configuration and/or contact your system administrator!
"); 38 | }, 39 | complete: function (xhr, status) { 40 | //$('#showresults').slideDown('slow') 41 | } 42 | }); 43 | 44 | HTML; 45 | 46 | if($sanitizedInput['groupName'] != "" && $sanitizedInput['id'] != ""){ 47 | if($sanitizedInput['groupType'] == "1" && $sanitizedInput['groupDn'] != ""){ 48 | $ipskISEDB->updateInternalGroup($sanitizedInput['id'], $sanitizedInput['groupName'], $sanitizedInput['groupType'], $sanitizedInput['description'], $sanitizedInput['groupDn'], $sanitizedInput['permission'], $_SESSION['logonSID']); 49 | print $htmlbody; 50 | }else{ 51 | $ipskISEDB->updateInternalGroup($sanitizedInput['id'], $sanitizedInput['groupName'], $sanitizedInput['groupType'], $sanitizedInput['description'], "", $sanitizedInput['permission'], $_SESSION['logonSID']); 52 | print $htmlbody; 53 | } 54 | } 55 | ?> -------------------------------------------------------------------------------- /schemaupdate-v4.sql: -------------------------------------------------------------------------------- 1 | /** 2 | * 3 | * 4 | *Copyright 2021 Cisco Systems, Inc. or its affiliates 5 | * 6 | *Licensed under the Apache License, Version 2.0 (the "License"); 7 | *you may not use this file except in compliance with the License. 8 | *You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | *Unless required by applicable law or agreed to in writing, software 13 | *distributed under the License is distributed on an "AS IS" BASIS, 14 | *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | *See the License for the specific language governing permissions and 16 | *limitations under the License. 17 | */ 18 | 19 | 20 | /* INSTALLATION README ----------------------------------------------------------- 21 | * Replace the following values below with your specific installation information 22 | * Refer to 'DONOTDELETE-iPSKManager-Install.txt' for your environment details 23 | * 24 | * A total of one(1) entry needs updating in this SQL file: 25 | * 26 | * = MySQL iPSK Manager Database Name 27 | * Example: USE `iPSKManager`; 28 | * 29 | *-------------------------------------------------------------------------------- 30 | */ 31 | 32 | SET AUTOCOMMIT = 0; 33 | 34 | /* UPDATE: Replace with the Database Name created when installed*/ 35 | USE ``; 36 | 37 | START TRANSACTION; 38 | 39 | DELIMITER ; 40 | 41 | -- -------------------------------------------------------- 42 | -- 43 | -- Update Identity PSK Manager Database Endpoints Table 44 | -- 45 | ALTER TABLE `endpoints` ADD `lastUpdated` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP AFTER `createdDate`; 46 | 47 | -- -------------------------------------------------------- 48 | -- 49 | -- Update Identity PSK Manager Database LDAP Table 50 | -- 51 | ALTER TABLE `ldapServers` ADD `directoryType` INT(11) NOT NULL AFTER `adSecure`; 52 | 53 | -- -------------------------------------------------------- 54 | -- 55 | -- Update Identity PSK Manager Database Scheme Version 56 | -- 57 | UPDATE `settings` SET `value` = '4' WHERE `page` = 'global' AND `settingClass` = 'db-schema' AND `keyName` = 'version'; 58 | 59 | COMMIT; -------------------------------------------------------------------------------- /supportfiles/adminportals/modules/ldap/create.inc.php: -------------------------------------------------------------------------------- 1 | 25 | $.ajax({ 26 | url: "ajax/getmodule.php", 27 | 28 | data: { 29 | module: 'ldap' 30 | }, 31 | type: "POST", 32 | dataType: "html", 33 | success: function (data) { 34 | $('#mainContent').html(data); 35 | }, 36 | error: function (xhr, status) { 37 | $('#mainContent').html("
Error Loading Selection: Verify the installation/configuration and/or contact your system administrator!
"); 38 | }, 39 | complete: function (xhr, status) { 40 | //$('#showresults').slideDown('slow') 41 | } 42 | }); 43 | 44 | HTML; 45 | 46 | if($sanitizedInput['adConnectionName'] != "" && $sanitizedInput['adServer'] != "" && $sanitizedInput['adDomain'] != "" && $sanitizedInput['adUsername'] != "" && $sanitizedInput['adBaseDN'] != "" && $sanitizedInput['directoryType'] != ""){ 47 | if($sanitizedInput['password'] == $sanitizedInput['confirmpassword']){ 48 | if(strlen($sanitizedInput['confirmpassword']) > 4){ 49 | 50 | $ipskISEDB->addLdapServer($sanitizedInput['adConnectionName'], $sanitizedInput['adServer'], $sanitizedInput['adDomain'], $sanitizedInput['adUsername'], $sanitizedInput['confirmpassword'], $sanitizedInput['adBaseDN'], $sanitizedInput['adSecure'], $sanitizedInput['directoryType'], $_SESSION['logonSID']); 51 | print $htmlbody; 52 | 53 | } 54 | } 55 | } 56 | 57 | ?> -------------------------------------------------------------------------------- /supportfiles/adminportals/modules/portals/create.inc.php: -------------------------------------------------------------------------------- 1 | 25 | $.ajax({ 26 | url: "ajax/getmodule.php", 27 | 28 | data: { 29 | module: 'portals' 30 | }, 31 | type: "POST", 32 | dataType: "html", 33 | success: function (data) { 34 | $('#mainContent').html(data); 35 | }, 36 | error: function (xhr, status) { 37 | $('#mainContent').html("
Error Loading Selection: Verify the installation/configuration and/or contact your system administrator!
"); 38 | }, 39 | complete: function (xhr, status) { 40 | //$('#showresults').slideDown('slow') 41 | } 42 | }); 43 | 44 | HTML; 45 | 46 | if($sanitizedInput['portalName'] != "" && isset($_POST['sponsorGroups']) && isset($_POST['sponsorPortalType'])){ 47 | if(is_array($_POST['sponsorGroups'])){ 48 | 49 | $sponsorPortalId = $ipskISEDB->addSponsorPortal($sanitizedInput['portalName'], $sanitizedInput['description'], $sanitizedInput['sponsorPortalType'], generateGuid(), $sanitizedInput['hostname'], $sanitizedInput['tcpPort'], $sanitizedInput['authDirectory'], $_SESSION['logonSID']); 50 | 51 | $temp = $_POST['sponsorGroups']; 52 | $sanitizedSponsorGroups = filter_var_array($temp,FILTER_VALIDATE_INT); 53 | 54 | $ipskISEDB->addSponsorGroupPortalMapping($sanitizedSponsorGroups, $sponsorPortalId, $_SESSION['logonSID']); 55 | 56 | } 57 | } 58 | 59 | print $htmlbody; 60 | ?> -------------------------------------------------------------------------------- /supportfiles/adminportals/modules/portals/update.inc.php: -------------------------------------------------------------------------------- 1 | 25 | $.ajax({ 26 | url: "ajax/getmodule.php", 27 | 28 | data: { 29 | module: 'portals' 30 | }, 31 | type: "POST", 32 | dataType: "html", 33 | success: function (data) { 34 | $('#mainContent').html(data); 35 | }, 36 | error: function (xhr, status) { 37 | $('#mainContent').html("
Error Loading Selection: Verify the installation/configuration and/or contact your system administrator!
"); 38 | }, 39 | complete: function (xhr, status) { 40 | //$('#showresults').slideDown('slow') 41 | } 42 | }); 43 | 44 | HTML; 45 | 46 | if($sanitizedInput['portalName'] != "" && isset($_POST['sponsorGroups']) && isset($_POST['sponsorPortalType'])){ 47 | if(is_array($_POST['sponsorGroups'])){ 48 | 49 | $ipskISEDB->updateSponsorPortal($sanitizedInput['id'], $sanitizedInput['portalName'], $sanitizedInput['description'], $sanitizedInput['sponsorPortalType'], $sanitizedInput['hostname'], $sanitizedInput['tcpPort'], $sanitizedInput['authDirectory'], $_SESSION['logonSID']); 50 | 51 | $temp = $_POST['sponsorGroups']; 52 | $sanitizedSponsorGroups = filter_var_array($temp,FILTER_VALIDATE_INT); 53 | 54 | $ipskISEDB->updateSponsorGroupPortalMapping($sanitizedSponsorGroups, $sanitizedInput['id'], $_SESSION['logonSID']); 55 | 56 | } 57 | } 58 | 59 | print $htmlbody; 60 | ?> -------------------------------------------------------------------------------- /supportfiles/portals/sponsorportal/commonfiles/styles/sponsor.css: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2021 Cisco Systems, Inc. or its affiliates 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | 16 | AUTHOR(s): Gary Oppel (gaoppel@cisco.com) 17 | Hosuk Won (howon@cisco.com) 18 | CONTRIBUTOR(s): Drew Betz (anbetz@cisco.com) 19 | */ 20 | 21 | 22 | html, 23 | body { 24 | height: 100%; 25 | position: relative; 26 | min-height: 100%; 27 | } 28 | 29 | body { 30 | display: -ms-flexbox; 31 | -ms-flex-align: center; 32 | align-items: center; 33 | padding-top: 40px; 34 | padding-bottom: 40px; 35 | background-color: #f5f5f5; 36 | font-size: .875rem; 37 | } 38 | /*Removed display: flex; */ 39 | 40 | .user-input::placeholder { /* Chrome, Firefox, Opera, Safari 10.1+ */ 41 | color: #bfbfbf; 42 | opacity: 1; /* Firefox */ 43 | } 44 | 45 | .user-input:-ms-input-placeholder { /* Internet Explorer 10-11 */ 46 | color: #bfbfbf; 47 | } 48 | 49 | .user-input::-ms-input-placeholder { /* Microsoft Edge */ 50 | color: #bfbfbf; 51 | } 52 | 53 | .popover { 54 | background: #c6ffb3; 55 | } 56 | 57 | .popover.bottom .arrow:after { 58 | border-bottom-color: #c6ffb3; 59 | } 60 | 61 | .info-option { 62 | color: #bfbfbf; 63 | height: 20px; 64 | width: 20px; 65 | } 66 | 67 | .info-option:hover { 68 | color: #000000; 69 | height: 20px; 70 | width: 20px; 71 | } 72 | 73 | .footer { 74 | position: absolute; 75 | bottom: 0; 76 | left: 0; 77 | width: 100%; 78 | height: 60px; /* Set the fixed height of the footer here */ 79 | line-height: 60px; /* Vertically center the text there */ 80 | background-color: #f5f5f5; 81 | } 82 | 83 | .btn { 84 | --bs-btn-font-size: .875rem; 85 | } -------------------------------------------------------------------------------- /supportfiles/portals/captiveportal/commonfiles/styles/sponsor.css: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2021 Cisco Systems, Inc. or its affiliates 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | 16 | AUTHOR(s): Gary Oppel (gaoppel@cisco.com) 17 | Hosuk Won (howon@cisco.com) 18 | CONTRIBUTOR(s): Drew Betz (anbetz@cisco.com) 19 | */ 20 | 21 | 22 | html, 23 | body { 24 | height: 100%; 25 | position: relative; 26 | min-height: 100%; 27 | } 28 | 29 | body { 30 | display: -ms-flexbox; 31 | -ms-flex-align: center; 32 | align-items: center; 33 | padding-top: 40px; 34 | padding-bottom: 40px; 35 | background-color: #f5f5f5; 36 | font-size: .875rem; 37 | } 38 | /*Removed display: flex; */ 39 | 40 | .user-input::placeholder { /* Chrome, Firefox, Opera, Safari 10.1+ */ 41 | color: #bfbfbf; 42 | opacity: 1; /* Firefox */ 43 | } 44 | 45 | .user-input:-ms-input-placeholder { /* Internet Explorer 10-11 */ 46 | color: #bfbfbf; 47 | } 48 | 49 | .user-input::-ms-input-placeholder { /* Microsoft Edge */ 50 | color: #bfbfbf; 51 | } 52 | 53 | .popover { 54 | background: #c6ffb3; 55 | } 56 | 57 | .popover.bottom .arrow:after { 58 | border-bottom-color: #c6ffb3; 59 | } 60 | 61 | .info-option { 62 | color: #bfbfbf; 63 | height: 20px; 64 | width: 20px; 65 | } 66 | 67 | .info-option:hover { 68 | color: #000000; 69 | height: 20px; 70 | width: 20px; 71 | } 72 | 73 | .footer { 74 | position: absolute; 75 | bottom: 0; 76 | left: 0; 77 | width: 100%; 78 | height: 60px; /* Set the fixed height of the footer here */ 79 | line-height: 60px; /* Vertically center the text there */ 80 | background-color: #f5f5f5; 81 | } 82 | 83 | .error-page { 84 | width: 100%; 85 | max-width: 380px; 86 | } -------------------------------------------------------------------------------- /supportfiles/adminportals/modules/sysconfig/advanced.inc.php: -------------------------------------------------------------------------------- 1 | 23 |
24 |
25 |
26 |
Advanced Platform Settings
27 |
28 |
29 | 30 | 31 |
32 |
33 | 34 | 35 |
36 |
37 | 40 |
41 |
42 |
43 | 44 | HTML; 45 | ?> 46 | -------------------------------------------------------------------------------- /adminportal/logoff.php: -------------------------------------------------------------------------------- 1 | generateLogData(Array("sanitizedInput"=>$sanitizedInput)); 46 | $logMessage = "REQUEST:SUCCESS;ACTION:ADMINLOGOFF;REMOTE-IP:".$_SERVER['REMOTE_ADDR'].";USER:".$_SESSION['logonUsername'].";SID:".$_SESSION['logonSID'].";"; 47 | $ipskISEDB->addLogEntry($logMessage, __FILE__, __FUNCTION__, __CLASS__, __METHOD__, __LINE__, $logData); 48 | 49 | $_SESSION = null; 50 | session_destroy(); 51 | header("Location: ./"); 52 | die(); 53 | }else{ 54 | //LOG::Entry 55 | $logData = $ipskISEDB->generateLogData(Array("sanitizedInput"=>$sanitizedInput)); 56 | $logMessage = "REQUEST:FAILURE[invalid_input];ACTION:ADMINLOGOFF;REMOTE-IP:".$_SERVER['REMOTE_ADDR'].";USER:".$_SESSION['logonUsername'].";SID:".$_SESSION['logonSID'].";"; 57 | $ipskISEDB->addLogEntry($logMessage, __FILE__, __FUNCTION__, __CLASS__, __METHOD__, __LINE__, $logData); 58 | 59 | header("Location: adminportal.php"); 60 | die(); 61 | } 62 | 63 | ?> -------------------------------------------------------------------------------- /supportfiles/adminportals/modules/ldap/update.inc.php: -------------------------------------------------------------------------------- 1 | 25 | $.ajax({ 26 | url: "ajax/getmodule.php", 27 | 28 | data: { 29 | module: 'ldap' 30 | }, 31 | type: "POST", 32 | dataType: "html", 33 | success: function (data) { 34 | $('#mainContent').html(data); 35 | }, 36 | error: function (xhr, status) { 37 | $('#mainContent').html("
Error Loading Selection: Verify the installation/configuration and/or contact your system administrator!
"); 38 | }, 39 | complete: function (xhr, status) { 40 | //$('#showresults').slideDown('slow') 41 | } 42 | }); 43 | 44 | HTML; 45 | 46 | if($sanitizedInput['id'] > 0 && $sanitizedInput['adConnectionName'] != "" && $sanitizedInput['adServer'] != "" && $sanitizedInput['adDomain'] != "" && $sanitizedInput['adUsername'] != "" && $sanitizedInput['adBaseDN'] != "" && $sanitizedInput['directoryType'] != ""){ 47 | if($sanitizedInput['password'] == $sanitizedInput['confirmpassword']){ 48 | if($sanitizedInput['confirmpassword'] == ""){ 49 | $ipskISEDB->updateLdapServer($sanitizedInput['id'], $sanitizedInput['adConnectionName'], $sanitizedInput['adServer'], $sanitizedInput['adDomain'], $sanitizedInput['adUsername'], null, $sanitizedInput['adBaseDN'], $sanitizedInput['adSecure'], $sanitizedInput['directoryType'], $_SESSION['logonSID']); 50 | print $htmlbody; 51 | 52 | }else if(strlen($sanitizedInput['confirmpassword']) > 4){ 53 | 54 | $ipskISEDB->updateLdapServer($sanitizedInput['id'], $sanitizedInput['adConnectionName'], $sanitizedInput['adServer'], $sanitizedInput['adDomain'], $sanitizedInput['adUsername'], $sanitizedInput['confirmpassword'], $sanitizedInput['adBaseDN'], $sanitizedInput['adSecure'], $sanitizedInput['directoryType'], $_SESSION['logonSID']); 55 | print $htmlbody; 56 | 57 | } 58 | } 59 | } 60 | 61 | ?> -------------------------------------------------------------------------------- /supportfiles/adminportals/modules/authz/create.inc.php: -------------------------------------------------------------------------------- 1 | 25 | $.ajax({ 26 | url: "ajax/getmodule.php", 27 | 28 | data: { 29 | module: 'authz' 30 | }, 31 | type: "POST", 32 | dataType: "html", 33 | success: function (data) { 34 | $('#mainContent').html(data); 35 | }, 36 | error: function (xhr, status) { 37 | $('#mainContent').html("
Error Loading Selection: Verify the installation/configuration and/or contact your system administrator!
"); 38 | }, 39 | complete: function (xhr, status) { 40 | //$('#showresults').slideDown('slow') 41 | } 42 | }); 43 | 44 | HTML; 45 | 46 | $failure = false; 47 | 48 | if($sanitizedInput['authzPolicyName'] != "" && $sanitizedInput['termLengthSeconds'] < 157680000 && $sanitizedInput['ciscoAVPairPSK'] != ""){ 49 | if(isset($sanitizedInput['pskLength'])){ 50 | $sanitizedInput['pskLength'] = ($sanitizedInput['pskLength'] == 0) ? 8 : $sanitizedInput['pskLength']; 51 | $sanitizedInput['pskLength'] = ($sanitizedInput['pskLength'] < 8) ? 8 : $sanitizedInput['pskLength']; 52 | $sanitizedInput['pskLength'] = ($sanitizedInput['pskLength'] > 64) ? 64 : $sanitizedInput['pskLength']; 53 | } 54 | 55 | if($sanitizedInput['pskMode'] == 0) { 56 | if(strlen($sanitizedInput['ciscoAVPairPSK']) > 7 && strlen($sanitizedInput['ciscoAVPairPSK']) < 65){ 57 | $psk = $sanitizedInput['ciscoAVPairPSK']; 58 | }else{ 59 | $failure = true; 60 | } 61 | }else{ 62 | if($sanitizedInput['pskType'] == 0){ 63 | $psk = "*devicerandom*"; 64 | }else{ 65 | $psk = "*userrandom*"; 66 | } 67 | } 68 | 69 | if(!isset($sanitizedInput['vlan'])) { 70 | $sanitizedInput['vlan'] = ''; 71 | } 72 | 73 | if(!isset($sanitizedInput['dacl'])) { 74 | $sanitizedInput['dacl'] = ''; 75 | } 76 | 77 | if(!$failure){ 78 | $ipskISEDB->addAuthorizationTemplate($sanitizedInput['authzPolicyName'], $sanitizedInput['authzPolicyDescription'], $psk, $sanitizedInput['termLengthSeconds'], $sanitizedInput['pskLength'], $sanitizedInput['vlan'], $sanitizedInput['dacl'], $_SESSION['logonSID']); 79 | 80 | } 81 | } 82 | 83 | print $htmlbody; 84 | 85 | 86 | ?> -------------------------------------------------------------------------------- /supportfiles/adminportals/modules/wireless/create.inc.php: -------------------------------------------------------------------------------- 1 | 25 | 52 | 72 | HTML; 73 | 74 | 75 | if($sanitizedInput['ssidName'] != ""){ 76 | $ipskISEDB->addWirelessNetwork($sanitizedInput['ssidName'], $sanitizedInput['ssidDescription'], $_SESSION['logonSID']); 77 | print $htmlbody; 78 | } 79 | 80 | 81 | ?> 82 | -------------------------------------------------------------------------------- /supportfiles/portals/sponsorportal/default/query.inc.php: -------------------------------------------------------------------------------- 1 | getEndPointIdentityGroups(); 39 | 40 | if($endpointIdentityGroups){ 41 | $endpointIdentityGroupsArray = json_decode($endpointIdentityGroups,TRUE); 42 | $endpointIdentityGroupsArray = arraySortAlpha($endpointIdentityGroupsArray); 43 | $endpointIdentityGroups = json_encode($endpointIdentityGroupsArray); 44 | 45 | print $endpointIdentityGroups; 46 | } 47 | } 48 | }elseif($sanitizedInput['action'] == "get_endpoint_count"){ 49 | if($iseERSIntegrationAvailable){ 50 | print $ipskISEERS->getEndPointGroupCountbyId($sanitizedInput['groupUuid']); 51 | } 52 | }elseif($sanitizedInput['action'] == "get_random_psk"){ 53 | $authZ = $ipskISEDB->getEndPointAuthorizationPolicy($sanitizedInput['id']); 54 | 55 | //LOG::Entry 56 | $logData = $ipskISEDB->generateLogData(Array("sanitizedInput"=>$sanitizedInput)); 57 | $logMessage = "REQUEST:SUCCESS;GET-DATA-COMMAND:".$sanitizedInput['action'].";"; 58 | $ipskISEDB->addLogEntry($logMessage, __FILE__, __FUNCTION__, __CLASS__, __METHOD__, __LINE__, $logData); 59 | 60 | $psk = $ipskISEDB->generateRandomPassword($authZ['pskLength']); 61 | 62 | $_SESSION['temp']['expires'] = time() + 600; 63 | $_SESSION['temp']['sponsoreditpsk'] = password_hash($psk, PASSWORD_DEFAULT); 64 | 65 | print $psk; 66 | } 67 | }else{ 68 | if($sampleFile == true){ 69 | header('Content-Description: File Transfer'); 70 | header('Content-Type: plain/text'); 71 | header('Content-Disposition: attachment; filename=import_sample.csv'); 72 | header('Content-Transfer-Encoding: text'); 73 | header('Content-Length: '.strlen($sampleCSV)); 74 | echo $sampleCSV; 75 | } 76 | } 77 | ?> -------------------------------------------------------------------------------- /supportfiles/portals/captiveportal/default/index.inc.php: -------------------------------------------------------------------------------- 1 | generateLogData(Array("pageData"=>$pageData), Array("portalSettings"=>$portalSettings)); 27 | $logMessage = "REQUEST:FAILURE[index_error]];ACTION:CAPTIVEPORTAL;CLIENTIP:".$_SERVER['REMOTE_ADDR'].";HOSTNAME:".$_SERVER['SERVER_NAME'].";TCPPORT:".$_SERVER['SERVER_PORT'].";"; 28 | $ipskISEDB->addLogEntry($logMessage, __FILE__, __FUNCTION__, __CLASS__, __METHOD__, __LINE__, $logData); 29 | } 30 | ?> 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | <?php echo $portalSettings['portalName'];?> 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 |
50 |
51 | 52 |
53 |
54 |

55 |

Please Login

56 | 59 |
60 | 61 |
62 | 65 | 72 |
73 | 76 |
77 | 78 | -------------------------------------------------------------------------------- /supportfiles/portals/sponsorportal/default/index.inc.php: -------------------------------------------------------------------------------- 1 | generateLogData(Array("pageData"=>$pageData), Array("portalSettings"=>$portalSettings)); 27 | $logMessage = "REQUEST:FAILURE[index_error]];ACTION:SPONSORPORTAL;CLIENTIP:".$_SERVER['REMOTE_ADDR'].";HOSTNAME:".$_SERVER['SERVER_NAME'].";TCPPORT:".$_SERVER['SERVER_PORT'].";"; 28 | $ipskISEDB->addLogEntry($logMessage, __FILE__, __FUNCTION__, __CLASS__, __METHOD__, __LINE__, $logData); 29 | } 30 | ?> 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | <?php echo $portalSettings['portalName'];?> 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 |
50 |
51 | 52 |
53 |
54 |

55 |

Please Login

56 | 59 |
60 | 61 |
62 | 65 | 72 |
73 | 76 |
77 | 78 | -------------------------------------------------------------------------------- /supportfiles/adminportals/modules/wireless/add.inc.php: -------------------------------------------------------------------------------- 1 | 25 | 52 | 92 | HTML; 93 | 94 | print $htmlbody; 95 | ?> -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Code of Conduct 2 | 3 | ## Our Pledge 4 | 5 | In the interest of fostering an open and welcoming environment, we as 6 | contributors and maintainers pledge to making participation in our project and 7 | our community a harassment-free experience for everyone, regardless of age, body 8 | size, disability, ethnicity, sex characteristics, gender identity and expression, 9 | level of experience, education, socio-economic status, nationality, personal 10 | appearance, race, religion, or sexual identity and orientation. 11 | 12 | ## Our Standards 13 | 14 | Examples of behavior that contributes to creating a positive environment 15 | include: 16 | 17 | * Using welcoming and inclusive language 18 | * Being respectful of differing viewpoints and experiences 19 | * Gracefully accepting constructive criticism 20 | * Focusing on what is best for the community 21 | * Showing empathy towards other community members 22 | 23 | Examples of unacceptable behavior by participants include: 24 | 25 | * The use of sexualized language or imagery and unwelcome sexual attention or 26 | advances 27 | * Trolling, insulting/derogatory comments, and personal or political attacks 28 | * Public or private harassment 29 | * Publishing others' private information, such as a physical or electronic 30 | address, without explicit permission 31 | * Other conduct which could reasonably be considered inappropriate in a 32 | professional setting 33 | 34 | ## Our Responsibilities 35 | 36 | Project maintainers are responsible for clarifying the standards of acceptable 37 | behavior and are expected to take appropriate and fair corrective action in 38 | response to any instances of unacceptable behavior. 39 | 40 | Project maintainers have the right and responsibility to remove, edit, or 41 | reject comments, commits, code, wiki edits, issues, and other contributions 42 | that are not aligned to this Code of Conduct, or to ban temporarily or 43 | permanently any contributor for other behaviors that they deem inappropriate, 44 | threatening, offensive, or harmful. 45 | 46 | ## Scope 47 | 48 | This Code of Conduct applies both within project spaces and in public spaces 49 | when an individual is representing the project or its community. Examples of 50 | representing a project or community include using an official project e-mail 51 | address, posting via an official social media account, or acting as an appointed 52 | representative at an online or offline event. Representation of a project may be 53 | further defined and clarified by project maintainers. 54 | 55 | ## Enforcement 56 | 57 | Instances of abusive, harassing, or otherwise unacceptable behavior may be 58 | reported by contacting the project team at devnet-github-owners@cisco.com. All 59 | complaints will be reviewed and investigated and will result in a response that 60 | is deemed necessary and appropriate to the circumstances. The project team is 61 | obligated to maintain confidentiality with regard to the reporter of an incident. 62 | Further details of specific enforcement policies may be posted separately. 63 | 64 | Project maintainers who do not follow or enforce the Code of Conduct in good 65 | faith may face temporary or permanent repercussions as determined by other 66 | members of the project's leadership. 67 | 68 | ## Attribution 69 | 70 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, 71 | available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html 72 | 73 | [homepage]: https://www.contributor-covenant.org 74 | 75 | For answers to common questions about this code of conduct, see 76 | https://www.contributor-covenant.org/faq 77 | -------------------------------------------------------------------------------- /supportfiles/adminportals/modules/sysconfig/portal.inc.php: -------------------------------------------------------------------------------- 1 | 23 |
24 |
25 |
26 |
Portal Hostnames
27 |
28 |
29 | 30 | 33 |
34 |
35 | 36 |
37 | 38 |
39 |
40 | 41 |
42 | 46 |
47 |
48 |
49 |
50 |
Portal Protocols & Port Settings
51 |
52 |
53 | 54 | 57 |
58 |
59 |
60 | 61 | 65 |
66 |
67 | 68 | 70 |
71 |
72 |
73 | 77 |
78 |
79 |
80 | 81 | HTML; 82 | ?> 83 | -------------------------------------------------------------------------------- /supportfiles/adminportals/modules/wireless/view.inc.php: -------------------------------------------------------------------------------- 1 | 0){ 26 | 27 | $wirelessNetwork = $ipskISEDB->getWirelessNetworkById($id); 28 | 29 | if($wirelessNetwork){ 30 | 31 | $wirelessNetwork['createdBy'] = $ipskISEDB->getUserPrincipalNameFromCache($wirelessNetwork['createdBy']); 32 | 33 | $wirelessNetwork['createdDate'] = date($globalDateOutputFormat, strtotime($wirelessNetwork['createdDate'])); 34 | 35 | $htmlbody = << 37 | 70 | 89 | HTML; 90 | }else{ 91 | $htmlbody = ""; 92 | } 93 | 94 | print $htmlbody; 95 | } 96 | ?> -------------------------------------------------------------------------------- /supportfiles/adminportals/modules/ldap/delete.inc.php: -------------------------------------------------------------------------------- 1 | deleteLdapServerById($sanitizedInput['id']); 25 | 26 | print << 28 | $.ajax({ 29 | url: "ajax/getmodule.php", 30 | 31 | data: { 32 | module: 'ldap' 33 | }, 34 | type: "POST", 35 | dataType: "html", 36 | success: function (data) { 37 | $('#mainContent').html(data); 38 | }, 39 | error: function (xhr, status) { 40 | $('#mainContent').html("
Error Loading Selection: Verify the installation/configuration and/or contact your system administrator!
"); 41 | }, 42 | complete: function (xhr, status) { 43 | //$('#showresults').slideDown('slow') 44 | } 45 | }); 46 | 47 | HTML; 48 | }else{ 49 | print << 51 | 70 | 105 | HTML; 106 | 107 | } 108 | ?> -------------------------------------------------------------------------------- /supportfiles/adminportals/modules/portals/delete.inc.php: -------------------------------------------------------------------------------- 1 | deleteSponsorPortalById($sanitizedInput['id']); 25 | 26 | print << 28 | $.ajax({ 29 | url: "ajax/getmodule.php", 30 | 31 | data: { 32 | module: 'portals' 33 | }, 34 | type: "POST", 35 | dataType: "html", 36 | success: function (data) { 37 | $('#mainContent').html(data); 38 | }, 39 | error: function (xhr, status) { 40 | $('#mainContent').html("
Error Loading Selection: Verify the installation/configuration and/or contact your system administrator!
"); 41 | }, 42 | complete: function (xhr, status) { 43 | //$('#showresults').slideDown('slow') 44 | } 45 | }); 46 | 47 | HTML; 48 | }else{ 49 | print << 51 | 70 | 105 | HTML; 106 | 107 | } 108 | ?> -------------------------------------------------------------------------------- /supportfiles/adminportals/modules/authz/delete.inc.php: -------------------------------------------------------------------------------- 1 | deleteAuthTemplateById($sanitizedInput['id']); 25 | 26 | print << 28 | $.ajax({ 29 | url: "ajax/getmodule.php", 30 | 31 | data: { 32 | module: 'authz', 33 | test: 'Test' 34 | }, 35 | type: "POST", 36 | dataType: "html", 37 | success: function (data) { 38 | $('#mainContent').html(data); 39 | }, 40 | error: function (xhr, status) { 41 | $('#mainContent').html("
Error Loading Selection: Verify the installation/configuration and/or contact your system administrator!
"); 42 | }, 43 | complete: function (xhr, status) { 44 | //$('#showresults').slideDown('slow') 45 | } 46 | }); 47 | 48 | HTML; 49 | }else{ 50 | print << 52 | 71 | 105 | HTML; 106 | 107 | } 108 | ?> -------------------------------------------------------------------------------- /supportfiles/adminportals/modules/wireless/delete.inc.php: -------------------------------------------------------------------------------- 1 | deleteWirelessNetworkById($sanitizedInput['id']); 25 | 26 | print << 28 | $.ajax({ 29 | url: "ajax/getmodule.php", 30 | 31 | data: { 32 | module: 'wireless' 33 | }, 34 | type: "POST", 35 | dataType: "html", 36 | success: function (data) { 37 | $('#mainContent').html(data); 38 | }, 39 | error: function (xhr, status) { 40 | $('#mainContent').html("
Error Loading Selection: Verify the installation/configuration and/or contact your system administrator!
"); 41 | }, 42 | complete: function (xhr, status) { 43 | //$('#showresults').slideDown('slow') 44 | } 45 | }); 46 | 47 | HTML; 48 | }else{ 49 | print << 51 | 70 | 105 | HTML; 106 | 107 | } 108 | ?> -------------------------------------------------------------------------------- /supportfiles/portals/sponsorportal/default/suspend.inc.php: -------------------------------------------------------------------------------- 1 | window.location = \"index.php?portalId=$portalId\";"; 26 | die(); 27 | } 28 | 29 | if(is_numeric($sanitizedInput['id']) && $sanitizedInput['id'] != 0 && $sanitizedInput['confirmaction']){ 30 | $endpointPermissions = $ipskISEDB->getEndPointAssociationPermissions($sanitizedInput['id'],$_SESSION['authorizationGroups'], $_SESSION['portalSettings']['id']); 31 | 32 | if($endpointPermissions){ 33 | if($endpointPermissions[0]['advancedPermissions'] & 16){ 34 | $endPointAssociation = $ipskISEDB->getEndPointAssociationById($sanitizedInput['id']); 35 | $ipskISEDB->suspendEndpointAssociationbyId($endPointAssociation['endpointId']); 36 | 37 | //LOG::Entry 38 | $logData = $ipskISEDB->generateLogData(Array("sanitizedInput"=>$sanitizedInput)); 39 | $logMessage = "REQUEST:SUCCESS;ACTION:SPONSORSUSPEND;METHOD:SUSPEND-ENDPOINT;MAC:".$sanitizedInput['macAddress'].";REMOTE-IP:".$_SERVER['REMOTE_ADDR'].";USERNAME:".$_SESSION['logonUsername'].";SID:".$_SESSION['logonSID'].";"; 40 | $ipskISEDB->addLogEntry($logMessage, __FILE__, __FUNCTION__, __CLASS__, __METHOD__, __LINE__, $logData); 41 | 42 | print << 44 | window.location = "manage.php?portalId=$portalId"; 45 | 46 | HTML; 47 | } 48 | } 49 | }else{ 50 | print << 52 | 71 | 97 | HTML; 98 | 99 | } 100 | ?> -------------------------------------------------------------------------------- /supportfiles/adminportals/modules/epgroup/delete.inc.php: -------------------------------------------------------------------------------- 1 | deleteEndpointGroupById($sanitizedInput['id']); 25 | 26 | print << 28 | $.ajax({ 29 | url: "ajax/getmodule.php", 30 | 31 | data: { 32 | module: 'epgroup' 33 | }, 34 | type: "POST", 35 | dataType: "html", 36 | success: function (data) { 37 | $('#mainContent').html(data); 38 | }, 39 | error: function (xhr, status) { 40 | $('#mainContent').html("
Error Loading Selection: Verify the installation/configuration and/or contact your system administrator!
"); 41 | }, 42 | complete: function (xhr, status) { 43 | //$('#showresults').slideDown('slow') 44 | } 45 | }); 46 | 47 | HTML; 48 | }else{ 49 | print << 51 | 70 | 106 | HTML; 107 | 108 | } 109 | ?> -------------------------------------------------------------------------------- /supportfiles/portals/sponsorportal/default/activate.inc.php: -------------------------------------------------------------------------------- 1 | window.location = \"index.php?portalId=$portalId\";"; 26 | die(); 27 | } 28 | 29 | if(is_numeric($sanitizedInput['id']) && $sanitizedInput['id'] != 0 && $sanitizedInput['confirmaction']){ 30 | $endpointPermissions = $ipskISEDB->getEndPointAssociationPermissions($sanitizedInput['id'],$_SESSION['authorizationGroups'], $_SESSION['portalSettings']['id']); 31 | 32 | if($endpointPermissions){ 33 | if($endpointPermissions[0]['advancedPermissions'] & 32){ 34 | 35 | $endPointAssociation = $ipskISEDB->getEndPointAssociationById($sanitizedInput['id']); 36 | $ipskISEDB->activateEndpointAssociationbyId($endPointAssociation['endpointId']); 37 | 38 | //LOG::Entry 39 | $logData = $ipskISEDB->generateLogData(Array("sanitizedInput"=>$sanitizedInput)); 40 | $logMessage = "REQUEST:SUCCESS;ACTION:SPONSORACTIVATE;METHOD:ACTIVATE-ENDPOINT;MAC:".$sanitizedInput['macAddress'].";REMOTE-IP:".$_SERVER['REMOTE_ADDR'].";USERNAME:".$_SESSION['logonUsername'].";SID:".$_SESSION['logonSID'].";"; 41 | $ipskISEDB->addLogEntry($logMessage, __FILE__, __FUNCTION__, __CLASS__, __METHOD__, __LINE__, $logData); 42 | 43 | print << 45 | window.location = "manage.php?portalId=$portalId"; 46 | 47 | HTML; 48 | } 49 | } 50 | }else{ 51 | print << 53 | 72 | 98 | HTML; 99 | 100 | } 101 | ?> -------------------------------------------------------------------------------- /supportfiles/adminportals/modules/sponsorgroups/delete.inc.php: -------------------------------------------------------------------------------- 1 | deleteSponsorGroupById($sanitizedInput['id']); 25 | 26 | print << 28 | $.ajax({ 29 | url: "ajax/getmodule.php", 30 | 31 | data: { 32 | module: 'sponsorgroups' 33 | }, 34 | type: "POST", 35 | dataType: "html", 36 | success: function (data) { 37 | $('#mainContent').html(data); 38 | }, 39 | error: function (xhr, status) { 40 | $('#mainContent').html("
Error Loading Selection: Verify the installation/configuration and/or contact your system administrator!
"); 41 | }, 42 | complete: function (xhr, status) { 43 | //$('#showresults').slideDown('slow') 44 | } 45 | }); 46 | 47 | HTML; 48 | }else{ 49 | print << 51 | 70 | 106 | HTML; 107 | 108 | } 109 | ?> -------------------------------------------------------------------------------- /supportfiles/portals/sponsorportal/default/delete.inc.php: -------------------------------------------------------------------------------- 1 | window.location = \"index.php?portalId=$portalId\";"; 27 | die(); 28 | } 29 | 30 | if(is_numeric($sanitizedInput['id']) && $sanitizedInput['id'] != 0 && $sanitizedInput['confirmaction']){ 31 | $endpointPermissions = $ipskISEDB->getEndPointAssociationPermissions($sanitizedInput['id'],$_SESSION['authorizationGroups'], $_SESSION['portalSettings']['id']); 32 | 33 | if($endpointPermissions){ 34 | if($endpointPermissions[0]['advancedPermissions'] & 64){ 35 | 36 | $endPointAssociation = $ipskISEDB->getEndPointAssociationById($sanitizedInput['id']); 37 | 38 | //LOG::Entry 39 | $logData = $ipskISEDB->generateLogData(Array("sanitizedInput"=>$sanitizedInput)); 40 | $logMessage = "REQUEST:SUCCESS;ACTION:SPONSORDELETE;METHOD:DELETE-ENDPOINT;MAC:".$sanitizedInput['macAddress'].";REMOTE-IP:".$_SERVER['REMOTE_ADDR'].";USERNAME:".$_SESSION['logonUsername'].";SID:".$_SESSION['logonSID'].";"; 41 | $ipskISEDB->addLogEntry($logMessage, __FILE__, __FUNCTION__, __CLASS__, __METHOD__, __LINE__, $logData); 42 | 43 | $ipskISEDB->deleteEndpointAssociationbyId($sanitizedInput['id']); 44 | $ipskISEDB->deleteEndpointById($endPointAssociation['endpointId']); 45 | 46 | print << 48 | window.location = "manage.php?portalId=$portalId"; 49 | 50 | HTML; 51 | } 52 | } 53 | }else{ 54 | print << 56 | 75 | 101 | HTML; 102 | 103 | } 104 | ?> -------------------------------------------------------------------------------- /supportfiles/adminportals/modules/internalusers/delete.inc.php: -------------------------------------------------------------------------------- 1 | deleteInternalUserGroupMappingByUserId($sanitizedInput['id']); 25 | $ipskISEDB->deleteInternalUserById($sanitizedInput['id']); 26 | 27 | print << 29 | $.ajax({ 30 | url: "ajax/getmodule.php", 31 | 32 | data: { 33 | module: 'internalusers' 34 | }, 35 | type: "POST", 36 | dataType: "html", 37 | success: function (data) { 38 | $('#mainContent').html(data); 39 | }, 40 | error: function (xhr, status) { 41 | $('#mainContent').html("
Error Loading Selection: Verify the installation/configuration and/or contact your system administrator!
"); 42 | }, 43 | complete: function (xhr, status) { 44 | //$('#showresults').slideDown('slow') 45 | } 46 | }); 47 | 48 | HTML; 49 | }else{ 50 | 51 | if($sanitizedInput['id'] != 1){ 52 | 53 | print << 55 | 74 | 108 | HTML; 109 | } 110 | } 111 | ?> -------------------------------------------------------------------------------- /adminportal/styles/dashboard.css: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2021 Cisco Systems, Inc. or its affiliates 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | 17 | body { 18 | font-size: .875rem; 19 | } 20 | 21 | .feather { 22 | width: 16px; 23 | height: 16px; 24 | vertical-align: text-bottom; 25 | } 26 | 27 | /* 28 | * Sidebar 29 | */ 30 | 31 | .sidebar { 32 | position: sticky; 33 | top: 0; 34 | bottom: 0; 35 | left: 0; 36 | z-index: 100; /* Behind the navbar */ 37 | padding: 48px 0 0; /* Height of navbar */ 38 | box-shadow: inset -1px 0 0 rgba(0, 0, 0, .1); 39 | } 40 | 41 | .sidebar-sticky { 42 | position: relative; 43 | top: 0; 44 | height: calc(100vh - 48px); 45 | padding-top: .5rem; 46 | overflow-x: hidden; 47 | overflow-y: auto; /* Scrollable contents if viewport is shorter than content. */ 48 | } 49 | 50 | @supports ((position: -webkit-sticky) or (position: sticky)) { 51 | .sidebar-sticky { 52 | position: -webkit-sticky; 53 | position: sticky; 54 | } 55 | } 56 | 57 | .sidebar .nav-link { 58 | font-weight: 500; 59 | color: #333; 60 | } 61 | 62 | .sidebar .nav-link .feather { 63 | margin-right: 4px; 64 | color: #999; 65 | } 66 | 67 | .sidebar .nav-link.active { 68 | color: #007bff; 69 | } 70 | 71 | .sidebar .nav-link:hover .feather, 72 | .sidebar .nav-link.active .feather { 73 | color: inherit; 74 | } 75 | 76 | .sidebar-heading { 77 | font-size: .75rem; 78 | text-transform: uppercase; 79 | } 80 | 81 | /* 82 | * Modules 83 | */ 84 | 85 | .module-box { 86 | border-radius: 20px; 87 | } 88 | 89 | .module-select { 90 | width: 100%; 91 | padding: 16px 20px; 92 | border: none; 93 | border-radius: 4px; 94 | } 95 | 96 | /* 97 | * Content 98 | */ 99 | 100 | .menubar .nav-link { 101 | font-weight: 500; 102 | color: #333; 103 | } 104 | 105 | .menubar .nav-link .feather { 106 | margin-right: 4px; 107 | color: #999; 108 | } 109 | 110 | .menubar .nav-link.active { 111 | color: #007bff; 112 | } 113 | 114 | .menubar .nav-link:hover .feather, 115 | .menubar .nav-link.active .feather { 116 | color: inherit; 117 | } 118 | 119 | 120 | [role="main"] { 121 | padding-top: 100px; /* Space for fixed navbar */ 122 | } 123 | 124 | @media (min-width: 768px) { 125 | [role="main"] { 126 | padding-top: 70px; /* Space for fixed navbar */ 127 | } 128 | } 129 | 130 | .float-rounded { 131 | border-radius: 5px; 132 | } 133 | 134 | .epg-tableicons { 135 | color: #000000; 136 | } 137 | 138 | .epg-tableicons a:hover{ 139 | color: #66a3ff; 140 | } 141 | 142 | svg.epg-tableicons { 143 | width: 24px; 144 | height: 24px; 145 | } 146 | 147 | .epg-tableicons svg{ 148 | width: 24px; 149 | height: 24px; 150 | } 151 | 152 | .popover { 153 | background: #c6ffb3; 154 | } 155 | 156 | .popover.bottom .arrow:after { 157 | border-bottom-color: #c6ffb3; 158 | } 159 | 160 | /* 161 | * Navbar 162 | */ 163 | 164 | .navbar-brand { 165 | padding-top: .75rem; 166 | padding-bottom: .75rem; 167 | font-size: 1rem; 168 | } 169 | 170 | .navbar .form-control { 171 | padding: .75rem 1rem; 172 | border-width: 0; 173 | border-radius: 0; 174 | } 175 | 176 | .form-control-dark { 177 | color: #fff; 178 | background-color: rgba(255, 255, 255, .1); 179 | border-color: rgba(255, 255, 255, .1); 180 | } 181 | 182 | .form-control-dark:focus { 183 | border-color: transparent; 184 | box-shadow: 0 0 0 3px rgba(255, 255, 255, .25); 185 | } 186 | -------------------------------------------------------------------------------- /supportfiles/adminportals/modules/wireless/edit.inc.php: -------------------------------------------------------------------------------- 1 | 0){ 24 | 25 | $wirelessNetwork = $ipskISEDB->getWirelessNetworkById($id); 26 | 27 | $htmlbody = << 29 | 57 | 98 | HTML; 99 | 100 | print $htmlbody; 101 | } 102 | ?> -------------------------------------------------------------------------------- /schemaupdate-v6.sql: -------------------------------------------------------------------------------- 1 | /** 2 | * 3 | * 4 | *Copyright 2025 Cisco Systems, Inc. or its affiliates 5 | * 6 | *Licensed under the Apache License, Version 2.0 (the "License"); 7 | *you may not use this file except in compliance with the License. 8 | *You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | *Unless required by applicable law or agreed to in writing, software 13 | *distributed under the License is distributed on an "AS IS" BASIS, 14 | *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | *See the License for the specific language governing permissions and 16 | *limitations under the License. 17 | */ 18 | 19 | 20 | /* INSTALLATION README ----------------------------------------------------------- 21 | * Replace the following values below with your specific installation information 22 | * Refer to 'DONOTDELETE-iPSKManager-Install.txt' for your environment details 23 | * 24 | * A total of three(3) entries needs updating in this SQL file: 25 | * 26 | * = MySQL iPSK Manager Database Name 27 | * Example: USE `iPSKManager`; 28 | * 29 | * = MySQL Username for iPSK Manager 30 | * Example: CREATE DEFINER=`ipskmgr`@`%` PROC... 31 | * 32 | * = MySQL Username for Cisco ISE ODBC Connection 33 | * Example: CREATE DEFINER=`ciscoise`@`%` PROC... 34 | * 35 | *-------------------------------------------------------------------------------- 36 | */ 37 | 38 | SET AUTOCOMMIT = 0; 39 | 40 | /* UPDATE: Replace with the Database Name created when installed*/ 41 | 42 | USE ``; 43 | 44 | START TRANSACTION; 45 | 46 | -- 47 | -- Drop Existing Trigger 48 | -- 49 | 50 | DROP TRIGGER IF EXISTS `lastupdate_before_update_trigger`; 51 | 52 | -- 53 | -- Create Trigger 54 | -- 55 | 56 | DELIMITER $$ 57 | CREATE DEFINER=``@`%` TRIGGER `lastupdate_before_update_trigger` BEFORE UPDATE ON `endpoints` FOR EACH ROW BEGIN 58 | SET NEW.lastUpdated = NOW(); 59 | END 60 | $$ 61 | DELIMITER ; 62 | 63 | -- 64 | -- Drop Existing Procedure 65 | -- 66 | 67 | DROP PROCEDURE IF EXISTS `iPSK_AttributeFetch`; 68 | 69 | -- 70 | -- Updated Procedure 71 | -- 72 | 73 | /* UPDATE: Replace with the Database Username created when installing the Database*/ 74 | 75 | DELIMITER $$ 76 | CREATE DEFINER=``@`%` PROCEDURE `iPSK_AttributeFetch` (IN `username` VARCHAR(64), OUT `result` INT) SQL SECURITY INVOKER 77 | BEGIN 78 | IF username = '*' THEN 79 | SELECT username INTO @formattedMAC; 80 | ELSE 81 | SELECT UCASE(REPLACE(REPLACE(username,':',''),'-','')) INTO @strippedMAC; 82 | 83 | SELECT CONCAT_WS(':',SUBSTRING(@strippedMAC,1,2),SUBSTRING(@strippedMAC,3,2),SUBSTRING(@strippedMAC,5,2),SUBSTRING(@strippedMAC,7,2),SUBSTRING(@strippedMAC,9,2),SUBSTRING(@strippedMAC,11,2)) INTO @formattedMAC; 84 | END IF; 85 | 86 | CASE @formattedMAC 87 | WHEN '*' THEN 88 | SET result=0; 89 | SELECT 'Empty' AS fullName, 'Empty' AS emailAddress, 'Empty' AS createdBy, 'Empty' AS description, '0' AS expirationDate, 'False' AS accountExpired, 'EMPTY' AS pskValue, 'EMPTY' as pskValuePlain, 'Empty' AS vlan, 'Empty' AS dacl; 90 | ELSE 91 | IF EXISTS (SELECT * FROM endpoints WHERE endpoints.macAddress = @formattedMAC) THEN 92 | SET result=0; 93 | SELECT fullName,emailAddress,createdBy,description,expirationDate,accountExpired,pskValue, RIGHT(pskValue, LENGTH(pskValue) - 4) as pskValuePlain,vlan,dacl FROM endpoints WHERE endpoints.macAddress = @formattedMAC; 94 | ELSE 95 | SET result=1; 96 | END IF; 97 | END CASE; 98 | END 99 | $$ 100 | DELIMITER ; 101 | 102 | -- -------------------------------------------------------- 103 | -- 104 | -- Update Identity PSK Manager Database Scheme Version 105 | -- 106 | UPDATE `settings` SET `value` = '6' WHERE `page` = 'global' AND `settingClass` = 'db-schema' AND `keyName` = 'version'; 107 | 108 | COMMIT; -------------------------------------------------------------------------------- /supportfiles/adminportals/modules/endpoints/suspend.inc.php: -------------------------------------------------------------------------------- 1 | getEndPointAssociationById($sanitizedInput['id']); 25 | $ipskISEDB->suspendEndpointAssociationbyId($endPointAssociation['endpointId']); 26 | 27 | print << 29 | $.ajax({ 30 | url: "ajax/getmodule.php", 31 | 32 | data: { 33 | module: 'endpoints' 34 | }, 35 | type: "POST", 36 | dataType: "html", 37 | success: function (data) { 38 | $('#mainContent').html(data); 39 | }, 40 | error: function (xhr, status) { 41 | $('#mainContent').html("
Error Loading Selection: Verify the installation/configuration and/or contact your system administrator!
"); 42 | }, 43 | complete: function (xhr, status) { 44 | //$('#showresults').slideDown('slow') 45 | } 46 | }); 47 | 48 | HTML; 49 | }else{ 50 | print << 52 | 71 | 106 | HTML; 107 | 108 | } 109 | ?> -------------------------------------------------------------------------------- /supportfiles/adminportals/modules/endpoints/delete.inc.php: -------------------------------------------------------------------------------- 1 | getEndPointAssociationById($sanitizedInput['id']); 25 | 26 | $ipskISEDB->deleteEndpointAssociationbyId($sanitizedInput['id']); 27 | $ipskISEDB->deleteEndpointById($endPointAssociation['endpointId']); 28 | print << 30 | $.ajax({ 31 | url: "ajax/getmodule.php", 32 | 33 | data: { 34 | module: 'endpoints' 35 | }, 36 | type: "POST", 37 | dataType: "html", 38 | success: function (data) { 39 | $('#mainContent').html(data); 40 | }, 41 | error: function (xhr, status) { 42 | $('#mainContent').html("
Error Loading Selection: Verify the installation/configuration and/or contact your system administrator!
"); 43 | }, 44 | complete: function (xhr, status) { 45 | //$('#showresults').slideDown('slow') 46 | } 47 | }); 48 | 49 | HTML; 50 | }else{ 51 | print << 53 | 72 | 107 | HTML; 108 | 109 | } 110 | ?> -------------------------------------------------------------------------------- /supportfiles/adminportals/modules/endpoints/activate.inc.php: -------------------------------------------------------------------------------- 1 | getEndPointAssociationById($sanitizedInput['id']); 25 | $ipskISEDB->activateEndpointAssociationbyId($endPointAssociation['endpointId']); 26 | 27 | print << 29 | $.ajax({ 30 | url: "ajax/getmodule.php", 31 | 32 | data: { 33 | module: 'endpoints' 34 | }, 35 | type: "POST", 36 | dataType: "html", 37 | success: function (data) { 38 | $('#mainContent').html(data); 39 | }, 40 | error: function (xhr, status) { 41 | $('#mainContent').html("
Error Loading Selection: Verify the installation/configuration and/or contact your system administrator!
"); 42 | }, 43 | complete: function (xhr, status) { 44 | //$('#showresults').slideDown('slow') 45 | } 46 | }); 47 | 48 | HTML; 49 | }else{ 50 | print << 52 | 71 | 106 | HTML; 107 | 108 | } 109 | ?> -------------------------------------------------------------------------------- /supportfiles/adminportals/modules/internalgroups/delete.inc.php: -------------------------------------------------------------------------------- 1 | deleteInternalUserGroupMappingById($sanitizedInput['id']); 25 | $ipskISEDB->deletePortalGroupMappingById($sanitizedInput['id']); 26 | $ipskISEDB->deleteInternalGroupById($sanitizedInput['id']); 27 | 28 | print << 30 | $.ajax({ 31 | url: "ajax/getmodule.php", 32 | 33 | data: { 34 | module: 'internalgroups' 35 | }, 36 | type: "POST", 37 | dataType: "html", 38 | success: function (data) { 39 | $('#mainContent').html(data); 40 | }, 41 | error: function (xhr, status) { 42 | $('#mainContent').html("
Error Loading Selection: Verify the installation/configuration and/or contact your system administrator!
"); 43 | }, 44 | complete: function (xhr, status) { 45 | //$('#showresults').slideDown('slow') 46 | } 47 | }); 48 | 49 | HTML; 50 | }else{ 51 | 52 | if($sanitizedInput['id'] != 1){ 53 | 54 | print << 56 | 75 | 109 | HTML; 110 | } 111 | } 112 | ?> -------------------------------------------------------------------------------- /supportfiles/adminportals/modules/internalgroups/view.inc.php: -------------------------------------------------------------------------------- 1 | 0){ 26 | 27 | $internalGroup = $ipskISEDB->getInternalGroupById($id); 28 | 29 | if($internalGroup['groupType'] == 1){ 30 | $groupDn = '
'; 31 | }else{ 32 | $groupDn = ""; 33 | } 34 | 35 | if($internalGroup['permissions'] == 1){ 36 | $internalGroup['permissions'] = " checked"; 37 | }else{ 38 | $internalGroup['permissions'] = ""; 39 | } 40 | 41 | $internalGroup['createdBy'] = $ipskISEDB->getUserPrincipalNameFromCache($internalGroup['createdBy']); 42 | 43 | $internalGroup['createdDate'] = date($globalDateOutputFormat, strtotime($internalGroup['createdDate'])); 44 | 45 | $htmlbody = << 47 | 90 | 97 | HTML; 98 | 99 | print $htmlbody; 100 | } 101 | ?> -------------------------------------------------------------------------------- /supportfiles/portals/sponsorportal/commonfiles/scripts/ipsk-portal-v1.js: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2021 Cisco Systems, Inc. or its affiliates 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | 16 | AUTHOR(s): Gary Oppel (gaoppel@cisco.com) 17 | Hosuk Won (howon@cisco.com) 18 | CONTRIBUTOR(s): Drew Betz (anbetz@cisco.com) 19 | */ 20 | 21 | function formFieldValidation(){ 22 | var validationFailure; 23 | 24 | validationFailure = false; 25 | minValidateFailure = false; 26 | 27 | //Form Validation Object Loop 28 | $('.form-validation').each(function() { 29 | if($(this).attr('validation-state') == 'required'){ 30 | if($(this).attr('validation-minimum-length') || $(this).attr('validation-maximum-length')){ 31 | if($(this).attr('validation-minimum-length')){ 32 | //Check Field Min Length 33 | if($(this).val().length < $(this).attr('validation-minimum-length')){ 34 | $(this).removeClass('is-valid'); 35 | $(this).addClass('is-invalid'); 36 | validationFailure = true; 37 | minValidateFailure = true; 38 | }else{ 39 | $(this).removeClass('is-invalid'); 40 | $(this).addClass('is-valid'); 41 | } 42 | } 43 | 44 | if($(this).attr('validation-maximum-length')){ 45 | //Check Field Max Length 46 | if($(this).attr('validation-maximum-length') && !minValidateFailure){ 47 | if($(this).val().length > $(this).attr('validation-maximum-length')){ 48 | $(this).removeClass('is-valid'); 49 | $(this).addClass('is-invalid'); 50 | validationFailure = true; 51 | }else{ 52 | $(this).removeClass('is-invalid'); 53 | $(this).addClass('is-valid'); 54 | } 55 | } 56 | } 57 | }else{ 58 | //Check Field not Empty 59 | if($(this).val() == ''){ 60 | $(this).removeClass('is-valid'); 61 | $(this).addClass('is-invalid'); 62 | validationFailure = true; 63 | }else{ 64 | $(this).removeClass('is-invalid'); 65 | $(this).addClass('is-valid'); 66 | } 67 | } 68 | }else if($(this).attr('validation-state') == 'special'){ 69 | 70 | //Check Field not Empty 71 | if($(this).val() == ''){ 72 | $(this).removeClass('is-valid'); 73 | $(this).addClass('is-invalid'); 74 | validationFailure = true; 75 | }else if($(this).val() == 'Random'){ 76 | $(this).removeClass('is-invalid'); 77 | $(this).addClass('is-valid'); 78 | }else{ 79 | $(this).removeClass('is-invalid'); 80 | $(this).addClass('is-valid'); 81 | } 82 | }else if($(this).attr('validation-state') == 'notempty'){ 83 | //Check Field not Empty 84 | if($(this).val() == ''){ 85 | $(this).removeClass('is-valid'); 86 | $(this).addClass('is-invalid'); 87 | validationFailure = true; 88 | }else{ 89 | $(this).removeClass('is-invalid'); 90 | $(this).addClass('is-valid'); 91 | } 92 | }else{ 93 | $(this).removeClass('is-invalid'); 94 | $(this).addClass('is-valid'); 95 | } 96 | }); 97 | 98 | return validationFailure; 99 | } 100 | 101 | function macAddressFormat(userInput) { 102 | //Filter out invalid characters from string and convert to Uppercase 103 | var fieldContents = $(userInput).val().replace(/[g-z]|[G-Z]|\W|\s/g, "").toUpperCase(); 104 | 105 | //Format value to comply with MAC Address Format 106 | var formatted = fieldContents.replace(/(.{2})/g, "$1:"); 107 | 108 | //Output base on length to truncate excess ':' 109 | if(formatted.length >= 18){ 110 | $(userInput).val(formatted.substring(0, 17)); 111 | }else{ 112 | $(userInput).val(formatted); 113 | } 114 | } -------------------------------------------------------------------------------- /supportfiles/portals/captiveportal/commonfiles/scripts/ipsk-portal-v1.js: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2021 Cisco Systems, Inc. or its affiliates 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | 16 | 17 | AUTHOR(s): Gary Oppel (gaoppel@cisco.com) 18 | Hosuk Won (howon@cisco.com) 19 | CONTRIBUTOR(s): Drew Betz (anbetz@cisco.com) 20 | */ 21 | 22 | function formFieldValidation(){ 23 | var validationFailure; 24 | 25 | validationFailure = false; 26 | minValidateFailure = false; 27 | 28 | //Form Validation Object Loop 29 | $('.form-validation').each(function() { 30 | if($(this).attr('validation-state') == 'required'){ 31 | if($(this).attr('validation-minimum-length') || $(this).attr('validation-maximum-length')){ 32 | if($(this).attr('validation-minimum-length')){ 33 | //Check Field Min Length 34 | if($(this).val().length < $(this).attr('validation-minimum-length')){ 35 | $(this).removeClass('is-valid'); 36 | $(this).addClass('is-invalid'); 37 | validationFailure = true; 38 | minValidateFailure = true; 39 | }else{ 40 | $(this).removeClass('is-invalid'); 41 | $(this).addClass('is-valid'); 42 | } 43 | } 44 | 45 | if($(this).attr('validation-maximum-length')){ 46 | //Check Field Max Length 47 | if($(this).attr('validation-maximum-length') && !minValidateFailure){ 48 | if($(this).val().length > $(this).attr('validation-maximum-length')){ 49 | $(this).removeClass('is-valid'); 50 | $(this).addClass('is-invalid'); 51 | validationFailure = true; 52 | }else{ 53 | $(this).removeClass('is-invalid'); 54 | $(this).addClass('is-valid'); 55 | } 56 | } 57 | } 58 | }else{ 59 | //Check Field not Empty 60 | if($(this).val() == ''){ 61 | $(this).removeClass('is-valid'); 62 | $(this).addClass('is-invalid'); 63 | validationFailure = true; 64 | }else{ 65 | $(this).removeClass('is-invalid'); 66 | $(this).addClass('is-valid'); 67 | } 68 | } 69 | }else if($(this).attr('validation-state') == 'special'){ 70 | 71 | //Check Field not Empty 72 | if($(this).val() == ''){ 73 | $(this).removeClass('is-valid'); 74 | $(this).addClass('is-invalid'); 75 | validationFailure = true; 76 | }else if($(this).val() == 'Random'){ 77 | $(this).removeClass('is-invalid'); 78 | $(this).addClass('is-valid'); 79 | }else{ 80 | $(this).removeClass('is-invalid'); 81 | $(this).addClass('is-valid'); 82 | } 83 | }else if($(this).attr('validation-state') == 'notempty'){ 84 | //Check Field not Empty 85 | if($(this).val() == ''){ 86 | $(this).removeClass('is-valid'); 87 | $(this).addClass('is-invalid'); 88 | validationFailure = true; 89 | }else{ 90 | $(this).removeClass('is-invalid'); 91 | $(this).addClass('is-valid'); 92 | } 93 | }else{ 94 | $(this).removeClass('is-invalid'); 95 | $(this).addClass('is-valid'); 96 | } 97 | }); 98 | 99 | return validationFailure; 100 | } 101 | 102 | function macAddressFormat(userInput) { 103 | //Filter out invalid characters from string and convert to Uppercase 104 | var fieldContents = $(userInput).val().replace(/[g-z]|[G-Z]|\W|\s/g, "").toUpperCase(); 105 | 106 | //Format value to comply with MAC Address Format 107 | var formatted = fieldContents.replace(/(.{2})/g, "$1:"); 108 | 109 | //Output base on length to truncate excess ':' 110 | if(formatted.length >= 18){ 111 | $(userInput).val(formatted.substring(0, 17)); 112 | }else{ 113 | $(userInput).val(formatted); 114 | } 115 | } -------------------------------------------------------------------------------- /schemaupdate-v5.sql: -------------------------------------------------------------------------------- 1 | /** 2 | * 3 | * 4 | *Copyright 2024 Cisco Systems, Inc. or its affiliates 5 | * 6 | *Licensed under the Apache License, Version 2.0 (the "License"); 7 | *you may not use this file except in compliance with the License. 8 | *You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | *Unless required by applicable law or agreed to in writing, software 13 | *distributed under the License is distributed on an "AS IS" BASIS, 14 | *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | *See the License for the specific language governing permissions and 16 | *limitations under the License. 17 | */ 18 | 19 | 20 | /* INSTALLATION README ----------------------------------------------------------- 21 | * Replace the following values below with your specific installation information 22 | * Refer to 'DONOTDELETE-iPSKManager-Install.txt' for your environment details 23 | * 24 | * A total of two(2) entries needs updating in this SQL file: 25 | * 26 | * = MySQL iPSK Manager Database Name 27 | * Example: USE `iPSKManager`; 28 | * 29 | * = MySQL Username for Cisco ISE ODBC Connection 30 | * Example: CREATE DEFINER=`ciscoise`@`%` PROC... 31 | * 32 | *-------------------------------------------------------------------------------- 33 | */ 34 | 35 | SET AUTOCOMMIT = 0; 36 | 37 | /* UPDATE: Replace with the Database Name created when installed*/ 38 | 39 | USE ``; 40 | 41 | START TRANSACTION; 42 | 43 | -- -------------------------------------------------------- 44 | -- 45 | -- Update Identity PSK Manager Database Endpoints Table 46 | -- 47 | 48 | ALTER TABLE `authorizationTemplates` ADD `vlan` VARCHAR(255) NULL DEFAULT NULL AFTER `termLengthSeconds`, ADD `dacl` VARCHAR(255) NULL DEFAULT NULL AFTER `vlan`; 49 | ALTER TABLE `endpoints` ADD `vlan` VARCHAR(255) NULL DEFAULT NULL AFTER `pskValue`, ADD `dacl` VARCHAR(255) NULL DEFAULT NULL AFTER `vlan`; 50 | 51 | -- -------------------------------------------------------- 52 | -- 53 | -- Create Identity PSK Manager Database Endpoints Table Triggers 54 | -- 55 | 56 | DELIMITER $$ 57 | CREATE TRIGGER `lastupdate_before_update_trigger` BEFORE UPDATE ON `endpoints` FOR EACH ROW BEGIN 58 | SET NEW.lastUpdated = NOW(); 59 | END 60 | $$ 61 | DELIMITER ; 62 | 63 | -- 64 | -- Drop Existing Procedure 65 | -- 66 | 67 | DROP PROCEDURE `iPSK_AttributeFetch`; 68 | 69 | -- 70 | -- Updated Procedure 71 | -- 72 | 73 | /* UPDATE: Replace with the Database Username created when installing the Database*/ 74 | 75 | DELIMITER $$ 76 | CREATE DEFINER=``@`%` PROCEDURE `iPSK_AttributeFetch` (IN `username` VARCHAR(64), OUT `result` INT) SQL SECURITY INVOKER 77 | BEGIN 78 | IF username = '*' THEN 79 | SELECT username INTO @formattedMAC; 80 | ELSE 81 | SELECT UCASE(REPLACE(REPLACE(username,':',''),'-','')) INTO @strippedMAC; 82 | 83 | SELECT CONCAT_WS(':',SUBSTRING(@strippedMAC,1,2),SUBSTRING(@strippedMAC,3,2),SUBSTRING(@strippedMAC,5,2),SUBSTRING(@strippedMAC,7,2),SUBSTRING(@strippedMAC,9,2),SUBSTRING(@strippedMAC,11,2)) INTO @formattedMAC; 84 | END IF; 85 | 86 | CASE @formattedMAC 87 | WHEN '*' THEN 88 | SET result=0; 89 | SELECT 'Empty' AS fullName, 'Empty' AS emailAddress, 'Empty' AS createdBy, 'Empty' AS description, '0' AS expirationDate, 'False' AS accountExpired, 'EMPTY' AS pskValue, 'EMPTY' as pskValuePlain; 90 | ELSE 91 | IF EXISTS (SELECT * FROM endpoints WHERE endpoints.macAddress = @formattedMAC) THEN 92 | SET result=0; 93 | SELECT fullName,emailAddress,createdBy,description,expirationDate,accountExpired,pskValue, RIGHT(pskValue, LENGTH(pskValue) - 4) as pskValuePlain,vlan,dacl FROM endpoints WHERE endpoints.macAddress = @formattedMAC; 94 | ELSE 95 | SET result=1; 96 | END IF; 97 | END CASE; 98 | END 99 | $$ 100 | DELIMITER ; 101 | 102 | -- -------------------------------------------------------- 103 | -- 104 | -- Update Identity PSK Manager Database Scheme Version 105 | -- 106 | UPDATE `settings` SET `value` = '5' WHERE `page` = 'global' AND `settingClass` = 'db-schema' AND `keyName` = 'version'; 107 | 108 | COMMIT; -------------------------------------------------------------------------------- /supportfiles/adminportals/modules/sysconfig/smtp.inc.php: -------------------------------------------------------------------------------- 1 | 24 |
25 |
26 |
27 |
Email Configuration Settings
28 |
29 | 30 |
31 | 32 |
33 |
34 | 35 | 36 |
37 | 38 |
39 | 40 |
41 | 42 |
43 | 44 |
45 | 46 |
47 | 48 |
49 | 50 |
51 | 52 |
53 | 54 |
55 | 60 |
61 |
62 | 66 |
67 |
68 |
69 | 70 | HTML; 71 | ?> -------------------------------------------------------------------------------- /supportfiles/adminportals/modules/wireless/wireless.inc.php: -------------------------------------------------------------------------------- 1 | getWirelessNetworks(); 24 | ?> 25 |
26 |

Wireless Networks

27 |
Manage wireless SSIDs used in portal group configurations
28 | 31 |
32 |
Wireless SSIDs are used in email communications when an endpoint is Enrolled in the iPSK Management Database.
33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | fetch_assoc()) { 47 | print ''; 48 | print ''; 49 | print ''; 50 | print ''; 51 | print ''; 52 | print ''; 53 | print ''; 54 | } 55 | } 56 | ?> 57 | 58 |
Wireless Network SSIDWireless Network DescriptionViewEditDelete
'.$row['ssidName'].''.$row['ssidDescription'].'
59 |
60 |
61 |
62 | -------------------------------------------------------------------------------- /supportfiles/adminportals/modules/internalusers/view.inc.php: -------------------------------------------------------------------------------- 1 | 0){ 26 | 27 | $internalUser = $ipskISEDB->getInternalUserById($id); 28 | 29 | if($internalUser['enabled'] == 1){ 30 | $internalUser['enabled'] = " checked"; 31 | }else{ 32 | $internalUser['enabled'] = ""; 33 | } 34 | 35 | $internalUser['createdBy'] = $ipskISEDB->getUserPrincipalNameFromCache($internalUser['createdBy']); 36 | 37 | $internalUser['createdDate'] = date($globalDateOutputFormat, strtotime($internalUser['createdDate'])); 38 | 39 | $htmlbody = << 41 | 99 | 106 | HTML; 107 | 108 | print $htmlbody; 109 | } 110 | ?> -------------------------------------------------------------------------------- /supportfiles/adminportals/modules/internalusers/edit.inc.php: -------------------------------------------------------------------------------- 1 | 0){ 25 | 26 | $internalUser = $ipskISEDB->getInternalUserById($id); 27 | 28 | if($internalUser['enabled'] == 1){ 29 | $internalUser['enabled'] = " checked"; 30 | }else{ 31 | $internalUser['enabled'] = ""; 32 | } 33 | 34 | $htmlbody = << 36 | 73 | 117 | HTML; 118 | 119 | print $htmlbody; 120 | } 121 | ?> -------------------------------------------------------------------------------- /supportfiles/adminportals/modules/epgroup/epgroup.inc.php: -------------------------------------------------------------------------------- 1 | getEndpointGroups(); 24 | $authorizationTemplatesNames = $ipskISEDB->getAuthorizationTemplatesNames(); 25 | ?> 26 |
27 |

Endpoint Grouping

28 |
Logical groupings of devices to apply unique pre-shared key ("PSK") & group based policies
29 |
30 | Add Endpoint Group 31 |
32 |
33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | fetch_assoc()) { 48 | if($row['notificationPermission'] == true){ 49 | $notifyRow = "Enabled"; 50 | }else{ 51 | $notifyRow = "Disabled"; 52 | } 53 | 54 | print ''; 55 | print ''; 56 | print ''; 57 | print ''; 58 | print ''; 61 | print ''; 62 | } 63 | } 64 | ?> 65 | 66 |
Group NameAuthorization TemplateEmail NotificationViewEditDelete
'.$row['groupName'].''.$authorizationTemplatesNames[$row['authzTemplateId']]['authzPolicyName'].''.$notifyRow.''; 59 | print ''; 60 | print '
67 |
68 |
69 |
70 | -------------------------------------------------------------------------------- /supportfiles/adminportals/modules/portals/portals.inc.php: -------------------------------------------------------------------------------- 1 | getPortals(); 24 | $directoryNames = $ipskISEDB->getAuthDirectoryNames(); 25 | 26 | ?> 27 |
28 |

Portals

29 |
Manage iPSK portals users access to onboard or manage endpoints
30 |
31 | Add Portal 32 |
33 |
34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | fetch_assoc()) { 50 | print ''; 51 | print ''; 52 | print ''; 53 | print ''; 54 | if(isset($directoryNames[$row['authenticationDirectory']])){ 55 | print ''; 56 | }else{ 57 | print ''; 58 | } 59 | print ''; 60 | print ''; 61 | print ''; 62 | print ''; 63 | 64 | //$pskType = ""; 65 | } 66 | } 67 | ?> 68 | 69 |
Portal NameDescriptionPortal HostnameAuthentication DirectoryViewEditDelete
'.$row['portalName'].''.$row['description'].''.$row['portalHostname'].''.$directoryNames[$row['authenticationDirectory']].'{UNKNOWN}
70 |
71 |
72 |
73 | -------------------------------------------------------------------------------- /supportfiles/adminportals/modules/authz/update.inc.php: -------------------------------------------------------------------------------- 1 | 25 | $.ajax({ 26 | url: "ajax/getmodule.php", 27 | 28 | data: { 29 | module: 'authz' 30 | }, 31 | type: "POST", 32 | dataType: "html", 33 | success: function (data) { 34 | $('#mainContent').html(data); 35 | }, 36 | error: function (xhr, status) { 37 | $('#mainContent').html("
Error Loading Selection: Verify the installation/configuration and/or contact your system administrator!
"); 38 | }, 39 | complete: function (xhr, status) { 40 | //$('#showresults').slideDown('slow') 41 | } 42 | }); 43 | 44 | HTML; 45 | 46 | $failure = false; 47 | 48 | if($sanitizedInput['authzPolicyName'] != "" && $sanitizedInput['termLengthSeconds'] < 157680000 && $sanitizedInput['ciscoAVPairPSK'] != ""){ 49 | if(isset($sanitizedInput['pskLength'])){ 50 | $sanitizedInput['pskLength'] = ($sanitizedInput['pskLength'] == 0) ? 8 : $sanitizedInput['pskLength']; 51 | $sanitizedInput['pskLength'] = ($sanitizedInput['pskLength'] < 8) ? 8 : $sanitizedInput['pskLength']; 52 | $sanitizedInput['pskLength'] = ($sanitizedInput['pskLength'] > 64) ? 64 : $sanitizedInput['pskLength']; 53 | } 54 | 55 | if($sanitizedInput['pskMode'] == 0){ 56 | if(strlen($sanitizedInput['ciscoAVPairPSK']) > 7){ 57 | $psk = $sanitizedInput['ciscoAVPairPSK']; 58 | }else{ 59 | $failure = true; 60 | } 61 | }else{ 62 | if($sanitizedInput['pskType'] == 0){ 63 | $psk = "*devicerandom*"; 64 | }else{ 65 | $psk = "*userrandom*"; 66 | } 67 | } 68 | 69 | if(!isset($sanitizedInput['vlan'])) { 70 | $sanitizedInput['vlan'] = ''; 71 | } 72 | 73 | if(!isset($sanitizedInput['dacl'])) { 74 | $sanitizedInput['dacl'] = ''; 75 | } 76 | 77 | if(!$failure){ 78 | $ipskISEDB->updateAuthorizationTemplate($sanitizedInput['id'], $sanitizedInput['authzPolicyName'], $sanitizedInput['authzPolicyDescription'], $psk, $sanitizedInput['termLengthSeconds'], $sanitizedInput['pskLength'], $sanitizedInput['vlan'], $sanitizedInput['dacl'],$_SESSION['logonSID']); 79 | 80 | if($sanitizedInput['fullAuthZUpdate'] == true){ 81 | $endpointsToUpdate = $ipskISEDB->getEndpointsByAuthZPolicy($sanitizedInput['id']); 82 | 83 | if($endpointsToUpdate){ 84 | if($sanitizedInput['pskMode'] == 0){ 85 | for($itemCount = 0; $itemCount < $endpointsToUpdate['count']; $itemCount++){ 86 | $ipskISEDB->updateEndpointPsk($endpointsToUpdate[$itemCount]['id'], "psk=".$psk); 87 | } 88 | }else{ 89 | if($sanitizedInput['pskType'] == 0) { 90 | for($itemCount = 0; $itemCount < $endpointsToUpdate['count']; $itemCount++){ 91 | $ipskISEDB->updateEndpointPsk($endpointsToUpdate[$itemCount]['id'], "psk=".$ipskISEDB->generateRandomPassword($sanitizedInput['pskLength'])); 92 | } 93 | }else{ 94 | $users = array_unique(array_column($endpointsToUpdate, 'createdBy')); 95 | 96 | foreach ($users as $user) { 97 | $randompsk = $ipskISEDB->generateRandomPassword($sanitizedInput['pskLength']); 98 | foreach ($endpointsToUpdate as $entry) { 99 | if ($entry['createdBy'] == $user) { 100 | $ipskISEDB->updateEndpointPsk($entry['id'], "psk=".$randompsk); 101 | } 102 | } 103 | } 104 | } 105 | } 106 | } 107 | } 108 | if($sanitizedInput['fullAuthZUpdateVLANdACL'] == true){ 109 | $endpointsToUpdate = $ipskISEDB->getEndpointsByAuthZPolicy($sanitizedInput['id']); 110 | 111 | if($endpointsToUpdate){ 112 | for($itemCount = 0; $itemCount < $endpointsToUpdate['count']; $itemCount++){ 113 | $ipskISEDB->updateEndpointVLANdACL($endpointsToUpdate[$itemCount]['id'], $sanitizedInput['vlan'], $sanitizedInput['dacl']); 114 | } 115 | } 116 | } 117 | } 118 | } 119 | 120 | print $htmlbody; 121 | 122 | ?> -------------------------------------------------------------------------------- /supportfiles/adminportals/modules/authz/authz.inc.php: -------------------------------------------------------------------------------- 1 | getAuthorizationTemplates(); 22 | ?> 23 |
24 |

Authorization Templates

25 |
Manage authorization templates that are applied to an endpoint when enrolled
26 | 29 |
30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | fetch_assoc()) { 45 | if($row['ciscoAVPairPSKMode'] == "ascii"){ 46 | if($row['ciscoAVPairPSK'] == "*userrandom*"){ 47 | $pskType = "Unique User PSK"; 48 | }elseif($row['ciscoAVPairPSK'] == "*devicerandom*"){ 49 | $pskType = "Unique Device PSK"; 50 | }else{ 51 | $pskType = "Common PSK"; 52 | } 53 | }else{ 54 | $pskType = "None"; 55 | } 56 | 57 | print ''; 58 | print ''; 59 | print ''; 60 | print ''; 61 | print ''; 62 | print ''; 63 | print ''; 64 | print ''; 65 | 66 | $pskType = ""; 67 | } 68 | } 69 | ?> 70 | 71 |
Profile NameDescriptioniPSK TypeViewEditDelete
'.$row['authzPolicyName'].''.$row['authzPolicyDescription'].''.$pskType.'
72 |
73 |
74 |
75 | --------------------------------------------------------------------------------