| Server IP : 82.64.35.208 / Your IP : 192.168.65.1 Web Server : Apache/2.4.68 (Debian) System : Linux 079bc81edf51 6.12.76-linuxkit #1 SMP Tue Jul 21 14:38:37 UTC 2026 aarch64 User : root ( 0) PHP Version : 8.3.33 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : OFF | Perl : ON | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /var/www/html/wp-content/plugins/manager-for-galene-videoconference/views/ |
Upload File : |
{% extends main.twig %}
{% block content %}
<form method="POST" enctype="multipart/form-data" >
{% wp_nonce_field("admin_update_settings","gal_form_id",false,true) %}
<nav class="content">
<p class="panel-heading">{{ __("System settings",'manager-for-galene-videoconference') }}</p>
<div class="tabs is-boxed">
<ul class="tabs-menu">
<li class="is-active" data-target="settings-tab">
<a>
<span>{{ __("General",'manager-for-galene-videoconference') }}</span>
</a>
</li>
<li class="" data-target="server-tab">
<a>
<span>{{ __("Server connection",'manager-for-galene-videoconference') }}</span>
</a>
</li>
</ul>
</div>
<div class="tab-content box" id="settings-tab">
<div class="field">
<label class="label">{{ __("Public base link of Galène Server",'manager-for-galene-videoconference') }}</label>
<div class="control">
<input required="required" name="general[galene_url]" id="general[galene_url]" class="input" type="text" value="{{{ $d['settings']['general']['galene_url'] }}}" >
</div>
<p class="help">{{ __("Galène link without name of room (e.g. https://mygalene.org/group/)",'manager-for-galene-videoconference') }}</p>
</div>
<div class="field">
<label class="label">{{ __("Token lifetime",'manager-for-galene-videoconference') }}</label>
<div class="control">
<input required="required" name="general[galene_token_exp]" id="general[galene_token_exp]" class="input" min="0" oninput="validity.valid||(value='0');" type="number" value="{{{ @$d['settings']['general']['galene_token_exp']?:30 }}}" >
</div>
<p class="help">{{ __("Lifetime of the JWT token for Galène Server authentication",'manager-for-galene-videoconference') }}</p>
</div>
<div class="field">
<label class="label">{{ __("Shift issued at",'manager-for-galene-videoconference') }}</label>
<div class="control">
<input required="required" name="general[galene_issued_at]" id="general[galene_issued_at]" class="input" min="0" oninput="validity.valid||(value='0');" type="number" value="{{{ @$d['settings']['general']['galene_issued_at']?:0 }}}" >
</div>
<p class="help">{{ __("Subtract seconds from now for JWT issued time (fix time difference between Galène server and manager host)",'manager-for-galene-videoconference') }}</p>
</div>
</div>
<div class="tab-content mx-5 box" id="server-tab">
<div class="accordion">
<div class="card a-container mb-2 {{ (@$d['settings']['direct_server_access'] == 'filesystem')?' active ' : '' }}">
<div class="panel-heading is-flex p-0 {{ (@$d['settings']['direct_server_access'] == 'filesystem')?' has-background-success ' : '' }}">
<div class="field is-flex is-align-items-center ml-2">
<input type="checkbox"
class="is-checkradio has-background-color act-as-radio is-small is-circle"
name="direct_server_access"
value="filesystem"
id="direct_server_access_filesystem"
{{ (@$d['settings']['direct_server_access'] == 'filesystem')?' checked ' : '' }} >
<label for="direct_server_access_filesystem" class="clickable"></label>
</div>
<div class="card-header-title a-btn mb-0 pl-0">
<div class="is-flex-grow-1">{{ __("Direct filesystem access",'manager-for-galene-videoconference') }}</div>
<span class="card-header-icon navbar-link " aria-label="more options"></span>
</div>
</div>
<div class="card-content px-5 a-panel">
<div class="field">
<label class="label">{{ __("Server path",'manager-for-galene-videoconference') }}</label>
<div class="control">
<input name="filesystem[server_path]" id="filesystem[server_path]" class="input" type="text" value="{{{ @$d['settings']['filesystem']['server_path'] }}}" >
</div>
<p class="help">{{ __("Full path to Galène group directory",'manager-for-galene-videoconference') }}</p>
</div>
<hr />
<div class="field">
<div class="control">
<a class="button is-outlined is-small is-warning" target="_blank" href="{% echo esc_url(Galmgr_util::add_arg([ 'galene_action' => 'admin_test_galene_access' ])) %}" >
{{ __("Test access to groups directory",'manager-for-galene-videoconference') }}
</a>
</div>
<p class="help">{{ __("Please save settings/changes before testing",'manager-for-galene-videoconference') }}</p>
</div>
</div>
<footer class="card-footer"></footer>
</div>
<div class="card a-container mb-2 {% echo sanitize_html_class((@$d['settings']['direct_server_access'] == 'sftp')?' active ' : '') %}">
<div class="panel-heading is-flex p-0 {% echo sanitize_html_class((@$d['settings']['direct_server_access'] == 'sftp')?' has-background-success ' : '') %}">
<div class="field is-flex is-align-items-center ml-2">
<input type="checkbox"
class="is-checkradio has-background-color act-as-radio is-small is-circle"
name="direct_server_access"
value="sftp"
id="direct_server_access_sftp"
{{{ (@$d['settings']['direct_server_access'] == 'sftp')?' checked ' : '' }}} >
<label for="direct_server_access_sftp" class="clickable"></label>
</div>
<div class="card-header-title a-btn mb-0 pl-0">
<div class="is-flex-grow-1">{{ __("Server acces by SFTP",'manager-for-galene-videoconference') }}</div>
<span class="card-header-icon navbar-link " aria-label="more options"></span>
</div>
</div>
<div class="card-content px-5 a-panel">
<div class="field">
<label class="label">{{ __("Server path",'manager-for-galene-videoconference') }}</label>
<div class="control">
<input name="sftp[server_path]" id="sftp[server_path]" class="input" type="text" value="{{{ @$d['settings']['sftp']['server_path'] }}}" >
</div>
<p class="help">{{ __("Path to Galène group directory at server",'manager-for-galene-videoconference') }}</p>
</div>
<div class="field columns">
<div class="field column">
<label class="label">{{ __("Hostname/IP",'manager-for-galene-videoconference') }}</label>
<div class="control">
<input name="sftp[host]" id="sftp[host]" class="input" type="text" value="{{{ @$d['settings']['sftp']['host'] }}}" >
</div>
<p class="help">{{ __("Domainname (hostname) or IP to connect Server by SFTP",'manager-for-galene-videoconference') }}</p>
</div>
<div class="field column">
<label class="label">{{ __("Port",'manager-for-galene-videoconference') }}</label>
<div class="control">
<input name="sftp[port]" id="sftp[port]" class="input" type="text" value="{{{ @$d['settings']['sftp']['port'] }}}" >
</div>
<p class="help">{{ __("SSH/SFTP port number of Galène server",'manager-for-galene-videoconference') }}</p>
</div>
</div>
<hr />
<h5 class="title is-5">{{ __("Authentication",'manager-for-galene-videoconference') }}</h5>
{% if (!defined('GALMGR_CRYPT_KEY')): %}
<div class="box">
{{ __("If you are using SFTP access, authentication data is stored in database. It is strongly advised to encrypt these.",'manager-for-galene-videoconference') }}
 {{ __("Ask your Worpress administrator to add this line to wp-config.php before saving this form:",'manager-for-galene-videoconference') }}<br>
<code data-select-link-text="1" class="has-text-black-bis is-family-monospace">{{ "define( 'GALMGR_CRYPT_KEY', '" . base64_encode(random_bytes(32)) . "' );" }}</code>
</div>
{% endif; %}
<div class="field">
<label class="label">{{ __("Username",'manager-for-galene-videoconference') }}</label>
<div class="control">
<input name="sftp[login]" id="sftp[login]" class="input" type="text" value="{{{ @$d['settings']['sftp']['login'] }}}" >
</div>
<p class="help">{{ __("Loginname at Galène Server for SSH/SFTP access",'manager-for-galene-videoconference') }}</p>
</div>
<h6 class="title is-6">{{ __("Method of authentication",'manager-for-galene-videoconference') }}</h6>
<input class="is-checkradio is-info hide-descendant"
value="login_password"
id="sftp_auth_mode_lopw"
type="radio"
name="sftp[auth_mode]"
{{{ (@$d['settings']['sftp']['auth_mode'] == 'login_password')?' checked ' : '' }}} >
<label class="ml-0 is-block" for="sftp_auth_mode_lopw">{{ __("Username/Password",'manager-for-galene-videoconference') }}</label>
<div class="descendant-to-hide pl-5">
<div class="field">
<label class="label">{{ __("Password",'manager-for-galene-videoconference') }}</label>
<div class="control">
<input name="sftp[password_new]" id="sftp[password_new]" class="input" type="password" >
</div>
<p class="help">{{ __("Password at Galène Server for SSH/SFTP access",'manager-for-galene-videoconference') }}</p>
</div>
<div class="field">
<label class="label">{{ __("Password (repeat)",'manager-for-galene-videoconference') }}</label>
<div class="control">
<input class="input" name="sftp[password_repeat]" id="sftp[password_repeat]" type="password" >
</div>
<p class="help">{{ __("Repeat your password",'manager-for-galene-videoconference') }}</p>
</div>
</div>
<input class="is-checkradio is-info hide-descendant"
value="private_key"
id="sftp_auth_mode_key"
type="radio"
name="sftp[auth_mode]"
{{{ (@$d['settings']['sftp']['auth_mode'] == 'private_key')?' checked ' : '' }}} >
<label class="mt-5 ml-0 is-block" for="sftp_auth_mode_key">{{ __("Public/Private key authentication",'manager-for-galene-videoconference') }}</label>
<div class="key_file_upload descendant-to-hide pl-5">
<div class="has-text-weight-bold mt-5">{{ __("Upload keyfile",'manager-for-galene-videoconference') }}</div>
<div class="file">
<label class="file-label">
<input class="file-input" type="file" name="sftp-keyfile">
<span class="file-cta">
<span class="image is-24x24 mr-2">
<img src="{% echo esc_url( GALMGR_PLUGIN_URL . '/assets/key-outline.svg') %}">
</span>
<span class="file-label">
{{ __("Select private key file",'manager-for-galene-videoconference') }}
</span>
</span>
</label>
</div>
<p class="help">{{ __("Upload your private key file to this app (RSA, DSA, ECDSA, EdDSA (Ed25519))",'manager-for-galene-videoconference') }}</p>
<div class="field ">
<input type="checkbox" class="is-checkradio hide-descendant" value="1"
name="sftp[is-key-encrypted]" id="sftp[is-key-encrypted]"
{{{ (@$d['settings']['sftp']['is-key-encrypted'] == '1')?'checked' : '' }}} >
<label for="sftp[is-key-encrypted]">{{ __("Private key is encrypted with password",'manager-for-galene-videoconference') }}</label>
<div class="descendant-to-hide">
<div class="field">
<label class="label">{{ __("Password",'manager-for-galene-videoconference') }}</label>
<div class="control">
<input name="sftp[key_password_new]" id="sftp[key_password_new]" class="input" type="password" >
</div>
<p class="help">{{ __("Password for the private key file",'manager-for-galene-videoconference') }}</p>
</div>
<div class="field">
<label class="label">{{ __("Password (repeat)",'manager-for-galene-videoconference') }}</label>
<div class="control">
<input class="input" name="sftp[key_password_repeat]" id="sftp[key_password_repeat]" type="password" >
</div>
<p class="help">{{ __("Repeat your password",'manager-for-galene-videoconference') }}</p>
</div>
</div>
</div>
</div>
<hr />
<div class="field">
<div class="control">
<a class="button is-outlined is-small is-warning" target="_blank" href="{% echo esc_url(Galmgr_util::add_arg([ 'galene_action' => 'admin_test_galene_access' ])) %}" >
{{ __("Test SFTP access",'manager-for-galene-videoconference') }}
</a>
</div>
<p class="help">{{ __("Please save settings/changes before testing",'manager-for-galene-videoconference') }}</p>
</div>
</div>
<footer class="card-footer"></footer>
</div>
</div>
</div>
</nav>
<div class="field is-grouped is-grouped-right mt-3">
<p class="control">
<button class="button is-primary" type="submit" name="galene_action" id="galene_action" value="admin_update_settings" >
{{ __("Save",'manager-for-galene-videoconference') }}
</button>
</p>
<p class="control">
<a class="button is-light" href="{% echo esc_url(Galmgr_util::add_arg([ 'galene_action' => 'admin_screen_roomsettings' ])) %}">
{{ __("Cancel",'manager-for-galene-videoconference') }}
</a>
</p>
</div>
</form>
{% endblock %}