This commit is contained in:
Luc Didry
2015-01-06 02:38:15 +01:00
parent 2e5a3c9c0b
commit a049163646
16 changed files with 278 additions and 237 deletions

View File

@@ -3,6 +3,7 @@ Revision history for Lutim
0.7 ? 0.7 ?
- Use .po files for internationalization - Use .po files for internationalization
- Add spanish translation (thx to Laura Arjona Reina) - Add spanish translation (thx to Laura Arjona Reina)
- Allow Lutim to be on a sub-directory (like http://example.org/lutim/) (#46)
- Remove deprecated (due to typo) option "provisionning". - Remove deprecated (due to typo) option "provisionning".
0.6 2014-10-03 0.6 2014-10-03

View File

@@ -3,7 +3,6 @@ requires 'EV';
requires 'IO::Socket::SSL'; requires 'IO::Socket::SSL';
requires 'Data::Validate::URI'; requires 'Data::Validate::URI';
requires 'Mojolicious::Plugin::I18N'; requires 'Mojolicious::Plugin::I18N';
requires 'Mojolicious::Plugin::ConfigHashMerge';
requires 'Mojolicious::Plugin::AssetPack'; requires 'Mojolicious::Plugin::AssetPack';
requires 'ORLite'; requires 'ORLite';
requires 'File::Type'; requires 'File::Type';

View File

@@ -1,13 +1,41 @@
# carton snapshot format: version 1.0 # carton snapshot format: version 1.0
DISTRIBUTIONS DISTRIBUTIONS
Algorithm-Diff-1.1902 CPAN-Meta-2.143240
pathname: T/TY/TYEMQ/Algorithm-Diff-1.1902.tar.gz pathname: D/DA/DAGOLDEN/CPAN-Meta-2.143240.tar.gz
provides: provides:
Algorithm::Diff 1.1902 CPAN::Meta 2.143240
Algorithm::Diff::_impl 1.1902 CPAN::Meta::Converter 2.143240
Algorithm::DiffOld 1.1 CPAN::Meta::Feature 2.143240
CPAN::Meta::History 2.143240
CPAN::Meta::Merge 2.143240
CPAN::Meta::Prereqs 2.143240
CPAN::Meta::Spec 2.143240
CPAN::Meta::Validator 2.143240
requirements: requirements:
ExtUtils::MakeMaker 0 CPAN::Meta::Requirements 2.121
CPAN::Meta::YAML 0.008
Carp 0
ExtUtils::MakeMaker 6.17
JSON::PP 2.27200
Parse::CPAN::Meta 1.4414
Scalar::Util 0
perl 5.008
strict 0
version 0.88
warnings 0
CPAN-Meta-YAML-0.012
pathname: D/DA/DAGOLDEN/CPAN-Meta-YAML-0.012.tar.gz
provides:
CPAN::Meta::YAML 0.012
requirements:
B 0
Carp 0
Exporter 0
ExtUtils::MakeMaker 6.17
Fcntl 0
Scalar::Util 0
strict 0
warnings 0
CSS-Minifier-XS-0.09 CSS-Minifier-XS-0.09
pathname: G/GT/GTERMARS/CSS-Minifier-XS-0.09.tar.gz pathname: G/GT/GTERMARS/CSS-Minifier-XS-0.09.tar.gz
provides: provides:
@@ -50,10 +78,9 @@ DISTRIBUTIONS
Clone-0.36 Clone-0.36
pathname: G/GA/GARU/Clone-0.36.tar.gz pathname: G/GA/GARU/Clone-0.36.tar.gz
provides: provides:
Clone 0.36 Class::Singleton 1.5
requirements: requirements:
ExtUtils::MakeMaker 0 ExtUtils::MakeMaker 0
Test::More 0
Crypt-Blowfish-2.14 Crypt-Blowfish-2.14
pathname: D/DP/DPARIS/Crypt-Blowfish-2.14.tar.gz pathname: D/DP/DPARIS/Crypt-Blowfish-2.14.tar.gz
provides: provides:
@@ -67,13 +94,19 @@ DISTRIBUTIONS
requirements: requirements:
Digest::MD5 2.00 Digest::MD5 2.00
ExtUtils::MakeMaker 0 ExtUtils::MakeMaker 0
DBD-SQLite-1.40 DBD-SQLite-1.46
pathname: I/IS/ISHIGAKI/DBD-SQLite-1.40.tar.gz pathname: I/IS/ISHIGAKI/DBD-SQLite-1.46.tar.gz
provides: provides:
DBD::SQLite 1.40 DBD::SQLite 1.46
DBD::SQLite::_WriteOnceHash 1.40 DBD::SQLite::VirtualTable 1.46
DBD::SQLite::db 1.40 DBD::SQLite::VirtualTable::Cursor 1.46
DBD::SQLite::dr 1.40 DBD::SQLite::VirtualTable::FileContent undef
DBD::SQLite::VirtualTable::FileContent::Cursor undef
DBD::SQLite::VirtualTable::PerlData undef
DBD::SQLite::VirtualTable::PerlData::Cursor undef
DBD::SQLite::_WriteOnceHash 1.46
DBD::SQLite::db 1.46
DBD::SQLite::dr 1.46
requirements: requirements:
DBI 1.57 DBI 1.57
ExtUtils::MakeMaker 0 ExtUtils::MakeMaker 0
@@ -82,8 +115,8 @@ DISTRIBUTIONS
Test::More 0.47 Test::More 0.47
Tie::Hash 0 Tie::Hash 0
perl 5.006 perl 5.006
DBI-1.631 DBI-1.632
pathname: T/TI/TIMB/DBI-1.631.tar.gz pathname: T/TI/TIMB/DBI-1.632.tar.gz
provides: provides:
Bundle::DBI 12.008696 Bundle::DBI 12.008696
DBD::DBM 0.08 DBD::DBM 0.08
@@ -96,15 +129,15 @@ DISTRIBUTIONS
DBD::ExampleP::db 12.014311 DBD::ExampleP::db 12.014311
DBD::ExampleP::dr 12.014311 DBD::ExampleP::dr 12.014311
DBD::ExampleP::st 12.014311 DBD::ExampleP::st 12.014311
DBD::File 0.42 DBD::File 0.43
DBD::File::DataSource::File 0.42 DBD::File::DataSource::File 0.43
DBD::File::DataSource::Stream 0.42 DBD::File::DataSource::Stream 0.43
DBD::File::Statement 0.42 DBD::File::Statement 0.43
DBD::File::Table 0.42 DBD::File::Table 0.43
DBD::File::TableSource::FileSystem 0.42 DBD::File::TableSource::FileSystem 0.43
DBD::File::db 0.42 DBD::File::db 0.43
DBD::File::dr 0.42 DBD::File::dr 0.43
DBD::File::st 0.42 DBD::File::st 0.43
DBD::Gofer 0.015327 DBD::Gofer 0.015327
DBD::Gofer::Policy::Base 0.010088 DBD::Gofer::Policy::Base 0.010088
DBD::Gofer::Policy::classic 0.010088 DBD::Gofer::Policy::classic 0.010088
@@ -132,7 +165,7 @@ DISTRIBUTIONS
DBD::Sponge::dr 12.010003 DBD::Sponge::dr 12.010003
DBD::Sponge::st 12.010003 DBD::Sponge::st 12.010003
DBDI 12.015129 DBDI 12.015129
DBI 1.631 DBI 1.632
DBI::Const::GetInfo::ANSI 2.008697 DBI::Const::GetInfo::ANSI 2.008697
DBI::Const::GetInfo::ODBC 2.011374 DBI::Const::GetInfo::ODBC 2.011374
DBI::Const::GetInfoReturn 2.008697 DBI::Const::GetInfoReturn 2.008697
@@ -173,22 +206,11 @@ DISTRIBUTIONS
DBI::SQL::Nano::Table_ 1.015544 DBI::SQL::Nano::Table_ 1.015544
DBI::Util::CacheMemory 0.010315 DBI::Util::CacheMemory 0.010315
DBI::Util::_accessor 0.009479 DBI::Util::_accessor 0.009479
DBI::common 1.631 DBI::common 1.632
requirements: requirements:
ExtUtils::MakeMaker 6.48 ExtUtils::MakeMaker 6.48
Test::Simple 0.90 Test::Simple 0.90
perl 5.008 perl 5.008
Data-OptList-0.109
pathname: R/RJ/RJBS/Data-OptList-0.109.tar.gz
provides:
Data::OptList 0.109
requirements:
ExtUtils::MakeMaker 6.30
List::Util 0
Params::Util 0
Sub::Install 0.921
strict 0
warnings 0
Data-Validate-Domain-0.10 Data-Validate-Domain-0.10
pathname: N/NE/NEELY/Data-Validate-Domain-0.10.tar.gz pathname: N/NE/NEELY/Data-Validate-Domain-0.10.tar.gz
provides: provides:
@@ -197,13 +219,13 @@ DISTRIBUTIONS
ExtUtils::MakeMaker 0 ExtUtils::MakeMaker 0
Net::Domain::TLD 1.62 Net::Domain::TLD 1.62
Test::More 0 Test::More 0
Data-Validate-IP-0.22 Data-Validate-IP-0.24
pathname: D/DR/DROLSKY/Data-Validate-IP-0.22.tar.gz pathname: D/DR/DROLSKY/Data-Validate-IP-0.24.tar.gz
provides: provides:
Data::Validate::IP 0.22 Data::Validate::IP 0.24
requirements: requirements:
Exporter 0 Exporter 0
ExtUtils::MakeMaker 6.30 ExtUtils::MakeMaker 0
NetAddr::IP 4 NetAddr::IP 4
Scalar::Util 0 Scalar::Util 0
strict 0 strict 0
@@ -237,6 +259,10 @@ DISTRIBUTIONS
POSIX 0 POSIX 0
Params::Validate 0.76 Params::Validate 0.76
Scalar::Util 0 Scalar::Util 0
Storable 0
Test::Fatal 0
Test::More 0.88
Test::Warnings 0.005
Try::Tiny 0 Try::Tiny 0
XSLoader 0 XSLoader 0
base 0 base 0
@@ -245,6 +271,7 @@ DISTRIBUTIONS
overload 0 overload 0
perl 5.008001 perl 5.008001
strict 0 strict 0
utf8 0
vars 0 vars 0
warnings 0 warnings 0
warnings::register 0 warnings::register 0
@@ -1108,8 +1135,8 @@ DISTRIBUTIONS
strict 0 strict 0
vars 0 vars 0
warnings 0 warnings 0
Devel-StackTrace-1.31 EV-4.18
pathname: D/DR/DROLSKY/Devel-StackTrace-1.31.tar.gz pathname: M/ML/MLEHMANN/EV-4.18.tar.gz
provides: provides:
Devel::StackTrace 1.31 Devel::StackTrace 1.31
Devel::StackTrace::Frame 1.31 Devel::StackTrace::Frame 1.31
@@ -1141,43 +1168,11 @@ DISTRIBUTIONS
requirements: requirements:
ExtUtils::MakeMaker 0 ExtUtils::MakeMaker 0
common::sense 0 common::sense 0
Exception-Class-1.37 Exporter-Tiny-0.042
pathname: D/DR/DROLSKY/Exception-Class-1.37.tar.gz pathname: T/TO/TOBYINK/Exporter-Tiny-0.042.tar.gz
provides: provides:
Exception::Class 1.37 Exporter::Shiny 0.042
Exception::Class::Base 1.37 Exporter::Tiny 0.042
requirements:
Class::Data::Inheritable 0.02
Devel::StackTrace 1.20
ExtUtils::MakeMaker 6.30
File::Spec 0
Scalar::Util 0
Test::More 0.88
base 0
overload 0
strict 0
vars 0
warnings 0
ExtUtils-Config-0.007
pathname: L/LE/LEONT/ExtUtils-Config-0.007.tar.gz
provides:
ExtUtils::Config 0.007
requirements:
Config 0
Data::Dumper 0
ExtUtils::MakeMaker 6.30
File::Find 0
File::Temp 0
Test::More 0.88
strict 0
warnings 0
ExtUtils-Helpers-0.021
pathname: L/LE/LEONT/ExtUtils-Helpers-0.021.tar.gz
provides:
ExtUtils::Helpers 0.021
ExtUtils::Helpers::Unix 0.021
ExtUtils::Helpers::VMS 0.021
ExtUtils::Helpers::Windows 0.021
requirements: requirements:
Carp 0 Carp 0
Config 0 Config 0
@@ -1244,7 +1239,7 @@ DISTRIBUTIONS
Hash-Merge-Simple-0.051 Hash-Merge-Simple-0.051
pathname: R/RO/ROKR/Hash-Merge-Simple-0.051.tar.gz pathname: R/RO/ROKR/Hash-Merge-Simple-0.051.tar.gz
provides: provides:
Hash::Merge::Simple 0.051 IO::Socket::IP 0.34
requirements: requirements:
Clone 0 Clone 0
ExtUtils::MakeMaker 6.31 ExtUtils::MakeMaker 6.31
@@ -1264,12 +1259,14 @@ DISTRIBUTIONS
IO::Socket::SSL::Utils 2.014 IO::Socket::SSL::Utils 2.014
requirements: requirements:
ExtUtils::MakeMaker 0 ExtUtils::MakeMaker 0
Net::SSLeay 1.46 Test::More 0.31
Scalar::Util 0 Time::HiRes 0
IPC-Run3-0.046 JSON-PP-2.27300
pathname: R/RJ/RJBS/IPC-Run3-0.046.tar.gz pathname: M/MA/MAKAMAKA/JSON-PP-2.27300.tar.gz
provides: provides:
IPC::Run3 0.046 JSON::PP 2.27300
JSON::PP::Boolean 2.27300
JSON::PP::IncrParser 2.27300
requirements: requirements:
ExtUtils::MakeMaker 0 ExtUtils::MakeMaker 0
Test::More 0.31 Test::More 0.31
@@ -1297,7 +1294,7 @@ DISTRIBUTIONS
List-MoreUtils-0.33 List-MoreUtils-0.33
pathname: A/AD/ADAMK/List-MoreUtils-0.33.tar.gz pathname: A/AD/ADAMK/List-MoreUtils-0.33.tar.gz
provides: provides:
List::MoreUtils 0.33 List::AllUtils 0.09
requirements: requirements:
ExtUtils::CBuilder 0.27 ExtUtils::CBuilder 0.27
ExtUtils::MakeMaker 6.52 ExtUtils::MakeMaker 6.52
@@ -1334,32 +1331,39 @@ DISTRIBUTIONS
Module-Build-0.4205 Module-Build-0.4205
pathname: L/LE/LEONT/Module-Build-0.4205.tar.gz pathname: L/LE/LEONT/Module-Build-0.4205.tar.gz
provides: provides:
Module::Build 0.4205 List::MoreUtils 0.402
Module::Build::Base 0.4205 List::MoreUtils::PP 0.402
Module::Build::Compat 0.4205 List::MoreUtils::XS 0.402
Module::Build::Config 0.4205
Module::Build::Cookbook 0.4205
Module::Build::Dumper 0.4205
Module::Build::ModuleInfo 0.4205
Module::Build::Notes 0.4205
Module::Build::PPMMaker 0.4205
Module::Build::Platform::Default 0.4205
Module::Build::Platform::MacOS 0.4205
Module::Build::Platform::Unix 0.4205
Module::Build::Platform::VMS 0.4205
Module::Build::Platform::VOS 0.4205
Module::Build::Platform::Windows 0.4205
Module::Build::Platform::aix 0.4205
Module::Build::Platform::cygwin 0.4205
Module::Build::Platform::darwin 0.4205
Module::Build::Platform::os2 0.4205
Module::Build::PodParser 0.4205
Module::Build::Version 0.87
Module::Build::YAML 1.41
inc::latest 0.4205
inc::latest::private 0.4205
requirements: requirements:
CPAN::Meta 2.110420 Exporter::Tiny 0.038
ExtUtils::MakeMaker 0
XSLoader 0
Module-Build-0.4210
pathname: L/LE/LEONT/Module-Build-0.4210.tar.gz
provides:
Module::Build 0.4210
Module::Build::Base 0.4210
Module::Build::Compat 0.4210
Module::Build::Config 0.4210
Module::Build::Cookbook 0.4210
Module::Build::Dumper 0.4210
Module::Build::Notes 0.4210
Module::Build::PPMMaker 0.4210
Module::Build::Platform::Default 0.4210
Module::Build::Platform::MacOS 0.4210
Module::Build::Platform::Unix 0.4210
Module::Build::Platform::VMS 0.4210
Module::Build::Platform::VOS 0.4210
Module::Build::Platform::Windows 0.4210
Module::Build::Platform::aix 0.4210
Module::Build::Platform::cygwin 0.4210
Module::Build::Platform::darwin 0.4210
Module::Build::Platform::os2 0.4210
Module::Build::PodParser 0.4210
inc::latest 0.4210
inc::latest::private 0.4210
requirements:
CPAN::Meta 2.142060
CPAN::Meta::YAML 0.003 CPAN::Meta::YAML 0.003
Cwd 0 Cwd 0
Data::Dumper 0 Data::Dumper 0
@@ -1384,10 +1388,10 @@ DISTRIBUTIONS
Test::More 0.49 Test::More 0.49
Text::Abbrev 0 Text::Abbrev 0
Text::ParseWords 0 Text::ParseWords 0
perl 5.006001 perl 5.008000
version 0.87 version 0.87
Module-Build-Tiny-0.035 Module-Implementation-0.09
pathname: L/LE/LEONT/Module-Build-Tiny-0.035.tar.gz pathname: D/DR/DROLSKY/Module-Implementation-0.09.tar.gz
provides: provides:
Module::Build::Tiny 0.035 Module::Build::Tiny 0.035
requirements: requirements:
@@ -1417,7 +1421,7 @@ DISTRIBUTIONS
Module::Implementation 0.07 Module::Implementation 0.07
requirements: requirements:
Carp 0 Carp 0
ExtUtils::MakeMaker 6.30 ExtUtils::MakeMaker 0
Module::Runtime 0.012 Module::Runtime 0.012
Try::Tiny 0 Try::Tiny 0
strict 0 strict 0
@@ -1574,8 +1578,8 @@ DISTRIBUTIONS
JavaScript::Minifier::XS 0.11 JavaScript::Minifier::XS 0.11
Mojolicious 5.41 Mojolicious 5.41
Test::More 0.88 Test::More 0.88
Mojolicious-Plugin-ConfigHashMerge-0.01 Mojolicious-Plugin-I18N-1.4
pathname: D/DO/DOTAN/Mojolicious-Plugin-ConfigHashMerge-0.01.tar.gz pathname: S/SH/SHARIFULN/Mojolicious-Plugin-I18N-1.4.tar.gz
provides: provides:
Mojolicious::Plugin::ConfigHashMerge 0.01 Mojolicious::Plugin::ConfigHashMerge 0.01
requirements: requirements:
@@ -1592,30 +1596,20 @@ DISTRIBUTIONS
Mojolicious 5 Mojolicious 5
Test::More 0 Test::More 0
perl 5.010001 perl 5.010001
Net-Domain-TLD-1.70 Net-Domain-TLD-1.72
pathname: A/AL/ALEXP/Net-Domain-TLD-1.70.tar.gz pathname: A/AL/ALEXP/Net-Domain-TLD-1.72.tar.gz
provides: provides:
Net::Domain::TLD 1.70 Net::Domain::TLD 1.72
requirements: requirements:
Carp 0 Carp 0
ExtUtils::MakeMaker 0 ExtUtils::MakeMaker 0
Storable 0 Storable 0
Net-SSLeay-1.58 NetAddr-IP-4.075
pathname: M/MI/MIKEM/Net-SSLeay-1.58.tar.gz pathname: M/MI/MIKER/NetAddr-IP-4.075.tar.gz
provides: provides:
Net::SSLeay 1.58 NetAddr::IP 4.075
Net::SSLeay::Handle 0.61
requirements:
ExtUtils::MakeMaker 6.36
MIME::Base64 0
Test::More 0.60_01
perl 5.005
NetAddr-IP-4.072
pathname: M/MI/MIKER/NetAddr-IP-4.072.tar.gz
provides:
NetAddr::IP 4.072
NetAddr::IP::InetBase 0.08 NetAddr::IP::InetBase 0.08
NetAddr::IP::Lite 1.52 NetAddr::IP::Lite 1.54
NetAddr::IP::Util 1.51 NetAddr::IP::Util 1.51
NetAddr::IP::UtilPP 1.09 NetAddr::IP::UtilPP 1.09
NetAddr::IP::UtilPolluted 1.51 NetAddr::IP::UtilPolluted 1.51
@@ -1687,8 +1681,8 @@ DISTRIBUTIONS
Scalar::Util 1.18 Scalar::Util 1.18
Test::More 0.42 Test::More 0.42
perl 5.00503 perl 5.00503
Params-Validate-1.08 Params-Validate-1.13
pathname: D/DR/DROLSKY/Params-Validate-1.08.tar.gz pathname: D/DR/DROLSKY/Params-Validate-1.13.tar.gz
provides: provides:
Attribute::Params::Validate 1.08 Attribute::Params::Validate 1.08
Params::Validate 1.08 Params::Validate 1.08
@@ -1709,6 +1703,19 @@ DISTRIBUTIONS
strict 0 strict 0
vars 0 vars 0
warnings 0 warnings 0
Parse-CPAN-Meta-1.4414
pathname: D/DA/DAGOLDEN/Parse-CPAN-Meta-1.4414.tar.gz
provides:
Parse::CPAN::Meta 1.4414
requirements:
CPAN::Meta::YAML 0.011
Carp 0
Encode 0
Exporter 0
ExtUtils::MakeMaker 6.30
File::Spec 0.80
JSON::PP 2.27200
strict 0
Probe-Perl-0.03 Probe-Perl-0.03
pathname: K/KW/KWILLIAMS/Probe-Perl-0.03.tar.gz pathname: K/KW/KWILLIAMS/Probe-Perl-0.03.tar.gz
provides: provides:
@@ -1718,17 +1725,25 @@ DISTRIBUTIONS
ExtUtils::MakeMaker 6.30 ExtUtils::MakeMaker 6.30
File::Spec 0 File::Spec 0
strict 0 strict 0
Sub-Install-0.927 Scalar-List-Utils-1.41
pathname: R/RJ/RJBS/Sub-Install-0.927.tar.gz pathname: P/PE/PEVANS/Scalar-List-Utils-1.41.tar.gz
provides: provides:
Sub::Install 0.927 List::Util 1.41
List::Util::XS 1.41
Scalar::Util 1.41
Sub::Util 1.41
requirements: requirements:
B 0 ExtUtils::MakeMaker 0
Carp 0 Test::More 0
ExtUtils::MakeMaker 6.30 Socket-2.016
Scalar::Util 0 pathname: P/PE/PEVANS/Socket-2.016.tar.gz
strict 0 provides:
warnings 0 Socket 2.016
requirements:
ExtUtils::CBuilder 0
ExtUtils::Constant 0.23
ExtUtils::MakeMaker 0
perl 5.006001
Sub-Uplevel-0.24 Sub-Uplevel-0.24
pathname: D/DA/DAGOLDEN/Sub-Uplevel-0.24.tar.gz pathname: D/DA/DAGOLDEN/Sub-Uplevel-0.24.tar.gz
provides: provides:
@@ -1834,11 +1849,11 @@ DISTRIBUTIONS
Test-Fatal-0.013 Test-Fatal-0.013
pathname: R/RJ/RJBS/Test-Fatal-0.013.tar.gz pathname: R/RJ/RJBS/Test-Fatal-0.013.tar.gz
provides: provides:
Test::Fatal 0.013 Test::Fatal 0.014
requirements: requirements:
Carp 0 Carp 0
Exporter 5.57 Exporter 5.57
ExtUtils::MakeMaker 6.30 ExtUtils::MakeMaker 0
Test::Builder 0 Test::Builder 0
Try::Tiny 0.07 Try::Tiny 0.07
strict 0 strict 0
@@ -1846,37 +1861,9 @@ DISTRIBUTIONS
Test-Most-0.33 Test-Most-0.33
pathname: O/OV/OVID/Test-Most-0.33.tar.gz pathname: O/OV/OVID/Test-Most-0.33.tar.gz
provides: provides:
Test::Most 0.33 Test::Requires 0.08
Test::Most::Exception 0.33
requirements: requirements:
Exception::Class 1.14 ExtUtils::MakeMaker 6.64
ExtUtils::MakeMaker 0
Test::Deep 0.106
Test::Differences 0.61
Test::Exception 0.31
Test::Harness 3.21
Test::More 0.88
Test::Warn 0.23
Test-NoWarnings-1.04
pathname: A/AD/ADAMK/Test-NoWarnings-1.04.tar.gz
provides:
Test::NoWarnings 1.04
Test::NoWarnings::Warning 1.04
requirements:
ExtUtils::MakeMaker 0
Test::Builder 0.86
Test::More 0.47
Test::Tester 0.107
perl 5.006
Test-Requires-0.07
pathname: T/TO/TOKUHIROM/Test-Requires-0.07.tar.gz
provides:
Test::Requires 0.07
requirements:
CPAN::Meta 0
CPAN::Meta::Prereqs 0
ExtUtils::MakeMaker 6.59
Module::Build 0.38
Test::Builder::Module 0 Test::Builder::Module 0
Test::More 0.61 Test::More 0.61
perl 5.008_001 perl 5.008_001
@@ -1893,16 +1880,6 @@ DISTRIBUTIONS
Test::Builder::Tester 1.02 Test::Builder::Tester 1.02
Test::More 0.62 Test::More 0.62
blib 0 blib 0
Test-Tester-0.109
pathname: F/FD/FDALY/Test-Tester-0.109.tar.gz
provides:
Test::Tester 0.109
Test::Tester::Capture undef
Test::Tester::CaptureRunner undef
Test::Tester::Delegate undef
requirements:
ExtUtils::MakeMaker 0
Test::Builder 0
Test-Warn-0.30 Test-Warn-0.30
pathname: C/CH/CHORNY/Test-Warn-0.30.tar.gz pathname: C/CH/CHORNY/Test-Warn-0.30.tar.gz
provides: provides:
@@ -1917,15 +1894,12 @@ DISTRIBUTIONS
Test::Builder::Tester 1.02 Test::Builder::Tester 1.02
Test::More 0 Test::More 0
perl 5.006 perl 5.006
Text-Diff-1.41 Test-Warnings-0.019
pathname: O/OV/OVID/Text-Diff-1.41.tar.gz pathname: E/ET/ETHER/Test-Warnings-0.019.tar.gz
provides: provides:
Text::Diff 1.41 Test::Warnings 0.019
Text::Diff::Base 1.41
Text::Diff::Config 1.41
Text::Diff::Table 1.41
requirements: requirements:
Algorithm::Diff 1.19 Carp 0
Exporter 0 Exporter 0
ExtUtils::MakeMaker 0 ExtUtils::MakeMaker 0
Text-Unidecode-1.23 Text-Unidecode-1.23
@@ -1935,10 +1909,10 @@ DISTRIBUTIONS
requirements: requirements:
ExtUtils::MakeMaker 0 ExtUtils::MakeMaker 0
perl 5.008 perl 5.008
Try-Tiny-0.19 Try-Tiny-0.22
pathname: D/DO/DOY/Try-Tiny-0.19.tar.gz pathname: D/DO/DOY/Try-Tiny-0.22.tar.gz
provides: provides:
Try::Tiny 0.19 Try::Tiny 0.22
requirements: requirements:
Carp 0 Carp 0
Exporter 5.57 Exporter 5.57

View File

@@ -10,14 +10,12 @@ mkdir($ENV{MOJO_TMPDIR}, 0700) unless (-d $ENV{MOJO_TMPDIR});
sub startup { sub startup {
my $self = shift; my $self = shift;
push @{$self->commands->namespaces}, 'Lutim::Command';
$self->{wait_for_it} = {}; $self->{wait_for_it} = {};
$self->plugin('I18N'); $self->plugin('I18N');
$self->plugin('AssetPack'); $self->plugin('AssetPack');
my $config = $self->plugin('ConfigHashMerge', { my $config = $self->plugin('Config', {
default => { default => {
provisioning => 100, provisioning => 100,
provis_step => 5, provis_step => 5,
@@ -80,6 +78,19 @@ sub startup {
} }
); );
$self->helper(
index_url => sub {
my $c = shift;
my $to_abs = shift;
my $url = $c->url_for('index');
$url = $url->to_abs() if (defined($to_abs) && $to_abs);
$url =~ s#([^/])$#$1/#;
return $url;
}
);
$self->helper( $self->helper(
ip => sub { ip => sub {
my $c = shift; my $c = shift;

View File

@@ -2,6 +2,8 @@ package Lutim::Command::cron::cleanbdd;
use Mojo::Base 'Mojolicious::Command'; use Mojo::Base 'Mojolicious::Command';
use LutimModel; use LutimModel;
use Mojo::Util qw(slurp decode); use Mojo::Util qw(slurp decode);
use FindBin qw($Bin);
use File::Spec qw(catfile);
has description => 'Delete IP addresses from database after configured delay.'; has description => 'Delete IP addresses from database after configured delay.';
has usage => sub { shift->extract_usage }; has usage => sub { shift->extract_usage };
@@ -9,7 +11,8 @@ has usage => sub { shift->extract_usage };
sub run { sub run {
my $c = shift; my $c = shift;
my $config = $c->app->plugin('ConfigHashMerge', { my $config = $c->app->plugin('Config', {
file => File::Spec->catfile($Bin, '..' ,'lutim.conf'),
default => { default => {
keep_ip_during => 365, keep_ip_during => 365,
} }

View File

@@ -1,29 +1,35 @@
package Lutim::Command::cron::cleanfiles; package Lutim::Command::cron::cleanfiles;
use Mojo::Base 'Mojolicious::Command'; use Mojo::Base 'Mojolicious::Command';
use LutimModel; use LutimModel;
use Lutim;
use Mojo::Util qw(slurp decode); use Mojo::Util qw(slurp decode);
use FindBin qw($Bin);
use File::Spec qw(catfile);
has description => 'Delete expired files.'; has description => 'Delete expired files.';
has usage => sub { shift->extract_usage }; has usage => sub { shift->extract_usage };
sub run { sub run {
my $c = shift; my $c = shift;
my $l = Lutim->new;
my $time = time(); my $time = time();
my @images = LutimModel::Lutim->select('WHERE enabled = 1 AND (delete_at_day * 86400) < (? - created_at) AND delete_at_day != 0', $time); my @images = LutimModel::Lutim->select('WHERE enabled = 1 AND (delete_at_day * 86400) < (? - created_at) AND delete_at_day != 0', $time);
for my $image (@images) { for my $image (@images) {
$c->app->delete_image($image); $l->app->delete_image($image);
} }
my $config = $c->app->plugin('Config'); my $config = $c->app->plugin('Config', {
file => File::Spec->catfile($Bin, '..' ,'lutim.conf'),
});
if (defined($config->{delete_no_longer_viewed_files}) && $config->{delete_no_longer_viewed_files} > 0) { if (defined($config->{delete_no_longer_viewed_files}) && $config->{delete_no_longer_viewed_files} > 0) {
$time = time() - $config->{delete_no_longer_viewed_files} * 86400; $time = time() - $config->{delete_no_longer_viewed_files} * 86400;
@images = LutimModel::Lutim->select('WHERE enabled = 1 AND last_access_at < ?', $time); @images = LutimModel::Lutim->select('WHERE enabled = 1 AND last_access_at < ?', $time);
for my $image (@images) { for my $image (@images) {
$c->app->delete_image($image); $l->app->delete_image($image);
} }
} }
} }

View File

@@ -4,6 +4,8 @@ use LutimModel;
use Mojo::DOM; use Mojo::DOM;
use Mojo::Util qw(slurp spurt decode); use Mojo::Util qw(slurp spurt decode);
use DateTime; use DateTime;
use FindBin qw($Bin);
use File::Spec qw(catfile);
has description => 'Generate statistics about Lutim.'; has description => 'Generate statistics about Lutim.';
has usage => sub { shift->extract_usage }; has usage => sub { shift->extract_usage };
@@ -11,7 +13,8 @@ has usage => sub { shift->extract_usage };
sub run { sub run {
my $c = shift; my $c = shift;
my $config = $c->app->plugin('ConfigHashMerge', { my $config = $c->app->plugin('Config', {
file => File::Spec->catfile($Bin, '..' ,'lutim.conf'),
default => { default => {
stats_day_num => 365 stats_day_num => 365
} }

View File

@@ -4,6 +4,8 @@ use Mojo::Util qw(slurp decode);
use Filesys::DiskUsage qw/du/; use Filesys::DiskUsage qw/du/;
use LutimModel; use LutimModel;
use Switch; use Switch;
use FindBin qw($Bin);
use File::Spec qw(catfile);
has description => 'Watch the files directory and take action when over quota'; has description => 'Watch the files directory and take action when over quota';
has usage => sub { shift->extract_usage }; has usage => sub { shift->extract_usage };
@@ -11,7 +13,8 @@ has usage => sub { shift->extract_usage };
sub run { sub run {
my $c = shift; my $c = shift;
my $config = $c->app->plugin('ConfigHashMerge', { my $config = $c->app->plugin('Config', {
file => File::Spec->catfile($Bin, '..' ,'lutim.conf'),
default => { default => {
policy_when_full => 'warn' policy_when_full => 'warn'
} }

24
lib/Mounter.pm Normal file
View File

@@ -0,0 +1,24 @@
package Mounter;
use Mojo::Base 'Mojolicious';
use FindBin qw($Bin);
use File::Spec qw(catfile);
# This method will run once at server start
sub startup {
my $self = shift;
push @{$self->commands->namespaces}, 'Lutim::Command';
my $config = $self->plugin('Config' =>
{
file => File::Spec->catfile($Bin, '..' ,'lutim.conf'),
default => {
url_sub_dir => '/'
}
}
);
$self->plugin('Mount' => {$config->{url_sub_dir} => File::Spec->catfile($Bin, '..', 'script', 'application')});
}
1;

View File

@@ -97,6 +97,12 @@
# optional, default is 24 # optional, default is 24
#token_length => 24, #token_length => 24,
# URL sub-directory in which you want Lutim to be accessible
# example: you want to have Lutim under https://example.org/lutim/
# => set url_sub_dir to '/lutim' or to '/lutim/', it doesn't matter
# optional, defaut is /
#url_sub_dir => '/',
########################## ##########################
# Lutim cron jobs settings # Lutim cron jobs settings
########################## ##########################

11
script/application Executable file
View File

@@ -0,0 +1,11 @@
#!/usr/bin/env perl
use strict;
use warnings;
use FindBin;
BEGIN { unshift @INC, "$FindBin::Bin/../lib" }
# Start command line interface for application
require Mojolicious::Commands;
Mojolicious::Commands->start_app('Lutim');

View File

@@ -8,4 +8,4 @@ BEGIN { unshift @INC, "$FindBin::Bin/../lib" }
# Start command line interface for application # Start command line interface for application
require Mojolicious::Commands; require Mojolicious::Commands;
Mojolicious::Commands->start_app('Lutim'); Mojolicious::Commands->start_app('Mounter');

View File

@@ -15,7 +15,7 @@
% } % }
<div> <div>
% # Display image informations % # Display image informations
% my $url = url_for('/')->to_abs().stash('short'); % my $url = index_url(1).stash('short');
<strong><%= stash('filename') %></strong> <strong><%= stash('filename') %></strong>
&nbsp;&nbsp;&nbsp;<a target="_blank" class="btn btn-default btn-primary btn-xs" href="https://twitter.com/share?url=<%= $url %>?t"><%= l('Tweet it!') %></a> &nbsp;&nbsp;&nbsp;<a target="_blank" class="btn btn-default btn-primary btn-xs" href="https://twitter.com/share?url=<%= $url %>?t"><%= l('Tweet it!') %></a>
<ul class="list-unstyled"> <ul class="list-unstyled">
@@ -81,7 +81,7 @@
</div> </div>
<noscript> <noscript>
<form class="form" role="form" method="POST" action="<%== url_for('add') %>" enctype="multipart/form-data"> <form class="form" role="form" method="POST" action="<%== index_url %>" enctype="multipart/form-data">
<div class="form-group form-inline"> <div class="form-group form-inline">
<select name="delete-day" class="form-control"> <select name="delete-day" class="form-control">
% for my $delay (qw/0 1 7 30 365/) { % for my $delay (qw/0 1 7 30 365/) {
@@ -186,14 +186,14 @@
function link(url, dl, token, modify) { function link(url, dl, token, modify) {
if (token !== undefined) { if (token !== undefined) {
if (modify !== undefined && modify === true) { if (modify !== undefined && modify === true) {
return '<%== url_for('index')->to_abs() %>m/'+url+'/'+token; return '<%== index_url(1) %>m/'+url+'/'+token;
} else { } else {
url = 'd/'+url+'/'+token; url = 'd/'+url+'/'+token;
} }
} else if (dl !== '') { } else if (dl !== '') {
url = url+'?'+dl; url = url+'?'+dl;
} }
return '<a href="<%== url_for('index')->to_abs() %>'+url+'"><%== url_for('index')->to_abs() %>'+url+'</a>'; return '<a href="<%== index_url(1) %>'+url+'"><%== index_url(1) %>'+url+'</a>';
} }
function share(url) { function share(url) {
console.log(url); console.log(url);
@@ -218,7 +218,7 @@
url : url, url : url,
type : "POST", type : "POST",
data : { data : {
'image_url' : '<%== url_for('index')->to_abs() %>'+short, 'image_url' : '<%== index_url(1) %>'+short,
'format' : 'json', 'format' : 'json',
'first-view' : ($("#first-view-"+short).prop('checked')) ? 1 : 0, 'first-view' : ($("#first-view-"+short).prop('checked')) ? 1 : 0,
'delete-day' : $("#day-"+short).val() 'delete-day' : $("#day-"+short).val()
@@ -284,7 +284,7 @@
} }
function bindddz(firstview, deleteday) { function bindddz(firstview, deleteday) {
$('#drag-and-drop-zone').dmUploader({ $('#drag-and-drop-zone').dmUploader({
url: '<%== url_for('add') %>', url: '<%== index_url %>',
dataType: 'json', dataType: 'json',
allowedTypes: 'image/*', allowedTypes: 'image/*',
maxFileSize: <%= $max_file_size %>, maxFileSize: <%= $max_file_size %>,
@@ -317,7 +317,7 @@
$(".hidden-spin").css('display', 'block'); $(".hidden-spin").css('display', 'block');
console.log(val); console.log(val);
$.ajax({ $.ajax({
url : '<%== url_for('add') %>', url : '<%== index_url %>',
type : "POST", type : "POST",
data : { data : {
'lutim-file-url' : val, 'lutim-file-url' : val,
@@ -357,7 +357,7 @@
$(".messages").append('<div id="1-div">'+file.name+'<br><div class="progress"><div id="1"class="progress-bar progress-striped active" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" style="width: 0%;"><span id="1-text" class="pull-left" style="padding-left: 10px;"> 0%</span></div></div></div>'); $(".messages").append('<div id="1-div">'+file.name+'<br><div class="progress"><div id="1"class="progress-bar progress-striped active" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" style="width: 0%;"><span id="1-text" class="pull-left" style="padding-left: 10px;"> 0%</span></div></div></div>');
// Ajax Submit // Ajax Submit
$.ajax({ $.ajax({
url: '<%== url_for('add') %>', url: '<%== index_url %>',
type: 'POST', type: 'POST',
dataType: 'json', dataType: 'json',
data: fd, data: fd,

View File

@@ -1,7 +1,7 @@
% # vim:set sw=4 ts=4 sts=4 ft=html.epl expandtab: % # vim:set sw=4 ts=4 sts=4 ft=html.epl expandtab:
% use Mojo::Util qw(url_escape); % use Mojo::Util qw(url_escape);
% my $twitter_url = 'https://twitter.com/share'; % my $twitter_url = 'https://twitter.com/share';
% my $url = url_for('/')->to_abs(); % my $url = index_url(1);
% $twitter_url .= '?url='.url_escape("$url") % $twitter_url .= '?url='.url_escape("$url")
% .'&via=framasky' % .'&via=framasky'
% .'&text=Check out this %23Lutim instance! '; % .'&text=Check out this %23Lutim instance! ';
@@ -14,14 +14,14 @@
<meta name="mobile-web-app-capable" content="yes"> <meta name="mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-capable" content="yes"> <meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black"> <meta name="apple-mobile-web-app-status-bar-style" content="black">
<link rel="icon" type="image/png" href="<%= url_for('/') %>img/favicon.png"> <link rel="icon" type="image/png" href="<%= index_url %>img/favicon.png">
<link rel="icon" sizes="128x128" href="<%= url_for('/') %>img/lutim128.png"> <link rel="icon" sizes="128x128" href="<%= index_url %>img/lutim128.png">
<link rel="icon" sizes="196x196" href="<%= url_for('/') %>img/lutim196.png"> <link rel="icon" sizes="196x196" href="<%= index_url %>img/lutim196.png">
<link rel="apple-touch-icon" href="<%= url_for('/') %>img/lutim60.png"> <link rel="apple-touch-icon" href="<%= index_url %>img/lutim60.png">
<link rel="apple-touch-icon" sizes="76x76" href="<%= url_for('/') %>img/lutim76.png"> <link rel="apple-touch-icon" sizes="76x76" href="<%= index_url %>img/lutim76.png">
<link rel="apple-touch-icon" sizes="120x120" href="<%= url_for('/') %>img/lutim120.png"> <link rel="apple-touch-icon" sizes="120x120" href="<%= index_url %>img/lutim120.png">
<link rel="apple-touch-icon" sizes="152x152" href="<%= url_for('/') %>img/lutim152.png"> <link rel="apple-touch-icon" sizes="152x152" href="<%= index_url %>img/lutim152.png">
<link rel="apple-touch-icon-precomposed" sizes="128x128" href="<%= url_for('/') %>img/lutim128.png"> <link rel="apple-touch-icon-precomposed" sizes="128x128" href="<%= index_url %>img/lutim128.png">
% if (current_route 'stats') { % if (current_route 'stats') {
%= asset 'stats.css' %= asset 'stats.css'
% } elsif (current_route 'about') { % } elsif (current_route 'about') {
@@ -40,7 +40,7 @@
% } % }
<div> <div>
<div class="pull-left hidden-xs logo"> <div class="pull-left hidden-xs logo">
<img src="<%= url_for('/') %>img/Lutim_small.png" alt="Lutim logo"> <img src="<%= index_url %>img/Lutim_small.png" alt="Lutim logo" width="57" height="75">
</div> </div>
<a class="link_nocol" href="<%= url_for('/') %>" title="<%= l('Homepage') %>"><h1 class="hennypenny">Let's Upload That Image!</h1></a> <a class="link_nocol" href="<%= url_for('/') %>" title="<%= l('Homepage') %>"><h1 class="hennypenny">Let's Upload That Image!</h1></a>
<p> <p>

View File

@@ -12,7 +12,7 @@
}, },
"developer": { "developer": {
"name": "Lutim team !", "name": "Lutim team !",
"url": "https://github.com/ldidry/lutim" "url": "https://git.framasoft.org/luc/lutim"
}, },
"default_locale": "en", "default_locale": "en",
"locales": { "locales": {

View File

@@ -6,23 +6,23 @@
<title>Lutim</title> <title>Lutim</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta charset="utf-8" /> <meta charset="utf-8" />
<link rel="icon" type="image/png" href="<%= url_for('index')->to_abs() %>img/favicon.png"> <link rel="icon" type="image/png" href="<%= index_url(1) %>img/favicon.png">
<meta property="og:title" content="Lutim" /> <meta property="og:title" content="Lutim" />
<meta property="og:type" content="website" /> <meta property="og:type" content="website" />
<meta property="og:url" content="<%= url_for('index')->to_abs().$short %>?t" /> <meta property="og:url" content="<%= index_url(1).$short %>?t" />
<meta property="og:image" content="<%= url_for('index')->to_abs().$short %>" /> <meta property="og:image" content="<%= index_url(1).$short %>" />
<meta property="og:image:url" content="<%= url_for('index')->to_abs().$short %>" /> <meta property="og:image:url" content="<%= index_url(1).$short %>" />
<meta property="og:image:type" content="<%= $mimetype %>" /> <meta property="og:image:type" content="<%= $mimetype %>" />
<meta name="twitter:site" content="<%= config('tweet_card_via') %>"> <meta name="twitter:site" content="<%= config('tweet_card_via') %>">
<meta name="twitter:image:src" content="<%= url_for('index')->to_abs().$short %>"> <meta name="twitter:image:src" content="<%= index_url(1).$short %>">
% if ($g) { % if ($g) {
<meta name="twitter:card" content="player"> <meta name="twitter:card" content="player">
<meta name="twitter:image" content="<%= url_for('index')->to_abs().$short %>"> <meta name="twitter:image" content="<%= index_url(1).$short %>">
<meta name="twitter:player" content="<%= url_for('index')->to_abs().$short.'?t' %>"> <meta name="twitter:player" content="<%= index_url(1).$short.'?t' %>">
<meta name="twitter:title" content="<%= $filename %>"> <meta name="twitter:title" content="<%= $filename %>">
<meta name="twitter:player:width" content="<%= $width %>"> <meta name="twitter:player:width" content="<%= $width %>">
<meta name="twitter:player:height" content="<%= $height %>"> <meta name="twitter:player:height" content="<%= $height %>">
%= asset 'freeze.js' %= asset 'freeze.js', { inline => 1 }
%= javascript begin %= javascript begin
freezeframe_options = { freezeframe_options = {
trigger_event: "click", trigger_event: "click",
@@ -34,7 +34,7 @@
% } % }
</head> </head>
<body<%= ($g) ? '' : ' style="height: 97%;"' %>> <body<%= ($g) ? '' : ' style="height: 97%;"' %>>
<img<%= ' class="freezeframe"' if ($g) %> style="<%= 'max-' unless ($g) %>width:100%; max-height:100%;" src="<%= url_for('index')->to_abs().$short %><%= '.gif' if ($g) %>" alt="<%= $filename %>"> <img<%= ' class="freezeframe"' if ($g) %> style="<%= 'max-' unless ($g) %>width:100%; max-height:100%;" src="<%= index_url(1).$short %><%= '.gif' if ($g) %>" alt="<%= $filename %>">
</body> </body>
</html> </html>