Update code and environment checks

This commit is contained in:
Luuk Verhoeven
2024-07-20 15:01:12 +02:00
parent 26bbc1cbdb
commit 8ae54193d2
7 changed files with 56 additions and 53 deletions

15
.github/workflows/AppScan.yml vendored Normal file
View File

@@ -0,0 +1,15 @@
name: "HCL AppScan SAST"
on: [ push, pull_request ]
jobs:
scan:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Run AppScan SAST scan
uses: HCL-TECH-SOFTWARE/appscan-sast-action@v1.0.1
with:
asoc_key: ${{secrets.ASOC_KEY}}
asoc_secret: ${{secrets.ASOC_SECRET}}
application_id: ${{secrets.ASOC_APPID}}

View File

@@ -1,24 +1,23 @@
## Moodle - availability ip address plugin ## Moodle - availability ip address plugin
Restrict access to any activity by ip-address. This plugin can be used to make any chosen activity unavailable based on the user's IP. Enhance activity security by restricting access based on IP address. This plugin allows you to control the availability of any chosen
activity, making it accessible only to users from specified IP addresses.
## Author ## Author
![MFreak.nl](http://MFreak.nl/logo_small.png) ![ldesignmedia.nl](http://ldesignmedia.nl/logo_small.png)
* Author: Luuk Verhoeven, [MFreak.nl](https://MFreak.nl/) * Author: Luuk Verhoeven, [ldesignmedia.nl](https://ldesignmedia.nl/)
* Min. required: Moodle 3.5.x * Min. required: Moodle 4.0
* Supports PHP: 7.2 * Supports PHP: 7.4
[![Build Status](https://travis-ci.org/MFreakNL/moodle-availability_ipaddress.svg?branch=master)](https://travis-ci.org/MFreakNL/moodle-availability_ipaddress) ![Moodle400](https://img.shields.io/badge/moodle-4.0-brightgreen.svg?logo=moodle)
![Moodle35](https://img.shields.io/badge/moodle-3.5-brightgreen.svg) ![Moodle401](https://img.shields.io/badge/moodle-4.1-brightgreen.svg?logo=moodle)
![Moodle36](https://img.shields.io/badge/moodle-3.6-brightgreen.svg) ![Moodle402](https://img.shields.io/badge/moodle-4.2-brightgreen.svg?logo=moodle)
![Moodle37](https://img.shields.io/badge/moodle-3.7-brightgreen.svg) ![Moodle403](https://img.shields.io/badge/moodle-4.3-brightgreen.svg?logo=moodle)
![Moodle38](https://img.shields.io/badge/moodle-3.8-brightgreen.svg) ![Moodle404](https://img.shields.io/badge/moodle-4.4-brightgreen.svg?logo=moodle)
![Moodle39](https://img.shields.io/badge/moodle-3.9-brightgreen.svg)
![Moodle310](https://img.shields.io/badge/moodle-3.10-brightgreen.svg) ![PHP7.4](https://img.shields.io/badge/PHP-7.4-brightgreen.svg?logo=php)
![Moodle40](https://img.shields.io/badge/moodle-4.00-brightgreen.svg) ![PHP8.0](https://img.shields.io/badge/PHP-8.0-brightgreen.svg?logo=php)
![PHP7.2](https://img.shields.io/badge/PHP-7.2-brightgreen.svg) ![PHP8.1](https://img.shields.io/badge/PHP-8.1-brightgreen.svg?logo=php)
![PHP7.3](https://img.shields.io/badge/PHP-7.3-brightgreen.svg)
## List of features ## List of features
- Supports comma separate list of ip-addresses - Supports comma separate list of ip-addresses
@@ -32,7 +31,6 @@ Restrict access to any activity by ip-address. This plugin can be used to make a
3. Go to Site Administrator > Notification 3. Go to Site Administrator > Notification
4. Install the plugin 4. Install the plugin
## Usage ## Usage
1. Add or edit an activity in a Moodle course. 1. Add or edit an activity in a Moodle course.
@@ -47,7 +45,7 @@ Restrict access to any activity by ip-address. This plugin can be used to make a
## Security ## Security
If you discover any security related issues, please email [luuk@MFreak.nl](mailto:luuk@MFreak.nl) instead of using the issue tracker. If you discover any security related issues, please email [luuk@ldesignmedia.nl](mailto:luuk@ldesignmedia.nl) instead of using the issue tracker.
## License ## License
@@ -59,6 +57,7 @@ Contributions are welcome and will be fully credited. We accept contributions vi
## Changelog ## Changelog
- 2024072000 Tested on Moodle 4.4
- 2022021100 Thanks for adding ip-range support @[juacas](https://github.com/juacas) - 2022021100 Thanks for adding ip-range support @[juacas](https://github.com/juacas)
- 2022052800 Fixed the [issue 6](https://github.com/MFreakNL/moodle-availability_ipaddress/issues/6) @[hamzatamyachte](https://github.com/hamzatamyachte) - 2022052800 Fixed the [issue 6](https://github.com/ldesignmediaNL/moodle-availability_ipaddress/issues/6) @[hamzatamyachte](https://github.com/hamzatamyachte)
- 2022052801 Test in Moodle 4.0 @[hamzatamyachte](https://github.com/hamzatamyachte) - 2022052801 Test in Moodle 4.0 @[hamzatamyachte](https://github.com/hamzatamyachte)

View File

@@ -40,7 +40,7 @@ class condition extends \core_availability\condition {
/** /**
* @var string * @var string
*/ */
protected $ipaddresses = ''; protected string $ipaddresses = '';
/** /**
* condition constructor. * condition constructor.
@@ -77,7 +77,7 @@ class condition extends \core_availability\condition {
* *
* @return bool True if available * @return bool True if available
*/ */
public function is_available($not, info $info, $grabthelot, $userid) : bool { public function is_available($not, info $info, $grabthelot, $userid): bool {
if (empty($this->ipaddresses)) { if (empty($this->ipaddresses)) {
return !$not; return !$not;
@@ -116,7 +116,7 @@ class condition extends \core_availability\condition {
* this item * this item
* @throws \coding_exception * @throws \coding_exception
*/ */
public function get_description($full, $not, info $info) : string { public function get_description($full, $not, info $info): string {
return get_string('require_condition', 'availability_ipaddress', getremoteaddr()); return get_string('require_condition', 'availability_ipaddress', getremoteaddr());
} }
@@ -126,7 +126,7 @@ class condition extends \core_availability\condition {
* *
* @return string Text representation of parameters * @return string Text representation of parameters
*/ */
protected function get_debug_string() : string { protected function get_debug_string(): string {
return !empty($this->ipaddresses) ? 'ipaddresses ON' : 'ipaddresses OFF'; return !empty($this->ipaddresses) ? 'ipaddresses ON' : 'ipaddresses OFF';
} }
@@ -140,43 +140,23 @@ class condition extends \core_availability\condition {
* *
* @return \stdClass Object representing condition * @return \stdClass Object representing condition
*/ */
public static function get_json($ipaddresses) : \stdClass { public static function get_json(string $ipaddresses): \stdClass {
return (object)[ return (object) [
'type' => 'ipaddress', 'type' => 'ipaddress',
'ipaddresses' => $ipaddresses, 'ipaddresses' => $ipaddresses,
]; ];
} }
/**
* Check if ip-address is valid
*
* @param string $ipaddresses
*
* @return bool
*/
public static function is_valid_ipaddresses($ipaddresses) : bool {
$ipaddresses = implode(',', $ipaddresses);
foreach ($ipaddresses as $ipaddress) {
if ( is_ip_address($ipaddress) === false &&
is_ipv4_range($ipaddress) === false &&
is_ipv6_range($ipaddress) === false ) {
return false;
}
}
return true;
}
/** /**
* Saves tree data back to a structure object. * Saves tree data back to a structure object.
* *
* @return \stdClass Structure object (ready to be made into JSON format) * @return \stdClass Structure object (ready to be made into JSON format)
*/ */
public function save() : \stdClass { public function save(): \stdClass {
return (object)[ return (object) [
'type' => 'ipaddress', 'type' => 'ipaddress',
'ipaddresses' => $this->ipaddresses, 'ipaddresses' => $this->ipaddresses,
]; ];
} }
} }

View File

@@ -40,10 +40,11 @@ class frontend extends \core_availability\frontend {
* *
* @return array * @return array
*/ */
protected function get_javascript_strings() : array { protected function get_javascript_strings(): array {
return [ return [
'js:ipaddress', 'js:ipaddress',
'error_ipaddress', 'error_ipaddress',
]; ];
} }
} }

View File

@@ -40,7 +40,8 @@ class provider implements \core_privacy\local\metadata\null_provider {
* *
* @return string * @return string
*/ */
public static function get_reason() : string { public static function get_reason(): string {
return 'privacy:metadata'; return 'privacy:metadata';
} }
} }

6
environment.xml Normal file
View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8" ?>
<COMPATIBILITY_MATRIX>
<PLUGIN name="availability_ipaddress">
<PHP version="7.4" level="required"/>
</PLUGIN>
</COMPATIBILITY_MATRIX>

View File

@@ -27,7 +27,8 @@
defined('MOODLE_INTERNAL') || die(); defined('MOODLE_INTERNAL') || die();
$plugin->component = 'availability_ipaddress'; $plugin->component = 'availability_ipaddress';
$plugin->version = 2022052801; $plugin->version = 2024072000;
$plugin->release = '3.11.2'; $plugin->release = '4.4.0';
$plugin->requires = 2016120500; $plugin->requires = 2016120500;
$plugin->maturity = MATURITY_STABLE; $plugin->maturity = MATURITY_STABLE;
$plugin->supported = [400, 404];