From 7ad9560f53e183cc2404747782b5c427abc38fe8 Mon Sep 17 00:00:00 2001 From: syuilo Date: Sat, 12 Jan 2019 11:27:23 +0900 Subject: [PATCH] Implement instance info page --- src/client/assets/misskey-php-like-logo.png | Bin 0 -> 49943 bytes src/server/web/index.ts | 24 +++++ src/server/web/views/info.pug | 113 ++++++++++++++++++++ 3 files changed, 137 insertions(+) create mode 100644 src/client/assets/misskey-php-like-logo.png create mode 100644 src/server/web/views/info.pug diff --git a/src/client/assets/misskey-php-like-logo.png b/src/client/assets/misskey-php-like-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..7777e52b1d0bdb7c02f71887ea0b9f15448a302e GIT binary patch literal 49943 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

loyE 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

pLPAjtCY<&LofxHObQCmAhZ;;FB zP~okJqKY=PB>q>l4tv1+9Fc2iG2UoZguDd~2>|ig?>8;%{K? zl6$=??!AoYG6fXiMJa*Y2{_ci$VhZRqXu1G+JT`D#UBCPA~p}kj8iZDam2!zrJx{b z^UpXM_@i#rYa!;P0Fy{|U$_dA)(i;=`C`K?n4ikM?glIPatX^2!v9wy?~tg;XW}cI z*gGaBIZXB};DLMjd-3x?V6s=d(Wao@!9Mipfj4czMEQ* zu_2qT{@izbZ}M61`npV`Y!r~3-IEp;BbFEd(h!2COgmsBYJw%`RQ(v?!-H+ZwV>40 z!o?yyZ^3!-#;HqTM-TqLI9pl95A&SBJ$rjRAHG;kgqkRg<_358e_nt<5^ftk@B{<< z&|9OAL_ugoe!z;j(-(?Ukv6P=yLmv{%fNEiz5O6T{gz*Y1Gx^ddKdNX4Kde}%cw+$1q3`q$M?$kddALAvFvjiMsoWt5iL2$1CT zu0WIB{!Qyxx0hH*iM&6) zw+WR`XYnBlDXFTfGZM(5r{Cpq4r0`8G-b~!A=MGNd~keA|DKJF&ChHPr9X0lrC2;F zD>qE^Z8s28<&36QQ0Ws<04)NMK(pNUiFkN<^}$2`c$goJiHA3DaCxC;8+aujyuE`l zXt4cgBT8L{84@~9dx-q?>sQDF0>2hq9W%Pe<9bdCsocOECQK8re|tFn*!k~S5Gb?t zkG!tj9&J4J1fT!tp#`BI$tJi225303n%uJj4>V|mG_BUee&OM$3?x6donXK{zs_1A z3~`tDAf2i;l{ZLtv}1(1SkmYZ12o0v_Dn{EO4)o0w=H?4*JLVt@cYppw;HD+7rbsW zdbja$d1lRQNz-IP_M>Lpy&;Uf-PxF2Gerg7#e`x??(hxp!5L& zome!&7$D*B9949}5eG-Xh1vtD`~dJ|LGm_R{MiZ$B`QtMC-`a=nt{MfnD2Nnq0wYV z^-H(Yrs|s%J*UW{ve2WRKAg;R5=MeFC$sK*PVi4MM{9Py2o>mXo9wn=fV&ANASftL zy;28q$*?FWY%l-1G$gsXIADyWle`fWryM0P7?y{j{DXpxjm>H?N4I<6$WEvKmWs-^ zF#df1_a_1!x|GyVS8z?fDB_;zs4H|aHD6ZYGMt_=veCQ^AY5s%CL!l{>vHex=;(L^ zam>)_rbpqvf%IQ{uTB0kVu>&j9YeCYs&m!RfeWL=wMTelgc zgSgtz{5&2N)i}2n=u%&qA2xYDG^ZFBwgH7uBC0YaGc)q;WYO^PatjF=xf>KMG$oc( zE2gX8b>1oW4!TLJ1nS!DS-wgFdnlozerv6+hJ7Jeeq$`Sz+id_ygpRGj}41})&*(` znuSkm^Kboo!C?KbppQatfb^*+K`Hu9Y2sv!`7U=yQ5c&v1ClCG5IsTsI4D? zH3ZP2C}&w)8!6Z<`JwW!_suwWz`dhaJBmbi}H<`#&GEOrT0a5S^JySqP$VC3rC*hFRWxyH4X9RJAR z8Qzx*{pOA9Z);^jgY}-FFF|CKrTF8whxkwt3G$q;>*XGRi>Wdkd;=K86s^X}AxU}p zK@hFqJUIz}*!a0Yc~NI;YdiMmKtb3rje(eCe(5I|bC35o0y8tozGm@;g=1b!Ed4o_Y{FTF=B^}F0Z%M z^$loDGl)_RDK5SqZX`Qtyqwlfx_$2jZj)XJ`m2sN#m+JdKV0ZKa+sbHuk4DLBrVI8 zIAsgcnU3XJ2-a9zw~`hc?bbESPdjW%lzf-Rx##t`6F+#w zMzkNQu6rc0>e}QZHT%dg4LfJS34~O+2z262M3VHRM4;8qN={wx(v z(~shHS*V6fK#nvygsrZE z7|5Yw2pcT;KMC}>caURw@%_nRL*n-kd?LmiPG1A9Bl$p=?CbB}3TNqXGlKontQ|Ee z_>UAkTVG^l(XP_|3x?H6UyzSMb2C!GFOy2hqZ`W-AOVR8i2G^2bnbVrsJ%TK#FGz* zY+o@Mq?2=BjB#M?o`PG-d1XN}8=#r=}8hJfHJvXdW-q zFLG`!UDzXRT)eCG_4i^&RA5f7O*3nH%gP#41+PXwPe->~NjLp1ATTO15zjJrM#=C! zK_4ytR`7R4H)l=3rDNl9D{E`W-Uvu02QUr&fT)F2M8PDsx3?$cvLXa=1POi(5x?(O zbC+M#49N(z+cHp^g+ooVkAzeZ`1$!E7J5%`Xdl6_4iZdngc76z20$u_)$LLb1k~a- zzklZBNBU4w$oQ+1&Cags?PC%cgqysc8z=`?h&{c$zI`YVJ71tFAc zHAb--6LJ->GwaIH68nQLn!0nJV1$dhzP{dP&{ovotFW*IQ=N8wi^rLfVWpt06dt-G z8JM`?{frJ;(oS1;NC;Bf-GWx%QvYa4#ynpZZm}xqIWkAYLNEsvPti@T>3uiXUo)2p zOOy->0r8z)U+^@7njD;O$o`3CHX0^|~xIsg;)h>M94S#fN` zn9y+1Hu|wwRv_cP|61e$VlsVxd2PbXO@$5?njg5l9N{b5<_MrOhoN-Ai3eLddVnAN za**QZCcui_Kr0HJ+3pp$wr0`+Z~n>n>_rTs4Revvp-A1C9?iuSdo1CE&I}~*@bhka zg`e%5sS?qFx>N0Prpc(=K?(%@ZkEm$Kfr7uxwNDB0zwrikoaH=(xT%dOp)wy6nZ*y zy60c^5Awpp@(n>k{s>zDdA9^rfJc0to&mJb-k+~G6g<4<|9)CoF|xYlQ2f%yq0KMb z=t2ViZ_ld$~d^{!I8Xmso zo{0wDkcyI$t@mrQaE5!2k9m1YfROw?*u6nch(=SW^Z^)10=~DpQPJ)G{w%#8LFOnJ}z7>H^OSOHdU z0=3{&1{4&OOJIM)URLAg_PE`r^rubgu$M{UFvp(A7L=zWYI|7sh#7tyo}HhY(*w1? zZ%MfqR^NnXLPT1(1ZJw`_Z8%~81#sez`A0ZI+KM~KG8ty58I?9;OER}n}nQobydBi znZf{JEV)@8w|7OoZ+{~d^G<2J!!@pR&bzX}t1GJFT;>uPcPC3QWJ>Wg%x!6JhEtI) zM0sCW;FQ>bORBDb8+f+Th$ECBJRJh)Y0akux0mlSpA;>cYRI&#O2!`iNC3# z1tSOBm{(i^N*-eTsIQ8y0w37SE4cx>taxP_OOw{lO15 z0FPteQjTvCw{FzR>z9?(kQ@$- z!|bl^xSrhcyGG%qZNb2qpD!>F1A)iQo!*O9PF&KH4MX6ozXV3bIJaNc(GRUbvf~wfiBUOAGskldkQ+Rg<%h`HU=WvanQ! zVfJ2ZbPE2`X&*V!0EwbNP&f=uABWxM=IXTl>T5m*2Yb{O<%{QIiLSqynt{88#Z4=U z&FmE<8MXR~z1> zXLE}YM8LR~_z&O7;q2^;&3FVCV!rj^3K0YrOh6R`120rV>%`gdeAyM)vZ1VAb9Q}rZ@LZG1Q5%cH2P#&#*n!CmJ2Aj#)U8b=fUvq?bxp8`zUem3(c7>G_pGg@$m;n z{o0r+{sLEh2>TguL7=TP+L}sbX7R7-10^aUa`gwiS*SGJ1Y3caPgp+#LLIkUSRNYO z$ZuEvBV;4CVpwu=a=?|$SeMNc?|w|6(}Xw#{@h3)oUl*;x8K?t zQ(dd!^9ztpwI&n%c(@K4n{Mf!DHNXp6ekEe4x3qaw*!y&eAo(t>{GkbXf@=6=5*^-tH5a={9FE!T2t%bF@OZV|H`=Uy5_a$FU&a^c;nynkwuhb_NGDoyfM&-G z4`=9Fdydw*Iqmh!-FyV_CgWgqXlSaROBT3?{TJ)OVbe}>Jc%`|7QJtUWfB>#z7Wc* zVM}|lbt0ST>G8#Lj}3j>dy8_6j1kGltAQmX4$`xE`T6dXqXnQbtJiD%F@DREjrQe< zYtMSEC6N`!+)QC>Dz?GB$>5kI9GH3x4TU(&OXe*^#l^3)lApetn5y%0AZPpaSY&*P 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%0D2T)UgF5-KBHx>hfVUQqqlCZnKN~jqO*;o&=pZ7 z6)1I5Uv$}{+!SRJu|Dz!W#-fPQo>k04cd%NN}kRcM+=SlwZZ`sETA%@OG{hvgQR1} z{JD`cHz#9YWCTkNa9PFKV5bFWpra=PWG0xym_c&d1ZJf?MM>Q}s9O-l=B7iOS|1SS z3K49WSly;}o>P}y`)iC25`7AjnHYhEw)SPbnHi#mGhZQp5c(WNpgpy^f&>|Elk-ps=vE1&GfcvU7_X9bl|L^EW0r#iD?o zK;Js2Bns?=GM><09Y~#Yk5gW3oHX)F#)lL2#3`Yb6b|d>Kd;VTo z@fU${6aEfVwcH^BRNYJtZ-f7>Vkj>pslFj!sJ@VFmmu}RK}HJh6n|y0z%y)Z#xP%3 zGjk{8Q=B&V;mfzQ-?J?*?(W>E%x9Wr+-FnhV{BI*XYLA_ikZIkuikN8Pj@Q{hqbHY z1q7gCV9}3@acEXaxH93kZ;LsijtDxgo6Pw6!KMPeNPf@yauXV}vzjt5>*f)1lt;z8 zw7Z|`c1JMNjSppC3>a01=ygv!N~LFhyB+SK;hREKR2&t-UP z68G+NDwPZxdpc1^W!>4WJ>hFMX2Yu1*!XKhb|Lm0@l{cWpCfR2c;BqLy`E}qr%4Vw zVvahGT9qMH9aT4HbL-s|0H*{mEG$T(_5eB-E%?o0!TaK`H_}E-&c|Iy0B6S6EskEi ze=EOAv@e&k3Q77}Pmn9EC+iZCh_2!%py3i+n=|qpY{50{auflaN+y&ZLmxd?6_(>B zYk};c@bzlI%d0fo@EvuQFcC5IP1_@jZ-h z)<${>*QTWhWqkRE6BZhpUmFHP{cx=1pvn~1yHWpmyC=2VT2g{ZtmCBgVewMB{*BYz zTWS2z-tY%?ti(iZ&b{i#CF%^@Bn&fknN_DtlbT=!%F*YH@mkVGLW?dB9r_NgjpAnDt_Jd6w$jns>Gu8C*&vf+kqh`0Erim^l^8@uX@(?cMc z^PboL&U)0=VEiM$iayAmwr-jY_niY)2Q9buSeF($LiduB#LA!zn&CyO+<5uFPy7nvTN5?_fX~w% zQYtEDHh2Yv_>FoUI{u1NZU!N1Z=UEyL2B*KhxIq-4y?Oll>hz(*L16(k=UzBXRVbg z#!mV)2qO7n>fLp*BV0es*|)r0rmx#ZGX5#s1m5A#RAZ>A0lyww*fLNa{wrwFZVe0)!m>Z2|pYA^ZID6f>|$xRacu{Lay6*Z6vna;|Q zB|DBS8XdLx@5DHOid4KEt$TB>Ky~9{%ypl#$8pmV4boe}6~A_~T3bCm?O&(O)GD+q z*9$+rs0-PLh+?W(-A0)GNsYk{Eo4yhI@SiHSmS&C@BOQwuN0*9_qP6fntc!HWNqkU zof+1;7})bWjaW{d!vt5n_vcWFH!UAU$N%bBi0K9WSrEz#&N+dwNgq9~N8GZcm!>8s0c1ej>cnJ7DsDgWDdv z+}Z2>YDsCB_2Vw`+pMEA%~_jAeE6F>{WR;KLjBLf)+#}v;)H!Z%aUD1J!8)n6;9XZ z^5i-o{KKHdVzmW65;C&=jE32dr6(PiKSB5(_zmvooW1Ukdq?fUcVZ}oT}k?l3wQ3i zua7+b73?vIGHcd|yk3}jJX51>^fshR4uiqa_Y6r+8s*DG!(Rcb_S4(QNUR0TN1R@& zreed<{kb!0*M0lLK;qmvMT)Y+Bc@w#!keDMOJ^%7ijVDu@odq$_Un|22kE~94Quhj zG1PtJpwR02RG-6lgqS^lLN=~9Tlb6R&i+X-rM*>qHCQWwog0E*7xX&Atx%Ic>g~$5 z8{~;Fv8czj_N-V8SWiv4j|BrI?4L{4L$Jl*tpw(Yh*qvDd{$tuy-~wuq30qVS8t1I z$EuY}km1{Gy)OdVU4GvgNyBKP4yj7geiy|WL8fMgvJ~E1;Napa$=u#bkIw;pRik)` zl8&>_8joR^FDtS(+?ua{{+@n}BmSYLcOVIgWx4e(x@`P&Q1>L~9QDoU=J9jF_JBODSK7mZL!!sS^*2!efqG%FuiA`OG z>&ao?&{eP%4>P2nM-&qfqbK}1IWjFA2`yKHDm77huSZ-;NpTfcxCM@pws2$CBpL#! zfOS)P6B!YaSya@NE!vgnay0L_XD%bf^iDp|2xhK)4PQZPdM_Ni4^4@9$?(~1<#T=9 z#n7Gip<(zroDjNHZFN^N8pvP#ZAx@nfQ};o%%t$qq8y=!CD@ZuhDp9R+JQFlQayu=qfVjkKFz9shJ}>vs zf$lS}{lzOw5Fj;0YsTN>Sh7@4|2?;q9h||3$lkNTL`ul6F{?%B*hVDPr-2JXB@Ift zTfEXpDCG(MgfIz9Z%(BN%~E37oBztMNiu?I`+cQ5SyY%nROj%AVfMltmo$mpSSfiLIIN~!^Ixyad8UeS6ltpe??s=uRJtG4 znmB}oKYkQbJ#cPXuzj+Y=|s~R4mN_h-r^HIsl$1o;_wRQS8R)@yj?Q=Z}^~TX(2e& zWNan)-7c5=^yPqt z23J~e{5i|TO{03NYi)FckoJlD@G{CZHVS$nFfZWfQYFByfec8ioLFv4V05qNeEEU5 zB36>MA^Y1Pq6m+uYv?4=*lRc*5@^e3ZnUGtK!ustRWi4l#tW?L)%^C0G&X=C5%?n1ee zm>SqmPDY}lE);?}ioa?pnh<{X^5|sn-t5%nT(ohUpRoY{6J1hMo(w0;0-l?%Yr@5* z>+a^m*seaUU8@+tS&p(Lt7Y?$C&oE*I07vGl*Y#V08507q9HB%4|Y7Yo;9FPyMQ3rDb zPP>JvE}cJ@2(>^yJ&57sr9rmlj@L*;3ACaGyKfxgbi8VCet{V{kwEy{P~py+@|Tk; zJdp};F7do6Y@CMPn15F!-E~cf3~6$4E3ds%ojbZHDJDDi-nC9%27YB5B5JHV*cX zxklYC!A8n9OfkY&=Bh-`pRq`xYvJx-*sATET&UY)>AZfOzl3lqoG<;f(eq)9!?GI7 zeBMcC!`ReWA5KYO^57a^1^AIphan2BHknxSC@xdLpk^*?-G~Zaxfs-Um1HouP0Q{g zirvjyOBpz;hyR1D*HrI+=8CN7h0(^4Taj!$<_iBz{zA*N{o>go0?1W*_MN=EwgnzS-1-HS`gxx$l7V-b6J%CVlKY0LMY z?NE>#8x5>UF1lepc{@y1az8pP)>^$^k+g-)PXUE9#UJtD=yVSMl-}g`X>VTR`H_@{ zJg<~#lalUVQX)G?)EH&T(@ic1>aAEY6E0{PH2;_>%>GPWD)`X%*d#5f4zM^VnvU}v zP&`}Sm*8!IDS&bXnk@97oG(O4+jwwPV-bfo$~*F{+>U9L*m^T(ZVW0A+*ay760*vD zQ4=XOl>pECF*(cUD;44{IgccmL3*-@EhIQ2M*1-X{r#Wksj+ZdMX*pmtwz!1YxsSw zVJyBXPH|ZHY)dyc8>q0HDABCzgkW$oq>G!Kw?~{qr1qTr3hoeQXKI}b2wjMw%R&vm zvo(y3^aG1Do_(epU~^{ewb8nIyB_rwtd5`Coqql8kyS7zsN?%jlmgzj@I7E49KzXo zv?LrlL^CXGxf>|FfHNX%TQLPI2`!*7v#AOB_iy-Lm&}F z&0mv|>wItm_PN&C0nxo;$qp3N^1o;8$tv0RPU=#@bfV=I0=JAUBH~5c;zT?}EDc>5 zU-s5AGf!iKle2V#W@(WluOHHjtBw-I1Q^ly?7kUGcVua2;j)T-UP?GwS*R5Jb|||} z^ncT9M0me7<}UArpBeC{cMsPIpDPtz8$9MLzE6Df8n=zd?hQJ4=Yhd1uk-WsU|lT? zm~!`r(zLoi)ZV?}@RRctHqG{f{kh|h=)T^rIg+(I*bpG_! z>-LH4wIj7RslVkEqOTIT-{KRaXt{6wy=jZLyYT_eZd|*nul?j&S~)79w!%n-S}}+O z{!svsrSn@F(nG*4b`C}1Ru&ZRRNKWaovH60e|y+s+1u`RhlPEnve9kY{AhKN=lga` z%QAM6s9K?=haZz;Nhcay&(>{d??kyDd=yk?!wD0bufkl^K=x*hBx<{$#`%mXay3EG zOX|@VgFx33w>r8ej9;Pvv6Tg^Cm@ROeq*)0^V#}K9o=SH-CsR=-X(YpjNN2*6Q~AG z7u5+eq-{OwF_vO$b}-k#z!=rLp#Z~YXzCT7PUp3AaDeUXR%;KrqN@2D0l?ghrH7G!QzLblfKk!gW#O`;wUOhbY1(E{$(T@6) z@lM(-YVZbLO|@rJKTpe+sLFkGhRNZ_a8GOQAY)v3BeMF!=gZ*|MlX@V`r(ConMe_NSDG#MWMydr`dO2a`KeSVc- z_6uc%C?xzHGnAE8D1`^FX(d!wXk73q;nHD|{)+bdzyDTHd;!z#9kTuPG48c@y=+w^ z{%3N{3A+Pup6shpCnrinezt&T8}Bz@6I-ESoRR4Mcd0h)3*C}9aI5+8nBD6;qD$dU zf;#b!Z+O<=sTU``wWKwu6njac2D5Wa%VNG!=9#I{H|zY`t51GD9lm zU^jYRn*rD*7SF5b8&_#Kor&kXP3k|sZnmc1SsS^hQx;?Vx%p_8)_ zK(@xe`b!nf$r)~9ilzdmbhfF^H5R#~KV zJg5ML#zpVB?d(yC>#c}43^LGUs(LMzTbcc960dH?&Jy6HoQ@&4nQQE@7+S)N-RoKC z!0P|L7#Y^akBMW4$`6bVjk;H6SsgVHCaDZDgz;S$n&I8M+;4EMzQ@jzS$xEF*J-Xx z5@j`q$tQMgDm{b^lghn#+rzCQJtUe!u_V-xMhhI~KY3uHk77l;f`ggQ#M=kg*G8Y+ zkVX>ngeND(tZ2i@me0Ku-Dx>o?@*1FZb4N)Oy%N7zP3ae)XwL{rgL(Qa(jErDXg7j ziG=tTYJUJsJQY%)Y}GVJ@CKscv#&1v&ixaIZUvd=qnr#@>97yPb{-K!uFH=u^8N!Y zBolE|GrYZ>_WbgaE^Xw~-z117p{cbczdhguD3w95bG~t$vTzI!9}JQu^gJezSfFc~ zV)x%Hq9@6Zh#c`_&L>=5vr0js=(6-1nXNuJ4-bUuS+00N-gW(btc!JJWs1W{L4NPd z{GONZz}Me;e%Qmmar?R&*3IGqL?i4gUlM=7&3gWpR462@r3JRj@Z@W=G2dHXYO@HJ zhtWEphCD;;oG}gxcDs_26tx?}BiQ4UhIpHlDK1%=bZ?&)Zzu%`1KxgfuPq3D3ULd+ zf|AYo#ibEXZ1MTzVmF^PCFP!O>2bg-s2p#2*WVZng36NfuA6WEl_(SzfgAiVY7I0X z?6l`*Lo$-uIU*PDDRHu3mpU=*uxsvnP7XFZm(klT^$)Fc9EU050z6Ey2O3@y-_L+R z>y#|zB^3pQq_FNyr7qz%4^Hw2m?mk3t_MoaZ zt|s?`J?>wjvF_*B{4@l&)Vrtd)XTK$J5*Np%(h~Xik-R9rRqye_v zpDFdGwHdcjv8tEW&v76b8d=DNNp z%g9S@8cBk%*Z5=J!a^;Z{NlMD$}uah2G_;?eZXm#^I4L{YkGC852+}vq+y}|5(^Do zT?qmLI6*|D=A^T}WZ%X;)@o_@H)W|gOO!Kus=@qxT*haAY+Cie3*xXYH#__(E7gN7 z&pF=F?T{E=nt~*RJOT%I`a4)K>Yq{I1Eh|NRA0lwkcD(NX2s{Vv|4Lbb9u-r%Nz3N zviu;oS@wjT@)4&Y9;qdJBVhI;zzX3*Hf$7+IL6-huu!5D5ZeDzrvP{9%PvZj+C&s@ zDc_5&iH7}{wrg4V3Zs`t-f?i{=O6P_51zYI-Cs>xgrY^M9uJ>qNsLzcBRS}~_D=1= zb}D{G38>)5BV1{)5hN70^wKz+OxyF;JE%~!Hdx3Y{o}e3|9!3Aiq>2uP2Dha zPGfU-J1;HmqOpSbhJvAkkR4u|Zq}*dR`J8VaT1JOh z;&*Zm7l7;-DbK#2nq2x2@$Y{B_Ez$68Z(PRtLeggGhiy%$-zh9`xz+GLkdZgBEnsp zzrfjxV|T39eiFU_N1taESVjk1l7kz`DmoY(e(dW#OZ%y(jW({VH{9tf6YaW zt3;SRLE06v9@;By$%un2G_Rp|sK1LajNHjdnA6bUl~m=llZA9iB_5Ts+sM&zIyAf0 z)Z@2-V8tkeF#v^{e1C7&V--4C;8YXB9o9ojUzpS<2F@Qb%~;6#6%?|T_@1YBAZVFx z>}tf>nU;NexRytIZ5DZyZ1KnF+T}D9`m$oi(Ab#ZWKF4SqtlMtrY0m#>X!m)YE2Ur zsTW1)0vHV$bG5n73PdY4E}#%Dh4L;0Ko8+8Qp%9(gPNYI;}V$CTy0efwl`w4ASYFg~{4 zVJBxYz2x~+*;koE?OXOl4zb11G}EhO{dt45)p46}qDRS)uks}osWeXx>fC+hi4l#E zg9mn&dh3j7NEHI|>YmO&J{u!e&L8;7Fe-9Zds`}O%?gFxdg1!-4(D%>x5BJs?_Q_h z3L90jUnHSK*ptMEnJb}MhTxM>l6Lo*X9k;vz^b^ub%OV-s>m|>GdN9!J&pW0mG?FL z?KFizEZ>r$UlBbm8+Ettk0&bo` zvuRRF42}{nSbPx}(GjBb7h=&MvAICKJO(8*Owk8<8{qY8&@Cwh%6oa$jaE{;=_iSPDV8J>Jl1CNsw-DlKxb?|KW>^Txu_f7?F(s^xm>N2nP@`tSnI z>@%r=jhlRR28hp%xgw3Z!k~~KV+iW37C}**2x^wkB+65sXF(JZJorW@P0cT_U;a)< zr<5+`^*5b9Rp^Z8anwHM#-QjmPKXI_gOVhMSx!T+Iy4q+5U&K5D;dBZ`>N)_12q6+ z{f3n+GFd8QgntrhS3{^HR&x)Dke4ic7tzM~;ftCWL(|8%+3U_z(2IdOqTNqq1{#TFOs@3XE2M~gx< z^&G|Cc_HITkCOvwOl-6CDux)49zXlklY~cz=Sg(FdEr;5o;OTMl7b>c!IS8hCJh}s z;pKBQOhST!Gt>xr`B{SPc5=>E#rF`%DK4*h@Oq+Ubb&f|$bLVAaWhM2qRi!{7=u=F z`x7A!tOUx4vGxmPi)`fr8W@I288a?){lU#|IRw`p8ynP+*uUHd2f&~sgUa=Nm`vQo z{HXU4|0E+ZxxFarxB`)8k+vmj=e^G|(G|S=);0=-kw2-a5lxhzk^j7DuYp}|cfYev z_D516iEPYucwJWT$$hPaRy(;@|J-AJKz9TSAMsi_nlaj($FlKO&!=+3gsldmN3iOy(-*eP`_~T83`1d%3!D5Y}UqK4=#1+ZYqC|6~ zJk1W{D&>~`X%72}gR9LmpzC}vZ-tsgj5yHjJLYh^y<*22f2vpRz2{2E-i^fS@W^#z zDf;MH%m-xaxDd-alt-mCr~EzPDvzsVKTGT|^Ir!1^k@>#Zw~VTKW{CKs2;1$1MPR+ zx9?irBiWnFs{2FdUHuh%J+Fm0d;I#@WEpzohM?s5Lz3jk!INX?={2v(?Yvw|k!R0V z-IlK_w(sn8uuJzGX6nS@ZhoUtoqGv4cD-xvOESouILX6QA_ZirX@T3Cr0=UuN4{m$ zxXRb)-rXp4GJlUC%{0PyRc5U+&MY!!@YVQ%W=5&{UlwFue?o`)+p+d=C?>?#5T)B1 zcu}_;wO_G-PuyPIFSdPs9TlWMYqW~lYgFFYjqA3wkn`-JG>5GEaa9m~9B@>`dB}Lv zyz*L9J}f@Zy~!5Gb(bP&#>OKGNwQva3aJL~?=ar5fZ_z9Xqq+p{=CJT$3FUrDyoZd@i zpTO-c4o2+!EE@P~c*p#?WW(^TZ$<4_Lw+2G@R{Q&^15WY(75pIc9!yj|GX6)TsJiF z_52SZe=A--ndl!e{79J%3cT~HBF@EVK{d&XurMn>Q^Wl$Zd$NoD@0+eMAXTL_BB=V zr)dZj?zD4#yp1+~KHkM1T?y*>d=egpnZpdH6dh`P>(no5Gbs0o5~CN&`&XGYMU_pq z!OSg_82<7-T|JkNz}q=1%F*Q~Pf0~u?y#J|wT2%2w>0Uyq{^KepS`y4DDp0o%339F znR0(N+%evJj}Rq%plJi7>|JKquFy_iaD_^GZ& zZB3Nf?yolTujrllvm;c&XIDucdImY9+#(Ds+X613X$_+bXx-c*->bTR;oh+NQfur9 zAM)ist&CE)c)@J=M2kafg4Ytw+m&uU4N6I~%G2v@)1I2rEt@cHWhsi-Pw?Ixv7Gjv zc$%W2Ypj>V;Kdl4hBzKE^WrER8Rb4QQ+^GwBKc|+2}cL#ML;A3-CQ9fYgSvnd|j8| z+yO;L@8leZRJdQLZtrA;L|yrEch8|uB{LJ&Yx~Ol@`^Jm*|?vTZ*7^IUt97(NAIc< zDI3#RzXx|RKD*HPtmk;~{b@c2(JGlS{20@F&vomK{ySo|C>l))lBh5uzJ|5nRt?cq z3*l)ckMu$}>G+&Z8sDb2a~b0*YW0+^&iS*GD(@&rw*s59YILrM=nn4=0NpBHWK zluOeZ5@P)A?1uM=Rk(4sj~Ip~!sc($=?F&8KL@Y-_P`1waYk#-5t9|~Uo{7(yR>jq z8NEYLdH@rc`O1Ga^~1&s=f9DexAch1xoya>6x@Se_|!iHFh=hqKEm4{R+%QVve!Bp z=8A@+c2C|h@e+(a@M^4ngn3lScq&91y-mMy*^m~zyVWJ}{#OubQ-drGtqE953`MJT zznJNHS+*;N#P%VOJ@3^qQfMl2H#N-d%=}@=pPDGgpL{=wuR6Rf*o%oT(RR%$hKa)S zgObfy_H82*%~Vb*Rdxfz>7=Pe$QEl^lM60M!psfy!Ap2>a8&T) zEeqMXDXgC(X;4>5h|tl}CP}Za)%0`CeLTC+S^gN&h|ygp{udRdm7Lkfj>1-an$pHL zn!a67AA$zk$%(5nl#}q5jv>`c9`!hHXZe-Y)qEOZOq++Pm(x!5De0#HeiK z;UDsgLJ?I+AvV~DpByvC^W6>`9FtXx`I`;9oTI+@;;S5Mstd^L>#;-3w06i5+)Z03 z5jxSjBs>hNy0|ZNK6^Pd=+2oc$9{%^fsJ?vmH1Qy)v>SbS~F4cBF$uHKK_~M&<1f( zrw}k)>Kpq?xZKyU-81RA78z=Z3BHZhwMfm@S@&+CGu985N2AH9pr)U2#y-j+Lga0U zz=+xt0<3Dmz&psPptu5IdrEN{<5^+7+)XIJj7{{BQ5Kg+-WAz zIpJHT)uEhAW2;g1hf42Yb_toicfmnG!#`KPgBA!#k8r0sf0&;$Pk8UV*e-4#@B8+$ zH|0}d*(*v;Ok5+fDel4I8r)v}98I2rlLS&`=IIR7ud|`NgRJL_FgQlhYDJL^4=LY^ zYXnltLszT&NmW!LVe+C8)evNjHoq=aQu*e9PVGt-|^6iQ?q11?EUDc zGN?r-TITBEzx(D{@Ce#-u3HSq8j}h0ebfC{c)Obw{bj$!i``XC$GMU^a=Bn>IT2L( f|6f1(1W(jElv>iu;hXX>;OE_&571IcegFRfDl4h% literal 0 HcmV?d00001 diff --git a/src/server/web/index.ts b/src/server/web/index.ts index 59b8390ab..7fd9e76cf 100644 --- a/src/server/web/index.ts +++ b/src/server/web/index.ts @@ -2,6 +2,7 @@ * Web Client Server */ +import * as os from 'os'; import ms = require('ms'); import * as Koa from 'koa'; import * as Router from 'koa-router'; @@ -18,6 +19,8 @@ import config from '../../config'; import Note, { pack as packNote } from '../../models/note'; import getNoteSummary from '../../misc/get-note-summary'; import fetchMeta from '../../misc/fetch-meta'; +import Emoji from '../../models/emoji'; +const pkg = require('../../../package.json'); const client = `${__dirname}/../../client/`; @@ -195,6 +198,27 @@ router.get('/notes/:note', async ctx => { }); //#endregion +router.get('/info', async ctx => { + const meta = await fetchMeta(); + const emojis = await Emoji.find({ host: null }, { + fields: { + _id: false + } + }); + await ctx.render('info', { + version: pkg.version, + machine: os.hostname(), + os: os.platform(), + node: process.version, + cpu: { + model: os.cpus()[0].model, + cores: os.cpus().length + }, + emojis: emojis, + meta: meta + }); +}); + // Render base html for all requests router.get('*', async ctx => { const meta = await fetchMeta(); diff --git a/src/server/web/views/info.pug b/src/server/web/views/info.pug new file mode 100644 index 000000000..3e72d8641 --- /dev/null +++ b/src/server/web/views/info.pug @@ -0,0 +1,113 @@ +doctype html + +html + + head + meta(charset='utf-8') + meta(name='application-name' content='Misskey') + title Misskey + style. + html { + font-family: sans-serif; + } + + main { + max-width: 934px; + margin: 0 auto; + } + + header { + padding: 5px; + background: rgb(153, 153, 204); + border: 1px solid #000; + } + header:after { + content: ''; + display: block; + clear: both; + } + + header > h1 { + float: left; + font-size: 2em; + } + + header > img { + float: right; + width: 220px; + } + + table { + margin: 1em 0; + width: 100%; + border-collapse: collapse; + } + table tr th { + background-color: #ccf; + border: 1px solid #000; + width: 300px; + font-weight: bold; + padding: 4px 5px; + text-align: left; + } + table tr td { + background-color: #ddd; + border: 1px solid #000; + padding: 4px 5px; + } + + body + main + header + h1 Misskey Version #{version} + img(src='/assets/misskey-php-like-logo.png' alt='') + table + tr + th Instance + td= meta.name + tr + th Maintainer + td + = meta.maintainer.name + | <#{meta.maintainer.email}> + tr + th System + td= os + tr + th Node version + td= node + tr + th Machine + td= machine + tr + th CPU + td= cpu.model + tr + th Registration + td= !meta.disableRegistration ? 'yes' : 'no' + tr + th reCAPTCHA enabled + td= meta.enableRecaptcha ? 'yes' : 'no' + tr + th Cache remote files + td= meta.cacheRemoteFiles ? 'yes' : 'no' + tr + th Drive capacity per local user + td + = meta.localDriveCapacityMb + | MB + tr + th Drive capacity per remote user + td + = meta.remoteDriveCapacityMb + | MB + tr + th Max text length + td= meta.maxNoteTextLength + tr + th Emojis + td + each emoji in emojis + | :#{emoji.name}: + = ' ' +