printForm( [ 'form' => [ 'method' => 'POST', 'action' => '#', ], 'inputs' => [ [ 'class' => 'w100p', 'arguments' => [ 'name' => 'submit', 'label' => __('Retry'), 'type' => 'submit', 'attributes' => 'class="sub next"', 'return' => true, ], ], ], ] ); return; } $wiz->printForm( [ 'form' => [ 'action' => '#', 'class' => 'wizard', 'method' => 'post', ], 'inputs' => [ [ 'label' => __('Username'), 'arguments' => [ 'type' => 'text', 'name' => 'username', ], ], [ 'label' => __('Port'), 'arguments' => [ 'type' => 'text', 'id' => 'port', 'name' => 'port', 'value' => 22, ], ], [ 'label' => __('Method'), 'arguments' => [ 'type' => 'select', 'name' => 'method', 'fields' => [ 'ssh' => __('SSH'), 'telnet' => __('Telnet'), ], 'script' => "p=22; if(this.value == 'telnet') { p=23; } $('#text-port').val(p);", ], ], [ 'arguments' => [ 'type' => 'submit', 'label' => __('Connect'), 'attributes' => 'class="sub next"', ], ], ], ], false, true ); return; } // Initialize Gotty Client. $host = $config['gotty_host']; if ($method == 'ssh') { // SSH. $port = $config['gotty_ssh_port']; $command_arguments = "var args = '?arg=".$username.'@'.$address; $command_arguments .= '&arg=-p '.$method_port."';"; } else if ($method == 'telnet') { // Telnet. $port = $config['gotty_telnet_port']; $command_arguments = "var args = '?arg=-l ".$username; $command_arguments .= '&arg='.$address; $command_arguments .= '&arg='.$method_port."';"; } else { ui_print_error_message(__('Please use SSH or Telnet.')); return; } // If rediretion is enabled, we will try to connect to http:// or https:// endpoint. $test = get_headers($ws_url); if ($test === false) { if (empty($wiz) === true) { $wiz = new Wizard(); } ui_print_error_message(__('WebService engine has not been started, please check documentation.')); echo $wiz->printGoBackButton('#'); return; } // Check credentials. $auth_str = ''; $gotty_url = $host.':'.$port; if (empty($config['gotty_user']) === false && empty($config['gotty_pass']) === false ) { $auth_str = $config['gotty_user'].':'.$config['gotty_pass']; $gotty_url = $auth_str.'@'.$host.':'.$port; } $r = file_get_contents('http://'.$gotty_url.'/js/hterm.js'); if (empty($r) === true) { if (empty($wiz) === true) { $wiz = new Wizard(); } ui_print_error_message(__('WebService engine is not working properly, please check documentation.')); echo $wiz->printGoBackButton('#'); return; } // Override gotty client settings. if (empty($auth_str) === true) { $r .= "var gotty_auth_token = '';"; } else { $r .= "var gotty_auth_token = '"; $r .= $auth_str."';"; } // Set websocket target and method. $gotty = file_get_contents('http://'.$gotty_url.'/js/gotty.js'); $url = "var url = (httpsEnabled ? 'wss://' : 'ws://') + window.location.host + window.location.pathname + 'ws';"; if (empty($config['ws_proxy_url']) === true) { $new = "var url = (httpsEnabled ? 'wss://' : 'ws://')"; $new .= " + window.location.host + ':"; $new .= $config['ws_port'].'/'.$method."';"; } else { $new = "var url = '"; $new .= $config['ws_proxy_url'].'/'.$method."';"; } // Update url. $gotty = str_replace($url, $new, $gotty); // Update websocket arguments. $args = 'var args = window.location.search;'; $new = $command_arguments; // Update arguments. $gotty = str_replace($args, $new, $gotty); ?>
0) { $msg = __('%d Updated', $changes); if ($critical > 0) { $msg = __( '%d Updated, please restart WebSocket engine service', $changes ); } ui_print_success_message($msg); } // Form. $wiz = new Wizard(); $wiz->printForm( [ 'form' => [ 'action' => '#', 'class' => 'wizard', 'method' => 'post', ], 'inputs' => [ [ 'label' => __('Gotty path').ui_print_help_tip( __('Leave blank if using an external Gotty service'), true ), 'arguments' => [ 'type' => 'text', 'name' => 'gotty', 'value' => $config['gotty'], ], ], [ 'label' => __('Gotty host'), 'arguments' => [ 'type' => 'text', 'name' => 'gotty_host', 'value' => $config['gotty_host'], ], ], [ 'label' => __('Gotty ssh port'), 'arguments' => [ 'type' => 'text', 'name' => 'gotty_ssh_port', 'value' => $config['gotty_ssh_port'], ], ], [ 'label' => __('Gotty telnet port'), 'arguments' => [ 'type' => 'text', 'name' => 'gotty_telnet_port', 'value' => $config['gotty_telnet_port'], ], ], [ 'label' => __('Gotty user').ui_print_help_tip( __('Optional, set a user to access gotty service'), true ), 'arguments' => [ 'type' => 'text', 'name' => 'gotty_user', 'value' => $config['gotty_user'], ], ], [ 'label' => __('Gotty password').ui_print_help_tip( __('Optional, set a password to access gotty service'), true ), 'arguments' => [ 'type' => 'password', 'name' => 'gotty_pass', 'value' => io_output_password($config['gotty_pass']), ], ], [ 'arguments' => [ 'type' => 'hidden', 'name' => 'qs_update', 'value' => 1, ], ], [ 'arguments' => [ 'type' => 'submit', 'label' => __('Update'), 'attributes' => 'class="sub next"', ], ], ], ], false, true ); } // This extension is usefull only if the agent has associated IP. $agent_id = get_parameter('id_agente'); if (empty($agent_id) === false && get_parameter('sec2', '') == 'operation/agentes/ver_agente' ) { $address = agents_get_address($agent_id); if (empty($address) === false) { // Extension registration. extensions_add_opemode_tab_agent( // TabId. 'quick_shell', // TabName. __('QuickShell'), // TabIcon. 'images/ehorus/terminal.png', // TabFunction. 'quickShell', // Version. 'N/A', // Acl. 'PM' ); } } extensions_add_godmode_menu_option( // Name. __('QuickShell settings'), // Acl. 'PM', // FatherId. 'gextensions', // Icon. 'images/ehorus/terminal.png', // Version. 'N/A', // SubfatherId. null ); extensions_add_godmode_function('quickShellSettings');