Beispiel #1
0
 /**
  * Reads all received attributes after sending the request.
  *
  * This methods stores known attributes in the property attributes,
  * all attributes (including known attibutes) are stored in rawAttributes
  * or rawVendorAttributes.
  * NOTE: call this function also even if the request was rejected, because the
  * Server returns usualy an errormessage
  *
  * @access public
  * @return bool   true on success, false on error
  */
 function getAttributes()
 {
     while ($attrib = radius_get_attr($this->res)) {
         if (!is_array($attrib)) {
             return false;
         }
         $attr = $attrib['attr'];
         $data = $attrib['data'];
         $this->rawAttributes[$attr] = $data;
         switch ($attr) {
             case RADIUS_FRAMED_IP_ADDRESS:
                 $this->attributes['framed_ip'] = radius_cvt_addr($data);
                 break;
             case RADIUS_FRAMED_IP_NETMASK:
                 $this->attributes['framed_mask'] = radius_cvt_addr($data);
                 break;
             case RADIUS_FRAMED_MTU:
                 $this->attributes['framed_mtu'] = radius_cvt_int($data);
                 break;
             case RADIUS_FRAMED_COMPRESSION:
                 $this->attributes['framed_compression'] = radius_cvt_int($data);
                 break;
             case RADIUS_SESSION_TIMEOUT:
                 $this->attributes['session_timeout'] = radius_cvt_int($data);
                 break;
             case RADIUS_IDLE_TIMEOUT:
                 $this->attributes['idle_timeout'] = radius_cvt_int($data);
                 break;
             case RADIUS_SERVICE_TYPE:
                 $this->attributes['service_type'] = radius_cvt_int($data);
                 break;
             case RADIUS_CLASS:
                 $this->attributes['class'] = radius_cvt_string($data);
                 break;
             case RADIUS_FRAMED_PROTOCOL:
                 $this->attributes['framed_protocol'] = radius_cvt_int($data);
                 break;
             case RADIUS_FRAMED_ROUTING:
                 $this->attributes['framed_routing'] = radius_cvt_int($data);
                 break;
             case RADIUS_FILTER_ID:
                 $this->attributes['filter_id'] = radius_cvt_string($data);
                 break;
             case RADIUS_REPLY_MESSAGE:
                 $this->attributes['reply_message'] = radius_cvt_string($data);
                 break;
             case RADIUS_VENDOR_SPECIFIC:
                 $attribv = radius_get_vendor_attr($data);
                 if (!is_array($attribv)) {
                     return false;
                 }
                 $vendor = $attribv['vendor'];
                 $attrv = $attribv['attr'];
                 $datav = $attribv['data'];
                 $this->rawVendorAttributes[$vendor][$attrv] = $datav;
                 if ($vendor == RADIUS_VENDOR_MICROSOFT) {
                     switch ($attrv) {
                         case RADIUS_MICROSOFT_MS_CHAP2_SUCCESS:
                             $this->attributes['ms_chap2_success'] = radius_cvt_string($datav);
                             break;
                         case RADIUS_MICROSOFT_MS_CHAP_ERROR:
                             $this->attributes['ms_chap_error'] = radius_cvt_string(substr($datav, 1));
                             break;
                         case RADIUS_MICROSOFT_MS_CHAP_DOMAIN:
                             $this->attributes['ms_chap_domain'] = radius_cvt_string($datav);
                             break;
                         case RADIUS_MICROSOFT_MS_MPPE_ENCRYPTION_POLICY:
                             $this->attributes['ms_mppe_encryption_policy'] = radius_cvt_int($datav);
                             break;
                         case RADIUS_MICROSOFT_MS_MPPE_ENCRYPTION_TYPES:
                             $this->attributes['ms_mppe_encryption_types'] = radius_cvt_int($datav);
                             break;
                         case RADIUS_MICROSOFT_MS_CHAP_MPPE_KEYS:
                             $demangled = radius_demangle($this->res, $datav);
                             $this->attributes['ms_chap_mppe_lm_key'] = substr($demangled, 0, 8);
                             $this->attributes['ms_chap_mppe_nt_key'] = substr($demangled, 8, RADIUS_MPPE_KEY_LEN);
                             break;
                         case RADIUS_MICROSOFT_MS_MPPE_SEND_KEY:
                             $this->attributes['ms_chap_mppe_send_key'] = radius_demangle_mppe_key($this->res, $datav);
                             break;
                         case RADIUS_MICROSOFT_MS_MPPE_RECV_KEY:
                             $this->attributes['ms_chap_mppe_recv_key'] = radius_demangle_mppe_key($this->res, $datav);
                             break;
                         case RADIUS_MICROSOFT_MS_PRIMARY_DNS_SERVER:
                             $this->attributes['ms_primary_dns_server'] = radius_cvt_string($datav);
                             break;
                     }
                 }
                 break;
         }
     }
     return true;
 }
Beispiel #2
0
     echo "MS CHAP Error: {$errormsg}<br>\n";
     break;
 case RADIUS_MICROSOFT_MS_CHAP_DOMAIN:
     $domain = radius_cvt_string($datav);
     echo "MS CHAP Domain: {$domain}<br>\n";
     break;
 case RADIUS_MICROSOFT_MS_MPPE_ENCRYPTION_POLICY:
     $policy = radius_cvt_int($datav);
     echo "MS MPPE Policy: {$policy}<br>\n";
     break;
 case RADIUS_MICROSOFT_MS_MPPE_ENCRYPTION_TYPES:
     $type = radius_cvt_int($datav);
     echo "MS MPPE Type: {$type}<br>\n";
     break;
 case RADIUS_MICROSOFT_MS_CHAP_MPPE_KEYS:
     $demangled = radius_demangle($res, $datav);
     $lmkey = substr($demangled, 0, 8);
     $ntkey = substr($demangled, 8, RADIUS_MPPE_KEY_LEN);
     printf("MS MPPE Keys: LM-Key: %s NT-Key: %s<br>\n", bin2hex($lmkey), bin2hex($ntkey));
     break;
 case RADIUS_MICROSOFT_MS_MPPE_SEND_KEY:
     $demangled = radius_demangle_mppe_key($res, $datav);
     printf("MS MPPE Send Key: %s<br>\n", bin2hex($demangled));
     break;
 case RADIUS_MICROSOFT_MS_MPPE_RECV_KEY:
     $demangled = radius_demangle_mppe_key($res, $datav);
     printf("MS MPPE Send Key: %s<br>\n", bin2hex($demangled));
     break;
 case RADIUS_MICROSOFT_MS_PRIMARY_DNS_SERVER:
     $server = radius_cvt_string($datav);
     printf("MS Primary DNS Server: %s<br>\n", $server);