aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMiquel Lionel <lionelmiquel@sfr.fr>2020-11-10 10:54:21 +0100
committerMiquel Lionel <lionelmiquel@sfr.fr>2020-11-10 10:54:21 +0100
commit61839232124e7db4f9384aac04cf9334ce8c7be4 (patch)
tree24e0befb452368d09a0204d985bbb43c9e91d9ad
downloadgpigeon-61839232124e7db4f9384aac04cf9334ce8c7be4.tar.gz
gpigeon-61839232124e7db4f9384aac04cf9334ce8c7be4.zip
Commit initial
On ajoute les fichiers. On normalise le nom des icônes en favicon.ico puis on met la notif de suppression des fichiers au-dessus du tableau, plus pratique si il y a BEAUCOUP de liens créés.
-rwxr-xr-xLICENSE.txt8
-rw-r--r--domains.csv323
-rw-r--r--favicon.icobin0 -> 9278 bytes
-rwxr-xr-xgpigeon-template.cgi324
-rw-r--r--gpigeon.css26
-rw-r--r--index.html29
-rwxr-xr-xinstall.sh174
-rw-r--r--merci/index.html11
8 files changed, 895 insertions, 0 deletions
diff --git a/LICENSE.txt b/LICENSE.txt
new file mode 100755
index 0000000..1931cde
--- /dev/null
+++ b/LICENSE.txt
@@ -0,0 +1,8 @@
+(voir https://fr.wikipedia.org/wiki/Licence_MIT)
+Copyright (c) 2020 Miquel Lionel
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/domains.csv b/domains.csv
new file mode 100644
index 0000000..ef1d541
--- /dev/null
+++ b/domains.csv
@@ -0,0 +1,323 @@
+ADDRESS,IMAP,imap port,SMTP,smtp port
+420blaze.it,mail.cock.li,993,mail.cock.li,587
+8chan.co,mail.cock.li,993,mail.cock.li,587
+aaathats3as.com,mail.cock.li,993,mail.cock.li,587
+accountant.com,imap.mail.com,993,smtp.mail.com,587
+activist.com,imap.mail.com,993,smtp.mail.com,587
+ad.unsw.edu.au,outlook.office365.com,993,smtp.office365.com,587
+adexec.com,imap.mail.com,993,smtp.mail.com,587
+airmail.cc,mail.cock.li,993,mail.cock.li,587
+allergist.com,imap.mail.com,993,smtp.mail.com,587
+alumni.bits-pilani.ac.in,imap.gmail.com,993,smtp.gmail.com,465
+alumni.com,imap.mail.com,993,smtp.mail.com,587
+alumnidirector.com,imap.mail.com,993,smtp.mail.com,587
+alunos.utfpr.edu.br,imap.gmail.com,993,smtp.gmail.com,587
+anche.no,mail.autistici.org,993,smtp.autistici.org,465
+angelic.com,imap.mail.com,993,smtp.mail.com,587
+aol.com,imap.aol.com,993,smtp.aol.com,465
+appraiser.net,imap.mail.com,993,smtp.mail.com,587
+aquilenet.fr,imap.aquilenet.fr,993,smtp.aquilenet.fr,587
+archaeologist.com,imap.mail.com,993,smtp.mail.com,587
+arcticmail.com,imap.mail.com,993,smtp.mail.com,587
+artlover.com,imap.mail.com,993,smtp.mail.com,587
+asia.com,imap.mail.com,993,smtp.mail.com,587
+auctioneer.net,imap.mail.com,993,smtp.mail.com,587
+autistiche.org,mail.autistici.org,993,smtp.autistici.org,465
+autistici.org,mail.autistici.org,993,smtp.autistici.org,465
+autograf.pl,imap.poczta.onet.pl,993,smtp.poczta.onet.pl,465
+autoproduzioni.net,mail.autistici.org,993,smtp.autistici.org,465
+bartender.net,imap.mail.com,993,smtp.mail.com,587
+bastardi.net,mail.autistici.org,993,smtp.autistici.org,465
+bguth.de,wp300.webpack.hosteurope.de,993,wp300.webpack.hosteurope.de,587
+bigpond.com,imap.telstra.com,143,smtp.telstra.com,587
+bikerider.com,imap.mail.com,993,smtp.mail.com,587
+billycarlyle.uk,mail.muny.us,993,mail.muny.us,465
+birdlover.com,imap.mail.com,993,smtp.mail.com,587
+bjoernguthphotography.de,wp300.webpack.hosteurope.de,993,wp300.webpack.hosteurope.de,587
+bocken.org,imap.gmail.com,993,smtp.gmail.com,465
+brew-meister.com,imap.mail.com,993,smtp.mail.com,587
+bruttocarattere.org,mail.autistici.org,993,smtp.autistici.org,465
+canaglie.net,mail.autistici.org,993,smtp.autistici.org,465
+canaglie.org,mail.autistici.org,993,smtp.autistici.org,465
+carleton.ca,imap-mail.outlook.com,993,smtp-mail.outlook.com,587
+cash4u.com,imap.mail.com,993,smtp.mail.com,587
+ceng.metu.edu.tr,imap.ceng.metu.edu.tr,993,mailhost.ceng.metu.edu.tr,587
+cheerful.com,imap.mail.com,993,smtp.mail.com,587
+chef.net,imap.mail.com,993,smtp.mail.com,587
+chemist.com,imap.mail.com,993,smtp.mail.com,587
+chrissx.ga,chrissx.ga,993,chrissx.ga,25
+clarkson.edu,imap.gmail.com,993,smtp.gmail.com,587
+clasnet.sunyocc.edu,outlook.office365.com,993,smtp.office365.com,587
+clerk.com,imap.mail.com,993,smtp.mail.com,587
+clubmember.org,imap.mail.com,993,smtp.mail.com,587
+cmail.carleton.ca,imap-mail.outlook.com,993,smtp-mail.outlook.com,587
+cn.edu,imap-mail.outlook.com,993,smtp-mail.outlook.com,587
+cocaine.ninja,mail.cock.li,993,mail.cock.li,587
+cock.email,mail.cock.li,993,mail.cock.li,587
+cock.li,mail.cock.li,993,mail.cock.li,587
+cock.lu,mail.cock.li,993,mail.cock.li,587
+collector.org,imap.mail.com,993,smtp.mail.com,587
+columnist.com,imap.mail.com,993,smtp.mail.com,587
+comic.com,imap.mail.com,993,smtp.mail.com,587
+computer4u.com,imap.mail.com,993,smtp.mail.com,587
+consultant.com,imap.mail.com,993,smtp.mail.com,587
+contractor.net,imap.mail.com,993,smtp.mail.com,587
+coolsite.net,imap.mail.com,993,smtp.mail.com,587
+counsellor.com,imap.mail.com,993,smtp.mail.com,587
+cryptolab.net,mail.autistici.org,993,smtp.autistici.org,465
+cumallover.me,mail.cock.li,993,mail.cock.li,587
+cyberservices.com,imap.mail.com,993,smtp.mail.com,587
+datentopf.org,mail.datentopf.org,993,mail.datentopf.org,587
+deliveryman.com,imap.mail.com,993,smtp.mail.com,587
+dicksinhisan.us,mail.cock.li,993,mail.cock.li,587
+dicksinmyan.us,mail.cock.li,993,mail.cock.li,587
+diplomats.com,imap.mail.com,993,smtp.mail.com,587
+disroot.org,disroot.org,993,disroot.org,587
+distruzione.org,mail.autistici.org,993,smtp.autistici.org,465
+dr.com,imap.mail.com,993,smtp.mail.com,587
+duke.edu,outlook.office365.com,993,smtp.office365.com,587
+email.arizona.edu,imap.gmail.com,993,smtp.gmail.com,587
+email.com,imap.mail.com,993,smtp.mail.com,587
+eneco.com,outlook.office365.com,993,smtp.office365.com,587
+engineer.com,imap.mail.com,993,smtp.mail.com,587
+erciyes.edu.tr,posta.erciyes.edu.tr,993,smtp.erciyes.edu.tr,587
+ethancoe.com,mail.privateemail.com,993,mail.privateemail.com,465
+ethz.ch,mail.ethz.ch,993,mail.ethz.ch,587
+etu.upmc.fr,courriel.upmc.fr,993,smtps.upmc.fr,587
+europe.com,imap.mail.com,993,smtp.mail.com,587
+fastmail.com,imap.fastmail.com,993,smtp.fastmail.com,465
+fastmail.fm,imap.fastmail.com,993,smtp.fastmail.com,465
+firemail.cc,mail.cock.li,993,mail.cock.li,587
+forpsi.com,imap.forpsi.com,993,smtp.forpsi.com,465
+forthnet.gr,mail.forthnet.gr,993,smtp-auth.forthnet.gr,465
+fsmpi.rwth-aachen.de,mail.fsmpi.rwth-aachen.de,993,mail.fsmpi.rwth-aachen.de,465
+fsu-jena,exchange.uni-jena.de,993,smtp.uni-jena.de,587
+gcc.edu,imap-mail.outlook.com,993,smtp-mail.outlook.com,587
+getbackinthe.kitchen,mail.cock.li,993,mail.cock.li,587
+gmail.com,imap.gmail.com,993,smtp.gmail.com,587
+gmx.at,imap.gmx.net,993,mail.gmx.net,587
+gmx.com,imap.gmx.net,993,mail.gmx.net,587
+gmx.de,imap.gmx.net,993,mail.gmx.net,587
+gmx.eu,imap.gmx.net,993,mail.gmx.net,587
+gmx.fr,imap.gmx.com,993,mail.gmx.com,587
+gmx.info,imap.gmx.net,993,mail.gmx.net,587
+gmx.net,imap.gmx.net,993,mail.gmx.net,587
+gmx.org,imap.gmx.net,993,mail.gmx.net,587
+go2.pl,poczta.o2.pl,993,poczta.o2.pl,465
+goat.si,mail.cock.li,993,mail.cock.li,587
+googlemail.com,imap.googlemail.com,993,smtp.googlemail.com,587
+grrlz.net,mail.autistici.org,993,smtp.autistici.org,465
+hacari.com,mail.autistici.org,993,smtp.autistici.org,465
+hacari.net,mail.autistici.org,993,smtp.autistici.org,465
+hacari.org,mail.autistici.org,993,smtp.autistici.org,465
+helsinki.fi,outlook.office365.com,993,smtp.helsinki.fi,587
+hhu.de,mail.hhu.de,993,mail.hhu.de,465
+hitler.rocks,mail.cock.li,993,mail.cock.li,587
+horsefucker.org,mail.cock.li,993,mail.cock.li,587
+hostgator,gator4171.hostgator.com,993,gator4171.hostgator.com,587
+hotmail.be,outlook.office365.com,993,smtp.office365.com,587
+hotmail.ca,outlook.office365.com,993,smtp.office365.com,587
+hotmail.cl,outlook.office365.com,993,smtp.office365.com,587
+hotmail.co.id,outlook.office365.com,993,smtp.office365.com,587
+hotmail.co.il,outlook.office365.com,993,smtp.office365.com,587
+hotmail.co.in,outlook.office365.com,993,smtp.office365.com,587
+hotmail.co.jp,outlook.office365.com,993,smtp.office365.com,587
+hotmail.co.kr,outlook.office365.com,993,smtp.office365.com,587
+hotmail.co.th,outlook.office365.com,993,smtp.office365.com,587
+hotmail.co.uk,outlook.office365.com,993,smtp.office365.com,587
+hotmail.co.za,outlook.office365.com,993,smtp.office365.com,587
+hotmail.com,imap-mail.outlook.com,993,smtp-mail.outlook.com,587
+hotmail.com.ar,outlook.office365.com,993,smtp.office365.com,587
+hotmail.com.au,outlook.office365.com,993,smtp.office365.com,587
+hotmail.com.br,outlook.office365.com,993,smtp.office365.com,587
+hotmail.com.hk,outlook.office365.com,993,smtp.office365.com,587
+hotmail.com.tr,outlook.office365.com,993,smtp.office365.com,587
+hotmail.com.tw,outlook.office365.com,993,smtp.office365.com,587
+hotmail.com.vn,outlook.office365.com,993,smtp.office365.com,587
+hotmail.cz,outlook.office365.com,993,smtp.office365.com,587
+hotmail.de,outlook.office365.com,993,smtp.office365.com,587
+hotmail.dk,outlook.office365.com,993,smtp.office365.com,587
+hotmail.es,outlook.office365.com,993,smtp.office365.com,587
+hotmail.fi,outlook.office365.com,993,smtp.office365.com,587
+hotmail.fr,outlook.office365.com,993,smtp.office365.com,587
+hotmail.gr,outlook.office365.com,993,smtp.office365.com,587
+hotmail.hu,outlook.office365.com,993,smtp.office365.com,587
+hotmail.it,outlook.office365.com,993,smtp.office365.com,587
+hotmail.lt,outlook.office365.com,993,smtp.office365.com,587
+hotmail.lv,outlook.office365.com,993,smtp.office365.com,587
+hotmail.my,outlook.office365.com,993,smtp.office365.com,587
+hotmail.nl,outlook.office365.com,993,smtp.office365.com,587
+hotmail.no,outlook.office365.com,993,smtp.office365.com,587
+hotmail.ph,outlook.office365.com,993,smtp.office365.com,587
+hotmail.rs,outlook.office365.com,993,smtp.office365.com,587
+hotmail.se,outlook.office365.com,993,smtp.office365.com,587
+hotmail.sg,outlook.office365.com,993,smtp.office365.com,587
+hotmail.sk,outlook.office365.com,993,smtp.office365.com,587
+hs-mittweida.de,mail.hs-mittweida.de,993,mail.hs-mittweida.de,465
+humbug.pw,imap.migadu.com,993,smtp.migadu.com,587
+hushmail.com,imap.hushmail.com,993,smtp.hushmail.com,465
+icloud.com,imap.mail.me.com,993,smtp.mail.me.com,587
+illinois.edu, imap.gmail.com,993,smtp.gmail.com,465
+in.tum.de,mail.in.tum.de,993,mail.in.tum.de,465
+iname.com,imap.mail.com,993,smtp.mail.com,587
+inf.h-brs.de,imap.inf.h-brs.de,993,smtp.inf.h-brs.de,587
+infomaniak.com,imap.infomaniak.com,993,imap.infomaniak.com,587
+insiberia.net,mail.autistici.org,993,smtp.autistici.org,465
+insicuri.net,mail.autistici.org,993,smtp.autistici.org,465
+interactio.io,imap.gmail.com,993,smtp.gmail.com,587
+interia.eu,poczta.interia.pl,993,poczta.interia.pl,465
+interia.pl,poczta.interia.pl,993,poczta.interia.pl,465
+inventati.org,mail.autistici.org,993,smtp.autistici.org,465
+ionos.de,imap.ionos.de,993,smtp.ionos.de,587
+itu.dk,imap-mail.outlook.com,993,smtp-mail.outlook.com,587
+kean.edu,imap.gmail.com,993,smtp.gmail.com,587
+kipras.org,mail.kipras.org,993,mail.kipras.org,587
+krutt.org,mail.autistici.org,993,smtp.autistici.org,465
+kth.se,webmail.kth.se,993,smtp.kth.se,587
+lavabit.com,lavabit.com,993,lavabit.com,587
+librem.one,imap.librem.one,993,smtp.librem.one,465
+linuxmail.org,imap.mail.com,993,smtp.mail.com,587
+live.com,imap-mail.outlook.com,993,smtp-mail.outlook.com,587
+live.de,imap-mail.outlook.com,993,smtp-mail.outlook.com,587
+live.rhul.ac.uk,outlook.office365.com,993,smtp.office365.com,587
+logorroici.org,mail.autistici.org,993,smtp.autistici.org,465
+loves.dicksinhisan.us,mail.cock.li,993,mail.cock.li,587
+loves.dicksinmyan.us,mail.cock.li,993,mail.cock.li,587
+lukesmith.xyz,mail.lukesmith.xyz,993,mail.lukesmith.xyz,587
+mail.com,imap.mail.com,993,smtp.mail.com,587
+mail.de,imap.mail.de,993,smtp.mail.de,465
+mail.mcgill.ca,outlook.office365.com,993,smtp.office365.com,587
+mail.polimi.it,outlook.office365.com,993,smtp.office365.com,587
+mail.ru,imap.mail.ru,993,smtp.mail.ru,465
+mailbox.org,imap.mailbox.org,993,smtp.mailbox.org,587
+mailbox.tu-dresden.de,msx.tu-dresden.de,993,msx.tu-dresden.de,587
+mailfence.com,imap.mailfence.com,993,smtp.mailfence.com,465
+mailo.com,mail.mailo.com,993,mail.mailo.com,465
+memeware.net,mail.cock.li,993,mail.cock.li,587
+metu.edu.tr,imap.metu.edu.tr,993,smtp.metu.edu.tr,465
+ml1.net,imap.fastmail.com,993,smtp.fastmail.com,465
+mortemale.org,mail.autistici.org,993,smtp.autistici.org,465
+msn.com,imap-mail.outlook.com,993,smtp-mail.outlook.com,587
+muny.us,mail.muny.us,993,mail.muny.us,465
+myself.com,imap.mail.com,993,smtp.mail.com,587
+narod.ru,imap.yandex.com,993,smtp.yandex.com,587
+national.shitposting.agency,mail.cock.li,993,mail.cock.li,587
+ncsu.edu,imap.gmail.com,993,smtp.gmail.com,587
+netcourrier.com,mail.netcourrier.com,993,mail.netcourrier.com,465
+nigge.rs,mail.cock.li,993,mail.cock.li,587
+niser.ac.in,imap.gmail.com,993,smtp.gmail.com,587
+nuke.africa,mail.cock.li,993,mail.cock.li,587
+nyu.edu,imap.gmail.com,993,smtp.gmail.com,587
+o2.pl,poczta.o2.pl,993,poczta.o2.pl,465
+odu.edu,imap.gmail.com,993,smtp.gmail.com,587
+one.com,imap.one.com,993,send.one.com,465
+onenetbeyond.org,mail.autistici.org,993,smtp.autistici.org,465
+onet.com.pl,imap.poczta.onet.pl,993,smtp.poczta.onet.pl,465
+onet.eu,imap.poczta.onet.pl,993,smtp.poczta.onet.pl,465
+onet.pl,imap.poczta.onet.pl,993,smtp.poczta.onet.pl,587
+online.de,imap.1und1.de,993,smtp.1und1.de,465
+op.pl,imap.poczta.onet.pl,993,smtp.poczta.onet.pl,465
+opoczta.pl,imap.poczta.onet.pl,993,smtp.poczta.onet.pl,465
+orange.fr,imap.orange.fr,993,smtp.orange.fr,465
+outlook.at,imap-mail.outlook.com,993,smtp-mail.outlook.com,587
+outlook.com,imap-mail.outlook.com,993,smtp-mail.outlook.com,587
+outlook.de,imap-mail.outlook.com,993,smtp-mail.outlook.com,587
+outlook.es,outlook.office365.com,993,smtp.office365.com,587
+paranoici.org,mail.autistici.org,993,smtp.autistici.org,465
+pm.me,127.0.0.1,1143,127.0.0.1,1025
+poczta.fm,poczta.interia.pl,993,poczta.interia.pl,465
+poczta.onet.pl,imap.poczta.onet.pl,993,smtp.poczta.onet.pl,465
+polimi.it,outlook.office365.com,993,smtp.office365.com,587
+polito.it,mail.polito.it,993,mail.polito.it,465
+polito.it,mail.polito.it,993,mail.polito.it,465
+post.com,imap.mail.com,993,smtp.mail.com,587
+posteo.de,posteo.de,993,posteo.de,587
+posteo.net,posteo.de,993,posteo.de,587
+privacyrequired.com,mail.autistici.org,993,smtp.autistici.org,465
+prokonto.pl,poczta.o2.pl,993,poczta.o2.pl,465
+protonmail.ch,127.0.0.1,1143,127.0.0.1,1025
+protonmail.com,127.0.0.1,1143,127.0.0.1,1025
+rape.lol,mail.cock.li,993,mail.cock.li,587
+redchan.it,mail.cock.li,993,mail.cock.li,587
+resch.pw,mail.resch.pw,993,mail.resch.pw,587
+riseup.net,mail.riseup.net,993,mail.riseup.net,465
+rmcacs.org,imap.gmail.com,993,smtp.gmail.com,587
+runbox.com,mail.runbox.com,993,mail.runbox.com,587
+rwth-aachen.de,mail.rwth-aachen.de,993,mail.rwth-aachen.de,587
+sapo.pt,imap.sapo.pt,993,smtp.sapo.pt,587
+smail.inf.h-brs.de,imap.inf.h-brs.de,993,smtp.inf.h-brs.de,587
+southwales.ac.uk,imap.gmail.com,993,smtp.gmail.com,587
+spoko.pl,imap.poczta.onet.pl,993,smtp.poczta.onet.pl,465
+st.amu.edu.pl,outlook.office365.com,993,smtp.office365.com,587
+stevens.edu,imap.outlook.com,993,smtp.outlook.com,587
+stronzi.org,mail.autistici.org,993,smtp.autistici.org,465
+stud.tu-darmstadt.de,imap.stud.tu-darmstadt.de,993,smtp.tu-darmstadt.de,465
+stud.uis.no,outlook.office365.com,993,smtp.office365.com,587
+stud.uni-bamberg.de,outlook.office365.com,993,smtp.office365.com,587
+student.binadarma.ac.id,imap.gmail.com,993,smtp.gmail.com,587
+student.rmit.edu.au,outlook.office365.com,993,smtp.office365.com,587
+student.tuwien.ac.at,mail.student.tuwien.ac.at,993,mail.student.tuwien.ac.at,587
+student.utwente.nl,imap.gmail.com,993,smtp.gmail.com,587
+studenti.unipi.it,outlook.office365.com,993,smtp.office365.com,587
+students.rmcacs.org,imap.gmail.com,993,smtp.gmail.com,587
+students.southwales.ac.uk,imap.gmail.com,993,smtp.gmail.com,587
+studio.unibo.it,outlook.office365.com,993,smtp.office365.com,587
+studio.unibo.it,outlook.office365.com,993,smtp.office365.com,587
+studserv.uni-leipzig.de,studserv.uni-leipzig.de,993,studserv.uni-leipzig.de,25
+subvertising.org,mail.autistici.org,993,smtp.autistici.org,465
+t-online.de,secureimap.t-online.de,993,securesmtp.t-online.de,465
+techie.com,imap.mail.com,993,smtp.mail.com,587
+tecnico.ulisboa.pt,mail.tecnico.ulisboa.pt,993,mail.tecnico.ulisboa.pt,465
+teknik.io,mail.teknik.io,993,mail.teknik.io,587
+telenet.be,imap.telenet.be,993,smtp.telenet.be,587
+tfwno.gf,mail.cock.li,993,mail.cock.li,587
+tlen.pl,poczta.o2.pl,993,poczta.o2.pl,465
+tlu.edu,imap-mail.outlook.com,993,smtp-mail.outlook.com,587
+tquad.ai,imap.mail.eu-west-1.awsapps.com,993,smtp.mail.eu-west-1.awsapps.com,465
+tu-harburg.de,mail.tu-harburg.de,993,mail.tu-harburg.de,587
+tuhh.de,mail.tu-harburg.de,993,mail.tu-harburg.de,587
+tum.de,xmail.mwn.de,993,postout.lrz.de,587
+txstate.edu,outlook.office365.com,993,smtp.office365.com,587
+ua.pt,outlook.office365.com,993,mail.ua.pt,25
+uach.mx,imap.gmail.com,993,smtp.gmail.com,587
+ucdavis.edu,imap.gmail.com,993,smtp.gmail.com,587
+uni-duesseldorf.de,mail.hhu.de,993,mail.hhu.de,465
+unilodz.eu,outlook.office365.com,993,smtp.office365.com,587
+unitybox.de,mail.unity-mail.de,993,mail.unity-mail.de,587
+univ-ubs.fr,partage.univ-ubs.fr,993,partage.univ-ubs.fr,587
+uoregon.edu,imap.uoregon.edu,993,smtp.uoregon.edu,587
+uqtr.ca,outlook.office365.com,993,smtp.office365.com,587
+usa.com,imap.mail.com,993,smtp.mail.com,587
+utas.edu.au,outlook.office365.com,993,smtp.office365.com,587
+utdallas.edu,outlook.office365.com,993,smtp.office365.com,587
+uw.edu,imap.gmail.com,993,smtp.gmail.com,465
+uwcad.it,imap.gmail.com,993,smtp.gmail.com,465
+uymail.com,imap.mail.com,993,smtp.mail.com,587
+vip.onet.pl,imap.poczta.onet.pl,993,smtp.poczta.onet.pl,465
+vivaldi.net,imap.vivaldi.net,993,smtp.vivaldi.net,587
+vp.pl,imap.poczta.onet.pl,993,smtp.poczta.onet.pl,465
+vt.edu,imap.gmail.com,993,smtp.gmail.com,587
+vxempire.xyz,vxempire.xyz,993,vxempire.xyz,587
+waifu.club,mail.cock.li,993,mail.cock.li,587
+wanadoo.fr,imap.orange.fr,993,smtp.orange.fr,465
+wants.dicksinhisan.us,mail.cock.li,993,mail.cock.li,587
+wants.dicksinmyan.us,mail.cock.li,993,mail.cock.li,587
+web.de,imap.web.de,993,smtp.web.de,587
+wit.edu,outlook.office365.com,993,smtp.office365.com,587
+wp.pl,imap.wp.pl,993,smtp.wp.pl,465
+writeme.com,imap.mail.com,993,smtp.mail.com,587
+ya.ru,imap.yandex.com,993,smtp.yandex.com,587
+yahoo.com,imap.mail.yahoo.com,993,smtp.mail.yahoo.com,587
+yahoo.fr,imap.mail.yahoo.com,993,smtp.mail.yahoo.com,587
+yahoo.gr,imap.mail.yahoo.com,993,smtp.mail.yahoo.com,587
+yandex.by,imap.yandex.com,993,smtp.yandex.com,587
+yandex.com,imap.yandex.com,993,smtp.yandex.com,587
+yandex.kz,imap.yandex.com,993,smtp.yandex.com,587
+yandex.net,imap.yandex.com,993,smtp.yandex.com,587
+yandex.ru,imap.yandex.com,993,smtp.yandex.com,587
+yandex.ua,imap.yandex.com,993,smtp.yandex.com,587
+ymail.com,imap.mail.yahoo.com,993,smtp.mail.yahoo.com,465
+zaclys.net,mail.zaclys.net,993,mail.zaclys.net,465
+zoho.com,imap.zoho.com,993,smtp.zoho.com,465
+zohomail.eu,imap.zoho.eu,993,smtp.zoho.eu,465
+sfr.fr,imap.sfr.fr,993,smtp.sfr.fr,465
diff --git a/favicon.ico b/favicon.ico
new file mode 100644
index 0000000..83bbd77
--- /dev/null
+++ b/favicon.ico
Binary files differ
diff --git a/gpigeon-template.cgi b/gpigeon-template.cgi
new file mode 100755
index 0000000..d3a9abd
--- /dev/null
+++ b/gpigeon-template.cgi
@@ -0,0 +1,324 @@
+#! /usr/bin/perl -wT
+
+use Digest::SHA qw(sha256_hex);
+use warnings;
+use strict;
+use Email::Valid;
+use String::Random;
+use CGI qw(param cookie);
+use CGI::Carp qw(fatalsToBrowser);
+
+delete @ENV{qw(IFS PATH CDPATH BASH_ENV)};
+
+sub escape_arobase {
+ my $mailaddress = shift;
+ my $arobase = '@';
+ my $escarobase = q{\@};
+ my $escapedmailaddress = $mailaddress;
+ $escapedmailaddress =~ s/$arobase/$escarobase/;
+ return $escapedmailaddress;
+}
+
+sub untaint_cgi_filename {
+ my $filename = shift;
+ if ($filename =~ /^([-\@\w.\/]+)$/) {
+ #data untainted
+ $filename = $1;
+ }
+ else {
+ die "$!";
+ }
+ chomp $filename;
+ return $filename;
+}
+
+sub notif_if_defined{
+ my $notif = shift;
+ if (defined $notif){
+ return $notif;
+ }
+}
+
+my $PASSWD_HASH = q{password_hash_goes_here};
+my $cgi_query_get = CGI->new;
+my $PASSWD = $cgi_query_get->param('password');
+
+if ( sha256_hex($PASSWD) eq $PASSWD_HASH and $ENV{'REQUEST_METHOD'} eq 'POST'){
+
+ $ENV{'PATH'}='/usr/bin';
+ my $HTML_CONTENT_TYPE_HEADER = 'Content-type: text/html';
+ my $HTML_CHARSET = '<meta http-equiv="content-type" content="text/html;
+charset=utf-8">',"\n",'<meta charset="UTF-8">',"\n";
+ my $HTML_CSS = '<link rel="stylesheet" type="text/css"
+href="/gpigeon.css">';
+ my $mymailaddr = q{your_mail_address_goes_here};
+ my $mymailaddr_password = q{your_mail_address_password_goes_here};
+ my $mymail_smtp = q{smtp_domain_goes_here};
+ my $mymail_smtport = q{smtp_port_goes_here};
+ my $mymail_gpgid = q{gpgid_goes_here};
+ my $myescapedmailaddr = escape_arobase($mymailaddr);
+ my @text_strings = ('La suppression a r&eacute;ussi !',
+ 'L&apos;adresse',
+ 'est valide !',
+ 'n&apos;est pas valide !',
+ 'sed "s/Inconnu', # displays on main page table when supposed sender isn't identified
+ 'La longueur du message doit être inférieure à 10000 charactères.',
+ 'Formulaire d&apos;envoi de messages GPG', # title for generated links
+ 'Rentrez votre message ci-dessous, ',
+ 'M&apos;envoyer le message',
+ 'Lien g&eacute;n&eacute;r&eacute; pour', #displays if link gen is successful
+ 'lien formulaire gpg', # mail subject when clicking a mailto: link in table
+ 'Ton lien est', # message when clicking a mailto: link in table
+ 'Supprimer', # text on button for deleting links
+ 'Mince! Je ne peux pas ouvrir', # message when file opening fails
+ 'GPIGEON.CGI: mails GPG pour le non-initié.', # main page title!
+ 'Salut et bienvenue.', # a greeting at the top of the main page.
+ 'Se d&eacute;connecter', # disconnect button text on main page
+ 'Actualiser la page', # refresh button text
+ 'G&eacute;n&eacute;rer lien', #link generation button text
+ "Liens g&eacute;n&eacute;r&eacute;s pour <b>$mymailaddr</b>:", # label above links table
+ 'Supprimer tous les liens', # delete all links button text
+ 'Lien', # first table header, 'Link'
+ 'Pour', # second table header, 'For'
+ 'Suppression', # third table header, 'Delete'
+ 'La suppression a &eacute;chou&eacute;. Voici la cause: '
+ );
+ my $psswd_formfield = '<input type="hidden" name="password" value="' . $cgi_query_get->param('password') . '">',"\n";
+ my $SRV_NAME = $ENV{'SERVER_NAME'};
+ my ($notif_de_creation, $notif_mail_valide, $notif_suppression) = undef;
+ my @table_des_liens_crees = ();
+
+ if (defined $cgi_query_get->param('supprlien')){
+ my $pending_deletion = $cgi_query_get->param('supprlien');
+ my $relpath_todelete = "./l/$pending_deletion";
+ if (unlink untaint_cgi_filename($relpath_todelete)){
+ $notif_suppression='<span style="color:green">'.$text_strings[0].'</span>';
+ }
+ else {
+ $notif_suppression='<span style="color:red">'.$text_string[24].
+ $relpath_todelete.':'.$!.'</span>';
+ }
+ }
+
+ if (defined $cgi_query_get->param('supprtout')){
+ opendir my $dir_handle, './l' or die "Can't open ./l: $!";
+
+ while (readdir $dir_handle) {
+ if ($_ ne '.' and $_ ne '..'){
+ my $relpath_todelete = "./l/$_";
+ unlink untaint_cgi_filename($relpath_todelete) or die "$!";
+ $notif_suppression='<span style="color:green">'.
+ $text_strings[0] .'</span>';
+ }
+ }
+ closedir $dir_handle;
+ }
+
+ if (defined $cgi_query_get->param('mail')){
+ my $entered_mail_addr = scalar $cgi_query_get->param('mail');
+ if ( Email::Valid->address($entered_mail_addr) ){
+ $notif_mail_valide = "<span style='color:green'>$text_strings[1]
+ $entered_mail_addr $text_strings[2]</span>";
+ my $escaped_entered_mail_addr = escape_arobase($entered_mail_addr);
+ my $random_mailform_fn_str = String::Random->new;
+ my @mailform_fn_str_buffer = ();
+ for (1..5){
+ push @mailform_fn_str_buffer,
+ $random_mailform_fn_str->randregex('\w{1,15}[0-9]{1,15}');
+ }
+ my $mailform_fn_str_buffer_nospace = join('',@mailform_fn_str_buffer);
+ my $GENERATED_FORM_FILENAME =
+ "$mailform_fn_str_buffer_nospace.cgi";
+ my $MAILFORM_LINK = "http://$SRV_NAME/cgi-bin/l/$GENERATED_FORM_FILENAME";
+ my $MAILFORM_RELPATH = "./l/$GENERATED_FORM_FILENAME";
+ if (open my $mailform_fh, ">", $MAILFORM_RELPATH){
+ print $mailform_fh '#! /usr/bin/perl -wT',"\n\n",
+ ' my $demandeur_du_lien = q{', $entered_mail_addr
+ , '};', "\n",
+ 'delete @ENV{qw(IFS PATH CDPATH BASH_ENV)};', "\n",
+ '$ENV{\'PATH\'}="/usr/bin";',
+ 'use warnings;', "\n",
+ 'use strict;',"\n",
+ 'use GPG;',"\n",
+ 'use Net::SMTP;',"\n",
+ 'use Net::SMTPS;',"\n",
+ 'use CGI::Carp qw(fatalsToBrowser);',
+ 'use CGI qw(param cookie);', "\n",
+ 'my $cgi_query_get = CGI->new;', "\n",
+ 'my $smtp = Net::SMTPS->new(\''. $mymail_smtp .'\', Port =>
+ \''. $mymail_smtport .'\',
+ doSSL => \'ssl\', Debug_SSL => 0);', "\n",
+ 'my ($msg, $enc_msg, $error_processing_msg) = undef;', "\n",
+ 'if (defined $cgi_query_get->param(\'msg\') and $ENV{\'REQUEST_METHOD\'} eq \'POST\'){',"\n",
+ ' $msg = $cgi_query_get->param(\'msg\');', "\n",
+ ' $msg =~ tr/\r//d;', "\n",
+ ' if (length $msg gt 10000){', "\n",
+ ' $error_processing_msg = q{<span style="color:red"><b>La longueur du message doit être inférieure à 10000 charactères.</b></span>};', "\n",
+ ' }', "\n",
+ ' my $gpg = new GPG(gnupg_path => "/usr/bin", homedir =>
+ "/usr/share/www-data/.gnupg/");', "\n",
+ ' $enc_msg = $gpg->encrypt("De la part de " .
+ $demandeur_du_lien . ":\n". $msg, \'0x'. $mymail_gpgid .'\') or die
+ $gpg->error();', "\n",
+ ' $smtp->auth(\''. $mymailaddr .'\', \''.
+ $mymailaddr_password .'\')
+ or die;', "\n",
+ ' $smtp->mail(\''. $mymailaddr .'\') or die "Net::SMTP module has broke:
+ $!.";', "\n",
+ 'if ($smtp->to(\''. $mymailaddr .'\')){', "\n",
+ '$smtp->data();', "\n",
+ '$smtp->datasend("To: '. $myescapedmailaddr .'\n");', "\n",
+ '$smtp->datasend("\n");', "\n",
+ '$smtp->datasend("$enc_msg\n");', "\n",
+ '$smtp->dataend();', "\n",
+ 'unlink "../' . $MAILFORM_RELPATH . '";', "\n",
+ 'print "Location: /gpigeon/merci/index.html\n\n";', "\n",
+ '}', "\n",
+ 'else {', "\n",
+ 'die $smtp->message();', "\n",
+ '}', "\n",
+ '}', "\n",
+ 'print "Content-type: text/html", "\n\n";', "\n",
+ 'print qq{<!DOCTYPE html>', "\n",
+ '<html>', "\n",
+ ' <head>', "\n",
+ ' <link rel="icon" sizes="48x48" ',"\n",
+ 'type="image/ico" href="/gpigeon/favicon.ico">', "\n",
+ $HTML_CSS, "\n",
+ $HTML_CHARSET, "\n",
+ '<title>Formulaire ', "\n",
+ 'd\'envoi de message GPG</title>',"\n",
+ ' </head>', "\n",
+ ' <body>', "\n",
+ ' <p>'. $text_strings[7] . '<b>'
+ .$escaped_entered_mail_addr .'</b> :</p>', "\n",
+ ' <form method="POST">', "\n",
+ ' <textarea "', "\n",
+ 'wrap="off" cols="50" rows="30" name="msg"
+ required></textarea>', "\n",
+ '<br>', "\n",
+ '$error_processing_msg', "\n",
+ '<br>', "\n",
+ '<input type="submit"
+ value="'. $text_strings[8] .'">', "\n",
+ ' </form>', "\n",
+ ' </body>', "\n",
+ '</html>};';
+ close $mailform_fh;
+ chmod(0755,$MAILFORM_RELPATH);
+
+ $notif_de_creation="<span style=\'color:green\'>$text_strings[9] $entered_mail_addr</span><br><a href=\'$MAILFORM_LINK\'>$MAILFORM_LINK</a>";
+ }
+ else{
+ close $mailform_fh and die "cant open $MAILFORM_RELPATH: $!";
+
+ }
+ }
+ else{
+ $notif_mail_valide = "<span style='color:red'>$text_strings[1]
+ $entered_mail_addr $text_strings[3].</span>";
+ }
+ }
+
+ # ici on ouvre le dossier /var/www/cgi/cgi-bin/l qui contient les
+ # formulaires de contacts afin de lister son contenu
+ opendir my $dir_handle, './l' or die "Can't open ./l: $!";
+
+ while (readdir $dir_handle) {
+ if ($_ ne '.' and $_ ne '..'){
+ my $fichier_formu_mail = $_;
+ my $demandeur_du_lien = undef;
+ if (open my $fh_formu_mail , '<', "./l/$fichier_formu_mail"){
+ # le demandeur du lien est sur la 4ième ligne, d'où le 1..4
+ for (1..4){
+ $demandeur_du_lien = readline $fh_formu_mail;
+ $demandeur_du_lien =~ s/q\{(.*?)\}//i;
+ $demandeur_du_lien = $1;
+ }
+ close $fh_formu_mail;
+
+ if (not defined $demandeur_du_lien){
+ $demandeur_du_lien = $text_strings[4];
+ }
+
+ push @table_des_liens_crees, '<tr>',"\n",
+ "\t<td><a href='/cgi-bin/l/$fichier_formu_mail'>ici</a></td>", "\n",
+ "\t<td><a
+ href='mailto:$demandeur_du_lien?subject=$text_strings[10]",
+ "gpg&body=$text_strings[11] http://$SRV_NAME/cgi-bin/l/$fichier_formu_mail'>$demandeur_du_lien</a></td>", "\n",
+ '<td>
+ <form method="POST">
+ <input type="hidden" name="supprlien"
+ value="'.$fichier_formu_mail.'">
+ <input type="hidden" name="password"
+ value="'.$cgi_query_get->param('password').'">
+ <input type="submit" value="'. $text_strings[12] .'">
+ </form>
+ </td>', "\n",
+ '</tr>';
+
+ }
+ else {
+ close $fh_formu_mail;
+ die "Content-type: text/plain", "\n\n",
+ "$text_strings[13] $fichier_formu_mail: $!";
+ }
+
+
+ }
+ }
+ closedir $dir_handle;
+
+ print $HTML_CONTENT_TYPE_HEADER,"\n\n",
+ '<!DOCTYPE html>', "\n",
+ '<html>', "\n",
+ '<head>', "\n",
+ '<link rel="icon" sizes="48x48" ',"\n",
+ 'type="image/ico" href="/gpigeon/favicon.ico">', "\n",
+ $HTML_CSS, "\n",
+ $HTML_CHARSET, "\n",
+ '<title>'. $text_strings[14] .'</title>', "\n",
+ '</head>', "\n",
+ '<body>', "\n",
+ '<p>'. $text_strings[15] .'</p>', "\n",
+ '<form method="POST">', "\n",
+ '<input type="hidden" name="password" value="0">', "\n",
+ '<input type="submit" value="'. $text_strings[16] .'">', "\n",
+ '</form>', "\n",
+ '<form method="POST">', "\n",
+ $psswd_formfield,
+ ' <input type="submit" value="'. $text_strings[17] .'">', "\n",
+ '</form>', "\n",
+ '<hr>', "\n",
+ '<br>', "\n",
+ '<form method="POST">', "\n",
+ $psswd_formfield,
+ 'Mail de la personne:<br>', "\n",
+ '<input tabindex="1" type="text" name="mail" maxlength="120">', "\n",
+ '<input tabindex="2" type="submit" value="'.
+ $text_strings[18] .'">', "\n",
+ '</form>', "\n",
+ notif_if_defined($notif_mail_valide), '<br>', "\n",
+ notif_if_defined($notif_de_creation),
+ '<hr>', "\n",
+ '<p>'. $text_strings[19] .'</p>', "\n",
+ '<form method="POST">', "\n",
+ $psswd_formfield,
+ '<input type="hidden" name="supprtout">', "\n",
+ '<input type="submit" value="'. $text_strings[20] .'">', "\n",
+ '</form>', "\n",
+ notif_if_defined($notif_suppression),
+ '<table>', "\n",
+ '<tr>', "\n",
+ '<th>'. $text_strings[21] .'</th>', "\n",
+ '<th>'. $text_strings[22] .'</th>', "\n",
+ '<th>'. $text_strings[23] .'</th>', "\n",
+ '</tr>', "\n",
+ "@table_des_liens_crees", "\n",
+ '</table>', "\n",
+ '</body>', "\n",
+ '</html>';
+}
+else {
+ print 'Location: /gpigeon/index.html', "\n\n";
+}
diff --git a/gpigeon.css b/gpigeon.css
new file mode 100644
index 0000000..2431dc2
--- /dev/null
+++ b/gpigeon.css
@@ -0,0 +1,26 @@
+html{
+ width:100%;
+ height:100%;
+ background-color:skyblue
+}
+
+th{
+ padding:10px;
+ font-size:110%;
+}
+
+td{
+ text-align:center;
+ padding: 5px ;
+}
+
+input{
+ padding:10px;
+ margin:5px;
+ margin-top:10px;
+}
+
+table{
+ margin-top:10px;
+ border: 1px solid black;
+}
diff --git a/index.html b/index.html
new file mode 100644
index 0000000..f46b5a0
--- /dev/null
+++ b/index.html
@@ -0,0 +1,29 @@
+<!DOCTYPE html>
+<html>
+<head>
+
+ <link rel="icon" type="image/x-icon" href="/gpigeon/gpigeon.ico">
+ <title>Auth2gpigeon</title>
+ <style>
+ html{background-color:skyblue;}
+ #crypto_secu{
+ border: 1px solid black;
+ margin:5%;
+ float:left;
+ }
+ </style>
+<meta charset="utf-8">
+</head>
+<body>
+<form action="/cgi-bin/gpigeon.cgi" method="POST">
+ <h1 style="text-align:center">📧 Gpigeon 🕊️</h1>
+ 🔒 Mot de passe : <input type="password" name="password">
+ <input type="submit" value="S'authentifier">
+ </form>
+
+ <a href="https://xkcd.com/538/"><img id="crypto_secu" src="/images/crypto_secu.png"
+ title="XKCD fait redescendre les nerds du chiffrement sur terre"
+ alt="bande dessinée de XKCD faisant redescendre les nerds du chiffrement sur terre"></a>
+</body>
+
+</html>
diff --git a/install.sh b/install.sh
new file mode 100755
index 0000000..508f4bb
--- /dev/null
+++ b/install.sh
@@ -0,0 +1,174 @@
+# !/bin/sh
+THIS_SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
+emailre=".\+@.\+\\..\+"
+GPIGEON_SCRIPT=$THIS_SCRIPT_DIR/cgi-bin/gpigeon.cgi
+
+command -V gpg >/dev/null 2>&1 && GPG="gpg" || GPG="gpg2"
+printf "Welcome to the gpigeon.cgi installer. We will first install the
+dependencies.\n"
+
+apt install perl gcc make cpanminus libnet-ssleay-perl
+cpanm Digest::SHA Email::Valid String::Random HTML::Entities CGI CGI::Carp
+Net::SMTP Net::SMTPS GPG || ( printf "\nInstallation of dependencies failed\n" && exit 1 )
+
+while [[ -z $_APP_PASSWORD ]]; do
+ printf "Choose a password for the gpigeon web application: \n"
+ read -r -s _APP_PASSWORD
+done
+
+while [[ $_APP_PASSWORD_VERIFICATION != $_APP_PASSWORD ]]; do
+ printf "\nRepeat password: "
+ read -r -s _APP_PASSWORD_VERIFICATION
+done
+
+# prevent obscure errors with q{} from perl
+_APP_PASSWORD="$(echo $_APP_PASSWORD | sed s/{/\\\\{/g | sed s/}/\\\\}/g)"
+HASHED_PASSWORD=`perl -e "use Digest::SHA qw(sha256_hex);print sha256_hex(q{$_APP_PASSWORD});"`
+printf "\nPassword matches. The SHA256 hash of it is: \033[32m$HASHED_PASSWORD\033[0m\n"
+
+printf "\nWhat is your email address: "
+read -r _YOUR_EMAIL
+while ! echo "$_YOUR_EMAIL" | grep "$emailre" >/dev/null; do
+ printf "\nYour email address is not a valid one. Type it again: "
+ read -r _YOUR_EMAIL
+done
+printf "\033[32m$_YOUR_EMAIL\033[0m seems a valid e-mail address."
+
+while [[ -z $_YOUR_EMAIL_PASSWORD ]]; do
+ printf "\nPassword for your email account: "
+ read -r -s _YOUR_EMAIL_PASSWORD
+done
+
+while [[ -z $_YOUR_EMAIL_PASSWORD_VERIFICATION != $_YOUR_EMAIL_PASSWORD ]]; do
+ printf "\nAgain for confirmation: "
+ read -r -s _YOUR_EMAIL_PASSWORD_VERIFICATION
+done
+
+_YOUR_EMAIL_PASSWORD_VERIFICATION=$(printf '%s\n' "$_YOUR_EMAIL_PASSWORD" | sed -e 's/[]\/$*.^[]/\\&/g');
+
+
+domain="$(echo "$_YOUR_EMAIL" | sed "s/.*@//")"
+serverinfo="$(grep "^$domain" "domains.csv" 2>/dev/null)"
+if [ -z "$serverinfo" ]; then
+ printf "\nAh. Your email domain isn't listed in the domains.csv file. Don't
+ worry, you can find info relating to that easily on the domain website /
+ the Internet, and type it in here."
+ while ! echo "$smtp" | grep -Eo "[.[:alnum:]]"; do
+ printf "\nWhat is the SMTP server address of your domain (generally it
+ is like this: smtp.domain.net)? "
+ read -r smtp
+ done
+
+ while ! echo "$sport" | grep -Eo "[0-9]{1,5}"; do
+ printf "\nWhat is the SMTP server port (it is 465 or 587 in most
+ cases) ? "
+ read -r sport
+ done
+else
+ print "Yay! Your email domain seems to be listed in domains.csv, so you don't
+ have to manually type the smtp server address and port manually."
+ IFS=, read service imap iport smtp sport <<EOF
+ $serverinfo
+EOF
+ # smtp and sport variable are the only useful variable for our use case
+fi
+gpgidlong="$($GPG -k --with-colons $_YOUR_EMAIL| awk -F: '/^pub:/ {print $5}')"
+
+if [ -z gpgid ]; then
+ printf "No GPG key pair are related to your email. Create one and launch
+ this script again."
+ exit 0
+else
+ printf "\nGPG keyid associated to $_YOUR_EMAIL : \033[32m0x$gpgidlong\033[0m."
+fi
+
+while ! echo "$SCRIPT_DIR" | grep -Eo "^/"; do
+ printf "\nWhich directory you want the script to be in (defaults to
+ /var/www/cgi-bin/) ? Please provide an absolute path: "
+ read -r SCRIPT_DIR
+done
+
+printf "\nWhat user and group you want to use for the gpigeon CGI script
+(defaults to www-data for both):"
+printf "\nUser: "
+read -r SCRIPT_USER
+printf "\nGroup (leave blank for same as user): "
+read -r SCRIPT_GROUP
+
+if [ -z SCRIPT_USER ]; then
+ SCRIPT_USER="www-data"
+else
+ while ! id $SCRIPT_USER; do
+ printf "\nThe user you typed doesn't seem to exist. Try again with a
+ valid one: "
+ read -r SCRIPT_USER
+ done
+fi
+
+if [ -z SCRIPT_GROUP ]; then
+ SCRIPT_GROUP=$SCRIPT_USER
+else
+ while ! getent group $SCRIPT_GROUP; do
+ printf "\nThe group you typed doesn't seem to exist. Try again with a
+ valid one: "
+ read -r SCRIPT_GROUP
+ done
+fi
+
+printf "\nWhere will be put the static files ? Defaults to
+/var/www/html/gpigeon. Please provide an absolute path: "
+read -r SCRIPT_STATIC_DIR
+
+if [ -z SCRIPT_STATIC_DIR ]; then
+ SCRIPT_STATIC_DIR='/var/www/html/gpigeon'
+else
+ while ! echo $SCRIPT_STATIC_DIR | grep -Eo "^/"; do
+ printf "\nSeems you didn't provided an absolute path. Try again : "
+ read -r SCRIPT_STATIC_DIR
+ done
+fi
+
+cp $THIS_SCRIPT_DIR/gpigeon-template.cgi $GPIGEON_SCRIPT
+sed "s/password_hash_goes_here/$HASHED_PASSWORD/g" -i $GPIGEON_SCRIPT
+sed "s/your_mail_address_goes_here/$_YOUR_EMAIL/g" -i $GPIGEON_SCRIPT
+sed "s/your_mail_address_password_goes_here/$_YOUR_EMAIL_PASSWORD_VERIFICATION/g" -i $GPIGEON_SCRIPT
+sed "s/smtp_domain_goes_here/$smtp/g" -i $GPIGEON_SCRIPT
+sed "s/smtp_port_goes_here/$sport/g" -i $GPIGEON_SCRIPT
+sed "s/gpgid_goes_here/$gpgidlong/g" -i $GPIGEON_SCRIPT
+
+printf "\n\nCreating script directory at $SCRIPT_DIR ..."
+mkdir -p "$SCRIPT_DIR/l" || exit 1
+
+printf "\nCreating static files directory at $SCRIPT_STATIC_DIR"
+mkdir -p "$SCRIPT_STATIC_DIR" || exit 1
+
+printf "\nCopying personalized gpigeon.cgi script to $SCRIPT_DIR ..."
+cp $GPIGEON_SCRIPT $SCRIPT_DIR/ || exit 1
+
+printf "\nCopying static files to $SCRIPT_STATIC_DIR ..."
+cp -r $THIS_SCRIPT_DIR/gpigeon $SCRIPT_STATIC_DIR || exit 1
+cp $THIS_SCRIPT_DIR/gpigeon.css $SCRIPT_STATIC_DIR || exit 1
+
+printf "\nSetting ownership as $SCRIPT_USER:$SCRIPT_GROUP for directory $SCRIPT_DIR ..."
+chown $SCRIPT_GROUP:$SCRIPT_USER $SCRIPT_DIR || exit 1
+
+printf "\nSetting ownership as $SCRIPT_USER:$SCRIPT_GROUP for static directory
+$SCRIPT_STATIC_DIR ..."
+chown $SCRIPT_GROUP:$SCRIPT_USER $SCRIPT_STATIC_DIR || exit 1
+
+printf "\nSetting up the GPG directory for the script ..."
+if [ -z GNUPGHOME ]; then
+ mkdir -p /usr/share/www-data/.gnupg
+ cp -r ~/.gnupg /usr/share/www-data/
+ chown $SCRIPT_USER:$SCRIPT_GROUP /usr/share/www-data/.gnupg
+ chmod 600 /usr/share/www-data/.gnupg
+else
+ mkdir -p $GNUPGHOME
+ cp -r ~/.gnupg /usr/share/www-data/
+ chown $SCRIPT_USER:$SCRIPT_GROUP $GNUPGHOME
+ chmod 600 $GNUPGHOME
+fi
+
+printf "\n\033[32mCongrats, we are done! You should now configure your web server in
+order to execute the CGI scripts in the $SCRIPT_DIR folder. Manuals and
+websites of these softwares will help you.\033[0m\n\n"
diff --git a/merci/index.html b/merci/index.html
new file mode 100644
index 0000000..8e5c55a
--- /dev/null
+++ b/merci/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <link rel="icon" type="image/x-icon" href="/gpgform/gpigeon.ico">
+ <title>Message bien envoy&eacute;&#33;</title>
+ </head>
+ <body>
+ <h1>Ton message a bien &eacute;t&eacute; envoy&eacute;. Merci
+ beaucoup</h1>
+ </body>
+</html>