<?php

namespace App\Helpers\Utility;

class SanityChecker {

  static function ip_address($_x, $_reserved = false) {

    $is_v4 = filter_var($_x, FILTER_VALIDATE_IP, $_reserved ? FILTER_FLAG_IPV4 : FILTER_FLAG_IPV4 | FILTER_FLAG_NO_RES_RANGE);
    $is_v6 = filter_var($_x, FILTER_VALIDATE_IP, $_reserved ? FILTER_FLAG_IPV6 : FILTER_FLAG_IPV6 | FILTER_FLAG_NO_RES_RANGE);

    return (($is_v4 && ip2long($_x)) || $is_v6)  ? true : false;
  }

  static function port($_x) {
    return filter_var($_x, FILTER_VALIDATE_INT) && $_x > 0 && $_x < 65536 ? true : false;
  }

  static function name($_x) {
    return preg_match('/^([A-z]|[0-9]|\_|\-)+$/', $_x) ? true : false;
  }

  static function mask($_ip, $_mask) {
    $is_v4 = filter_var($_ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4) && $_mask > 0 && $_mask < 32;
    $is_v6 = filter_var($_ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6) && $_mask > 4 && $_mask < 128;

    return (($is_v4 && ip2long($_ip)) || $is_v6);
  }

  static function speed($_speed) {
    return (int)$_speed > 0 ?? 0;
  }
}

?>