Replace Aspose.Words with OnlyOffice Document Server for generating bitmap previews of office documents (Word, Excel, PowerPoint, etc.). Backend: - Add cista/onlyoffice.py conversion client - Convert office docs directly to PNG via OnlyOffice, then AVIF via pyvips - Make office previews optional based on OnlyOffice availability - Remove Aspose.Words dependency and all related code - Add spreadsheet and presentation format support Frontend: - Mark office files as previewable in Document.ts - Add office extensions to MediaPreview.vue preview list - Fix pre-existing @ts-ignore in HeaderMain.vue Tests: - Fix test_lrucache.py parameter name (open -> opener) Also run ruff format across the codebase to satisfy linter checks.
1039 lines
13 KiB
Python
1039 lines
13 KiB
Python
import secrets
|
|
|
|
|
|
def generate(n=4):
|
|
"""Generate a password of random words without repeating any word."""
|
|
wl = list(words)
|
|
return ".".join(wl.pop(secrets.randbelow(len(wl))) for i in range(n))
|
|
|
|
|
|
# A custom list of 1024 common 3-6 letter words, with unique 3-prefixes and no prefix words, entropy 2.1b/letter 10b/word
|
|
words: list = [
|
|
"able",
|
|
"about",
|
|
"absent",
|
|
"abuse",
|
|
"access",
|
|
"acid",
|
|
"across",
|
|
"act",
|
|
"adapt",
|
|
"add",
|
|
"adjust",
|
|
"admit",
|
|
"adult",
|
|
"advice",
|
|
"affair",
|
|
"afraid",
|
|
"again",
|
|
"age",
|
|
"agree",
|
|
"ahead",
|
|
"aim",
|
|
"air",
|
|
"aisle",
|
|
"alarm",
|
|
"album",
|
|
"alert",
|
|
"alien",
|
|
"all",
|
|
"almost",
|
|
"alone",
|
|
"alpha",
|
|
"also",
|
|
"alter",
|
|
"always",
|
|
"amazed",
|
|
"among",
|
|
"amused",
|
|
"anchor",
|
|
"angle",
|
|
"animal",
|
|
"ankle",
|
|
"annual",
|
|
"answer",
|
|
"any",
|
|
"apart",
|
|
"appear",
|
|
"april",
|
|
"arch",
|
|
"are",
|
|
"argue",
|
|
"army",
|
|
"around",
|
|
"array",
|
|
"art",
|
|
"ascent",
|
|
"ash",
|
|
"ask",
|
|
"aspect",
|
|
"assume",
|
|
"asthma",
|
|
"atom",
|
|
"attack",
|
|
"audit",
|
|
"august",
|
|
"aunt",
|
|
"author",
|
|
"avoid",
|
|
"away",
|
|
"awful",
|
|
"axis",
|
|
"baby",
|
|
"back",
|
|
"bad",
|
|
"bag",
|
|
"ball",
|
|
"bamboo",
|
|
"bank",
|
|
"bar",
|
|
"base",
|
|
"battle",
|
|
"beach",
|
|
"become",
|
|
"beef",
|
|
"before",
|
|
"begin",
|
|
"behind",
|
|
"below",
|
|
"bench",
|
|
"best",
|
|
"better",
|
|
"beyond",
|
|
"bid",
|
|
"bike",
|
|
"bind",
|
|
"bio",
|
|
"birth",
|
|
"bitter",
|
|
"black",
|
|
"bleak",
|
|
"blind",
|
|
"blood",
|
|
"blue",
|
|
"board",
|
|
"body",
|
|
"boil",
|
|
"bomb",
|
|
"bone",
|
|
"book",
|
|
"border",
|
|
"boss",
|
|
"bottom",
|
|
"bounce",
|
|
"bowl",
|
|
"box",
|
|
"boy",
|
|
"brain",
|
|
"bread",
|
|
"bring",
|
|
"brown",
|
|
"brush",
|
|
"bubble",
|
|
"buck",
|
|
"budget",
|
|
"build",
|
|
"bulk",
|
|
"bundle",
|
|
"burden",
|
|
"bus",
|
|
"but",
|
|
"buyer",
|
|
"buzz",
|
|
"cable",
|
|
"cache",
|
|
"cage",
|
|
"cake",
|
|
"call",
|
|
"came",
|
|
"can",
|
|
"car",
|
|
"case",
|
|
"catch",
|
|
"cause",
|
|
"cave",
|
|
"celery",
|
|
"cement",
|
|
"census",
|
|
"cereal",
|
|
"change",
|
|
"check",
|
|
"child",
|
|
"choice",
|
|
"chunk",
|
|
"cigar",
|
|
"circle",
|
|
"city",
|
|
"civil",
|
|
"class",
|
|
"clean",
|
|
"client",
|
|
"close",
|
|
"club",
|
|
"coast",
|
|
"code",
|
|
"coffee",
|
|
"coil",
|
|
"cold",
|
|
"come",
|
|
"cool",
|
|
"copy",
|
|
"core",
|
|
"cost",
|
|
"cotton",
|
|
"couch",
|
|
"cover",
|
|
"coyote",
|
|
"craft",
|
|
"cream",
|
|
"crime",
|
|
"cross",
|
|
"cruel",
|
|
"cry",
|
|
"cube",
|
|
"cue",
|
|
"cult",
|
|
"cup",
|
|
"curve",
|
|
"custom",
|
|
"cute",
|
|
"cycle",
|
|
"dad",
|
|
"damage",
|
|
"danger",
|
|
"daring",
|
|
"dash",
|
|
"dawn",
|
|
"day",
|
|
"deal",
|
|
"debate",
|
|
"decide",
|
|
"deer",
|
|
"define",
|
|
"degree",
|
|
"deity",
|
|
"delay",
|
|
"demand",
|
|
"denial",
|
|
"depth",
|
|
"derive",
|
|
"design",
|
|
"detail",
|
|
"device",
|
|
"dial",
|
|
"dice",
|
|
"die",
|
|
"differ",
|
|
"dim",
|
|
"dinner",
|
|
"direct",
|
|
"dish",
|
|
"divert",
|
|
"dizzy",
|
|
"doctor",
|
|
"dog",
|
|
"dollar",
|
|
"domain",
|
|
"donate",
|
|
"door",
|
|
"dose",
|
|
"double",
|
|
"dove",
|
|
"draft",
|
|
"dream",
|
|
"drive",
|
|
"drop",
|
|
"drum",
|
|
"dry",
|
|
"duck",
|
|
"dumb",
|
|
"dune",
|
|
"during",
|
|
"dust",
|
|
"dutch",
|
|
"dwarf",
|
|
"eager",
|
|
"early",
|
|
"east",
|
|
"echo",
|
|
"eco",
|
|
"edge",
|
|
"edit",
|
|
"effort",
|
|
"egg",
|
|
"eight",
|
|
"either",
|
|
"elbow",
|
|
"elder",
|
|
"elite",
|
|
"else",
|
|
"embark",
|
|
"emerge",
|
|
"emily",
|
|
"employ",
|
|
"enable",
|
|
"end",
|
|
"enemy",
|
|
"engine",
|
|
"enjoy",
|
|
"enlist",
|
|
"enough",
|
|
"enrich",
|
|
"ensure",
|
|
"entire",
|
|
"envy",
|
|
"equal",
|
|
"era",
|
|
"erode",
|
|
"error",
|
|
"erupt",
|
|
"escape",
|
|
"essay",
|
|
"estate",
|
|
"ethics",
|
|
"evil",
|
|
"evoke",
|
|
"exact",
|
|
"excess",
|
|
"exist",
|
|
"exotic",
|
|
"expect",
|
|
"extent",
|
|
"eye",
|
|
"fabric",
|
|
"face",
|
|
"fade",
|
|
"faith",
|
|
"fall",
|
|
"family",
|
|
"fan",
|
|
"far",
|
|
"father",
|
|
"fault",
|
|
"feel",
|
|
"female",
|
|
"fence",
|
|
"fetch",
|
|
"fever",
|
|
"few",
|
|
"fiber",
|
|
"field",
|
|
"figure",
|
|
"file",
|
|
"find",
|
|
"first",
|
|
"fish",
|
|
"fit",
|
|
"fix",
|
|
"flat",
|
|
"flesh",
|
|
"flight",
|
|
"float",
|
|
"fluid",
|
|
"fly",
|
|
"foam",
|
|
"focus",
|
|
"fog",
|
|
"foil",
|
|
"follow",
|
|
"food",
|
|
"force",
|
|
"fossil",
|
|
"found",
|
|
"fox",
|
|
"frame",
|
|
"fresh",
|
|
"friend",
|
|
"frog",
|
|
"fruit",
|
|
"fuel",
|
|
"fun",
|
|
"fury",
|
|
"future",
|
|
"gadget",
|
|
"gain",
|
|
"galaxy",
|
|
"game",
|
|
"gap",
|
|
"garden",
|
|
"gas",
|
|
"gate",
|
|
"gauge",
|
|
"gaze",
|
|
"genius",
|
|
"ghost",
|
|
"giant",
|
|
"gift",
|
|
"giggle",
|
|
"ginger",
|
|
"girl",
|
|
"give",
|
|
"glass",
|
|
"glide",
|
|
"globe",
|
|
"glue",
|
|
"goal",
|
|
"god",
|
|
"gold",
|
|
"good",
|
|
"gospel",
|
|
"govern",
|
|
"gown",
|
|
"grant",
|
|
"great",
|
|
"grid",
|
|
"group",
|
|
"grunt",
|
|
"guard",
|
|
"guess",
|
|
"guide",
|
|
"gulf",
|
|
"gun",
|
|
"gym",
|
|
"habit",
|
|
"hair",
|
|
"half",
|
|
"hammer",
|
|
"hand",
|
|
"happy",
|
|
"hard",
|
|
"hat",
|
|
"have",
|
|
"hawk",
|
|
"hay",
|
|
"hazard",
|
|
"head",
|
|
"hedge",
|
|
"height",
|
|
"help",
|
|
"hen",
|
|
"hero",
|
|
"hidden",
|
|
"high",
|
|
"hill",
|
|
"hint",
|
|
"hip",
|
|
"hire",
|
|
"hobby",
|
|
"hockey",
|
|
"hold",
|
|
"home",
|
|
"honey",
|
|
"hood",
|
|
"hope",
|
|
"horse",
|
|
"host",
|
|
"hotel",
|
|
"hour",
|
|
"hover",
|
|
"how",
|
|
"hub",
|
|
"huge",
|
|
"human",
|
|
"hungry",
|
|
"hurt",
|
|
"hybrid",
|
|
"ice",
|
|
"icon",
|
|
"idea",
|
|
"idle",
|
|
"ignore",
|
|
"ill",
|
|
"image",
|
|
"immune",
|
|
"impact",
|
|
"income",
|
|
"index",
|
|
"infant",
|
|
"inhale",
|
|
"inject",
|
|
"inmate",
|
|
"inner",
|
|
"input",
|
|
"inside",
|
|
"into",
|
|
"invest",
|
|
"iron",
|
|
"island",
|
|
"issue",
|
|
"italy",
|
|
"item",
|
|
"ivory",
|
|
"jacket",
|
|
"jaguar",
|
|
"james",
|
|
"jar",
|
|
"jazz",
|
|
"jeans",
|
|
"jelly",
|
|
"jewel",
|
|
"job",
|
|
"joe",
|
|
"joke",
|
|
"joy",
|
|
"judge",
|
|
"juice",
|
|
"july",
|
|
"jump",
|
|
"june",
|
|
"just",
|
|
"kansas",
|
|
"kate",
|
|
"keep",
|
|
"kernel",
|
|
"key",
|
|
"kick",
|
|
"kid",
|
|
"kind",
|
|
"kiss",
|
|
"kit",
|
|
"kiwi",
|
|
"knee",
|
|
"knife",
|
|
"know",
|
|
"labor",
|
|
"lady",
|
|
"lag",
|
|
"lake",
|
|
"lamp",
|
|
"laptop",
|
|
"large",
|
|
"later",
|
|
"laugh",
|
|
"lava",
|
|
"law",
|
|
"layer",
|
|
"lazy",
|
|
"leader",
|
|
"left",
|
|
"legal",
|
|
"lemon",
|
|
"length",
|
|
"lesson",
|
|
"letter",
|
|
"level",
|
|
"liar",
|
|
"libya",
|
|
"lid",
|
|
"life",
|
|
"light",
|
|
"like",
|
|
"limit",
|
|
"line",
|
|
"lion",
|
|
"liquid",
|
|
"list",
|
|
"little",
|
|
"live",
|
|
"lizard",
|
|
"load",
|
|
"local",
|
|
"logic",
|
|
"long",
|
|
"loop",
|
|
"lost",
|
|
"loud",
|
|
"love",
|
|
"low",
|
|
"loyal",
|
|
"lucky",
|
|
"lumber",
|
|
"lunch",
|
|
"lust",
|
|
"luxury",
|
|
"lyrics",
|
|
"mad",
|
|
"magic",
|
|
"main",
|
|
"major",
|
|
"make",
|
|
"male",
|
|
"mammal",
|
|
"man",
|
|
"map",
|
|
"market",
|
|
"mass",
|
|
"matter",
|
|
"maze",
|
|
"mccoy",
|
|
"meadow",
|
|
"media",
|
|
"meet",
|
|
"melt",
|
|
"member",
|
|
"men",
|
|
"mercy",
|
|
"mesh",
|
|
"method",
|
|
"middle",
|
|
"milk",
|
|
"mimic",
|
|
"mind",
|
|
"mirror",
|
|
"miss",
|
|
"mix",
|
|
"mobile",
|
|
"model",
|
|
"mom",
|
|
"monkey",
|
|
"moon",
|
|
"more",
|
|
"mother",
|
|
"mouse",
|
|
"move",
|
|
"much",
|
|
"muffin",
|
|
"mule",
|
|
"must",
|
|
"mutual",
|
|
"myself",
|
|
"myth",
|
|
"naive",
|
|
"name",
|
|
"napkin",
|
|
"narrow",
|
|
"nasty",
|
|
"nation",
|
|
"near",
|
|
"neck",
|
|
"need",
|
|
"nephew",
|
|
"nerve",
|
|
"nest",
|
|
"net",
|
|
"never",
|
|
"news",
|
|
"next",
|
|
"nice",
|
|
"night",
|
|
"noble",
|
|
"noise",
|
|
"noodle",
|
|
"normal",
|
|
"nose",
|
|
"note",
|
|
"novel",
|
|
"now",
|
|
"number",
|
|
"nurse",
|
|
"nut",
|
|
"oak",
|
|
"obey",
|
|
"object",
|
|
"oblige",
|
|
"obtain",
|
|
"occur",
|
|
"ocean",
|
|
"odor",
|
|
"off",
|
|
"often",
|
|
"oil",
|
|
"okay",
|
|
"old",
|
|
"olive",
|
|
"omit",
|
|
"once",
|
|
"one",
|
|
"onion",
|
|
"online",
|
|
"open",
|
|
"opium",
|
|
"oppose",
|
|
"option",
|
|
"orange",
|
|
"orbit",
|
|
"order",
|
|
"organ",
|
|
"orient",
|
|
"orphan",
|
|
"other",
|
|
"outer",
|
|
"oval",
|
|
"oven",
|
|
"own",
|
|
"oxygen",
|
|
"oyster",
|
|
"ozone",
|
|
"pact",
|
|
"paddle",
|
|
"page",
|
|
"pair",
|
|
"palace",
|
|
"panel",
|
|
"paper",
|
|
"parade",
|
|
"past",
|
|
"path",
|
|
"pause",
|
|
"pave",
|
|
"paw",
|
|
"pay",
|
|
"peace",
|
|
"pen",
|
|
"people",
|
|
"pepper",
|
|
"permit",
|
|
"pet",
|
|
"philip",
|
|
"phone",
|
|
"phrase",
|
|
"piano",
|
|
"pick",
|
|
"piece",
|
|
"pig",
|
|
"pilot",
|
|
"pink",
|
|
"pipe",
|
|
"pistol",
|
|
"pitch",
|
|
"pizza",
|
|
"place",
|
|
"please",
|
|
"pluck",
|
|
"poem",
|
|
"point",
|
|
"polar",
|
|
"pond",
|
|
"pool",
|
|
"post",
|
|
"pot",
|
|
"pound",
|
|
"powder",
|
|
"praise",
|
|
"prefer",
|
|
"price",
|
|
"profit",
|
|
"public",
|
|
"pull",
|
|
"punch",
|
|
"pupil",
|
|
"purity",
|
|
"push",
|
|
"put",
|
|
"puzzle",
|
|
"qatar",
|
|
"quasi",
|
|
"queen",
|
|
"quite",
|
|
"quoted",
|
|
"rabbit",
|
|
"race",
|
|
"radio",
|
|
"rail",
|
|
"rally",
|
|
"ramp",
|
|
"range",
|
|
"rapid",
|
|
"rare",
|
|
"rather",
|
|
"raven",
|
|
"raw",
|
|
"razor",
|
|
"real",
|
|
"rebel",
|
|
"recall",
|
|
"red",
|
|
"reform",
|
|
"region",
|
|
"reject",
|
|
"relief",
|
|
"remain",
|
|
"rent",
|
|
"reopen",
|
|
"report",
|
|
"result",
|
|
"return",
|
|
"review",
|
|
"reward",
|
|
"rhythm",
|
|
"rib",
|
|
"rich",
|
|
"ride",
|
|
"rifle",
|
|
"right",
|
|
"ring",
|
|
"riot",
|
|
"ripple",
|
|
"risk",
|
|
"ritual",
|
|
"river",
|
|
"road",
|
|
"robot",
|
|
"rocket",
|
|
"room",
|
|
"rose",
|
|
"rotate",
|
|
"round",
|
|
"row",
|
|
"royal",
|
|
"rubber",
|
|
"rude",
|
|
"rug",
|
|
"rule",
|
|
"run",
|
|
"rural",
|
|
"sad",
|
|
"safe",
|
|
"sage",
|
|
"sail",
|
|
"salad",
|
|
"same",
|
|
"santa",
|
|
"sauce",
|
|
"save",
|
|
"say",
|
|
"scale",
|
|
"scene",
|
|
"school",
|
|
"scope",
|
|
"screen",
|
|
"scuba",
|
|
"sea",
|
|
"second",
|
|
"seed",
|
|
"self",
|
|
"semi",
|
|
"sense",
|
|
"series",
|
|
"settle",
|
|
"seven",
|
|
"shadow",
|
|
"she",
|
|
"ship",
|
|
"shock",
|
|
"shrimp",
|
|
"shy",
|
|
"sick",
|
|
"side",
|
|
"siege",
|
|
"sign",
|
|
"silver",
|
|
"simple",
|
|
"since",
|
|
"siren",
|
|
"sister",
|
|
"six",
|
|
"size",
|
|
"skate",
|
|
"sketch",
|
|
"ski",
|
|
"skull",
|
|
"slab",
|
|
"sleep",
|
|
"slight",
|
|
"slogan",
|
|
"slush",
|
|
"small",
|
|
"smile",
|
|
"smooth",
|
|
"snake",
|
|
"sniff",
|
|
"snow",
|
|
"soap",
|
|
"soccer",
|
|
"soda",
|
|
"soft",
|
|
"solid",
|
|
"son",
|
|
"soon",
|
|
"sort",
|
|
"south",
|
|
"space",
|
|
"speak",
|
|
"sphere",
|
|
"spirit",
|
|
"split",
|
|
"spoil",
|
|
"spring",
|
|
"spy",
|
|
"square",
|
|
"state",
|
|
"step",
|
|
"still",
|
|
"story",
|
|
"strong",
|
|
"stuff",
|
|
"style",
|
|
"submit",
|
|
"such",
|
|
"sudden",
|
|
"suffer",
|
|
"sugar",
|
|
"suit",
|
|
"summer",
|
|
"sun",
|
|
"supply",
|
|
"sure",
|
|
"swamp",
|
|
"sweet",
|
|
"switch",
|
|
"sword",
|
|
"symbol",
|
|
"syntax",
|
|
"syria",
|
|
"system",
|
|
"table",
|
|
"tackle",
|
|
"tag",
|
|
"tail",
|
|
"talk",
|
|
"tank",
|
|
"tape",
|
|
"target",
|
|
"task",
|
|
"tattoo",
|
|
"taxi",
|
|
"team",
|
|
"tell",
|
|
"ten",
|
|
"term",
|
|
"test",
|
|
"text",
|
|
"that",
|
|
"theme",
|
|
"this",
|
|
"three",
|
|
"thumb",
|
|
"tibet",
|
|
"ticket",
|
|
"tide",
|
|
"tight",
|
|
"tilt",
|
|
"time",
|
|
"tiny",
|
|
"tip",
|
|
"tired",
|
|
"tissue",
|
|
"title",
|
|
"toast",
|
|
"today",
|
|
"toe",
|
|
"toilet",
|
|
"token",
|
|
"tomato",
|
|
"tone",
|
|
"tool",
|
|
"top",
|
|
"torch",
|
|
"toss",
|
|
"total",
|
|
"toward",
|
|
"toy",
|
|
"trade",
|
|
"tree",
|
|
"trial",
|
|
"trophy",
|
|
"true",
|
|
"try",
|
|
"tube",
|
|
"tumble",
|
|
"tunnel",
|
|
"turn",
|
|
"twenty",
|
|
"twice",
|
|
"two",
|
|
"type",
|
|
"ugly",
|
|
"unable",
|
|
"uncle",
|
|
"under",
|
|
"unfair",
|
|
"unique",
|
|
"unlock",
|
|
"until",
|
|
"unveil",
|
|
"update",
|
|
"uphold",
|
|
"upon",
|
|
"upper",
|
|
"upset",
|
|
"urban",
|
|
"urge",
|
|
"usage",
|
|
"use",
|
|
"usual",
|
|
"vacuum",
|
|
"vague",
|
|
"valid",
|
|
"van",
|
|
"vapor",
|
|
"vast",
|
|
"vault",
|
|
"vein",
|
|
"velvet",
|
|
"vendor",
|
|
"very",
|
|
"vessel",
|
|
"viable",
|
|
"video",
|
|
"view",
|
|
"villa",
|
|
"violin",
|
|
"virus",
|
|
"visit",
|
|
"vital",
|
|
"vivid",
|
|
"vocal",
|
|
"voice",
|
|
"volume",
|
|
"vote",
|
|
"voyage",
|
|
"wage",
|
|
"wait",
|
|
"wall",
|
|
"want",
|
|
"war",
|
|
"wash",
|
|
"water",
|
|
"wave",
|
|
"way",
|
|
"wealth",
|
|
"web",
|
|
"weird",
|
|
"were",
|
|
"west",
|
|
"wet",
|
|
"what",
|
|
"when",
|
|
"whip",
|
|
"wide",
|
|
"wife",
|
|
"will",
|
|
"window",
|
|
"wire",
|
|
"wish",
|
|
"wolf",
|
|
"woman",
|
|
"wonder",
|
|
"wood",
|
|
"work",
|
|
"wrap",
|
|
"wreck",
|
|
"write",
|
|
"wrong",
|
|
"xander",
|
|
"xbox",
|
|
"xerox",
|
|
"xray",
|
|
"yang",
|
|
"yard",
|
|
"year",
|
|
"yellow",
|
|
"yes",
|
|
"yin",
|
|
"york",
|
|
"you",
|
|
"zane",
|
|
"zara",
|
|
"zebra",
|
|
"zen",
|
|
"zero",
|
|
"zippo",
|
|
"zone",
|
|
"zoo",
|
|
"zorro",
|
|
"zulu",
|
|
]
|
|
if len(words) != 1024:
|
|
raise ValueError("pwgen word list must contain exactly 1024 words")
|