using System.Collections.Immutable; using Bit.Core.Enums; using Bit.Core.Models.Data.Organizations.OrganizationUsers; using Bit.Core.Models.StaticStore; using Bit.Core.Models.StaticStore.Plans; namespace Bit.Core.Utilities; public static class StaticStore { static StaticStore() { #region Global Domains GlobalDomains = new Dictionary>(); GlobalDomains.Add(GlobalEquivalentDomainsType.Ameritrade, new List { "ameritrade.com", "tdameritrade.com" }); GlobalDomains.Add(GlobalEquivalentDomainsType.BoA, new List { "bankofamerica.com", "bofa.com", "mbna.com", "usecfo.com" }); GlobalDomains.Add(GlobalEquivalentDomainsType.Sprint, new List { "sprint.com", "sprintpcs.com", "nextel.com" }); GlobalDomains.Add(GlobalEquivalentDomainsType.Google, new List { "youtube.com", "google.com", "gmail.com" }); GlobalDomains.Add(GlobalEquivalentDomainsType.Apple, new List { "apple.com", "icloud.com" }); GlobalDomains.Add(GlobalEquivalentDomainsType.WellsFargo, new List { "wellsfargo.com", "wf.com", "wellsfargoadvisors.com" }); GlobalDomains.Add(GlobalEquivalentDomainsType.Merrill, new List { "mymerrill.com", "ml.com", "merrilledge.com" }); GlobalDomains.Add(GlobalEquivalentDomainsType.Citi, new List { "accountonline.com", "citi.com", "citibank.com", "citicards.com", "citibankonline.com" }); GlobalDomains.Add(GlobalEquivalentDomainsType.Cnet, new List { "cnet.com", "cnettv.com", "com.com", "download.com", "news.com", "search.com", "upload.com" }); GlobalDomains.Add(GlobalEquivalentDomainsType.Gap, new List { "bananarepublic.com", "gap.com", "oldnavy.com", "piperlime.com" }); GlobalDomains.Add(GlobalEquivalentDomainsType.Microsoft, new List { "bing.com", "hotmail.com", "live.com", "microsoft.com", "msn.com", "passport.net", "windows.com", "microsoftonline.com", "office.com", "office365.com", "microsoftstore.com", "xbox.com", "azure.com", "windowsazure.com" }); GlobalDomains.Add(GlobalEquivalentDomainsType.United, new List { "ua2go.com", "ual.com", "united.com", "unitedwifi.com" }); GlobalDomains.Add(GlobalEquivalentDomainsType.Yahoo, new List { "overture.com", "yahoo.com" }); GlobalDomains.Add(GlobalEquivalentDomainsType.Zonelabs, new List { "zonealarm.com", "zonelabs.com" }); GlobalDomains.Add(GlobalEquivalentDomainsType.PayPal, new List { "paypal.com", "paypal-search.com" }); GlobalDomains.Add(GlobalEquivalentDomainsType.Avon, new List { "avon.com", "youravon.com" }); GlobalDomains.Add(GlobalEquivalentDomainsType.Diapers, new List { "diapers.com", "soap.com", "wag.com", "yoyo.com", "beautybar.com", "casa.com", "afterschool.com", "vine.com", "bookworm.com", "look.com", "vinemarket.com" }); GlobalDomains.Add(GlobalEquivalentDomainsType.Contacts, new List { "1800contacts.com", "800contacts.com" }); GlobalDomains.Add(GlobalEquivalentDomainsType.Amazon, new List { "amazon.com", "amazon.com.be", "amazon.ae", "amazon.ca", "amazon.co.uk", "amazon.com.au", "amazon.com.br", "amazon.com.mx", "amazon.com.tr", "amazon.de", "amazon.es", "amazon.fr", "amazon.in", "amazon.it", "amazon.nl", "amazon.pl", "amazon.sa", "amazon.se", "amazon.sg" }); GlobalDomains.Add(GlobalEquivalentDomainsType.Cox, new List { "cox.com", "cox.net", "coxbusiness.com" }); GlobalDomains.Add(GlobalEquivalentDomainsType.Norton, new List { "mynortonaccount.com", "norton.com" }); GlobalDomains.Add(GlobalEquivalentDomainsType.Verizon, new List { "verizon.com", "verizon.net" }); GlobalDomains.Add(GlobalEquivalentDomainsType.Buy, new List { "rakuten.com", "buy.com" }); GlobalDomains.Add(GlobalEquivalentDomainsType.Sirius, new List { "siriusxm.com", "sirius.com" }); GlobalDomains.Add(GlobalEquivalentDomainsType.Ea, new List { "ea.com", "origin.com", "play4free.com", "tiberiumalliance.com" }); GlobalDomains.Add(GlobalEquivalentDomainsType.Basecamp, new List { "37signals.com", "basecamp.com", "basecamphq.com", "highrisehq.com" }); GlobalDomains.Add(GlobalEquivalentDomainsType.Steam, new List { "steampowered.com", "steamcommunity.com", "steamgames.com" }); GlobalDomains.Add(GlobalEquivalentDomainsType.Chart, new List { "chart.io", "chartio.com" }); GlobalDomains.Add(GlobalEquivalentDomainsType.Gotomeeting, new List { "gotomeeting.com", "citrixonline.com" }); GlobalDomains.Add(GlobalEquivalentDomainsType.Gogo, new List { "gogoair.com", "gogoinflight.com" }); GlobalDomains.Add(GlobalEquivalentDomainsType.Oracle, new List { "mysql.com", "oracle.com" }); GlobalDomains.Add(GlobalEquivalentDomainsType.Discover, new List { "discover.com", "discovercard.com" }); GlobalDomains.Add(GlobalEquivalentDomainsType.Dcu, new List { "dcu.org", "dcu-online.org" }); GlobalDomains.Add(GlobalEquivalentDomainsType.Healthcare, new List { "healthcare.gov", "cuidadodesalud.gov", "cms.gov" }); GlobalDomains.Add(GlobalEquivalentDomainsType.Pepco, new List { "pepco.com", "pepcoholdings.com" }); GlobalDomains.Add(GlobalEquivalentDomainsType.Century21, new List { "century21.com", "21online.com" }); GlobalDomains.Add(GlobalEquivalentDomainsType.Comcast, new List { "comcast.com", "comcast.net", "xfinity.com" }); GlobalDomains.Add(GlobalEquivalentDomainsType.Cricket, new List { "cricketwireless.com", "aiowireless.com" }); GlobalDomains.Add(GlobalEquivalentDomainsType.Mtb, new List { "mandtbank.com", "mtb.com" }); GlobalDomains.Add(GlobalEquivalentDomainsType.Dropbox, new List { "dropbox.com", "getdropbox.com" }); GlobalDomains.Add(GlobalEquivalentDomainsType.Snapfish, new List { "snapfish.com", "snapfish.ca" }); GlobalDomains.Add(GlobalEquivalentDomainsType.Alibaba, new List { "alibaba.com", "aliexpress.com", "aliyun.com", "net.cn" }); GlobalDomains.Add(GlobalEquivalentDomainsType.Playstation, new List { "playstation.com", "sonyentertainmentnetwork.com" }); GlobalDomains.Add(GlobalEquivalentDomainsType.Mercado, new List { "mercadolivre.com", "mercadolivre.com.br", "mercadolibre.com", "mercadolibre.com.ar", "mercadolibre.com.mx" }); GlobalDomains.Add(GlobalEquivalentDomainsType.Zendesk, new List { "zendesk.com", "zopim.com" }); GlobalDomains.Add(GlobalEquivalentDomainsType.Autodesk, new List { "autodesk.com", "tinkercad.com" }); GlobalDomains.Add(GlobalEquivalentDomainsType.RailNation, new List { "railnation.ru", "railnation.de", "rail-nation.com", "railnation.gr", "railnation.us", "trucknation.de", "traviangames.com" }); GlobalDomains.Add(GlobalEquivalentDomainsType.Wpcu, new List { "wpcu.coop", "wpcuonline.com" }); GlobalDomains.Add(GlobalEquivalentDomainsType.Mathletics, new List { "mathletics.com", "mathletics.com.au", "mathletics.co.uk" }); GlobalDomains.Add(GlobalEquivalentDomainsType.Discountbank, new List { "discountbank.co.il", "telebank.co.il" }); GlobalDomains.Add(GlobalEquivalentDomainsType.Mi, new List { "mi.com", "xiaomi.com" }); GlobalDomains.Add(GlobalEquivalentDomainsType.Postepay, new List { "postepay.it", "poste.it" }); GlobalDomains.Add(GlobalEquivalentDomainsType.Facebook, new List { "facebook.com", "messenger.com" }); GlobalDomains.Add(GlobalEquivalentDomainsType.Skysports, new List { "skysports.com", "skybet.com", "skyvegas.com" }); GlobalDomains.Add(GlobalEquivalentDomainsType.Disney, new List { "disneymoviesanywhere.com", "go.com", "disney.com", "dadt.com", "disneyplus.com" }); GlobalDomains.Add(GlobalEquivalentDomainsType.Pokemon, new List { "pokemon-gl.com", "pokemon.com" }); GlobalDomains.Add(GlobalEquivalentDomainsType.Uv, new List { "myuv.com", "uvvu.com" }); GlobalDomains.Add(GlobalEquivalentDomainsType.Mdsol, new List { "mdsol.com", "imedidata.com" }); GlobalDomains.Add(GlobalEquivalentDomainsType.Yahavo, new List { "bank-yahav.co.il", "bankhapoalim.co.il" }); GlobalDomains.Add(GlobalEquivalentDomainsType.Sears, new List { "sears.com", "shld.net" }); GlobalDomains.Add(GlobalEquivalentDomainsType.Xiami, new List { "xiami.com", "alipay.com" }); GlobalDomains.Add(GlobalEquivalentDomainsType.Belkin, new List { "belkin.com", "seedonk.com" }); GlobalDomains.Add(GlobalEquivalentDomainsType.Turbotax, new List { "turbotax.com", "intuit.com" }); GlobalDomains.Add(GlobalEquivalentDomainsType.Shopify, new List { "shopify.com", "myshopify.com" }); GlobalDomains.Add(GlobalEquivalentDomainsType.Ebay, new List { "ebay.com", "ebay.at", "ebay.be", "ebay.ca", "ebay.ch", "ebay.cn", "ebay.co.jp", "ebay.co.th", "ebay.co.uk", "ebay.com.au", "ebay.com.hk", "ebay.com.my", "ebay.com.sg", "ebay.com.tw", "ebay.de", "ebay.es", "ebay.fr", "ebay.ie", "ebay.in", "ebay.it", "ebay.nl", "ebay.ph", "ebay.pl" }); GlobalDomains.Add(GlobalEquivalentDomainsType.Techdata, new List { "techdata.com", "techdata.ch" }); GlobalDomains.Add(GlobalEquivalentDomainsType.Schwab, new List { "schwab.com", "schwabplan.com" }); GlobalDomains.Add(GlobalEquivalentDomainsType.Tesla, new List { "tesla.com", "teslamotors.com" }); GlobalDomains.Add(GlobalEquivalentDomainsType.MorganStanley, new List { "morganstanley.com", "morganstanleyclientserv.com", "stockplanconnect.com", "ms.com" }); GlobalDomains.Add(GlobalEquivalentDomainsType.TaxAct, new List { "taxact.com", "taxactonline.com" }); GlobalDomains.Add(GlobalEquivalentDomainsType.Wikimedia, new List { "mediawiki.org", "wikibooks.org", "wikidata.org", "wikimedia.org", "wikinews.org", "wikipedia.org", "wikiquote.org", "wikisource.org", "wikiversity.org", "wikivoyage.org", "wiktionary.org" }); GlobalDomains.Add(GlobalEquivalentDomainsType.Airbnb, new List { "airbnb.at", "airbnb.be", "airbnb.ca", "airbnb.ch", "airbnb.cl", "airbnb.co.cr", "airbnb.co.id", "airbnb.co.in", "airbnb.co.kr", "airbnb.co.nz", "airbnb.co.uk", "airbnb.co.ve", "airbnb.com", "airbnb.com.ar", "airbnb.com.au", "airbnb.com.bo", "airbnb.com.br", "airbnb.com.bz", "airbnb.com.co", "airbnb.com.ec", "airbnb.com.gt", "airbnb.com.hk", "airbnb.com.hn", "airbnb.com.mt", "airbnb.com.my", "airbnb.com.ni", "airbnb.com.pa", "airbnb.com.pe", "airbnb.com.py", "airbnb.com.sg", "airbnb.com.sv", "airbnb.com.tr", "airbnb.com.tw", "airbnb.cz", "airbnb.de", "airbnb.dk", "airbnb.es", "airbnb.fi", "airbnb.fr", "airbnb.gr", "airbnb.gy", "airbnb.hu", "airbnb.ie", "airbnb.is", "airbnb.it", "airbnb.jp", "airbnb.mx", "airbnb.nl", "airbnb.no", "airbnb.pl", "airbnb.pt", "airbnb.ru", "airbnb.se" }); GlobalDomains.Add(GlobalEquivalentDomainsType.Eventbrite, new List { "eventbrite.at", "eventbrite.be", "eventbrite.ca", "eventbrite.ch", "eventbrite.cl", "eventbrite.co", "eventbrite.co.nz", "eventbrite.co.uk", "eventbrite.com", "eventbrite.com.ar", "eventbrite.com.au", "eventbrite.com.br", "eventbrite.com.mx", "eventbrite.com.pe", "eventbrite.de", "eventbrite.dk", "eventbrite.es", "eventbrite.fi", "eventbrite.fr", "eventbrite.hk", "eventbrite.ie", "eventbrite.it", "eventbrite.nl", "eventbrite.pt", "eventbrite.se", "eventbrite.sg" }); GlobalDomains.Add(GlobalEquivalentDomainsType.StackExchange, new List { "stackexchange.com", "superuser.com", "stackoverflow.com", "serverfault.com", "mathoverflow.net", "askubuntu.com", "stackapps.com" }); GlobalDomains.Add(GlobalEquivalentDomainsType.Docusign, new List { "docusign.com", "docusign.net" }); GlobalDomains.Add(GlobalEquivalentDomainsType.Envato, new List { "envato.com", "themeforest.net", "codecanyon.net", "videohive.net", "audiojungle.net", "graphicriver.net", "photodune.net", "3docean.net" }); GlobalDomains.Add(GlobalEquivalentDomainsType.X10Hosting, new List { "x10hosting.com", "x10premium.com" }); GlobalDomains.Add(GlobalEquivalentDomainsType.Cisco, new List { "dnsomatic.com", "opendns.com", "umbrella.com" }); GlobalDomains.Add(GlobalEquivalentDomainsType.CedarFair, new List { "cagreatamerica.com", "canadaswonderland.com", "carowinds.com", "cedarfair.com", "cedarpoint.com", "dorneypark.com", "kingsdominion.com", "knotts.com", "miadventure.com", "schlitterbahn.com", "valleyfair.com", "visitkingsisland.com", "worldsoffun.com" }); GlobalDomains.Add(GlobalEquivalentDomainsType.Ubiquiti, new List { "ubnt.com", "ui.com" }); GlobalDomains.Add(GlobalEquivalentDomainsType.Discord, new List { "discordapp.com", "discord.com" }); GlobalDomains.Add(GlobalEquivalentDomainsType.Netcup, new List { "netcup.de", "netcup.eu", "customercontrolpanel.de" }); GlobalDomains.Add(GlobalEquivalentDomainsType.Yandex, new List { "yandex.com", "ya.ru", "yandex.az", "yandex.by", "yandex.co.il", "yandex.com.am", "yandex.com.ge", "yandex.com.tr", "yandex.ee", "yandex.fi", "yandex.fr", "yandex.kg", "yandex.kz", "yandex.lt", "yandex.lv", "yandex.md", "yandex.pl", "yandex.ru", "yandex.tj", "yandex.tm", "yandex.ua", "yandex.uz" }); GlobalDomains.Add(GlobalEquivalentDomainsType.Sony, new List { "sonyentertainmentnetwork.com", "sony.com" }); GlobalDomains.Add(GlobalEquivalentDomainsType.Proton, new List { "proton.me", "protonmail.com", "protonvpn.com" }); GlobalDomains.Add(GlobalEquivalentDomainsType.Ubisoft, new List { "ubisoft.com", "ubi.com" }); GlobalDomains.Add(GlobalEquivalentDomainsType.TransferWise, new List { "transferwise.com", "wise.com" }); GlobalDomains.Add(GlobalEquivalentDomainsType.TakeawayEU, new List { "takeaway.com", "just-eat.dk", "just-eat.no", "just-eat.fr", "just-eat.ch", "lieferando.de", "lieferando.at", "thuisbezorgd.nl", "pyszne.pl" }); GlobalDomains.Add(GlobalEquivalentDomainsType.Atlassian, new List { "atlassian.com", "bitbucket.org", "trello.com", "statuspage.io", "atlassian.net", "jira.com" }); GlobalDomains.Add(GlobalEquivalentDomainsType.Pinterest, new List { "pinterest.com", "pinterest.com.au", "pinterest.cl", "pinterest.de", "pinterest.dk", "pinterest.es", "pinterest.fr", "pinterest.co.uk", "pinterest.jp", "pinterest.co.kr", "pinterest.nz", "pinterest.pt", "pinterest.se" }); #endregion Plans = new List { new EnterprisePlan(true), new EnterprisePlan(false), new TeamsStarterPlan(), new TeamsPlan(true), new TeamsPlan(false), new Enterprise2020Plan(true), new Enterprise2020Plan(false), new Teams2020Plan(true), new Teams2020Plan(false), new FamiliesPlan(), new FreePlan(), new CustomPlan(), new Enterprise2019Plan(true), new Enterprise2019Plan(false), new Teams2019Plan(true), new Teams2019Plan(false), new Families2019Plan(), }.ToImmutableList(); } public static IDictionary> GlobalDomains { get; set; } public static IEnumerable Plans { get; } public static IEnumerable SponsoredPlans { get; set; } = new[] { new SponsoredPlan { PlanSponsorshipType = PlanSponsorshipType.FamiliesForEnterprise, SponsoredProductType = ProductType.Families, SponsoringProductType = ProductType.Enterprise, StripePlanId = "2021-family-for-enterprise-annually", UsersCanSponsor = (OrganizationUserOrganizationDetails org) => GetPlan(org.PlanType).Product == ProductType.Enterprise, } }; public static Plan GetPlan(PlanType planType) => Plans.SingleOrDefault(p => p.Type == planType); public static SponsoredPlan GetSponsoredPlan(PlanSponsorshipType planSponsorshipType) => SponsoredPlans.FirstOrDefault(p => p.PlanSponsorshipType == planSponsorshipType); /// /// Determines if the stripe plan id is an addon item by checking if the provided stripe plan id /// matches either the or /// in any . /// /// /// /// True if the stripePlanId is a addon product, false otherwise /// public static bool IsAddonSubscriptionItem(string stripePlanId) { return Plans.Any(p => p.PasswordManager.StripeStoragePlanId == stripePlanId || (p.SecretsManager?.StripeServiceAccountPlanId == stripePlanId)); } }