11
.project
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<projectDescription>
|
||||||
|
<name>poubelle_ynh</name>
|
||||||
|
<comment></comment>
|
||||||
|
<projects>
|
||||||
|
</projects>
|
||||||
|
<buildSpec>
|
||||||
|
</buildSpec>
|
||||||
|
<natures>
|
||||||
|
</natures>
|
||||||
|
</projectDescription>
|
65
README.md
|
@ -1,41 +1,52 @@
|
||||||
emailpoubelle
|
# Emailpoubelle
|
||||||
=============
|
|
||||||
A Yunohost version of Email Poubelle by David Mercereau. All thanks to David.
|
|
||||||
http://www.mercereau.info/sortie-de-la-version-1-0-demailpoubelle-php-email-jetable-auto-hebergeable/
|
|
||||||
|
|
||||||
Original packaging done by Matlink, https://github.com/matlink/emailpoubelle_ynh
|
[![Integration level](https://dash.yunohost.org/integration/emailpoubelle.svg)](https://ci-apps.yunohost.org/jenkins/job/emailpoubelle%20%28Community%29/lastBuild/consoleFull)
|
||||||
|
[![Install emailpoubelle with YunoHost](https://install-app.yunohost.org/install-with-yunohost.png)](https://install-app.yunohost.org/?app=emailpoubelle)
|
||||||
|
|
||||||
|
A Yunohost version of [Email Poubelle](http://www.mercereau.info/sortie-de-la-version-1-0-demailpoubelle-php-email-jetable-auto-hebergeable/) by David Mercereau.
|
||||||
|
|
||||||
|
EmailPoubelle (Trash email) is a script to create temporay email adresses that aims to your real email address
|
||||||
|
|
||||||
|
All thanks to David.
|
||||||
|
|
||||||
|
## WARNING
|
||||||
|
|
||||||
WARNING
|
|
||||||
=========
|
|
||||||
Using this will cause to disable the Yunohost ldap aliases ! Once installed, you won't be able to use the aliasses settings that you can see when you modify your personnal settings in the SSOWAT pannel.
|
Using this will cause to disable the Yunohost ldap aliases ! Once installed, you won't be able to use the aliasses settings that you can see when you modify your personnal settings in the SSOWAT pannel.
|
||||||
Of course, once uninstalled, everything get back to normal.
|
Of course, once uninstalled, everything get back to normal.
|
||||||
|
|
||||||
TODO :
|
## Links
|
||||||
------
|
|
||||||
[X] move to 2.0
|
|
||||||
|
|
||||||
[ ] check nginx conf
|
* Report a bug: https://github.com/YunoHost-Apps/emailpoubelle_ynh/issues
|
||||||
|
* App website: https://github.com/kepon85/emailPoubelle.php
|
||||||
|
* YunoHost website: https://yunohost.org/
|
||||||
|
|
||||||
[X] insert clean index.php
|
---
|
||||||
|
|
||||||
[ ] insert cron in conf
|
Developers info
|
||||||
|
----------------
|
||||||
|
|
||||||
[ ] insert symlink for langages in /lang
|
Please do your pull request to the [testing branch](https://github.com/Yunohost-Apps/emailpoubelle_ynh/tree/Testing).
|
||||||
|
|
||||||
[X] check dependency for lang
|
To try the testing branch, please proceed like that.
|
||||||
|
```
|
||||||
|
sudo yunohost app install https://github.com/Yunohost-Apps/emailpoubelle_ynh/tree/Testing --debug
|
||||||
|
or
|
||||||
|
sudo yunohost app upgrade emailpoubelle -u https://github.com/Yunohost-Apps/emailpoubelle_ynh/tree/Testing --debug
|
||||||
|
```
|
||||||
|
|
||||||
[X] remove php-geoip
|
## TODO :
|
||||||
|
|
||||||
[ ] remove new locale on remove
|
- [X] check nginx conf
|
||||||
|
- [X] insert cron in conf
|
||||||
|
- [ ] insert symlink for langages in /lang
|
||||||
|
- [ ] remove new locale on remove
|
||||||
|
- [ ] Test it ! (and check if that doesn't interfer with postfix and its aliases)
|
||||||
|
- [X] cron job to remove redirections (`0 */2 * * * /usr/bin/wget -q -t 1 -T 7200 -O /dev/null 'https://domain/poubelle/index.php?act=cron' >/dev/null 2>&1)
|
||||||
|
- [ ] conflict with SSOWAT + non-public app
|
||||||
|
- [X] package_check integration
|
||||||
|
- [ ] Multiinstance
|
||||||
|
- [ ] LDAP
|
||||||
|
|
||||||
[X] Why the flag don't show??
|
## LICENCE
|
||||||
|
|
||||||
[X] Implement Admin panel
|
Package and software are GPL 3.0
|
||||||
|
|
||||||
[X] Add backup restore script
|
|
||||||
|
|
||||||
[ ] check checksum on download
|
|
||||||
|
|
||||||
[ ] Test it ! (and check if that doesn't interfer with postfix and its aliases)
|
|
||||||
|
|
||||||
[ ] cron job to remove redirections (0 */2 * * * /usr/bin/wget -q -t 1 -T 7200 -O /dev/null 'https://domain/poubelle/index.php?act=cron' >/dev/null 2>&1) conflict with SSOWAT + non-public app
|
|
30
check_process
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
;; Complete Test
|
||||||
|
# Comment ignored
|
||||||
|
; Manifest
|
||||||
|
domain="domain.tld" (DOMAIN)
|
||||||
|
path="/poubelle" (PATH)
|
||||||
|
admin="john" (USER)
|
||||||
|
is_public=1 (PUBLIC|public=1|private=0)
|
||||||
|
password="password"
|
||||||
|
; Checks
|
||||||
|
pkg_linter=1
|
||||||
|
setup_sub_dir=1
|
||||||
|
setup_root=1
|
||||||
|
setup_private=1
|
||||||
|
setup_public=1
|
||||||
|
# upgrade=1 from_commit=1d375c45011ad5ab92c038120c7275580479fbc6
|
||||||
|
upgrade=1
|
||||||
|
backup_restore=1
|
||||||
|
multi_instance=0
|
||||||
|
incorrect_path=1
|
||||||
|
port_already_use=0 (XXXX)
|
||||||
|
change_url=0
|
||||||
|
;;; Levels
|
||||||
|
Level 5=auto
|
||||||
|
;;; Options
|
||||||
|
Email=
|
||||||
|
Notification=none
|
||||||
|
;;; Upgrade options
|
||||||
|
; commit=1d375c45011ad5ab92c038120c7275580479fbc6
|
||||||
|
name=2.0~ynh3
|
||||||
|
manifest_arg=domain=DOMAIN&path=PATH&admin=USER&password=pass&is_public=0&
|
3
conf/app.src
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
SOURCE_URL=https://github.com/kepon85/emailPoubelle.php/archive/d9f444c7687e3d4597d6d95c33fa96fd1332c1de.zip
|
||||||
|
SOURCE_SUM=3ab236748b1b912c03ddf4e09c4e7f0304467adadc0012c9b8f434353fe26e46
|
||||||
|
SOURCE_FORMAT=zip
|
1
conf/emailpoubelle.cron
Normal file
|
@ -0,0 +1 @@
|
||||||
|
0 */2 * * * www-data cd $final_path/www/; /usr/bin/php index.php > /dev/null 2>&1
|
|
@ -1,18 +1,27 @@
|
||||||
location YNH_EXAMPLE_PATH {
|
#sub_path_only rewrite ^__PATH__$ __PATH__/ permanent;
|
||||||
# Path to source
|
location __PATH__/ {
|
||||||
alias YNH_EXAMPLE_ALIAS ;
|
|
||||||
# Example PHP configuration
|
# Path to source
|
||||||
index www/index.php;
|
alias __FINALPATH__/ ;
|
||||||
try_files $uri $uri/ index.php;
|
|
||||||
location ~ [^/]\.php(/|$) {
|
# Force usage of https
|
||||||
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
|
if ($scheme = http) {
|
||||||
fastcgi_pass unix:/var/run/php5-fpm.sock;
|
rewrite ^ https://$server_name$request_uri? permanent;
|
||||||
fastcgi_index index.php;
|
}
|
||||||
include fastcgi_params;
|
|
||||||
fastcgi_param REMOTE_USER $remote_user;
|
### PHP configuration
|
||||||
fastcgi_param PATH_INFO $fastcgi_path_info;
|
index www/index.php;
|
||||||
fastcgi_param SCRIPT_FILENAME $request_filename;
|
try_files $uri $uri/ index.php;
|
||||||
}
|
location ~ [^/]\.php(/|$) {
|
||||||
# Include SSOWAT user panel.
|
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
|
||||||
include conf.d/yunohost_panel.conf.inc;
|
fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
|
||||||
|
fastcgi_index index.php;
|
||||||
|
include fastcgi_params;
|
||||||
|
fastcgi_param REMOTE_USER $remote_user;
|
||||||
|
fastcgi_param PATH_INFO $fastcgi_path_info;
|
||||||
|
fastcgi_param SCRIPT_FILENAME $request_filename;
|
||||||
|
}
|
||||||
|
|
||||||
|
# Include SSOWAT user panel.
|
||||||
|
include conf.d/yunohost_panel.conf.inc;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,35 +0,0 @@
|
||||||
|
|
||||||
#New nginx.conf - a implémenter
|
|
||||||
#sub_path_only rewrite ^__PATH__$ __PATH__/ permanent;
|
|
||||||
location __PATH__/ {
|
|
||||||
|
|
||||||
# Path to source
|
|
||||||
alias __FINALPATH__/ ;
|
|
||||||
|
|
||||||
# Force usage of https
|
|
||||||
if ($scheme = http) {
|
|
||||||
rewrite ^ https://$server_name$request_uri? permanent;
|
|
||||||
}
|
|
||||||
|
|
||||||
### Example PHP configuration (remove it if not used)
|
|
||||||
index index.php;
|
|
||||||
|
|
||||||
# Common parameter to increase upload size limit in conjunction with dedicated php-fpm file
|
|
||||||
#client_max_body_size 50M;
|
|
||||||
|
|
||||||
try_files $uri $uri/ index.php;
|
|
||||||
location ~ [^/]\.php(/|$) {
|
|
||||||
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
|
|
||||||
fastcgi_pass unix:/var/run/php5-fpm-__NAME__.sock;
|
|
||||||
|
|
||||||
fastcgi_index index.php;
|
|
||||||
include fastcgi_params;
|
|
||||||
fastcgi_param REMOTE_USER $remote_user;
|
|
||||||
fastcgi_param PATH_INFO $fastcgi_path_info;
|
|
||||||
fastcgi_param SCRIPT_FILENAME $request_filename;
|
|
||||||
}
|
|
||||||
### End of PHP configuration part
|
|
||||||
|
|
||||||
# Include SSOWAT user panel.
|
|
||||||
include conf.d/yunohost_panel.conf.inc;
|
|
||||||
}
|
|
|
@ -7,14 +7,14 @@
|
||||||
"fr": "Créez des adresses email jetables qui redirigent les mails vers votre adresse réelle"
|
"fr": "Créez des adresses email jetables qui redirigent les mails vers votre adresse réelle"
|
||||||
},
|
},
|
||||||
"url": "https://framagit.org/kepon/emailPoubellePhp/",
|
"url": "https://framagit.org/kepon/emailPoubellePhp/",
|
||||||
"version": "2.0~ynh3",
|
"version": "2.0~ynh4",
|
||||||
"license": "Beerware",
|
"license": "Beerware",
|
||||||
"maintainer": {
|
"maintainer": {
|
||||||
"name": "Krakinou",
|
"name": "Krakinou",
|
||||||
"email": "misterl56@hotmail.com"
|
"email": "misterl56@hotmail.com"
|
||||||
},
|
},
|
||||||
"requirements": {
|
"requirements": {
|
||||||
"yunohost": ">= 3.0.0"
|
"yunohost": ">= 3.5.2"
|
||||||
},
|
},
|
||||||
"multi_instance": false,
|
"multi_instance": false,
|
||||||
"services": [
|
"services": [
|
||||||
|
@ -51,7 +51,11 @@
|
||||||
"en": "Choose an admin user for emailpoubelle",
|
"en": "Choose an admin user for emailpoubelle",
|
||||||
"fr": "Choisissez un administrateur pour emailpoubelle"
|
"fr": "Choisissez un administrateur pour emailpoubelle"
|
||||||
},
|
},
|
||||||
"example": "homer"
|
"example": "homer",
|
||||||
|
"help": {
|
||||||
|
"en": "Admin user can access to the control panel, block and remove all redirection and reset any settings",
|
||||||
|
"fr": "L'administrateur peut accéder au panneau de controle, bloquer et supprimer les redirections ainsi que réinitialiser les réglages"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "password",
|
"name": "password",
|
||||||
|
@ -63,13 +67,17 @@
|
||||||
"example": "AveryStrongPassword"
|
"example": "AveryStrongPassword"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "public_site",
|
"name": "is_public",
|
||||||
|
"type": "boolean",
|
||||||
"ask": {
|
"ask": {
|
||||||
"en": "Should this application be public ?",
|
"en": "Is it a public application?",
|
||||||
"fr": "Est-ce que cette application doit être visible publiquement ?"
|
"fr": "Est-ce une application publique ?"
|
||||||
},
|
},
|
||||||
"choices": ["Yes", "No"],
|
"default": false,
|
||||||
"default": "No"
|
"help": {
|
||||||
|
"en": "The app can be accessed outside Yunohost and anyone will be able to create a trash email adress",
|
||||||
|
"fr": "L'application sera accessible en dehors de yunohost et n'importe qui pourra y créer une adresse poubelle"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
#=================================================
|
#=================================================
|
||||||
# COMMON VARIABLES
|
# COMMON VARIABLES
|
||||||
#=================================================
|
#=================================================
|
||||||
pkg_dependencies="php-geoip"
|
pkg_dependencies="php-geoip php7.0-cli"
|
||||||
app="emailpoubelle"
|
app="emailpoubelle"
|
||||||
lang="fr_FR.UTF-8 en_US.UTF-8 it_IT.UTF-8"
|
lang="fr_FR.UTF-8 en_US.UTF-8 it_IT.UTF-8"
|
||||||
postfix=/etc/postfix/main.cf
|
|
||||||
|
|
|
@ -7,12 +7,12 @@
|
||||||
#=================================================
|
#=================================================
|
||||||
# IMPORT GENERIC HELPERS
|
# IMPORT GENERIC HELPERS
|
||||||
#=================================================
|
#=================================================
|
||||||
if [ ! -e _common.sh ]; then
|
#if [ ! -e _common.sh ]; then
|
||||||
# Get the _common.sh file if it's not in the current directory
|
# # Get the _common.sh file if it's not in the current directory
|
||||||
cp ../settings/scripts/_common.sh ./_common.sh
|
# cp ../settings/scripts/_common.sh ./_common.sh
|
||||||
chmod a+rx _common.sh
|
# chmod a+rx _common.sh
|
||||||
fi
|
#fi
|
||||||
source _common.sh
|
source ../settings/scripts/_common.sh
|
||||||
source /usr/share/yunohost/helpers
|
source /usr/share/yunohost/helpers
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
|
@ -25,6 +25,7 @@ ynh_abort_if_errors
|
||||||
#=================================================
|
#=================================================
|
||||||
# LOAD SETTINGS
|
# LOAD SETTINGS
|
||||||
#=================================================
|
#=================================================
|
||||||
|
ynh_script_progression --message="Loading installation settings..." --time --weight=1
|
||||||
|
|
||||||
app=$YNH_APP_INSTANCE_NAME
|
app=$YNH_APP_INSTANCE_NAME
|
||||||
|
|
||||||
|
@ -37,30 +38,40 @@ db_name=$(ynh_app_setting_get $app db_name)
|
||||||
#=================================================
|
#=================================================
|
||||||
# BACKUP THE APP MAIN DIR
|
# BACKUP THE APP MAIN DIR
|
||||||
#=================================================
|
#=================================================
|
||||||
|
ynh_script_progression --message="Backing up the main app directory..." --time --weight=1
|
||||||
|
|
||||||
ynh_backup "$final_path"
|
ynh_backup --src_path="$final_path"
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# BACKUP THE NGINX CONFIGURATION
|
# BACKUP THE NGINX CONFIGURATION
|
||||||
#=================================================
|
#=================================================
|
||||||
|
ynh_script_progression --message="Backing up nginx web server configuration..." --time --weight=1
|
||||||
|
|
||||||
ynh_backup "/etc/nginx/conf.d/$domain.d/$app.conf"
|
ynh_backup --src_path="/etc/nginx/conf.d/$domain.d/$app.conf"
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# BACKUP THE MYSQL DATABASE
|
# BACKUP THE MYSQL DATABASE
|
||||||
#=================================================
|
#=================================================
|
||||||
|
ynh_script_progression --message="Backing up the MySQL database..." --time --weight=1
|
||||||
|
|
||||||
ynh_mysql_dump_db "$db_name" > db.sql
|
ynh_mysql_dump_db "$db_name" > db.sql
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# BACKUP THE CRON FILE
|
# BACKUP THE CRON FILE
|
||||||
#=================================================
|
#=================================================
|
||||||
|
ynh_script_progression --message="Backing up cron configuration..." --time --weight=1
|
||||||
|
|
||||||
ynh_backup "/etc/cron.d/$app"
|
ynh_backup --src_path="/etc/cron.d/$app"
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# BACKUP POSTFIX & ALIASES
|
# BACKUP postfix conf
|
||||||
|
#=================================================
|
||||||
|
ynh_script_progression --message="Backing up postfix conf configuration..." --time --weight=1
|
||||||
|
|
||||||
|
ynh_backup "/usr/share/yunohost/hooks/conf_regen/98-postfix_emailpoubelle"
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# END OF SCRIPT
|
||||||
#=================================================
|
#=================================================
|
||||||
|
|
||||||
ynh_backup $postfix
|
ynh_script_progression --message="Backup script completed for $app. (YunoHost will then actually copy those files to the archive)." --time --last
|
||||||
ynh_backup /etc/aliases
|
|
||||||
|
|
|
@ -15,16 +15,17 @@ ynh_abort_if_errors
|
||||||
domain=$YNH_APP_ARG_DOMAIN
|
domain=$YNH_APP_ARG_DOMAIN
|
||||||
path_url=$YNH_APP_ARG_PATH
|
path_url=$YNH_APP_ARG_PATH
|
||||||
admin=$YNH_APP_ARG_ADMIN
|
admin=$YNH_APP_ARG_ADMIN
|
||||||
|
ynh_print_OFF
|
||||||
password=$YNH_APP_ARG_PASSWORD
|
password=$YNH_APP_ARG_PASSWORD
|
||||||
|
ynh_print_ON
|
||||||
is_public=$5
|
is_public=$5
|
||||||
final_path=/var/www/$app
|
final_path=/var/www/$app
|
||||||
db_user=emailPoubelle
|
db_user=emailPoubelle
|
||||||
cronline="0 */2 * * * www-data cd $final_path/www/; /usr/bin/php index.php > /dev/null 2>&1"
|
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# CHECK IF THE APP CAN BE INSTALLED WITH THESE ARGS
|
# CHECK IF THE APP CAN BE INSTALLED WITH THESE ARGS
|
||||||
#=================================================
|
#=================================================
|
||||||
|
ynh_print_info "Check settings for installation"
|
||||||
final_path=/var/www/$app
|
final_path=/var/www/$app
|
||||||
test ! -e "$final_path" || ynh_die "This path already contains a folder"
|
test ! -e "$final_path" || ynh_die "This path already contains a folder"
|
||||||
|
|
||||||
|
@ -53,22 +54,24 @@ ynh_app_setting_set $app final_path $final_path
|
||||||
#=================================================
|
#=================================================
|
||||||
#INSTALL DEPENDENCIES
|
#INSTALL DEPENDENCIES
|
||||||
#=================================================
|
#=================================================
|
||||||
|
ynh_print_info "Installing dependencies"
|
||||||
ynh_install_app_dependencies $pkg_dependencies
|
ynh_install_app_dependencies $pkg_dependencies
|
||||||
|
|
||||||
#install locale (nginx will restart at the end of the install)
|
#install locale (nginx will restart at the end of the install)
|
||||||
for i in $lang ; do
|
for i in $lang ; do
|
||||||
ynh_replace_string "# $i" "$i" /etc/locale.gen
|
ynh_replace_string "# $i" "$i" /etc/locale.gen
|
||||||
done
|
done
|
||||||
|
|
||||||
locale-gen
|
locale-gen
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
#INSTALL SOURCES
|
#INSTALL SOURCES
|
||||||
#===============================================
|
#===============================================
|
||||||
# Copy source files
|
|
||||||
sudo mkdir -p $final_path
|
ynh_print_info "Downloading sources to $final_path"
|
||||||
sudo cp -R ../src/* $final_path
|
# Download, check integrity, uncompress and patch the source from app.src
|
||||||
sudo cp ../conf/index_source.php $final_path/www/index.php
|
ynh_setup_source "$final_path"
|
||||||
|
cp ../conf/index_source.php $final_path/www/index.php
|
||||||
ynh_replace_string "Template-exemple" "$domain" $final_path/www/index.php
|
ynh_replace_string "Template-exemple" "$domain" $final_path/www/index.php
|
||||||
|
|
||||||
#Temporaire - mettre en config
|
#Temporaire - mettre en config
|
||||||
|
@ -80,13 +83,16 @@ ln -s $final_path/www/template-exemple $final_path/template-exemple
|
||||||
#===============================================
|
#===============================================
|
||||||
#SETTINGS & DATABASE
|
#SETTINGS & DATABASE
|
||||||
#===============================================
|
#===============================================
|
||||||
|
ynh_print_info "Setting database & settings"
|
||||||
|
|
||||||
#generating random password for database
|
#generating random password for database
|
||||||
|
ynh_print_OFF
|
||||||
db_pwd=$(ynh_string_random)
|
db_pwd=$(ynh_string_random)
|
||||||
ynh_app_setting_set $app mysqlpwd $db_pwd
|
ynh_app_setting_set $app mysqlpwd $db_pwd
|
||||||
|
ynh_print_ON
|
||||||
|
|
||||||
#configuring with given settings
|
#configuring with given settings
|
||||||
sudo cp $final_path/conf-dist.php $final_path/conf.php
|
cp $final_path/conf-dist.php $final_path/conf.php
|
||||||
#Update various conf : domain, database, user and password
|
#Update various conf : domain, database, user and password
|
||||||
ynh_replace_string "exemple.fr" "$domain" $final_path/conf.php
|
ynh_replace_string "exemple.fr" "$domain" $final_path/conf.php
|
||||||
ynh_replace_string "exemple.com" "$domain" $final_path/conf.php
|
ynh_replace_string "exemple.com" "$domain" $final_path/conf.php
|
||||||
|
@ -97,59 +103,54 @@ ynh_replace_string "// define('DBUSER'," " define('DBUSER'," $f
|
||||||
ynh_replace_string "// define('DBPASS'," " define('DBPASS'," $final_path/conf.php
|
ynh_replace_string "// define('DBPASS'," " define('DBPASS'," $final_path/conf.php
|
||||||
ynh_replace_string "baseMysql" "$db_user" $final_path/conf.php
|
ynh_replace_string "baseMysql" "$db_user" $final_path/conf.php
|
||||||
ynh_replace_string "utilisateurMysql" "$db_user" $final_path/conf.php
|
ynh_replace_string "utilisateurMysql" "$db_user" $final_path/conf.php
|
||||||
|
ynh_print_OFF
|
||||||
ynh_replace_string "motdepassedefou" "$db_pwd" $final_path/conf.php
|
ynh_replace_string "motdepassedefou" "$db_pwd" $final_path/conf.php
|
||||||
ynh_replace_string "define('ADMIN_PASSWORD', 'admin');" "define('ADMIN_PASSWORD', '$password');" $final_path/conf.php
|
ynh_replace_string "define('ADMIN_PASSWORD', 'admin');" "define('ADMIN_PASSWORD', '$password');" $final_path/conf.php
|
||||||
|
ynh_print_ON
|
||||||
#setting conf file not world-readable (dude, there is a plain-text password !)
|
#setting conf file not world-readable (dude, there is a plain-text password !)
|
||||||
sudo chmod o-r $final_path/conf.php
|
chmod o-r $final_path/conf.php
|
||||||
|
|
||||||
#initialize database (databasename = db_user)
|
#initialize database (databasename = db_user)
|
||||||
|
ynh_print_OFF
|
||||||
ynh_mysql_create_db $db_user $db_user $db_pwd
|
ynh_mysql_create_db $db_user $db_user $db_pwd
|
||||||
|
ynh_print_ON
|
||||||
|
|
||||||
#setting postfix to use virtual aliases file
|
#setting postfix to use virtual aliases file
|
||||||
sudo cp $postfix $postfix.emailpoubelle.bak #backup it eventually if that causes some issues
|
# Add postfix configuration hook and regen postfix conf
|
||||||
ynh_replace_string "^virtual_alias_maps" "#virtual_alias_maps" $postfix
|
cp -R ../sources/hooks/conf_regen/98-postfix_emailpoubelle /usr/share/yunohost/hooks/conf_regen/
|
||||||
echo "virtual_alias_maps = hash:$final_path/var/virtual" | sudo tee -a $postfix
|
yunohost service regen-conf postfix
|
||||||
|
|
||||||
#create the virtual aliases file
|
#create the virtual aliases file
|
||||||
sudo touch $final_path/var/virtual
|
touch $final_path/var/virtual
|
||||||
sudo postmap $final_path/var/virtual
|
postmap $final_path/var/virtual
|
||||||
sudo chown -R www-data:www-data $final_path
|
chown -R www-data:www-data $final_path
|
||||||
|
|
||||||
#create an alias for deleted junk adresses
|
#create an alias for deleted junk adresses
|
||||||
sudo cp /etc/aliases /etc/aliases.emailpoubelle.bak #backup it
|
cp /etc/aliases /etc/aliases.emailpoubelle.bak #backup it
|
||||||
sudo echo "devnull:/dev/null" | sudo tee -a /etc/aliases
|
echo "devnull:/dev/null" | tee -a /etc/aliases
|
||||||
sudo newaliases
|
newaliases
|
||||||
|
|
||||||
# Modify Nginx configuration file and copy it to Nginx conf directory
|
#adding cronjob for removing expired email addresses
|
||||||
sudo sed -i "s@YNH_EXAMPLE_PATH@$path_url@g" ../conf/nginx.conf
|
cp -a ../conf/$app.cron /etc/cron.d/$app
|
||||||
sudo sed -i "s@YNH_EXAMPLE_ALIAS@$final_path/@g" ../conf/nginx.conf
|
chmod 644 /etc/cron.d/$app
|
||||||
sudo cp ../conf/nginx.conf /etc/nginx/conf.d/$domain.d/$app.conf
|
|
||||||
|
|
||||||
# Handle root path, avoid double slash.
|
|
||||||
# Temporary fix, in waiting for an upgrade of the helper. (#361)
|
|
||||||
#path_url_slash_less=${path_url%/}
|
|
||||||
#ynh_replace_string "__PATH__/" "$path_url_slash_less/" "../conf/nginx.conf"
|
|
||||||
#ynh_replace_string "__FINALPATH__/" "$final_path/www" "../conf/nginx.conf"
|
|
||||||
# Create a dedicated nginx config
|
# Create a dedicated nginx config
|
||||||
#ynh_add_nginx_config
|
ynh_add_nginx_config
|
||||||
|
|
||||||
# If app is public, add url to SSOWat conf as skipped_uris
|
#=================================================
|
||||||
if [ "$is_public" = "Yes" ];
|
# SETUP SSOWAT
|
||||||
|
#=================================================
|
||||||
|
|
||||||
|
# Make app public if necessary
|
||||||
|
if [ $is_public -eq 1 ]
|
||||||
then
|
then
|
||||||
sudo yunohost app setting $app skipped_uris -v "/"
|
# unprotected_uris allows SSO credentials to be passed anyway.
|
||||||
|
ynh_app_setting_set $app unprotected_uris "/"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
#A verifier? A integrer dans dépendances?
|
#=================================================
|
||||||
#adding php-cli for cron
|
# RELOAD SERVICES
|
||||||
sudo apt-get update -qq
|
#=================================================
|
||||||
sudo apt-get install -yqq php5-cli
|
ynh_systemd_action --service_name=nginx --action=reload
|
||||||
#adding cronjob for removing expired email addresses
|
ynh_systemd_action --service_name=postfix --action=reload
|
||||||
sudo echo "$cronline" | sudo tee -a /etc/cron.d/emailpoubelle
|
service php* reload
|
||||||
sudo chmod 644 /etc/cron.d/emailpoubelle
|
|
||||||
|
|
||||||
# Restart services
|
|
||||||
systemctl reload nginx
|
|
||||||
systemctl reload postfix
|
|
||||||
sudo service php* reload
|
|
||||||
sudo yunohost app ssowatconf
|
|
||||||
|
|
||||||
|
|
107
scripts/remove
|
@ -1,33 +1,92 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# GENERIC START
|
||||||
|
#=================================================
|
||||||
|
# IMPORT GENERIC HELPERS
|
||||||
|
#=================================================
|
||||||
|
|
||||||
source _common.sh
|
source _common.sh
|
||||||
source /usr/share/yunohost/helpers
|
source /usr/share/yunohost/helpers
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# LOAD SETTINGS
|
||||||
|
#=================================================
|
||||||
|
ynh_print_info --message="Loading installation settings..."
|
||||||
|
|
||||||
domain=$(ynh_app_setting_get $app domain)
|
app=$YNH_APP_INSTANCE_NAME
|
||||||
db_name=$(ynh_app_setting_get $app db_name)
|
|
||||||
db_user==$db_name
|
|
||||||
root_pwd=$(sudo cat /etc/yunohost/mysql)
|
|
||||||
postfix=/etc/postfix/main.cf
|
|
||||||
|
|
||||||
#remove php-geoip
|
domain=$(ynh_app_setting_get --app=$app --key=domain)
|
||||||
|
db_name=$(ynh_app_setting_get --app=$app --key=db_name)
|
||||||
|
db_user=$db_name
|
||||||
|
final_path=$(ynh_app_setting_get --app=$app --key=final_path)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# REMOVE THE MYSQL DATABASE
|
||||||
|
#=================================================
|
||||||
|
ynh_print_info --message="Removing the MySQL database"
|
||||||
|
|
||||||
|
# Remove a database if it exists, along with the associated user
|
||||||
|
ynh_mysql_remove_db --db_user=$db_user --db_name=$db_name
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# REMOVE DEPENDENCIES
|
||||||
|
#=================================================
|
||||||
|
ynh_print_info --message="Removing dependencies"
|
||||||
|
|
||||||
|
# Remove metapackage and its dependencies
|
||||||
ynh_remove_app_dependencies
|
ynh_remove_app_dependencies
|
||||||
#removing emailpoubelle database
|
|
||||||
ynh_mysql_remove_db $db_user $db_name
|
|
||||||
#removing emailpoubelle directory
|
|
||||||
sudo rm -rf /var/www/emailpoubelle
|
|
||||||
#removing nginx conf
|
|
||||||
sudo rm -f /etc/nginx/conf.d/$domain.d/emailpoubelle.conf
|
|
||||||
#removing aliases
|
|
||||||
sudo sed -i "/devnull:\/dev\/null/d" /etc/aliases
|
|
||||||
sudo newaliases
|
|
||||||
#efface le nouvel virtual alias
|
|
||||||
sudo sed -i "/virtual_alias_maps = hash:\/var\/www\/emailpoubelle\/var\/virtual/d" $postfix
|
|
||||||
#reactive le nouveau
|
|
||||||
ynh_replace_string "^#virtual_alias_maps" "virtual_alias_maps" $postfix
|
|
||||||
|
|
||||||
#remove cronjob
|
|
||||||
sudo rm -f /etc/cron.d/emailpoubelle
|
#=================================================
|
||||||
sudo service postfix reload
|
# REMOVE APP MAIN DIR
|
||||||
sudo service nginx reload
|
#=================================================
|
||||||
sudo yunohost app ssowatconf
|
ynh_print_info --message="Removing app main directory"
|
||||||
|
|
||||||
|
# Remove the app directory securely
|
||||||
|
ynh_secure_remove --file="$final_path"
|
||||||
|
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# REMOVE NGINX CONFIGURATION
|
||||||
|
#=================================================
|
||||||
|
ynh_print_info --message="Removing nginx web server configuration"
|
||||||
|
|
||||||
|
# Remove the dedicated nginx config
|
||||||
|
ynh_remove_nginx_config
|
||||||
|
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# SPECIFIC REMOVE
|
||||||
|
#=================================================
|
||||||
|
# REMOVE THE CRON FILE
|
||||||
|
#=================================================
|
||||||
|
|
||||||
|
ynh_secure_remove --file="/etc/cron.d/$app"
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
#removing aliases
|
||||||
|
#=================================================
|
||||||
|
ynh_replace_string "devnull:/dev/null" "" /etc/aliases
|
||||||
|
newaliases
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# Remove hook for postfix conf
|
||||||
|
#=================================================
|
||||||
|
|
||||||
|
ynh_secure_remove "/usr/share/yunohost/hooks/conf_regen/98-postfix_emailpoubelle"
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# GENERIC FINALIZATION
|
||||||
|
#=================================================
|
||||||
|
# REMOVE DEDICATED USER
|
||||||
|
#=================================================
|
||||||
|
|
||||||
|
yunohost service regen-conf postfix
|
||||||
|
ynh_systemd_action --service_name=nginx --action=reload
|
||||||
|
ynh_systemd_action --service_name=postfix --action=reload
|
||||||
|
|
||||||
|
|
|
@ -7,12 +7,12 @@
|
||||||
#=================================================
|
#=================================================
|
||||||
# IMPORT GENERIC HELPERS
|
# IMPORT GENERIC HELPERS
|
||||||
#=================================================
|
#=================================================
|
||||||
if [ ! -e _common.sh ]; then
|
#if [ ! -e _common.sh ]; then
|
||||||
# Get the _common.sh file if it's not in the current directory
|
# # Get the _common.sh file if it's not in the current directory
|
||||||
cp ../settings/scripts/_common.sh ./_common.sh
|
# cp ../settings/scripts/_common.sh ./_common.sh
|
||||||
chmod a+rx _common.sh
|
# chmod a+rx _common.sh
|
||||||
fi
|
#fi
|
||||||
source _common.sh
|
source ../settings/scripts/_common.sh
|
||||||
source /usr/share/yunohost/helpers
|
source /usr/share/yunohost/helpers
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
|
@ -25,6 +25,7 @@ ynh_abort_if_errors
|
||||||
#=================================================
|
#=================================================
|
||||||
# LOAD SETTINGS
|
# LOAD SETTINGS
|
||||||
#=================================================
|
#=================================================
|
||||||
|
ynh_script_progression --message="Loading settings..." --time --weight=1
|
||||||
|
|
||||||
app=$YNH_APP_INSTANCE_NAME
|
app=$YNH_APP_INSTANCE_NAME
|
||||||
|
|
||||||
|
@ -32,16 +33,21 @@ domain=$(ynh_app_setting_get $app domain)
|
||||||
path_url=$(ynh_app_setting_get $app path)
|
path_url=$(ynh_app_setting_get $app path)
|
||||||
final_path=$(ynh_app_setting_get $app final_path)
|
final_path=$(ynh_app_setting_get $app final_path)
|
||||||
db_name=$(ynh_app_setting_get $app db_name)
|
db_name=$(ynh_app_setting_get $app db_name)
|
||||||
|
admin=$(ynh_app_setting_get $app admin)
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# CHECK IF THE APP CAN BE RESTORED
|
# CHECK IF THE APP CAN BE RESTORED
|
||||||
#=================================================
|
#=================================================
|
||||||
|
ynh_script_progression --message="Validating restoration parameters..." --time --weight=1
|
||||||
|
|
||||||
ynh_webpath_available $domain $path_url \
|
ynh_webpath_available $domain $path_url \
|
||||||
|| ynh_die "Path not available: ${domain}${path_url}"
|
|| ynh_die "Path not available: ${domain}${path_url}"
|
||||||
test ! -d $final_path \
|
test ! -d $final_path \
|
||||||
|| ynh_die "There is already a directory: $final_path "
|
|| ynh_die "There is already a directory: $final_path "
|
||||||
|
|
||||||
|
# Check user
|
||||||
|
ynh_user_exists "$admin"
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# STANDARD RESTORATION STEPS
|
# STANDARD RESTORATION STEPS
|
||||||
#=================================================
|
#=================================================
|
||||||
|
@ -53,12 +59,14 @@ ynh_restore_file "/etc/nginx/conf.d/$domain.d/$app.conf"
|
||||||
#=================================================
|
#=================================================
|
||||||
# RESTORE THE APP MAIN DIR
|
# RESTORE THE APP MAIN DIR
|
||||||
#=================================================
|
#=================================================
|
||||||
|
ynh_script_progression --message="Restoring the app main directory..." --time --weight=1
|
||||||
|
|
||||||
ynh_restore_file "$final_path"
|
ynh_restore_file "$final_path"
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# RESTORE THE MYSQL DATABASE
|
# RESTORE THE MYSQL DATABASE
|
||||||
#=================================================
|
#=================================================
|
||||||
|
ynh_script_progression --message="Restoring the MySQL database..." --time --weight=1
|
||||||
|
|
||||||
db_pwd=$(ynh_app_setting_get $app mysqlpwd)
|
db_pwd=$(ynh_app_setting_get $app mysqlpwd)
|
||||||
ynh_mysql_setup_db $db_name $db_name $db_pwd
|
ynh_mysql_setup_db $db_name $db_name $db_pwd
|
||||||
|
@ -69,6 +77,7 @@ ynh_mysql_connect_as $db_name $db_pwd $db_name < ./db.sql
|
||||||
#=================================================
|
#=================================================
|
||||||
# REINSTALL DEPENDENCIES
|
# REINSTALL DEPENDENCIES
|
||||||
#=================================================
|
#=================================================
|
||||||
|
ynh_script_progression --message="Reinstalling dependencies..." --time --weight=1
|
||||||
|
|
||||||
# Define and install dependencies
|
# Define and install dependencies
|
||||||
ynh_install_app_dependencies $pkg_dependencies
|
ynh_install_app_dependencies $pkg_dependencies
|
||||||
|
@ -78,15 +87,26 @@ for i in $lang ; do
|
||||||
done
|
done
|
||||||
locale-gen
|
locale-gen
|
||||||
|
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# RESTORE POSTFIX ALIASES
|
# RESTORE POSTFIX ALIASES
|
||||||
#=================================================
|
#=================================================
|
||||||
|
ynh_script_progression --message="Restore Postfix aliases..." --time --weight=1
|
||||||
|
|
||||||
ynh_restore_file $postfix
|
ynh_restore_file "/usr/share/yunohost/hooks/conf_regen/98-postfix_emailpoubelle"
|
||||||
|
yunohost service regen-conf postfix
|
||||||
|
|
||||||
|
#create an alias for deleted junk adresses
|
||||||
|
if ! grep -q "devnull:/dev/null" /etc/aliases ; then
|
||||||
|
cp /etc/aliases /etc/aliases.emailpoubelle.bak #backup it
|
||||||
|
echo "devnull:/dev/null" | tee -a /etc/aliases
|
||||||
|
newaliases
|
||||||
|
fi
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# RESTORE THE CRON FILE
|
# RESTORE THE CRON FILE
|
||||||
#=================================================
|
#=================================================
|
||||||
|
ynh_script_progression --message="Reinstall cron job" --time --weight=1
|
||||||
|
|
||||||
ynh_restore_file "/etc/cron.d/$app"
|
ynh_restore_file "/etc/cron.d/$app"
|
||||||
|
|
||||||
|
@ -95,9 +115,15 @@ ynh_restore_file "/etc/cron.d/$app"
|
||||||
#=================================================
|
#=================================================
|
||||||
# RELOAD NGINX & ALIASES
|
# RELOAD NGINX & ALIASES
|
||||||
#=================================================
|
#=================================================
|
||||||
sudo newaliases
|
ynh_script_progression --message="Reloading nginx web server and php-fpm..." --time --weight=1
|
||||||
systemctl reload nginx
|
|
||||||
systemctl restart php7.0-fpm
|
|
||||||
systemctl reload postfix
|
|
||||||
|
|
||||||
|
postmap $final_path/var/virtual
|
||||||
|
ynh_systemd_action --service_name=php7.0-fpm --action=restart
|
||||||
|
ynh_systemd_action --service_name=nginx --action=reload
|
||||||
|
ynh_systemd_action --service_name=postfix --action=reload
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# END OF SCRIPT
|
||||||
|
#=================================================
|
||||||
|
|
||||||
|
ynh_script_progression --message="Restoration completed for $app" --time --last
|
227
scripts/upgrade
|
@ -7,109 +7,194 @@
|
||||||
#=================================================
|
#=================================================
|
||||||
source _common.sh
|
source _common.sh
|
||||||
source /usr/share/yunohost/helpers
|
source /usr/share/yunohost/helpers
|
||||||
|
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# LOAD SETTINGS
|
# LOAD SETTINGS
|
||||||
#=================================================
|
#=================================================
|
||||||
|
|
||||||
app=$YNH_APP_INSTANCE_NAME
|
app=$YNH_APP_INSTANCE_NAME
|
||||||
|
|
||||||
domain=$(ynh_app_setting_get $app domain)
|
domain=$(ynh_app_setting_get $app domain)
|
||||||
path_url=$(ynh_app_setting_get $app path)
|
path_url=$(ynh_app_setting_get $app path)
|
||||||
|
is_public=$(ynh_app_setting_get --app=$app --key=is_public)
|
||||||
admin=$(ynh_app_setting_get $app admin)
|
admin=$(ynh_app_setting_get $app admin)
|
||||||
final_path=$(ynh_app_setting_get $app final_path)
|
final_path=$(ynh_app_setting_get $app final_path)
|
||||||
db_name=$(ynh_app_setting_get $app db_name)
|
db_name=$(ynh_app_setting_get $app db_name)
|
||||||
|
|
||||||
#check for matlink's version
|
#=================================================
|
||||||
cat /etc/yunohost/apps/$app/status.json | grep "matlink"
|
# CHECK VERSION
|
||||||
if [[ $?==0 ]]; then
|
#=================================================
|
||||||
#add missing info in settings
|
|
||||||
final_path=/var/www/$app
|
|
||||||
db_name=emailPoubelle
|
|
||||||
ynh_app_setting_set $app db_name $db_name
|
|
||||||
ynh_app_setting_set $app final_path $final_path
|
|
||||||
#install geoip dependencies
|
|
||||||
ynh_install_app_dependencies $pkg_dependencies
|
|
||||||
#install locale packages
|
|
||||||
for i in $lang ; do
|
|
||||||
ynh_replace_string "# $i" "$i" /etc/locale.gen
|
|
||||||
done
|
|
||||||
locale-gen
|
|
||||||
#change folder locale => lang as per src2.0
|
|
||||||
rm -rf $final_path/locale
|
|
||||||
mkdir -p $final_path/lang
|
|
||||||
#add new index.php
|
|
||||||
cp ../conf/index_source.php $final_path/www/index.php
|
|
||||||
|
|
||||||
#switch from previous (modified) conf.php to new one (emailpoubelle original)
|
### This helper will compare the version of the currently installed app and the version of the upstream package.
|
||||||
cp ../src/conf-dist.php $final_path/conf-dist.new.php
|
### $upgrade_type can have 2 different values
|
||||||
#insert domain in line 24, DB in line 31, DBUSER in line 32, etc.
|
### - UPGRADE_APP if the upstream app version has changed
|
||||||
rep=$(cat $final_path/conf.php | grep "^[^//]" | grep "define('DOMAIN',")
|
### - UPGRADE_PACKAGE if only the YunoHost package has changed
|
||||||
sed -i "24s/.*/${rep}/" $final_path/conf-dist.new.php
|
### ynh_check_app_version_changed will stop the upgrade if the app is up to date.
|
||||||
rep=$(cat $final_path/conf.php | grep "^[^//]" | grep "define('DB',")
|
### UPGRADE_APP should be used to upgrade the core app only if there's an upgrade to do.
|
||||||
sed -i "31s/.*/${rep}/" $final_path/conf-dist.new.php
|
### Not used yet in this script
|
||||||
rep=$(cat $final_path/conf.php | grep "^[^//]" | grep "define('DBUSER',")
|
upgrade_type=$(ynh_check_app_version_changed)
|
||||||
sed -i "32s/.*/${rep}/" $final_path/conf-dist.new.php
|
|
||||||
rep=$(cat $final_path/conf.php | grep "^[^//]" | grep "define('DBPASS',")
|
|
||||||
sed -i "33s/.*/${rep}/" $final_path/conf-dist.new.php
|
|
||||||
#replace old conf and process with install command
|
|
||||||
mv $final_path/conf.php $final_path/conf.php.old
|
|
||||||
mv $final_path/conf-dist.new.php $final_path/conf.php
|
|
||||||
ynh_replace_string "exemple.fr" "$domain" $final_path/conf.php
|
|
||||||
ynh_replace_string "exemple.com" "$domain" $final_path/conf.php
|
|
||||||
ynh_replace_string "define('DB', 'sqlite:'" "//define('DB', 'sqlite:'" $final_path/conf.php
|
|
||||||
ynh_replace_string "define('ALIASLIMITBYMAIL" "//define('ALIASLIMITBYMAIL" $final_path/conf.php
|
|
||||||
#setting conf file not world-readable (dude, there is a plain-text password !)
|
|
||||||
sudo chmod o-r $final_path/conf.php
|
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# ENSURE DOWNWARD COMPATIBILITY
|
||||||
|
#=================================================
|
||||||
|
|
||||||
|
# Fix is_public as a boolean value
|
||||||
|
if [ "$is_public" = "Yes" ]; then
|
||||||
|
ynh_app_setting_set --app=$app --key=is_public --value=1
|
||||||
|
is_public=1
|
||||||
|
elif [ "$is_public" = "No" ]; then
|
||||||
|
ynh_app_setting_set --app=$app --key=is_public --value=0
|
||||||
|
is_public=0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
#change nginx.conf as per https://forum.yunohost.org/t/need-help-on-nginx-conf-cannot-access-resources/6342
|
# If db_name doesn't exist, create it
|
||||||
ynh_replace_string "alias $finalpath/www/ ;" "alias $finalpath/ ;" /etc/yunohost/$domain.d/$app.conf
|
if [ -z "$db_name" ]; then
|
||||||
ynh_replace_string "index index.php;" "index www/ndex.php;" /etc/yunohost/$domain.d/$app.conf
|
db_name=$(ynh_sanitize_dbid --db_name=$app)
|
||||||
|
ynh_app_setting_set --app=$app --key=db_name --value=$db_name
|
||||||
|
fi
|
||||||
|
|
||||||
#correct template name in index.php
|
# If final_path doesn't exist, create it
|
||||||
ynh_replace_string "Template-exemple" "$domain" $final_path/www/index.php
|
if [ -z "$final_path" ]; then
|
||||||
|
final_path=/var/www/$app
|
||||||
|
ynh_app_setting_set --app=$app --key=final_path --value=$final_path
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# BACKUP BEFORE UPGRADE THEN ACTIVE TRAP
|
||||||
|
#=================================================
|
||||||
|
|
||||||
|
# Backup the current version of the app
|
||||||
|
ynh_backup_before_upgrade
|
||||||
|
ynh_clean_setup () {
|
||||||
|
# restore it if the upgrade fails
|
||||||
|
ynh_restore_upgradebackup
|
||||||
|
}
|
||||||
|
# Exit if an error occurs during the execution of the script
|
||||||
|
ynh_abort_if_errors
|
||||||
|
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# CHECK THE PATH
|
||||||
|
#=================================================
|
||||||
|
# Normalize the URL path syntax
|
||||||
|
path_url=$(ynh_normalize_url_path $path_url)
|
||||||
|
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
#check for matlink's version - DEPRECATED - uninstall & reinstall
|
||||||
|
#=================================================
|
||||||
|
#deprecated - not maintained for more than a year...
|
||||||
|
#cat /etc/yunohost/apps/$app/status.json | grep "matlink"
|
||||||
|
#if [[ $?==0 ]]; then
|
||||||
|
#add missing info in settings
|
||||||
|
# final_path=/var/www/$app
|
||||||
|
# db_name=emailPoubelle
|
||||||
|
# ynh_app_setting_set $app db_name $db_name
|
||||||
|
# ynh_app_setting_set $app final_path $final_path
|
||||||
|
#install geoip dependencies
|
||||||
|
# ynh_install_app_dependencies $pkg_dependencies
|
||||||
|
#install locale packages
|
||||||
|
# for i in $lang ; do
|
||||||
|
# ynh_replace_string "# $i" "$i" /etc/locale.gen
|
||||||
|
# done
|
||||||
|
# locale-gen
|
||||||
|
#change folder locale => lang as per src2.0
|
||||||
|
# rm -rf $final_path/locale
|
||||||
|
# mkdir -p $final_path/lang
|
||||||
|
#add new index.php
|
||||||
|
# cp ../conf/index_source.php $final_path/www/index.php
|
||||||
|
#switch from previous (modified) conf.php to new one (emailpoubelle original)
|
||||||
|
# cp ../src/conf-dist.php $final_path/conf-dist.new.php
|
||||||
|
#insert domain in line 24, DB in line 31, DBUSER in line 32, etc.
|
||||||
|
# rep=$(cat $final_path/conf.php | grep "^[^//]" | grep "define('DOMAIN',")
|
||||||
|
# sed -i "24s/.*/${rep}/" $final_path/conf-dist.new.php
|
||||||
|
# rep=$(cat $final_path/conf.php | grep "^[^//]" | grep "define('DB',")
|
||||||
|
# sed -i "31s/.*/${rep}/" $final_path/conf-dist.new.php
|
||||||
|
# rep=$(cat $final_path/conf.php | grep "^[^//]" | grep "define('DBUSER',")
|
||||||
|
# sed -i "32s/.*/${rep}/" $final_path/conf-dist.new.php
|
||||||
|
# rep=$(cat $final_path/conf.php | grep "^[^//]" | grep "define('DBPASS',")
|
||||||
|
# sed -i "33s/.*/${rep}/" $final_path/conf-dist.new.php
|
||||||
|
#replace old conf and process with install command
|
||||||
|
# mv $final_path/conf.php $final_path/conf.php.old
|
||||||
|
# mv $final_path/conf-dist.new.php $final_path/conf.php
|
||||||
|
# ynh_replace_string "define('DB', 'sqlite:'" "//define('DB', 'sqlite:'" $final_path/conf.php
|
||||||
|
# ynh_replace_string "define('ALIASLIMITBYMAIL" "//define('ALIASLIMITBYMAIL" $final_path/conf.php
|
||||||
|
# #setting conf file not world-readable (dude, there is a plain-text password !)
|
||||||
|
# sudo chmod o-r $final_path/conf.php
|
||||||
|
#fi
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# STANDARD UPGRADE STEPS
|
||||||
|
#=================================================
|
||||||
|
# NGINX CONFIGURATION
|
||||||
|
#=================================================
|
||||||
|
ynh_print_info "Upgrading nginx web server configuration..."
|
||||||
|
|
||||||
|
ynh_backup_if_checksum_is_different "/etc/nginx/conf.d/$domain.d/$app.conf"
|
||||||
|
|
||||||
|
# Create a dedicated nginx config
|
||||||
|
ynh_add_nginx_config
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# UPGRADE DEPENDENCIES
|
||||||
|
#=================================================
|
||||||
|
ynh_print_info "Installing dependencies"
|
||||||
|
ynh_install_app_dependencies $pkg_dependencies
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
#UPDATE SETTINGS
|
||||||
|
#=================================================
|
||||||
|
|
||||||
#mysqlpwd setting was implemented in ynh2 - check if saved and if not implement
|
#mysqlpwd setting was implemented in ynh2 - check if saved and if not implement
|
||||||
db_pass=$(ynh_app_setting_get $app mysqlpwd)
|
db_pass=$(ynh_app_setting_get $app mysqlpwd)
|
||||||
if [ -z $db_pass]; then
|
if [ -z $db_pass ]; then
|
||||||
#c'est moche mais ça fera bien l'affaire - en deux lignes sinon pb en fonction du type de shell
|
#c'est moche mais ça fera bien l'affaire - en deux lignes sinon pb en fonction du type de shell
|
||||||
t=$(cat /var/www/$app/conf.php | grep DBPASS)
|
t=$(cat /var/www/$app/conf.php | grep DBPASS)
|
||||||
db_pass=${t:26:24}
|
db_pass=${t:26:24}
|
||||||
ynh_app_setting_set $app mysqlpwd $db_pass
|
ynh_app_setting_set $app mysqlpwd $db_pass
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Copy source files
|
#=================================================
|
||||||
cp -a ../src/bin/. $final_path/bin
|
#INSTALL SOURCES
|
||||||
cp -a ../src/lib/. $final_path/lib
|
#===============================================
|
||||||
cp -a ../src/lang/. $final_path/lang
|
|
||||||
cp -a ../src/www/. $final_path/www
|
ynh_print_info "Downloading sources to $final_path"
|
||||||
cp ../src/emailPoubelle.php $final_path/emailPoubelle.php
|
# Download, check integrity, uncompress and patch the source from app.src
|
||||||
cp ../src/emailPoubelleAdmin.php $final_path/emailPoubelleAdmin.php
|
ynh_setup_source "$final_path"
|
||||||
cp ../src/README.md $final_path/README.md
|
|
||||||
cp ../src/CHANGELOG.md $final_path/CHANGELOG.md
|
|
||||||
cp ../src/conf-dist.php $final_path/conf-dist.php
|
|
||||||
cp ../conf/index_source.php $final_path/www/index.php
|
cp ../conf/index_source.php $final_path/www/index.php
|
||||||
test -e $final_path/template-exemple
|
test -e $final_path/template-exemple
|
||||||
if [[ ! $? -eq 0 ]]; then
|
if [[ ! $? -eq 0 ]]; then
|
||||||
ln -s $final_path/www/template-exemple $final_path/template-exemple
|
ln -s $final_path/www/template-exemple $final_path/template-exemple
|
||||||
fi
|
fi
|
||||||
#Temporaire - mettre en config
|
|
||||||
ln -s $final_path/lang/fr $final_path/lang/fr_FR
|
|
||||||
ln -s $final_path/lang/it $final_path/lang/it_IT
|
|
||||||
|
|
||||||
|
#Temporaire - mettre en config
|
||||||
|
if [ ! -e $final_path/lang/fr_FR ]; then
|
||||||
|
ln -s $final_path/lang/fr $final_path/lang/fr_FR
|
||||||
|
fi
|
||||||
|
if [ ! -e $final_path/lang/it_IT ]; then
|
||||||
|
ln -s $final_path/lang/it $final_path/lang/it_IT
|
||||||
|
fi
|
||||||
|
|
||||||
|
#setting postfix to use virtual aliases file
|
||||||
|
# Add postfix configuration hook and regen postfix conf
|
||||||
|
#setting postfix to use virtual aliases file
|
||||||
|
# Add postfix configuration hook and regen postfix conf
|
||||||
|
cp -R ../sources/hooks/conf_regen/98-postfix_emailpoubelle /usr/share/yunohost/hooks/conf_regen/
|
||||||
|
mv /etc/postfix/main.cf /etc/postfix/main.cf.emailpoubelle.bak
|
||||||
|
yunohost service regen-conf postfix -f
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# SECURE FILES AND DIRECTORIES
|
||||||
|
#=================================================
|
||||||
|
|
||||||
chown -R www-data:www-data $final_path
|
chown -R www-data:www-data $final_path
|
||||||
|
|
||||||
#adding php-cli for cron
|
|
||||||
#sudo apt-get update -qq
|
|
||||||
#sudo apt-get install -yqq php5-cli
|
|
||||||
#adding cronjob for removing expired email addresses
|
|
||||||
#sudo echo "$cronline" | sudo tee -a /etc/cron.d/emailpoubelle
|
|
||||||
#sudo chmod 644 /etc/cron.d/emailpoubelle
|
|
||||||
|
|
||||||
# Restart services
|
#=================================================
|
||||||
systemctl restart php7.0-fpm
|
# RELOAD SERVICES
|
||||||
systemctl reload nginx
|
#=================================================
|
||||||
systemctl reload postfix
|
ynh_systemd_action --service_name=php7.0-fpm --action=restart
|
||||||
sudo yunohost app ssowatconf
|
ynh_systemd_action --service_name=nginx --action=reload
|
||||||
|
ynh_systemd_action --service_name=postfix --action=reload
|
||||||
|
|
||||||
|
|
44
sources/hooks/conf_regen/98-postfix_emailpoubelle
Normal file
|
@ -0,0 +1,44 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
source /usr/share/yunohost/helpers
|
||||||
|
final_path=$(ynh_app_setting_get emailpoubelle final_path)
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
do_pre_regen() {
|
||||||
|
pending_dir=$1
|
||||||
|
|
||||||
|
# Patch postfix conf
|
||||||
|
postfix_main_cf="${pending_dir}/../postfix/etc/postfix/main.cf"
|
||||||
|
|
||||||
|
# FIXME : check this file actually exists to not crash when only running this
|
||||||
|
# hook alone
|
||||||
|
|
||||||
|
sudo sed -e "s@^virtual_alias_maps\s*=\s*\(.*\)@virtual_alias_maps = hash:$final_path/var/virtual,\1@"\
|
||||||
|
-i $postfix_main_cf
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
do_post_regen() {
|
||||||
|
|
||||||
|
regen_conf_files=$1
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
FORCE=${2:-0}
|
||||||
|
DRY_RUN=${3:-0}
|
||||||
|
|
||||||
|
case "$1" in
|
||||||
|
pre)
|
||||||
|
do_pre_regen $4
|
||||||
|
;;
|
||||||
|
post)
|
||||||
|
do_post_regen $4
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "hook called with unknown argument \`$1'" >&2
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
exit 0
|
9
src/.gitignore
vendored
|
@ -1,9 +0,0 @@
|
||||||
/postfix
|
|
||||||
virtual
|
|
||||||
virtual.db
|
|
||||||
checkupdate
|
|
||||||
conf.php
|
|
||||||
test*
|
|
||||||
var/database*
|
|
||||||
var/.htaccess
|
|
||||||
devToProd.sh
|
|
|
@ -1,66 +0,0 @@
|
||||||
## X (future)
|
|
||||||
|
|
||||||
- support postfix-mysql (not plain text virtual file)
|
|
||||||
- javascript checkupgrade in admin page
|
|
||||||
|
|
||||||
## 2.0 (2018-11)
|
|
||||||
|
|
||||||
- Internationnalisation, traduction possible (fichier source dans lang/messages.pot)
|
|
||||||
- Traduction anglais / français (merci à https://github.com/matlink pour l'anglais)
|
|
||||||
|
|
||||||
## 1.4 (2018-03-19)
|
|
||||||
|
|
||||||
- Interface admin avec stats, top user, possibilité de nettoyer, blacklister...
|
|
||||||
|
|
||||||
## 1.2 (2018-03-19)
|
|
||||||
|
|
||||||
- Ne pas permettre la création d'un alias depuis un alias
|
|
||||||
- Limiter le nombre d'alias possible
|
|
||||||
|
|
||||||
## 1.0.1 (2014-01-06)
|
|
||||||
|
|
||||||
Bugfixes:
|
|
||||||
|
|
||||||
- fixe ListeAlias no send email if error
|
|
||||||
|
|
||||||
## 1.0 (2013-10-02)
|
|
||||||
|
|
||||||
Features:
|
|
||||||
|
|
||||||
- add database with PDO (remove plain text)
|
|
||||||
support mysql, sqlite, postgresql...
|
|
||||||
- add multi-domain support
|
|
||||||
- add memory email (with cookies)
|
|
||||||
- add life for alias (optional)
|
|
||||||
- add comment for alias (optional)
|
|
||||||
- add template for example
|
|
||||||
- add javascript in form (noscript compatible)
|
|
||||||
- add cron for expir life email
|
|
||||||
- add maintenance mode
|
|
||||||
- add basic form anti-spam
|
|
||||||
- add disable/enable alias function
|
|
||||||
- pass UTF-8 encode
|
|
||||||
|
|
||||||
## 0.3 (2013-08-08) (without database)
|
|
||||||
|
|
||||||
- add blacklist.txt regex
|
|
||||||
- add function "alias list"
|
|
||||||
- add shell statistique script
|
|
||||||
- add readme
|
|
||||||
|
|
||||||
## 0.2 (2012-08-05)
|
|
||||||
|
|
||||||
Features:
|
|
||||||
|
|
||||||
- add aliasdeny.txt regex
|
|
||||||
- migrate to Net_DNS2
|
|
||||||
- check email exist with DNS (check MX)
|
|
||||||
|
|
||||||
Bugfixes:
|
|
||||||
|
|
||||||
- fixe http://forge.zici.fr/p/emailpoubelle-php/issues/4/
|
|
||||||
|
|
||||||
## 0.1b (2012-03-20)
|
|
||||||
|
|
||||||
- start project
|
|
||||||
|
|
|
@ -1,44 +0,0 @@
|
||||||
emailPoubelle.php
|
|
||||||
=============
|
|
||||||
|
|
||||||
Un script pour un petit service d'email jetable
|
|
||||||
|
|
||||||
* [Démo](http://poubelle.zici.fr/)
|
|
||||||
* [Page du projet](http://forge.zici.fr/p/emailpoubelle-php/)
|
|
||||||
* [Download](http://forge.zici.fr/p/emailpoubelle-php/source/download/master/)
|
|
||||||
* [Bug report](http://forge.zici.fr/p/emailpoubelle-php/issues/)
|
|
||||||
|
|
||||||
Installation
|
|
||||||
-----------
|
|
||||||
|
|
||||||
Installation des dépendances :
|
|
||||||
|
|
||||||
pear install Net_DNS2
|
|
||||||
|
|
||||||
Télécharger & décompresser les sources :
|
|
||||||
|
|
||||||
mkdir -p /www/emailPoubelle/postfix
|
|
||||||
cd /tmp
|
|
||||||
wget -O emailPoubelle.zip https://framagit.org/kepon/emailPoubellePhp/-/archive/master/emailPoubellePhp-master.zip
|
|
||||||
unzip emailPoubelle.zip
|
|
||||||
cp -r emailpoubelle-php-master/* /var/www/emailPoubelle
|
|
||||||
|
|
||||||
Configure apache virtualhost (ou autres serveur http)
|
|
||||||
[...]
|
|
||||||
DocumentRoot /var/www/emailPoubelle/www
|
|
||||||
[...]
|
|
||||||
|
|
||||||
Configurer Postfix :
|
|
||||||
|
|
||||||
vi /etc/postfix/main.cf
|
|
||||||
[...]
|
|
||||||
virtual_alias_maps = hash:/www/emailPoubelle/var/virtual
|
|
||||||
touch /www/emailPoubelle/var/virtual
|
|
||||||
/usr/sbin/postmap /www/emailPoubelle/var/virtual
|
|
||||||
chown www-data /www/emailPoubelle/var/virtual
|
|
||||||
chown www-data /www/emailPoubelle/var/virtual.db
|
|
||||||
|
|
||||||
Ajouter dans le fichier /etc/aliases le devnull
|
|
||||||
|
|
||||||
echo "devnull: /dev/null" >> /etc/aliases
|
|
||||||
newaliases
|
|
|
@ -1,80 +0,0 @@
|
||||||
#!/usr/bin/php
|
|
||||||
<?php
|
|
||||||
include('../conf.php');
|
|
||||||
|
|
||||||
# pour migrer du plain-text vers la base de donnée
|
|
||||||
|
|
||||||
// Connect DB
|
|
||||||
try {
|
|
||||||
if (preg_match('/^sqlite/', DB)) {
|
|
||||||
$dbco = new PDO(DB);
|
|
||||||
} else {
|
|
||||||
$dbco = new PDO(DB, DBUSER, DBPASS);
|
|
||||||
}
|
|
||||||
$dbco->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
|
|
||||||
} catch ( PDOException $e ) {
|
|
||||||
die('Connexion à la base '.$e->getMessage());
|
|
||||||
}
|
|
||||||
|
|
||||||
// postmap command
|
|
||||||
function UpdateVirtualDB_migrateTo10() {
|
|
||||||
global $dbco;
|
|
||||||
try {
|
|
||||||
$selectcmd = $dbco->prepare("SELECT alias, email
|
|
||||||
FROM ".DBTABLEPREFIX."alias
|
|
||||||
WHERE status = 5
|
|
||||||
ORDER BY id ASC");
|
|
||||||
$selectcmd->execute();
|
|
||||||
} catch ( PDOException $e ) {
|
|
||||||
echo "DB error : ", $e->getMessage();
|
|
||||||
die();
|
|
||||||
}
|
|
||||||
$file_content=null;
|
|
||||||
while($alias_db = $selectcmd->fetch()) {
|
|
||||||
$file_content .= $alias_db['alias'].' '.$alias_db['email']."\n";
|
|
||||||
}
|
|
||||||
$alias_file=fopen(FICHIERALIAS,'w');
|
|
||||||
fputs($alias_file, $file_content);
|
|
||||||
fclose($alias_file);
|
|
||||||
exec(BIN_POSTMAP.' '.FICHIERALIAS,$output,$return);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// add new alias
|
|
||||||
function AjouterAlias_migrateTo10($status, $alias,$email, $life, $comment) {
|
|
||||||
global $dbco;
|
|
||||||
$dateCreat=date('Y-m-d H:i:s', 0);
|
|
||||||
$dateExpir=NULL;
|
|
||||||
try {
|
|
||||||
$insertcmd = $dbco->prepare("INSERT INTO ".DBTABLEPREFIX."alias (status, alias, email, dateCreat, dateExpir, comment)
|
|
||||||
VALUES (:status, :alias, :email, :dateCreat, :dateExpir, :comment)");
|
|
||||||
$insertcmd->bindParam('status', $status, PDO::PARAM_INT);
|
|
||||||
$insertcmd->bindParam('alias', $alias, PDO::PARAM_STR);
|
|
||||||
$insertcmd->bindParam('email', $email, PDO::PARAM_STR);
|
|
||||||
$insertcmd->bindParam('dateCreat', $dateCreat, PDO::PARAM_STR);
|
|
||||||
$insertcmd->bindParam('dateExpir', $dateExpir, PDO::PARAM_STR);
|
|
||||||
$insertcmd->bindParam('comment', $comment, PDO::PARAM_STR);
|
|
||||||
$insertcmd->execute();
|
|
||||||
} catch ( PDOException $e ) {
|
|
||||||
echo "DB error : ", $e->getMessage();
|
|
||||||
die();
|
|
||||||
}
|
|
||||||
return $dbco->lastInsertId();
|
|
||||||
}
|
|
||||||
|
|
||||||
$handle = fopen(FICHIERALIAS, 'r');
|
|
||||||
while (!feof($handle)) {
|
|
||||||
$buffer = fgets($handle);
|
|
||||||
if ($buffer) {
|
|
||||||
$bufferExplode = explode(' ', $buffer);
|
|
||||||
if (!preg_match('/^(#|$|;)/', $buffer)) {
|
|
||||||
echo $bufferExplode[0].' -> '.$bufferExplode[1]."\n";
|
|
||||||
AjouterAlias_migrateTo10(5, trim($bufferExplode[0]), trim($bufferExplode[1]), null, null);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
fclose($handle);
|
|
||||||
|
|
||||||
UpdateVirtualDB_migrateTo10();
|
|
||||||
|
|
||||||
?>
|
|
|
@ -1,98 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
//-----------------------------------------------------------
|
|
||||||
// emailPoubelle config
|
|
||||||
// Licence : GNU GPL v3 : http://www.gnu.org/licenses/gpl.html
|
|
||||||
// Créateur : David Mercereau - david [aro] mercereau [.] info
|
|
||||||
// Home : http://poubelle.zici.fr
|
|
||||||
//-----------------------------------------------------------
|
|
||||||
|
|
||||||
// writable for script
|
|
||||||
define('DATA', '../var');
|
|
||||||
// include directory
|
|
||||||
define('INC', '../lib');
|
|
||||||
define('URLINC', './lib'); // or http://mondomaine.tld/lib
|
|
||||||
define('LANG', '../lang');
|
|
||||||
|
|
||||||
// include function
|
|
||||||
include_once(INC.'/ep_function.php');
|
|
||||||
include_once(INC.'/ep_header.php');
|
|
||||||
|
|
||||||
define('DEBUG', false);
|
|
||||||
|
|
||||||
// Domain email (separe with ; exemple : exemple.com;zici.fr;exemple.fr)
|
|
||||||
define('DOMAIN', 'exemple.fr');
|
|
||||||
//define('DOMAIN', 'exemple.com;zici.fr;exemple.fr');
|
|
||||||
// Nombre d'alias poubelle limite par email
|
|
||||||
define('ALIASLIMITBYMAIL', 30);
|
|
||||||
|
|
||||||
// PDO stucture
|
|
||||||
// Exemple pour MYSQL :
|
|
||||||
// define('DB', 'mysql:host=127.0.0.1;dbname=baseMysql');
|
|
||||||
// define('DBUSER', 'utilisateurMysql');
|
|
||||||
// define('DBPASS', 'motdepassedefou');
|
|
||||||
// Exemple pour Sqlite :
|
|
||||||
// define('DB', 'sqlite:./data/emailPoubelle.sqlite');
|
|
||||||
define('DB', 'sqlite:'.DATA.'/database.sdb');
|
|
||||||
// table prefix
|
|
||||||
define('DBTABLEPREFIX', 'ep_');
|
|
||||||
|
|
||||||
// Use cron (true/false) for life expire email (recomanded)
|
|
||||||
// If use true add in crontab :
|
|
||||||
// 0 */2 * * * /usr/bin/wget -q -t 1 -T 7200 -O /dev/null 'http://exemple.com/page.php?act=cron' >/dev/null 2>&1
|
|
||||||
define('CRON', false);
|
|
||||||
|
|
||||||
// Fichier d'alias postfix
|
|
||||||
define('FICHIERALIAS', DATA.'/virtual');
|
|
||||||
define('BIN_POSTMAP', '/usr/sbin/postmap');
|
|
||||||
|
|
||||||
define('URLPAGE', 'http://'.$_SERVER["SERVER_NAME"].$_SERVER["SCRIPT_NAME"]);
|
|
||||||
|
|
||||||
// Email
|
|
||||||
define('EMAILTAGSUJET', '[EmailPoubelle]');
|
|
||||||
// From de l'email
|
|
||||||
define('EMAILFROM', '"NO REPLY emailPoubelle" <emailpoubelle@exemple.com>');
|
|
||||||
define('EMAILEND', 'emailPoubelle.zici.fr');
|
|
||||||
|
|
||||||
// Alisas interdit : (regex ligne par ligne) - commenter pour désactiver
|
|
||||||
define('ALIASDENY', DATA.'/aliasdeny.txt');
|
|
||||||
|
|
||||||
// Blackliste d'email : (regex ligne par ligne) - commenter pour désactiver
|
|
||||||
define('BLACKLIST', DATA.'/blacklist.txt');
|
|
||||||
|
|
||||||
// Depend pear Net/DNS2
|
|
||||||
define('CHECKMX', false);
|
|
||||||
if (CHECKMX) {
|
|
||||||
require_once('Net/DNS2.php');
|
|
||||||
// Serveur DNS pour la résolution/vérification du nom de domaine
|
|
||||||
define('NS1', 'ns1.fdn.org');
|
|
||||||
define('NS2', '8.8.8.8');
|
|
||||||
}
|
|
||||||
|
|
||||||
// A indiquer si vous utiliser les URL's rewriting
|
|
||||||
// Exemple avec un htaccess
|
|
||||||
// RewriteRule ^ep-([a-z]+)-([a-zA-Z0-9+/=]+)\.html$ switch.php?page=emailPoubelle&act=$1&value=$2 [L]
|
|
||||||
//define('URLREWRITE_START', 'http://poubelle.zici.fr/ep-');
|
|
||||||
//define('URLREWRITE_MIDDLE', '-');
|
|
||||||
//define('URLREWRITE_END', '.html');
|
|
||||||
// Désactiver
|
|
||||||
define('URLREWRITE_START', false);
|
|
||||||
define('URLREWRITE_MIDDLE', false);
|
|
||||||
define('URLREWRITE_END', false);
|
|
||||||
|
|
||||||
// check update :
|
|
||||||
// enable : in seconds
|
|
||||||
// disable : false
|
|
||||||
define('CHECKUPDATE', 86400);
|
|
||||||
|
|
||||||
// Maintenance mode
|
|
||||||
define('MAINTENANCE_MODE', false);
|
|
||||||
// No maintenance for this ip (admin ip)
|
|
||||||
define('MAINTENANCE_IP', '10.0.0.1');
|
|
||||||
|
|
||||||
|
|
||||||
// Mot de passe par défaut "admin" :
|
|
||||||
define('ADMIN_PASSWORD', 'admin');
|
|
||||||
|
|
||||||
|
|
||||||
?>
|
|
|
@ -1,373 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
//-----------------------------------------------------------
|
|
||||||
// Title : Email Poubelle
|
|
||||||
// Licence : GNU GPL v3 : http://www.gnu.org/licenses/gpl.html
|
|
||||||
// Author : David Mercereau - david [aro] mercereau [.] info
|
|
||||||
// Home : http://poubelle.zici.fr
|
|
||||||
// Date : 08/2018
|
|
||||||
// Version : 2.0
|
|
||||||
// Depend : Postifx (postmap command) php-pdo, http serveur
|
|
||||||
//-----------------------------------------------------------
|
|
||||||
|
|
||||||
//////////////////
|
|
||||||
// Init & check
|
|
||||||
//////////////////
|
|
||||||
|
|
||||||
define('VERSION', '2.0');
|
|
||||||
|
|
||||||
if (DEBUG) {
|
|
||||||
error_reporting(E_ALL);
|
|
||||||
ini_set('display_errors', 'On');
|
|
||||||
echo '<div class="highlight-2">'._("Debug enabled") .'<br />';
|
|
||||||
echo print_r($_REQUEST);
|
|
||||||
echo '</div>';
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!defined('DOMAIN') || !defined('DATA') || !defined('DEBUG') || !defined('FICHIERALIAS') || !defined('DB')) {
|
|
||||||
echo '<div class="highlight-1">'._("Error : the configuration file conf.php might not be included because the constants are not declared").'.</div>';
|
|
||||||
// check writable work directory
|
|
||||||
} else if (!is_writable(DATA)) {
|
|
||||||
echo '<div class="highlight-1">'._("Error : the working directory cannot be written. Please contact the admin").'</div>';
|
|
||||||
// check alias file is_writable
|
|
||||||
} else if (!is_writable(FICHIERALIAS)) {
|
|
||||||
echo '<div class="highlight-1">'._("Error : the alias file cannot be written. Please contact the admin").'</div>';
|
|
||||||
// check blacklist file is_writable
|
|
||||||
} else if (defined('BLACKLIST') && !is_readable(BLACKLIST)) {
|
|
||||||
echo '<div class="highlight-1">'._("Error : the blacklist file cannot be read. Please contact the admin").'</div>';
|
|
||||||
// check aliasdeny file is_writable
|
|
||||||
} else if (defined('ALIASDENY') && !is_readable(ALIASDENY)) {
|
|
||||||
echo '<div class="highlight-1">'._("Error : the forbidden aliases file cannot be read. Please contact the admin").'</div>';
|
|
||||||
// maintenance mod
|
|
||||||
} else if (MAINTENANCE_MODE == true && MAINTENANCE_IP != $_SERVER["REMOTE_ADDR"]) {
|
|
||||||
echo '<div class="highlight-2">'._("Service under maintenance").'</div>';
|
|
||||||
} else {
|
|
||||||
|
|
||||||
if (MAINTENANCE_MODE == true) {
|
|
||||||
echo '<div class="highlight-2">'._("Service under maintenance").'</div>';
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// Connect DB
|
|
||||||
try {
|
|
||||||
if (preg_match('/^sqlite/', DB)) {
|
|
||||||
$dbco = new PDO(DB);
|
|
||||||
} else {
|
|
||||||
$dbco = new PDO(DB, DBUSER, DBPASS);
|
|
||||||
}
|
|
||||||
$dbco->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
|
|
||||||
} catch ( PDOException $e ) {
|
|
||||||
die('._("Connexion à la base ").'.$e->getMessage());
|
|
||||||
}
|
|
||||||
// Create DB if not exists
|
|
||||||
try {
|
|
||||||
// status : 0=not verified - 3=disable - 5=active
|
|
||||||
if (preg_match('/^sqlite/', DB)) {
|
|
||||||
$create = $dbco->query("CREATE TABLE IF NOT EXISTS ".DBTABLEPREFIX."alias (
|
|
||||||
id INTEGER PRIMARY KEY,
|
|
||||||
status INTEGER(1) NOT NULL,
|
|
||||||
alias CHAR(150) NOT NULL UNIQUE,
|
|
||||||
email CHAR(150) NOT NULL,
|
|
||||||
dateCreat DATETIME NOT NULL,
|
|
||||||
dateExpir DATETIME,
|
|
||||||
comment TEXT);");
|
|
||||||
} else {
|
|
||||||
$create = $dbco->query("CREATE TABLE IF NOT EXISTS ".DBTABLEPREFIX."alias (
|
|
||||||
id INTEGER PRIMARY KEY AUTO_INCREMENT,
|
|
||||||
status INTEGER(1) NOT NULL,
|
|
||||||
alias CHAR(150) NOT NULL UNIQUE,
|
|
||||||
email CHAR(150) NOT NULL,
|
|
||||||
dateCreat DATETIME NOT NULL,
|
|
||||||
dateExpir DATETIME,
|
|
||||||
comment TEXT);");
|
|
||||||
}
|
|
||||||
} catch ( PDOException $e ) {
|
|
||||||
echo '<div class="highlight-1">'._("Error initializing tables. Please contact the admin");
|
|
||||||
if (DEBUG) { $e->getMessage(); }
|
|
||||||
echo '</div>';
|
|
||||||
die();
|
|
||||||
}
|
|
||||||
|
|
||||||
//////////////////
|
|
||||||
// Start program
|
|
||||||
//////////////////
|
|
||||||
|
|
||||||
// get process "act" (action)
|
|
||||||
$action = isset($_GET['act']) ? $_GET['act'] : '';
|
|
||||||
switch ($action) {
|
|
||||||
case "validemail" :
|
|
||||||
$get_value = urlUnGen($_GET['value']);
|
|
||||||
if ($dbco->query("SELECT COUNT(*) FROM ".DBTABLEPREFIX."alias WHERE id = '".$get_value['id']."' AND status = 0")->fetchColumn() != 0) {
|
|
||||||
UpdateStatusAlias($get_value['id'], $get_value['alias_full'], 5);
|
|
||||||
echo '<div class="highlight-3">'._("Your trash email address").' <b>'.$get_value['alias_full'].'</b> '._("is now enabled").'</div>';
|
|
||||||
} else {
|
|
||||||
echo '<div class="highlight-1">'._("Error : unknown ID or already validated").'</div>';
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case "disable" :
|
|
||||||
$get_value = urlUnGen($_GET['value']);
|
|
||||||
DisableAlias($get_value['id'], $get_value['alias_full'], null);
|
|
||||||
break;
|
|
||||||
case "enable" :
|
|
||||||
$get_value = urlUnGen($_GET['value']);
|
|
||||||
EnableAlias($get_value['id'], $get_value['alias_full'], null);
|
|
||||||
break;
|
|
||||||
case "delete" :
|
|
||||||
$get_value = urlUnGen($_GET['value']);
|
|
||||||
DeleteAlias($get_value['id'], $get_value['alias_full']);
|
|
||||||
break;
|
|
||||||
case "cron" :
|
|
||||||
if (CRON) {
|
|
||||||
echo '<div class="highlight-2">'._("The scheduled task is running").'</div>';
|
|
||||||
LifeExpire();
|
|
||||||
} else {
|
|
||||||
echo '<div class="highlight-1">'._("You didn't allow the scheduled job").'</div>';
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
// Form
|
|
||||||
if (isset($_POST['username']) && $_POST['username'] != '') { // minimal anti-spam
|
|
||||||
echo 'Hello you';
|
|
||||||
} else if (isset($_POST['list'])) {
|
|
||||||
$email=strtolower(StripCleanToHtml($_POST['email']));
|
|
||||||
if (! filter_var($email, FILTER_VALIDATE_EMAIL)) {
|
|
||||||
echo '<div class="highlight-1">'._("Error : email address incorrect").'</div>';
|
|
||||||
} else if (! VerifMXemail($email)) {
|
|
||||||
echo '<div class="highlight-1">'._("Error : email address incorrect").' (2)</div>';
|
|
||||||
} else if (ListeAlias($email)) {
|
|
||||||
echo '<div class="highlight-3">'._("An email has been sent to you").'</div>';
|
|
||||||
} else {
|
|
||||||
echo '<div class="highlight-1">'._("Error : no known active trash email").'</div>';
|
|
||||||
}
|
|
||||||
} else if (isset($_POST['email']) && isset($_POST['alias'])) {
|
|
||||||
$alias=strtolower(StripCleanToHtml($_POST['alias']));
|
|
||||||
$email=strtolower(StripCleanToHtml($_POST['email']));
|
|
||||||
$domain=StripCleanToHtml($_POST['domain']);
|
|
||||||
$life=$_POST['life'];
|
|
||||||
$comment=StripCleanToHtml($_POST['comment']);
|
|
||||||
$alias_full=$alias.'@'.$domain;
|
|
||||||
// Check form
|
|
||||||
if (! filter_var($email, FILTER_VALIDATE_EMAIL)) {
|
|
||||||
echo '<div class="highlight-1">'._("Error : email address incorrect").'</div>';
|
|
||||||
} else if (! VerifMXemail($email)) {
|
|
||||||
echo '<div class="highlight-1">'._("Error : email address incorrect").' (2)</div>';
|
|
||||||
} else if (! preg_match('#^[\w.-]+$#',$alias)) {
|
|
||||||
echo '<div class="highlight-1">'._("Error : trash email address syntax incorrect").'</div>';
|
|
||||||
} else if (!domainePresent($domain)) {
|
|
||||||
echo '<div class="highlight-1">'._("Error : this domain cannot be used").'</div>';
|
|
||||||
} else if (emailIsAlias($email)) {
|
|
||||||
echo '<div class="highlight-1">'._("Error : Your email can not contain a trash domain").'</div>';
|
|
||||||
} else if (AliasDeny($alias)) {
|
|
||||||
echo '<div class="highlight-1">'._("Error : trash email address forbidden").'</div>';
|
|
||||||
} else if (BlacklistEmail($email)) {
|
|
||||||
echo '<div class="highlight-1">'._("Error : you have been blacklisted").'</div>';
|
|
||||||
// add
|
|
||||||
} elseif (isset($_POST['add'])) {
|
|
||||||
if ($dbco->query("SELECT COUNT(*) FROM ".DBTABLEPREFIX."alias WHERE alias = '".$alias_full."'")->fetchColumn() != 0) {
|
|
||||||
echo '<div class="highlight-1">'._("Error : this trash email already exists").'</div>';
|
|
||||||
} else if ($dbco->query("SELECT COUNT(*) FROM ".DBTABLEPREFIX."alias WHERE email = '".$email."'")->fetchColumn() > ALIASLIMITBYMAIL) {
|
|
||||||
echo '<div class="highlight-1">'._("Error: You have reached your limit quota on this app. You can <a href=\"http://forge.zici.fr/p/emailpoubelle-php/\"> install this script </a> on a personal server if you want more quota").'.</div>';
|
|
||||||
} else {
|
|
||||||
if ($dbco->query("SELECT COUNT(*) FROM ".DBTABLEPREFIX."alias WHERE email = '".$email."' AND status > 0")->fetchColumn() != 0) {
|
|
||||||
AjouterAlias(5, $alias_full, $email, $life, $comment);
|
|
||||||
echo '<div class="highlight-3">'._("Your trash email address").'<b> '.$alias_full.' > '.$email.'</b> '._("is now enabled").'</div>';
|
|
||||||
} else {
|
|
||||||
$lastId=AjouterAlias(0, $alias_full, $email, $life, $comment);
|
|
||||||
$message= _("Confirmation of the creation of your trash email :")."\n";
|
|
||||||
$message= $alias_full.' => '.$email."\n";
|
|
||||||
$message= _("Click on the link below to validate :")."\n";
|
|
||||||
$message.= "\t * ".urlGen('validemail',$lastId,$alias_full)."\n";
|
|
||||||
$message.= "\n";
|
|
||||||
$message.= _("To delete this trash email, click on the link below :")."\n";
|
|
||||||
$message.= "\t * ".urlGen('delete',$lastId,$alias_full)."\n";
|
|
||||||
$message.= "\n";
|
|
||||||
$message.= _("After confirmation, you will be able to temporary suspend you trash email using the link below :")."\n";
|
|
||||||
$message.= "\t * ".urlGen('disable',$lastId,$alias_full)."\n";
|
|
||||||
SendEmail($email,_("Alias confirmation")." ".$alias,$message);
|
|
||||||
echo '<div class="highlight-2">'._("Your email address").' ('.$email.') '._("is unknown, a confirmation has been sent to you.").'</div>';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// delete
|
|
||||||
} else if (isset($_POST['del'])) {
|
|
||||||
if ($id = $dbco->query("SELECT id FROM ".DBTABLEPREFIX."alias WHERE email = '".$email."' AND alias = '".$alias_full."'")->fetchColumn()) {
|
|
||||||
$message= _("Confirmation of the removal of your trash email : ")."\n";
|
|
||||||
$message= $alias_full.' => '.$email."\n";
|
|
||||||
$message= _("Click on the link below to validate the deletion :")."\n";
|
|
||||||
$message.= "\t * ".urlGen('delete',$id,$alias_full)."\n\n";
|
|
||||||
$message.= _("If you would like to temporary suspend this trash email, you can follow the link bellow :")."\n";
|
|
||||||
$message.= "\t * ".urlGen('disable',$id,$alias_full)."\n";
|
|
||||||
SendEmail($email,_("Alias deletion")." ".$alias,$message);
|
|
||||||
echo '<div class="highlight-2">'._("An email has been sent to you").'.</div>';
|
|
||||||
} else {
|
|
||||||
echo '<div class="highlight-1">'._("Error : unknown trash email").'</div>';
|
|
||||||
}
|
|
||||||
// disable
|
|
||||||
} else if (isset($_POST['disable'])) {
|
|
||||||
DisableAlias(null, $alias_full, $email);
|
|
||||||
// enable
|
|
||||||
} else if (isset($_POST['enable'])) {
|
|
||||||
EnableAlias(null, $alias_full, $email);
|
|
||||||
}
|
|
||||||
|
|
||||||
// memory email
|
|
||||||
if (isset($_POST['memory'])) {
|
|
||||||
setcookie ("email", StripCleanToHtml($email), time() + 31536000);
|
|
||||||
} else if (isset($_COOKIE['email'])) {
|
|
||||||
unset($_COOKIE['email']);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//////////////////
|
|
||||||
// Printing form
|
|
||||||
//////////////////
|
|
||||||
|
|
||||||
?>
|
|
||||||
<?php languesSwitch(); ?>
|
|
||||||
|
|
||||||
<form action="<?= URLPAGE?>" method="post">
|
|
||||||
|
|
||||||
<div id="onglet" style="display: none;">
|
|
||||||
<input type="button" value=<?php echo _("Add") ?> id="onglet-add" onClick="ongletChange(this.id)" />
|
|
||||||
<input type="button" id="onglet-list" value=<?php echo _("List") ?> onClick="ongletChange(this.id)" />
|
|
||||||
<input type="button" id="onglet-del" value=<?php echo _("Delete") ?> onClick="ongletChange(this.id)" />
|
|
||||||
<input type="button" id="onglet-dis" value=<?php echo _("Suspend") ?> onClick="ongletChange(this.id)" />
|
|
||||||
<input type="button" id="onglet-en" value=<?php echo _("Resume") ?> onClick="ongletChange(this.id)" />
|
|
||||||
<input type="hidden" name="onglet-actif" id="onglet-actif" value="onglet-add" />
|
|
||||||
</div>
|
|
||||||
<div id="form-email">
|
|
||||||
<label for="email"><?php echo _("Your real email address") ?> : </label>
|
|
||||||
<input type="text" name="email" <?php if (isset($_COOKIE['email'])) { echo 'value="'.$_COOKIE['email'].'"'; } ?> id="input-email" size="24" border="0" onkeyup="printForm()" onchange="printForm()" />
|
|
||||||
<input class="button2" type="submit" name="list" id="button-list" value="Lister" />
|
|
||||||
<input type="checkbox" name="memory" id="check-memory" <?php if (isset($_COOKIE['email'])) { echo 'checked="checked" '; } ?>/> <?php echo _("Remember")?>
|
|
||||||
</div>
|
|
||||||
<div id="form-alias">
|
|
||||||
<label for="alias"><?php echo _("Name of your trash email address")?> : </label>
|
|
||||||
<input type="text" name="alias" id="input-alias" size="24" border="0" onkeyup="printForm()" onchange="printForm()" placeholder=<?php echo _("Ex : john_shop") ?>/> @<?php
|
|
||||||
$domains = explode(';', DOMAIN);
|
|
||||||
if (count($domains) == 1) {
|
|
||||||
echo DOMAIN.'<input type="hidden" value="'.DOMAIN.'" name="domain" id="input-domain" />';
|
|
||||||
} else {
|
|
||||||
echo '<select name="domain" id="input-domain">';
|
|
||||||
foreach ($domains as $one_domain) {
|
|
||||||
echo '<option value="'.$one_domain.'">'.$one_domain.'</option>';
|
|
||||||
}
|
|
||||||
echo '</select>';
|
|
||||||
}
|
|
||||||
?>
|
|
||||||
<select name="life" id="input-life">
|
|
||||||
<option value="0"><?php echo _("Unlimited time")?></option>
|
|
||||||
<option value="7200"><?php echo _("2 hours")?></option>
|
|
||||||
<option value="21600"><?php echo _("6 hours")?></option>
|
|
||||||
<option value="86400"><?php echo _("1 day")?></option>
|
|
||||||
<option value="604800"><?php echo _("7 days")?></option>
|
|
||||||
<option value="1296000"><?php echo _("15 days")?></option>
|
|
||||||
<option value="2592000"><?php echo _("30 days")?></option>
|
|
||||||
<option value="7776000"><?php echo _("90 days")?></option>
|
|
||||||
</select>
|
|
||||||
</div>
|
|
||||||
<div id="form-comment">
|
|
||||||
<label for="comment"><?php echo _("Comment for this trash email (for your to remember)")?></label>
|
|
||||||
<input type="text" name="comment" size="54" placeholder=<?php echo _("Ex : Inscription sur zici.fr") ?>/>
|
|
||||||
</div>
|
|
||||||
<div id="form-submit">
|
|
||||||
<input class="button" type="submit" id="button-add" name="add" value=<?php echo _("Activate") ?> />
|
|
||||||
<input class="button" type="submit" id="button-del" name="del" value=<?php echo _("Delete") ?> />
|
|
||||||
<input class="button" type="submit" id="button-enable" name="enable" value=<?php echo _("Suspend") ?> />
|
|
||||||
<input class="button" type="submit" id="button-disable" name="disable" value=<?php echo _("Resume") ?> />
|
|
||||||
</div>
|
|
||||||
<div id="lePecheur" style="display: none;">
|
|
||||||
<input name="username" type="text" />
|
|
||||||
</div>
|
|
||||||
</form>
|
|
||||||
|
|
||||||
<script type="text/javascript">
|
|
||||||
function validateEmail(email) {
|
|
||||||
var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
|
|
||||||
return re.test(email);
|
|
||||||
}
|
|
||||||
function printForm() {
|
|
||||||
if (validateEmail(document.getElementById('input-email').value) && document.getElementById('input-alias').value != '') {
|
|
||||||
document.getElementById('input-alias').disabled = false;
|
|
||||||
document.getElementById('input-domain').disabled = false;
|
|
||||||
document.getElementById('button-list').disabled = false;
|
|
||||||
document.getElementById('button-add').disabled = false;
|
|
||||||
document.getElementById('button-disable').disabled = false;
|
|
||||||
document.getElementById('button-enable').disabled = false;
|
|
||||||
document.getElementById('button-del').disabled = false;
|
|
||||||
document.getElementById('input-life').disabled = false;
|
|
||||||
if (document.getElementById('onglet-actif').value == 'onglet-add') {
|
|
||||||
document.getElementById('form-comment').style.display = "block" ;
|
|
||||||
}
|
|
||||||
} else if (validateEmail(document.getElementById('input-email').value)) {
|
|
||||||
document.getElementById('input-alias').disabled = false;
|
|
||||||
document.getElementById('input-domain').disabled = false;
|
|
||||||
document.getElementById('button-list').disabled = false;
|
|
||||||
document.getElementById('input-life').disabled = false;
|
|
||||||
document.getElementById('form-comment').style.display = "display" ;
|
|
||||||
document.getElementById('button-add').disabled = true;
|
|
||||||
document.getElementById('button-disable').disabled = true;
|
|
||||||
document.getElementById('button-enable').disabled = true;
|
|
||||||
document.getElementById('button-del').disabled = true;
|
|
||||||
document.getElementById('input-life').disabled = true;
|
|
||||||
document.getElementById('form-comment').style.display = "none" ;
|
|
||||||
} else {
|
|
||||||
document.getElementById('input-alias').disabled = true;
|
|
||||||
document.getElementById('input-domain').disabled = true;
|
|
||||||
document.getElementById('button-list').disabled = true;
|
|
||||||
document.getElementById('button-add').disabled = true;
|
|
||||||
document.getElementById('button-disable').disabled = true;
|
|
||||||
document.getElementById('button-enable').disabled = true;
|
|
||||||
document.getElementById('button-del').disabled = true;
|
|
||||||
document.getElementById('input-life').disabled = true;
|
|
||||||
document.getElementById('form-comment').style.display = "none" ;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
function ongletPrint() {
|
|
||||||
var ongletActif = document.getElementById('onglet-actif').value;
|
|
||||||
document.getElementById('onglet-add').className = "close" ;
|
|
||||||
document.getElementById('onglet-del').className = "close" ;
|
|
||||||
document.getElementById('onglet-list').className = "close" ;
|
|
||||||
document.getElementById('onglet-en').className = "close" ;
|
|
||||||
document.getElementById('onglet-dis').className = "close" ;
|
|
||||||
document.getElementById(ongletActif).className = "open" ;
|
|
||||||
document.getElementById('input-life').style.display = "none" ;
|
|
||||||
document.getElementById('form-alias').style.display = "inline-block" ;
|
|
||||||
document.getElementById('button-add').style.display = "none" ;
|
|
||||||
document.getElementById('button-del').style.display = "none" ;
|
|
||||||
document.getElementById('button-list').style.display = "none" ;
|
|
||||||
document.getElementById('button-disable').style.display = "none" ;
|
|
||||||
document.getElementById('button-enable').style.display = "none" ;
|
|
||||||
if (ongletActif == 'onglet-add') {
|
|
||||||
document.getElementById('button-add').style.display = "inline-block" ;
|
|
||||||
document.getElementById('input-life').style.display = "inline-block" ;
|
|
||||||
} else if (ongletActif == 'onglet-del') {
|
|
||||||
document.getElementById('button-del').style.display = "inline-block" ;
|
|
||||||
} else if (ongletActif == 'onglet-en') {
|
|
||||||
document.getElementById('button-enable').style.display = "inline-block" ;
|
|
||||||
} else if (ongletActif == 'onglet-dis') {
|
|
||||||
document.getElementById('button-disable').style.display = "inline-block" ;
|
|
||||||
} else if (ongletActif == 'onglet-list') {
|
|
||||||
document.getElementById('button-list').style.display = "inline-block" ;
|
|
||||||
document.getElementById('form-alias').style.display = "none" ;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
function ongletChange(ongletValue) {
|
|
||||||
document.getElementById('onglet-actif').value = ongletValue;
|
|
||||||
ongletPrint();
|
|
||||||
}
|
|
||||||
document.getElementById('onglet').style.display = "block" ;
|
|
||||||
ongletPrint();
|
|
||||||
printForm();
|
|
||||||
</script>
|
|
||||||
<p><?php echo _("Version")?> <?= VERSION ?> - <?php echo _("Created by David Mercereau under licence GNU GPL v3")?></p>
|
|
||||||
<p><?php echo _("Download and use this script on the project website")?> <a target="_blank" href="https://framagit.org/kepon/emailPoubellePhp/">emailPoubelle.php</a></p>
|
|
||||||
|
|
||||||
<?php
|
|
||||||
// execute lifeExpir if isn't in crontab
|
|
||||||
if (!CRON) { LifeExpire(); }
|
|
||||||
// Close connexion DB
|
|
||||||
$dbco = null;
|
|
||||||
// checkupdate
|
|
||||||
echo CheckUpdate();
|
|
||||||
} // end maintenance mod
|
|
||||||
?>
|
|
|
@ -1,174 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
//-----------------------------------------------------------
|
|
||||||
// Title : Email Poubelle
|
|
||||||
// Licence : GNU GPL v3 : http://www.gnu.org/licenses/gpl.html
|
|
||||||
// Author : David Mercereau - david [aro] mercereau [.] info
|
|
||||||
// Home : http://poubelle.zici.fr
|
|
||||||
// Date : 08/2013
|
|
||||||
// Version : 1.0
|
|
||||||
// Depend : Postifx (postmap command) php-pdo
|
|
||||||
//-----------------------------------------------------------
|
|
||||||
|
|
||||||
session_start();
|
|
||||||
|
|
||||||
$auth=false;
|
|
||||||
if (isset($_POST['adminPassword'])) {
|
|
||||||
$_SESSION['adminPasswordHash'] = password_hash($_POST['adminPassword'], PASSWORD_DEFAULT);
|
|
||||||
}
|
|
||||||
if (isset($_SESSION['adminPasswordHash'])) {
|
|
||||||
if (password_verify(ADMIN_PASSWORD, $_SESSION['adminPasswordHash'])) {
|
|
||||||
$auth=true;
|
|
||||||
} else {
|
|
||||||
$auth=false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (isset($_POST['adminPassword']) && $auth==false) {
|
|
||||||
echo '<div class="highlight-1">'._('Error: Incorrect password').'</div>';
|
|
||||||
}
|
|
||||||
if (empty($_SESSION['adminPasswordHash']) || $auth == false) {
|
|
||||||
echo '<form action="#" method="post">
|
|
||||||
<label>'.('The admin password').' : </label>
|
|
||||||
<input type="password" name="adminPassword" />
|
|
||||||
<input type="submit" />
|
|
||||||
</form>';
|
|
||||||
}
|
|
||||||
|
|
||||||
// Test connexion, si c'est ok :
|
|
||||||
if ($auth==true) {
|
|
||||||
languesSwitch();
|
|
||||||
// Connect DB
|
|
||||||
try {
|
|
||||||
if (preg_match('/^sqlite/', DB)) {
|
|
||||||
$dbco = new PDO(DB);
|
|
||||||
} else {
|
|
||||||
$dbco = new PDO(DB, DBUSER, DBPASS);
|
|
||||||
}
|
|
||||||
$dbco->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
|
|
||||||
} catch ( PDOException $e ) {
|
|
||||||
die('DB connect error : '.$e->getMessage());
|
|
||||||
}
|
|
||||||
if (isset($_POST['action'])) {
|
|
||||||
if ($_POST['action'] == 'DeleteEmail' && isset($_POST['email'])) {
|
|
||||||
DeleteEmail($_POST['email']);
|
|
||||||
}
|
|
||||||
if ($_POST['action'] == 'AddBlacklistEmail' && isset($_POST['email'])) {
|
|
||||||
AddBlacklistEmail($_POST['email']);
|
|
||||||
}
|
|
||||||
if ($_POST['action'] == 'DeleteAlias' && isset($_POST['id']) && isset($_POST['alias'])) {
|
|
||||||
DeleteAlias($_POST['id'], $_POST['alias']);
|
|
||||||
}
|
|
||||||
if ($_POST['action'] == 'DisableAlias' && isset($_POST['id']) && isset($_POST['alias'])) {
|
|
||||||
DisableAlias($_POST['id'], $_POST['alias'], $_POST['email']);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
?>
|
|
||||||
<script>
|
|
||||||
function confirmation(idForm, idAction, action) {
|
|
||||||
if (confirm(action + " : êtes-vous sûr ?")) {
|
|
||||||
document.getElementById(idAction).value = action;
|
|
||||||
document.getElementById(idForm).submit();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
<?php
|
|
||||||
echo '<p>'._('Statistics').' : </p>';
|
|
||||||
echo '<ul>';
|
|
||||||
echo '<li>'._('Total alias').' : '.$dbco->query("SELECT COUNT(*) FROM ".DBTABLEPREFIX."alias")->fetchColumn().'</li>';
|
|
||||||
echo '<li>'._('Active alias').' : '.$dbco->query("SELECT COUNT(*) FROM ".DBTABLEPREFIX."alias WHERE status = 5")->fetchColumn().'</li>';
|
|
||||||
echo '<li>'._('Alias suspended').' : '.$dbco->query("SELECT COUNT(*) FROM ".DBTABLEPREFIX."alias WHERE status = 3")->fetchColumn().'</li>';
|
|
||||||
echo '<li>'._('Alias not verified').' : '.$dbco->query("SELECT COUNT(*) FROM ".DBTABLEPREFIX."alias WHERE status = 0")->fetchColumn().'</li>';
|
|
||||||
//echo '<li>Email différent : '.$dbco->query("SELECT DISTINCT count(email) FROM ".DBTABLEPREFIX."alias WHERE status = 5")->fetchColumn().'</li>';
|
|
||||||
echo '</ul>';
|
|
||||||
|
|
||||||
echo '<h3 id="user">User info</h3>';
|
|
||||||
echo '<form action="#" method="post">
|
|
||||||
<label>'._('User email').' : </label>
|
|
||||||
<input type="text" value="'.$_POST['email'].'" name="email" />
|
|
||||||
<input type="submit" />
|
|
||||||
</form>';
|
|
||||||
if (isset($_POST['email'])) {
|
|
||||||
$requestUtilisateur = $dbco->query("SELECT * FROM ".DBTABLEPREFIX."alias WHERE email='".$_POST['email']."' ORDER BY dateCreat DESC")->fetchAll() ;
|
|
||||||
echo '<p>User '.$_POST['email'].' : ';
|
|
||||||
if (count($requestUtilisateur) != 0) {
|
|
||||||
echo '<img onclick="confirmation(\'uniqemail_'.$_POST['email'].'\', \'uniqaction_'.$_POST['email'].'\', \'DeleteEmail\')" src="'.URLINC.'/sup.png" alt="sup" />';
|
|
||||||
if (!BlacklistEmail($_POST['email'])) {
|
|
||||||
echo '<img onclick="confirmation(\'uniqemail_'.$_POST['email'].'\', \'uniqaction_'.$_POST['email'].'\', \'AddBlacklistEmail\')" src="'.URLINC.'/blk.png" alt="blk" />';
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
echo 'Not found !';
|
|
||||||
}
|
|
||||||
echo '<form style="display: none" method="post" action="#" id="uniqemail_'.$_POST['email'].'">
|
|
||||||
<input type="hidden" name="email" value="'.$_POST['email'].'" />
|
|
||||||
<input type="hidden" id="uniqaction_'.$_POST['email'].'" name="action" value="" />
|
|
||||||
</form>';
|
|
||||||
echo '</p>';
|
|
||||||
if (count($requestUtilisateur) != 0) {
|
|
||||||
echo '<table>';
|
|
||||||
echo '<tr>
|
|
||||||
<th>Status</th>
|
|
||||||
<th>Alias</th>
|
|
||||||
<th>DateCreat</th>
|
|
||||||
<th>DateExpir</th>
|
|
||||||
<th>Comment</th>
|
|
||||||
</tr>';
|
|
||||||
foreach ($requestUtilisateur as $utilisateur) {
|
|
||||||
echo '<tr>
|
|
||||||
<td><img src="'.URLINC.'/status'.$utilisateur['status'].'.png" alt="'.$utilisateur['status'].'" /></td>
|
|
||||||
<td>'.$utilisateur['alias'].'
|
|
||||||
<br /><form style="display: none" method="post" action="#" id="alias'.$utilisateur['id'].'">
|
|
||||||
<input type="hidden" name="id" value="'.$utilisateur['id'].'" />
|
|
||||||
<input type="hidden" name="alias" value="'.$utilisateur['alias'].'" />
|
|
||||||
<input type="hidden" name="email" value="'.$_POST['email'].'" />
|
|
||||||
<input type="hidden" id="action'.$utilisateur['id'].'" name="action" value="" />
|
|
||||||
</form>
|
|
||||||
<img onclick="confirmation(\'alias'.$utilisateur['id'].'\', \'action'.$utilisateur['id'].'\', \'DeleteAlias\')" src="'.URLINC.'/sup.png" alt="sup" />';
|
|
||||||
if ($utilisateur['status'] == 5) {
|
|
||||||
echo '<img onclick="confirmation(\'alias'.$utilisateur['id'].'\', \'action'.$utilisateur['id'].'\', \'DisableAlias\')" src="'.URLINC.'/status3.png" alt="Suspendre" />';
|
|
||||||
}
|
|
||||||
echo '</td>
|
|
||||||
<td>'.$utilisateur['dateCreat'].'</td>
|
|
||||||
<td>'.$utilisateur['dateExpir'].'</td>
|
|
||||||
<td>'.$utilisateur['comment'].'</td>
|
|
||||||
</tr>';
|
|
||||||
}
|
|
||||||
echo '</table>';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
echo '<h3 id="top">Top user </h3>';
|
|
||||||
$recordActifs = $dbco->query("SELECT email, count(alias) calias FROM ".DBTABLEPREFIX."alias WHERE status=5 GROUP BY email ORDER BY calias DESC LIMIT 40")->fetchAll();
|
|
||||||
echo '<table>';
|
|
||||||
echo '<tr>
|
|
||||||
<th>Email</th>
|
|
||||||
<th style="text-align: center">Number of alias</th>
|
|
||||||
<th style="text-align: center">Action</th>
|
|
||||||
</tr>';
|
|
||||||
foreach ($recordActifs as $recordActif) {
|
|
||||||
echo '<tr>
|
|
||||||
<td>';
|
|
||||||
if (BlacklistEmail($recordActif['email'])) {
|
|
||||||
echo '<img src="'.URLINC.'/blk.png" alt="blk" /> ';
|
|
||||||
}
|
|
||||||
echo $recordActif['email'].'</td>
|
|
||||||
<td style="text-align: center">'.$recordActif['calias'].'</td>
|
|
||||||
<td style="text-align: center">
|
|
||||||
<form style="display: none" method="post" action="#" id="email_'.$recordActif['email'].'">
|
|
||||||
<input type="hidden" name="email" value="'.$recordActif['email'].'" />
|
|
||||||
<input type="hidden" id="action_'.$recordActif['email'].'" name="action" value="" />
|
|
||||||
</form>
|
|
||||||
<img onclick="confirmation(\'email_'.$recordActif['email'].'\', \'action_'.$recordActif['email'].'\', \'DeleteEmail\')" src="'.URLINC.'/sup.png" alt="sup" />';
|
|
||||||
if (!BlacklistEmail($recordActif['email'])) {
|
|
||||||
echo '<img onclick="confirmation(\'email_'.$recordActif['email'].'\', \'action_'.$recordActif['email'].'\', \'AddBlacklistEmail\')" src="'.URLINC.'/blk.png" alt="blk" />';
|
|
||||||
}
|
|
||||||
echo '
|
|
||||||
</td>
|
|
||||||
</tr>';
|
|
||||||
}
|
|
||||||
echo '</table>';
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
?>
|
|
|
@ -1,369 +0,0 @@
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: \n"
|
|
||||||
"Report-Msgid-Bugs-To: \n"
|
|
||||||
"POT-Creation-Date: 2018-11-16 12:45+0100\n"
|
|
||||||
"PO-Revision-Date: 2018-11-16 13:02+0100\n"
|
|
||||||
"Last-Translator: \n"
|
|
||||||
"Language-Team: \n"
|
|
||||||
"Language: fr_FR\n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
|
||||||
"Report-msgstr-Bugs-To: \n"
|
|
||||||
"X-Generator: Poedit 2.0.6\n"
|
|
||||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
|
||||||
|
|
||||||
#: emailPoubelleAdmin.php:27
|
|
||||||
msgid "Error: Incorrect password"
|
|
||||||
msgstr "Erreur : mot de passe incorrect"
|
|
||||||
|
|
||||||
#: emailPoubelleAdmin.php:75
|
|
||||||
msgid "Statistics"
|
|
||||||
msgstr "Statistique"
|
|
||||||
|
|
||||||
#: emailPoubelleAdmin.php:77
|
|
||||||
msgid "Total alias"
|
|
||||||
msgstr "Alias total"
|
|
||||||
|
|
||||||
#: emailPoubelleAdmin.php:78
|
|
||||||
msgid "Active alias"
|
|
||||||
msgstr "Alias actif"
|
|
||||||
|
|
||||||
#: emailPoubelleAdmin.php:79
|
|
||||||
msgid "Alias suspended"
|
|
||||||
msgstr "Alias suspendu"
|
|
||||||
|
|
||||||
#: emailPoubelleAdmin.php:80
|
|
||||||
msgid "Alias not verified"
|
|
||||||
msgstr "Alias non vérifié"
|
|
||||||
|
|
||||||
#: emailPoubelleAdmin.php:86
|
|
||||||
msgid "User email"
|
|
||||||
msgstr "Email de l'utilisateur"
|
|
||||||
|
|
||||||
#: emailPoubelle.php:22
|
|
||||||
msgid "Debug enabled"
|
|
||||||
msgstr "Debug activé"
|
|
||||||
|
|
||||||
#: emailPoubelle.php:28
|
|
||||||
msgid "Error : the configuration file conf.php might not be included because the constants are not declared"
|
|
||||||
msgstr "Erreur : Il ne semble pas que le fichier de configuration conf.php soit inclue car les constantes ne sont pas présentes"
|
|
||||||
|
|
||||||
#: emailPoubelle.php:31
|
|
||||||
msgid "Error : the working directory cannot be written. Please contact the admin"
|
|
||||||
msgstr "Erreur : le répertoire de travail ne peut pas être écrit. Merci de contacter l\\'administrateur"
|
|
||||||
|
|
||||||
#: emailPoubelle.php:34
|
|
||||||
msgid "Error : the alias file cannot be written. Please contact the admin"
|
|
||||||
msgstr "Erreur : le fichier d\\'alias ne peut pas être écrit. Merci de contacter l\\'administrateur"
|
|
||||||
|
|
||||||
#: emailPoubelle.php:37
|
|
||||||
msgid "Error : the blacklist file cannot be read. Please contact the admin"
|
|
||||||
msgstr "Erreur : un fichier de blacklist est renseigné mais n\\'est pas lisible. Merci de contacter l\\'administrateur"
|
|
||||||
|
|
||||||
#: emailPoubelle.php:40
|
|
||||||
msgid "Error : the forbidden aliases file cannot be read. Please contact the admin"
|
|
||||||
msgstr "Erreur : un fichier d\\'alias interdit est renseigné mais n\\'est pas lisible. Merci de contacter l\\'administrateur"
|
|
||||||
|
|
||||||
#: emailPoubelle.php:43 emailPoubelle.php:47
|
|
||||||
msgid "Service under maintenance"
|
|
||||||
msgstr "Le service est en maintenance"
|
|
||||||
|
|
||||||
#: emailPoubelle.php:85
|
|
||||||
msgid "Error initializing tables. Please contact the admin"
|
|
||||||
msgstr "Erreur à l\\'initialisation des tables. Merci de contacter l'administrateur"
|
|
||||||
|
|
||||||
#: emailPoubelle.php:102 emailPoubelle.php:173
|
|
||||||
msgid "Your trash email address"
|
|
||||||
msgstr "Votre email poubelle"
|
|
||||||
|
|
||||||
#: emailPoubelle.php:102 emailPoubelle.php:173
|
|
||||||
msgid "is now enabled"
|
|
||||||
msgstr "est maintenant actif"
|
|
||||||
|
|
||||||
#: emailPoubelle.php:104
|
|
||||||
msgid "Error : unknown ID or already validated"
|
|
||||||
msgstr "Erreur : ID introuvable ou déjà validé"
|
|
||||||
|
|
||||||
#: emailPoubelle.php:121
|
|
||||||
msgid "The scheduled task is running"
|
|
||||||
msgstr "La tâche planifié est lancé"
|
|
||||||
|
|
||||||
#: emailPoubelle.php:124
|
|
||||||
msgid "You didn't allow the scheduled job"
|
|
||||||
msgstr "Vous n\\'avez pas autorisé le lancement par tâche planifié"
|
|
||||||
|
|
||||||
#: emailPoubelle.php:134 emailPoubelle.php:136 emailPoubelle.php:151
|
|
||||||
#: emailPoubelle.php:153
|
|
||||||
msgid "Error : email address incorrect"
|
|
||||||
msgstr "Erreur : Adresse email incorrect"
|
|
||||||
|
|
||||||
#: emailPoubelle.php:138 emailPoubelle.php:200
|
|
||||||
msgid "An email has been sent to you"
|
|
||||||
msgstr "Un email vient de vous être envoyé"
|
|
||||||
|
|
||||||
#: emailPoubelle.php:140
|
|
||||||
msgid "Error : no known active trash email"
|
|
||||||
msgstr "Erreur : aucun email actif connu"
|
|
||||||
|
|
||||||
#: emailPoubelle.php:155
|
|
||||||
msgid "Error : trash email address syntax incorrect"
|
|
||||||
msgstr "Erreur : Format de l\\'email poubelle incorrect"
|
|
||||||
|
|
||||||
#: emailPoubelle.php:157
|
|
||||||
msgid "Error : this domain cannot be used"
|
|
||||||
msgstr "Erreur : ce domain n\\'est pas pris en charge"
|
|
||||||
|
|
||||||
#: emailPoubelle.php:159
|
|
||||||
msgid "Error : Your email can not contain a trash domain"
|
|
||||||
msgstr "Erreur : votre email ne peut pas être un email poubelle"
|
|
||||||
|
|
||||||
#: emailPoubelle.php:161
|
|
||||||
msgid "Error : trash email address forbidden"
|
|
||||||
msgstr "Erreur : email poubelle interdit"
|
|
||||||
|
|
||||||
#: emailPoubelle.php:163
|
|
||||||
msgid "Error : you have been blacklisted"
|
|
||||||
msgstr "Erreur : vous avez été blacklisté sur ce service"
|
|
||||||
|
|
||||||
#: emailPoubelle.php:167
|
|
||||||
msgid "Error : this trash email already exists"
|
|
||||||
msgstr "Erreur : cet email poubelle est déjà utilisé"
|
|
||||||
|
|
||||||
#: emailPoubelle.php:169
|
|
||||||
msgid "Error: You have reached your limit quota on this app. You can <a href=\"http://forge.zici.fr/p/emailpoubelle-php/\"> install this script </a> on a personal server if you want more quota"
|
|
||||||
msgstr "Erreur : Vous avez atteind votre quota limite d'alias sur cette application. Vous pouvez <a href=\"http://forge.zici.fr/p/emailpoubelle-php/\">installer ce script</a> sur un serveur personnel si vous voulez plus de quota"
|
|
||||||
|
|
||||||
#: emailPoubelle.php:176
|
|
||||||
msgid "Confirmation of the creation of your trash email :"
|
|
||||||
msgstr "Confirmation de la création de votre email poubelle :"
|
|
||||||
|
|
||||||
#: emailPoubelle.php:178
|
|
||||||
msgid "Click on the link below to validate :"
|
|
||||||
msgstr "Cliquer sur le lien ci-dessous pour confirmer :"
|
|
||||||
|
|
||||||
#: emailPoubelle.php:181
|
|
||||||
msgid "To delete this trash email, click on the link below :"
|
|
||||||
msgstr "Pour supprimer cet email poubelle vous pouvez vous rendre sur le lien ci-dessous :"
|
|
||||||
|
|
||||||
#: emailPoubelle.php:184
|
|
||||||
msgid "After confirmation, you will be able to temporary suspend you trash email using the link below :"
|
|
||||||
msgstr "Après confirmation, vous pourrez suspendre temporairement cet email poubelle vous pouvez vous rendre sur le lien ci-dessous :"
|
|
||||||
|
|
||||||
#: emailPoubelle.php:186
|
|
||||||
msgid "Alias confirmation"
|
|
||||||
msgstr "Confirmation alias"
|
|
||||||
|
|
||||||
#: emailPoubelle.php:187
|
|
||||||
msgid "Your email address"
|
|
||||||
msgstr "Votre email"
|
|
||||||
|
|
||||||
#: emailPoubelle.php:187
|
|
||||||
msgid "is unknown, a confirmation has been sent to you."
|
|
||||||
msgstr "nous étant inconnu, une confirmation vous a été envoyé par email."
|
|
||||||
|
|
||||||
#: emailPoubelle.php:193
|
|
||||||
msgid "Confirmation of the removal of your trash email : "
|
|
||||||
msgstr "Confirmation de la suppression de votre email poubelle "
|
|
||||||
|
|
||||||
#: emailPoubelle.php:195
|
|
||||||
msgid "Click on the link below to validate the deletion :"
|
|
||||||
msgstr "Cliquer sur le lien ci-dessous pour confirmer la suppression :"
|
|
||||||
|
|
||||||
#: emailPoubelle.php:197
|
|
||||||
msgid "If you would like to temporary suspend this trash email, you can follow the link bellow :"
|
|
||||||
msgstr "Sinon pour suspendre temporairement cet email poubelle vous pouvez vous rendre sur le lien ci-dessous :"
|
|
||||||
|
|
||||||
#: emailPoubelle.php:199
|
|
||||||
msgid "Alias deletion"
|
|
||||||
msgstr "Suppression de l'alias"
|
|
||||||
|
|
||||||
#: emailPoubelle.php:202
|
|
||||||
msgid "Error : unknown trash email"
|
|
||||||
msgstr "Erreur : impossible de trouver cet email poubelle"
|
|
||||||
|
|
||||||
#: emailPoubelle.php:230
|
|
||||||
msgid "Add"
|
|
||||||
msgstr "Ajouter"
|
|
||||||
|
|
||||||
#: emailPoubelle.php:231
|
|
||||||
msgid "List"
|
|
||||||
msgstr "Lister"
|
|
||||||
|
|
||||||
#: emailPoubelle.php:232 emailPoubelle.php:274
|
|
||||||
msgid "Delete"
|
|
||||||
msgstr "Supprimer"
|
|
||||||
|
|
||||||
#: emailPoubelle.php:233 emailPoubelle.php:275
|
|
||||||
msgid "Suspend"
|
|
||||||
msgstr "Suspendre"
|
|
||||||
|
|
||||||
#: emailPoubelle.php:234 emailPoubelle.php:276
|
|
||||||
msgid "Resume"
|
|
||||||
msgstr "Reprendre"
|
|
||||||
|
|
||||||
#: emailPoubelle.php:238
|
|
||||||
msgid "Your real email address"
|
|
||||||
msgstr "Votre email réel"
|
|
||||||
|
|
||||||
#: emailPoubelle.php:241
|
|
||||||
msgid "Remember"
|
|
||||||
msgstr "Mémoriser"
|
|
||||||
|
|
||||||
#: emailPoubelle.php:244
|
|
||||||
msgid "Name of your trash email address"
|
|
||||||
msgstr "Nom de l'email poubelle"
|
|
||||||
|
|
||||||
#: emailPoubelle.php:245
|
|
||||||
msgid "Ex : john_shop"
|
|
||||||
msgstr "Ex : jean-petiteannonce"
|
|
||||||
|
|
||||||
#: emailPoubelle.php:258
|
|
||||||
msgid "Unlimited time"
|
|
||||||
msgstr "Illimité"
|
|
||||||
|
|
||||||
#: emailPoubelle.php:259
|
|
||||||
msgid "2 hours"
|
|
||||||
msgstr "2 heure"
|
|
||||||
|
|
||||||
#: emailPoubelle.php:260
|
|
||||||
msgid "6 hours"
|
|
||||||
msgstr "6 heures"
|
|
||||||
|
|
||||||
#: emailPoubelle.php:261
|
|
||||||
msgid "1 day"
|
|
||||||
msgstr "1 jour"
|
|
||||||
|
|
||||||
#: emailPoubelle.php:262
|
|
||||||
msgid "7 days"
|
|
||||||
msgstr "7 jours"
|
|
||||||
|
|
||||||
#: emailPoubelle.php:263
|
|
||||||
msgid "15 days"
|
|
||||||
msgstr "15 jours"
|
|
||||||
|
|
||||||
#: emailPoubelle.php:264
|
|
||||||
msgid "30 days"
|
|
||||||
msgstr "30 jours"
|
|
||||||
|
|
||||||
#: emailPoubelle.php:265
|
|
||||||
msgid "90 days"
|
|
||||||
msgstr "90 jours"
|
|
||||||
|
|
||||||
#: emailPoubelle.php:269
|
|
||||||
msgid "Comment for this trash email (for your to remember)"
|
|
||||||
msgstr "Un commentaire pour l'ajout ? (pour votre mémoire)"
|
|
||||||
|
|
||||||
#: emailPoubelle.php:270
|
|
||||||
msgid "Ex : Inscription sur zici.fr"
|
|
||||||
msgstr "Ex : Inscription sur zici.fr"
|
|
||||||
|
|
||||||
#: emailPoubelle.php:273
|
|
||||||
msgid "Activate"
|
|
||||||
msgstr "Activer"
|
|
||||||
|
|
||||||
#: emailPoubelle.php:362
|
|
||||||
msgid "Version"
|
|
||||||
msgstr "Version"
|
|
||||||
|
|
||||||
#: emailPoubelle.php:362
|
|
||||||
msgid "Created by David Mercereau under licence GNU GPL v3"
|
|
||||||
msgstr "Créé par David Mercereau sous licence GNU GPL v3"
|
|
||||||
|
|
||||||
#: emailPoubelle.php:363
|
|
||||||
msgid "Download and use this script on the project website"
|
|
||||||
msgstr "Télécharger et utiliser ce script sur le site du projet"
|
|
||||||
|
|
||||||
#: ep_function.php:93
|
|
||||||
msgid "has been deleted with all these aliases"
|
|
||||||
msgstr "a été supprimé avec tout ces alias"
|
|
||||||
|
|
||||||
#: ep_function.php:99
|
|
||||||
msgid "Erreur"
|
|
||||||
msgstr "Erreur"
|
|
||||||
|
|
||||||
#: ep_function.php:99
|
|
||||||
msgid "has not been deleted"
|
|
||||||
msgstr "n'a pas été supprimé"
|
|
||||||
|
|
||||||
#: ep_function.php:120
|
|
||||||
msgid "has been deleted"
|
|
||||||
msgstr "a bien été supprimé"
|
|
||||||
|
|
||||||
#: ep_function.php:126
|
|
||||||
msgid "Error: email trash unknown"
|
|
||||||
msgstr "Erreur : email poubelle inconnu"
|
|
||||||
|
|
||||||
#: ep_function.php:145 ep_function.php:173
|
|
||||||
msgid "Error: Can not find this trash email"
|
|
||||||
msgstr "Erreur : impossible de trouver cet email poubelle"
|
|
||||||
|
|
||||||
#: ep_function.php:148 ep_function.php:150 ep_function.php:152
|
|
||||||
#: ep_function.php:176 ep_function.php:178 ep_function.php:180
|
|
||||||
msgid "The reception on"
|
|
||||||
msgstr "La réception sur"
|
|
||||||
|
|
||||||
#: ep_function.php:148
|
|
||||||
msgid "is active again"
|
|
||||||
msgstr "est maintenant activé"
|
|
||||||
|
|
||||||
#: ep_function.php:150
|
|
||||||
msgid "is already active"
|
|
||||||
msgstr "est déjà activé"
|
|
||||||
|
|
||||||
#: ep_function.php:152
|
|
||||||
msgid "has not been confirmed by email"
|
|
||||||
msgstr "n\\'à pas été confirmé par email"
|
|
||||||
|
|
||||||
#: ep_function.php:154 ep_function.php:182
|
|
||||||
msgid "Error: unknown status"
|
|
||||||
msgstr "Erreur : statu inconnu"
|
|
||||||
|
|
||||||
#: ep_function.php:176
|
|
||||||
msgid "is now suspended"
|
|
||||||
msgstr "est maintenant suspendu"
|
|
||||||
|
|
||||||
#: ep_function.php:178
|
|
||||||
msgid "is already suspended"
|
|
||||||
msgstr "est déjà suspendu"
|
|
||||||
|
|
||||||
#: ep_function.php:180
|
|
||||||
msgid "can not be suspended because it has not been activated yet"
|
|
||||||
msgstr "ne peut pas être suspendu car il n'a pas encore été activé"
|
|
||||||
|
|
||||||
#: ep_function.php:254
|
|
||||||
msgid "List trash email activate"
|
|
||||||
msgstr "Liste de vos email poubelles actif"
|
|
||||||
|
|
||||||
#: ep_function.php:257
|
|
||||||
msgid "List trash email disable"
|
|
||||||
msgstr "Liste de vos email poubelles désactivé"
|
|
||||||
|
|
||||||
#: ep_function.php:259
|
|
||||||
msgid "Create "
|
|
||||||
msgstr "Créer le "
|
|
||||||
|
|
||||||
#: ep_function.php:261
|
|
||||||
msgid "and expires on"
|
|
||||||
msgstr "an expire le"
|
|
||||||
|
|
||||||
#: ep_function.php:265
|
|
||||||
msgid "Comment :"
|
|
||||||
msgstr "Commentaire :"
|
|
||||||
|
|
||||||
#: ep_function.php:268
|
|
||||||
msgid "Disable :"
|
|
||||||
msgstr "Désactivé :"
|
|
||||||
|
|
||||||
#: ep_function.php:271
|
|
||||||
msgid "Activate :"
|
|
||||||
msgstr "Activé :"
|
|
||||||
|
|
||||||
#: ep_function.php:274
|
|
||||||
msgid "Delete :"
|
|
||||||
msgstr "Supprimé :"
|
|
||||||
|
|
||||||
#: ep_function.php:280
|
|
||||||
msgid "List trash email"
|
|
||||||
msgstr "Liste email poubelle"
|
|
|
@ -1,312 +0,0 @@
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: \n"
|
|
||||||
"Report-Msgid-Bugs-To: \n"
|
|
||||||
"PO-Revision-Date: 2018-11-16 12:57+0100\n"
|
|
||||||
"Last-Translator: \n"
|
|
||||||
"Language-Team: \n"
|
|
||||||
"Language: fr_FR\n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
|
||||||
"Report-msgstr-Bugs-To: \n"
|
|
||||||
"X-Generator: Poedit 2.0.6\n"
|
|
||||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
|
||||||
"POT-Creation-Date: \n"
|
|
||||||
|
|
||||||
msgid "1 hours"
|
|
||||||
msgstr "1 hour"
|
|
||||||
|
|
||||||
msgid "15 hours"
|
|
||||||
msgstr "15 hours"
|
|
||||||
|
|
||||||
msgid "2 hours"
|
|
||||||
msgstr "2 heure"
|
|
||||||
|
|
||||||
msgid "30 hours"
|
|
||||||
msgstr "30 hours"
|
|
||||||
|
|
||||||
msgid "6 hours"
|
|
||||||
msgstr "6 heures"
|
|
||||||
|
|
||||||
msgid "7 hours"
|
|
||||||
msgstr "7 hours"
|
|
||||||
|
|
||||||
msgid "90 hours"
|
|
||||||
msgstr "90 hours"
|
|
||||||
|
|
||||||
msgid "Activate"
|
|
||||||
msgstr "Activer"
|
|
||||||
|
|
||||||
msgid "Activate :"
|
|
||||||
msgstr "Activé : "
|
|
||||||
|
|
||||||
msgid "Active alias"
|
|
||||||
msgstr "Alias actif"
|
|
||||||
|
|
||||||
msgid "Add"
|
|
||||||
msgstr "Ajouter"
|
|
||||||
|
|
||||||
msgid ""
|
|
||||||
"After confirmation, you will be able to temporary suspend you trash email "
|
|
||||||
"using the link below :"
|
|
||||||
msgstr ""
|
|
||||||
"Après confirmation, vous pourrez suspendre temporairement cet email poubelle "
|
|
||||||
"vous pouvez vous rendre sur le lien ci-dessous : "
|
|
||||||
|
|
||||||
msgid "Alias confirmation"
|
|
||||||
msgstr "Confirmation alias "
|
|
||||||
|
|
||||||
msgid "Alias deletion"
|
|
||||||
msgstr "Suppression de l\\'alias "
|
|
||||||
|
|
||||||
msgid "Alias not verified"
|
|
||||||
msgstr "Alias non vérifié"
|
|
||||||
|
|
||||||
msgid "Alias suspended"
|
|
||||||
msgstr "Alias suspendu"
|
|
||||||
|
|
||||||
msgid "An email has been sent to you"
|
|
||||||
msgstr "Un email vient de vous être envoyé"
|
|
||||||
|
|
||||||
msgid "Click on the link below to validate :"
|
|
||||||
msgstr "Cliquer sur le lien ci-dessous pour confirmer"
|
|
||||||
|
|
||||||
msgid "Click on the link below to validate the deletion :"
|
|
||||||
msgstr "Cliquer sur le lien ci-dessous pour confirmer la suppression : "
|
|
||||||
|
|
||||||
msgid "Comment :"
|
|
||||||
msgstr "Commentaire"
|
|
||||||
|
|
||||||
msgid "Comment for this trash email (for your to remember)"
|
|
||||||
msgstr "Un commentaire pour l'ajout ? (pour votre mémoire)"
|
|
||||||
|
|
||||||
msgid "Confirmation of the creation of your trash email :"
|
|
||||||
msgstr "Confirmation de la création de votre email poubelle"
|
|
||||||
|
|
||||||
msgid "Confirmation of the removal of your trash email : "
|
|
||||||
msgstr "Confirmation de la suppression de votre email poubelle"
|
|
||||||
|
|
||||||
msgid "Created by David Mercereau under licence GNU GPL v3"
|
|
||||||
msgstr "Créé par David Mercereau sous licence GNU GPL v3"
|
|
||||||
|
|
||||||
msgid "Créé le"
|
|
||||||
msgstr "Crée le"
|
|
||||||
|
|
||||||
msgid "Debug enabled"
|
|
||||||
msgstr "Debug activé"
|
|
||||||
|
|
||||||
msgid "Delete"
|
|
||||||
msgstr "Supprimer"
|
|
||||||
|
|
||||||
msgid "Delete :"
|
|
||||||
msgstr "Supprimé : "
|
|
||||||
|
|
||||||
msgid "Disable :"
|
|
||||||
msgstr "Désactivé : "
|
|
||||||
|
|
||||||
msgid "Download and use this script on the project website"
|
|
||||||
msgstr "Télécharger et utiliser ce script sur le site du projet"
|
|
||||||
|
|
||||||
msgid "Erreur"
|
|
||||||
msgstr "Erreur"
|
|
||||||
|
|
||||||
msgid "Error : Your email can not contain a trash domain"
|
|
||||||
msgstr "Erreur : votre email ne peut pas être un email poubelle"
|
|
||||||
|
|
||||||
msgid "Error : email address incorrect"
|
|
||||||
msgstr "Erreur : Adresse email incorrect"
|
|
||||||
|
|
||||||
msgid "Error : no known active trash email"
|
|
||||||
msgstr "Erreur : aucun email actif connu"
|
|
||||||
|
|
||||||
msgid "Error : the alias file cannot be written. Please contact the admin"
|
|
||||||
msgstr ""
|
|
||||||
"Erreur : le fichier d\\'alias ne peut pas être écrit. Merci de contacter l"
|
|
||||||
"\\'administrateur"
|
|
||||||
|
|
||||||
msgid "Error : the blacklist file cannot be read. Please contact the admin"
|
|
||||||
msgstr ""
|
|
||||||
"Erreur : un fichier de blacklist est renseigné mais n\\'est pas lisible. "
|
|
||||||
"Merci de contacter l\\'administrateur"
|
|
||||||
|
|
||||||
msgid ""
|
|
||||||
"Error : the configuration file conf.php might not be included because the "
|
|
||||||
"constants are not declared"
|
|
||||||
msgstr ""
|
|
||||||
"Erreur : Il ne semble pas que le fichier de configuration conf.php soit "
|
|
||||||
"inclue car les constantes ne sont pas présentes"
|
|
||||||
|
|
||||||
msgid ""
|
|
||||||
"Error : the forbidden aliases file cannot be read. Please contact the admin"
|
|
||||||
msgstr ""
|
|
||||||
"Erreur : un fichier d\\'alias interdit est renseigné mais n\\'est pas "
|
|
||||||
"lisible. Merci de contacter l\\'administrateur"
|
|
||||||
|
|
||||||
msgid ""
|
|
||||||
"Error : the working directory cannot be written. Please contact the admin"
|
|
||||||
msgstr ""
|
|
||||||
"Erreur : le répertoire de travail ne peut pas être écrit. Merci de contacter "
|
|
||||||
"l\\'administrateur"
|
|
||||||
|
|
||||||
msgid "Error : this domain cannot be used"
|
|
||||||
msgstr "Erreur : ce domain n\\'est pas pris en charge"
|
|
||||||
|
|
||||||
msgid "Error : this trash email already exists"
|
|
||||||
msgstr "Erreur : cet email poubelle est déjà utilisé"
|
|
||||||
|
|
||||||
msgid "Error : trash email address forbidden"
|
|
||||||
msgstr "Erreur : email poubelle interdit"
|
|
||||||
|
|
||||||
msgid "Error : trash email address syntax incorrect"
|
|
||||||
msgstr "Erreur : Format de l\\'email poubelle incorrect"
|
|
||||||
|
|
||||||
msgid "Error : unknown ID or already validated"
|
|
||||||
msgstr "Erreur : ID introuvable ou déjà validé"
|
|
||||||
|
|
||||||
msgid "Error : unknown trash email"
|
|
||||||
msgstr "Erreur : impossible de trouver cet email poubelle"
|
|
||||||
|
|
||||||
msgid "Error : you have been blacklisted"
|
|
||||||
msgstr "Erreur : vous avez été blacklisté sur ce service"
|
|
||||||
|
|
||||||
msgid "Error initializing tables. Please contact the admin"
|
|
||||||
msgstr ""
|
|
||||||
"Erreur à l\\'initialisation des tables. Merci de contacter l"
|
|
||||||
"\\'administrateur "
|
|
||||||
|
|
||||||
msgid "Error: Can not find this trash email"
|
|
||||||
msgstr "Erreur : impossible de trouver cet email poubelle"
|
|
||||||
|
|
||||||
msgid "Error: Incorrect password"
|
|
||||||
msgstr "Erreur : mot de passe incorrect"
|
|
||||||
|
|
||||||
msgid ""
|
|
||||||
"Error: You have reached your limit quota on this app. You can <a href="
|
|
||||||
"\"http://forge.zici.fr/p/emailpoubelle-php/\"> install this script </a> on a "
|
|
||||||
"personal server if you want more quota"
|
|
||||||
msgstr ""
|
|
||||||
"Erreur : Vous avez atteind votre quota limite d'alias sur cette "
|
|
||||||
"application. Vous pouvez <a href=\"http://forge.zici.fr/p/emailpoubelle-php/"
|
|
||||||
"\">installer ce script</a> sur un serveur personnel si vous voulez plus de "
|
|
||||||
"quota."
|
|
||||||
|
|
||||||
msgid "Error: email trash unknown"
|
|
||||||
msgstr "Erreur : email poubelle inconnu"
|
|
||||||
|
|
||||||
msgid "Error: unknown status"
|
|
||||||
msgstr "Erreur : statu inconnu"
|
|
||||||
|
|
||||||
msgid "Ex : Inscription sur zici.fr"
|
|
||||||
msgstr "Ex : Inscription sur zici.fr"
|
|
||||||
|
|
||||||
msgid "Ex : john_shop"
|
|
||||||
msgstr "Ex : jean-petiteannonce"
|
|
||||||
|
|
||||||
msgid ""
|
|
||||||
"If you would like to temporary suspend this trash email, you can follow the "
|
|
||||||
"link bellow :"
|
|
||||||
msgstr ""
|
|
||||||
"Sinon pour suspendre temporairement cet email poubelle vous pouvez vous "
|
|
||||||
"rendre sur le lien ci-dessous : "
|
|
||||||
|
|
||||||
msgid "List"
|
|
||||||
msgstr "Lister"
|
|
||||||
|
|
||||||
msgid "List trash email"
|
|
||||||
msgstr "Liste email poubelle"
|
|
||||||
|
|
||||||
msgid "List trash email activate"
|
|
||||||
msgstr "Liste de vos email poubelles actif"
|
|
||||||
|
|
||||||
msgid "List trash email disable"
|
|
||||||
msgstr "Liste de vos email poubelles désactivé"
|
|
||||||
|
|
||||||
msgid "Name of your trash email address"
|
|
||||||
msgstr "Nom de l'email poubelle"
|
|
||||||
|
|
||||||
msgid "Remember"
|
|
||||||
msgstr "Mémoriser"
|
|
||||||
|
|
||||||
msgid "Resume"
|
|
||||||
msgstr "Reprendre"
|
|
||||||
|
|
||||||
msgid "Service under maintenance"
|
|
||||||
msgstr "Le service est en maintenance"
|
|
||||||
|
|
||||||
msgid "Statistics"
|
|
||||||
msgstr "Statistique"
|
|
||||||
|
|
||||||
msgid "Suspend"
|
|
||||||
msgstr "Suspendre"
|
|
||||||
|
|
||||||
msgid "The reception on"
|
|
||||||
msgstr "La réception sur"
|
|
||||||
|
|
||||||
msgid "The scheduled task is running"
|
|
||||||
msgstr "La tâche planifié est lancé"
|
|
||||||
|
|
||||||
msgid "To delete this trash email, click on the link below :"
|
|
||||||
msgstr ""
|
|
||||||
"Pour supprimer cet email poubelle vous pouvez vous rendre sur le lien ci-"
|
|
||||||
"dessous :"
|
|
||||||
|
|
||||||
msgid "Total alias"
|
|
||||||
msgstr "Alias total"
|
|
||||||
|
|
||||||
msgid "Unlimited time"
|
|
||||||
msgstr "Illimité"
|
|
||||||
|
|
||||||
msgid "User email"
|
|
||||||
msgstr "Email de l'utilisateur"
|
|
||||||
|
|
||||||
msgid "Version"
|
|
||||||
msgstr "Version"
|
|
||||||
|
|
||||||
msgid "You didn't allow the scheduled job"
|
|
||||||
msgstr "Vous n\\'avez pas autorisé le lancement par tâche planifié"
|
|
||||||
|
|
||||||
msgid "Your email address"
|
|
||||||
msgstr "Votre email "
|
|
||||||
|
|
||||||
msgid "Your real email address"
|
|
||||||
msgstr "Votre email réel"
|
|
||||||
|
|
||||||
msgid "Your trash email address"
|
|
||||||
msgstr "Votre email poubelle"
|
|
||||||
|
|
||||||
msgid "can not be suspended because it has not been activated yet"
|
|
||||||
msgstr "ne peut pas être suspendu car il n'a pas encore été activé"
|
|
||||||
|
|
||||||
msgid "et expire le"
|
|
||||||
msgstr "et expire le"
|
|
||||||
|
|
||||||
msgid "has been deleted"
|
|
||||||
msgstr "a bien été supprimé"
|
|
||||||
|
|
||||||
msgid "has been deleted with all these aliases"
|
|
||||||
msgstr "a été supprimé avec tout ces alias"
|
|
||||||
|
|
||||||
msgid "has not been confirmed by email"
|
|
||||||
msgstr "n\\'à pas été confirmé par email"
|
|
||||||
|
|
||||||
msgid "has not been deleted"
|
|
||||||
msgstr "n'a pas été supprimé"
|
|
||||||
|
|
||||||
msgid "is active again"
|
|
||||||
msgstr "est maintenant activé"
|
|
||||||
|
|
||||||
msgid "is already active"
|
|
||||||
msgstr "est déjà activé"
|
|
||||||
|
|
||||||
msgid "is already suspended"
|
|
||||||
msgstr "Est déjà suspendu"
|
|
||||||
|
|
||||||
msgid "is now enabled"
|
|
||||||
msgstr "est maintenant actif"
|
|
||||||
|
|
||||||
msgid "is now suspended"
|
|
||||||
msgstr "Est maintenant suspendu"
|
|
||||||
|
|
||||||
msgid "is unknown, a confirmation has been sent to you."
|
|
||||||
msgstr "nous étant inconnu, une confirmation vous a été envoyé par email."
|
|
|
@ -1,399 +0,0 @@
|
||||||
# SOME DESCRIPTIVE TITLE.
|
|
||||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
|
||||||
# This file is distributed under the same license as the PACKAGE package.
|
|
||||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
|
||||||
#
|
|
||||||
#
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
|
||||||
"Report-Msgid-Bugs-To: \n"
|
|
||||||
"POT-Creation-Date: 2018-11-16 12:45+0100\n"
|
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
|
||||||
"Language: it_IT\n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
|
||||||
|
|
||||||
#: emailPoubelleAdmin.php:27
|
|
||||||
msgid "Error: Incorrect password"
|
|
||||||
msgstr "Errore : Password è errata"
|
|
||||||
|
|
||||||
#: emailPoubelleAdmin.php:75
|
|
||||||
msgid "Statistics"
|
|
||||||
msgstr "Statistica"
|
|
||||||
|
|
||||||
#: emailPoubelleAdmin.php:77
|
|
||||||
msgid "Total alias"
|
|
||||||
msgstr "Alias Total"
|
|
||||||
|
|
||||||
#: emailPoubelleAdmin.php:78
|
|
||||||
msgid "Active alias"
|
|
||||||
msgstr "Alias attivi"
|
|
||||||
|
|
||||||
#: emailPoubelleAdmin.php:79
|
|
||||||
msgid "Alias suspended"
|
|
||||||
msgstr "Alias Sospesi"
|
|
||||||
|
|
||||||
#: emailPoubelleAdmin.php:80
|
|
||||||
msgid "Alias not verified"
|
|
||||||
msgstr "Alias non verificati"
|
|
||||||
|
|
||||||
#: emailPoubelleAdmin.php:86
|
|
||||||
msgid "User email"
|
|
||||||
msgstr "Email dell'utente"
|
|
||||||
|
|
||||||
#: emailPoubelle.php:22
|
|
||||||
msgid "Debug enabled"
|
|
||||||
msgstr "Debug abilitato"
|
|
||||||
|
|
||||||
#: emailPoubelle.php:28
|
|
||||||
msgid ""
|
|
||||||
"Error : the configuration file conf.php might not be included because the "
|
|
||||||
"constants are not declared"
|
|
||||||
msgstr ""
|
|
||||||
"Errore : Il file di configurazione conf.php forse non è incluso "
|
|
||||||
" perché i constanti non sono dichiarate"
|
|
||||||
|
|
||||||
#: emailPoubelle.php:31
|
|
||||||
msgid ""
|
|
||||||
"Error : the working directory cannot be written. Please contact the admin"
|
|
||||||
msgstr ""
|
|
||||||
"Errore : il directory corrente non puo essere modificato. "
|
|
||||||
"Contatta l'amministratore per favore."
|
|
||||||
|
|
||||||
#: emailPoubelle.php:34
|
|
||||||
msgid "Error : the alias file cannot be written. Please contact the admin"
|
|
||||||
msgstr "Errore : il alias file non puo essere modificato. "
|
|
||||||
"Contatta l'amministratore per favore."
|
|
||||||
|
|
||||||
#: emailPoubelle.php:37
|
|
||||||
msgid "Error : the blacklist file cannot be read. Please contact the admin"
|
|
||||||
msgstr "Errore : il file della lista nera non puo essere modificato. "
|
|
||||||
"Contatta l'amministratore per favore."
|
|
||||||
|
|
||||||
#: emailPoubelle.php:40
|
|
||||||
msgid ""
|
|
||||||
"Error : the forbidden aliases file cannot be read. Please contact the admin"
|
|
||||||
msgstr ""
|
|
||||||
"Errore : Il proibito alias file non puo essere modificato."
|
|
||||||
"Contatta l'amministratore per favore."
|
|
||||||
|
|
||||||
#: emailPoubelle.php:43 emailPoubelle.php:47
|
|
||||||
msgid "Service under maintenance"
|
|
||||||
msgstr "Servizio in manutenzione"
|
|
||||||
|
|
||||||
#: emailPoubelle.php:85
|
|
||||||
msgid "Error initializing tables. Please contact the admin"
|
|
||||||
msgstr "Errore per inizializzare le tabelle. Per favore contatta "
|
|
||||||
"l'amministratore"
|
|
||||||
|
|
||||||
#: emailPoubelle.php:102 emailPoubelle.php:173
|
|
||||||
msgid "Your trash email address"
|
|
||||||
msgstr "Il tuo email rifiuti indirizzo"
|
|
||||||
|
|
||||||
#: emailPoubelle.php:102 emailPoubelle.php:173
|
|
||||||
msgid "is now enabled"
|
|
||||||
msgstr "è adesso attivo"
|
|
||||||
|
|
||||||
#: emailPoubelle.php:104
|
|
||||||
msgid "Error : unknown ID or already validated"
|
|
||||||
msgstr "Errore : ID non è conosciuto o già validato"
|
|
||||||
|
|
||||||
#: emailPoubelle.php:121
|
|
||||||
msgid "The scheduled task is running"
|
|
||||||
msgstr "L'attività pianificate è in esecuzione "
|
|
||||||
|
|
||||||
#: emailPoubelle.php:124
|
|
||||||
msgid "You didn't allow the scheduled job"
|
|
||||||
msgstr "L'attività pianificate non è autorizata"
|
|
||||||
|
|
||||||
#: emailPoubelle.php:134 emailPoubelle.php:136 emailPoubelle.php:151
|
|
||||||
#: emailPoubelle.php:153
|
|
||||||
msgid "Error : email address incorrect"
|
|
||||||
msgstr "Errore : Indirizzo email errato"
|
|
||||||
|
|
||||||
#: emailPoubelle.php:138 emailPoubelle.php:200
|
|
||||||
msgid "An email has been sent to you"
|
|
||||||
msgstr "Ti è stata inviata un'email"
|
|
||||||
|
|
||||||
#: emailPoubelle.php:140
|
|
||||||
msgid "Error : no known active trash email"
|
|
||||||
msgstr "Errore : Nessun'email rifiuti attiva conosciuta"
|
|
||||||
|
|
||||||
#: emailPoubelle.php:155
|
|
||||||
msgid "Error : trash email address syntax incorrect"
|
|
||||||
msgstr "Errore : La sintassi dell'indorizzo email rifiuti è errata"
|
|
||||||
|
|
||||||
#: emailPoubelle.php:157
|
|
||||||
msgid "Error : this domain cannot be used"
|
|
||||||
msgstr "Errore : Il dominio non puo essere utilizzato"
|
|
||||||
|
|
||||||
#: emailPoubelle.php:159
|
|
||||||
msgid "Error : Your email can not contain a trash domain"
|
|
||||||
msgstr "Errore : La tua email non puo contenare un dominio rifiuti"
|
|
||||||
|
|
||||||
#: emailPoubelle.php:161
|
|
||||||
msgid "Error : trash email address forbidden"
|
|
||||||
msgstr "Errore : Indirizzo email rifiuti vietato"
|
|
||||||
|
|
||||||
#: emailPoubelle.php:163
|
|
||||||
msgid "Error : you have been blacklisted"
|
|
||||||
msgstr "Errore : Sei stato nella lista nera"
|
|
||||||
|
|
||||||
#: emailPoubelle.php:167
|
|
||||||
msgid "Error : this trash email already exists"
|
|
||||||
msgstr "Errore : Questo email rifiuti esista già"
|
|
||||||
|
|
||||||
#: emailPoubelle.php:169
|
|
||||||
msgid ""
|
|
||||||
"Error: You have reached your limit quota on this app. You can <a href="
|
|
||||||
"\"http://forge.zici.fr/p/emailpoubelle-php/\"> install this script </a> on a "
|
|
||||||
"personal server if you want more quota"
|
|
||||||
msgstr ""
|
|
||||||
"Errore : Hai raggiunto la tua limite su questa app. Puoi <a href="
|
|
||||||
"\"http://forge.zici.fr/p/emailpoubelle-php/\"> installare questo script </a> "
|
|
||||||
"su un server personale se vuoi più quota"
|
|
||||||
|
|
||||||
#: emailPoubelle.php:176
|
|
||||||
msgid "Confirmation of the creation of your trash email :"
|
|
||||||
msgstr "Confirmazione della creazione della tua email rifiuti"
|
|
||||||
|
|
||||||
#: emailPoubelle.php:178
|
|
||||||
msgid "Click on the link below to validate :"
|
|
||||||
msgstr "Clicca sul link sottostante per confermare"
|
|
||||||
|
|
||||||
#: emailPoubelle.php:181
|
|
||||||
msgid "To delete this trash email, click on the link below :"
|
|
||||||
msgstr "per sopprimere questa email rifiuti, clicca sul link sottostante"
|
|
||||||
|
|
||||||
#: emailPoubelle.php:184
|
|
||||||
msgid ""
|
|
||||||
"After confirmation, you will be able to temporary suspend you trash email "
|
|
||||||
"using the link below :"
|
|
||||||
msgstr ""
|
|
||||||
"Doppo confermazione, sara possibile di temporanea sospendere la tua email"
|
|
||||||
"rifiuti con il link sottostante"
|
|
||||||
|
|
||||||
#: emailPoubelle.php:186
|
|
||||||
msgid "Alias confirmation"
|
|
||||||
msgstr "Alias confermazione"
|
|
||||||
|
|
||||||
#: emailPoubelle.php:187
|
|
||||||
msgid "Your email address"
|
|
||||||
msgstr "Il tuo indirizzo email"
|
|
||||||
|
|
||||||
#: emailPoubelle.php:187
|
|
||||||
msgid "is unknown, a confirmation has been sent to you."
|
|
||||||
msgstr "non è conosciuto, una confermazione richiesta ti es stata inviata"
|
|
||||||
|
|
||||||
#: emailPoubelle.php:193
|
|
||||||
msgid "Confirmation of the removal of your trash email : "
|
|
||||||
msgstr "Confermazione per la soppressione della tua email rifiuti"
|
|
||||||
|
|
||||||
#: emailPoubelle.php:195
|
|
||||||
msgid "Click on the link below to validate the deletion :"
|
|
||||||
msgstr "Clicca sul link sottostante per confermare la soppressione"
|
|
||||||
|
|
||||||
#: emailPoubelle.php:197
|
|
||||||
msgid ""
|
|
||||||
"If you would like to temporary suspend this trash email, you can follow the "
|
|
||||||
"link bellow :"
|
|
||||||
msgstr ""
|
|
||||||
"Se vuoi temporeano sospendere la tua email rifiuti, clicca sul link "
|
|
||||||
"sottostante"
|
|
||||||
|
|
||||||
#: emailPoubelle.php:199
|
|
||||||
msgid "Alias deletion"
|
|
||||||
msgstr "Alias cancellatura"
|
|
||||||
|
|
||||||
#: emailPoubelle.php:202
|
|
||||||
msgid "Error : unknown trash email"
|
|
||||||
msgstr "Errore : Email rifiuti non è conosciuta"
|
|
||||||
|
|
||||||
#: emailPoubelle.php:230
|
|
||||||
msgid "Add"
|
|
||||||
msgstr "Aggiungere"
|
|
||||||
|
|
||||||
#: emailPoubelle.php:231
|
|
||||||
msgid "List"
|
|
||||||
msgstr "Listare"
|
|
||||||
|
|
||||||
#: emailPoubelle.php:232 emailPoubelle.php:274
|
|
||||||
msgid "Delete"
|
|
||||||
msgstr "Sopprimere"
|
|
||||||
|
|
||||||
#: emailPoubelle.php:233 emailPoubelle.php:275
|
|
||||||
msgid "Suspend"
|
|
||||||
msgstr "Sospendere"
|
|
||||||
|
|
||||||
#: emailPoubelle.php:234 emailPoubelle.php:276
|
|
||||||
msgid "Resume"
|
|
||||||
msgstr "Riprendere"
|
|
||||||
|
|
||||||
#: emailPoubelle.php:238
|
|
||||||
msgid "Your real email address"
|
|
||||||
msgstr "Il tuo vero email indirizzo"
|
|
||||||
|
|
||||||
#: emailPoubelle.php:241
|
|
||||||
msgid "Remember"
|
|
||||||
msgstr "Ricordarsi"
|
|
||||||
|
|
||||||
#: emailPoubelle.php:244
|
|
||||||
msgid "Name of your trash email address"
|
|
||||||
msgstr "Il nome dello tuo email rifiuti indirizzo"
|
|
||||||
|
|
||||||
#: emailPoubelle.php:245
|
|
||||||
msgid "Ex : john_shop"
|
|
||||||
msgstr "Ex : john_shop"
|
|
||||||
|
|
||||||
#: emailPoubelle.php:258
|
|
||||||
msgid "Unlimited time"
|
|
||||||
msgstr "Tempo illimitato"
|
|
||||||
|
|
||||||
#: emailPoubelle.php:259
|
|
||||||
msgid "2 hours"
|
|
||||||
msgstr "2 ore"
|
|
||||||
|
|
||||||
#: emailPoubelle.php:260
|
|
||||||
msgid "6 hours"
|
|
||||||
msgstr "6 ore"
|
|
||||||
|
|
||||||
#: emailPoubelle.php:261
|
|
||||||
msgid "1 day"
|
|
||||||
msgstr "1 giorno"
|
|
||||||
|
|
||||||
#: emailPoubelle.php:262
|
|
||||||
msgid "7 days"
|
|
||||||
msgstr "7 giorni"
|
|
||||||
|
|
||||||
#: emailPoubelle.php:263
|
|
||||||
msgid "15 days"
|
|
||||||
msgstr "15 giorni"
|
|
||||||
|
|
||||||
#: emailPoubelle.php:264
|
|
||||||
msgid "30 days"
|
|
||||||
msgstr "30 giorni"
|
|
||||||
|
|
||||||
#: emailPoubelle.php:265
|
|
||||||
msgid "90 days"
|
|
||||||
msgstr "90 giorni"
|
|
||||||
|
|
||||||
#: emailPoubelle.php:269
|
|
||||||
msgid "Comment for this trash email (for your to remember)"
|
|
||||||
msgstr "Commento su questa email rifiuti (per ricordarti)"
|
|
||||||
|
|
||||||
#: emailPoubelle.php:270
|
|
||||||
msgid "Ex : Inscription sur zici.fr"
|
|
||||||
msgstr "Ex: Iscrizione su zici.fr"
|
|
||||||
|
|
||||||
#: emailPoubelle.php:273
|
|
||||||
msgid "Activate"
|
|
||||||
msgstr "Attivare"
|
|
||||||
|
|
||||||
#: emailPoubelle.php:362
|
|
||||||
msgid "Version"
|
|
||||||
msgstr "Versione"
|
|
||||||
|
|
||||||
#: emailPoubelle.php:362
|
|
||||||
msgid "Created by David Mercereau under licence GNU GPL v3"
|
|
||||||
msgstr "Creato da David Mercereau sotto la licenza GNU GPL v3"
|
|
||||||
|
|
||||||
#: emailPoubelle.php:363
|
|
||||||
msgid "Download and use this script on the project website"
|
|
||||||
msgstr "Scarica é utiliza questo script sul website del projetto"
|
|
||||||
|
|
||||||
#: ep_function.php:93
|
|
||||||
msgid "has been deleted with all these aliases"
|
|
||||||
msgstr "e stato cancellato con tutti i alias"
|
|
||||||
|
|
||||||
#: ep_function.php:99
|
|
||||||
msgid "Erreur"
|
|
||||||
msgstr "Errore"
|
|
||||||
|
|
||||||
#: ep_function.php:99
|
|
||||||
msgid "has not been deleted"
|
|
||||||
msgstr "non e stato cancellato"
|
|
||||||
|
|
||||||
#: ep_function.php:120
|
|
||||||
msgid "has been deleted"
|
|
||||||
msgstr "e stato cancellato"
|
|
||||||
|
|
||||||
#: ep_function.php:126
|
|
||||||
msgid "Error: email trash unknown"
|
|
||||||
msgstr "Errore : Email rifiuti non è conosciuta"
|
|
||||||
|
|
||||||
#: ep_function.php:145 ep_function.php:173
|
|
||||||
msgid "Error: Can not find this trash email"
|
|
||||||
msgstr "Errore : Questa email rifiuti non è stata trovata"
|
|
||||||
|
|
||||||
#: ep_function.php:148 ep_function.php:150 ep_function.php:152
|
|
||||||
#: ep_function.php:176 ep_function.php:178 ep_function.php:180
|
|
||||||
msgid "The reception on"
|
|
||||||
msgstr "La ricezione su"
|
|
||||||
|
|
||||||
#: ep_function.php:148
|
|
||||||
msgid "is active again"
|
|
||||||
msgstr "è riattivata"
|
|
||||||
|
|
||||||
#: ep_function.php:150
|
|
||||||
msgid "is already active"
|
|
||||||
msgstr "è gia attivata"
|
|
||||||
|
|
||||||
#: ep_function.php:152
|
|
||||||
msgid "has not been confirmed by email"
|
|
||||||
msgstr "non è stata confermata da email"
|
|
||||||
|
|
||||||
#: ep_function.php:154 ep_function.php:182
|
|
||||||
msgid "Error: unknown status"
|
|
||||||
msgstr "Errore : Stato sconosciuto"
|
|
||||||
|
|
||||||
#: ep_function.php:176
|
|
||||||
msgid "is now suspended"
|
|
||||||
msgstr "è addesso sospesa"
|
|
||||||
|
|
||||||
#: ep_function.php:178
|
|
||||||
msgid "is already suspended"
|
|
||||||
msgstr "è gia sospesa"
|
|
||||||
|
|
||||||
#: ep_function.php:180
|
|
||||||
msgid "can not be suspended because it has not been activated yet"
|
|
||||||
msgstr "non puo essere sospesa perchè non è stata ancora attivata"
|
|
||||||
|
|
||||||
#: ep_function.php:254
|
|
||||||
msgid "List trash email activate"
|
|
||||||
msgstr "La lista di email rifiuti è attivata"
|
|
||||||
|
|
||||||
#: ep_function.php:257
|
|
||||||
msgid "List trash email disable"
|
|
||||||
msgstr "La lista di email rifiuti è disattivata"
|
|
||||||
|
|
||||||
#: ep_function.php:259
|
|
||||||
msgid "Create "
|
|
||||||
msgstr "Creare"
|
|
||||||
|
|
||||||
#: ep_function.php:261
|
|
||||||
msgid "and expires on"
|
|
||||||
msgstr "e scade alle"
|
|
||||||
|
|
||||||
#: ep_function.php:265
|
|
||||||
msgid "Comment :"
|
|
||||||
msgstr "Commento :"
|
|
||||||
|
|
||||||
#: ep_function.php:268
|
|
||||||
msgid "Disable :"
|
|
||||||
msgstr "Disattivare :"
|
|
||||||
|
|
||||||
#: ep_function.php:271
|
|
||||||
msgid "Activate :"
|
|
||||||
msgstr "Attivare :"
|
|
||||||
|
|
||||||
#: ep_function.php:274
|
|
||||||
msgid "Delete :"
|
|
||||||
msgstr "Cancellare :"
|
|
||||||
|
|
||||||
#: ep_function.php:280
|
|
||||||
msgid "List trash email"
|
|
||||||
msgstr "Listare email rifiuti"
|
|
|
@ -1,383 +0,0 @@
|
||||||
# SOME DESCRIPTIVE TITLE.
|
|
||||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
|
||||||
# This file is distributed under the same license as the PACKAGE package.
|
|
||||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
|
||||||
#
|
|
||||||
#, fuzzy
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
|
||||||
"Report-Msgid-Bugs-To: \n"
|
|
||||||
"POT-Creation-Date: 2018-11-16 12:45+0100\n"
|
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
|
||||||
"Language: \n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=CHARSET\n"
|
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
|
||||||
|
|
||||||
#: emailPoubelleAdmin.php:27
|
|
||||||
msgid "Error: Incorrect password"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: emailPoubelleAdmin.php:75
|
|
||||||
msgid "Statistics"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: emailPoubelleAdmin.php:77
|
|
||||||
msgid "Total alias"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: emailPoubelleAdmin.php:78
|
|
||||||
msgid "Active alias"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: emailPoubelleAdmin.php:79
|
|
||||||
msgid "Alias suspended"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: emailPoubelleAdmin.php:80
|
|
||||||
msgid "Alias not verified"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: emailPoubelleAdmin.php:86
|
|
||||||
msgid "User email"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: emailPoubelle.php:22
|
|
||||||
msgid "Debug enabled"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: emailPoubelle.php:28
|
|
||||||
msgid ""
|
|
||||||
"Error : the configuration file conf.php might not be included because the "
|
|
||||||
"constants are not declared"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: emailPoubelle.php:31
|
|
||||||
msgid ""
|
|
||||||
"Error : the working directory cannot be written. Please contact the admin"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: emailPoubelle.php:34
|
|
||||||
msgid "Error : the alias file cannot be written. Please contact the admin"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: emailPoubelle.php:37
|
|
||||||
msgid "Error : the blacklist file cannot be read. Please contact the admin"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: emailPoubelle.php:40
|
|
||||||
msgid ""
|
|
||||||
"Error : the forbidden aliases file cannot be read. Please contact the admin"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: emailPoubelle.php:43 emailPoubelle.php:47
|
|
||||||
msgid "Service under maintenance"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: emailPoubelle.php:85
|
|
||||||
msgid "Error initializing tables. Please contact the admin"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: emailPoubelle.php:102 emailPoubelle.php:173
|
|
||||||
msgid "Your trash email address"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: emailPoubelle.php:102 emailPoubelle.php:173
|
|
||||||
msgid "is now enabled"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: emailPoubelle.php:104
|
|
||||||
msgid "Error : unknown ID or already validated"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: emailPoubelle.php:121
|
|
||||||
msgid "The scheduled task is running"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: emailPoubelle.php:124
|
|
||||||
msgid "You didn't allow the scheduled job"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: emailPoubelle.php:134 emailPoubelle.php:136 emailPoubelle.php:151
|
|
||||||
#: emailPoubelle.php:153
|
|
||||||
msgid "Error : email address incorrect"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: emailPoubelle.php:138 emailPoubelle.php:200
|
|
||||||
msgid "An email has been sent to you"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: emailPoubelle.php:140
|
|
||||||
msgid "Error : no known active trash email"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: emailPoubelle.php:155
|
|
||||||
msgid "Error : trash email address syntax incorrect"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: emailPoubelle.php:157
|
|
||||||
msgid "Error : this domain cannot be used"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: emailPoubelle.php:159
|
|
||||||
msgid "Error : Your email can not contain a trash domain"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: emailPoubelle.php:161
|
|
||||||
msgid "Error : trash email address forbidden"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: emailPoubelle.php:163
|
|
||||||
msgid "Error : you have been blacklisted"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: emailPoubelle.php:167
|
|
||||||
msgid "Error : this trash email already exists"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: emailPoubelle.php:169
|
|
||||||
msgid ""
|
|
||||||
"Error: You have reached your limit quota on this app. You can <a href="
|
|
||||||
"\"http://forge.zici.fr/p/emailpoubelle-php/\"> install this script </a> on a "
|
|
||||||
"personal server if you want more quota"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: emailPoubelle.php:176
|
|
||||||
msgid "Confirmation of the creation of your trash email :"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: emailPoubelle.php:178
|
|
||||||
msgid "Click on the link below to validate :"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: emailPoubelle.php:181
|
|
||||||
msgid "To delete this trash email, click on the link below :"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: emailPoubelle.php:184
|
|
||||||
msgid ""
|
|
||||||
"After confirmation, you will be able to temporary suspend you trash email "
|
|
||||||
"using the link below :"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: emailPoubelle.php:186
|
|
||||||
msgid "Alias confirmation"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: emailPoubelle.php:187
|
|
||||||
msgid "Your email address"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: emailPoubelle.php:187
|
|
||||||
msgid "is unknown, a confirmation has been sent to you."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: emailPoubelle.php:193
|
|
||||||
msgid "Confirmation of the removal of your trash email : "
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: emailPoubelle.php:195
|
|
||||||
msgid "Click on the link below to validate the deletion :"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: emailPoubelle.php:197
|
|
||||||
msgid ""
|
|
||||||
"If you would like to temporary suspend this trash email, you can follow the "
|
|
||||||
"link bellow :"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: emailPoubelle.php:199
|
|
||||||
msgid "Alias deletion"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: emailPoubelle.php:202
|
|
||||||
msgid "Error : unknown trash email"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: emailPoubelle.php:230
|
|
||||||
msgid "Add"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: emailPoubelle.php:231
|
|
||||||
msgid "List"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: emailPoubelle.php:232 emailPoubelle.php:274
|
|
||||||
msgid "Delete"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: emailPoubelle.php:233 emailPoubelle.php:275
|
|
||||||
msgid "Suspend"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: emailPoubelle.php:234 emailPoubelle.php:276
|
|
||||||
msgid "Resume"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: emailPoubelle.php:238
|
|
||||||
msgid "Your real email address"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: emailPoubelle.php:241
|
|
||||||
msgid "Remember"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: emailPoubelle.php:244
|
|
||||||
msgid "Name of your trash email address"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: emailPoubelle.php:245
|
|
||||||
msgid "Ex : john_shop"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: emailPoubelle.php:258
|
|
||||||
msgid "Unlimited time"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: emailPoubelle.php:259
|
|
||||||
msgid "2 hours"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: emailPoubelle.php:260
|
|
||||||
msgid "6 hours"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: emailPoubelle.php:261
|
|
||||||
msgid "1 day"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: emailPoubelle.php:262
|
|
||||||
msgid "7 days"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: emailPoubelle.php:263
|
|
||||||
msgid "15 days"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: emailPoubelle.php:264
|
|
||||||
msgid "30 days"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: emailPoubelle.php:265
|
|
||||||
msgid "90 days"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: emailPoubelle.php:269
|
|
||||||
msgid "Comment for this trash email (for your to remember)"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: emailPoubelle.php:270
|
|
||||||
msgid "Ex : Inscription sur zici.fr"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: emailPoubelle.php:273
|
|
||||||
msgid "Activate"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: emailPoubelle.php:362
|
|
||||||
msgid "Version"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: emailPoubelle.php:362
|
|
||||||
msgid "Created by David Mercereau under licence GNU GPL v3"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: emailPoubelle.php:363
|
|
||||||
msgid "Download and use this script on the project website"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ep_function.php:93
|
|
||||||
msgid "has been deleted with all these aliases"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ep_function.php:99
|
|
||||||
msgid "Erreur"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ep_function.php:99
|
|
||||||
msgid "has not been deleted"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ep_function.php:120
|
|
||||||
msgid "has been deleted"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ep_function.php:126
|
|
||||||
msgid "Error: email trash unknown"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ep_function.php:145 ep_function.php:173
|
|
||||||
msgid "Error: Can not find this trash email"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ep_function.php:148 ep_function.php:150 ep_function.php:152
|
|
||||||
#: ep_function.php:176 ep_function.php:178 ep_function.php:180
|
|
||||||
msgid "The reception on"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ep_function.php:148
|
|
||||||
msgid "is active again"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ep_function.php:150
|
|
||||||
msgid "is already active"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ep_function.php:152
|
|
||||||
msgid "has not been confirmed by email"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ep_function.php:154 ep_function.php:182
|
|
||||||
msgid "Error: unknown status"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ep_function.php:176
|
|
||||||
msgid "is now suspended"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ep_function.php:178
|
|
||||||
msgid "is already suspended"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ep_function.php:180
|
|
||||||
msgid "can not be suspended because it has not been activated yet"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ep_function.php:254
|
|
||||||
msgid "List trash email activate"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ep_function.php:257
|
|
||||||
msgid "List trash email disable"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ep_function.php:259
|
|
||||||
msgid "Create "
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ep_function.php:261
|
|
||||||
msgid "and expires on"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ep_function.php:265
|
|
||||||
msgid "Comment :"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ep_function.php:268
|
|
||||||
msgid "Disable :"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ep_function.php:271
|
|
||||||
msgid "Activate :"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ep_function.php:274
|
|
||||||
msgid "Delete :"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ep_function.php:280
|
|
||||||
msgid "List trash email"
|
|
||||||
msgstr ""
|
|
|
@ -1,11 +0,0 @@
|
||||||
cp lib/ep_function.php .
|
|
||||||
xgettext *.php -o lang/messages.pot --from-code="UTF-8"
|
|
||||||
msgmerge --no-wrap -N lang/fr/LC_MESSAGES/messages.po lang/messages.pot > lang/fr/LC_MESSAGES/messages-new.po
|
|
||||||
|
|
||||||
# Edit lang/fr/LC_MESSAGES/messages-new.po
|
|
||||||
|
|
||||||
mv lang/fr/LC_MESSAGES/messages-new.po lang/fr/LC_MESSAGES/messages.po
|
|
||||||
mv lang/fr/LC_MESSAGES/messages-new.mo lang/fr/LC_MESSAGES/messages.mo
|
|
||||||
rm ep_function.php
|
|
||||||
msgfmt -o lang/fr/LC_MESSAGES/messages.mo -v lang/fr/LC_MESSAGES/messages.po
|
|
||||||
|
|
BIN
src/lib/blk.png
Before Width: | Height: | Size: 944 B |
Before Width: | Height: | Size: 35 KiB |
BIN
src/lib/en.png
Before Width: | Height: | Size: 1.1 KiB |
|
@ -1,492 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
//////////////////
|
|
||||||
// Function
|
|
||||||
//////////////////
|
|
||||||
|
|
||||||
// Status explication :
|
|
||||||
// 0=not verified - 3=disable - 5=active
|
|
||||||
|
|
||||||
|
|
||||||
// Verification des emails
|
|
||||||
function VerifMXemail($email) {
|
|
||||||
if (CHECKMX) {
|
|
||||||
$domaine=explode('@', $email);
|
|
||||||
$r = new Net_DNS2_Resolver(array('nameservers' => array(NS1, NS2)));
|
|
||||||
try {
|
|
||||||
$result = $r->query($domaine[1], 'MX');
|
|
||||||
} catch(Net_DNS2_Exception $e) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if ($result->answer) {
|
|
||||||
return true;
|
|
||||||
} else {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// postmap command
|
|
||||||
function UpdateVirtualDB() {
|
|
||||||
global $dbco;
|
|
||||||
try {
|
|
||||||
$selectcmd = $dbco->prepare("SELECT status, alias, email
|
|
||||||
FROM ".DBTABLEPREFIX."alias
|
|
||||||
WHERE status > 0
|
|
||||||
ORDER BY alias ASC");
|
|
||||||
$selectcmd->execute();
|
|
||||||
} catch ( PDOException $e ) {
|
|
||||||
echo "DB error : ", $e->getMessage();
|
|
||||||
die();
|
|
||||||
}
|
|
||||||
$file_content=null;
|
|
||||||
while($alias_db = $selectcmd->fetch()) {
|
|
||||||
if ($alias_db['status'] == 5) {
|
|
||||||
$file_content .= $alias_db['alias'].' '.$alias_db['email']."\n";
|
|
||||||
} else if ($alias_db['status'] == 3) {
|
|
||||||
$file_content .= $alias_db['alias']." devnull\n";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
$alias_file=fopen(FICHIERALIAS,'w');
|
|
||||||
fputs($alias_file, $file_content);
|
|
||||||
fclose($alias_file);
|
|
||||||
exec(BIN_POSTMAP.' '.FICHIERALIAS,$output,$return);
|
|
||||||
}
|
|
||||||
|
|
||||||
// add new alias
|
|
||||||
function AjouterAlias($status, $alias,$email, $life, $comment) {
|
|
||||||
global $dbco;
|
|
||||||
$dateCreat=date('Y-m-d H:i:s');
|
|
||||||
if ($life == 0) {
|
|
||||||
$dateExpir=NULL;
|
|
||||||
} else {
|
|
||||||
$dateExpir=date('Y-m-d H:i:s', time()+$life);
|
|
||||||
}
|
|
||||||
try {
|
|
||||||
$insertcmd = $dbco->prepare("INSERT INTO ".DBTABLEPREFIX."alias (status, alias, email, dateCreat, dateExpir, comment)
|
|
||||||
VALUES (:status, :alias, :email, :dateCreat, :dateExpir, :comment)");
|
|
||||||
$insertcmd->bindParam('status', $status, PDO::PARAM_INT);
|
|
||||||
$insertcmd->bindParam('alias', $alias, PDO::PARAM_STR);
|
|
||||||
$insertcmd->bindParam('email', $email, PDO::PARAM_STR);
|
|
||||||
$insertcmd->bindParam('dateCreat', $dateCreat, PDO::PARAM_STR);
|
|
||||||
$insertcmd->bindParam('dateExpir', $dateExpir, PDO::PARAM_STR);
|
|
||||||
$insertcmd->bindParam('comment', $comment, PDO::PARAM_STR);
|
|
||||||
$insertcmd->execute();
|
|
||||||
} catch ( PDOException $e ) {
|
|
||||||
echo "DB error : ", $e->getMessage();
|
|
||||||
die();
|
|
||||||
}
|
|
||||||
UpdateVirtualDB();
|
|
||||||
if (preg_match('/^sqlite/', DB)) {
|
|
||||||
return $dbco->lastInsertId();
|
|
||||||
} else {
|
|
||||||
$stmt = $dbco->query("SELECT LAST_INSERT_ID()");
|
|
||||||
return $stmt->fetchColumn();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
// delete email
|
|
||||||
function DeleteEmail($email) {
|
|
||||||
global $dbco;
|
|
||||||
if ($dbco->query("SELECT COUNT(*) FROM ".DBTABLEPREFIX."alias WHERE email = '".$email."'")->fetchColumn() != 0) {
|
|
||||||
try {
|
|
||||||
$deletecmd = $dbco->prepare("DELETE FROM ".DBTABLEPREFIX."alias WHERE email = :email");
|
|
||||||
$deletecmd->bindParam('email', $email, PDO::PARAM_STR);
|
|
||||||
$deletecmd->execute();
|
|
||||||
echo '<div class="highlight-3"><b>'.$email.'</b> '._('has been deleted with all these aliases').'.</div>';
|
|
||||||
} catch ( PDOException $e ) {
|
|
||||||
echo "DB error : ", $e->getMessage();
|
|
||||||
die();
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
echo '<div class="highlight-1">'._('Erreur').' : <b>'.$email.'</b> '._('has not been deleted').'.</div>';
|
|
||||||
}
|
|
||||||
UpdateVirtualDB();
|
|
||||||
}
|
|
||||||
|
|
||||||
function AddBlacklistEmail($email) {
|
|
||||||
$contenu = '/^'.$email.'$/';
|
|
||||||
$fichier = fopen(BLACKLIST, 'a');
|
|
||||||
fwrite($fichier, $contenu."\n");
|
|
||||||
fclose($fichier);
|
|
||||||
echo '<div class="highlight-3">La mention '.$contenu.' a été ajouté au fichier de blackliste '.BLACKLIST.'</div>';
|
|
||||||
}
|
|
||||||
// delete alias
|
|
||||||
function DeleteAlias($id, $alias_full) {
|
|
||||||
global $dbco;
|
|
||||||
if ($dbco->query("SELECT COUNT(*) FROM ".DBTABLEPREFIX."alias WHERE alias = '".$alias_full."' AND id = ".$id)->fetchColumn() != 0) {
|
|
||||||
try {
|
|
||||||
$deletecmd = $dbco->prepare("DELETE FROM ".DBTABLEPREFIX."alias WHERE id = :id AND alias = :alias_full");
|
|
||||||
$deletecmd->bindParam('id', $id, PDO::PARAM_INT);
|
|
||||||
$deletecmd->bindParam('alias_full', $alias_full, PDO::PARAM_STR);
|
|
||||||
$deletecmd->execute();
|
|
||||||
echo '<div class="highlight-3"><b>'.$alias_full.'</b> '._('has been deleted').'</div>';
|
|
||||||
} catch ( PDOException $e ) {
|
|
||||||
echo "DB error : ", $e->getMessage();
|
|
||||||
die();
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
echo '<div class="highlight-1">'._('Error: email trash unknown').'</div>';
|
|
||||||
}
|
|
||||||
UpdateVirtualDB();
|
|
||||||
}
|
|
||||||
|
|
||||||
// enable alias
|
|
||||||
function EnableAlias($id, $alias_full, $email) {
|
|
||||||
global $dbco;
|
|
||||||
if ($id == null) {
|
|
||||||
$selectcmd = $dbco->prepare("SELECT id,status FROM ".DBTABLEPREFIX."alias WHERE email = :email AND alias = :alias_full");
|
|
||||||
$selectcmd->bindParam('email', $email, PDO::PARAM_STR);
|
|
||||||
} else {
|
|
||||||
$selectcmd = $dbco->prepare("SELECT id,status FROM ".DBTABLEPREFIX."alias WHERE id = :id AND alias = :alias_full");
|
|
||||||
$selectcmd->bindParam('id', $id, PDO::PARAM_INT);
|
|
||||||
}
|
|
||||||
$selectcmd->bindParam('alias_full', $alias_full, PDO::PARAM_STR);
|
|
||||||
$selectcmd->execute();
|
|
||||||
$alias_fetch = $selectcmd->fetch();
|
|
||||||
if (! $alias_fetch) {
|
|
||||||
echo '<div class="highlight-1">'._('Error: Can not find this trash email').'</div>';
|
|
||||||
} else if ($alias_fetch['status'] == 3) {
|
|
||||||
UpdateStatusAlias($alias_fetch['id'], $alias_full, 5);
|
|
||||||
echo '<div class="highlight-3">'._('The reception on').' <b>'.$alias_full.'</b> '._('is active again').'.</div>';
|
|
||||||
} else if ($alias_fetch['status'] == 5) {
|
|
||||||
echo '<div class="highlight-2">'._('The reception on').' <b>'.$alias_full.'</b> '._('is already active').'.</div>';
|
|
||||||
} else if ($alias_fetch['status'] == 0) {
|
|
||||||
echo '<div class="highlight-1">'._('The reception on').' <b>'.$alias_full.'</b '._('has not been confirmed by email').'.</div>';
|
|
||||||
} else {
|
|
||||||
echo '<div class="highlight-1">'._('Error: unknown status').'</div>';
|
|
||||||
}
|
|
||||||
UpdateVirtualDB();
|
|
||||||
}
|
|
||||||
|
|
||||||
// disable alias
|
|
||||||
function DisableAlias($id, $alias_full, $email) {
|
|
||||||
global $dbco;
|
|
||||||
if ($id == null) {
|
|
||||||
$selectcmd = $dbco->prepare("SELECT id,status FROM ".DBTABLEPREFIX."alias WHERE email = :email AND alias = :alias_full");
|
|
||||||
$selectcmd->bindParam('email', $email, PDO::PARAM_STR);
|
|
||||||
} else {
|
|
||||||
$selectcmd = $dbco->prepare("SELECT id,status FROM ".DBTABLEPREFIX."alias WHERE id = :id AND alias = :alias_full");
|
|
||||||
$selectcmd->bindParam('id', $id, PDO::PARAM_INT);
|
|
||||||
}
|
|
||||||
$selectcmd->bindParam('alias_full', $alias_full, PDO::PARAM_STR);
|
|
||||||
$selectcmd->execute();
|
|
||||||
$alias_fetch = $selectcmd->fetch();
|
|
||||||
if (! $alias_fetch) {
|
|
||||||
echo '<div class="highlight-1">'._('Error: Can not find this trash email').'</div>';
|
|
||||||
} else if ($alias_fetch['status'] == 5) {
|
|
||||||
UpdateStatusAlias($alias_fetch['id'], $alias_full, 3);
|
|
||||||
echo '<div class="highlight-3">'._('The reception on').' <b>'.$alias_full.'</b> '._('is now suspended').'.</div>';
|
|
||||||
} else if ($alias_fetch['status'] == 3) {
|
|
||||||
echo '<div class="highlight-2">'._('The reception on').' <b>'.$alias_full.'</b> '._('is already suspended').'.</div>';
|
|
||||||
} else if ($alias_fetch['status'] == 0) {
|
|
||||||
echo '<div class="highlight-1">'._('The reception on').' <b>'.$alias_full.'</b> '._('can not be suspended because it has not been activated yet').'.</div>';
|
|
||||||
} else {
|
|
||||||
echo '<div class="highlight-1">'._('Error: unknown status').'</div>';
|
|
||||||
}
|
|
||||||
UpdateVirtualDB();
|
|
||||||
}
|
|
||||||
|
|
||||||
// update alias status
|
|
||||||
function UpdateStatusAlias($id, $alias_full, $status) {
|
|
||||||
global $dbco;
|
|
||||||
try {
|
|
||||||
$updatecmd = $dbco->prepare("UPDATE ".DBTABLEPREFIX."alias SET status = $status WHERE id = :id AND alias = :alias_full");
|
|
||||||
$updatecmd->bindParam('id', $id, PDO::PARAM_INT);
|
|
||||||
$updatecmd->bindParam('alias_full', $alias_full, PDO::PARAM_STR);
|
|
||||||
$updatecmd->execute();
|
|
||||||
} catch ( PDOException $e ) {
|
|
||||||
echo "DB error : ", $e->getMessage();
|
|
||||||
die();
|
|
||||||
}
|
|
||||||
UpdateVirtualDB();
|
|
||||||
}
|
|
||||||
|
|
||||||
// parse file for blacklist and aliasdeny
|
|
||||||
function parseFileRegex($file, $chaine) {
|
|
||||||
$return=false;
|
|
||||||
$handle = fopen($file, 'r');
|
|
||||||
while (!feof($handle)) {
|
|
||||||
$buffer = fgets($handle);
|
|
||||||
$buffer = str_replace("\n", "", $buffer);
|
|
||||||
if ($buffer) {
|
|
||||||
if (!preg_match('/^(#|$|;)/', $buffer) && preg_match($buffer, $chaine)) {
|
|
||||||
$return=true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
fclose($handle);
|
|
||||||
return $return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// check blacklistemail
|
|
||||||
function BlacklistEmail($email) {
|
|
||||||
if (defined('BLACKLIST')) {
|
|
||||||
return parseFileRegex(BLACKLIST, $email);
|
|
||||||
} else {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// check aliasdeny
|
|
||||||
function AliasDeny($alias) {
|
|
||||||
if (defined('ALIASDENY')) {
|
|
||||||
return parseFileRegex(ALIASDENY, $alias);
|
|
||||||
} else {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// list alias
|
|
||||||
function ListeAlias($email) {
|
|
||||||
global $dbco;
|
|
||||||
try {
|
|
||||||
$selectcmd = $dbco->prepare("SELECT id, status, alias, dateCreat, dateExpir, comment
|
|
||||||
FROM ".DBTABLEPREFIX."alias
|
|
||||||
WHERE email = :email AND status > 0
|
|
||||||
ORDER BY status DESC");
|
|
||||||
$selectcmd->bindParam('email', $email, PDO::PARAM_STR);
|
|
||||||
$selectcmd->execute();
|
|
||||||
} catch ( PDOException $e ) {
|
|
||||||
echo "DB error : ", $e->getMessage();
|
|
||||||
die();
|
|
||||||
}
|
|
||||||
$nb_alias=0;
|
|
||||||
$nb_alias_disable=0;
|
|
||||||
$message= "## "._('List trash email activate')." : \n\n";
|
|
||||||
while($alias_db = $selectcmd->fetch()) {
|
|
||||||
if ($alias_db['status'] == 3 && $nb_alias_disable == 0) {
|
|
||||||
$message.= "## "._('List trash email disable')." : \n\n";
|
|
||||||
}
|
|
||||||
$message.=" * ".$alias_db['alias']." "._('Create ')." ".$alias_db['dateCreat'];
|
|
||||||
if ($alias_db['dateExpir']) {
|
|
||||||
$message.=" "._('and expires on')." ".$alias_db['dateExpir'];
|
|
||||||
}
|
|
||||||
$message.="\n";
|
|
||||||
if ($alias_db['comment']) {
|
|
||||||
$message.="\t"._('Comment :')." ".$alias_db['comment']."\n";
|
|
||||||
}
|
|
||||||
if ($alias_db['status'] == 5) {
|
|
||||||
$message.="\t"._('Disable :')." ".urlGen('disable',$alias_db['id'],$alias_db['alias'])."\n";
|
|
||||||
$nb_alias++;
|
|
||||||
} else {
|
|
||||||
$message.="\t"._('Activate :')." ".urlGen('enable',$alias_db['id'],$alias_db['alias'])."\n";
|
|
||||||
$nb_alias_disable++;
|
|
||||||
}
|
|
||||||
$message.="\t"._('Delete :')." ".urlGen('delete',$alias_db['id'],$alias_db['alias'])."\n\n";
|
|
||||||
}
|
|
||||||
$nb_alias_total = $nb_alias + $nb_alias_disable;
|
|
||||||
if ($nb_alias_total == 0) {
|
|
||||||
return false;
|
|
||||||
} else {
|
|
||||||
SendEmail($email,_('List trash email'),$message);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function SendEmail($recipient, $sujet, $message) {
|
|
||||||
$header = "From: ".EMAILFROM."\n";
|
|
||||||
$header.= "MIME-Version: 1.0\n";
|
|
||||||
/*
|
|
||||||
if (preg_match('#^[a-z0-9._-]+@(hotmail|live|msn).[a-z]{2,4}$#', $recipient)) {
|
|
||||||
$header = str_replace("\n", "\r\n", $header);
|
|
||||||
$message = str_replace("\n", "\r\n", $header);
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
$message="Bonjour,\n\n".$message."\n\n".
|
|
||||||
mail($recipient,EMAILTAGSUJET.' '.$sujet,$message,$header);
|
|
||||||
}
|
|
||||||
|
|
||||||
function urlGen($act,$id,$alias_full) {
|
|
||||||
$idUrl=base64_encode($id.';'.$alias_full);
|
|
||||||
if (URLREWRITE_START && URLREWRITE_MIDDLE && URLREWRITE_END) {
|
|
||||||
return URLREWRITE_START.$act.URLREWRITE_MIDDLE.$idUrl.URLREWRITE_END;
|
|
||||||
} else {
|
|
||||||
return URLPAGE."?act=".$act."&value=".$idUrl;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
function urlUnGen($get_value) {
|
|
||||||
$explode_get_value = explode(';', base64_decode($get_value));
|
|
||||||
$return['id']=$explode_get_value[0];
|
|
||||||
$return['alias_full']=$explode_get_value[1];
|
|
||||||
return $return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Source http://css-tricks.com/serious-form-security/
|
|
||||||
function StripCleanToHtml($s){
|
|
||||||
// Restores the added slashes (ie.: " I\'m John " for security in output, and escapes them in htmlentities(ie.: " etc.)
|
|
||||||
// Also strips any <html> tags it may encouter
|
|
||||||
// Use: Anything that shouldn't contain html (pretty much everything that is not a textarea)
|
|
||||||
return htmlentities(trim(strip_tags(stripslashes($s))), ENT_NOQUOTES, "UTF-8");
|
|
||||||
}
|
|
||||||
function CleanToHtml($s){
|
|
||||||
// Restores the added slashes (ie.: " I\'m John " for security in output, and escapes them in htmlentities(ie.: " etc.)
|
|
||||||
// It preserves any <html> tags in that they are encoded aswell (like <html>)
|
|
||||||
// As an extra security, if people would try to inject tags that would become tags after stripping away bad characters,
|
|
||||||
// we do still strip tags but only after htmlentities, so any genuine code examples will stay
|
|
||||||
// Use: For input fields that may contain html, like a textarea
|
|
||||||
return strip_tags(htmlentities(trim(stripslashes($s))), ENT_NOQUOTES, "UTF-8");
|
|
||||||
}
|
|
||||||
|
|
||||||
//////////////////
|
|
||||||
// Admin function
|
|
||||||
//////////////////
|
|
||||||
|
|
||||||
function CheckUpdate() {
|
|
||||||
if (CHECKUPDATE) {
|
|
||||||
if (! is_file(DATA.'/checkupdate') || filemtime(DATA.'/checkupdate') + CHECKUPDATE < time()) {
|
|
||||||
$ep_get_version = @file_get_contents('http://poubelle.zici.fr/ep_checkupdate');
|
|
||||||
$ep_version_file=fopen(DATA.'/checkupdate','w');
|
|
||||||
fputs($ep_version_file, $ep_get_version);
|
|
||||||
fclose($ep_version_file);
|
|
||||||
if (DEBUG) { echo 'ep_checkupdate_downloaded : '.file_get_contents(DATA.'/checkupdate').'\n'; }
|
|
||||||
}
|
|
||||||
$file_current_version = trim(file_get_contents(DATA.'/checkupdate'));
|
|
||||||
if ($file_current_version != '' && $file_current_version != VERSION) {
|
|
||||||
return '<p>Upgrade note: Your version is in '.VERSION.' while the current version is in '.$file_current_version.'</p>';
|
|
||||||
} else {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function LifeExpire() {
|
|
||||||
global $dbco;
|
|
||||||
try {
|
|
||||||
$deletecmd = $dbco->prepare("DELETE FROM ".DBTABLEPREFIX."alias WHERE dateExpir IS NOT NULL AND dateExpir < '".date('Y-m-d H:i:s')."'");
|
|
||||||
$deletecmd->execute();
|
|
||||||
} catch ( PDOException $e ) {
|
|
||||||
echo "DB error : ", $e->getMessage();
|
|
||||||
die();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Vérifie que le domaine de l'alias est bien dans la configuration
|
|
||||||
function domainePresent($postDom) {
|
|
||||||
$domains = explode(';', DOMAIN);
|
|
||||||
$return=true;
|
|
||||||
if (count($domains) == 1) {
|
|
||||||
if (!preg_match('#'.$postDom.'#',DOMAIN)) {
|
|
||||||
$return=false;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
foreach ($domains as $one_domain) {
|
|
||||||
if (!preg_match('#'.$postDom.'#',$one_domain)) {
|
|
||||||
$return=false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return $return;
|
|
||||||
}
|
|
||||||
// Vérifie que l'email n'est pas un alias avec un domain "poubelle" (éviter boucle forward)
|
|
||||||
function emailIsAlias($postemail) {
|
|
||||||
$domains = explode(';', DOMAIN);
|
|
||||||
$return=false;
|
|
||||||
if (count($domains) == 1) {
|
|
||||||
if (preg_match('#'.DOMAIN.'$#',$postemail)) {
|
|
||||||
$return=true;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
foreach ($domains as $one_domain) {
|
|
||||||
if (preg_match('#'.$one_domain.'$#',$postemail)) {
|
|
||||||
$return=true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return $return;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
function get_ip() {
|
|
||||||
// IP si internet partagé
|
|
||||||
if (isset($_SERVER['HTTP_CLIENT_IP'])) {
|
|
||||||
return $_SERVER['HTTP_CLIENT_IP'];
|
|
||||||
}
|
|
||||||
// IP derrière un proxy
|
|
||||||
elseif (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
|
|
||||||
return $_SERVER['HTTP_X_FORWARDED_FOR'];
|
|
||||||
}
|
|
||||||
// Sinon : IP normale
|
|
||||||
else {
|
|
||||||
return (isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : '');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Fonction langues :
|
|
||||||
function languesSwitch() {
|
|
||||||
echo '<script>
|
|
||||||
function langSwitch(lang) {
|
|
||||||
document.getElementById(\'langSwitch\').value = lang;
|
|
||||||
document.getElementById(\'fromLangueSwitch\').submit();
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
<div class="eplangswitch" style="float: right">
|
|
||||||
<form id="fromLangueSwitch" action="#" method="post">
|
|
||||||
<input type="hidden" name="langSwitch" value="" id="langSwitch" />
|
|
||||||
<img alt="fr" src="'.URLINC.'/fr.png" onclick="langSwitch(\'fr\');" />
|
|
||||||
<img alt="it" src="'.URLINC.'/it.png" onclick="langSwitch(\'it\');" />
|
|
||||||
<img alt="en" src="'.URLINC.'/en.png" onclick="langSwitch(\'en\');" />
|
|
||||||
</form>
|
|
||||||
</div>';
|
|
||||||
}
|
|
||||||
|
|
||||||
function lang2locale($langue) {
|
|
||||||
global $langueEtLocalDispo;
|
|
||||||
if ($langueEtLocalDispo[$langue] != '') {
|
|
||||||
return $langueEtLocalDispo[$langue];
|
|
||||||
} else {
|
|
||||||
// par défaut
|
|
||||||
return 'en_US';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
function locale2lang($localeRecherche) {
|
|
||||||
global $langueEtLocalDispo;
|
|
||||||
foreach($langueEtLocalDispo as $code=>$locale) {
|
|
||||||
if ($locale == $localeRecherche) {
|
|
||||||
return $code;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// par défaut
|
|
||||||
return 'en';
|
|
||||||
}
|
|
||||||
|
|
||||||
// Ajoute la langue à une URL qui n'en a pas
|
|
||||||
function addLang2url($lang) {
|
|
||||||
global $_SERVER;
|
|
||||||
$URIexplode=explode('?', $_SERVER['REQUEST_URI']);
|
|
||||||
if ($URIexplode[1] != '') {
|
|
||||||
return $URIexplode[0].$URIexplode[1].'&langue='.$lang;
|
|
||||||
} else {
|
|
||||||
return $URIexplode[0].'?langue='.$lang;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
function replaceLang2url($lang) {
|
|
||||||
global $_SERVER;
|
|
||||||
$URIexplode=explode('?', $_SERVER['REQUEST_URI']);
|
|
||||||
$debutUrl=substr($URIexplode[0], 0, -langCountChar($URIexplode[0]));
|
|
||||||
if ($URIexplode[1] != '') {
|
|
||||||
return $debutUrl.$lang.'?'.$URIexplode[1];
|
|
||||||
} else {
|
|
||||||
return $debutUrl.$lang;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
function langCountChar($url) {
|
|
||||||
// $url reçu c'est l'URL avant la query : ?machin=1
|
|
||||||
if (preg_match('#/sr-Cyrl-ME$#',$url)) {
|
|
||||||
return 10;
|
|
||||||
} elseif (preg_match('#/[a-z]{2}-[A-Z]{2}$#',$url)) {
|
|
||||||
return 5;
|
|
||||||
} elseif (preg_match('#/[a-z]{3}-[A-Z]{2}$#',$url)) {
|
|
||||||
return 6;
|
|
||||||
} elseif (preg_match('#/[a-z]{3}$#',$url)) {
|
|
||||||
return 3;
|
|
||||||
} elseif (preg_match('#/[a-z]{2}$#',$url)) {
|
|
||||||
return 2;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
?>
|
|
|
@ -1,67 +0,0 @@
|
||||||
<?php
|
|
||||||
$country = @geoip_country_code_by_name(get_ip());
|
|
||||||
|
|
||||||
$HTTP_ACCEPT_LANGUAGE=$_SERVER['HTTP_ACCEPT_LANGUAGE'];
|
|
||||||
$lang_from_http_accept = explode(',', $HTTP_ACCEPT_LANGUAGE);
|
|
||||||
$lang = $lang_from_http_accept[0];
|
|
||||||
|
|
||||||
// Dans les URL on utilisera les codes langues https://support.crowdin.com/api/language-codes/
|
|
||||||
// On a une fonction pour retrouve le local à partir (et vis et versa)
|
|
||||||
|
|
||||||
// CODE LOCALE (locale -a)
|
|
||||||
$langueEtLocalDispo=array(
|
|
||||||
'fr' => 'fr_FR',
|
|
||||||
'en' => 'en_US',
|
|
||||||
'it' => 'it_IT',
|
|
||||||
);
|
|
||||||
|
|
||||||
|
|
||||||
// Détection et redirection (langue toujours)
|
|
||||||
if (isset($_POST['langSwitch'])) {
|
|
||||||
$locale = lang2locale($_POST['langSwitch']);
|
|
||||||
$localeshort=locale2lang($locale);
|
|
||||||
if ($_COOKIE['langue'] != $localeshort) {
|
|
||||||
setcookie("langue",$localeshort,strtotime( '+1 year' ));
|
|
||||||
}
|
|
||||||
} elseif (isset($_COOKIE['langue'])) {
|
|
||||||
$locale = lang2locale($_COOKIE['langue']);
|
|
||||||
$lang=locale2lang($locale);
|
|
||||||
//header('Location: '.addLang2url($lang));
|
|
||||||
} else {
|
|
||||||
$HTTP_ACCEPT_LANGUAGE=$_SERVER['HTTP_ACCEPT_LANGUAGE'];
|
|
||||||
//echo $HTTP_ACCEPT_LANGUAGE.'<br />';
|
|
||||||
$lang_from_http_accept = explode(',', $HTTP_ACCEPT_LANGUAGE);
|
|
||||||
//echo $lang_from_http_accept[0].'<br />';
|
|
||||||
$locale = lang2locale($lang_from_http_accept[0]);
|
|
||||||
if (substr($locale,0,2) != substr($lang_from_http_accept[0],0,2)) {
|
|
||||||
//echo "Non trouvé, 2ème tentative";
|
|
||||||
$lang_from_http_accept = explode('-', $lang_from_http_accept[0]);
|
|
||||||
//echo $lang_from_http_accept[0].'<br />';
|
|
||||||
$locale = lang2locale($lang_from_http_accept[0]);
|
|
||||||
}
|
|
||||||
//echo $locale.'<br />';
|
|
||||||
$lang = locale2lang($locale);
|
|
||||||
//echo $lang.'<br />';
|
|
||||||
}
|
|
||||||
|
|
||||||
// Définition de la langue :
|
|
||||||
$results=putenv("LC_ALL=$locale.utf8");
|
|
||||||
if (!$results) {
|
|
||||||
exit ('putenv failed');
|
|
||||||
}
|
|
||||||
$results=putenv("LC_LANG=$locale.utf8");
|
|
||||||
if (!$results) {
|
|
||||||
exit ('putenv failed');
|
|
||||||
}
|
|
||||||
$results=putenv("LC_LANGUAGE=$locale.utf8");
|
|
||||||
if (!$results) {
|
|
||||||
exit ('putenv failed');
|
|
||||||
}
|
|
||||||
$results=setlocale(LC_ALL, "$locale.utf8");
|
|
||||||
if (!$results) {
|
|
||||||
exit ('setlocale failed: locale function is not available on this platform, or the given local does not exist in this environment');
|
|
||||||
}
|
|
||||||
bindtextdomain("messages", LANG);
|
|
||||||
textdomain("messages");
|
|
||||||
|
|
||||||
?>
|
|
BIN
src/lib/fr.png
Before Width: | Height: | Size: 914 B |
BIN
src/lib/it.png
Before Width: | Height: | Size: 901 B |
Before Width: | Height: | Size: 360 B |
Before Width: | Height: | Size: 358 B |
Before Width: | Height: | Size: 355 B |
BIN
src/lib/sup.png
Before Width: | Height: | Size: 311 B |
|
@ -1,22 +0,0 @@
|
||||||
/^root$/
|
|
||||||
/^mail$/
|
|
||||||
/^email$/
|
|
||||||
/^test$/
|
|
||||||
/^toto$/
|
|
||||||
/^www-data$/
|
|
||||||
/^www-owne$/
|
|
||||||
/^manager$/
|
|
||||||
/^admin$/
|
|
||||||
/postmaster/
|
|
||||||
/^MAILER-DAEMON$/
|
|
||||||
/^abuse$/
|
|
||||||
/^spam$/
|
|
||||||
/^backup$/
|
|
||||||
/^list$/
|
|
||||||
/^nobody$/
|
|
||||||
/^vmail$/
|
|
||||||
/^mysql$/
|
|
||||||
/^web$/
|
|
||||||
/^git$/
|
|
||||||
/^mail$/
|
|
||||||
/^[1-9]+$/
|
|
|
@ -1,7 +0,0 @@
|
||||||
/^exemple@exemple.com$/
|
|
||||||
/.pl$/
|
|
||||||
/^exemple[1-9]+@toto.fr$/
|
|
||||||
/@yopmail.com$/
|
|
||||||
/^harou/
|
|
||||||
/@gmx.com$/
|
|
||||||
/^sportnet/
|
|
|
@ -1,197 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<html lang="fr">
|
|
||||||
<head>
|
|
||||||
<title>emailPoubelle Admin - Template-exemple</title>
|
|
||||||
<meta charset="UTF-8">
|
|
||||||
<meta name="description" content="">
|
|
||||||
<meta name="robots" content="index,follow,noarchive">
|
|
||||||
<link rel="stylesheet" href="template-exemple/style.css">
|
|
||||||
<!--[if IE]><script src="template-exemple/html5-ie.js"></script><![endif]-->
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<!--[if lte IE 6]>
|
|
||||||
<div class="alert-ie6" style="padding: 1em; background: #900; font-size: 1.1em; color: #fff;">
|
|
||||||
<p><strong>Attention ! </strong> Votre navigateur (Internet Explorer 6 ou 7) présente de sérieuses lacunes en terme de sécurité et de performances, dues à son obsolescence (il date de 2001).<br />En conséquence, ce site sera consultable mais de manière moins optimale qu'avec un navigateur récent (<a href="http://www.browserforthebetter.com/download.html" style="color: #fff;">Internet Explorer 8</a>, <a href="http://www.mozilla-europe.org/fr/firefox/" style="color: #fff;">Firefox 3</a>, <a href="http://www.google.com/chrome?hl=fr" style="color: #fff;">Chrome</a>, <a href="http://www.apple.com/fr/safari/download/" style="color: #fff;">Safari</a>,...)</p>
|
|
||||||
</div>
|
|
||||||
<![endif]-->
|
|
||||||
<div id="a">
|
|
||||||
<header>
|
|
||||||
<a href="/" title="Startseite"><strong>OWMX-2</strong> HTML5 & CSS3</a>
|
|
||||||
</header>
|
|
||||||
<div id="b">
|
|
||||||
<article>
|
|
||||||
<h1><?= _('Emails trash free') ?> - <?= _('Admin space') ?></h1>
|
|
||||||
<p><?= _('Generate trash emails without lifetime constraint') ?>. </p>
|
|
||||||
<?php
|
|
||||||
// Intégration dans votre site :
|
|
||||||
if (file_exists('../conf.php')) {
|
|
||||||
include('../conf.php');
|
|
||||||
} else {
|
|
||||||
include('../conf-dist.php');
|
|
||||||
}
|
|
||||||
include('../emailPoubelleAdmin.php');
|
|
||||||
?>
|
|
||||||
<h3>Let the Show Begin - Pre and Code</h3>
|
|
||||||
<p>This is how it looks if you use <code>pre</code> and <code>code</code> together, for example to highlight and nicely markup a piece of code:</p>
|
|
||||||
<pre><code>pre {<br /> font-size : 12px;<br /> background : #F0F0F0;<br />}</code></pre>
|
|
||||||
<h3>Example Blockquote</h3>
|
|
||||||
<p>If you want to quote somebody, you can use this perfectly semantic example for a blockquote:</p>
|
|
||||||
<cite>Jonas Jacek</cite>
|
|
||||||
<blockquote cite="http://www.rield.com/">
|
|
||||||
During my years in the Internet Marketing business I have seen and done many things I never thought would be of interest to me or anyone else.
|
|
||||||
</blockquote>
|
|
||||||
<h3>Examples Alerts, Notice & Confirmation</h3>
|
|
||||||
<p>These sample styles for alerts and notices are useful if you want to use the template in content management systems.</p>
|
|
||||||
<p class="highlight-1"><strong>Alert:</strong> This is how an alert looks like.</p>
|
|
||||||
<p class="highlight-2"><strong>Notice:</strong> This is how a notice looks like.</p>
|
|
||||||
<p class="highlight-3"><strong>Confirmation:</strong> This is how a confirmation looks like.</p>
|
|
||||||
<h3>Example Table</h3>
|
|
||||||
<p>The following is the design for a table. The style is simple and user-friendly. Some of the effects were made with CSS3.</p>
|
|
||||||
<table>
|
|
||||||
<caption>Mini HTML5 Reference Guide</caption>
|
|
||||||
<tbody>
|
|
||||||
<tr>
|
|
||||||
<th>Tag</th>
|
|
||||||
<th>Info</th>
|
|
||||||
<th>Attributes</th>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td><abbr></td>
|
|
||||||
<td>abbreviation</td>
|
|
||||||
<td>global attributes**</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td><area></td>
|
|
||||||
<td>in an image map</td>
|
|
||||||
<td> alt, coords, href, hreflang, media, ping, rel, shape, target, type</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td><article></td>
|
|
||||||
<td>article/ content</td>
|
|
||||||
<td>global attributes**</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td><aside></td>
|
|
||||||
<td>sidebar</td>
|
|
||||||
<td>global attributes**</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td><audio></td>
|
|
||||||
<td>sound content</td>
|
|
||||||
<td>autobuffer, autoplay, controls, loop, src</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td><b></td>
|
|
||||||
<td>bold text</td>
|
|
||||||
<td>global attributes**</td>
|
|
||||||
</tr>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
<h3>Example hCalendar</h3>
|
|
||||||
<p>The following is a definition list in combination with the hCalendar microformat. </p>
|
|
||||||
<dl class="vevent">
|
|
||||||
<dt class="dtstart"><abbr title="2010-11-18" class="dtstart">11-18-2010</abbr></dt>
|
|
||||||
<dd class="summary">Conference Name</dd>
|
|
||||||
<dd><a href="#" class="url">http://www.conference-website.com/</a></dd>
|
|
||||||
<dd class="description">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi nec eleifend diam. Fusce lobortis odio ac sem scelerisque sed iaculis purus ornare.</dd>
|
|
||||||
</dl>
|
|
||||||
<h3>Example Video</h3>
|
|
||||||
<p>You can put your Video-Files here...</p>
|
|
||||||
<video src="movie.ogg" controls>your browser does not support the video tag</video>
|
|
||||||
<h3>Example Audio</h3>
|
|
||||||
<p>You can put your Audio-Files here...</p>
|
|
||||||
<audio src="file.ogg" controls>your browser does not support the audio tag</audio>
|
|
||||||
<h3>Example Lists</h3>
|
|
||||||
<p>Two different kinds of lists were styled: Ordered lists (ol) and unordered (ul) lists.</p>
|
|
||||||
<ol>
|
|
||||||
<li>This is</li>
|
|
||||||
<li>The Ordered</li>
|
|
||||||
<li>Listing</li>
|
|
||||||
</ol>
|
|
||||||
<ul>
|
|
||||||
<li>This is</li>
|
|
||||||
<li>The Unordered</li>
|
|
||||||
<li>Listing</li>
|
|
||||||
</ul>
|
|
||||||
<h3>Example Form</h3>
|
|
||||||
<p>This is how a form will look like in this template.</p>
|
|
||||||
<form action="#">
|
|
||||||
<label>Name</label>
|
|
||||||
<input name="#" type="text" value="Your Name">
|
|
||||||
<label>Email</label>
|
|
||||||
<input name="#" type="text" value="Your Email">
|
|
||||||
<label>Your Comments</label>
|
|
||||||
<textarea>This is a Comment...</textarea>
|
|
||||||
<br>
|
|
||||||
<input class="button" type="submit">
|
|
||||||
</form>
|
|
||||||
<section class="meta">
|
|
||||||
<p>Author: <a href="http://www.jabz.info/contact/jonas-jared-jacek/">Jonas Jacek</a> | Date: 2010-01-21 | Comments: <a href="#">7</a></p>
|
|
||||||
<p>Tags: <a href="#" rel="tag">quisquam</a>, <a href="#" rel="tag">Tags</a>, <a href="#" rel="tag">dolorem</a> <a href="#" rel="tag">Tags</a>, <a href="#" rel="tag">Tags</a></p>
|
|
||||||
</section>
|
|
||||||
</article>
|
|
||||||
<aside>
|
|
||||||
<h4>Search</h4>
|
|
||||||
<form action="#" class="s">
|
|
||||||
<input name="search" type="text" value="Type term and hit enter...">
|
|
||||||
</form>
|
|
||||||
<h4>About the Author</h4>
|
|
||||||
<div id="c">
|
|
||||||
<img src="template-exemple/jonas-jacek.png" alt="Jonas Jacek">
|
|
||||||
<p>Hi, my name is <a href="http://www.jabz.info/contact/jonas-jared-jacek/">Jonas Jacek</a>.<br> Welcome to my new HTML5 / CSS3 blog.</p>
|
|
||||||
<p>I am a web designer, web developer and Internet marketing enthusiast.</p>
|
|
||||||
<p>I strongly believe in open-source software and open standards.</p>
|
|
||||||
</div>
|
|
||||||
<nav>
|
|
||||||
<h4>Navigation</h4>
|
|
||||||
<ul>
|
|
||||||
<li><a href="#">Lorem</a></li>
|
|
||||||
<li><a href="#">Ipsum</a></li>
|
|
||||||
<li class="active"><a href="#">Dolor Sit</a>
|
|
||||||
<ul>
|
|
||||||
<li><a href="#">Amet</a></li>
|
|
||||||
<li><a href="#">Amet</a></li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
</li>
|
|
||||||
<li><a href="#">Downloads</a></li>
|
|
||||||
<li><a href="#">Contact</a></li>
|
|
||||||
</ul>
|
|
||||||
</nav>
|
|
||||||
<h4>Example Gallery</h4>
|
|
||||||
<ul class="gallery">
|
|
||||||
<li><a href="index.html"><img src="template-exemple/img1.png"/></a></li>
|
|
||||||
<li><a href="index.html"><img src="template-exemple/img2.png"/></a></li>
|
|
||||||
<li><a href="index.html"><img src="template-exemple/img3.png"/></a></li>
|
|
||||||
</ul>
|
|
||||||
<ul class="gallery">
|
|
||||||
<li><a href="index.html"><img src="template-exemple/img4.png"/></a></li>
|
|
||||||
<li><a href="index.html"><img src="template-exemple/img5.png"/></a></li>
|
|
||||||
<li><a href="index.html"><img src="template-exemple/img6.png"/></a></li>
|
|
||||||
</ul>
|
|
||||||
<h4>AdSpace</h4>
|
|
||||||
<div class="adspace">
|
|
||||||
<a href="http://www.jabz.biz/" rel="me"><img src="template-exemple/jabz-logo.png" alt="Jabz Internet Marketing GmbH" title="Jabz Internet Marketing GmbH"/></a>
|
|
||||||
</div>
|
|
||||||
<h4>Example Blogroll</h4>
|
|
||||||
<ul>
|
|
||||||
<li><a href="http://www.jabz.biz/">Jabz Internet Marketing GmbH</a></li>
|
|
||||||
<li><a href="http://www.jabz.info/contact/jonas-jared-jacek/">Jonas Jacek</a></li>
|
|
||||||
<li><a href="http://www.w3.org/">World Wide Web Consortium</a></li>
|
|
||||||
<li><a href="http://www.getfirefox.com/">Firefox Web Browser</a></li>
|
|
||||||
</ul>
|
|
||||||
<h4>Example Tag Cloud</h4>
|
|
||||||
<ul id="tagcloud">
|
|
||||||
<li class="tagcloudsize-1"><a href="#">Lorem</a></li>
|
|
||||||
<li class="tagcloudsize-2"><a href="#">Ipsum</a></li>
|
|
||||||
<li class="tagcloudsize-3"><a href="#">Dolor</a></li>
|
|
||||||
<li class="tagcloudsize-2"><a href="#">Sit Amet</a></li>
|
|
||||||
<li class="tagcloudsize-1"><a href="#">Consectetur</a></li>
|
|
||||||
</ul>
|
|
||||||
</aside>
|
|
||||||
</div>
|
|
||||||
<footer>
|
|
||||||
<p>Template Design & Markup by <a href="http://www.jabz.info/contact/jonas-jared-jacek/" title="Profile of Jonas Jacek">Jonas Jacek</a> for <a href="http://www.owmx.com/" title="Free HTML5 & CSS3 Web Template | owmx.com">Free HTML5 & CSS3 Web Templates</a>.</p>
|
|
||||||
</footer>
|
|
||||||
</div>
|
|
||||||
</html>
|
|
|
@ -1,36 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<html lang="fr">
|
|
||||||
<head>
|
|
||||||
<title>emailPoubelle - Template-exemple</title>
|
|
||||||
<meta charset="UTF-8">
|
|
||||||
<meta name="description" content="">
|
|
||||||
<meta name="robots" content="index,follow,noarchive">
|
|
||||||
<link rel="stylesheet" href="template-exemple/style.css">
|
|
||||||
<!--[if IE]><script src="template-exemple/html5-ie.js"></script><![endif]-->
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<!--[if lte IE 6]>
|
|
||||||
<div class="alert-ie6" style="padding: 1em; background: #900; font-size: 1.1em; color: #fff;">
|
|
||||||
<p><strong>Attention ! </strong> Votre navigateur (Internet Explorer 6 ou 7) présente de sérieuses lacunes en terme de sécurité et de performances, dues à son obsolescence (il date de 2001).<br />En conséquence, ce site sera consultable mais de manière moins optimale qu'avec un navigateur récent (<a href="http://www.browserforthebetter.com/download.html" style="color: #fff;">Internet Explorer 8</a>, <a href="http://www.mozilla-europe.org/fr/firefox/" style="color: #fff;">Firefox 3</a>, <a href="http://www.google.com/chrome?hl=fr" style="color: #fff;">Chrome</a>, <a href="http://www.apple.com/fr/safari/download/" style="color: #fff;">Safari</a>,...)</p>
|
|
||||||
</div>
|
|
||||||
<![endif]-->
|
|
||||||
<div id="a">
|
|
||||||
<header>
|
|
||||||
<a href="/" title="Startseite"><strong>OWMX-2</strong> HTML5 & CSS3</a>
|
|
||||||
</header>
|
|
||||||
<div id="b">
|
|
||||||
<article>
|
|
||||||
<h1><?= _('Emails trash free') ?></h1>
|
|
||||||
<p><?= _('Generate trash emails without lifetime constraint') ?>. </p>
|
|
||||||
<?php
|
|
||||||
// Intégration dans votre site :
|
|
||||||
if (file_exists('../conf.php')) {
|
|
||||||
include('../conf.php');
|
|
||||||
} else {
|
|
||||||
include('../conf-dist.php');
|
|
||||||
}
|
|
||||||
include('../emailPoubelle.php');
|
|
||||||
?>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</html>
|
|
Before Width: | Height: | Size: 116 B |
Before Width: | Height: | Size: 116 B |
Before Width: | Height: | Size: 196 B |
Before Width: | Height: | Size: 195 B |
Before Width: | Height: | Size: 183 B |
Before Width: | Height: | Size: 136 B |
Before Width: | Height: | Size: 137 B |
Before Width: | Height: | Size: 137 B |
Before Width: | Height: | Size: 67 KiB |
|
@ -1,10 +0,0 @@
|
||||||
document.createElement("header");
|
|
||||||
document.createElement("footer");
|
|
||||||
document.createElement("section");
|
|
||||||
document.createElement("aside");
|
|
||||||
document.createElement("nav");
|
|
||||||
document.createElement("article");
|
|
||||||
document.createElement("figure");
|
|
||||||
document.createElement("figcaption");
|
|
||||||
document.createElement("hgroup");
|
|
||||||
document.createElement("time");
|
|
Before Width: | Height: | Size: 270 B |
Before Width: | Height: | Size: 8.1 KiB |
Before Width: | Height: | Size: 7.5 KiB |
Before Width: | Height: | Size: 8.2 KiB |
Before Width: | Height: | Size: 5.5 KiB |
Before Width: | Height: | Size: 6.9 KiB |
Before Width: | Height: | Size: 8.3 KiB |
Before Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 1.7 KiB |
|
@ -1,34 +0,0 @@
|
||||||
####################################################
|
|
||||||
# License #
|
|
||||||
####################################################
|
|
||||||
|
|
||||||
This W3C-compliant, CSS-based website template has a
|
|
||||||
Creative Commons Attribution-Share Alike 3.0
|
|
||||||
Unported License.
|
|
||||||
>> http://creativecommons.org/licenses/by-sa/3.0/
|
|
||||||
|
|
||||||
|
|
||||||
####################################################
|
|
||||||
# What You Can Do #
|
|
||||||
####################################################
|
|
||||||
|
|
||||||
Feel free to remix, copy, distribute and transmit
|
|
||||||
this template. All I ask is that you keep the
|
|
||||||
footer links in the template intact. Also, if you
|
|
||||||
alter, transform, or build upon this work, you
|
|
||||||
may distribute the resulting work only under the
|
|
||||||
same, similar or a compatible license.
|
|
||||||
|
|
||||||
|
|
||||||
####################################################
|
|
||||||
# Feedback & Action #
|
|
||||||
####################################################
|
|
||||||
|
|
||||||
I'd love to get your feedback on the template.
|
|
||||||
Please contact me with your critics, ideas, etc.
|
|
||||||
>> http://www.jabz.info/contact/jonas-jared-jacek/
|
|
||||||
|
|
||||||
If you like to contribute your remix, I will be
|
|
||||||
more than happy to put your version on owmx.com
|
|
||||||
and credit you in http://www.owmx.com/credits/.
|
|
||||||
|
|
|
@ -1,442 +0,0 @@
|
||||||
/*==================================================
|
|
||||||
Template: OWMX-2
|
|
||||||
Resource: http://www.owmx.com/
|
|
||||||
Version: 1.0
|
|
||||||
Date: 2010-09-13
|
|
||||||
Editor: Jonas Jacek
|
|
||||||
License: CC Attribution-Share Alike 3.0 Unported
|
|
||||||
==================================================*/
|
|
||||||
|
|
||||||
/* Reset */
|
|
||||||
header, footer, article, nav, section, aside, time, hgroup {
|
|
||||||
display : block;
|
|
||||||
}
|
|
||||||
html, body, header, footer, article, nav, section, aside, time, h1, h2, h3, p, a, ul, li, dl, dd, dt, table, thead, tfoot, tbody, th, tr, td {
|
|
||||||
border : 0;
|
|
||||||
font : 12px/22px Verdana, sans-serif;
|
|
||||||
margin : 0;
|
|
||||||
outline : 0;
|
|
||||||
padding : 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* BASICS */
|
|
||||||
BODY {
|
|
||||||
background : #FFF;
|
|
||||||
border-top : 5px solid #FFF;
|
|
||||||
color : #444;
|
|
||||||
}
|
|
||||||
|
|
||||||
A {
|
|
||||||
color : #0A647C;
|
|
||||||
text-decoration : none;
|
|
||||||
}
|
|
||||||
A:HOVER {
|
|
||||||
color : #DB0202;
|
|
||||||
}
|
|
||||||
|
|
||||||
H1, H3, H4, H5, H6 {
|
|
||||||
background : url(./ai4.png) no-repeat 0 7px;
|
|
||||||
border-bottom : 1px dotted #B5B3A9;
|
|
||||||
color : #333;
|
|
||||||
font-weight : bold;
|
|
||||||
margin : 0 0 10px;
|
|
||||||
padding : 0 0 0 25px;
|
|
||||||
}
|
|
||||||
H1 {
|
|
||||||
background : url(./ai4.png) no-repeat 0 6px;
|
|
||||||
font-size : 15px;
|
|
||||||
}
|
|
||||||
H2 {
|
|
||||||
font-size : 14px;
|
|
||||||
margin : 0 0 20px 0;
|
|
||||||
}
|
|
||||||
H3 {
|
|
||||||
background : url(./ai5.png) no-repeat 0 7px;
|
|
||||||
}
|
|
||||||
H3, H4, H5, H6 {
|
|
||||||
font-size : 13px;
|
|
||||||
}
|
|
||||||
|
|
||||||
SUP {
|
|
||||||
top : -4px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Header */
|
|
||||||
header {
|
|
||||||
-moz-border-radius : 4px;
|
|
||||||
-webkit-border-radius : 4px;
|
|
||||||
background : #006699 url(./hd.jpg) no-repeat top left;
|
|
||||||
margin : 0 0 10px 0;
|
|
||||||
padding : 10px 10px;
|
|
||||||
position : relative;
|
|
||||||
}
|
|
||||||
header a {
|
|
||||||
color : #FFF;
|
|
||||||
font-size : 16px;
|
|
||||||
}
|
|
||||||
header a:hover {
|
|
||||||
color : #FFF;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Article */
|
|
||||||
article {
|
|
||||||
border-left : 1px dotted #666;
|
|
||||||
float : right;
|
|
||||||
height : auto;
|
|
||||||
padding : 0 0 0 20px;
|
|
||||||
width : 560px;
|
|
||||||
}
|
|
||||||
article p {
|
|
||||||
margin : 0 0 20px 0;
|
|
||||||
}
|
|
||||||
article img {
|
|
||||||
float : left;
|
|
||||||
margin : 6px 10px 0 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Highlighted Paragraphs */
|
|
||||||
.highlight-1, .highlight-2, .highlight-3 {
|
|
||||||
-moz-border-radius : 4px;
|
|
||||||
-webkit-border-radius : 4px;
|
|
||||||
padding : 5px 10px;
|
|
||||||
}
|
|
||||||
.highlight-1 {
|
|
||||||
background : #FFCCCC;
|
|
||||||
border : 1px dotted #FF9966;
|
|
||||||
}
|
|
||||||
.highlight-2 {
|
|
||||||
background : #FFFF99;
|
|
||||||
border : 1px dotted #FFCC33;
|
|
||||||
}
|
|
||||||
.highlight-3 {
|
|
||||||
background : #CCFF99;
|
|
||||||
border : 1px dotted #CCCC33;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Citations & Quotes */
|
|
||||||
cite {
|
|
||||||
border-left: 2px solid #006699;
|
|
||||||
color : #666;
|
|
||||||
font-size : 10px;
|
|
||||||
font-style : normal;
|
|
||||||
font-weight : bold;
|
|
||||||
margin : 0;
|
|
||||||
padding : 5px 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
blockquote {
|
|
||||||
border-left: 2px solid #006699;
|
|
||||||
color : #666;
|
|
||||||
margin : 0 0 20px 0;
|
|
||||||
padding : 5px 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Pre & Code */
|
|
||||||
pre {
|
|
||||||
color : #333;
|
|
||||||
font-size : 10px;
|
|
||||||
line-height : 15px; /*--Height of each line of code--*/
|
|
||||||
overflow : hidden; /*--If the Code exceeds the width, put "auto" and scrolling is available--*/
|
|
||||||
overflow-Y : hidden; /*--Hides vertical scroll created by IE--*/
|
|
||||||
}
|
|
||||||
pre code {
|
|
||||||
background : #EEE;
|
|
||||||
border-left : 2px solid #006699;
|
|
||||||
margin : 0 0 10px 0;
|
|
||||||
padding : 5px;
|
|
||||||
display : block;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Table */
|
|
||||||
table {
|
|
||||||
border-collapse : collapse;
|
|
||||||
text-align:left;
|
|
||||||
margin : 0 0 20px 0;
|
|
||||||
}
|
|
||||||
caption {
|
|
||||||
-moz-border-radius : 4px;
|
|
||||||
-webkit-border-radius : 4px;
|
|
||||||
background : #006699;
|
|
||||||
color : #FFF;
|
|
||||||
font-weight : bold;
|
|
||||||
}
|
|
||||||
tr:nth-child(odd) {
|
|
||||||
background : #FFF;
|
|
||||||
}
|
|
||||||
tr:nth-child(even) {
|
|
||||||
background : #DDD;
|
|
||||||
}
|
|
||||||
tr:hover td {
|
|
||||||
color : #006699;
|
|
||||||
}
|
|
||||||
td, th {
|
|
||||||
min-width : 120px;
|
|
||||||
padding : 0 5px;
|
|
||||||
vertical-align:top;
|
|
||||||
}
|
|
||||||
th {
|
|
||||||
background : #FFF;
|
|
||||||
border-bottom : 2px solid #006699;
|
|
||||||
color : #666;
|
|
||||||
font-size : 10px;
|
|
||||||
font-weight : bold;
|
|
||||||
}
|
|
||||||
td {
|
|
||||||
border-bottom : 1px solid #CCC;
|
|
||||||
font-size : 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Calendar */
|
|
||||||
dl.vevent {
|
|
||||||
margin : -20px 0 20px 0;
|
|
||||||
padding : 0;
|
|
||||||
}
|
|
||||||
.vevent dt {
|
|
||||||
font-size : 10px;
|
|
||||||
position : relative;
|
|
||||||
left : 0;
|
|
||||||
top : 22px;
|
|
||||||
font-weight : bold;
|
|
||||||
}
|
|
||||||
.vevent dd
|
|
||||||
{
|
|
||||||
border-left : 2px solid #006699;
|
|
||||||
font-size : 11px;
|
|
||||||
margin : 0 0 0 80px;
|
|
||||||
padding : 0 0 0 10px;
|
|
||||||
}
|
|
||||||
dd.summary {
|
|
||||||
font-weight : bold;
|
|
||||||
}
|
|
||||||
.vevent a {
|
|
||||||
font-size : 11px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Forms */
|
|
||||||
article form {
|
|
||||||
-moz-border-radius: 4px;
|
|
||||||
-webkit-border-radius: 4px;
|
|
||||||
background : #DDD;
|
|
||||||
margin : 0 0 20px;
|
|
||||||
padding : 10px;
|
|
||||||
}
|
|
||||||
article label {
|
|
||||||
color : #666;
|
|
||||||
display : block;
|
|
||||||
font-size : 10px;
|
|
||||||
font-weight : bold;
|
|
||||||
margin : 0 0 0 2px;
|
|
||||||
}
|
|
||||||
article input, article textarea {
|
|
||||||
-moz-border-radius: 4px;
|
|
||||||
-webkit-border-radius: 4px;
|
|
||||||
border : 1px solid #CCC;
|
|
||||||
font-size : 11px;
|
|
||||||
padding : 4px 5px;
|
|
||||||
/*width : 458px;*/
|
|
||||||
}
|
|
||||||
article input {
|
|
||||||
margin : 0 0 10px;
|
|
||||||
}
|
|
||||||
article input.button, .btn {
|
|
||||||
background: #999;
|
|
||||||
border : 1px solid #888;
|
|
||||||
color: #FFF;
|
|
||||||
cursor : pointer;
|
|
||||||
font-weight : bold;
|
|
||||||
margin : 10px 0 0 0;
|
|
||||||
text-shadow : 0 -1px 1px rgba(0,0,0,0.25);
|
|
||||||
width : 25%;
|
|
||||||
}
|
|
||||||
article input.button:disabled, .btn{
|
|
||||||
color: #888;
|
|
||||||
}
|
|
||||||
article textarea {
|
|
||||||
height : 100px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Lists */
|
|
||||||
article ul, aside ul {
|
|
||||||
list-style : none;
|
|
||||||
margin : 0 0 20px 0;
|
|
||||||
}
|
|
||||||
article ul {
|
|
||||||
margin : 0 0 20px 23px;
|
|
||||||
}
|
|
||||||
article ul li {
|
|
||||||
background : url(./ai2.png) no-repeat 0 8px;
|
|
||||||
padding : 0 0 0 17px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Sidebar */
|
|
||||||
aside {
|
|
||||||
float : left;
|
|
||||||
margin : 0 0 20px 0;
|
|
||||||
width : 200px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Search Box */
|
|
||||||
.s {
|
|
||||||
-moz-border-radius : 4px;
|
|
||||||
-webkit-border-radius : 4px;
|
|
||||||
margin : 0 0 20px 0;
|
|
||||||
padding : 10px;
|
|
||||||
width : 179px;
|
|
||||||
}
|
|
||||||
.s input {
|
|
||||||
-moz-border-radius: 4px;
|
|
||||||
-webkit-border-radius: 4px;
|
|
||||||
border : 1px solid #CCC;
|
|
||||||
color : #999;
|
|
||||||
font-size : 11px;
|
|
||||||
padding : 4px 5px;
|
|
||||||
width : 168px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Navigation & Menu */
|
|
||||||
nav ul {
|
|
||||||
list-style : none;
|
|
||||||
}
|
|
||||||
nav li {
|
|
||||||
background : url(./ai1.png) no-repeat 0 8px;
|
|
||||||
padding : 0 0 0 15px;
|
|
||||||
}
|
|
||||||
nav li ul, aside li ul li ul {
|
|
||||||
margin : 0;
|
|
||||||
}
|
|
||||||
nav li li a {
|
|
||||||
font-size : 11px;
|
|
||||||
}
|
|
||||||
nav li li li a {
|
|
||||||
font-size : 10px;
|
|
||||||
}
|
|
||||||
nav li li li, aside li.active li li {
|
|
||||||
background : url(./ai8.png) no-repeat 0 10px;
|
|
||||||
}
|
|
||||||
nav li.active, aside li.active li {
|
|
||||||
background : url(./ai2.png) no-repeat 0 8px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Gallery */
|
|
||||||
.gallery {
|
|
||||||
list-style : none;
|
|
||||||
margin : 0 0 10px;
|
|
||||||
}
|
|
||||||
.gallery li {
|
|
||||||
display: inline;
|
|
||||||
margin : 0 15px 0 0;
|
|
||||||
}
|
|
||||||
.gallery a img {
|
|
||||||
border : 1px solid #999;
|
|
||||||
height : 50px;
|
|
||||||
opacity: 0.8;
|
|
||||||
padding : 1px;
|
|
||||||
width : 50px;
|
|
||||||
}
|
|
||||||
.gallery li:last-child {
|
|
||||||
margin : 0 0 10px 0;
|
|
||||||
}
|
|
||||||
.gallery a img:hover{
|
|
||||||
opacity: 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Ad Space */
|
|
||||||
.adspace {
|
|
||||||
-moz-border-radius : 4px;
|
|
||||||
-webkit-border-radius : 4px;
|
|
||||||
-moz-box-shadow : 0 2px 2px rgba(0,0,0,0.3);
|
|
||||||
-webkit-box-shadow : 0 2px 2px rgba(0,0,0,0.3);
|
|
||||||
background : #EEE;
|
|
||||||
height : 100%;
|
|
||||||
margin : 0 0 20px 0;
|
|
||||||
padding : 5px 10px;
|
|
||||||
text-align : center;
|
|
||||||
width : 178px;
|
|
||||||
}
|
|
||||||
.adspace a img {
|
|
||||||
border : none;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Tag Cloud */
|
|
||||||
#tagcloud {
|
|
||||||
overflow : hidden;
|
|
||||||
width : 200px;
|
|
||||||
}
|
|
||||||
#tagcloud li {
|
|
||||||
display : inline;
|
|
||||||
margin : 0 10px 0 0;
|
|
||||||
}
|
|
||||||
.tagcloudsize-1 a {
|
|
||||||
font-size : 14px;
|
|
||||||
}
|
|
||||||
.tagcloudsize-2 a {
|
|
||||||
font-size : 16px;
|
|
||||||
}
|
|
||||||
.tagcloudsize-3 a {
|
|
||||||
font-size : 18px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Footer */
|
|
||||||
footer {
|
|
||||||
border-top : 1px dotted #B5B3A9;
|
|
||||||
clear : both;
|
|
||||||
margin : 20px 0;
|
|
||||||
}
|
|
||||||
footer a, footer p {
|
|
||||||
color : #666;
|
|
||||||
display : inline;
|
|
||||||
font-size : 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Wrappers */
|
|
||||||
#a, #b {
|
|
||||||
margin : 0 auto;
|
|
||||||
position : relative;
|
|
||||||
}
|
|
||||||
#a {
|
|
||||||
width : 800px;
|
|
||||||
}
|
|
||||||
#b {
|
|
||||||
overflow : hidden;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Shadow-Boxes*/
|
|
||||||
#c, .meta, .s {
|
|
||||||
-moz-border-radius : 4px;
|
|
||||||
-webkit-border-radius : 4px;
|
|
||||||
-moz-box-shadow : 0 2px 2px rgba(0,0,0,0.3);
|
|
||||||
-webkit-box-shadow : 0 2px 2px rgba(0,0,0,0.3);
|
|
||||||
background : #EEE;
|
|
||||||
}
|
|
||||||
#c {
|
|
||||||
background : #EEE;
|
|
||||||
margin : 0 0 20px 0;
|
|
||||||
padding : 5px 10px;
|
|
||||||
width : 178px;
|
|
||||||
}
|
|
||||||
#c p, #c a {
|
|
||||||
font-size : 11px;
|
|
||||||
line-height : 15px;
|
|
||||||
}
|
|
||||||
#c p {
|
|
||||||
margin : 0 0 10px 0;
|
|
||||||
}
|
|
||||||
#c img {
|
|
||||||
float : left;
|
|
||||||
margin : 4px 10px 2px 0;
|
|
||||||
}
|
|
||||||
.meta {
|
|
||||||
margin : 20px 0 3px;
|
|
||||||
padding : 2px 5px;
|
|
||||||
}
|
|
||||||
.meta p, .meta a {
|
|
||||||
font-size : 10px;
|
|
||||||
margin : 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.open {
|
|
||||||
color : #CCC;
|
|
||||||
}
|
|
||||||
.close {
|
|
||||||
color : #0A647C;
|
|
||||||
}
|
|