已发布的源代码
下载源代码 ZIP
CH-J Server Manager
浏览特定应用版本的目录和文件。
CH-J / Server Manager
368 个文件
core-20261017T201717Z-057348c4a70f
添加时间: 未记录日期 · 构建时间:
1
<!doctype html>2
<html lang="cs">3
<head>4
<meta charset="utf-8">5
<meta name="viewport" content="width=device-width, initial-scale=1">6
<meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self'; style-src 'self'; connect-src 'none'; img-src 'self' data:; object-src 'none'; base-uri 'none'; form-action 'none'">7
<title>Users & SSH</title>8
<link rel="stylesheet" href="styles.css">9
</head>10
<body>11
<header class="app-header">12
<div><span class="eyebrow">CH-J PLUGIN</span><h1>Users & SSH</h1><p id="pluginVersion">Plugin se načítá…</p></div>13
<button id="closeButton" class="button ghost" type="button">Zavřít</button>14
</header>15
<main>16
<section class="toolbar panel" aria-label="Relace a oprávnění">17
<label>Aktivní SSH relace<select id="sessionSelect"><option value="">Žádná připojená relace</option></select></label>18
<button id="refreshSessionsButton" class="button" type="button">Obnovit relace</button>19
<div class="privilege" aria-live="polite"><span>Oprávnění relace</span><strong id="privilegeBadge" class="badge muted">neověřeno</strong></div>20
<button id="reloadButton" class="button primary" type="button" disabled>Načíst účty</button>21
<button id="elevatedButton" class="button" type="button" hidden>Načíst rozšířený stav (sudo)</button>22
</section>23
<p id="status" class="status" role="status" aria-live="polite">Vyberte připojený server.</p>25
<div class="layout">26
<section class="list panel" aria-label="Uživatelské účty">27
<div class="list-head">28
<input id="searchInput" type="search" placeholder="Hledat účet…" aria-label="Hledat účet">29
<select id="filterSelect" aria-label="Filtr účtů">30
<option value="regular">Běžné účty</option>31
<option value="system">Systémové účty</option>32
<option value="all">Všechny účty</option>33
</select>34
<button id="createButton" class="button primary" type="button" disabled>Nový uživatel</button>35
</div>36
<div class="table-wrap">37
<table>38
<thead><tr><th scope="col">Účet</th><th scope="col">UID</th><th scope="col">Stav</th><th scope="col">Sudo</th><th scope="col">SSH (CH-J)</th></tr></thead>39
<tbody id="usersBody"><tr><td colspan="5" class="empty">Nejsou načtena žádná data.</td></tr></tbody>40
</table>41
</div>42
<p id="inventoryNote" class="note"></p>43
</section>45
<section id="detailPanel" class="detail panel" aria-label="Detail účtu">46
<div id="detailEmpty" class="empty-detail">Vyberte účet v seznamu.</div>47
<div id="detailContent" hidden>48
<div class="detail-head">49
<div><h2 id="detailTitle"></h2><p id="detailSubtitle"></p></div>50
<div id="detailBadges" class="badges"></div>51
</div>52
<div id="detailNotice" class="notice" hidden></div>53
<div class="tabs" role="tablist" aria-label="Sekce účtu">54
<button type="button" role="tab" id="tab-account" aria-controls="panel-account" aria-selected="true">Účet</button>55
<button type="button" role="tab" id="tab-groups" aria-controls="panel-groups" aria-selected="false" tabindex="-1">Skupiny a sudo</button>56
<button type="button" role="tab" id="tab-ssh" aria-controls="panel-ssh" aria-selected="false" tabindex="-1">SSH přístup</button>57
<button type="button" role="tab" id="tab-keys" aria-controls="panel-keys" aria-selected="false" tabindex="-1">SSH klíče</button>58
<button type="button" role="tab" id="tab-diagnostics" aria-controls="panel-diagnostics" aria-selected="false" tabindex="-1">Diagnostika</button>59
</div>60
<div id="panel-account" role="tabpanel" aria-labelledby="tab-account" class="tab-panel"></div>61
<div id="panel-groups" role="tabpanel" aria-labelledby="tab-groups" class="tab-panel" hidden></div>62
<div id="panel-ssh" role="tabpanel" aria-labelledby="tab-ssh" class="tab-panel" hidden></div>63
<div id="panel-keys" role="tabpanel" aria-labelledby="tab-keys" class="tab-panel" hidden></div>64
<div id="panel-diagnostics" role="tabpanel" aria-labelledby="tab-diagnostics" class="tab-panel" hidden></div>65
</div>66
</section>67
</div>68
</main>70
<dialog id="sudoDialog" aria-labelledby="sudoTitle">71
<form id="sudoForm" method="dialog">72
<h3 id="sudoTitle">Vyžadováno sudo</h3>73
<p id="sudoMessage"></p>74
<label>Heslo pro sudo účtu <strong id="sudoUser"></strong><input id="sudoPassword" type="password" maxlength="1024" autocomplete="off" required></label>75
<p id="sudoError" class="error" hidden></p>76
<p class="hint">Heslo se použije jen pro tuto operaci, předá se serveru přes stdin SSH kanálu a nikam se neukládá.</p>77
<div class="actions"><button type="button" class="button ghost" data-close>Zrušit</button><button type="submit" class="button primary">Pokračovat</button></div>78
</form>79
</dialog>81
<dialog id="confirmDialog" aria-labelledby="confirmTitle">82
<form id="confirmForm" method="dialog">83
<h3 id="confirmTitle"></h3>84
<p id="confirmMessage"></p>85
<ul id="confirmDetails" class="details-list" hidden></ul>86
<label id="confirmOptionLabel" class="check" hidden><input id="confirmOption" type="checkbox"> <span id="confirmOptionText"></span></label>87
<label id="confirmTypedLabel" hidden>Pro potvrzení napište <strong id="confirmTypedValue"></strong><input id="confirmTyped" autocomplete="off"></label>88
<div class="actions"><button type="button" class="button ghost" data-close>Zrušit</button><button id="confirmSubmit" type="submit" class="button primary">Potvrdit</button></div>89
</form>90
</dialog>92
<dialog id="createDialog" aria-labelledby="createTitle">93
<form id="createForm" method="dialog">94
<h3 id="createTitle">Nový uživatel</h3>95
<div class="form-grid">96
<label>Uživatelské jméno<input id="createUsername" required maxlength="32" pattern="[a-z_][a-z0-9_\-]{0,31}" placeholder="novak" autocomplete="off"></label>97
<label>Celé jméno (volitelné)<input id="createComment" maxlength="100" autocomplete="off"></label>98
<label id="createDescriptionLabel" hidden>Popis (volitelné, max. 48 znaků)<input id="createDescription" maxlength="48" autocomplete="off"></label>99
<label>Shell<select id="createShell"></select></label>100
<label>Domovský adresář (volitelné)<input id="createHome" maxlength="255" placeholder="výchozí podle serveru" autocomplete="off"></label>101
<label>Primární skupina<select id="createPrimary"><option value="">Vlastní skupina se jménem účtu</option></select></label>102
<label>Doplňkové skupiny<select id="createGroups" multiple size="5"></select></label>103
<label>Heslo účtu (volitelné)<input id="createPassword" type="password" maxlength="256" autocomplete="new-password"></label>104
<label>Heslo znovu<input id="createPassword2" type="password" maxlength="256" autocomplete="new-password"></label>105
</div>106
<label class="check" id="createMakeHomeLabel"><input id="createMakeHome" type="checkbox" checked> vytvořit domovský adresář</label>107
<label class="check"><input id="createAdmin" type="checkbox"> <span id="createAdminText">přidat do administrátorské skupiny (sudo/wheel podle serveru)</span></label>108
<p class="hint" id="createHint">Bez hesla se účet může přihlásit jen SSH klíčem. Sudo práva se po vytvoření ověří pomocí <code>sudo -l</code>.</p>109
<p id="createError" class="error" hidden></p>110
<div class="actions"><button type="button" class="button ghost" data-close>Zrušit</button><button type="submit" class="button primary">Vytvořit účet</button></div>111
</form>112
</dialog>114
<dialog id="valueDialog" aria-labelledby="valueTitle">115
<form id="valueForm" method="dialog">116
<h3 id="valueTitle"></h3>117
<p id="valueMessage" class="hint"></p>118
<label><span id="valueLabelText"></span><input id="valueInput" autocomplete="off"></label>119
<label id="valueLabel2" hidden><span id="valueLabelText2"></span><input id="valueInput2" autocomplete="off"></label>120
<label id="valueOptionLabel" class="check" hidden><input id="valueOption" type="checkbox"> <span id="valueOptionText"></span></label>121
<p id="valueError" class="error" hidden></p>122
<div class="actions"><button type="button" class="button ghost" data-close>Zrušit</button><button type="submit" class="button primary">Uložit</button></div>123
</form>124
</dialog>126
<dialog id="keyDialog" aria-labelledby="keyTitle">127
<form id="keyForm" method="dialog">128
<h3 id="keyTitle">Přidat Ed25519 klíč</h3>129
<label>Veřejný klíč (OpenSSH)<textarea id="keyText" rows="4" spellcheck="false" placeholder="ssh-ed25519 AAAA… komentář"></textarea></label>130
<div class="inline-actions">131
<button id="keyImportButton" type="button" class="button">Importovat .pub soubor…</button>132
<input id="keyFile" type="file" accept=".pub,text/plain" hidden>133
<button id="keyGenerateButton" type="button" class="button">Vygenerovat nový pár…</button>134
</div>135
<fieldset id="keyGenerateFields" hidden>136
<legend>Nový pár Ed25519 na tomto počítači</legend>137
<label>Komentář<input id="keyGenComment" maxlength="200" autocomplete="off"></label>138
<label>Passphrase soukromého klíče (doporučeno)<input id="keyGenPassphrase" type="password" maxlength="1024" autocomplete="new-password"></label>139
<p class="hint">Soukromý klíč se uloží pouze lokálně do zvoleného souboru. Na server se odešle jen veřejný klíč.</p>140
<button id="keyGenRun" type="button" class="button primary">Vygenerovat a uložit soukromý klíč…</button>141
</fieldset>142
<p id="keyInfo" class="hint" hidden></p>143
<p id="keyError" class="error" hidden></p>144
<div class="actions"><button type="button" class="button ghost" data-close>Zrušit</button><button id="keySubmit" type="submit" class="button primary">Přidat klíč</button></div>145
</form>146
</dialog>148
<dialog id="probeDialog" aria-labelledby="probeTitle">149
<form id="probeForm" method="dialog">150
<h3 id="probeTitle">Ověření nového přihlášení</h3>151
<p>Měníte SSH přístup účtu, kterým je CH-J právě připojeno. Po aplikování změny Core zkusí nové SSH přihlášení; když selže, konfigurace se automaticky vrátí.</p>152
<label><span id="probeLabel">Heslo SSH profilu</span><input id="probeSecret" type="password" maxlength="1024" autocomplete="off" required></label>153
<p class="hint">Údaj se použije jen pro testovací přihlášení a neukládá se.</p>154
<div class="actions"><button type="button" class="button ghost" data-close>Zrušit</button><button type="submit" class="button primary">Pokračovat</button></div>155
</form>156
</dialog>158
<script src="index.js"></script>159
</body>160
</html>SHA-256
257c7fa3944932ccab0763e3c4f4ab606261decd1ba93c4b8ccaa74e335f0ebaCH-J Proprietary Software License 1.14 · 源代码依据 CH-J Proprietary Software License 1.14 提供。公开源代码不会改变许可条款,也不会授予额外权利。
压缩包 SHA-256
cf4455b698f0f28e456a37b1834976a0194d8486acb7101052d59a838745cca3