use crate::constants::uuids::*;

use crate::prelude::*;
use crate::value::Value;

// Default entries for system_config
// This is separated because the password badlist section may become very long

pub static E_SYSTEM_INFO_V1: LazyLock<EntryInitNew> = LazyLock::new(|| {
    entry_init_fn([
        (Attribute::Class, EntryClass::Object.to_value()),
        (Attribute::Class, EntryClass::SystemInfo.to_value()),
        (Attribute::Class, EntryClass::System.to_value()),
        (Attribute::Uuid, Value::Uuid(UUID_SYSTEM_INFO)),
        (
            Attribute::Description,
            Value::new_utf8s("System (local) info and metadata object."),
        ),
        (Attribute::Version, Value::Uint32(20)),
    ])
});

pub static E_DOMAIN_INFO_DL6: LazyLock<EntryInitNew> = LazyLock::new(|| {
    entry_init_fn([
        (Attribute::Class, EntryClass::Object.to_value()),
        (Attribute::Class, EntryClass::DomainInfo.to_value()),
        (Attribute::Class, EntryClass::System.to_value()),
        (Attribute::Class, EntryClass::KeyObject.to_value()),
        (Attribute::Class, EntryClass::KeyObjectJwtEs256.to_value()),
        (Attribute::Class, EntryClass::KeyObjectJweA128GCM.to_value()),
        (Attribute::Name, Value::new_iname("domain_local")),
        (Attribute::Uuid, Value::Uuid(UUID_DOMAIN_INFO)),
        (
            Attribute::Description,
            Value::new_utf8s("This local domain's info and metadata object."),
        ),
    ])
});

// This is a function instead of a static/lazylock because otherwise it entirely blows up the stack, and we only use it at migration time.
pub fn e_system_config_v1() -> EntryInitNew {
    let mut entry = entry_init_fn([
        (Attribute::Class, EntryClass::Object.to_value()),
        (Attribute::Class, EntryClass::SystemConfig.to_value()),
        (Attribute::Class, EntryClass::System.to_value()),
        (Attribute::Uuid, Value::Uuid(UUID_SYSTEM_CONFIG)),
        (
            Attribute::Description,
            Value::new_utf8s("System (replicated) configuration options."),
        ),
    ]);
    for pw in [
        "bad@no3IBTyqHu$list",
        "demo_badlist_shohfie3aeci2oobur0aru9uushah6EiPi2woh4hohngoighaiRuepieN3ongoo1",
        "100preteamare",
        "14defebrero",
        "1life1love",
        "1life2live",
        "1love1life",
        "1love4life",
        "212224236248",
        "2813308004",
        "2fast2furious",
        "2gether4ever",
        "2pacshakur",
        "30secondstomars",
        "3doorsdown",
        "6cyclemind",
        "<div><embed src=\\",
        "@hotmail.com",
        "@yahoo.com",
        "Lets you update your FunNotes and more!",
        "TEQUIEROMUCHO",
        "TEXT ONLY AD",
        "abretesesamo",
        "administrador",
        "aeropostale",
        "akinkalang",
        "akucintakamu",
        "akusayangkamu",
        "alfayomega",
        "alhamdulillah",
        "allaboutme",
        "allahuakbar",
        "alleyesonme",
        "alquimista",
        "alwaysandforever",
        "amarteduele",
        "amigas4ever",
        "amigasporsiempre",
        "amigasx100pre",
        "amigasxsiempre",
        "amoamifamilia",
        "amordelbueno",
        "amordemivida",
        "amoresperros",
        "amoreterno",
        "amorimposible",
        "amorporsiempre",
        "amorprohibido",
        "amorverdadero",
        "amotemuito",
        "anaranjado",
        "angeldeamor",
        "angellocsin",
        "angelofdeath",
        "anggandako",
        "aniversario",
        "apaixonada",
        "apocalipsa",
        "apocalipse",
        "apocalipsis",
        "apolinario",
        "arquitectura",
        "arrolladora",
        "asieslavida",
        "assalamualaikum",
        "auxiliadora",
        "avengedsevenfold",
        "ayamgoreng",
        "babasonicos",
        "balla4life",
        "barriofino",
        "bball4life",
        "bebitalinda",
        "bellissima",
        "bendiciones",
        "benfiquista",
        "bestfriends4ever",
        "bestfriendsforever",
        "bienvenido",
        "billandben",
        "blackandwhite",
        "blackeyedpeas",
        "bobesponja",
        "bobthebuilder",
        "bomboncito",
        "borreguito",
        "boysoverflowers",
        "bringmetolife",
        "bustitbaby",
        "cachorrita",
        "cachorrito",
        "cafetacuba",
        "calculadora",
        "californication",
        "camiloteamo",
        "candyland1",
        "candyshop1",
        "canttouchthis",
        "caperucita",
        "caprichosa",
        "caradeperro",
        "caranguejo",
        "caricatura",
        "caritadeangel",
        "carteldesanta",
        "castravete",
        "catinthehat",
        "catsanddogs",
        "celticfc1888",
        "cenicienta",
        "chaparrita",
        "chaparrito",
        "charolastra",
        "chicafresa",
        "chikistrikis",
        "chilindrina",
        "chingatumadre",
        "chiquititas",
        "chocoholic",
        "chris brown",
        "chupachups",
        "cintasejati",
        "classof2004",
        "classof2005",
        "classof2006",
        "classof2007",
        "classof2008",
        "classof2009",
        "classof2010",
        "classof2011",
        "classof2012",
        "computacion",
        "comunicacion",
        "confidencial",
        "contabilidad",
        "cookiesncream",
        "corazondemelon",
        "cositarica",
        "cradleoffilth",
        "crazysexycool",
        "crepusculo",
        "crisostomo",
        "cristomeama",
        "cristoteama",
        "cristoteamo",
        "cristovive",
        "cualquiera",
        "cualquiercosa",
        "cuchurrumin",
        "cymruambyth",
        "daddyslilgirl",
        "daddyslittlegirl",
        "danitykane",
        "daveyhavok",
        "dcshoecousa",
        "deportivocali",
        "depredador",
        "desiderata",
        "dgenerationx",
        "dimmuborgir",
        "diosesbueno",
        "diostebendiga",
        "divalicious",
        "dolcegabbana",
        "dracomalfoy",
        "dragosteamea",
        "eatmyshorts",
        "ecuatoriana",
        "elamorapesta",
        "elamordemivida",
        "elamorduele",
        "elamornoexiste",
        "emperatriz",
        "encantadia",
        "enfermagem",
        "enfermeria",
        "ereselamordemivida",
        "ereslomaximo",
        "ereslomejor",
        "eresmiamor",
        "eresmivida",
        "escritorio",
        "espiritusanto",
        "estadosunidos",
        "estrelinha",
        "estudiante",
        "ewankosayo",
        "extraterrestre",
        "eyeshield21",
        "fadetoblack",
        "fergalicious",
        "figueiredo",
        "filadelfia",
        "finisterra",
        "fishandchips",
        "flordeliza",
        "flordeloto",
        "floricienta",
        "florinsalam",
        "floripondia",
        "foreverandever",
        "frangipani",
        "free2rhyme",
        "fresasconcrema",
        "frootloops",
        "fuckevery1",
        "fuckthepope",
        "funinthesun",
        "funkymunky",
        "fushigiyugi",
        "fushigiyuugi",
        "gastronomia",
        "gatitolindo",
        "gearsofwar",
        "gettherefast",
        "girlygirl1",
        "glorytogod",
        "godschild1",
        "gofuckyourself",
        "goody2shoes",
        "grandtheftauto",
        "grenouille",
        "gryffindor",
        "gummybear1",
        "gunsandroses",
        "gunsnroses",
        "habbohotel",
        "hakunamatata",
        "hannah montana",
        "happygolucky",
        "harry potter",
        "hateitorloveit",
        "haveaniceday",
        "hello kitty",
        "hindikoalam",
        "hipopotamo",
        "hocuspocus",
        "holaatodos",
        "holacomoestas",
        "holaquetal",
        "hollaback1",
        "homeandaway",
        "homesweethome",
        "hoobastank",
        "hotandsexy",
        "hotmail.com",
        "hotmail123",
        "hugsandkisses",
        "hugsnkisses",
        "hunnibunni",
        "hunterxhunter",
        "i love you",
        "i.love.you",
        "i_love_you",
        "iamwhatiam",
        "ichliebedich",
        "idontloveyou",
        "ihatelife1",
        "ihatemylife",
        "ihave3kids",
        "iheartyou!",
        "iheartyou1",
        "iheartyou2",
        "ikawlamang",
        "ikhouvanjou",
        "illnevertell",
        "ilove2dance",
        "iloveboys!",
        "iloveboys1",
        "iloveboys2",
        "ilovechrisbrown",
        "ilovecody1",
        "ilovedogs1",
        "ilovejake1",
        "ilovejose1",
        "ilovejosh!",
        "ilovejosh1",
        "ilovekyle1",
        "ilovemike!",
        "ilovemyboo",
        "ilovemycat",
        "ilovemydad",
        "ilovemydaddy",
        "ilovemydog",
        "ilovemyfriends",
        "ilovemymom",
        "ilovemymommy",
        "ilovemymum",
        "ilovemymummy",
        "ilovemysister",
        "ilovemyson",
        "ilovenickjonas",
        "ilovenoone",
        "ilovepink1",
        "iloveryan!",
        "iloveryan1",
        "ilovesome1",
        "ilovethelord",
        "ilovethisgame",
        "ilovetodance",
        "iloveusomuch",
        "iloveyousomuch",
        "ilovezacefron",
        "iluv2dance",
        "iluvu4ever",
        "imprimanta",
        "imthebest1",
        "inalcanzable",
        "indragostita",
        "inframundo",
        "inglaterra",
        "ingoditrust",
        "inmaculada",
        "inolvidable",
        "insaneclownposse",
        "inspiracion",
        "inteligencia",
        "inteligente",
        "invu4uraqt",
        "ioriyagami",
        "itsallaboutme",
        "iubireamea",
        "iwillsurvive",
        "jabbawockeez",
        "jackandjill",
        "jamiroquai",
        "jensenackles",
        "jesusesamor",
        "jigglypuff",
        "joeyjordison",
        "jogabonito",
        "jonas brothers",
        "joshgroban",
        "juggalette",
        "kagandahan",
        "kaleidostar",
        "keepitreal",
        "keteimporta",
        "kilometros",
        "kimsamsoon",
        "kingofkings",
        "kmzwa8awaa",
        "kumbiakings",
        "kuvhlubkoj",
        "lacramioara",
        "lacunacoil",
        "laffytaffy",
        "lamaravilla",
        "lamashermosa",
        "laprincesita",
        "larcenciel",
        "lasdivinas",
        "lavidaesbella",
        "lavidaloca",
        "leedongwook",
        "leothelion",
        "licenciada",
        "lifegoeson",
        "lifesabitch",
        "linkin park",
        "lipgloss12",
        "literatura",
        "livelaughlove",
        "livelovelaugh",
        "liveyourlife",
        "lordoftherings",
        "loserface1",
        "losmejores",
        "lotsoflove",
        "loveandhate",
        "loveandpeace",
        "loveisintheair",
        "lovemeorhateme",
        "lovenkrands",
        "loveofmylife",
        "loveorhate",
        "lovetolove",
        "loveu4ever",
        "loveydovey",
        "loveyousomuch",
        "luciernaga",
        "luvme4ever",
        "luzviminda",
        "machupichu",
        "madalinutza",
        "mahal kita",
        "mahalkokayo",
        "mahalnamahalkita",
        "makedonija",
        "mamichula1",
        "mapagmahal",
        "maravillosa",
        "maravilloso",
        "mardecopas",
        "mariadelcarmen",
        "matrimonio",
        "meamomucho",
        "mejoresamigas",
        "memyselfandi",
        "meneketehe",
        "mequieromucho",
        "mercadotecnia",
        "metamorfosis",
        "miamorerestu",
        "miamorteamo",
        "mikeshinoda",
        "milagritos",
        "millonarios",
        "mimamamemima",
        "mimejoramiga",
        "mirmodepon",
        "mis3amores",
        "misdosamores",
        "misericordia",
        "missthang1",
        "miunicoamor",
        "mividaerestu",
        "mividaloca",
        "mommasgirl",
        "mommyanddaddy",
        "monserrath",
        "morethanwords",
        "moscraciun",
        "moulinrouge",
        "msnhotmail",
        "muiesteaua",
        "mummyanddaddy",
        "mummysgirl",
        "musicislife",
        "musicismylife",
        "muthafucka",
        "muñequita",
        "mychemicalromance",
        "mylittlepony",
        "myonlylove",
        "myslideshow",
        "myspace.com",
        "nabucodonosor",
        "nascimento",
        "nasigoreng",
        "nebunatica",
        "nepomuceno",
        "neversaynever",
        "nick jonas",
        "nickjonas1",
        "nistelrooy",
        "nomeacuerdo",
        "nomeolvides",
        "nosequeponer",
        "nuncateolvidare",
        "nymphetamine",
        "odontologia",
        "ojosverdes",
        "oneandonly",
        "oneofakind",
        "onetreehill",
        "onomatopoeia",
        "ositolindo",
        "ositopanda",
        "padrinosmagicos",
        "painislove",
        "pandalandia",
        "panganiban",
        "pangilinan",
        "panicatthedisco",
        "pantelimon",
        "paralelepipedo",
        "paralelipiped",
        "parasiempre",
        "pasawayako",
        "pasodeblas",
        "peace&love",
        "peaceandlove",
        "periwinkle",
        "petewentz1",
        "pimpmyride",
        "pinkaholic",
        "pinkandblue",
        "playa4life",
        "policarpio",
        "politecnico",
        "praisethelord",
        "prettyinpink",
        "prostituta",
        "psicologia",
        "psihologie",
        "puccaygaru",
        "punknotdead",
        "pussinboots",
        "queteimporta",
        "quetzalcoatl",
        "qwertyuiopasdfghjklzxcvbnm",
        "recuerdame",
        "resistencia",
        "restinpeace",
        "reymisterio619",
        "reymysterio619",
        "ricardoarjona",
        "romeoyjulieta",
        "rosesarered",
        "rositafresita",
        "rupertgrint",
        "ryansheckler",
        "ryomaechizen",
        "sampaguita",
        "sangreazul",
        "sarangheyo",
        "sassygirl1",
        "sasukeuchiha",
        "schokolade",
        "sebasteamo",
        "sectumsempra",
        "semeolvido",
        "seniseviyorum",
        "sentimiento",
        "sesshomaru",
        "sesshoumaru",
        "sexandthecity",
        "sexonthebeach",
        "sexymomma1",
        "sexythang1",
        "sexything1",
        "shaggy2dope",
        "shippuuden",
        "shopaholic",
        "showmethemoney",
        "siemprejuntos",
        "siempreteamare",
        "simanjuntak",
        "simplementeyo",
        "sinterklaas",
        "sk8er4life",
        "skateordie",
        "soloparami",
        "soloparati",
        "somostuyyo",
        "souljaboy1",
        "souljagirl",
        "souljagurl",
        "soyelmejor",
        "soylamejor",
        "soylomaximo",
        "soylomejor",
        "spongebobsquarepants",
        "steauabucuresti",
        "suankularb",
        "subhanallah",
        "sugarandspice",
        "sugarnspice",
        "superchica",
        "superinggo",
        "superpoderosa",
        "supladitah",
        "tamagotchi",
        "taugammaphi",
        "teamareporsiempre",
        "teamaresiempre",
        "teamarex100pre",
        "teamarexsiempre",
        "teamobebito",
        "teamodemasiado",
        "teamogordo",
        "teamomiamor",
        "teamomibebe",
        "teamomivida",
        "teamosoloati",
        "teamotanto",
        "teamox100pre",
        "tecnologia",
        "teextraño",
        "teiubescmult",
        "tekelomucho",
        "tekelomuxo",
        "tekieromucho",
        "tekieromuxo",
        "telecomanda",
        "teletubbies",
        "tenecesito",
        "tengounamor",
        "teolvidare",
        "tequieromucho",
        "tequieromuxo",
        "tesigoamando",
        "thaitanium",
        "theblackparade",
        "theoneandonly",
        "theveronicas",
        "thisismypassword",
        "threedaysgrace",
        "timbiriche",
        "tinkywinky",
        "titoelbambino",
        "tivogliobene",
        "todalavida",
        "todocambio",
        "todopoderoso",
        "tohoshinki",
        "tokio hotel",
        "tomandjerry",
        "tomwelling",
        "trandafiri",
        "trincheranorte",
        "triskelion",
        "tueresmiamor",
        "tueresmivida",
        "tumamacalata",
        "tuttifrutti",
        "tuyyox100pre",
        "uchihasasuke",
        "undermyskin",
        "unforgetable",
        "unodostres",
        "vacaciones",
        "valderrama",
        "vatoslocos",
        "verjaardag",
        "vetealamierda",
        "veterinaria",
        "villacorta",
        "vivaelrock",
        "vivalaraza",
        "vivalavida",
        "vivelavida",
        "webelongtogether",
        "weezyfbaby",
        "welcometomylife",
        "whereisthelove",
        "winniethepooh",
        "wipemedown",
        "wisinyandel",
        "wisinyyandel",
        "worldofwarcraft",
        "yosoyelmejor",
        "yosoylamejor",
        "youcantseeme",
        "yougotserved",
        "yuyuhakusho",
        "zonnebloem",
    ] {
        entry.add_ava(Attribute::BadlistPassword, Value::new_iutf8(pw));
    }
    entry
}
