Initial commit

This commit is contained in:
Daniel Berteaud 2012-10-18 09:40:12 +02:00
commit 53b0e0e7d9
19 changed files with 341 additions and 0 deletions

8
createlinks Normal file
View File

@ -0,0 +1,8 @@
#!/usr/bin/perl -w
use esmith::Build::CreateLinks qw(:all);
foreach my $event (qw/webapps-update ipasserelle-update bootstrap-ldap-save/){
event_link("ipasserelle-webapps-init-domains", "$event", "55");
}

69
ipasserelle-webapps.spec Normal file
View File

@ -0,0 +1,69 @@
Summary: iPasserelle web applications
%define name ipasserelle-webapps
Name: %{name}
%define version 0.2.0
%define release 1
Version: %{version}
Release: %{release}%{?dist}
License: GPL
URL: http://www.ipasserelle.com/
Group: SMEserver/addon
Source: %{name}-%{version}.tar.gz
BuildArch: noarch
BuildRoot: /var/tmp/%{name}-%{version}
Requires: ipasserelle-base >= 0.1-14
Requires: smeserver-openupload
Requires: smeserver-tt-rss
Requires: smeserver-ajaxplorer
Requires: smeserver-dokuwiki
Requires: dokuwiki-plugins
BuildRequires: e-smith-devtools
%description
Integrate commonly used web applications
%changelog
* Thu Oct 17 2012 Daniel Berteaud <daniel@firewall-services.com> 0.2.0-1
- Import in GIT
* Wed Nov 24 2011 Daniel Berteaud <daniel@firewall-services.com> 0.1-3
- Set ajaxplorer LogoutUrl to LL::NG portal address
- Use more friendly names in LL::NG portal
* Tue Oct 11 2011 Daniel Berteaud <daniel@firewall-services.com> 0.1-2
- Fix dokuwiki domain in LL::NG menu
* Wed Jun 28 2011 Daniel Berteaud <daniel@firewall-services.com> 0.1-1
- initial release
%prep
%setup
%build
perl createlinks
%install
rm -rf $RPM_BUILD_ROOT
(cd root ; find . -depth -print | cpio -dump $RPM_BUILD_ROOT)
rm -f %{name}-%{version}-filelist
/sbin/e-smith/genfilelist $RPM_BUILD_ROOT > %{name}-%{version}-filelist
%clean
cd ..
rm -rf %{name}-%{version}
%pre
%preun
%post
%postun
%files -f %{name}-%{version}-filelist
%defattr(-,root,root)

View File

@ -0,0 +1 @@
disabled

View File

@ -0,0 +1 @@
LemonLDAP

View File

@ -0,0 +1 @@
iPasserelle

View File

@ -0,0 +1 @@
Firewall-Services: la sécurité des réseaux

View File

@ -0,0 +1 @@
disabled

View File

@ -0,0 +1 @@
LemonLDAP

View File

@ -0,0 +1 @@
disabled

View File

@ -0,0 +1 @@
LemonLDAP

View File

@ -0,0 +1 @@
disabled

View File

@ -0,0 +1,11 @@
{
my $rec = $DB->get('ajaxplorer')
|| $DB->new_record('ajaxplorer', {type => 'webapp'});
my $url = $rec->prop('LogoutUrl');
if (not $url){
$url = 'https://auth.' . $DomainName;
$rec->set_prop('LogoutUrl', $url);
}
}

View File

@ -0,0 +1,110 @@
#!/usr/bin/perl -w
#----------------------------------------------------------------------
# copyright (C) 2010-2011 Firewall-Services
# daniel@firewall-services.com
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
#----------------------------------------------------------------------
use strict;
use warnings;
use esmith::DomainsDB;
use esmith::ConfigDB;
my $d = esmith::DomainsDB->open or die "Couldn't open DomainsDB\n";
my $c = esmith::ConfigDB->open_ro() or die "Couldn't open ConfigDB\n";
my $domain = $c->get('DomainName')->value;
my $vhost;
$vhost = $d->get("upload.$domain");
if (!$vhost){
$d->new_record("upload.$domain",{
type => 'domain',
Content => 'Primary',
Description => "OpenUpload",
Nameservers => 'internet',
TemplatePath => 'WebAppVirtualHost',
DocumentRoot => '/usr/share/openupload/www',
Removable => 'yes',
LemonLDAP => 'enabled'
});
unless ( system("/sbin/e-smith/signal-event", "domain-create", "upload.$domain") == 0 ){
die "Failed to create domain upload.$domain\n";
}
}
$vhost = $d->get("rss.$domain");
if (!$vhost){
$d->new_record("rss.$domain",{
type => 'domain',
Content => 'Primary',
Description => "Tiny Tiny RSS",
Nameservers => 'internet',
TemplatePath => 'WebAppVirtualHost',
DocumentRoot => '/usr/share/tt-rss',
Removable => 'yes',
LemonLDAP => 'enabled'
});
unless ( system("/sbin/e-smith/signal-event", "domain-create", "rss.$domain") == 0 ){
die "Failed to create domain rss.$domain\n";
}
}
$vhost = $d->get("echange.$domain");
if (!$vhost){
$d->new_record("echange.$domain",{
type => 'domain',
Content => 'Primary',
Description => "Ajaxplorer",
Nameservers => 'internet',
TemplatePath => 'WebAppVirtualHost',
DocumentRoot => '/usr/share/ajaxplorer',
Removable => 'yes',
LemonLDAP => 'enabled'
});
unless ( system("/sbin/e-smith/signal-event", "domain-create", "echange.$domain") == 0 ){
die "Failed to create domain echange.$domain\n";
}
}
$vhost = $d->get("wiki.$domain");
if (!$vhost){
$d->new_record("wiki.$domain",{
type => 'domain',
Content => 'Primary',
Description => "Dokuwiki",
Nameservers => 'internet',
TemplatePath => 'WebAppVirtualHost',
DocumentRoot => '/usr/share/dokuwiki',
Removable => 'yes',
LemonLDAP => 'enabled'
});
unless ( system("/sbin/e-smith/signal-event", "domain-create", "wiki.$domain") == 0 ){
die "Failed to create domain wiki.$domain\n";
}
}

View File

@ -0,0 +1,11 @@
# iPasserelle overrides
$CONFIG['WWW_SERVER'] = 'http://upload.{"$DomainName";}';
$CONFIG['WWW_ROOT'] = '/';
$CONFIG['site']['title'] = 'Hébergement de fichiers';
$CONFIG['site']['footer'] = '<a href="http://www.ipasserelle.com">iPasserelle</a> © une solution <a href="http://www.firewall-services.com">Firewall-Services</a>';
$CONFIG['defaultlang'] = 'fr';

View File

@ -0,0 +1,32 @@
{
$conf->{'exportedHeaders'}->{"upload.$domain"} = {
'Auth-User' => '$uid',
} unless ($conf->{'exportedHeaders'}->{"upload.$domain"});
$conf->{'locationRules'}->{"upload.$domain"} = {
'(?#21login)(a|action)=login' => "logout_app https://upload.$domain/",
'(?#13unprotect_captcha)^/plugins/captcha\\.php' => 'unprotect',
'(?#14unprotect_index)^/index\\.php$' => 'unprotect',
'(?#12unprotect_templates)^/templates/' => 'unprotect',
'(?#20logout)(a|action)=logout' => "logout_app https://auth.$domain",
'(?#10unprotect_dl)(a|action)=[dgr]' => 'unprotect',
'(?#01deny_double_action)(a|action)=.*(a|action)=.*' => 'deny',
'default' => '$groups =~ /\\b(equipe|admins)\\b/'
} unless ($conf->{'locationRules'}->{"upload.$domain"});
$conf->{'applicationList'}->{'010apps'}->{'openupload'} = {
'options' => {
'logo' => 'folder.png',
'name' => 'Fichiers temporaires',
'description' => 'Service d\'h&eacute;bergement de fichiers temporaires',
'uri' => "https://upload.$domain",
'display' => 'auto'
},
'type' => 'application'
} unless ($conf->{'applicationList'}->{'010apps'}->{'openupload'});
$OUT = '';
}

View File

@ -0,0 +1,27 @@
{
$conf->{'exportedHeaders'}->{"echange.$domain"} = {
'Auth-User' => '$uid'
} unless ($conf->{'exportedHeaders'}->{"echange.$domain"});
# TODO: $localAcccess en fonction de access == (public|private)
$conf->{'locationRules'}->{"echange.$domain"} = {
'default' => 'accept'
} unless ($conf->{'locationRules'}->{"echange.$domain"});
$conf->{'applicationList'}->{'010apps'}->{'ajaxplorer'} = {
'options' => {
'logo' => 'folder.png',
'name' => 'Gestion des fichiers',
'description' => 'Gestionnaire de fichiers web Ajaxplorer',
'uri' => "https://echange.$domain/",
'display' => 'auto'
},
'type' => 'application'
} unless ($conf->{'applicationList'}->{'010apps'}->{'ajaxplorer'});
$OUT = '';
}

View File

@ -0,0 +1,30 @@
{
$conf->{'exportedHeaders'}->{"rss.$domain"} = {
'User-Name' => '$cn',
'Auth-User' => '$uid',
'User-Mail' => '$mail'
} unless ($conf->{'exportedHeaders'}->{"rss.$domain"});
$conf->{'locationRules'}->{"rss.$domain"} = {
'(?#10logout)^/logout\\.php' => 'logout_app',
'default' => '$groups =~ /\\b(equipe|admins)\\b/'
} unless ($conf->{'locationRules'}->{"rss.$domain"});
$conf->{'applicationList'}->{'010apps'}->{'ttrss'} = {
'options' => {
'logo' => 'bookmark.png',
'name' => 'Lecteur de flux RSS',
'description' => 'Tiny Tiny RSS',
'uri' => "https://rss.$domain",
'display' => 'auto'
},
'type' => 'application'
} unless ($conf->{'applicationList'}->{'010apps'}->{'ttrss'});
$OUT = '';
}

View File

@ -0,0 +1,33 @@
{
$conf->{'exportedHeaders'}->{"wiki.$domain"} = {
'User-Name' => '$cn',
'Auth-User' => '$uid',
'User-Mail' => '$mail',
'User-Groups' => '$groups',
} unless ($conf->{'exportedHeaders'}->{"wiki.$domain"});
$conf->{'locationRules'}->{"wiki.$domain"} = {
'(?#02login)^/doku.php(/start)?\\?(.*)do=login' => '$groups =~ /\\b(equipe|admins)\\b/',
'default' => 'unprotect',
'(?#01data)^/data(.*)' => 'deny',
'(?#10logout)^/doku.php(/start)?\\?(.*)do=logout' => 'logout_app'
} unless ($conf->{'locationRules'}->{"wiki.$domain"});
$conf->{'applicationList'}->{'010apps'}->{'dokuwiki'} = {
'options' => {
'logo' => 'help.png',
'name' => 'Wiki',
'description' => 'Site collaboratif',
'uri' => "https://wiki.$domain",
'display' => 'auto'
},
'type' => 'application'
} unless ($conf->{'applicationList'}->{'010apps'}->{'dokuwiki'});
$OUT = '';
}