156 lines
7.0 KiB
PHP
156 lines
7.0 KiB
PHP
@extends('admin.content')
|
||
|
||
@section('title', '系统设置')
|
||
|
||
@section('content')
|
||
<div class="layui-card">
|
||
<div class="layui-card-header">系统设置</div>
|
||
<div class="layui-card-body">
|
||
<form class="layui-form" lay-filter="LAY-settings-form" id="LAY-settings-form">
|
||
<fieldset class="layui-elem-field layui-field-title">
|
||
<legend>Telegram Bot</legend>
|
||
</fieldset>
|
||
<div class="layui-form-item">
|
||
<label class="layui-form-label">Bot Token</label>
|
||
<div class="layui-input-block">
|
||
<input type="text" name="telegram_bot_token" class="layui-input" autocomplete="off"
|
||
value="{{ $form['telegram.bot_token'] }}">
|
||
<div class="layui-form-mid layui-word-aux" id="LAY-telegram-bot-name">
|
||
@if($botUsername)
|
||
当前 Bot:<b>{{ $botUsername }}</b>
|
||
@if($botInviteUrl)
|
||
· <a href="{{ $botInviteUrl }}" target="_blank" rel="noopener">邀请进群</a>
|
||
@endif
|
||
@else
|
||
保存 Token 后会通过 Telegram getMe 自动识别 @用户名,无需手填。
|
||
@endif
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="layui-form-item">
|
||
<label class="layui-form-label">Chat ID</label>
|
||
<div class="layui-input-block">
|
||
<div style="display:flex;gap:8px;align-items:center;max-width:640px;">
|
||
<input type="text" name="telegram_owner_chat_id" class="layui-input" autocomplete="off"
|
||
value="{{ $form['telegram.owner_chat_id'] }}" placeholder="官方通知群 chat_id" style="flex:1;">
|
||
<button type="button" class="layui-btn layui-btn-primary" id="LAY-telegram-test" style="flex-shrink:0;">测试推送</button>
|
||
</div>
|
||
<div class="layui-form-mid layui-word-aux" id="LAY-telegram-chat-hint">
|
||
@if($botUsername)
|
||
请邀请 <b>{{ $botUsername }}</b> 进群(进群后 Bot 会回复 Chat ID),再填到这里。全站共用这一个 Bot;代理单独推送只需在「代理用户」里填 Chat ID。
|
||
@else
|
||
全站共用这一个 Bot。此处为官方通知群;代理单独推送只需在「代理用户」里填 Chat ID。保存 Token 后会提示要邀请哪个 Bot。
|
||
@endif
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<fieldset class="layui-elem-field layui-field-title">
|
||
<legend>后台访问域名</legend>
|
||
</fieldset>
|
||
<div class="layui-form-item">
|
||
<label class="layui-form-label">管理后台</label>
|
||
<div class="layui-input-block">
|
||
<textarea name="panel_admin_hosts" class="layui-textarea" rows="3"
|
||
placeholder="多行或逗号分隔,如:admin.example.com">{{ $form['panel.admin_hosts'] }}</textarea>
|
||
<div class="layui-form-mid layui-word-aux">留空不限制;填写后仅这些 Host 可打开 /admin(其它域名 404)。也可设 .env CORUNA_ADMIN_HOSTS</div>
|
||
</div>
|
||
</div>
|
||
<div class="layui-form-item">
|
||
<label class="layui-form-label">运营后台</label>
|
||
<div class="layui-input-block">
|
||
<textarea name="panel_agent_hosts" class="layui-textarea" rows="3"
|
||
placeholder="多行或逗号分隔,如:agent.example.com">{{ $form['panel.agent_hosts'] }}</textarea>
|
||
<div class="layui-form-mid layui-word-aux">留空不限制;填写后仅这些 Host 可打开 /user(其它域名 404)。也可设 .env CORUNA_AGENT_HOSTS</div>
|
||
</div>
|
||
</div>
|
||
|
||
<fieldset class="layui-elem-field layui-field-title">
|
||
<legend>渠道链接</legend>
|
||
</fieldset>
|
||
<div class="layui-form-item">
|
||
<label class="layui-form-label">投放域名</label>
|
||
<div class="layui-input-block">
|
||
<textarea name="channels_domains" class="layui-textarea" rows="4"
|
||
placeholder="多行或逗号分隔,如:cdn1.example.com cdn2.example.com">{{ $form['channels.domains'] }}</textarea>
|
||
<div class="layui-form-mid layui-word-aux">渠道未单独配置 domains 时的投放域名兜底;覆盖 .env 的 CORUNA_LAB_CHANNEL_DOMAINS。API/上报域名请用 CORUNA_REPORTING_DOMAINS</div>
|
||
</div>
|
||
</div>
|
||
<div class="layui-form-item">
|
||
<label class="layui-form-label">代理渠道上限</label>
|
||
<div class="layui-input-block">
|
||
<input type="number" min="1" max="100" name="channels_max_per_agent" class="layui-input"
|
||
value="{{ $form['channels.max_per_agent'] }}" style="max-width:160px;">
|
||
<div class="layui-form-mid layui-word-aux">每个代理用户最多可拥有的渠道链接数(官方不限)</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="layui-form-item">
|
||
<div class="layui-input-block">
|
||
<button class="layui-btn" lay-submit lay-filter="LAY-settings-save">保存配置</button>
|
||
</div>
|
||
</div>
|
||
</form>
|
||
</div>
|
||
</div>
|
||
@endsection
|
||
|
||
@push('scripts')
|
||
<script>
|
||
layui.use(['form', 'layer'], function () {
|
||
var form = layui.form, layer = layui.layer, $ = layui.$;
|
||
var token = @json(csrf_token());
|
||
|
||
form.on('submit(LAY-settings-save)', function (data) {
|
||
$.ajax({
|
||
url: @json(route('admin.system.settings.update')),
|
||
method: 'POST',
|
||
data: Object.assign({}, data.field, { _token: token }),
|
||
success: function (res) {
|
||
layer.msg(res.msg || (res.code === 0 ? '已保存' : '失败'));
|
||
if (res.code === 0 && res.data) {
|
||
var name = res.data.bot_username || '';
|
||
var url = res.data.bot_invite_url || '';
|
||
if (name) {
|
||
var invite = url ? ' · <a href="' + url + '" target="_blank" rel="noopener">邀请进群</a>' : '';
|
||
$('#LAY-telegram-bot-name').html('当前 Bot:<b>' + name + '</b>' + invite);
|
||
$('#LAY-telegram-chat-hint').html('请邀请 <b>' + name + '</b> 进群(进群后 Bot 会回复 Chat ID),再填到这里。全站共用这一个 Bot;代理单独推送只需在「代理用户」里填 Chat ID。');
|
||
} else {
|
||
$('#LAY-telegram-bot-name').text('保存 Token 后会通过 Telegram getMe 自动识别 @用户名,无需手填。');
|
||
}
|
||
}
|
||
},
|
||
error: function (xhr) {
|
||
layer.msg((xhr.responseJSON && xhr.responseJSON.message) || '保存失败');
|
||
}
|
||
});
|
||
return false;
|
||
});
|
||
|
||
$('#LAY-telegram-test').on('click', function () {
|
||
var $btn = $(this);
|
||
if ($btn.prop('disabled')) return;
|
||
$btn.prop('disabled', true);
|
||
$.ajax({
|
||
url: @json(route('admin.system.settings.telegramTest')),
|
||
method: 'POST',
|
||
data: {
|
||
_token: token,
|
||
chat_id: $('input[name=telegram_owner_chat_id]').val(),
|
||
bot_token: $('input[name=telegram_bot_token]').val()
|
||
},
|
||
success: function (res) {
|
||
layer.msg(res.msg || (res.code === 0 ? '已发送' : '失败'));
|
||
},
|
||
error: function (xhr) {
|
||
layer.msg((xhr.responseJSON && xhr.responseJSON.message) || '测试失败');
|
||
},
|
||
complete: function () {
|
||
$btn.prop('disabled', false);
|
||
}
|
||
});
|
||
});
|
||
});
|
||
</script>
|
||
@endpush
|