Advertisement
MatthiasMerkel

Untitled

May 13th, 2018
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 22.14 KB | None | 0 0
  1. <?php
  2. /*
  3. First-Coder Teamspeak 3 Webinterface for everyone
  4. Copyright (C) 2017 by L.Gmann
  5.  
  6. This program is free software: you can redistribute it and/or modify
  7. it under the terms of the GNU General Public License as published by
  8. the Free Software Foundation, either version 3 of the License, or
  9. any later version.
  10.  
  11. This program is distributed in the hope that it will be useful,
  12. but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  14. GNU General Public License for more details.
  15.  
  16. You should have received a copy of the GNU General Public License
  17. along with this program. If not, see <http://www.gnu.org/licenses/>.
  18.  
  19. for help look http://first-coder.de/
  20. */
  21.  
  22. /*
  23. Includes
  24. */
  25. require_once(__DIR__."/../../config/config.php");
  26. require_once(__DIR__."/../../config/instance.php");
  27. require_once(__DIR__."/../../lang/lang.php");
  28. require_once(__DIR__."/../../php/functions/functions.php");
  29. require_once(__DIR__."/../../php/functions/functionsSql.php");
  30. require_once(__DIR__."/../../php/functions/functionsTeamspeak.php");
  31.  
  32. /*
  33. Variables
  34. */
  35. $LoggedIn = (checkSession()) ? true : false;
  36.  
  37. /*
  38. Get the Modul Keys / Permissionkeys
  39. */
  40. $mysql_keys = getKeys();
  41. $mysql_modul = getModuls();
  42.  
  43. /*
  44. Is Client logged in?
  45. */
  46. if($_SESSION['login'] != $mysql_keys['login_key'])
  47. {
  48. reloadSite();
  49. exit;
  50. };
  51.  
  52. /*
  53. Get Client Permissions
  54. */
  55. $user_right = getUserRights('pk', $_SESSION['user']['id']);
  56.  
  57. /*
  58. Has the Client the Permission
  59. */
  60. if($user_right['right_hp_ts3']['key'] != $mysql_keys['right_hp_ts3'])
  61. {
  62. reloadSite();
  63. };
  64. ?>
  65.  
  66. <div id="adminContent">
  67. <!-- Modal: Instanz Shell -->
  68. <div id="modalShellInstanz" class="modal fade" data-backdrop="true" tabindex="-1" role="dialog" aria-labelledby="modalShellInstanzLabel" aria-hidden="true">
  69. <div class="modal-dialog modal-lg" role="document">
  70. <div class="modal-content">
  71. <div class="modal-header alert-info">
  72. <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
  73. <h4 class="modal-title" id="modalShellInstanzLabel"><?php echo $language['instance_shell']; ?></h4>
  74. </div>
  75. <div class="modal-body">
  76. <div class="form-group">
  77. <label for="shellPort"><?php echo $language['ssh_port']; ?></label>
  78. <input type="number" class="form-control" id="shellPort" aria-describedby="shellPortHelp" value="22">
  79. <small id="shellPortHelp" class="form-text text-muted"><?php echo $language['ssh_port_info']; ?></small>
  80. </div>
  81. <div class="form-group">
  82. <label for="shellPath"><?php echo $language['folder_path']; ?></label>
  83. <input type="text" class="form-control" id="shellPath" aria-describedby="shellPathHelp" placeholder="Example: /home/teamspeak/">
  84. <small id="shellPathHelp" class="form-text text-muted"><?php echo $language['ssh_folder_path_info']; ?></small>
  85. </div>
  86. <hr/>
  87. <label for="shellPath">Login via</label>
  88. <div class="row">
  89. <div class="col-lg-6 col-md-6 col-sm-12 col-xs-12 margin-row">
  90. <label class="c-input c-radio">
  91. <input id="useShellClient" onChange="slideInstanzShell('client');" name="loginArtRadio" type="radio" checked>
  92. <span class="c-indicator"></span>
  93. <?php echo $language['client']; ?>
  94. </label>
  95. </div>
  96. <div class="col-lg-6 col-md-6 col-sm-12 col-xs-12 margin-row">
  97. <label class="c-input c-radio">
  98. <input onChange="slideInstanzShell('key');" name="loginArtRadio" type="radio">
  99. <span class="c-indicator"></span>
  100. <?php echo $language['key']; ?>
  101. </label>
  102. </div>
  103. </div>
  104. <div id="shellClientArea">
  105. <div class="form-group">
  106. <label for="shellClient"><?php echo $language['client']; ?></label>
  107. <input type="text" class="form-control" id="shellClient" aria-describedby="shellClientHelp" placeholder="root">
  108. <small id="shellClientHelp" class="form-text text-muted"><?php echo $language['ssh_client_info']; ?></small>
  109. </div>
  110. <div class="form-group">
  111. <label for="shellPassword"><?php echo $language['password']; ?></label>
  112. <input type="password" class="form-control" id="shellPassword" aria-describedby="shellClientPassword" placeholder="*****">
  113. <small id="shellClientPassword" class="form-text text-muted"><?php echo $language['ssh_password_info']; ?></small>
  114. </div>
  115. </div>
  116. <div id="shellKeyArea" style="display: none;">
  117. <div class="form-group">
  118. <label><?php echo $language['key']; ?></label>
  119. <select id="shellKeySelect" class="form-control c-select">
  120. <option disabled selected style="display: none;"><?php echo $language['choose_key']; ?></option>
  121. <?php
  122. $keys = scandir(__dir__.'/../../files/shell/');
  123. foreach($keys AS $key)
  124. {
  125. if($key != "." && $key != ".." && strpos($key, ".ppk") !== false)
  126. {
  127. $key = str_replace(".ppk", "", $key);
  128. if(file_exists(__dir__."/../../files/shell/".$key))
  129. {
  130. echo '<option value="'.$key.'">'.$key.'</option>';
  131. };
  132. };
  133. };
  134. ?>
  135. </select>
  136. <small class="form-text text-muted"><?php echo $language['ssh_key_info']; ?></small>
  137. </div>
  138. <div class="form-group">
  139. <label for="shellClientKey"><?php echo $language['client']; ?></label>
  140. <input type="text" class="form-control" id="shellClientKey" aria-describedby="shellClientKeyHelp" placeholder="root">
  141. <small id="shellClientKeyHelp" class="form-text text-muted"><?php echo $language['ssh_client_info']; ?></small>
  142. </div>
  143. <div class="form-group">
  144. <label for="shellPassphare"><?php echo $language['passphare']; ?></label>
  145. <input type="password" class="form-control" id="shellPassphare" aria-describedby="shellPassphareHelp" placeholder="*****">
  146. <small id="shellPassphareHelp" class="form-text text-muted"><?php echo $language['ssh_passphare_info']; ?></small>
  147. </div>
  148. </div>
  149. <hr/>
  150. <label><?php echo $language['actions']; ?></label>
  151. <div class="list-group">
  152. <a id="command-start" href="#" onClick="$(this).parent().children().removeClass('active-shell');$(this).addClass('active-shell');return false;" class="list-group-item list-group-item-action list-group-item-success active-shell">
  153. <h5 class="list-group-item-heading"><?php echo $language['shell_start_instanz']; ?></h5>
  154. <p class="list-group-item-text"><?php echo $language['shell_start_instanz_info']; ?></p>
  155. </a>
  156. <a id="command-stop" href="#" onClick="$(this).parent().children().removeClass('active-shell');$(this).addClass('active-shell');return false;" class="list-group-item list-group-item-action list-group-item-danger">
  157. <h5 class="list-group-item-heading"><?php echo $language['shell_stop_instanz']; ?></h5>
  158. <p class="list-group-item-text"><?php echo $language['shell_stop_instanz_info']; ?></p>
  159. </a>
  160. <a href="#" onClick="$(this).parent().children().removeClass('active-shell');$(this).addClass('active-shell');return false;" class="list-group-item list-group-item-action list-group-item-warning">
  161. <h5 class="list-group-item-heading"><?php echo $language['shell_restart_instanz']; ?></h5>
  162. <p class="list-group-item-text"><?php echo $language['shell_restart_instanz_info']; ?></p>
  163. </a>
  164. </div>
  165. <p style="text-align: center;margin-top: 10px;">
  166. <i class="fa fa-warning" aria-hidden="true"></i> <?php echo $language['shell_instanz_key_warning']; ?> <i class="fa fa-warning" aria-hidden="true"></i></p>
  167. </p>
  168. <div id="instanzShellConsoleBox" style="margin-top: 10px;display: none;" class="alert alert-info">
  169. <i class="fa fa-info"></i> <?php echo $language['query_console']; ?>
  170. <div id="instanzShellConsole" style="margin-top: 10px;"></div>
  171. </div>
  172. <button id="shellCommand" class="btn btn-success" style="width: 100%;margin-top: 20px;"><i class="fa fa-paper-plane"></i> <?php echo $language['senden']; ?></button>
  173. </div>
  174. </div>
  175. </div>
  176. </div>
  177.  
  178. <!-- Modal: Instanz Admin Query -->
  179. <div id="modalAdminQueryInstanz" class="modal fade" data-backdrop="true" tabindex="-1" role="dialog" aria-labelledby="modalAdminQueryInstanzLabel" aria-hidden="true">
  180. <div class="modal-dialog modal-lg" role="document">
  181. <div class="modal-content">
  182. <div class="modal-header alert-warning">
  183. <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
  184. <h4 class="modal-title" id="modalAdminQueryInstanzLabel"><?php echo $language['admin_query']; ?>
  185. </div>
  186. <div class="modal-body">
  187. <div class="row">
  188. <div class="col-md-12">
  189. <p><?php echo $language['admin_query_add']; ?>:</p>
  190. <div style="margin-bottom: 10px;">
  191. <code style="float: left;">servergroupaddclient sgid=2 cldbid=MY_CLIENT_DATABASEID</code>
  192. <button data-dismiss="modal" id="addServerAdminQuery" style="float: right;" class="btn btn-warning"><i class="fa fa-fw fa-check"></i> <?php echo $language['submit']; ?></button>
  193. <div style="clear: both;"></div>
  194. </div>
  195. <p><?php echo $language['admin_query_del']; ?></p>
  196. <div style="margin-bottom: 10px;">
  197. <code style="float: left;">servergroupdelclient sgid=2 cldbid=MY_CLIENT_DATABASEID</code>
  198. <button data-dismiss="modal" id="delServerAdminQuery" style="float: right;" class="btn btn-warning"><i class="fa fa-fw fa-check"></i> <?php echo $language['submit']; ?></button>
  199. <div style="clear: both;"></div>
  200. </div>
  201. </div>
  202. </div>
  203. </div>
  204. </div>
  205. </div>
  206. </div>
  207.  
  208. <!-- Instanz hinzufügen -->
  209. <div class="card">
  210. <div class="card-block card-block-header">
  211. <h4 class="card-title"><i class="fa fa-plus"></i> <?php echo $language['add_instanz']; ?></h4>
  212. <h6 class="card-subtitle text-muted"><?php echo $language['instanz_info']; ?></h6>
  213. </div>
  214. <div class="card-block">
  215. <div class="form-group">
  216. <label for="adminCreateInstanzAlias"><?php echo $language['alias']; ?></label>
  217. <input type="text" class="form-control" id="adminCreateInstanzAlias" aria-describedby="adminCreateInstanzAliasHelp">
  218. <small id="adminCreateInstanzAliasHelp" class="form-text text-muted"><?php echo $language['alias_info']; ?></small>
  219. </div>
  220. <div class="form-group">
  221. <label for="adminCreateInstanzIp"><?php echo $language['ip_adress']; ?></label>
  222. <input type="text" class="form-control" id="adminCreateInstanzIp" aria-describedby="adminCreateInstanzIpHelp">
  223. <small id="adminCreateInstanzIpHelp" class="form-text text-muted"><?php echo $language['ip_info']; ?></small>
  224. </div>
  225. <div class="form-group">
  226. <label for="adminCreateInstanzQueryport"><?php echo $language['queryport']; ?></label>
  227. <input type="number" class="form-control" id="adminCreateInstanzQueryport" aria-describedby="adminCreateInstanzQueryportHelp">
  228. <small id="adminCreateInstanzQueryportHelp" class="form-text text-muted"><?php echo $language['queryport_info']; ?></small>
  229. </div>
  230. <div class="form-group">
  231. <label for="adminCreateInstanzClient"><?php echo $language['client']; ?></label>
  232. <input type="text" class="form-control" id="adminCreateInstanzClient" aria-describedby="adminCreateInstanzClientHelp">
  233. <small id="adminCreateInstanzClientHelp" class="form-text text-muted"><?php echo $language['client_info_instanz']; ?></small>
  234. </div>
  235. <div class="form-group">
  236. <label for="adminCreateInstanzPassword"><?php echo $language['password']; ?></label>
  237. <input type="password" class="form-control" id="adminCreateInstanzPassword" aria-describedby="adminCreateInstanzPasswordHelp">
  238. <small id="adminCreateInstanzPasswordHelp" class="form-text text-muted"><?php echo $language['password_info_instanz']; ?></small>
  239. </div>
  240. <div class="row">
  241. <div class="col-md-12 col-xs-12" style="text-align:center;">
  242. <button style="width:100%;" onClick="createInstanz();" class="btn btn-success" id="addInstanz" type="button"><i class="fa fa-save"></i> <?php echo $language['save']; ?></button>
  243. </div>
  244. </div>
  245. </div>
  246. </div>
  247.  
  248. <!-- Instanzen -->
  249. <?php foreach($ts3_server AS $instanz => $server)
  250. {
  251. $connection = checkTS3Connection($server['ip'], $server['queryport'], $server['user'], $server['pw']); ?>
  252. <div id="instanzMain<?php echo $instanz; ?>">
  253. <div class="card">
  254. <div style="cursor:pointer;" class="card-block card-block-header" onClick="slideMe('instanzBox<?php echo $instanz; ?>', 'instanzIcon<?php echo $instanz; ?>');">
  255. <h4 class="card-title">
  256. <div class="pull-xs-left">
  257. <i id="instanzIcon<?php echo $instanz; ?>" class="fa fa-arrow-right"></i>
  258. <?php echo $language['instance']; ?>:
  259. <?php
  260. if($server['alias'] != '')
  261. {
  262. xssEcho($server['alias']);
  263. }
  264. else
  265. {
  266. xssEcho($server['ip']);
  267. };
  268. ?>
  269. </div>
  270. <div class="label label-<?php if($connection) { echo "success"; } else { echo "danger"; }?> pull-xs-right" id="instanzTextBox<?php echo $instanz; ?>">
  271. <?php if($connection) { ?>
  272. <i class="fa fa-check"></i> <?php echo $language['success']; ?>
  273. <?php } else { ?>
  274. <i class="fa fa-close"></i> <?php echo $language['failed']; ?>
  275. <?php } ?>
  276. </div>
  277. <div style="clear:both;"></div>
  278. </h4>
  279. </div>
  280. <div class="card-block" id="instanzBox<?php echo $instanz; ?>" style="display:none;">
  281. <div class="form-group">
  282. <label for="instanzIp<?php echo $instanz; ?>"><?php echo $language['ip_adress']; ?></label>
  283. <div class="input-group">
  284. <input type="text" class="form-control" id="instanzIp<?php echo $instanz; ?>" aria-describedby="instanzIp<?php echo $instanz; ?>Help" placeholder="<?php xssEcho($server['ip']); ?>">
  285. <span class="input-group-btn">
  286. <button onClick="changeInstanz('ip', '<?php echo $instanz; ?>')" class="btn btn-success" type="button"><i class="fa fa-check"></i></button>
  287. </span>
  288. </div>
  289. <small id="instanzIp<?php echo $instanz; ?>Help" class="form-text text-muted"><?php echo $language['ip_info']; ?></small>
  290. </div>
  291. <div class="form-group">
  292. <label for="instanzQueryport<?php echo $instanz; ?>"><?php echo $language['queryport']; ?></label>
  293. <div class="input-group">
  294. <input type="number" class="form-control" id="instanzQueryport<?php echo $instanz; ?>" aria-describedby="instanzQueryport<?php echo $instanz; ?>Help" placeholder="<?php xssEcho($server['queryport']); ?>">
  295. <span class="input-group-btn">
  296. <button onClick="changeInstanz('queryport', '<?php echo $instanz; ?>')" class="btn btn-success" type="button"><i class="fa fa-check"></i></button>
  297. </span>
  298. </div>
  299. <small id="instanzQueryport<?php echo $instanz; ?>Help" class="form-text text-muted"><?php echo $language['queryport_info']; ?></small>
  300. </div>
  301. <div class="form-group">
  302. <label for="instanzUser<?php echo $instanz; ?>"><?php echo $language['client']; ?></label>
  303. <div class="input-group">
  304. <input type="text" class="form-control" id="instanzUser<?php echo $instanz; ?>" aria-describedby="instanzUser<?php echo $instanz; ?>Help" placeholder="<?php xssEcho($server['user']); ?>">
  305. <span class="input-group-btn">
  306. <button onClick="changeInstanz('user', '<?php echo $instanz; ?>')" class="btn btn-success" type="button"><i class="fa fa-check"></i></button>
  307. </span>
  308. </div>
  309. <small id="instanzUser<?php echo $instanz; ?>Help" class="form-text text-muted"><?php echo $language['client_info_instanz']; ?></small>
  310. </div>
  311. <div class="form-group">
  312. <label for="instanzPassword<?php echo $instanz; ?>"><?php echo $language['password']; ?></label>
  313. <div class="input-group">
  314. <input type="password" class="form-control" id="instanzPassword<?php echo $instanz; ?>" aria-describedby="instanzPassword<?php echo $instanz; ?>Help" placeholder="******">
  315. <span class="input-group-btn">
  316. <button onClick="changeInstanz('pw', '<?php echo $instanz; ?>')" class="btn btn-success" type="button"><i class="fa fa-check"></i></button>
  317. </span>
  318. </div>
  319. <small id="instanzPassword<?php echo $instanz; ?>Help" class="form-text text-muted"><?php echo $language['password_info_instanz']; ?></small>
  320. </div>
  321. <?php if($connection) { ?>
  322. <div class="row" style="padding:.75rem;">
  323. <div class="alert alert-info">
  324. <i class="fa fa-info"></i> <?php echo $language['query_console']; ?>
  325.  
  326. <textarea id="commandInput<?php echo $instanz; ?>" class="form-control small-top-bottom-margin" style="width: 100%;" placeholder="<?php echo $language['input']; ?>..."></textarea>
  327. <button instanz="<?php echo $instanz; ?>" class="btn btn-success commandQueryConsole" style="width: 100%;"><i class="fa fa-paper-plane" aria-hidden="true"></i> <?php echo $language['senden']; ?></button>
  328.  
  329. <div style="margin-top: 10px;">
  330. <div class="pull-xs-left">
  331. <i class="fa fa-history" aria-hidden="true"></i> <?php echo $language['last_entrys']; ?>
  332. </div>
  333. <div class="pull-xs-right">
  334. <a remove-id="commandInputHistory<?php echo $instanz; ?>" href="#" class="clearConsole alert-link"><i class="fa fa-trash" aria-hidden="true"></i> <?php echo $language['clear']; ?></a>
  335. </div>
  336. <div style="clear:both;"></div>
  337. </div>
  338. <div id="commandInputHistory<?php echo $instanz; ?>" class="alert alert-info"></div>
  339.  
  340. <div style="margin-top: 10px;">
  341. <div class="pull-xs-left">
  342. <i class="fa fa-terminal" aria-hidden="true"></i> <?php echo $language['console']; ?>
  343. </div>
  344. <div class="pull-xs-right">
  345. <a remove-id="commandOutput<?php echo $instanz; ?>" href="#" class="clearConsole alert-link"><i class="fa fa-trash" aria-hidden="true"></i> <?php echo $language['clear']; ?></a>
  346. </div>
  347. <div style="clear:both;"></div>
  348. </div>
  349. <div id="commandOutput<?php echo $instanz; ?>" class="alert alert-info" style="margin-top: 10px;"></div>
  350. </div>
  351. </div>
  352. <?php }; ?>
  353. <div class="row" style="padding:.75rem;">
  354. <div class="col-md-12 col-xs-12" style="text-align:center;">
  355. <?php if(!isWindows()) { ?>
  356. <button data-toggle="modal" data-target="#modalShellInstanz" data-ip="<?php echo $ts3_server[$instanz]['ip']; ?>" class="btn btn-info btn-sm" type="button"><i class="fa fa-terminal"></i> Shell</button>
  357. <?php }; ?>
  358. <?php if($connection) { ?>
  359. <button data-toggle="modal" data-target="#modalAdminQueryInstanz" data-instanz="<?php echo $instanz; ?>" class="btn btn-warning btn-sm" type="button"><i class="fa fa-user-secret"></i> Admin Query</button>
  360. <?php }; ?>
  361. <button onClick="AreYouSure('<?php echo $language['delete_instanz']; ?>', 'deleteInstanz(\'<?php echo $instanz; ?>\')');" class="btn btn-danger btn-sm" type="button"><i class="fa fa-trash"></i> <?php echo $language['delete_instanz']; ?></button>
  362. </div>
  363. </div>
  364. </div>
  365. </div>
  366. </div>
  367. <?php } ?>
  368. </div>
  369.  
  370. <!-- Javascripte Laden -->
  371. <script src="js/webinterface/admin.js"></script>
  372. <script>
  373. queryConsoleSelected = new Array();
  374.  
  375. $('#modalAdminQueryInstanz').on('show.bs.modal', function (event)
  376. {
  377. var button = $(event.relatedTarget);
  378. var instanz = button.data('instanz');
  379.  
  380. document.getElementById('addServerAdminQuery').addEventListener("click", function(){
  381. $('#commandInput'+instanz).val('servergroupaddclient sgid=2 cldbid=MY_CLIENT_DATABASEID');
  382. });
  383.  
  384. document.getElementById('delServerAdminQuery').addEventListener("click", function(){
  385. $('#commandInput'+instanz).val('servergroupdelclient sgid=2 cldbid=MY_CLIENT_DATABASEID');
  386. });
  387. });
  388.  
  389. function shellCommand(ip)
  390. {
  391. var command = "restart",
  392. useClient = $('#useShellClient').prop("checked");
  393.  
  394. if($("#command-start").hasClass("active-shell"))
  395. {
  396. command = "start";
  397. }
  398. else if($("#command-stop").hasClass("active-shell"))
  399. {
  400. command = "stop";
  401. };
  402.  
  403. if((($('#shellClient').val() != "" && useClient) || ($('#shellClientKey').val() != "" != "" && !useClient)) && $('#shellPort').val() != "")
  404. {
  405. if(($('#shellClient').val() != 'root' && useClient) || ($('#shellClientKey').val() != 'root' && !useClient))
  406. {
  407. if(useClient)
  408. {
  409. var postData = {
  410. action: 'instanzShell',
  411. ip: ip,
  412. port: $('#shellPort').val(),
  413. username: $('#shellClient').val(),
  414. password: encodeURIComponent($('#shellPassword').val()),
  415. command: command,
  416. path: encodeURIComponent($('#shellPath').val())
  417. };
  418. }
  419. else
  420. {
  421. var postData = {
  422. action: 'instanzShell',
  423. ip: ip,
  424. port: $('#shellPort').val(),
  425. username: $('#shellClientKey').val(),
  426. password: encodeURIComponent($('#shellPassphare').val()),
  427. command: command,
  428. path: encodeURIComponent($('#shellPath').val()),
  429. file: $('#shellKeySelect').val()
  430. };
  431. };
  432.  
  433. $.ajax({
  434. type: "POST",
  435. url: "./php/functions/functionsShell.php",
  436. data: postData,
  437. success: function(data) {
  438. console.log(data);
  439. document.getElementById("instanzShellConsole").innerHTML = data;
  440. $("#instanzShellConsoleBox").slideDown("slow");
  441. }
  442. });
  443. }
  444. else
  445. {
  446. setNotifyFailed(lang.no_root);
  447. };
  448. }
  449. else
  450. {
  451. setNotifyFailed(lang.instanz_add_empty);
  452. };
  453. };
  454.  
  455. $('#modalShellInstanz').on('show.bs.modal', function (event)
  456. {
  457. var button = $(event.relatedTarget),
  458. ip = button.data('ip');
  459.  
  460. document.getElementById('shellCommand').addEventListener("click", function(){
  461. shellCommand(ip)
  462. });
  463. });
  464.  
  465. /*$('#modalShellInstanz').on('hide.bs.modal', function (event)
  466. {
  467. document.getElementById('shellCommand').removeEventListener("click", function()
  468. {
  469. shellCommand();
  470. });
  471. });*/
  472. </script>
  473. <script src="js/sonstige/preloader.js"></script>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement