Ejemplo n.º 1
0
 public function testValidate()
 {
     // IPv4 + port
     $this->assertTrue(ViaPortHttp::validate('123.123.123.123:456'));
     // IPv6 + port
     $this->assertTrue(ViaPortHttp::validate('2001:0db8:85a3:0000:0000:8a2e:0370:7334:456'));
     $this->assertTrue(ViaPortHttp::validate('2001:db8:85a3::8a2e:370:7334:456'));
     // Second level domain name + port
     $this->assertTrue(ViaPortHttp::validate('example.com:456'));
     // Third level domain name + port
     $this->assertTrue(ViaPortHttp::validate('proxy.example.com:456'));
     $this->assertTrue(ViaPortHttp::validate('proxy-service.example.com:456'));
     // Bad TLD
     $this->assertFalse(ViaPortHttp::validate('example.123:456'));
     // IPv6, missing segment
     $this->assertFalse(ViaPortHttp::validate('2001:0db8:85a3:0000:0000:8a2e:0370:456'));
     // IPV6, bad char ('z')
     $this->assertFalse(ViaPortHttp::validate('2001:0db8:85a3:0000:0000:8a2e:0370:733z:456'));
     // Bad port number ('http')
     $this->assertFalse(ViaPortHttp::validate('proxy.example.com:http'));
     // Missing port
     $this->assertFalse(ViaPortHttp::validate('proxy.example.com'));
     // Bad leading char in hostname ('-')
     $this->assertFalse(ViaPortHttp::validate('-proxy.example.com:456'));
     // Illegal char in hostname
     $this->assertFalse(ViaPortHttp::validate('pr(oxy.example.com:456'));
     $this->assertFalse(ViaPortHttp::validate('proxy.examp:le.com:456'));
 }
Ejemplo n.º 2
0
 /**
  * @param array $cxn
  * @return array
  *   List of errors. Empty error if OK.
  */
 public static function getValidationMessages($cxn)
 {
     $errors = array();
     if (!is_array($cxn)) {
         $errors['appMeta'] = 'Not an array';
         return $errors;
     }
     // cxnId is completely arbitrary.
     // Secret is base64-encoded AES-256 key (32 bytes, ~45 base64 char).
     foreach (array('cxnId', 'secret', 'appId') as $key) {
         if (empty($cxn[$key])) {
             $errors[$key] = 'Required field';
         }
     }
     foreach (array('appUrl', 'siteUrl') as $key) {
         if (empty($cxn[$key])) {
             $errors[$key] = 'Required field';
         } elseif (!filter_var($cxn[$key], FILTER_VALIDATE_URL)) {
             $errors[$key] = 'Malformed URL';
         }
     }
     if (!isset($cxn['perm']) || !is_array($cxn['perm'])) {
         $errors['perm'] = 'Missing permisisons';
     }
     // viaPort is optional. If specified, expect "ip:port" or "host:port"
     if (!empty($cxn['viaPort']) && !ViaPortHttp::validate($cxn['viaPort'])) {
         $errors['viaPort'] = 'Malformed proxy address';
     }
     return $errors;
 }