SL-13433 Viewer should recognizes ipv6 links

meow-7.2.2
Mnikolenko Productengine 2020-06-11 17:41:59 +03:00
parent 161ea5b135
commit 9608b6dcac
3 changed files with 53 additions and 0 deletions

View File

@ -1475,4 +1475,43 @@ void LLUrlEntryExperienceProfile::onExperienceDetails( const LLSD& experience_de
callObservers(experience_details[LLExperienceCache::EXPERIENCE_ID].asString(), name, LLStringUtil::null);
}
//
// LLUrlEntryEmail Describes an IPv6 address
//
LLUrlEntryIPv6::LLUrlEntryIPv6()
: LLUrlEntryBase()
{
mHostPath = "https?://\\[([a-f0-9:]+:+)+[a-f0-9]+]";
mPattern = boost::regex(mHostPath + "(:\\d{1,5})?(/\\S*)?",
boost::regex::perl | boost::regex::icase);
mMenuName = "menu_url_http.xml";
mTooltip = LLTrans::getString("TooltipHttpUrl");
}
std::string LLUrlEntryIPv6::getLabel(const std::string &url, const LLUrlLabelCallback &cb)
{
boost::regex regex = boost::regex(mHostPath, boost::regex::perl | boost::regex::icase);
boost::match_results<std::string::const_iterator> matches;
if (boost::regex_search(url, matches, regex))
{
return url.substr(0, matches[0].length());
}
else
{
return url;
}
}
std::string LLUrlEntryIPv6::getQuery(const std::string &url) const
{
boost::regex regex = boost::regex(mHostPath, boost::regex::perl | boost::regex::icase);
boost::match_results<std::string::const_iterator> matches;
return boost::regex_replace(url, regex, "");
}
std::string LLUrlEntryIPv6::getUrl(const std::string &string) const
{
return string;
}

View File

@ -513,5 +513,18 @@ public:
/*virtual*/ std::string getUrl(const std::string &string) const;
};
///
/// LLUrlEntryEmail Describes an IPv6 address
///
class LLUrlEntryIPv6 : public LLUrlEntryBase
{
public:
LLUrlEntryIPv6();
/*virtual*/ std::string getLabel(const std::string &url, const LLUrlLabelCallback &cb);
/*virtual*/ std::string getUrl(const std::string &string) const;
/*virtual*/ std::string getQuery(const std::string &url) const;
std::string mHostPath;
};
#endif

View File

@ -79,6 +79,7 @@ LLUrlRegistry::LLUrlRegistry()
mUrlEntrySLLabel = new LLUrlEntrySLLabel();
registerUrl(mUrlEntrySLLabel);
registerUrl(new LLUrlEntryEmail());
registerUrl(new LLUrlEntryIPv6());
}
LLUrlRegistry::~LLUrlRegistry()