Skip to content

Commit 0572a6a

Browse files
authored
Update Utils.php
added ValidateDomain method
1 parent eaac955 commit 0572a6a

File tree

1 file changed

+22
-7
lines changed

1 file changed

+22
-7
lines changed

lib/MailSo/Base/Utils.php

Lines changed: 22 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2326,16 +2326,31 @@ public static function Hmac($sData, $sKey)
23262326
}
23272327

23282328
/**
2329-
* @param string $sDomain
2329+
* @param string $domain
23302330
*
23312331
* @return bool
23322332
*/
2333-
public static function ValidateDomain($sDomain)
2334-
{
2335-
$aMatch = array();
2336-
return \preg_match('/.+(\.[a-zA-Z]+)$/', $sDomain, $aMatch) && !empty($aMatch[1]) && \in_array($aMatch[1], \explode(' ',
2337-
'.aero .asia .biz .cat .com .coop .edu .gov .info .int .jobs .mil .mobi .museum .name .net .org .pro .tel .travel .xxx .ac .ad .ae .af .ag .ai .al .am .an .ao .aq .ar .as .at .au .aw .ax .az .ba .bb .bd .be .bf .bg .bh .bi .bj .bm .bn .bo .br .bs .bt .bv .bw .by .bz .ca .cc .cd .cf .cg .ch .ci .ck .cl .cm .cn .co .cr .cs .cu .cv .cx .cy .cz .dd .de .dj .dk .dm .do .dz .ec .ee .eg .er .es .et .eu .fi .fj .fk .fm .fo .fr .ga .gb .gd .ge .gf .gg .gh .gi .gl .gm .gn .gp .gq .gr .gs .gt .gu .gw .gy .hk .hm .hn .hr .ht .hu .id .ie .il .im .in .io .iq .ir .is .it .je .jm .jo .jp .ke .kg .kh .ki .km .kn .kp .kr .kw .ky .kz .la .lb .lc .li .lk .lr .ls .lt .lu .lv .ly .ma .mc .md .me .mg .mh .mk .ml .mm .mn .mo .mp .mq .mr .ms .mt .mu .mv .mw .mx .my .mz .na .nc .ne .nf .ng .ni .nl .no .np .nr .nu .nz .om .pa .pe .pf .pg .ph .pk .pl .pm .pn .pr .ps .pt .pw .py .qa .re .ro .rs .ru . .rw .sa .sb .sc .sd .se .sg .sh .si .sj .sk .sl .sm .sn .so .sr .st .su .sv .sy .sz .tc .td .tf .tg .th .tj .tk .tl .tm .tn .to .tp .tr .tt .tv .tw .tz .ua .ug .uk .us .uy .uz .va .vc .ve .vg .vi .vn .vu .wf .ws .ye .yt .za .zm .zw'
2338-
));
2333+
public static function ValidateDomain($domain) {
2334+
// Check for starting and ending hyphen(s)
2335+
if(preg_match('/-./', $domain) || substr($domain, 1) == '-') {
2336+
return false;
2337+
}
2338+
2339+
// Detect and convert international UTF-8 domain names to IDNA ASCII form
2340+
try {
2341+
if(mb_detect_encoding($domain) != "ASCII") {
2342+
$idn_dom = \MailSo\Base\Utils::idn()->encode($domain);
2343+
} else {
2344+
$idn_dom = $domain;
2345+
}
2346+
} catch (\Exception $oEx) {
2347+
return false;
2348+
}
2349+
// Validate
2350+
if(filter_var($idn_dom, FILTER_VALIDATE_DOMAIN, FILTER_FLAG_HOSTNAME) != false) {
2351+
return true;
2352+
}
2353+
return false;
23392354
}
23402355

23412356
/**

0 commit comments

Comments
 (0)