✨ — Fix #183 — Add config API endpoint
This commit is contained in:
parent
1b2ee5b4f5
commit
53342a31ba
|
@ -3,6 +3,7 @@ Revision history for Lufi
|
||||||
?.??.? ????-??-??
|
?.??.? ????-??-??
|
||||||
- Notifications when uploading and downloading files (#181)
|
- Notifications when uploading and downloading files (#181)
|
||||||
- Use Weblate instead of Zanata for translations (https://weblate.framasoft.org/projects/lufi/development/)
|
- Use Weblate instead of Zanata for translations (https://weblate.framasoft.org/projects/lufi/development/)
|
||||||
|
- Add config API endpoint (#183)
|
||||||
|
|
||||||
0.04.6 2019-11-07
|
0.04.6 2019-11-07
|
||||||
- Now can send large files (>2Gio) while using a DB other than SQLite (#165)
|
- Now can send large files (>2Gio) while using a DB other than SQLite (#165)
|
||||||
|
|
2
Makefile
2
Makefile
|
@ -11,7 +11,7 @@ locales:
|
||||||
$(XGETTEXT) $(EXTRACTDIR) -o $(ENPO) 2>/dev/null
|
$(XGETTEXT) $(EXTRACTDIR) -o $(ENPO) 2>/dev/null
|
||||||
|
|
||||||
podcheck:
|
podcheck:
|
||||||
podchecker lib/Lufi/DB/File.pm lib/Lufi/DB/Slice.pm
|
podchecker lib/Lufi/DB/File.pm lib/Lufi/DB/Slice.pm lib/Lufi/DB/Invitation.pm
|
||||||
|
|
||||||
cover:
|
cover:
|
||||||
PERL5OPT='-Ilib/' HARNESS_PERL_SWITCHES='-MDevel::Cover' $(CARTON) cover --ignore_re '^local'
|
PERL5OPT='-Ilib/' HARNESS_PERL_SWITCHES='-MDevel::Cover' $(CARTON) cover --ignore_re '^local'
|
||||||
|
|
|
@ -159,6 +159,11 @@ sub startup {
|
||||||
->to('Misc#about')
|
->to('Misc#about')
|
||||||
->name('about');
|
->name('about');
|
||||||
|
|
||||||
|
# About config API endpoint
|
||||||
|
$r->get('/about/config')
|
||||||
|
->to('Misc#config_infos')
|
||||||
|
->name('config');
|
||||||
|
|
||||||
# Generated js files
|
# Generated js files
|
||||||
$r->get('/partial/:file')
|
$r->get('/partial/:file')
|
||||||
->to('Misc#js_files')
|
->to('Misc#js_files')
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
package Lufi::Controller::Misc;
|
package Lufi::Controller::Misc;
|
||||||
use Mojo::Base 'Mojolicious::Controller';
|
use Mojo::Base 'Mojolicious::Controller';
|
||||||
use Mojo::File;
|
use Mojo::File;
|
||||||
|
use Mojo::JSON qw(true false);
|
||||||
use Mojo::URL;
|
use Mojo::URL;
|
||||||
use Lufi::DB::File;
|
use Lufi::DB::File;
|
||||||
|
|
||||||
|
@ -34,6 +35,27 @@ sub about {
|
||||||
shift->render(template => 'about');
|
shift->render(template => 'about');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub config_infos {
|
||||||
|
my $c = shift;
|
||||||
|
|
||||||
|
$c->render(
|
||||||
|
json => {
|
||||||
|
report => $c->config('report'),
|
||||||
|
instance_name => $c->config('instance_name'),
|
||||||
|
max_file_size => $c->config('max_file_size'),
|
||||||
|
broadcast_message => $c->config('broadcast_message'),
|
||||||
|
default_delay => $c->config('default_delay'),
|
||||||
|
max_delay => $c->config('max_delay'),
|
||||||
|
delay_for_size => $c->config('delay_for_size'),
|
||||||
|
allow_pwd_on_files => $c->config('allow_pwd_on_files'),
|
||||||
|
force_burn_after_reading => $c->config('force_burn_after_reading'),
|
||||||
|
keep_ip_during => $c->config('keep_ip_during'),
|
||||||
|
stop_upload => (-f 'stop-upload' || -f 'stop-upload.manual') ? true : false,
|
||||||
|
need_authentication => (defined($c->config('ldap')) || defined($c->config('htpasswd'))) ? true : false,
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
sub js_files {
|
sub js_files {
|
||||||
my $c = shift;
|
my $c = shift;
|
||||||
|
|
||||||
|
|
32
t/test.t
32
t/test.t
|
@ -1,7 +1,7 @@
|
||||||
# vim:set sw=4 ts=4 sts=4 ft=perl expandtab:
|
# vim:set sw=4 ts=4 sts=4 ft=perl expandtab:
|
||||||
use Mojo::Base -strict;
|
use Mojo::Base -strict;
|
||||||
use Mojo::File;
|
use Mojo::File;
|
||||||
use Mojo::JSON qw(to_json from_json true);
|
use Mojo::JSON qw(to_json from_json true false);
|
||||||
use Mojolicious;
|
use Mojolicious;
|
||||||
|
|
||||||
use Test::More;
|
use Test::More;
|
||||||
|
@ -87,16 +87,19 @@ $t->get_ok('/')
|
||||||
->status_is(200)
|
->status_is(200)
|
||||||
->content_like(qr@Lufi@i);
|
->content_like(qr@Lufi@i);
|
||||||
|
|
||||||
|
test_infos_api(false);
|
||||||
test_upload_file();
|
test_upload_file();
|
||||||
test_download_file();
|
test_download_file();
|
||||||
|
|
||||||
## Test htpasswd
|
## Test htpasswd
|
||||||
switch_to_htpasswd();
|
switch_to_htpasswd();
|
||||||
|
test_infos_api(true);
|
||||||
auth_test_suite('luc', 'toto');
|
auth_test_suite('luc', 'toto');
|
||||||
restore_config();
|
restore_config();
|
||||||
|
|
||||||
## Test LDAP
|
## Test LDAP
|
||||||
switch_to_ldap();
|
switch_to_ldap();
|
||||||
|
test_infos_api(true);
|
||||||
auth_test_suite('zoidberg', 'zoidberg');
|
auth_test_suite('zoidberg', 'zoidberg');
|
||||||
restore_config();
|
restore_config();
|
||||||
|
|
||||||
|
@ -105,6 +108,33 @@ done_testing();
|
||||||
######
|
######
|
||||||
### Functions
|
### Functions
|
||||||
##
|
##
|
||||||
|
sub test_infos_api {
|
||||||
|
my $auth = shift;
|
||||||
|
|
||||||
|
$t->get_ok('/about/config')
|
||||||
|
->status_is(200)
|
||||||
|
->json_has(
|
||||||
|
'/allow_pwd_on_files', '/need_authentication', '/max_delay',
|
||||||
|
'/instance_name', '/broadcast_message', '/max_file_size',
|
||||||
|
'/keep_ip_during', '/report', '/stop_upload',
|
||||||
|
'/delay_for_size', '/default_delay', '/force_burn_after_reading'
|
||||||
|
)
|
||||||
|
->json_is(
|
||||||
|
'/allow_pwd_on_files' => 1,
|
||||||
|
'/need_authentication' => $auth,
|
||||||
|
'/max_delay' => 0,
|
||||||
|
'/instance_name' => 'Lufi',
|
||||||
|
'/broadcast_message' => undef,
|
||||||
|
'/max_file_size' => undef,
|
||||||
|
'/keep_ip_during' => 365,
|
||||||
|
'/report' => 'mailto:report@example.com',
|
||||||
|
'/stop_upload' => false,
|
||||||
|
'/delay_for_size' => undef,
|
||||||
|
'/default_delay' => 0,
|
||||||
|
'/force_burn_after_reading' => 0
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
sub test_upload_file {
|
sub test_upload_file {
|
||||||
$t->websocket_ok('/upload/')
|
$t->websocket_ok('/upload/')
|
||||||
->send_ok($msg.'XXMOJOXX'.$encrypted)
|
->send_ok($msg.'XXMOJOXX'.$encrypted)
|
||||||
|
|
Loading…
Reference in New Issue