Skip to content

Commit

Permalink
Update code and environment checks
Browse files Browse the repository at this point in the history
  • Loading branch information
luukverhoeven committed Jul 20, 2024
1 parent 26bbc1c commit 8ae5419
Show file tree
Hide file tree
Showing 7 changed files with 58 additions and 55 deletions.
15 changes: 15 additions & 0 deletions .github/workflows/AppScan.yml
Original file line number Diff line number Diff line change
@@ -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/[email protected]
with:
asoc_key: ${{secrets.ASOC_KEY}}
asoc_secret: ${{secrets.ASOC_SECRET}}
application_id: ${{secrets.ASOC_APPID}}
41 changes: 20 additions & 21 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,24 +1,23 @@
## 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
![MFreak.nl](http://MFreak.nl/logo_small.png)

* Author: Luuk Verhoeven, [MFreak.nl](https://MFreak.nl/)
* Min. required: Moodle 3.5.x
* Supports PHP: 7.2

[![Build Status](https://travis-ci.org/MFreakNL/moodle-availability_ipaddress.svg?branch=master)](https://travis-ci.org/MFreakNL/moodle-availability_ipaddress)
![Moodle35](https://img.shields.io/badge/moodle-3.5-brightgreen.svg)
![Moodle36](https://img.shields.io/badge/moodle-3.6-brightgreen.svg)
![Moodle37](https://img.shields.io/badge/moodle-3.7-brightgreen.svg)
![Moodle38](https://img.shields.io/badge/moodle-3.8-brightgreen.svg)
![Moodle39](https://img.shields.io/badge/moodle-3.9-brightgreen.svg)
![Moodle310](https://img.shields.io/badge/moodle-3.10-brightgreen.svg)
![Moodle40](https://img.shields.io/badge/moodle-4.00-brightgreen.svg)
![PHP7.2](https://img.shields.io/badge/PHP-7.2-brightgreen.svg)
![PHP7.3](https://img.shields.io/badge/PHP-7.3-brightgreen.svg)
![ldesignmedia.nl](http://ldesignmedia.nl/logo_small.png)

* Author: Luuk Verhoeven, [ldesignmedia.nl](https://ldesignmedia.nl/)
* Min. required: Moodle 4.0
* Supports PHP: 7.4

![Moodle400](https://img.shields.io/badge/moodle-4.0-brightgreen.svg?logo=moodle)
![Moodle401](https://img.shields.io/badge/moodle-4.1-brightgreen.svg?logo=moodle)
![Moodle402](https://img.shields.io/badge/moodle-4.2-brightgreen.svg?logo=moodle)
![Moodle403](https://img.shields.io/badge/moodle-4.3-brightgreen.svg?logo=moodle)
![Moodle404](https://img.shields.io/badge/moodle-4.4-brightgreen.svg?logo=moodle)

![PHP7.4](https://img.shields.io/badge/PHP-7.4-brightgreen.svg?logo=php)
![PHP8.0](https://img.shields.io/badge/PHP-8.0-brightgreen.svg?logo=php)
![PHP8.1](https://img.shields.io/badge/PHP-8.1-brightgreen.svg?logo=php)

## List of features
- Supports comma separate list of ip-addresses
Expand All @@ -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
4. Install the plugin


## Usage

1. Add or edit an activity in a Moodle course.
Expand All @@ -47,7 +45,7 @@ Restrict access to any activity by ip-address. This plugin can be used to make a

## 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

Expand All @@ -59,6 +57,7 @@ Contributions are welcome and will be fully credited. We accept contributions vi

## Changelog

- 2024072000 Tested on Moodle 4.4
- 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)
40 changes: 10 additions & 30 deletions classes/condition.php
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ class condition extends \core_availability\condition {
/**
* @var string
*/
protected $ipaddresses = '';
protected string $ipaddresses = '';

/**
* condition constructor.
Expand Down Expand Up @@ -73,11 +73,11 @@ public function __construct($structure) {
* @param bool $grabthelot Performance hint: if true, caches information
* required for all course-modules, to make the front page and similar
* pages work more quickly (works only for current user)
* @param int $userid User ID to check availability for
* @param int $userid User ID to check availability for
*
* @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)) {
return !$not;
Expand Down Expand Up @@ -116,7 +116,7 @@ public function is_available($not, info $info, $grabthelot, $userid) : bool {
* this item
* @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());
}

Expand All @@ -126,7 +126,7 @@ public function get_description($full, $not, info $info) : string {
*
* @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';
}

Expand All @@ -140,43 +140,23 @@ protected function get_debug_string() : string {
*
* @return \stdClass Object representing condition
*/
public static function get_json($ipaddresses) : \stdClass {
return (object)[
public static function get_json(string $ipaddresses): \stdClass {
return (object) [
'type' => 'ipaddress',
'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.
*
* @return \stdClass Structure object (ready to be made into JSON format)
*/
public function save() : \stdClass {
return (object)[
public function save(): \stdClass {
return (object) [
'type' => 'ipaddress',
'ipaddresses' => $this->ipaddresses,
];
}

}
3 changes: 2 additions & 1 deletion classes/frontend.php
Original file line number Diff line number Diff line change
Expand Up @@ -40,10 +40,11 @@ class frontend extends \core_availability\frontend {
*
* @return array
*/
protected function get_javascript_strings() : array {
protected function get_javascript_strings(): array {
return [
'js:ipaddress',
'error_ipaddress',
];
}

}
3 changes: 2 additions & 1 deletion classes/privacy/provider.php
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,8 @@ class provider implements \core_privacy\local\metadata\null_provider {
*
* @return string
*/
public static function get_reason() : string {
public static function get_reason(): string {
return 'privacy:metadata';
}

}
6 changes: 6 additions & 0 deletions environment.xml
Original file line number Diff line number Diff line change
@@ -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>
5 changes: 3 additions & 2 deletions version.php
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,8 @@
defined('MOODLE_INTERNAL') || die();

$plugin->component = 'availability_ipaddress';
$plugin->version = 2022052801;
$plugin->release = '3.11.2';
$plugin->version = 2024072000;
$plugin->release = '4.4.0';
$plugin->requires = 2016120500;
$plugin->maturity = MATURITY_STABLE;
$plugin->supported = [400, 404];

0 comments on commit 8ae5419

Please sign in to comment.