mirror of
https://github.com/LdesignMedia/moodle-availability_ipaddress.git
synced 2026-05-16 21:41:28 +02:00
Update code and environment checks
This commit is contained in:
15
.github/workflows/AppScan.yml
vendored
Normal file
15
.github/workflows/AppScan.yml
vendored
Normal 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}}
|
||||||
37
README.md
37
README.md
@@ -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
|
||||||

|

|
||||||
|
|
||||||
* 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
|
||||||
|
|
||||||
[](https://travis-ci.org/MFreakNL/moodle-availability_ipaddress)
|

|
||||||

|

|
||||||

|

|
||||||

|

|
||||||

|

|
||||||

|
|
||||||

|

|
||||||

|

|
||||||

|

|
||||||

|
|
||||||
|
|
||||||
## 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)
|
||||||
|
|||||||
@@ -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,
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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',
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
6
environment.xml
Normal 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>
|
||||||
@@ -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];
|
||||||
|
|||||||
Reference in New Issue
Block a user