parsav  Diff

Differences From Artifact [4bed391611]:

To Artifact [0f343f8c98]:


    14     14   		case [uint16](2) then acc:lpush('🔱') end
    15     15   		case [uint16](3) then acc:lpush('⚜️') end
    16     16   		case [uint16](4) then acc:lpush('🗡') end
    17     17   		case [uint16](5) then acc:lpush('🗝') end
    18     18   		else acc:lpush('🕴')
    19     19   	end
    20     20   end
           21  +
           22  +local rnd = lib.crypt.random
           23  +local terra 
           24  +suggest_handle(a: &lib.str.acc)
           25  +	var start = a.sz
           26  +	var puncts = array('.','_','-')
           27  +	var xXx = rnd(uint8, 0, 9) == 0
           28  +	var leet = rnd(uint8, 0, 8) == 0
           29  +	var caps = rnd(uint8, 0, 5)
           30  +	var punct: rawstring = nil
           31  +	var useadj = rnd(uint8, 0, 4) == 0
           32  +	if rnd(uint8, 0, 4) == 0 then
           33  +		punct = puncts[rnd(intptr,0,[puncts.type.N])]
           34  +	end
           35  +
           36  +	var nouns = array(
           37  +		'thunder','bride','blaze','doom','squad','gun','lord','blaster',
           38  +		'fuck','hell','hound','piss','shit','killa','terror', 'horror',
           39  +		'fear', 'slaughter','murder','general','commander', 'commissar',
           40  +		'terrorist','infinity','slut','cunt','whore','bitch', 'bastard',
           41  +		'cock','prince','princess','pimp','gay','cop','slayer', 'vampire',
           42  +		'vampyre','blood','pain','brute','wolf','sword','star','sun','moon',
           43  +		'killer','murderer','thief','arson','fire','ice','frost','hack',
           44  +		'hacker','god','master','mistress','slave','rage','freeze','flayer',
           45  +		'pirate','ninja','shadow','fog','mist','misery','glory','bear',
           46  +		'king','queen','empress','emperor','majesty','space','martian',
           47  +		'winter','fall','monk','katana','420','warrior','banana','demon',
           48  +		'devil','ghost','wraith','cuck','legend','hero','heroine','goblin',
           49  +		'gremlin','troll','dragon','evil','overlord','radiance'
           50  +	)
           51  +	var adjs = array(
           52  +		'dark','super','supreme','ultra','ultimate','total','infinite',
           53  +		'omnipotent','crazy','final','deathless','immortal', 'elite',
           54  +		'leet','1337','bloody','fearless','headless','screaming','insane',
           55  +		'brutal','legendary','space','frozen','flaming','burning',
           56  +		'mighty','flayed','hidden','secret','lost','mystery','glorious',
           57  +		'nude','naked','bare','first','radiant','martian','fallen',
           58  +		'wandering','dank','demonic','satanic','invisible','based','woke',
           59  +		'deadly','lethal','heroic','evil','majestic','luminous'
           60  +	)
           61  +
           62  +	if xXx then a:lpush('xXx_') end
           63  +
           64  +	if useadj then
           65  +		var len = rnd(uint8,1,3) 
           66  +		for i = 0, len do
           67  +			var sz = a.sz
           68  +			a:push(adjs[rnd(intptr,0,[adjs.type.N])], 0)
           69  +			if punct ~= nil then a:push(punct, 1) end
           70  +			if caps == 1 then
           71  +				a.buf[sz] = lib.str.cupcase(a.buf[sz])
           72  +			end
           73  +		end
           74  +	end
           75  +	var nounct = rnd(uint8,1,3) 
           76  +	for i = 0, nounct do
           77  +		var sz = a.sz
           78  +		a:push(nouns[rnd(intptr,0,[nouns.type.N])], 0)
           79  +		if punct ~= nil and i+1 ~= nounct then a:push(punct, 1) end
           80  +		if caps == 1 then
           81  +			a.buf[sz] = lib.str.cupcase(a.buf[sz])
           82  +		end
           83  +	end
           84  +
           85  +	if leet or caps == 2 then for i=start, a.sz do
           86  +		if caps == 2 and rnd(uint8,0,5)==0 then
           87  +			a.buf[i] = lib.str.cupcase(a.buf[i])
           88  +		end
           89  +		if leet then 
           90  +			switch lib.str.cdowncase(a.buf[i]) do
           91  +				case [uint8]([string.byte('e')]) then a.buf[i] = @'3' end
           92  +				case [uint8]([string.byte('i')]) then a.buf[i] = @'1' end
           93  +				case [uint8]([string.byte('l')]) then a.buf[i] = @'1' end
           94  +				case [uint8]([string.byte('t')]) then a.buf[i] = @'7' end
           95  +				case [uint8]([string.byte('s')]) then a.buf[i] = @'5' end
           96  +				case [uint8]([string.byte('o')]) then a.buf[i] = @'0' end
           97  +				case [uint8]([string.byte('b')]) then a.buf[i] = @'6' end
           98  +			end
           99  +		end
          100  +	end end
          101  +
          102  +	if (nounct == 1 and not useadj) or rnd(uint8, 0, 5) == 0 then
          103  +		if punct ~= nil then a:push(punct, 1) end
          104  +		a:ipush(rnd(uint16,0,65535))
          105  +	end
          106  +
          107  +	if xXx then a:lpush('_xXx') end
          108  +
          109  +end
    21    110   
    22    111   local push_num_field = macro(function(acc,name,lbl,min,max,value,disable)
    23    112   	name = name:asvalue()
    24    113   	lbl = lbl:asvalue()
    25    114   	local start = '<div class="elem small">'
    26    115   	local enabled = start .. string.format('<label for="%s">%s</label><input type="number" id="%s" name="%s" min="', name, lbl, name, name)
    27    116   	local disabled = start .. string.format('<label>%s</label><div class="txtbox">', lbl)
................................................................................
   219    308   			else
   220    309   				ulst:lpush('<span class="id">')
   221    310   				lib.render.nym(usr, 0, &ulst, false)
   222    311   				ulst:lpush('</span></li>')
   223    312   			end
   224    313   		::skip::end
   225    314   		ulst:lpush('</ul>')
          315  +
          316  +		if co.who.rights.powers.invite() or co.who.rights.invites > 0 then
          317  +			ulst:lpush('<details><summary>create new user</summary><form method="post"><div class="elem"><label for="handle">handle</label><input type="text" name="handle" id="handle" placeholder="')
          318  +			suggest_handle(&ulst)
          319  +			ulst:lpush('"></div><button name="act" value="create">create</button></form></details>')
          320  +		end
          321  +		ulst:lpush('<details><summary>instantiate remote actor</summary><form method="post"><div class="elem"><label for="xid">xid</label><input type="text" name="xid" id="xid" placeholder="tweetlord@website.tld"></div><button name="act" value="inst">instantiate</button></form></details>')
          322  +
   226    323   		return ulst:finalize()
   227    324   	end
   228    325   	do return pstr.null() end
   229    326   	::e404:: co:complain(404, 'not found', 'there is no user or resource by that identifier on this server') goto quit
   230    327   	::e403:: co:complain(403, 'forbidden', 'you do not have sufficient authority to control that resource')
   231    328   
   232    329   	::quit:: return pstr.null()
   233    330   end
   234    331   
   235    332   return render_conf_users