aboutsummaryrefslogtreecommitdiff
path: root/lib/models/WebserviceAccessRule.class.php
diff options
context:
space:
mode:
authorMarcus Eibrink-Lunzenauer <lunzenauer@elan-ev.de>2024-06-18 13:18:06 +0000
committerMarcus Eibrink-Lunzenauer <lunzenauer@elan-ev.de>2024-06-18 13:18:06 +0000
commit33fd1358507b4a5abb3dcebe78d407d0567717c1 (patch)
tree6bd8f6959da4c3fc1b8907c0bbc28eb9e10d4a5a /lib/models/WebserviceAccessRule.class.php
parent42d46671c0309bddb71a91bbfdc5f2fa2e44384e (diff)
Deprecate `StudipAutoloader` and use composer's `autoload`
Closes #4282 Merge request studip/studip!3099
Diffstat (limited to 'lib/models/WebserviceAccessRule.class.php')
-rw-r--r--lib/models/WebserviceAccessRule.class.php133
1 files changed, 0 insertions, 133 deletions
diff --git a/lib/models/WebserviceAccessRule.class.php b/lib/models/WebserviceAccessRule.class.php
deleted file mode 100644
index 48da0ef..0000000
--- a/lib/models/WebserviceAccessRule.class.php
+++ /dev/null
@@ -1,133 +0,0 @@
-<?php
-/**
- * WebserviceAccessRule.class.php
- * model class for table webservice_access_rules
- * this class represents one record of the table webservice_access_rules
- * the column ip_range is converted from a comma separated list to an ArrayObject and vice-versa,
- * to allow array-like access
- *
- * Example:
- * @code
- * $rule = WebserviceAccessRule::find($id);
- * echo $rule['ip_range']; //prints out e.g. 127.0.0.1
- * $rule['ip_range'][] = '192.168.19.0/8';
- * echo $rule['ip_range']; //prints out 127.0.0.1,192.168.19.0/8
- * @endcode
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of
- * the License, or (at your option) any later version.
- *
- * @author André Noack <noack@data-quest.de>
- * @copyright 2011 Stud.IP Core-Group
- * @license http://www.gnu.org/licenses/gpl-2.0.html GPL version 2
- * @category Stud.IP
- *
- * @property string $api_key database column
- * @property string $method database column
- * @property CSVArrayObject $ip_range database column
- * @property string $type database column
- * @property int $id database column
- * @property int|null $mkdate database column
- * @property int|null $chdate database column
- */
-class WebserviceAccessRule extends SimpleORMap
-{
- protected static function configure($config = [])
- {
- $config['db_table'] = 'webservice_access_rules';
- $config['serialized_fields']['ip_range'] = CSVArrayObject::class;
- parent::configure($config);
- }
-
- /**
- * returns all rules for an given api key
- *
- * @param string $api_key
- * @return array of WebserviceAccessRule objects
- */
- static function findByApiKey($api_key)
- {
- return self::findByapi_key($api_key, " ORDER BY type");
- }
-
- /**
- * returns all rules in db sorted by api key
- *
- * @return array of WebserviceAccessRule objects
- */
- static function findAll()
- {
- return self::findBySQL("1 ORDER BY api_key, type");
- }
-
- /**
- * Checks for given api key, methodname and IP Address if access
- * is granted or not
- *
- * @param string $api_key an api key
- * @param string $method a name of an webservice method
- * @param string $ip an IP Address
- * @return boolean returns true if access fpr given params is allowed
- */
- static function checkAccess($api_key, $method, $ip)
- {
- $rules = self::findByApiKey($api_key);
- $access = false;
- foreach ($rules as $rule) {
- if ($rule->type == 'allow'
- && $rule->checkIpInRange($ip)
- && $rule->checkMethodName($method)) {
- $access = true;
- }
- if ($rule->type == 'deny'
- && $rule->checkIpInRange($ip)
- && $rule->checkMethodName($method)) {
- $access = false;
- }
- }
- return $access;
- }
-
- /**
- * checks, if a given IP Address is in the range specified
- * for this rule. If there is no specified range, it returns true
- *
- * @param string $check_ip an IP Address
- * @return boolean true if given Address is in specified range
- */
- function checkIpInRange($check_ip)
- {
- if (!ip2long($check_ip)) {
- return false;
- }
- if (!count($this->ip_range)) {
- return true;
- }
- foreach($this->ip_range as $range) {
- list($ip, $mask) = explode('/', $range);
- if (!$mask) {
- $mask = 32;
- }
- if ( (ip2long($check_ip) & ~((1 << (32 - $mask)) - 1)) == ip2long($ip)) {
- return true;
- }
- }
- return false;
- }
-
- /**
- * checks, if the specified method name for this rule
- * is part of the given one.
- * If there is no specified method name, it returns true
- *
- *
- * @param string $method a webservice method name
- * @return boolean true if given name matches the specified
- */
- function checkMethodName($method)
- {
- return ($method && (!$this->method || mb_strpos($method, $this->method) !== false));
- }
-}