diff -u freepops-0.2.9/debian/freepops.templates freepops-0.2.9/debian/freepops.templates --- freepops-0.2.9/debian/freepops.templates +++ freepops-0.2.9/debian/freepops.templates @@ -1,12 +1,3 @@ -# These templates have been reviewed by the debian-l10n-english -# team -# -# If modifications/additions/rewording are needed, please ask -# for an advice to debian-l10n-english@lists.debian.org -# -# Even minor modifications require translation updates and such -# changes should be coordinated with translators and reviewers. - Template: freepops/init Type: boolean _Description: Start freepopsd automatically after each boot? diff -u freepops-0.2.9/debian/changelog freepops-0.2.9/debian/changelog --- freepops-0.2.9/debian/changelog +++ freepops-0.2.9/debian/changelog @@ -1,11 +1,9 @@ -freepops (0.2.9-4.1) unstable; urgency=low +freepops (0.2.9-5~ppa1~lucid) lucid; urgency=low - * Non-maintainer upload. - * Fix pending l10n issues. Debconf translations: - - German (Helge Kreutzmann). Closes: #512126 - - Simplified Chinese (Ji ZhengYu). Closes: #560783 + * Uploaded to PPA + * Added lua plugins updates - -- Christian Perrier Thu, 17 Dec 2009 07:43:00 +0100 + -- Marco Giorgi Sun, 16 May 2010 15:33:59 +0100 freepops (0.2.9-4) unstable; urgency=low diff -u freepops-0.2.9/debian/freepops.postinst freepops-0.2.9/debian/freepops.postinst --- freepops-0.2.9/debian/freepops.postinst +++ freepops-0.2.9/debian/freepops.postinst @@ -65,11 +65,18 @@ # init script.......... db_get freepops/init - if [ "$RET" = true ]; then +# if [ "$RET" = true ]; then +# invoke-rc.d freepops stop 2>/dev/null || true +# update-rc.d freepops defaults 19 19 1>/dev/null 2>/dev/null +# invoke-rc.d freepops start +# echo +# fi + if [ -x /usr/sbin/invoke-rc.d ]; then + if [ -x /usr/sbin/update-rc.d ]; then invoke-rc.d freepops stop 2>/dev/null || true update-rc.d freepops defaults 19 19 1>/dev/null 2>/dev/null invoke-rc.d freepops start - echo + fi fi diff -u freepops-0.2.9/debian/freepops.dirs freepops-0.2.9/debian/freepops.dirs --- freepops-0.2.9/debian/freepops.dirs +++ freepops-0.2.9/debian/freepops.dirs @@ -4,0 +5 @@ +usr/share/applications diff -u freepops-0.2.9/debian/control freepops-0.2.9/debian/control --- freepops-0.2.9/debian/control +++ freepops-0.2.9/debian/control @@ -1,15 +1,16 @@ Source: freepops Section: mail Priority: optional -Maintainer: Enrico Tassi -Build-Depends: debhelper (>= 7), libexpat1-dev, libcurl4-gnutls-dev (>= 7.15.0-2), flex, bison, po-debconf, liblua5.1-filesystem-dev, liblua5.1-expat-dev, liblua5.1-curl-dev (>= 0.3.0), liblua5.1-dev, libfltk1.1-dev, liblua5.1-socket-dev, gettext -Build-Depends-Indep: texlive-latex-extra, texlive-fonts-recommended, texlive-latex-recommended, gs-common, luadoc -Standards-Version: 3.8.2 +Maintainer: Marco Giorgi +XSBC-Original-Maintainer: Enrico Tassi +Build-Depends: debhelper (>= 7), libexpat1-dev, libcurl4-gnutls-dev (>= 7.15.0-2), flex, bison, po-debconf, liblua5.1-filesystem-dev, liblua5.1-expat-dev, liblua5.1-curl-dev (>= 0.3.0), liblua5.1-0-dev, libfltk1.1-dev, liblua5.1-socket-dev, gettext +Build-Depends-Indep: texlive-latex-extra, texlive-fonts-recommended, texlive-latex-recommended, gs-common +Standards-Version: 3.8.4 Homepage: http://www.freepops.org Package: freepops Architecture: any -Depends: ${misc:Depends}, ${shlibs:Depends}, debconf | debconf-2.0 , lsb-base (>= 3.0-6) +Depends: ${misc:Depends}, ${shlibs:Depends}, debconf | debconf-2.0, lsb-base (>= 3.0-6) Recommends: dialog Description: POP3 interface to several webmail sites FreePOPs is a POP3 daemon that translates local POP3 commands @@ -22,7 +23,7 @@ Package: freepops-updater-fltk Architecture: any -Depends: ${misc:Depends}, ${shlibs:Depends}, freepops (>= 0.2.0) +Depends: ${misc:Depends}, ${shlibs:Depends}, freepops (>= 0.2.0), menu Description: Graphical interface for the freepops updater engine This package provides a click-and-update program to download the latest updates from the freepops website. @@ -32,7 +33,7 @@ Package: freepops-updater-gnome Architecture: any -Depends: ${misc:Depends}, ${shlibs:Depends}, freepops (>= 0.2.0), zenity +Depends: ${misc:Depends}, ${shlibs:Depends}, freepops (>= 0.2.0), zenity, menu Description: GNOME interface for the freepops updater engine This package provides a click-and-update program to download the latest updates from the freepops website. diff -u freepops-0.2.9/debian/freepops-updater-fltk.dirs freepops-0.2.9/debian/freepops-updater-fltk.dirs --- freepops-0.2.9/debian/freepops-updater-fltk.dirs +++ freepops-0.2.9/debian/freepops-updater-fltk.dirs @@ -4,2 +4,3 @@ usr/share/pixmaps +usr/share/applications usr/share/locale diff -u freepops-0.2.9/debian/freepops-updater-gnome.desktop freepops-0.2.9/debian/freepops-updater-gnome.desktop --- freepops-0.2.9/debian/freepops-updater-gnome.desktop +++ freepops-0.2.9/debian/freepops-updater-gnome.desktop @@ -7,5 +7,6 @@ Comment=Download updated version of FreePOPs plugins +Comment[it]=Scarica le versioni aggiornate dei plugins di FreePOPs Icon=/usr/share/pixmaps/freepops-updater-zenity.svg Exec=su-to-root -X -c freepops-updater-zenity -Categories=GNOME;Application;System; +Categories=GNOME;Application;Network; GenericName= diff -u freepops-0.2.9/debian/rules freepops-0.2.9/debian/rules --- freepops-0.2.9/debian/rules +++ freepops-0.2.9/debian/rules @@ -50,7 +50,7 @@ install-common: dh_testdir dh_testroot - dh_clean + dh_clean dh_installdirs $(MAKE) install DESTDIR=$(CURDIR)/debian/freepops/ WHERE=/usr/ LOCALEDIR=/usr/share/locale -mv $(CURDIR)/debian/freepops/usr/share/doc/freepops/*.pdf \ @@ -89,13 +89,17 @@ echo "PIDFILE=\"/var/run/freepops.pid\"">> $$FILE; \ echo "CHROOTED_DAEMON_OPTS=\" -n -s nobody.nogroup\"">> $$FILE - #istall the icon + # install the icon DESTDIR=$(CURDIR)/debian/freepops; \ cp modules/src/winsystray/freepops-32.xpm $$DESTDIR/usr/share/pixmaps/ DESTDIR=$(CURDIR)/debian/freepops; \ cp scripts/create_jail.sh $$DESTDIR/usr/lib/freepops + # install menu entries + DESTDIR=$(CURDIR)/debian/freepops-updater-fltk; \ + cp debian/freepops-updater-fltk.desktop $$DESTDIR/usr/share/applications/ + # Build architecture-independent files here. binary-indep: build build-manual install-manual dh_testdir -i diff -u freepops-0.2.9/debian/po/de.po freepops-0.2.9/debian/po/de.po --- freepops-0.2.9/debian/po/de.po +++ freepops-0.2.9/debian/po/de.po @@ -1,13 +1,13 @@ # Translation of freepops debconf templates to German -# Copyright (C) Helge Kreutzmann , 2007, 2009. +# Copyright (C) Helge Kreutzmann , 2007. # This file is distributed under the same license as the freepops package. # msgid "" msgstr "" -"Project-Id-Version: freepops 0.2.9\n" -"Report-Msgid-Bugs-To: gareuselesinge@debian.org\n" -"POT-Creation-Date: 2007-05-01 12:07+0200\n" -"PO-Revision-Date: 2009-01-06 19:50+0100\n" +"Project-Id-Version: freepops 0.2.2~rc1-4\n" +"Report-Msgid-Bugs-To: freepops@packages.debian.org\n" +"POT-Creation-Date: 2010-05-17 09:57+0000\n" +"PO-Revision-Date: 2007-05-01 11:44+0200\n" "Last-Translator: Helge Kreutzmann \n" "Language-Team: German \n" "MIME-Version: 1.0\n" @@ -16,31 +16,31 @@ #. Type: boolean #. Description -#: ../freepops.templates:2001 +#: ../freepops.templates:1001 msgid "Start freepopsd automatically after each boot?" msgstr "Freepopsd automatisch nach jedem Systemstart starten?" #. Type: boolean #. Description -#: ../freepops.templates:2001 +#: ../freepops.templates:1001 msgid "" "The FreePOPs daemon can be started automatically after each boot. By " "default, it will bind to port 2000. This setting may be changed by editing " "the /etc/default/freepops file." msgstr "" "Der FreePOPs-Daemon kann nach jedem Systemstart automatisch gestartet " -"werden. Standardmig wird er mit Port 2000 verknpft. Diese Einstellung " -"kann durch Bearbeiten der Datei /etc/default/freepops gendert werden." +"werden. Standardmig bindet er sich an Port 2000. Diese Einstellung kann " +"durch Bearbeiten der Datei /etc/default/freepops gendert werden." #. Type: boolean #. Description -#: ../freepops.templates:3001 +#: ../freepops.templates:2001 msgid "Create a chroot jail for FreePOPs?" -msgstr "Ein Chroot-Jail (abgeschlossene Umgebung) fr FreePOPs erstellen?" +msgstr "Ein Chroot-Gefngnis (jail) fr FreePOPs erstellen?" #. Type: boolean #. Description -#: ../freepops.templates:3001 +#: ../freepops.templates:2001 msgid "" "FreePOPs can be launched in a chrooted environment to improve the system's " "security." @@ -50,26 +50,25 @@ #. Type: boolean #. Description -#: ../freepops.templates:3001 +#: ../freepops.templates:2001 msgid "" "The jail will be created in /var/lib/freepops/chroot-jail/. The regular init " "script will then take care of launching the daemon by calling a script named " "start.sh at the root of the chroot jail." msgstr "" -"Die abgeschlossene Umgebung (Jail) wird in /var/lib/freepops/chroot-jail/ " -"erstellt. Das regulre Init-Skript wird sich darum kmmern, den Daemon zu " -"starten, indem ein Skript namens start.sh im Wurzelverzeichnis des Chroot-" -"Jails gestartet wird." +"Das Gefngnis wird in /var/lib/freepops/chroot-jail/ erstellt. Das regulre " +"Init-Skript wird sich darum kmmern, den Daemon zu starten, indem ein Skript " +"namens start.sh im Wurzelverzeichnis des Chroot-Gefngnisses gestartet wird." #. Type: boolean #. Description -#: ../freepops.templates:4001 +#: ../freepops.templates:3001 msgid "Remove local updates on upgrade?" msgstr "Lokale Aktualisierungen beim Upgrade entfernen?" #. Type: boolean #. Description -#: ../freepops.templates:4001 +#: ../freepops.templates:3001 msgid "" "The freepops-updater-fltk or freepops-updater-dialog utilities will install " "local updates in /var/lib/freepops/lua_updates." @@ -79,20 +78,20 @@ #. Type: boolean #. Description -#: ../freepops.templates:4001 +#: ../freepops.templates:3001 msgid "" "Such updates are usually integrated in further FreePOPs releases or can be " "downloaded again by running the updater. Therefore, they may safely be " "removed when the package is upgraded." msgstr "" "Diese Aktualisierungen werden typischerweise in zuknftige FreePOPs-" -"Verffentlichungen integriert oder knnen durch Aufruf des " -"Aktualisierungsprogramms erneut heruntergeladen werden. Daher knnen sie " -"ohne Probleme entfernt werden, wenn ein Upgrade des Pakets durchgefhrt wird." +"Verffentlichungen integriert oder knnen durch Aufruf des Aktualisierers " +"erneut heruntergeladen werden. Daher knnen sie ohne Probleme entfernt " +"werden, wenn ein Upgrade des Pakets durchgefhrt wird." #. Type: boolean #. Description -#: ../freepops.templates:4001 +#: ../freepops.templates:3001 msgid "" "The modules saved in /var/lib/freepops/lua_updates have a higher priority " "than those from /usr/share/freepops/lua. It is thus recommended to remove " @@ -104,3 +103,19 @@ -"empfohlen, erstere zu entfernen, um zu vermeiden, dass veraltete Module " -"verwendet werden, es sei denn, Sie mchten lokale nderungen unabhngig von " +"empfohlen, erstere zu entfernen, um zu vermeiden, veraltete Module zu " +"verwenden. Es sei denn, Sie mchten lokale nderungen unabhngig von " "Upgrades von FreePOPs einfrieren." + +#~ msgid "" +#~ "FreePOPs can be launched in a chrooted environment to improve security. " +#~ "The jail will be created in /var/lib/freepops/chroot-jail/. This will " +#~ "also create a start.sh script in the root of the jail that should be used " +#~ "to launch freepopsd. This is perfectly integrated with the init script, " +#~ "so you have to change nothing to automatically start freepopsd at boot. " +#~ "This feature is mostly untested, you are warned." +#~ msgstr "" +#~ "FreePOPs kann zur Verbesserung der Sicherheit in einer Chroot-Umgebung " +#~ "gestartet werden. Das Gefngnis wird in /var/lib/freepops/chroot-jail/ " +#~ "erstellt. Dabei wird auch ein start.sh-Skript im Wurzelverzeichnis des " +#~ "Gefngnisses erstellt, das zum Starten von Freepopsd verwendet werden " +#~ "sollte. Das Init-Skript ist so gestaltet, dass Sie dafr keine nderungen " +#~ "vornehmen mssen, damit Freepopsd automatisch beim Systemstart startet. " +#~ "Diese Funktionalitt ist grtenteils ungetestet, seien Sie also gewarnt." diff -u freepops-0.2.9/debian/po/es.po freepops-0.2.9/debian/po/es.po --- freepops-0.2.9/debian/po/es.po +++ freepops-0.2.9/debian/po/es.po @@ -29,8 +29,8 @@ msgid "" msgstr "" "Project-Id-Version: freepops 0.2.2\n" -"Report-Msgid-Bugs-To: gareuselesinge@debian.org\n" -"POT-Creation-Date: 2007-05-01 12:07+0200\n" +"Report-Msgid-Bugs-To: freepops@packages.debian.org\n" +"POT-Creation-Date: 2010-05-17 09:57+0000\n" "PO-Revision-Date: 2007-05-14 09:24-0500\n" "Last-Translator: César Gómez Martín \n" "Language-Team: Debian l10n spanish \n" @@ -43,7 +43,7 @@ #. Type: boolean #. Description -#: ../freepops.templates:2001 +#: ../freepops.templates:1001 msgid "Start freepopsd automatically after each boot?" msgstr "" "¿Desea iniciar freepopsd automáticamente después de cada arranque del " @@ -51,7 +51,7 @@ #. Type: boolean #. Description -#: ../freepops.templates:2001 +#: ../freepops.templates:1001 msgid "" "The FreePOPs daemon can be started automatically after each boot. By " "default, it will bind to port 2000. This setting may be changed by editing " @@ -63,13 +63,13 @@ #. Type: boolean #. Description -#: ../freepops.templates:3001 +#: ../freepops.templates:2001 msgid "Create a chroot jail for FreePOPs?" msgstr "¿Desea crear un entorno enjaulado para FreePOPs?" #. Type: boolean #. Description -#: ../freepops.templates:3001 +#: ../freepops.templates:2001 msgid "" "FreePOPs can be launched in a chrooted environment to improve the system's " "security." @@ -79,25 +79,25 @@ #. Type: boolean #. Description -#: ../freepops.templates:3001 +#: ../freepops.templates:2001 msgid "" "The jail will be created in /var/lib/freepops/chroot-jail/. The regular init " "script will then take care of launching the daemon by calling a script named " "start.sh at the root of the chroot jail." msgstr "" "La jaula se creará en /var/lib/freepops/chroot-jail/. Luego, el programa " -"init se encargará de ejecutar el demonio invocando un programa llamado " -"«start.sh» en la raíz de la jaula." +"init se encargará de ejecutar el demonio invocando un programa llamado «start." +"sh» en la raíz de la jaula." #. Type: boolean #. Description -#: ../freepops.templates:4001 +#: ../freepops.templates:3001 msgid "Remove local updates on upgrade?" msgstr "¿Desea eliminar actualizaciones locales cuando actualice?" #. Type: boolean #. Description -#: ../freepops.templates:4001 +#: ../freepops.templates:3001 msgid "" "The freepops-updater-fltk or freepops-updater-dialog utilities will install " "local updates in /var/lib/freepops/lua_updates." @@ -107,7 +107,7 @@ #. Type: boolean #. Description -#: ../freepops.templates:4001 +#: ../freepops.templates:3001 msgid "" "Such updates are usually integrated in further FreePOPs releases or can be " "downloaded again by running the updater. Therefore, they may safely be " @@ -119,7 +119,7 @@ #. Type: boolean #. Description -#: ../freepops.templates:4001 +#: ../freepops.templates:3001 msgid "" "The modules saved in /var/lib/freepops/lua_updates have a higher priority " "than those from /usr/share/freepops/lua. It is thus recommended to remove " @@ -143,10 +143,10 @@ #~ msgstr "" #~ "Para mejorar la seguridad, FreePOPs se puede ejecutar en un entorno " #~ "enjaulado. La jaula se creará en /var/lib/freepops/chroot-jail/. Esto " -#~ "también creará un script «start.sh» en la raíz de la jaula, este script " -#~ "se deberá usar para iniciar freepopsd. Esto está perfectamente integrado " -#~ "con el programa de inicio (init), por lo que no tiene que cambiar nada " -#~ "para iniciar freepopsd automáticamente en el arranque del sistema. Esta " +#~ "también creará un script «start.sh» en la raíz de la jaula, este script se " +#~ "deberá usar para iniciar freepopsd. Esto está perfectamente integrado con " +#~ "el programa de inicio (init), por lo que no tiene que cambiar nada para " +#~ "iniciar freepopsd automáticamente en el arranque del sistema. Esta " #~ "característica no está bien probada, queda advertido." #~ msgid "" diff -u freepops-0.2.9/debian/po/ta.po freepops-0.2.9/debian/po/ta.po --- freepops-0.2.9/debian/po/ta.po +++ freepops-0.2.9/debian/po/ta.po @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: freepop\n" -"Report-Msgid-Bugs-To: gareuselesinge@debian.org\n" -"POT-Creation-Date: 2007-05-01 12:07+0200\n" +"Report-Msgid-Bugs-To: freepops@packages.debian.org\n" +"POT-Creation-Date: 2010-05-17 09:57+0000\n" "PO-Revision-Date: 2007-05-01 17:17+0530\n" "Last-Translator: Dr.T.Vasudevan \n" "Language-Team: TAMIL \n" @@ -18,13 +18,13 @@ #. Type: boolean #. Description -#: ../freepops.templates:2001 +#: ../freepops.templates:1001 msgid "Start freepopsd automatically after each boot?" msgstr "freepopsd தானியங்கியாக ஒவ்வொரு கணினி துவக்கத்திலும் துவக்க வேண்டுமா? " #. Type: boolean #. Description -#: ../freepops.templates:2001 +#: ../freepops.templates:1001 msgid "" "The FreePOPs daemon can be started automatically after each boot. By " "default, it will bind to port 2000. This setting may be changed by editing " @@ -36,13 +36,13 @@ #. Type: boolean #. Description -#: ../freepops.templates:3001 +#: ../freepops.templates:2001 msgid "Create a chroot jail for FreePOPs?" msgstr "ப்ரீபாப்ஸ் க்கு சிரூட் சிறை ஒன்றை உருவாக்கலாமா?" #. Type: boolean #. Description -#: ../freepops.templates:3001 +#: ../freepops.templates:2001 msgid "" "FreePOPs can be launched in a chrooted environment to improve the system's " "security." @@ -50,7 +50,7 @@ #. Type: boolean #. Description -#: ../freepops.templates:3001 +#: ../freepops.templates:2001 msgid "" "The jail will be created in /var/lib/freepops/chroot-jail/. The regular init " "script will then take care of launching the daemon by calling a script named " @@ -61,13 +61,13 @@ #. Type: boolean #. Description -#: ../freepops.templates:4001 +#: ../freepops.templates:3001 msgid "Remove local updates on upgrade?" msgstr "மேம்படுத்தலின் போது உள்ளமை இற்றைப்படுத்தலை நீக்கவா? " #. Type: boolean #. Description -#: ../freepops.templates:4001 +#: ../freepops.templates:3001 msgid "" "The freepops-updater-fltk or freepops-updater-dialog utilities will install " "local updates in /var/lib/freepops/lua_updates." @@ -78,7 +78,7 @@ #. Type: boolean #. Description -#: ../freepops.templates:4001 +#: ../freepops.templates:3001 msgid "" "Such updates are usually integrated in further FreePOPs releases or can be " "downloaded again by running the updater. Therefore, they may safely be " @@ -90,7 +90,7 @@ #. Type: boolean #. Description -#: ../freepops.templates:4001 +#: ../freepops.templates:3001 msgid "" "The modules saved in /var/lib/freepops/lua_updates have a higher priority " "than those from /usr/share/freepops/lua. It is thus recommended to remove " diff -u freepops-0.2.9/debian/po/ru.po freepops-0.2.9/debian/po/ru.po --- freepops-0.2.9/debian/po/ru.po +++ freepops-0.2.9/debian/po/ru.po @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: 0.2.2-2\n" -"Report-Msgid-Bugs-To: gareuselesinge@debian.org\n" -"POT-Creation-Date: 2007-05-01 12:07+0200\n" +"Report-Msgid-Bugs-To: freepops@packages.debian.org\n" +"POT-Creation-Date: 2010-05-17 09:57+0000\n" "PO-Revision-Date: 2007-05-03 21:00+0400\n" "Last-Translator: Yuri Kozlov \n" "Language-Team: Russian \n" @@ -20,13 +20,13 @@ #. Type: boolean #. Description -#: ../freepops.templates:2001 +#: ../freepops.templates:1001 msgid "Start freepopsd automatically after each boot?" msgstr "Запускать freepopsd автоматически при включении машины?" #. Type: boolean #. Description -#: ../freepops.templates:2001 +#: ../freepops.templates:1001 msgid "" "The FreePOPs daemon can be started automatically after each boot. By " "default, it will bind to port 2000. This setting may be changed by editing " @@ -38,13 +38,13 @@ #. Type: boolean #. Description -#: ../freepops.templates:3001 +#: ../freepops.templates:2001 msgid "Create a chroot jail for FreePOPs?" msgstr "Создать окружение chroot для FreePOPs?" #. Type: boolean #. Description -#: ../freepops.templates:3001 +#: ../freepops.templates:2001 msgid "" "FreePOPs can be launched in a chrooted environment to improve the system's " "security." @@ -53,7 +53,7 @@ #. Type: boolean #. Description -#: ../freepops.templates:3001 +#: ../freepops.templates:2001 msgid "" "The jail will be created in /var/lib/freepops/chroot-jail/. The regular init " "script will then take care of launching the daemon by calling a script named " @@ -65,13 +65,13 @@ #. Type: boolean #. Description -#: ../freepops.templates:4001 +#: ../freepops.templates:3001 msgid "Remove local updates on upgrade?" msgstr "Удалить локальные обновления?" #. Type: boolean #. Description -#: ../freepops.templates:4001 +#: ../freepops.templates:3001 msgid "" "The freepops-updater-fltk or freepops-updater-dialog utilities will install " "local updates in /var/lib/freepops/lua_updates." @@ -81,7 +81,7 @@ #. Type: boolean #. Description -#: ../freepops.templates:4001 +#: ../freepops.templates:3001 msgid "" "Such updates are usually integrated in further FreePOPs releases or can be " "downloaded again by running the updater. Therefore, they may safely be " @@ -93,7 +93,7 @@ #. Type: boolean #. Description -#: ../freepops.templates:4001 +#: ../freepops.templates:3001 msgid "" "The modules saved in /var/lib/freepops/lua_updates have a higher priority " "than those from /usr/share/freepops/lua. It is thus recommended to remove " diff -u freepops-0.2.9/debian/po/eu.po freepops-0.2.9/debian/po/eu.po --- freepops-0.2.9/debian/po/eu.po +++ freepops-0.2.9/debian/po/eu.po @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: freepops debconf\n" -"Report-Msgid-Bugs-To: gareuselesinge@debian.org\n" -"POT-Creation-Date: 2007-05-01 12:07+0200\n" +"Report-Msgid-Bugs-To: freepops@packages.debian.org\n" +"POT-Creation-Date: 2010-05-17 09:57+0000\n" "PO-Revision-Date: 2007-05-02 09:57+0200\n" "Last-Translator: Piarres Beobide \n" "Language-Team: Euskara \n" @@ -18,13 +18,13 @@ #. Type: boolean #. Description -#: ../freepops.templates:2001 +#: ../freepops.templates:1001 msgid "Start freepopsd automatically after each boot?" msgstr "Abiaraztearen ondoren freepopsd automatikoki abiarazi?" #. Type: boolean #. Description -#: ../freepops.templates:2001 +#: ../freepops.templates:1001 msgid "" "The FreePOPs daemon can be started automatically after each boot. By " "default, it will bind to port 2000. This setting may be changed by editing " @@ -36,13 +36,13 @@ #. Type: boolean #. Description -#: ../freepops.templates:3001 +#: ../freepops.templates:2001 msgid "Create a chroot jail for FreePOPs?" msgstr "FreePoPs-rentzat chroot kaiola bat sortu?" #. Type: boolean #. Description -#: ../freepops.templates:3001 +#: ../freepops.templates:2001 msgid "" "FreePOPs can be launched in a chrooted environment to improve the system's " "security." @@ -52,7 +52,7 @@ #. Type: boolean #. Description -#: ../freepops.templates:3001 +#: ../freepops.templates:2001 msgid "" "The jail will be created in /var/lib/freepops/chroot-jail/. The regular init " "script will then take care of launching the daemon by calling a script named " @@ -64,13 +64,13 @@ #. Type: boolean #. Description -#: ../freepops.templates:4001 +#: ../freepops.templates:3001 msgid "Remove local updates on upgrade?" msgstr "Bertsio berritzean eguneraketa lokalak ezabatu?" #. Type: boolean #. Description -#: ../freepops.templates:4001 +#: ../freepops.templates:3001 msgid "" "The freepops-updater-fltk or freepops-updater-dialog utilities will install " "local updates in /var/lib/freepops/lua_updates." @@ -80,7 +80,7 @@ #. Type: boolean #. Description -#: ../freepops.templates:4001 +#: ../freepops.templates:3001 msgid "" "Such updates are usually integrated in further FreePOPs releases or can be " "downloaded again by running the updater. Therefore, they may safely be " @@ -92,7 +92,7 @@ #. Type: boolean #. Description -#: ../freepops.templates:4001 +#: ../freepops.templates:3001 msgid "" "The modules saved in /var/lib/freepops/lua_updates have a higher priority " "than those from /usr/share/freepops/lua. It is thus recommended to remove " diff -u freepops-0.2.9/debian/po/pt.po freepops-0.2.9/debian/po/pt.po --- freepops-0.2.9/debian/po/pt.po +++ freepops-0.2.9/debian/po/pt.po @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: freepops\n" -"Report-Msgid-Bugs-To: gareuselesinge@debian.org\n" -"POT-Creation-Date: 2007-05-01 12:07+0200\n" +"Report-Msgid-Bugs-To: freepops@packages.debian.org\n" +"POT-Creation-Date: 2010-05-17 09:57+0000\n" "PO-Revision-Date: 2007-05-01 10:35+0100\n" "Last-Translator: Ricardo Silva \n" "Language-Team: Portuguese \n" @@ -17,13 +17,13 @@ #. Type: boolean #. Description -#: ../freepops.templates:2001 +#: ../freepops.templates:1001 msgid "Start freepopsd automatically after each boot?" msgstr "Iniciar o freepopsd automaticamente após cada arranque?" #. Type: boolean #. Description -#: ../freepops.templates:2001 +#: ../freepops.templates:1001 msgid "" "The FreePOPs daemon can be started automatically after each boot. By " "default, it will bind to port 2000. This setting may be changed by editing " @@ -35,13 +35,13 @@ #. Type: boolean #. Description -#: ../freepops.templates:3001 +#: ../freepops.templates:2001 msgid "Create a chroot jail for FreePOPs?" msgstr "Criar uma 'prisão' chroot para o FreePOPs?" #. Type: boolean #. Description -#: ../freepops.templates:3001 +#: ../freepops.templates:2001 msgid "" "FreePOPs can be launched in a chrooted environment to improve the system's " "security." @@ -51,7 +51,7 @@ #. Type: boolean #. Description -#: ../freepops.templates:3001 +#: ../freepops.templates:2001 msgid "" "The jail will be created in /var/lib/freepops/chroot-jail/. The regular init " "script will then take care of launching the daemon by calling a script named " @@ -63,13 +63,13 @@ #. Type: boolean #. Description -#: ../freepops.templates:4001 +#: ../freepops.templates:3001 msgid "Remove local updates on upgrade?" msgstr "Remover alterações locais aquando da actualização do sistema?" #. Type: boolean #. Description -#: ../freepops.templates:4001 +#: ../freepops.templates:3001 msgid "" "The freepops-updater-fltk or freepops-updater-dialog utilities will install " "local updates in /var/lib/freepops/lua_updates." @@ -79,7 +79,7 @@ #. Type: boolean #. Description -#: ../freepops.templates:4001 +#: ../freepops.templates:3001 msgid "" "Such updates are usually integrated in further FreePOPs releases or can be " "downloaded again by running the updater. Therefore, they may safely be " @@ -91,7 +91,7 @@ #. Type: boolean #. Description -#: ../freepops.templates:4001 +#: ../freepops.templates:3001 msgid "" "The modules saved in /var/lib/freepops/lua_updates have a higher priority " "than those from /usr/share/freepops/lua. It is thus recommended to remove " diff -u freepops-0.2.9/debian/po/sv.po freepops-0.2.9/debian/po/sv.po --- freepops-0.2.9/debian/po/sv.po +++ freepops-0.2.9/debian/po/sv.po @@ -12,8 +12,8 @@ msgid "" msgstr "" "Project-Id-Version: freepops 0.0.31-1\n" -"Report-Msgid-Bugs-To: gareuselesinge@debian.org\n" -"POT-Creation-Date: 2007-05-01 12:07+0200\n" +"Report-Msgid-Bugs-To: freepops@packages.debian.org\n" +"POT-Creation-Date: 2010-05-17 09:57+0000\n" "PO-Revision-Date: 2007-05-06 12:20+0100\n" "Last-Translator: Daniel Nylander \n" "Language-Team: Swedish \n" @@ -23,13 +23,13 @@ #. Type: boolean #. Description -#: ../freepops.templates:2001 +#: ../freepops.templates:1001 msgid "Start freepopsd automatically after each boot?" msgstr "Starta freepopsd automatiskt efter varje uppstart?" #. Type: boolean #. Description -#: ../freepops.templates:2001 +#: ../freepops.templates:1001 msgid "" "The FreePOPs daemon can be started automatically after each boot. By " "default, it will bind to port 2000. This setting may be changed by editing " @@ -41,13 +41,13 @@ #. Type: boolean #. Description -#: ../freepops.templates:3001 +#: ../freepops.templates:2001 msgid "Create a chroot jail for FreePOPs?" msgstr "Skapa ett chroot-fängelse för FreePOPs?" #. Type: boolean #. Description -#: ../freepops.templates:3001 +#: ../freepops.templates:2001 msgid "" "FreePOPs can be launched in a chrooted environment to improve the system's " "security." @@ -57,7 +57,7 @@ #. Type: boolean #. Description -#: ../freepops.templates:3001 +#: ../freepops.templates:2001 msgid "" "The jail will be created in /var/lib/freepops/chroot-jail/. The regular init " "script will then take care of launching the daemon by calling a script named " @@ -69,13 +69,13 @@ #. Type: boolean #. Description -#: ../freepops.templates:4001 +#: ../freepops.templates:3001 msgid "Remove local updates on upgrade?" msgstr "Ta bort lokala uppdateringar vid uppgradering?" #. Type: boolean #. Description -#: ../freepops.templates:4001 +#: ../freepops.templates:3001 msgid "" "The freepops-updater-fltk or freepops-updater-dialog utilities will install " "local updates in /var/lib/freepops/lua_updates." @@ -85,7 +85,7 @@ #. Type: boolean #. Description -#: ../freepops.templates:4001 +#: ../freepops.templates:3001 msgid "" "Such updates are usually integrated in further FreePOPs releases or can be " "downloaded again by running the updater. Therefore, they may safely be " @@ -97,7 +97,7 @@ #. Type: boolean #. Description -#: ../freepops.templates:4001 +#: ../freepops.templates:3001 msgid "" "The modules saved in /var/lib/freepops/lua_updates have a higher priority " "than those from /usr/share/freepops/lua. It is thus recommended to remove " diff -u freepops-0.2.9/debian/po/templates.pot freepops-0.2.9/debian/po/templates.pot --- freepops-0.2.9/debian/po/templates.pot +++ freepops-0.2.9/debian/po/templates.pot @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: gareuselesinge@debian.org\n" -"POT-Creation-Date: 2007-05-01 12:07+0200\n" +"Report-Msgid-Bugs-To: freepops@packages.debian.org\n" +"POT-Creation-Date: 2010-05-17 09:57+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -18,13 +18,13 @@ #. Type: boolean #. Description -#: ../freepops.templates:2001 +#: ../freepops.templates:1001 msgid "Start freepopsd automatically after each boot?" msgstr "" #. Type: boolean #. Description -#: ../freepops.templates:2001 +#: ../freepops.templates:1001 msgid "" "The FreePOPs daemon can be started automatically after each boot. By " "default, it will bind to port 2000. This setting may be changed by editing " @@ -33,13 +33,13 @@ #. Type: boolean #. Description -#: ../freepops.templates:3001 +#: ../freepops.templates:2001 msgid "Create a chroot jail for FreePOPs?" msgstr "" #. Type: boolean #. Description -#: ../freepops.templates:3001 +#: ../freepops.templates:2001 msgid "" "FreePOPs can be launched in a chrooted environment to improve the system's " "security." @@ -47,7 +47,7 @@ #. Type: boolean #. Description -#: ../freepops.templates:3001 +#: ../freepops.templates:2001 msgid "" "The jail will be created in /var/lib/freepops/chroot-jail/. The regular init " "script will then take care of launching the daemon by calling a script named " @@ -56,13 +56,13 @@ #. Type: boolean #. Description -#: ../freepops.templates:4001 +#: ../freepops.templates:3001 msgid "Remove local updates on upgrade?" msgstr "" #. Type: boolean #. Description -#: ../freepops.templates:4001 +#: ../freepops.templates:3001 msgid "" "The freepops-updater-fltk or freepops-updater-dialog utilities will install " "local updates in /var/lib/freepops/lua_updates." @@ -70,7 +70,7 @@ #. Type: boolean #. Description -#: ../freepops.templates:4001 +#: ../freepops.templates:3001 msgid "" "Such updates are usually integrated in further FreePOPs releases or can be " "downloaded again by running the updater. Therefore, they may safely be " @@ -79,7 +79,7 @@ #. Type: boolean #. Description -#: ../freepops.templates:4001 +#: ../freepops.templates:3001 msgid "" "The modules saved in /var/lib/freepops/lua_updates have a higher priority " "than those from /usr/share/freepops/lua. It is thus recommended to remove " diff -u freepops-0.2.9/debian/po/tr.po freepops-0.2.9/debian/po/tr.po --- freepops-0.2.9/debian/po/tr.po +++ freepops-0.2.9/debian/po/tr.po @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: freepops 0.2.7-1\n" -"Report-Msgid-Bugs-To: gareuselesinge@debian.org\n" -"POT-Creation-Date: 2007-05-01 12:07+0200\n" +"Report-Msgid-Bugs-To: freepops@packages.debian.org\n" +"POT-Creation-Date: 2010-05-17 09:57+0000\n" "PO-Revision-Date: 2008-06-27 00:05+0200\n" "Last-Translator: Mert Dirik \n" "Language-Team: Debian L10n Turkish \n" @@ -18,13 +18,13 @@ #. Type: boolean #. Description -#: ../freepops.templates:2001 +#: ../freepops.templates:1001 msgid "Start freepopsd automatically after each boot?" msgstr "\"freepopsd\" her önyüklemede başlatılsın mı?" #. Type: boolean #. Description -#: ../freepops.templates:2001 +#: ../freepops.templates:1001 msgid "" "The FreePOPs daemon can be started automatically after each boot. By " "default, it will bind to port 2000. This setting may be changed by editing " @@ -36,13 +36,13 @@ #. Type: boolean #. Description -#: ../freepops.templates:3001 +#: ../freepops.templates:2001 msgid "Create a chroot jail for FreePOPs?" msgstr "FreePOPs için chroot kafesi oluşturulsun mu?" #. Type: boolean #. Description -#: ../freepops.templates:3001 +#: ../freepops.templates:2001 msgid "" "FreePOPs can be launched in a chrooted environment to improve the system's " "security." @@ -52,7 +52,7 @@ #. Type: boolean #. Description -#: ../freepops.templates:3001 +#: ../freepops.templates:2001 msgid "" "The jail will be created in /var/lib/freepops/chroot-jail/. The regular init " "script will then take care of launching the daemon by calling a script named " @@ -64,13 +64,13 @@ #. Type: boolean #. Description -#: ../freepops.templates:4001 +#: ../freepops.templates:3001 msgid "Remove local updates on upgrade?" msgstr "Yükseltme sırasında yerel güncellemeler kaldırılsın mı?" #. Type: boolean #. Description -#: ../freepops.templates:4001 +#: ../freepops.templates:3001 msgid "" "The freepops-updater-fltk or freepops-updater-dialog utilities will install " "local updates in /var/lib/freepops/lua_updates." @@ -80,7 +80,7 @@ #. Type: boolean #. Description -#: ../freepops.templates:4001 +#: ../freepops.templates:3001 msgid "" "Such updates are usually integrated in further FreePOPs releases or can be " "downloaded again by running the updater. Therefore, they may safely be " @@ -92,7 +92,7 @@ #. Type: boolean #. Description -#: ../freepops.templates:4001 +#: ../freepops.templates:3001 msgid "" "The modules saved in /var/lib/freepops/lua_updates have a higher priority " "than those from /usr/share/freepops/lua. It is thus recommended to remove " reverted: --- freepops-0.2.9/debian/po/zh_CN.po +++ freepops-0.2.9.orig/debian/po/zh_CN.po @@ -1,99 +0,0 @@ -# Chinese translations for freepops package -# freepops 软件包的简体中文翻译. -# Copyright (C) 2009 THE freepops'S COPYRIGHT HOLDER -# This file is distributed under the same license as the freepops package. -# Ji ZhengYu , 2009. -# -msgid "" -msgstr "" -"Project-Id-Version: freepops HEAD\n" -"Report-Msgid-Bugs-To: gareuselesinge@debian.org\n" -"POT-Creation-Date: 2007-05-01 12:07+0200\n" -"PO-Revision-Date: 2009-12-12 16:53+0800\n" -"Last-Translator: Ji ZhengYu \n" -"Language-Team: Chinese (simplified) \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -#. Type: boolean -#. Description -#: ../freepops.templates:2001 -msgid "Start freepopsd automatically after each boot?" -msgstr "是否每次开机后都自行启动 freepopsd ?" - -#. Type: boolean -#. Description -#: ../freepops.templates:2001 -msgid "" -"The FreePOPs daemon can be started automatically after each boot. By " -"default, it will bind to port 2000. This setting may be changed by editing " -"the /etc/default/freepops file." -msgstr "" -"FreePOPs 服务可在每次开机后自行启动。默认情况下,它将会绑定至端口 2000。此设" -"置可以通过编辑/etc/default/freepops 文件来更改。" - -#. Type: boolean -#. Description -#: ../freepops.templates:3001 -msgid "Create a chroot jail for FreePOPs?" -msgstr "是否为FreePOPs 创建一个chroot 环境?" - -#. Type: boolean -#. Description -#: ../freepops.templates:3001 -msgid "" -"FreePOPs can be launched in a chrooted environment to improve the system's " -"security." -msgstr "FreePOPs 可以在chroot 环境中启动以改善系统安全性。" - -#. Type: boolean -#. Description -#: ../freepops.templates:3001 -msgid "" -"The jail will be created in /var/lib/freepops/chroot-jail/. The regular init " -"script will then take care of launching the daemon by calling a script named " -"start.sh at the root of the chroot jail." -msgstr "" -"可以在/var/lib/freepops/chroot-jail/ 中创建chroot 环境。然后常规的启动脚本就" -"会通过调用chroot 环境根目录下一个名为start.sh 的脚本来启动服务。" - -#. Type: boolean -#. Description -#: ../freepops.templates:4001 -msgid "Remove local updates on upgrade?" -msgstr "升级时是否删除本地更新数据?" - -#. Type: boolean -#. Description -#: ../freepops.templates:4001 -msgid "" -"The freepops-updater-fltk or freepops-updater-dialog utilities will install " -"local updates in /var/lib/freepops/lua_updates." -msgstr "" -"freepops-updater-fltk 或freepops-updater-dialog 工具将在/var/lib/freepops/" -"lua_updates 中安装本地更新数据。" - -#. Type: boolean -#. Description -#: ../freepops.templates:4001 -msgid "" -"Such updates are usually integrated in further FreePOPs releases or can be " -"downloaded again by running the updater. Therefore, they may safely be " -"removed when the package is upgraded." -msgstr "" -"这些更新数据通常整合在新版FreePOPs 中,或者也可以通过运行升级器重新下载。因" -"此,在升级软件包时可以放心地删除它们。" - -#. Type: boolean -#. Description -#: ../freepops.templates:4001 -msgid "" -"The modules saved in /var/lib/freepops/lua_updates have a higher priority " -"than those from /usr/share/freepops/lua. It is thus recommended to remove " -"the former in order to avoid using outdated modules, unless you intend to " -"freeze the local modifications regardless of FreePOPs upgrades." -msgstr "" -"保存于/var/lib/freepops/lua_updates 中的模块比保存于/usr/share/freepops/lua " -"中的拥有更高的优先级。因此建议删除前者,以避免使用过旧的模块。除非您打算永久" -"保留本地修改而无所谓升级。" diff -u freepops-0.2.9/debian/po/pt_BR.po freepops-0.2.9/debian/po/pt_BR.po --- freepops-0.2.9/debian/po/pt_BR.po +++ freepops-0.2.9/debian/po/pt_BR.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: freepops-0.2.5-1\n" -"Report-Msgid-Bugs-To: gareuselesinge@debian.org\n" -"POT-Creation-Date: 2007-05-01 12:07+0200\n" +"Report-Msgid-Bugs-To: freepops@packages.debian.org\n" +"POT-Creation-Date: 2010-05-17 09:57+0000\n" "PO-Revision-Date: 2007-10-23 16:28-0200\n" "Last-Translator: Eder L. Marques (frolic) \n" "Language-Team: l10n Portuguese \n" @@ -21,13 +21,13 @@ #. Type: boolean #. Description -#: ../freepops.templates:2001 +#: ../freepops.templates:1001 msgid "Start freepopsd automatically after each boot?" msgstr "Iniciar o freepopsd automaticamente após cada inicialização?" #. Type: boolean #. Description -#: ../freepops.templates:2001 +#: ../freepops.templates:1001 msgid "" "The FreePOPs daemon can be started automatically after each boot. By " "default, it will bind to port 2000. This setting may be changed by editing " @@ -39,13 +39,13 @@ #. Type: boolean #. Description -#: ../freepops.templates:3001 +#: ../freepops.templates:2001 msgid "Create a chroot jail for FreePOPs?" msgstr "Criar uma jaula chroot para o FreePOPs?" #. Type: boolean #. Description -#: ../freepops.templates:3001 +#: ../freepops.templates:2001 msgid "" "FreePOPs can be launched in a chrooted environment to improve the system's " "security." @@ -55,7 +55,7 @@ #. Type: boolean #. Description -#: ../freepops.templates:3001 +#: ../freepops.templates:2001 msgid "" "The jail will be created in /var/lib/freepops/chroot-jail/. The regular init " "script will then take care of launching the daemon by calling a script named " @@ -67,13 +67,13 @@ #. Type: boolean #. Description -#: ../freepops.templates:4001 +#: ../freepops.templates:3001 msgid "Remove local updates on upgrade?" msgstr "Remover atualizações locais em processos de atualização?" #. Type: boolean #. Description -#: ../freepops.templates:4001 +#: ../freepops.templates:3001 msgid "" "The freepops-updater-fltk or freepops-updater-dialog utilities will install " "local updates in /var/lib/freepops/lua_updates." @@ -83,7 +83,7 @@ #. Type: boolean #. Description -#: ../freepops.templates:4001 +#: ../freepops.templates:3001 msgid "" "Such updates are usually integrated in further FreePOPs releases or can be " "downloaded again by running the updater. Therefore, they may safely be " @@ -95,7 +95,7 @@ #. Type: boolean #. Description -#: ../freepops.templates:4001 +#: ../freepops.templates:3001 msgid "" "The modules saved in /var/lib/freepops/lua_updates have a higher priority " "than those from /usr/share/freepops/lua. It is thus recommended to remove " diff -u freepops-0.2.9/debian/po/it.po freepops-0.2.9/debian/po/it.po --- freepops-0.2.9/debian/po/it.po +++ freepops-0.2.9/debian/po/it.po @@ -9,13 +9,13 @@ # Developers do not need to manually edit POT or PO files. # , fuzzy # tassi , 2004. -# -# +# +# msgid "" msgstr "" "Project-Id-Version: freepops\n" -"Report-Msgid-Bugs-To: gareuselesinge@debian.org\n" -"POT-Creation-Date: 2007-05-01 12:07+0200\n" +"Report-Msgid-Bugs-To: freepops@packages.debian.org\n" +"POT-Creation-Date: 2010-05-17 09:57+0000\n" "PO-Revision-Date: 2007-01-14 18:45+0100\n" "Last-Translator: Enrico Tassi \n" "Language-Team: Italian \n" @@ -25,13 +25,13 @@ #. Type: boolean #. Description -#: ../freepops.templates:2001 +#: ../freepops.templates:1001 msgid "Start freepopsd automatically after each boot?" msgstr "Avviare freepopsd automaticamente al boot del sistema?" #. Type: boolean #. Description -#: ../freepops.templates:2001 +#: ../freepops.templates:1001 #, fuzzy #| msgid "" #| "The FreePOPs daemon can be started automatically after each boot for you. " @@ -48,7 +48,7 @@ #. Type: boolean #. Description -#: ../freepops.templates:3001 +#: ../freepops.templates:2001 #, fuzzy #| msgid "Create a chroot jail for freepops?" msgid "Create a chroot jail for FreePOPs?" @@ -56,7 +56,7 @@ #. Type: boolean #. Description -#: ../freepops.templates:3001 +#: ../freepops.templates:2001 msgid "" "FreePOPs can be launched in a chrooted environment to improve the system's " "security." @@ -64,7 +64,7 @@ #. Type: boolean #. Description -#: ../freepops.templates:3001 +#: ../freepops.templates:2001 msgid "" "The jail will be created in /var/lib/freepops/chroot-jail/. The regular init " "script will then take care of launching the daemon by calling a script named " @@ -73,13 +73,13 @@ #. Type: boolean #. Description -#: ../freepops.templates:4001 +#: ../freepops.templates:3001 msgid "Remove local updates on upgrade?" msgstr "Rimuovere update locali in fase di aggiornamento del pacchetto?" #. Type: boolean #. Description -#: ../freepops.templates:4001 +#: ../freepops.templates:3001 msgid "" "The freepops-updater-fltk or freepops-updater-dialog utilities will install " "local updates in /var/lib/freepops/lua_updates." @@ -87,7 +87,7 @@ #. Type: boolean #. Description -#: ../freepops.templates:4001 +#: ../freepops.templates:3001 msgid "" "Such updates are usually integrated in further FreePOPs releases or can be " "downloaded again by running the updater. Therefore, they may safely be " @@ -96,7 +96,7 @@ #. Type: boolean #. Description -#: ../freepops.templates:4001 +#: ../freepops.templates:3001 msgid "" "The modules saved in /var/lib/freepops/lua_updates have a higher priority " "than those from /usr/share/freepops/lua. It is thus recommended to remove " diff -u freepops-0.2.9/debian/po/ja.po freepops-0.2.9/debian/po/ja.po --- freepops-0.2.9/debian/po/ja.po +++ freepops-0.2.9/debian/po/ja.po @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: freepops 0.2.7-1\n" -"Report-Msgid-Bugs-To: gareuselesinge@debian.org\n" -"POT-Creation-Date: 2007-05-01 12:07+0200\n" +"Report-Msgid-Bugs-To: freepops@packages.debian.org\n" +"POT-Creation-Date: 2010-05-17 09:57+0000\n" "PO-Revision-Date: 2008-07-30 19:21+0200\n" "Last-Translator: Hideki Yamane (Debian-JP) \n" "Language-Team: Japanese \n" @@ -17,13 +17,13 @@ #. Type: boolean #. Description -#: ../freepops.templates:2001 +#: ../freepops.templates:1001 msgid "Start freepopsd automatically after each boot?" msgstr "起動時、自動的に freepopsd を開始しますか?" #. Type: boolean #. Description -#: ../freepops.templates:2001 +#: ../freepops.templates:1001 msgid "" "The FreePOPs daemon can be started automatically after each boot. By " "default, it will bind to port 2000. This setting may be changed by editing " @@ -35,13 +35,13 @@ #. Type: boolean #. Description -#: ../freepops.templates:3001 +#: ../freepops.templates:2001 msgid "Create a chroot jail for FreePOPs?" msgstr "FreePOPs を chroot jail で動作させますか?" #. Type: boolean #. Description -#: ../freepops.templates:3001 +#: ../freepops.templates:2001 msgid "" "FreePOPs can be launched in a chrooted environment to improve the system's " "security." @@ -51,7 +51,7 @@ #. Type: boolean #. Description -#: ../freepops.templates:3001 +#: ../freepops.templates:2001 msgid "" "The jail will be created in /var/lib/freepops/chroot-jail/. The regular init " "script will then take care of launching the daemon by calling a script named " @@ -63,13 +63,13 @@ #. Type: boolean #. Description -#: ../freepops.templates:4001 +#: ../freepops.templates:3001 msgid "Remove local updates on upgrade?" msgstr "アップグレードの際にローカルでの更新を削除しますか?" #. Type: boolean #. Description -#: ../freepops.templates:4001 +#: ../freepops.templates:3001 msgid "" "The freepops-updater-fltk or freepops-updater-dialog utilities will install " "local updates in /var/lib/freepops/lua_updates." @@ -79,7 +79,7 @@ #. Type: boolean #. Description -#: ../freepops.templates:4001 +#: ../freepops.templates:3001 msgid "" "Such updates are usually integrated in further FreePOPs releases or can be " "downloaded again by running the updater. Therefore, they may safely be " @@ -91,7 +91,7 @@ #. Type: boolean #. Description -#: ../freepops.templates:4001 +#: ../freepops.templates:3001 msgid "" "The modules saved in /var/lib/freepops/lua_updates have a higher priority " "than those from /usr/share/freepops/lua. It is thus recommended to remove " diff -u freepops-0.2.9/debian/po/ar.po freepops-0.2.9/debian/po/ar.po --- freepops-0.2.9/debian/po/ar.po +++ freepops-0.2.9/debian/po/ar.po @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: freepops\n" -"Report-Msgid-Bugs-To: gareuselesinge@debian.org\n" -"POT-Creation-Date: 2007-05-01 12:07+0200\n" +"Report-Msgid-Bugs-To: freepops@packages.debian.org\n" +"POT-Creation-Date: 2010-05-17 09:57+0000\n" "PO-Revision-Date: 2007-05-17 03:22+0300\n" "Last-Translator: Ossama M. Khayat \n" "Language-Team: Arabic \n" @@ -20,13 +20,13 @@ #. Type: boolean #. Description -#: ../freepops.templates:2001 +#: ../freepops.templates:1001 msgid "Start freepopsd automatically after each boot?" msgstr "هل تريد تشغيل freepopsd عند تشغيل جهازك؟" #. Type: boolean #. Description -#: ../freepops.templates:2001 +#: ../freepops.templates:1001 msgid "" "The FreePOPs daemon can be started automatically after each boot. By " "default, it will bind to port 2000. This setting may be changed by editing " @@ -38,13 +38,13 @@ #. Type: boolean #. Description -#: ../freepops.templates:3001 +#: ../freepops.templates:2001 msgid "Create a chroot jail for FreePOPs?" msgstr "هل تريد إنشاء سجن chroot لاستخدام FreePOPs؟" #. Type: boolean #. Description -#: ../freepops.templates:3001 +#: ../freepops.templates:2001 msgid "" "FreePOPs can be launched in a chrooted environment to improve the system's " "security." @@ -52,7 +52,7 @@ #. Type: boolean #. Description -#: ../freepops.templates:3001 +#: ../freepops.templates:2001 msgid "" "The jail will be created in /var/lib/freepops/chroot-jail/. The regular init " "script will then take care of launching the daemon by calling a script named " @@ -63,13 +63,13 @@ #. Type: boolean #. Description -#: ../freepops.templates:4001 +#: ../freepops.templates:3001 msgid "Remove local updates on upgrade?" msgstr "هل تريد إزالة التحديثات المحلية عند الترقية؟" #. Type: boolean #. Description -#: ../freepops.templates:4001 +#: ../freepops.templates:3001 msgid "" "The freepops-updater-fltk or freepops-updater-dialog utilities will install " "local updates in /var/lib/freepops/lua_updates." @@ -79,7 +79,7 @@ #. Type: boolean #. Description -#: ../freepops.templates:4001 +#: ../freepops.templates:3001 msgid "" "Such updates are usually integrated in further FreePOPs releases or can be " "downloaded again by running the updater. Therefore, they may safely be " @@ -90,7 +90,7 @@ #. Type: boolean #. Description -#: ../freepops.templates:4001 +#: ../freepops.templates:3001 #, fuzzy #| msgid "" #| "The modules saved in /var/lib/freepops/lua_updates have a higher priority " diff -u freepops-0.2.9/debian/po/fr.po freepops-0.2.9/debian/po/fr.po --- freepops-0.2.9/debian/po/fr.po +++ freepops-0.2.9/debian/po/fr.po @@ -14,8 +14,8 @@ msgid "" msgstr "" "Project-Id-Version: fr\n" -"Report-Msgid-Bugs-To: gareuselesinge@debian.org\n" -"POT-Creation-Date: 2007-05-01 12:07+0200\n" +"Report-Msgid-Bugs-To: freepops@packages.debian.org\n" +"POT-Creation-Date: 2010-05-17 09:57+0000\n" "PO-Revision-Date: 2007-05-13 08:32+0200\n" "Last-Translator: Christian Perrier \n" "Language-Team: French \n" @@ -26,13 +26,13 @@ #. Type: boolean #. Description -#: ../freepops.templates:2001 +#: ../freepops.templates:1001 msgid "Start freepopsd automatically after each boot?" msgstr "Faut-il lancer freepopsd automatiquement au démarrage du système ?" #. Type: boolean #. Description -#: ../freepops.templates:2001 +#: ../freepops.templates:1001 msgid "" "The FreePOPs daemon can be started automatically after each boot. By " "default, it will bind to port 2000. This setting may be changed by editing " @@ -44,14 +44,14 @@ #. Type: boolean #. Description -#: ../freepops.templates:3001 +#: ../freepops.templates:2001 msgid "Create a chroot jail for FreePOPs?" msgstr "" "Faut-il créer un environnement sécurisé (« chroot jail ») pour FreePOPs ?" #. Type: boolean #. Description -#: ../freepops.templates:3001 +#: ../freepops.templates:2001 msgid "" "FreePOPs can be launched in a chrooted environment to improve the system's " "security." @@ -61,7 +61,7 @@ #. Type: boolean #. Description -#: ../freepops.templates:3001 +#: ../freepops.templates:2001 msgid "" "The jail will be created in /var/lib/freepops/chroot-jail/. The regular init " "script will then take care of launching the daemon by calling a script named " @@ -73,13 +73,13 @@ #. Type: boolean #. Description -#: ../freepops.templates:4001 +#: ../freepops.templates:3001 msgid "Remove local updates on upgrade?" msgstr "Faut-il supprimer les mises à jour locales lors de la mise à niveau ?" #. Type: boolean #. Description -#: ../freepops.templates:4001 +#: ../freepops.templates:3001 msgid "" "The freepops-updater-fltk or freepops-updater-dialog utilities will install " "local updates in /var/lib/freepops/lua_updates." @@ -89,7 +89,7 @@ #. Type: boolean #. Description -#: ../freepops.templates:4001 +#: ../freepops.templates:3001 msgid "" "Such updates are usually integrated in further FreePOPs releases or can be " "downloaded again by running the updater. Therefore, they may safely be " @@ -101,7 +101,7 @@ #. Type: boolean #. Description -#: ../freepops.templates:4001 +#: ../freepops.templates:3001 msgid "" "The modules saved in /var/lib/freepops/lua_updates have a higher priority " "than those from /usr/share/freepops/lua. It is thus recommended to remove " diff -u freepops-0.2.9/debian/po/ml.po freepops-0.2.9/debian/po/ml.po --- freepops-0.2.9/debian/po/ml.po +++ freepops-0.2.9/debian/po/ml.po @@ -5,8 +5,8 @@ msgid "" msgstr "" "Project-Id-Version:freepops_1.0.13-5_ml\n" -"Report-Msgid-Bugs-To: gareuselesinge@debian.org\n" -"POT-Creation-Date: 2007-05-01 12:07+0200\n" +"Report-Msgid-Bugs-To: freepops@packages.debian.org\n" +"POT-Creation-Date: 2010-05-17 09:57+0000\n" "PO-Revision-Date: 2007-04-08 15:17-0400\n" "Last-Translator: Sreeraj A, Sreerenj B\n" @@ -19,13 +19,13 @@ #. Type: boolean #. Description -#: ../freepops.templates:2001 +#: ../freepops.templates:1001 msgid "Start freepopsd automatically after each boot?" msgstr "ഓരോ തവണ കമ്പ്യൂട്ടര്‍ ആരംഭിച്ചതിന് ശേഷവും ഫ്രീപോപ്സ്ഡി (freepopsd) തുടങ്ങണമോ?" #. Type: boolean #. Description -#: ../freepops.templates:2001 +#: ../freepops.templates:1001 msgid "" "The FreePOPs daemon can be started automatically after each boot. By " "default, it will bind to port 2000. This setting may be changed by editing " @@ -37,13 +37,13 @@ #. Type: boolean #. Description -#: ../freepops.templates:3001 +#: ../freepops.templates:2001 msgid "Create a chroot jail for FreePOPs?" msgstr "ഫ്രീപോപ്സിനുവേണ്ടി ഒരു സിഎച്ച്റൂട്ട് ജയില്‍ (chroot jail) സൃഷ്ടിയ്ക്കണമോ?" #. Type: boolean #. Description -#: ../freepops.templates:3001 +#: ../freepops.templates:2001 msgid "" "FreePOPs can be launched in a chrooted environment to improve the system's " "security." @@ -53,7 +53,7 @@ #. Type: boolean #. Description -#: ../freepops.templates:3001 +#: ../freepops.templates:2001 msgid "" "The jail will be created in /var/lib/freepops/chroot-jail/. The regular init " "script will then take care of launching the daemon by calling a script named " @@ -66,13 +66,13 @@ #. Type: boolean #. Description -#: ../freepops.templates:4001 +#: ../freepops.templates:3001 msgid "Remove local updates on upgrade?" msgstr "പുതുക്കുമ്പോള്‍ പ്രാദേശിക മാറ്റങ്ങള്‍ നീക്കം ചെയ്യണമോ?" #. Type: boolean #. Description -#: ../freepops.templates:4001 +#: ../freepops.templates:3001 msgid "" "The freepops-updater-fltk or freepops-updater-dialog utilities will install " "local updates in /var/lib/freepops/lua_updates." @@ -82,7 +82,7 @@ #. Type: boolean #. Description -#: ../freepops.templates:4001 +#: ../freepops.templates:3001 msgid "" "Such updates are usually integrated in further FreePOPs releases or can be " "downloaded again by running the updater. Therefore, they may safely be " @@ -94,7 +94,7 @@ #. Type: boolean #. Description -#: ../freepops.templates:4001 +#: ../freepops.templates:3001 #, fuzzy #| msgid "" #| "The modules saved in /var/lib/freepops/lua_updates have a higher priority " diff -u freepops-0.2.9/debian/po/vi.po freepops-0.2.9/debian/po/vi.po --- freepops-0.2.9/debian/po/vi.po +++ freepops-0.2.9/debian/po/vi.po @@ -5,8 +5,8 @@ msgid "" msgstr "" "Project-Id-Version: freepops 0.2.2~rc1-4\n" -"Report-Msgid-Bugs-To: gareuselesinge@debian.org\n" -"POT-Creation-Date: 2007-05-01 12:07+0200\n" +"Report-Msgid-Bugs-To: freepops@packages.debian.org\n" +"POT-Creation-Date: 2010-05-17 09:57+0000\n" "PO-Revision-Date: 2007-06-02 20:25+0930\n" "Last-Translator: Clytie Siddall \n" "Language-Team: Vietnamese \n" @@ -18,7 +18,7 @@ #. Type: boolean #. Description -#: ../freepops.templates:2001 +#: ../freepops.templates:1001 msgid "Start freepopsd automatically after each boot?" msgstr "Tự động khởi chạy trình nền freepopsd sau mỗi lần khởi động máy không?" @@ -28,7 +28,7 @@ # editing /etc/default/freepops #. Type: boolean #. Description -#: ../freepops.templates:2001 +#: ../freepops.templates:1001 msgid "" "The FreePOPs daemon can be started automatically after each boot. By " "default, it will bind to port 2000. This setting may be changed by editing " @@ -41,13 +41,13 @@ # msgid "Create a chroot jail for freepops?" #. Type: boolean #. Description -#: ../freepops.templates:3001 +#: ../freepops.templates:2001 msgid "Create a chroot jail for FreePOPs?" msgstr "Tạo một tù gốc khác (chroot jail) cho trình FreePOPs không?" #. Type: boolean #. Description -#: ../freepops.templates:3001 +#: ../freepops.templates:2001 msgid "" "FreePOPs can be launched in a chrooted environment to improve the system's " "security." @@ -57,7 +57,7 @@ #. Type: boolean #. Description -#: ../freepops.templates:3001 +#: ../freepops.templates:2001 msgid "" "The jail will be created in /var/lib/freepops/chroot-jail/. The regular init " "script will then take care of launching the daemon by calling a script named " @@ -69,13 +69,13 @@ #. Type: boolean #. Description -#: ../freepops.templates:4001 +#: ../freepops.templates:3001 msgid "Remove local updates on upgrade?" msgstr "Gỡ bỏ bản cập nhật cục bộ khi nâng cấp không?" #. Type: boolean #. Description -#: ../freepops.templates:4001 +#: ../freepops.templates:3001 msgid "" "The freepops-updater-fltk or freepops-updater-dialog utilities will install " "local updates in /var/lib/freepops/lua_updates." @@ -85,7 +85,7 @@ #. Type: boolean #. Description -#: ../freepops.templates:4001 +#: ../freepops.templates:3001 msgid "" "Such updates are usually integrated in further FreePOPs releases or can be " "downloaded again by running the updater. Therefore, they may safely be " @@ -97,7 +97,7 @@ #. Type: boolean #. Description -#: ../freepops.templates:4001 +#: ../freepops.templates:3001 #, fuzzy #| msgid "" #| "The modules saved in /var/lib/freepops/lua_updates have a higher priority " diff -u freepops-0.2.9/debian/po/nl.po freepops-0.2.9/debian/po/nl.po --- freepops-0.2.9/debian/po/nl.po +++ freepops-0.2.9/debian/po/nl.po @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: freepops\n" -"Report-Msgid-Bugs-To: gareuselesinge@debian.org\n" -"POT-Creation-Date: 2007-05-01 12:07+0200\n" +"Report-Msgid-Bugs-To: freepops@packages.debian.org\n" +"POT-Creation-Date: 2010-05-17 09:57+0000\n" "PO-Revision-Date: 2007-05-01 17:35+0100\n" "Last-Translator: Bart Cornelis \n" "Language-Team: debian-l10n-dutch \n" @@ -18,7 +18,7 @@ #. Type: boolean #. Description -#: ../freepops.templates:2001 +#: ../freepops.templates:1001 msgid "Start freepopsd automatically after each boot?" msgstr "" "Wilt u dat freepopsd automatisch gestart wordt bij het opstarten van de " @@ -26,7 +26,7 @@ #. Type: boolean #. Description -#: ../freepops.templates:2001 +#: ../freepops.templates:1001 msgid "" "The FreePOPs daemon can be started automatically after each boot. By " "default, it will bind to port 2000. This setting may be changed by editing " @@ -39,13 +39,13 @@ #. Type: boolean #. Description -#: ../freepops.templates:3001 +#: ../freepops.templates:2001 msgid "Create a chroot jail for FreePOPs?" msgstr "Wilt u een chroot-gevangenis aanmaken voor freepops?" #. Type: boolean #. Description -#: ../freepops.templates:3001 +#: ../freepops.templates:2001 msgid "" "FreePOPs can be launched in a chrooted environment to improve the system's " "security." @@ -55,7 +55,7 @@ #. Type: boolean #. Description -#: ../freepops.templates:3001 +#: ../freepops.templates:2001 msgid "" "The jail will be created in /var/lib/freepops/chroot-jail/. The regular init " "script will then take care of launching the daemon by calling a script named " @@ -68,13 +68,13 @@ #. Type: boolean #. Description -#: ../freepops.templates:4001 +#: ../freepops.templates:3001 msgid "Remove local updates on upgrade?" msgstr "Wilt u lokale updates verwijderen tijdens opwaarderen?" #. Type: boolean #. Description -#: ../freepops.templates:4001 +#: ../freepops.templates:3001 msgid "" "The freepops-updater-fltk or freepops-updater-dialog utilities will install " "local updates in /var/lib/freepops/lua_updates." @@ -84,7 +84,7 @@ #. Type: boolean #. Description -#: ../freepops.templates:4001 +#: ../freepops.templates:3001 msgid "" "Such updates are usually integrated in further FreePOPs releases or can be " "downloaded again by running the updater. Therefore, they may safely be " @@ -96,7 +96,7 @@ #. Type: boolean #. Description -#: ../freepops.templates:4001 +#: ../freepops.templates:3001 msgid "" "The modules saved in /var/lib/freepops/lua_updates have a higher priority " "than those from /usr/share/freepops/lua. It is thus recommended to remove " diff -u freepops-0.2.9/debian/po/cs.po freepops-0.2.9/debian/po/cs.po --- freepops-0.2.9/debian/po/cs.po +++ freepops-0.2.9/debian/po/cs.po @@ -14,8 +14,8 @@ msgid "" msgstr "" "Project-Id-Version: freepops\n" -"Report-Msgid-Bugs-To: gareuselesinge@debian.org\n" -"POT-Creation-Date: 2007-05-01 12:07+0200\n" +"Report-Msgid-Bugs-To: freepops@packages.debian.org\n" +"POT-Creation-Date: 2010-05-17 09:57+0000\n" "PO-Revision-Date: 2007-05-01 12:39+0200\n" "Last-Translator: Miroslav Kure \n" "Language-Team: Czech \n" @@ -25,13 +25,13 @@ #. Type: boolean #. Description -#: ../freepops.templates:2001 +#: ../freepops.templates:1001 msgid "Start freepopsd automatically after each boot?" msgstr "Spustit freepopsd automaticky při každém zavádění systému?" #. Type: boolean #. Description -#: ../freepops.templates:2001 +#: ../freepops.templates:1001 msgid "" "The FreePOPs daemon can be started automatically after each boot. By " "default, it will bind to port 2000. This setting may be changed by editing " @@ -43,13 +43,13 @@ #. Type: boolean #. Description -#: ../freepops.templates:3001 +#: ../freepops.templates:2001 msgid "Create a chroot jail for FreePOPs?" msgstr "Vytvořit pro FreePOPs chrootované vězení?" #. Type: boolean #. Description -#: ../freepops.templates:3001 +#: ../freepops.templates:2001 msgid "" "FreePOPs can be launched in a chrooted environment to improve the system's " "security." @@ -59,7 +59,7 @@ #. Type: boolean #. Description -#: ../freepops.templates:3001 +#: ../freepops.templates:2001 msgid "" "The jail will be created in /var/lib/freepops/chroot-jail/. The regular init " "script will then take care of launching the daemon by calling a script named " @@ -71,13 +71,13 @@ #. Type: boolean #. Description -#: ../freepops.templates:4001 +#: ../freepops.templates:3001 msgid "Remove local updates on upgrade?" msgstr "Odstranit při aktualizaci lokální aktualizace?" #. Type: boolean #. Description -#: ../freepops.templates:4001 +#: ../freepops.templates:3001 msgid "" "The freepops-updater-fltk or freepops-updater-dialog utilities will install " "local updates in /var/lib/freepops/lua_updates." @@ -87,7 +87,7 @@ #. Type: boolean #. Description -#: ../freepops.templates:4001 +#: ../freepops.templates:3001 msgid "" "Such updates are usually integrated in further FreePOPs releases or can be " "downloaded again by running the updater. Therefore, they may safely be " @@ -99,7 +99,7 @@ #. Type: boolean #. Description -#: ../freepops.templates:4001 +#: ../freepops.templates:3001 msgid "" "The modules saved in /var/lib/freepops/lua_updates have a higher priority " "than those from /usr/share/freepops/lua. It is thus recommended to remove " diff -u freepops-0.2.9/debian/po/fi.po freepops-0.2.9/debian/po/fi.po --- freepops-0.2.9/debian/po/fi.po +++ freepops-0.2.9/debian/po/fi.po @@ -1,8 +1,8 @@ msgid "" msgstr "" "Project-Id-Version: freepops_0.2.6-1\n" -"Report-Msgid-Bugs-To: gareuselesinge@debian.org\n" -"POT-Creation-Date: 2007-05-01 12:07+0200\n" +"Report-Msgid-Bugs-To: freepops@packages.debian.org\n" +"POT-Creation-Date: 2010-05-17 09:57+0000\n" "PO-Revision-Date: 2007-12-18 21:15+0200\n" "Last-Translator: Esko Arajärvi \n" "Language-Team: Finnish \n" @@ -17,52 +17,86 @@ -#: ../freepops.templates:2001 +#: ../freepops.templates:1001 msgid "Start freepopsd automatically after each boot?" msgstr "Käynnistetäänkö freepopsd automaattisesti käynnistettäessä tietokone?" #. Type: boolean #. Description -#: ../freepops.templates:2001 -msgid "The FreePOPs daemon can be started automatically after each boot. By default, it will bind to port 2000. This setting may be changed by editing the /etc/default/freepops file." -msgstr "FreePOPs-taustaohjelma voidaan käynnistää automaattisesti käynnistettäessä tietokone. Oletuksena se kuuntelee porttia 2000. Tätä asetusta voidaan muuttaa muokkaamalla tiedostoa /etc/default/freepops." +#: ../freepops.templates:1001 +msgid "" +"The FreePOPs daemon can be started automatically after each boot. By " +"default, it will bind to port 2000. This setting may be changed by editing " +"the /etc/default/freepops file." +msgstr "" +"FreePOPs-taustaohjelma voidaan käynnistää automaattisesti käynnistettäessä " +"tietokone. Oletuksena se kuuntelee porttia 2000. Tätä asetusta voidaan " +"muuttaa muokkaamalla tiedostoa /etc/default/freepops." #. Type: boolean #. Description -#: ../freepops.templates:3001 +#: ../freepops.templates:2001 msgid "Create a chroot jail for FreePOPs?" msgstr "Luodaanko FreePOPsille chroot-vankila?" #. Type: boolean #. Description -#: ../freepops.templates:3001 -msgid "FreePOPs can be launched in a chrooted environment to improve the system's security." -msgstr "FreePOPs voidaan ajaa chroot-ympäristössä järjestelmän turvallisuuden parantamiseksi." +#: ../freepops.templates:2001 +msgid "" +"FreePOPs can be launched in a chrooted environment to improve the system's " +"security." +msgstr "" +"FreePOPs voidaan ajaa chroot-ympäristössä järjestelmän turvallisuuden " +"parantamiseksi." #. Type: boolean #. Description -#: ../freepops.templates:3001 -msgid "The jail will be created in /var/lib/freepops/chroot-jail/. The regular init script will then take care of launching the daemon by calling a script named start.sh at the root of the chroot jail." -msgstr "Vankila luodaan hakemistoon /var/lib/freepops/chroot-jail/. Tavallinen käynnistyskomentosarja pitää tällöin huolen taustaohjelman käynnistämisestä kutsumalla chroot-vankilan juuressa olevaa ”start.sh”-komentosarjaa." +#: ../freepops.templates:2001 +msgid "" +"The jail will be created in /var/lib/freepops/chroot-jail/. The regular init " +"script will then take care of launching the daemon by calling a script named " +"start.sh at the root of the chroot jail." +msgstr "" +"Vankila luodaan hakemistoon /var/lib/freepops/chroot-jail/. Tavallinen " +"käynnistyskomentosarja pitää tällöin huolen taustaohjelman käynnistämisestä " +"kutsumalla chroot-vankilan juuressa olevaa ”start.sh”-komentosarjaa." #. Type: boolean #. Description -#: ../freepops.templates:4001 +#: ../freepops.templates:3001 msgid "Remove local updates on upgrade?" msgstr "Poistetaanko paikalliset päivitykset päivitettäessä?" #. Type: boolean #. Description -#: ../freepops.templates:4001 -msgid "The freepops-updater-fltk or freepops-updater-dialog utilities will install local updates in /var/lib/freepops/lua_updates." -msgstr "Työkalut freepops-updater-fltk ja freepops-updater-dialog asentavat paikalliset päivitykset hakemistoon /var/lib/freepops/lua_updates." +#: ../freepops.templates:3001 +msgid "" +"The freepops-updater-fltk or freepops-updater-dialog utilities will install " +"local updates in /var/lib/freepops/lua_updates." +msgstr "" +"Työkalut freepops-updater-fltk ja freepops-updater-dialog asentavat " +"paikalliset päivitykset hakemistoon /var/lib/freepops/lua_updates." #. Type: boolean #. Description -#: ../freepops.templates:4001 -msgid "Such updates are usually integrated in further FreePOPs releases or can be downloaded again by running the updater. Therefore, they may safely be removed when the package is upgraded." -msgstr "Tällaiset päivitykset yleensä sisällytetään myöhempiin FreePOPsin versioihin tai voidaan ladata uudelleen ajamalla päivittäjä. Niinpä ne voidaan turvallisesti poistaa, kun paketti päivitetään." +#: ../freepops.templates:3001 +msgid "" +"Such updates are usually integrated in further FreePOPs releases or can be " +"downloaded again by running the updater. Therefore, they may safely be " +"removed when the package is upgraded." +msgstr "" +"Tällaiset päivitykset yleensä sisällytetään myöhempiin FreePOPsin versioihin " +"tai voidaan ladata uudelleen ajamalla päivittäjä. Niinpä ne voidaan " +"turvallisesti poistaa, kun paketti päivitetään." #. Type: boolean #. Description -#: ../freepops.templates:4001 -msgid "The modules saved in /var/lib/freepops/lua_updates have a higher priority than those from /usr/share/freepops/lua. It is thus recommended to remove the former in order to avoid using outdated modules, unless you intend to freeze the local modifications regardless of FreePOPs upgrades." -msgstr "Hakemistoon /var/lib/freepops/lua_updates tallennetuilla moduuleilla on korkeampi prioriteetti kuin hakemiston /usr/share/freepops/lua moduuleilla. Täten on suositeltavaa poistaa ensin mainittu, jotta käytössä ei ole vanhoja moduuleita, ellei tarkoituksena ole säilyttää paikallisia muutoksia FreePOPsin päivityksistä huolimatta." - +#: ../freepops.templates:3001 +msgid "" +"The modules saved in /var/lib/freepops/lua_updates have a higher priority " +"than those from /usr/share/freepops/lua. It is thus recommended to remove " +"the former in order to avoid using outdated modules, unless you intend to " +"freeze the local modifications regardless of FreePOPs upgrades." +msgstr "" +"Hakemistoon /var/lib/freepops/lua_updates tallennetuilla moduuleilla on " +"korkeampi prioriteetti kuin hakemiston /usr/share/freepops/lua moduuleilla. " +"Täten on suositeltavaa poistaa ensin mainittu, jotta käytössä ei ole vanhoja " +"moduuleita, ellei tarkoituksena ole säilyttää paikallisia muutoksia " +"FreePOPsin päivityksistä huolimatta." diff -u freepops-0.2.9/debian/po/gl.po freepops-0.2.9/debian/po/gl.po --- freepops-0.2.9/debian/po/gl.po +++ freepops-0.2.9/debian/po/gl.po @@ -5,8 +5,8 @@ msgid "" msgstr "" "Project-Id-Version: freepops\n" -"Report-Msgid-Bugs-To: gareuselesinge@debian.org\n" -"POT-Creation-Date: 2007-05-01 12:07+0200\n" +"Report-Msgid-Bugs-To: freepops@packages.debian.org\n" +"POT-Creation-Date: 2010-05-17 09:57+0000\n" "PO-Revision-Date: 2007-05-01 19:40+0200\n" "Last-Translator: Jacobo Tarrio \n" "Language-Team: Galician \n" @@ -16,13 +16,13 @@ #. Type: boolean #. Description -#: ../freepops.templates:2001 +#: ../freepops.templates:1001 msgid "Start freepopsd automatically after each boot?" msgstr "¿Iniciar freepopsd automaticamente despois de iniciar o ordenador?" #. Type: boolean #. Description -#: ../freepops.templates:2001 +#: ../freepops.templates:1001 msgid "" "The FreePOPs daemon can be started automatically after each boot. By " "default, it will bind to port 2000. This setting may be changed by editing " @@ -34,13 +34,13 @@ #. Type: boolean #. Description -#: ../freepops.templates:3001 +#: ../freepops.templates:2001 msgid "Create a chroot jail for FreePOPs?" msgstr "¿Crear unha gaiola chroot para FreePOPs?" #. Type: boolean #. Description -#: ../freepops.templates:3001 +#: ../freepops.templates:2001 msgid "" "FreePOPs can be launched in a chrooted environment to improve the system's " "security." @@ -50,7 +50,7 @@ #. Type: boolean #. Description -#: ../freepops.templates:3001 +#: ../freepops.templates:2001 msgid "" "The jail will be created in /var/lib/freepops/chroot-jail/. The regular init " "script will then take care of launching the daemon by calling a script named " @@ -62,13 +62,13 @@ #. Type: boolean #. Description -#: ../freepops.templates:4001 +#: ../freepops.templates:3001 msgid "Remove local updates on upgrade?" msgstr "¿Eliminar as actualizacións locais ao actualizar?" #. Type: boolean #. Description -#: ../freepops.templates:4001 +#: ../freepops.templates:3001 msgid "" "The freepops-updater-fltk or freepops-updater-dialog utilities will install " "local updates in /var/lib/freepops/lua_updates." @@ -78,7 +78,7 @@ #. Type: boolean #. Description -#: ../freepops.templates:4001 +#: ../freepops.templates:3001 msgid "" "Such updates are usually integrated in further FreePOPs releases or can be " "downloaded again by running the updater. Therefore, they may safely be " @@ -90,7 +90,7 @@ #. Type: boolean #. Description -#: ../freepops.templates:4001 +#: ../freepops.templates:3001 msgid "" "The modules saved in /var/lib/freepops/lua_updates have a higher priority " "than those from /usr/share/freepops/lua. It is thus recommended to remove " only in patch2: unchanged: --- freepops-0.2.9.orig/doc/RFCs.txt +++ freepops-0.2.9/doc/RFCs.txt @@ -7,3 +7,4 @@ http://www.ietf.org/rfc/rfc2822.txt http://www.ietf.org/rfc/rfc2965.txt http://www.ietf.org/rfc/rfc822.txt +http://www.ietf.org/rfc/rfc*.txt only in patch2: unchanged: --- freepops-0.2.9.orig/src/lua/supereva.lua +++ freepops-0.2.9/src/lua/supereva.lua @@ -1,12 +1,12 @@ -- ************************************************************************** -- -- FreePOPs Supereva webmail interface -- --- $Id: supereva.lua,v 1.22 2008/12/15 12:20:12 gareuselesinge Exp $ +-- $Id: supereva.lua,v 1.7 2009/03/29 18:59:51 gareuselesinge Exp $ -- -- Released under the GNU/GPL license -- ************************************************************************** -- -PLUGIN_VERSION = "0.2.7b" +PLUGIN_VERSION = "0.2.7c" PLUGIN_NAME = "Supereva" PLUGIN_REQUIRE_VERSION = "0.2.0" PLUGIN_LICENSE = "GNU/GPL" @@ -36,11 +36,11 @@ -- ------------------------------------------------------------------------ -- -- Constants local supereva_strings = { - login_uri = "http://it.email.dada.net/cgi-bin/sso/login.cgi", -- "http://it.email.dada.net/cgi-bin/sn_my/login.chm", + login_uri = "http://sso.dada.it/cgi-bin/sso/login.cgi", --"http://it.email.dada.net/cgi-bin/sso/login.cgi", -- "http://it.email.dada.net/cgi-bin/sn_my/login.chm", login_data = "username=%s&password=%s", - inbox_uri = "http://it.email.dada.net/cgi-bin/main.chm?mlt_msgs=", - get_uri = "http://it.email.dada.net/cgi-bin/nrmail03.chm?msgnum=", + inbox_uri = "http://email.dada.it/cgi-bin/main.chm?mlt_msgs=", + get_uri = "http://email.dada.it/cgi-bin/nrmail03.chm?msgnum=", inbox_e = "" .. ".*" .. only in patch2: unchanged: --- freepops-0.2.9.orig/src/lua/juno.lua +++ freepops-0.2.9/src/lua/juno.lua @@ -7,7 +7,7 @@ -- Globals -- -PLUGIN_VERSION = "0.1.20081222" +PLUGIN_VERSION = "0.1.20090411" PLUGIN_NAME = "juno.com" PLUGIN_REQUIRE_VERSION = "0.2.0" PLUGIN_LICENSE = "GNU/GPL" @@ -615,6 +615,7 @@ -- -------------------------------------------------------------------------- -- function getAttachmentTable(cbInfo, data) local attachments = {} + local lookup = {} local body = cbInfo.strBuffer -- find attachments @@ -630,7 +631,6 @@ filename = getFilename(url, filename) log.dbg("Found Attachment, File: " .. filename .. " - Url: " .. url) attachments[filename] = url - table.insert(attachments, table.maxn(attachments) + 1, url) end return attachments only in patch2: unchanged: --- freepops-0.2.9.orig/src/lua/tin.lua +++ freepops-0.2.9/src/lua/tin.lua @@ -1,7 +1,7 @@ -- ************************************************************************** -- -- FreePOPs @virgilio.it, @tin.it webmail interface -- --- $Id: tin.lua,v 1.95 2008/04/03 22:34:35 gareuselesinge Exp $ +-- $Id: tin.lua,v 1.35 2009/03/25 21:23:30 nvhs Exp $ -- -- Released under the GNU/GPL license -- Written by Enrico Tassi @@ -9,7 +9,7 @@ -- these are used in the init function -PLUGIN_VERSION = "0.2.11h" +PLUGIN_VERSION = "0.2.21" PLUGIN_NAME = "Tin.IT" PLUGIN_REQUIRE_VERSION = "0.2.0" PLUGIN_LICENSE = "GNU/GPL" @@ -86,9 +86,9 @@ login2Ct="&t=([^&]+)", login2Cs="&s=([%d]+)", -- mesage list mlex - statE = ".*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*", + statE = ".*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*", statG = "OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOXO", - + -- The uri for the first page with the list of messages -- parameters all %s except fi that is %d: -- wherearewe(), folder, domain, username, t, s, fi @@ -102,18 +102,18 @@ timeoutC = '(window.parent.location.*/mail/main?.*err=24)', -- The uri to save a message (read download the message) -- wherearewe(), mailbox, domain, username, username, uidl, t, s - save = "http://%s/cp/ps/Mail/Email".. + save = "http://%s/cp/ps/Mail/EmailSecure".. "?sh=&fp=%s&d=%s&sd=&sc=&an=%s&u=%s&".. "uid=%s&t=%s&style=&l=it&s=%s&sl=%d", - save_sl = "http://%s/cp/ps/Mail/Email".. + save_attach = "http://%s/cp/ps/Mail/Email".. "?sh=&fp=%s&d=%s&sd=&sc=&an=%s&u=%s&".. - "uid=&t=%s&style=&l=it&s=%s&sl=%d", - body_start = [[%s-%s-
%s-
%s-]], - body_end = [[%s*%s*%s*%s*%s*]], + "uid=%s&t=%s&style=&l=it&s=%s&sl=%d", + body_start = [[%s-%s-
%s-
%s-.-%s*]], + body_end = [[ %s*
%s*<.?.?.?.?DO NOT REMOVE THIS USED TO CALC LENGHT OF PAGE .->]], attachE = ".*.*.*", attachG = "OOX", -- by nvhs for html image - imageE = "", + imageE = "<.?.?[Ii][Mm][Gg].*cp/ps/Mail/SecureViewAttachment.*>", imageG = "", -- by nvhs for attach mail mailE = ".*.*.*", @@ -351,7 +351,7 @@ return url, post end -function tin_login() +function tin_http_login() if internal_state.login_done then return POPSERVER_ERR_OK end @@ -422,6 +422,116 @@ return POPSERVER_ERR_OK end + +function tin_https_login() + if internal_state.login_done then + return POPSERVER_ERR_OK + end + + -- build the uri + local password = internal_state.password + local domain = internal_state.domain + local user = internal_state.name + local pop_login = user .. "@" .. domain + + -- the browser must be preserved + internal_state.b = browser.new() + + local b = internal_state.b + --b:verbose_mode() + + local initial_uri = "http://pf.rossoalice.alice.it/Vpf.html?" + local body, err = b:get_uri(initial_uri) + + local post = +"usernameDisplay=" .. user .. "&password="..password.. +"&dominio="..domain.."&imageField.x=31&imageField.y=13&".. +"login="..pop_login.."&pwd="..password.."&channel=Vmail&".. +"URL_OK=https%3A%2F%2Fauthsrs.alice.it%2Faap%2Faap_redir.jsp%3Fentry%3DVmail&".. +"URL_KO=https%3A%2F%2Fauthsrs.alice.it%2Faap%2Faap_redir_ko.jsp%3Fentry%3DVmail&".. +"servizio=mail&msisdn="..user.."&username="..pop_login.."&user="..pop_login.. +"&a3afep=http%3A%2F%2Fportale.rossoalice.alice.it%2Fps%2FManageCodError.do%3Fcode%3D470%26channel%3DVmail&".. +"DOMAIN=&PASS="..password.."&self=true&a3si=none&a3st=VCOMM&totop=true¬otopa3ep=true&a3aid=lvmes&a3flag=0&".. +"a3ep=http%3A%2F%2Fdise.alice.it%2Fdest%2Fwebmail&".. +"a3se=http%3A%2F%2Fportale.rossoalice.alice.it%2Fps%2FManageCodError.do%3Fcode%3D470%26channel%3DVmail&".. +"a3dcep=http%3A%2F%2Fcommunicator.alice.it%2Fasp%2Fhomepage.asp%3Fs%3D005&".. +"a3l="..pop_login.."&a3p="..password.."&rememberUsernameChk=checkbox" + + local login_uri = "https://aaacsc.alice.it/piattaformaAAA/aapm/amI" + local body, err = b:post_uri(login_uri, post) + if body == nil then + log.error_print("Error getting "..login_uri.. ": "..err) + return POPSERVER_ERR_AUTH + end + + -- look for redirect + local newurl_match = "window%.[a-z%.]*%.href%s=%s\"([^\"]+)\"" + local newurl = string.match(body, newurl_match) + if newurl == nil then + log.error_print("Error matching "..newurl_match) + return POPSERVER_ERR_AUTH + end + + local body, err = b:get_uri(newurl) + if body == nil then + log.error_print("Error getting "..newurl..": "..err) + return POPSERVER_ERR_AUTH + end + local newurl = string.match(body, newurl_match) + if newurl == nil then + log.error_print("Error matching "..newurl_match) + return POPSERVER_ERR_AUTH + end + + local body, err = b:get_uri(newurl) + if body == nil then + log.error_print("Error getting "..newurl..": "..err) + return POPSERVER_ERR_AUTH + end + + -- step 2: get session id_s and id_t + local tincctoken = assert(b:get_cookie("tincctoken"), + "unable to find cookie tincctoken").value + local url = string.format(tin_string.login2, domain, + curl.escape(pop_login), curl.unescape(tincctoken)) + local body,err = b:get_uri(url) + if body == nil then + log.error_print("Error getting "..url..": "..err) + return POPSERVER_ERR_AUTH + end + local capt = string.match(body, tin_string.login2C) + local t = string.match(capt, tin_string.login2Ct) + local s = string.match(capt, tin_string.login2Cs) + + internal_state.session_id_s = s + internal_state.session_id_t = t + + if internal_state.session_id_s == nil or + internal_state.session_id_t == nil then + log.error_print("Login failed\n") + return POPSERVER_ERR_AUTH + end + + -- save all the computed data + internal_state.login_done = true + + -- log the creation of a session + log.say("Session started for " .. internal_state.name .. "@" .. + internal_state.domain .. + "(" .. internal_state.session_id_t .. ", " .. + internal_state.session_id_s .. ")\n") + + return POPSERVER_ERR_OK +end + +function tin_login() + local rc = tin_http_login() + if rc ~= POPSERVER_ERR_OK then + return tin_https_login() + else + return rc + end +end -- ************************************************************************** -- -- Tin functions @@ -528,7 +638,6 @@ local post = string.format(tin_string.delete_post, folder, uidl, user) local body, err = b:post_uri(uri, post) - print(uri, post)--, body) if body == nil then log.error_print("Error getting "..uri..":"..err) return POPSERVER_ERR_UNKNOWN @@ -578,6 +687,7 @@ -- The action for do_until -- -- uses mlex to extract all the messages uidl and size + local stop = false local function action_f (s) -- calls match on the page s, with the mlexpressions -- statE and statG @@ -587,6 +697,10 @@ -- the number of results local n = x:count() + if n < 10 then + stop = true + end + if n == 0 then return true,nil @@ -608,7 +722,7 @@ k = string.match(size,"([Kk][Bb])") m = string.match(size,"([Mm][Bb])") size = string.match(size,"([%.%d]+)") - uidl = string.match(uidl,'uid=([%d]+)') + uidl = string.match(uidl,"read%s*%(%s*'"..internal_state.folder.."'%s*,%s*'([%d]+)'") if not uidl or not size then return nil,"Unable to parse page" @@ -627,14 +741,12 @@ set_mailmessage_uidl(pstate,i+nmesg_old,uidl) internal_state.reverse_lookup[uidl] = i+nmesg_old end - + return true,nil end -- check must control if we are not in the last page and -- eventually change uri to tell retrive_f the next page to retrive - local count = 0 - local how_many_refs = 0 local function next_page() page = page + 10 uri = string.format(tin_string.first, @@ -647,32 +759,8 @@ -- if a limit was set, stop return true end - local tmp = string.find(s,tin_string.no_next) - if tmp ~= nil and count == 0 then - return next_page() - else - if count == 0 then - -- we are on the last page only if we have seen - -- this 3 times - for x in string.gfind(s,tin_string.list_href) do - how_many_refs = how_many_refs + 1 - end - -- there should be links before and after - -- the list - if math.fmod(how_many_refs, 2) ~= 0 then - log.error_print( - "Error in counting list_href") - return true - end - how_many_refs = how_many_refs / 2 - end - count = count + 1 - if count >= how_many_refs then - return true - else - return next_page() - end - end + if stop then return true end + return next_page() end -- this is simple and uri-dependent @@ -763,7 +851,8 @@ -- Get first lines message msg lines, must call -- popserver_callback to send the data -- -function tin_parse_webmessage(wherearewe, data) +-- +function tin_parse_webmessage(wherearewe, data, data_attach) local head, body, body_html, attach ,inlineids = nil, nil, nil, {} , {} -- extract headers @@ -800,6 +889,7 @@ "[Tt][Ee][Xx][Tt]/[Pp][Ll][Aa][Ii][Nn]") if found == nil then body_html = string.sub(data, begin_body + 1, end_body - 1) + -- body_html = string.gsub(data, "%s*%s-%s*", "") head = mimer.remove_lines_in_proper_mail_header(head, {"content%-type"}) else @@ -824,7 +914,7 @@ end -- extract attachments - local x = mlex.match(data, tin_string.attachE, tin_string.attachG) + local x = mlex.match(data_attach,tin_string.attachE,tin_string.attachG) --x:print() for i = 1, x:count() do local url = x:get(0,i-1) @@ -837,7 +927,7 @@ -- by nvhs extract attach mail - local x = mlex.match(data, tin_string.mailE, tin_string.mailG) + local x = mlex.match(data_attach, tin_string.mailE, tin_string.mailG) --x:print() for i = 1, x:count() do local url = x:get(0,i-1) @@ -856,8 +946,9 @@ -- y:print() for i = 1, y:count() do local url = y:get(0,i-1) + print(url) url = string.match(url, - "/cp/ps/Mail/ViewAttachment.-&id=%d*") + "/cp/ps/Mail/SecureViewAttachment?.-&id=%d*") if url ~= nil then attach[url] = "http://"..wherearewe..url inlineids[url]=url @@ -867,7 +958,7 @@ -- replace url with cid if body_html ~= nil then body_html = string.gsub(body_html, - "/cp/ps/Mail/ViewAttachment.-&id=%d*","cid:%1") + "src%s*=%s*\".-(/cp/ps/Mail/SecureViewAttachment.-&id=%d*).-\"",'src="cid:%1"') end return head, body, body_html, attach ,inlineids @@ -949,8 +1040,18 @@ return POPSERVER_ERR_UNKNOWN end + local uri = string.format(tin_string.save_attach,popserver, + folder, domain, user, user, uidl, session_id_t, session_id_s,sl) + + -- tell the browser to fetch + local f_attach, err = b:get_uri(uri) + if f_attach == nil then + log.error_print("Error fetching "..uri..": ".. (err or 'nil')) + return POPSERVER_ERR_UNKNOWN + end + local wherearewe = add_webmail_in_front(b:wherearewe()) - local head,body,body_html,attach,inlineids = tin_parse_webmessage(wherearewe, f) + local head,body,body_html,attach,inlineids = tin_parse_webmessage(wherearewe, f, f_attach) local cb = mimer.callback_mangler(common.retr_cb(data)) head = string.gsub(head,"([Cc][Hh][Aa][Rr][Ss][Ee][Tt]%s*=).-([;\n])","%1\""..ctype.."\"%2") mimer.pipe_msg(head,body,body_html,"http://"..wherearewe,attach,b,cb,inlineids,ctype) @@ -1014,8 +1115,18 @@ return POPSERVER_ERR_NETWORK end + local uri = string.format(tin_string.save_attach,popserver, + folder, domain, user, user, uidl, session_id_t, session_id_s,sl) + + -- tell the browser to fetch + local f_attach, err = b:get_uri(uri) + if f_attach == nil then + log.error_print("Error fetching "..uri..": ".. (err or 'nil')) + return POPSERVER_ERR_UNKNOWN + end + local wherearewe = add_webmail_in_front(b:wherearewe()) - local head,body,body_html,attach,inlineids = tin_parse_webmessage(wherearewe, f) + local head,body,body_html,attach,inlineids = tin_parse_webmessage(wherearewe, f, f_attach) local global = common.new_global_for_top(lines,nil) local cb = mimer.callback_mangler(common.top_cb(global,data,true)) head = string.gsub(head,"([Cc][Hh][Aa][Rr][Ss][Ee][Tt]%s*=).-([;\n])","%1\""..ctype.."\"%2") only in patch2: unchanged: --- freepops-0.2.9.orig/src/lua/gmail.lua +++ freepops-0.2.9/src/lua/gmail.lua @@ -1,7 +1,7 @@ -- ************************************************************************** -- -- FreePOPs @gmail.com webmail interface -- --- $Id: gmail.lua,v 1.51 2008/10/14 13:26:42 russell822 Exp $ +-- $Id: gmail.lua,v 1.7 2009/11/28 03:53:18 russell822 Exp $ -- -- Released under the GNU/GPL license -- Written by Rami Kattan @@ -14,7 +14,7 @@ -- ************************************************************************** -- -- these are used in the init function -PLUGIN_VERSION = "0.0.54" +PLUGIN_VERSION = "0.0.55" PLUGIN_NAME = "GMail.com" PLUGIN_REQUIRE_VERSION = "0.2.0" PLUGIN_LICENSE = "GNU/GPL" @@ -131,9 +131,9 @@ -- local globals = { -- The uri the browser uses when you click the "login" button - --strLoginUrl = "https://www.google.com/accounts/ServiceLoginBoxAuth", - strLoginUrl = "https://www.google.com/accounts/ServiceLoginAuth", - strLoginPostData = "continue=https%%3A%%2F%%2Fmail.google.com%%2Fmail%%3Fui%%3Dhtml%%26zy%%3Dl&".. + strLoginUrl = "https://www.google.com/accounts/ServiceLogin", + strAuthUrl = "https://www.google.com/accounts/ServiceLoginAuth", + strAuthPostData = "continue=https%%3A%%2F%%2Fmail.google.com%%2Fmail%%3Fui%%3Dhtml%%26zy%%3Dl&".. "service=mail&Email=%s&Passwd=%s&null=Sign%%20in&rmShown=1&rm=false<mplcache=2<mpl=yj_wsad&PersistentCookie=yes&ui=1", strLoginCheckcookie_TODO ="https://www.google.com/accounts/CheckCookie?".. "continue=http%3A%2F%2Fmail.google.com%2Fmail&".. @@ -315,8 +315,8 @@ -- local password = internal_state.strPassword local username = internal_state.strUserName - local uri = globals.strLoginUrl - local post = string.format(globals.strLoginPostData, + local uri = globals.strAuthUrl + local post = string.format(globals.strAuthPostData, username, curl.escape(password)) -- The browser must be preserved @@ -329,6 +329,22 @@ -- Connect to gmail login page -- + local body, err = b:get_uri(globals.strLoginUrl) + + -- Find the appropriate GALX value + local str = string.find(body, "GALX") + if str ~= nil then + body = string.sub(body, str) + local i,j = string.find(body, "value=") + local GALX = string.sub(body, j+2, j+12) + post = post .. "&GALX=" .. GALX + log.dbg("Found GALX value: " .. GALX) + else + log.dbg("Unable to find GALX value. Login will probably fail.") + end + + -- Connect to gmail auth page + -- local body, err = b:post_uri(uri, post) -- print(body) @@ -339,6 +355,7 @@ return POPSERVER_ERR_UNKNOWN end + -- -- Check for invalid password -- local str = string.match(body, globals.strLoginFailed) @@ -347,8 +364,8 @@ return POPSERVER_ERR_AUTH end - local str = string.find(body, "Redirecting") - if str ~= nil then + local str = string.find(body, "Redirecting") + if str ~= nil then body = string.gsub(body, "'", "'") local i,j=string.find(body, "url='") local k,l=string.find(body, "'\">") only in patch2: unchanged: --- freepops-0.2.9.orig/src/lua/hotmail.lua +++ freepops-0.2.9/src/lua/hotmail.lua @@ -3,11 +3,12 @@ -- -- Released under the GNU/GPL license -- Written by Russell Schwager +-- contributions from D. Milne -- ************************************************************************** -- -- Globals -- -PLUGIN_VERSION = "0.2.20081219" +PLUGIN_VERSION = "0.2.20100121" PLUGIN_NAME = "hotmail.com" PLUGIN_REQUIRE_VERSION = "0.2.8" PLUGIN_LICENSE = "GNU/GPL" @@ -20,13 +21,17 @@ "@hotmail.de", "@hotmail.it", "@hotmail.co.uk", "@hotmail.co.jp", "@hotmail.fr", "@messengeruser.com", "@hotmail.com.ar", "@hotmail.co.th", "@hotmail.com.tr", - "@milanosemplice.it" + "@windowslive.com", "@milanosemplice.it" } PLUGIN_PARAMETERS = { {name="folder", description={ it=[[La cartella che vuoi ispezionare. Quella di default è Inbox.]], en=[[The folder you want to interact with. Default is Inbox.]]} }, + {name="folderid", description={ + en=[[The folder id you want to interact with. Default is Inbox. Using this option + will override the folder parameter.]]} + }, {name = "emptyjunk", description = { en = [[ Parameter is used to force the plugin to empty the junk folder when it is done @@ -171,12 +176,12 @@ strFolderLiveLightInboxPattern = 'fst="NONE".-href="InboxLight%.aspx%?(FolderID=[^&]+[^"]+)"[^>]+>', strFolderLiveLightFolderIdPattern = 'FolderID=([^&]+)&[.]*', strFolderLiveLightNPattern = '&n=([^&]+)[.]*', - + strFolderWithIdLiveLightNPattern = '&.-n=([^"]+)"', strFolderLiveLightTrashPattern = 'i_trash%.gif" border="0" alt=""/>.-]+>=on strCmdDeleteLive = "http://%s/mail/mail.fpp?cnmn=Microsoft.Msn.Hotmail.Ui.Fpp.MailBox.MoveMessages&ptid=0&a=%s&au=%s", strCmdDeletePostLiveOld = 'cn=Microsoft.Msn.Hotmail.Ui.Fpp.MailBox&mn=MoveMessages&d="%s","%s",[%s],[{"%%5C%%7C%%5C%%7C%%5C%%7C0%%5C%%7C%%5C%%7C%%5C%%7C00000000-0000-0000-0000-000000000001%%5C%%7C632901424233870000",{2,"00000000-0000-0000-0000-000000000000",0}}],null,null,0,false,Date&v=1', - -- strCmdDeletePostLive = 'cn=Microsoft.Msn.Hotmail.Ui.Fpp.MailBox&mn=MoveMessages&d="%s","%s",[%s],[{"%%5C%%7C%%5C%%7C%%5C%%7C0%%5C%%7C%%5C%%7C%%5C%%7C%%5C%%7C00000000-0000-0000-0000-000000000001%%5C%%7C632750213035330000",null}],null,null,0,false,Date,false,true&v=1&mt=%s', strCmdDeletePostLive = 'cn=Microsoft.Msn.Hotmail.Ui.Fpp.MailBox&mn=MoveMessages&d="%s","%s",[%s],[{"0%%5C%%7C0%%5C%%7C8C9BDFF65883200%%5C%%7C00000000-0000-0000-0000-000000000001",null}],null,null,0,false,Date,false,true&v=1&mt=%s', - --strCmdDeleteLiveLight = "http://%s/mail/InboxLight.aspx?FolderID=%s&", - --strCmdDeletePostLiveLight = "__VIEWSTATE=&mt=%s&MoveMessageSelector=%s&ToolbarActionItem=MoveMessageSelector&", -- SelectedMessages=%s", - strCmdDeleteLiveLight = "http://%s/mail/mail.fpp?cnmn=Microsoft.Msn.Hotmail.Ui.Fpp.MailBox.MoveMessagesToFolder&ptid=0&a=%s&au=%s", + strCmdDeleteLiveLight = "http://%s/mail/mail.fpp?cnmn=Microsoft.Msn.Hotmail.Ui.Fpp.MailBox.MoveMessagesToFolder&ptid=0&a=%s&au=%s", strCmdDeletePostLiveLight = 'cn=Microsoft.Msn.Hotmail.Ui.Fpp.MailBox&mn=MoveMessagesToFolder&d="%s","%s",[%s],[%s],{"%s",25,FirstPage,0,Date,false,"00000000-0000-0000-0000-000000000000","",1,2,false,"",false,0},null&v=1&mt=%s', - strCmdDeletePostLiveLight2 = 'cn=Microsoft.Msn.Hotmail.Ui.Fpp.MailBox&mn=MoveMessagesToFolder&d="%s","%s",[%s],[%s],{"%s",FirstPage,0,Date,false,"00000000-0000-0000-0000-000000000000","",1,2,false,"",26,0,Bottom}&v=1&mt=%s', - + -- doglan @ 2009-10-10: Updated URL + strCmdDeletePostLiveLight2 = 'cn=Microsoft.Msn.Hotmail.Ui.Fpp.MailBox&mn=MoveMessagesToFolder&d="%s","%s",[%s],[%s],{"%s",FirstPage,0,Date,false,"00000000-0000-0000-0000-000000000000","",1,2,false,"",0,-1,Off}&v=1&mt=%s', strCmdMsgView = "http://%s/cgi-bin/getmsg?msg=%s&imgsafe=y&curmbox=%s&a=%s", strCmdMsgViewRaw = "&raw=0", strCmdMsgViewLive = "http://%s/mail/GetMessageSource.aspx?msgid=%s&gs=true", @@ -292,12 +279,12 @@ strCmdEmptyTrashLiveLightPost = 'cn=Microsoft.Msn.Hotmail.Ui.Fpp.MailBox&mn=ClearFolder&d="%s",{"%s",25,FirstPage,0,Date,false,"00000000-0000-0000-0000-000000000000","",1,2,false,"",false,0}&v=1&mt=%s', strCmdMsgReadLive = "http://%s/mail/mail.fpp?cnmn=Microsoft.Msn.Hotmail.Ui.Fpp.MailBox.MarkMessages&ptid=0&a=&au=%s", strCmdMsgReadLivePost = "cn=Microsoft.Msn.Hotmail.Ui.Fpp.MailBox&mn=MarkMessages&d=true,[%s]&v=1&mt=%s", - --strCmdMsgReadLiveLight = "http://%s/mail/ReadMessageLight.aspx?AllowUnsafe=True&Aux=&FolderID=%s&InboxSortAscending=False&InboxSortBy=Date&ReadMessageId=%s", strCmdMsgReadLiveLight = "http://%s/mail/mail.fpp?cnmn=Microsoft.Msn.Hotmail.Ui.Fpp.MailBox.MarkMessagesReadState&ptid=0&a=%s&au=%s", - --strCmdMsgReadLiveLightPost = 'cn=Microsoft.Msn.Hotmail.Ui.Fpp.MailBox&mn=MarkMessagesReadState&d=true,["%s"],{"%s",25,FirstPage,0,Date,false,"00000000-0000-0000-0000-000000000000","",1,2,false,"",false,0}&v=1&mt=%s', + -- Submitted by Barlad - -- - strCmdMsgReadLiveLightPost = 'cn=Microsoft.Msn.Hotmail.Ui.Fpp.MailBox&mn=MarkMessagesReadState&d=true,["%s"],{"%s",FirstPage,0,Date,false,"00000000-0000-0000-0000-000000000000","",1,2,false,"",1085,0,Right}&v=1&mt=%s', + -- doglan @ 2009-10-10: Updated URL (["%s"],) + --strCmdMsgReadLiveLightPost = 'cn=Microsoft.Msn.Hotmail.Ui.Fpp.MailBox&mn=MarkMessagesReadState&d=true,["%s"],{"%s",FirstPage,0,Date,false,"00000000-0000-0000-0000-000000000000","",1,2,false,"",18,-1,Off}&v=1&mt=%s', + strCmdMsgReadLiveLightPost = 'cn=Microsoft.Msn.Hotmail.Ui.Fpp.MailBox&mn=MarkMessagesReadState&d=true,["%s"],[{%%220%%5C%%7C0%%5C%%7C8CC610430EE14B0%%5C%%7C%%5C%%7C%%22}],{"%s",FirstPage,0,Date,false,"00000000-0000-0000-0000-000000000000","",1,2,false,"",71,-1,Off}&v=1&mt=%s', } -- ************************************************************************** -- @@ -358,6 +345,7 @@ return (internalState.strUser or "") .. "~" .. (internalState.strDomain or "") .. "~" .. (internalState.strMBoxName or "") .. "~" .. + (internalState.strMBox or "") .. "~" .. (internalState.statLimit or "") .. "~" .. internalState.strPassword -- this asserts strPassword ~= nil end @@ -366,9 +354,9 @@ local try = 0 if post ~= nil then - --log.dbg("LOADING: " .. url .. "\nPOST: " .. post .. "\n") + log.dbg("LOADING: " .. url .. "\nPOST: " .. post .. "\n") else - --log.dbg("LOADING: " .. url .. "\n") + log.dbg("LOADING: " .. url .. "\n") end while (try < 3) do @@ -407,7 +395,7 @@ end local lastpage = browser:whathaveweread() - if (string.match(lastpage, "browsersupport")) then + if (lastpage ~= nil and string.match(lastpage, "browsersupport")) then if (post == nil) then body, err = browser:get_uri(url) else @@ -418,6 +406,35 @@ return body, err end + +function CheckForMessageAtLogin(browser, url, body) + local err + -- Let's look for a message at login + -- + local hasMsgAtLogin = false + url = string.match(body, '
") if (str == nil and domain == "msn.com" and internalState.strMBoxName == "Inbox") then str = string.match(body, globals.strPatMSNInboxId) @@ -774,27 +810,39 @@ local url = string.format(globals.strCmdFoldersLiveLight, internalState.strMailServer, n) body, err = getPage(browser, url, nil, "LiveLight - Manage Folders") + if (body == nil) then + return POPSERVER_ERR_NETWORK + end -- cdmackie 2008-07-06: fix patter to get folder IDs - if (internalState.strMBoxName == "Inbox") then - str = string.match(body, globals.strFolderLiveLightInboxPattern) - local id = string.match(str, globals.strFolderLiveLightFolderIdPattern) - local n = string.match(str, globals.strFolderLiveLightNPattern) - str = id .. "&n=" .. n - else - str = string.match(body, globals.strFolderLiveLightPattern .. internalState.strMBoxName) - local id = string.match(str, globals.strFolderLiveLightFolderIdPattern) - local n = string.match(str, globals.strFolderLiveLightNPattern) - str = id .. "&n=" .. n - end + if (internalState.strMBox == nil) then + if (internalState.strMBoxName == "Inbox") then + str = string.match(body, globals.strFolderLiveLightInboxPattern) + local id = string.match(str, globals.strFolderLiveLightFolderIdPattern) + local n = string.match(str, globals.strFolderLiveLightNPattern) + str = id .. "&n=" .. n + else + str = string.match(body, globals.strFolderLiveLightPattern .. internalState.strMBoxName) + local id = string.match(str, globals.strFolderLiveLightFolderIdPattern) + local n = string.match(str, globals.strFolderLiveLightNPattern) + str = id .. "&n=" .. n + end - if (str == nil) then - log.error_print("Unable to figure out folder id with name: " .. internalState.strMBoxName) - return POPSERVER_ERR_NETWORK - else + if (str == nil) then + log.error_print("Unable to figure out folder id with name: " .. internalState.strMBoxName) + return POPSERVER_ERR_NETWORK + end internalState.strMBox = str - log.dbg("Hotmail - Using folder (" .. internalState.strMBox .. ")") - end + else + local folder = string.gsub(internalState.strMBox, '%-', "%%-") + local n = string.match(body, folder .. globals.strFolderWithIdLiveLightNPattern) + if (n == nil) then + log.error_print("Unable to figure out the n value for folder id: " .. internalState.strMBox) + return POPSERVER_ERR_NETWORK + end + internalState.strMBox = internalState.strMBox .. "&n=" .. n + end + log.dbg("Hotmail - Using folder (" .. internalState.strMBox .. ")") -- Get the trash folder id and the junk folder id -- @@ -864,7 +912,6 @@ body = string.gsub(body, "\", "\\") body = string.gsub(body, "/", "/") body = string.gsub(body, "?", "?") - body = string.gsub(body, "&", "&") body = string.gsub(body, "*", "*") body = string.gsub(body, "!", "!") body = string.gsub(body, "$", "$") @@ -873,6 +920,7 @@ body = string.gsub(body, "\\x3f", "?") body = string.gsub(body, "\\x3d", "=") body = string.gsub(body, "\\x26", "&") + body = string.gsub(body, "&", "&") -- maybe best to be last return body end @@ -1019,8 +1067,9 @@ --url = string.format(globals.strCmdMsgReadLiveLight, internalState.strMailServer, internalState.strMBox, uidl) url = string.format(globals.strCmdMsgReadLiveLight, internalState.strMailServer, internalState.strCrumb, internalState.strUserId) local inboxid = string.gsub(internalState.strMBox, "&n=.*", "") - local post = string.format(globals.strCmdMsgReadLiveLightPost, uidl, inboxid, internalState.strMT) + local post = string.format(globals.strCmdMsgReadLiveLightPost, uidl, inboxid, internalState.strMT) -- needs madsLight before inboxid post = string.gsub(post, '"', "%%22") + log.dbg("****" .. post .. "****") browser:post_uri(url, post) elseif internalState.bMarkMsgAsUnread == true and internalState.bLiveGUI == true then log.dbg("Message: " .. cbInfo.cb_uidl .. ", Marking message as unread.") @@ -1360,11 +1409,16 @@ local mbox = (freepops.MODULE_ARGS or {}).folder if mbox == nil then internalState.strMBoxName = "Inbox" - return POPSERVER_ERR_OK else mbox = curl.unescape(mbox) internalState.strMBoxName = mbox - log.say("Using Custom mailbox set to: " .. internalState.strMBoxName .. ".\n") + log.dbg("Using Custom mailbox set to: " .. internalState.strMBoxName .. ".\n") + end + + local mboxid = (freepops.MODULE_ARGS or {}).folderid or nil + if mboxid ~= nil then + internalState.strMBox = mboxid + log.dbg("Using Custom mailbox id set to: " .. internalState.strMBoxName .. ".\n") end return POPSERVER_ERR_OK @@ -1496,10 +1550,12 @@ local uidl, mad = string.match(internalState.msgIds[i], "(.-)&(.*)") if i > 1 then uidlsLight = uidlsLight .. ',"' .. uidl .. '"' - madsLight = madsLight .. ',{"' .. mad .. '",null}' + -- doglan @ 2009-10-10: ",null" no longer needed before "}" + madsLight = madsLight .. ',{"' .. mad .. '"}' else uidlsLight = '"' .. uidl .. '"' - madsLight = '{"' .. mad .. '",null}' + -- doglan @ 2009-10-10: ",null" no longer needed before "}" + madsLight = '{"' .. mad .. '"}' -- ,null end dcnt = dcnt + 1 elseif internalState.bLiveGUI == true and get_mailmessage_flag(pstate, i, MAILMESSAGE_DELETE) then @@ -1522,20 +1578,11 @@ end elseif dcnt > 0 and internalState.bLiveGUI and internalState.bLiveLightGUI == true then cmdUrl = string.format(globals.strCmdDeleteLiveLight, internalState.strMailServer, internalState.strCrumb, internalState.strUserId) - - -- This is the older interface's way to delete it. - -- local inboxid = string.gsub(internalState.strMBox, "&n=.*", "") - post = string.format(globals.strCmdDeletePostLiveLight, - inboxid, internalState.strTrashId, - uidlsLight, madsLight, - inboxid, internalState.strMT) - post = string.gsub(post, '"', "%%22") --- log.dbg("Sending Trash url: " .. cmdUrl .. " - " .. post) - local body, err = getPage(browser, cmdUrl, post, "Delete Messages - LiveLight") -- This is less than ideal and will need to be fixed soon. This is the newer way to delete. -- + madsLight = string.gsub(madsLight, "|", "%%5C%%7C") post = string.format(globals.strCmdDeletePostLiveLight2, inboxid, internalState.strTrashId, uidlsLight, madsLight, @@ -1543,7 +1590,7 @@ post = string.gsub(post, '"', "%%22") local body, err = getPage(browser, cmdUrl, post, "Delete Messages - LiveLight - Newer version") - elseif dcnt > 0 and internalState.bLiveGUI then + elseif dcnt > 0 and internalState.bLiveGUI then cmdUrl = string.format(globals.strCmdDeleteLive, internalState.strMailServer, internalState.strCrumb, internalState.strUserId) uidls = string.gsub(uidls, ",", '","') uidls = '"' .. uidls .. '"' @@ -1566,7 +1613,7 @@ log.dbg("Sending Empty Trash URL: " .. cmdUrl .."\n") local body, err = getPage(browser, cmdUrl, nil, "NonLive - Empty Trash") if not body or err then - log.error_print("Error when trying to empty the trash with url: ".. cmdUrl .."\n") + log.error_print("Error when trying to empty the trash with url: ".. cmdUrl .. "\n") end else log.error_print("Cannot empty trash - crumb not found\n") @@ -2356,3 +2403,4 @@ -- EOF -- ************************************************************************** -- + only in patch2: unchanged: --- freepops-0.2.9.orig/src/lua/fastmail.lua +++ freepops-0.2.9/src/lua/fastmail.lua @@ -7,7 +7,7 @@ -- Globals -- -PLUGIN_VERSION = "0.0.3c" +PLUGIN_VERSION = "0.1.20091013a" PLUGIN_NAME = "fastmail.com" PLUGIN_REQUIRE_VERSION = "0.2.0" PLUGIN_LICENSE = "GNU/GPL" @@ -36,29 +36,30 @@ "@veryfast.biz", "@veryspeedy.net", "@warpmail.net", "@xsmail.com", "@yepmail.net", "@your-mail.com", } PLUGIN_PARAMETERS = { - {name="folder", description={ - it=[[La cartella che vuoi ispezionare. Quella di default è Inbox, gli altri valori possibili sono: Junk, Trash, Draft, Sent.]], - en=[[The folder you want to interact with. Default is Inbox, other values are: Junk, Trash, Draft, Sent.]]} + {name = "view", description = { + it = [[ Viene usato per determinare la lista di messaggi da scaricare. I valori possibili sono All (tutti), Unread (non letti) e Flag.]], + en = [[ Parameter is used when getting the list of messages to +pull. It determines what messages to be pulled. Possible values are All, Unread and Flag.]] + } }, - {name = "emptytrash", description = { - it = [[ Viene usato per forzare il plugin a svuotare il cestino quando ha finito di scaricare i messaggi. Se il valore è 1 questo comportamento viene attivato.]], + {name = "keepmsgstatus", description = { en = [[ -Parameter is used to force the plugin to empty the trash when it is done -pulling messages. Set the value to 1.]] +Parameter is used to maintain the status of the message in the state it was before being pulling. If the value is 1, the behavior is turned on +and will override the markunread flag. ]] } }, - + {name = "domain", description = { + en = [[ +Parameter is used to override the domain in the email address. This is used so that users don't +need to add a mapping to config.lua for a hosted hotmail account. ]] + } + }, } PLUGIN_DESCRIPTIONS = { - it=[[ -Questo plugin vi permette di scaricare la posta da mailbox con dominio della famiglia di @fastmail.com. -Per usare questo plugin dovrete usare il vostro indirizzo email completo come -nome utente e la vostra vera password come password.]], en=[[ -This plugin lets you download mail from fastmail. -To use this plugin you have to use your full email address as the username -and your real password as the password. For support, please post a question to -the forum instead of emailing the author(s).]] +This is the webmail support for @fastmail.fm, @fmailbox.com and similar mailboxes. +To use this plugin you have to use your full email address as the user +name and your real password as the password.]] } -- ************************************************************************** -- @@ -66,66 +67,19 @@ -- ************************************************************************** -- local globals = { - -- Server URL - -- - strLoginUrl = "http://www.fmailbox.com/", - - -- Login strings - -- - strLoginPostData = "MLS=LN-*&FLN-UserName=%s&FLN-Password=%s&MSignal_LN-Authenticate*=Login&FLN-ScreenSize=-1", - strLoginFailed = "Login Failed - Invalid User name and/or password", - - -- Regular expression to extract the mail server - -- - strFormActionPat = 'here') - if (url ~= nil) then - body, err = browser:get_uri(url) + + local rc, str = sendCmd("login " .. username .. "@" .. domain .. " " .. password, nil) + if (rc ~= POPSERVER_ERR_OK or string.match(str, "OK User logged in") == nil) then + log.error_print("Login failed") + return POPSERVER_ERR_AUTH end - - -- Save the mail server, and some other things - -- - internalState.strMailServer = browser:wherearewe() - if (internalState.strMBox == globals.strInbox) then - internalState.strStatBodyCache = body + + rc, str = sendCmd("examine " .. internalState.strMBox, nil) + if (rc ~= POPSERVER_ERR_OK or string.match(str, "NO EXAMINE failure") ~= nil) then + log.error_print("Folder: " .. internalState.strMBox .. " is invalid.") + return POPSERVER_ERR_AUTH end - - -- Get the folder ID + + -- Return Success -- - local strPat = string.format(globals.strMBoxIDPat, internalState.strMBox) - str = string.match(body, strPat) - if str ~= nil then - internalState.strMBoxID = str - log.dbg("Fastmail - Mailbox (" .. internalState.strMBox .. ") ID: " .. str) - else - log.error_print("Can't figure out the mailbox id for: " .. internalState.strMBox) - log.raw("Can't figure out the mailbox id for: " .. internalState.strMBox .. ", body: " .. body) - return POPSERVER_ERR_UNKNOWN - end + return POPSERVER_ERR_OK +end - -- Get the Trash ID - -- - if internalState.bEmptyTrash then - strPat = string.format(globals.strMBoxIDPat, globals.strTrash) - str = string.match(body, strPat) - if str ~= nil then - internalState.strTrashID = str - log.dbg("Fastmail - Mailbox (" .. globals.strTrash .. ") ID: " .. str) - else - log.error_print("Can't figure out the mailbox id for: " .. globals.strTrash) - log.raw("Can't figure out the mailbox id for: " .. globals.strTrash .. ", body: " .. body) +function sendCmd(cmd, f) + internalState.cnt = internalState.cnt + 1 + cmd = internalState.cnt .. " " .. cmd + local rc + if internalState.socket ~= nil then + rc = internalState.socket:send(cmd) + else + tc = -1 + end + + if rc < 0 then + log.error_print("Short send of "..rc.. + " instead of "..string.len(cmd).."\n") + return POPSERVER_ERR_NETWORK + end + + local str = "" + local done = false + while (not done) do + local newstr = internalState.socket:recv() + if f then + f(newstr) + if (string.match(newstr, internalState.cnt .. " OK")) then + done = true + end + else + if (newstr == nil) then + str = "-ERR network error" + done = true + end + + if (done == false) then + if (string.match(newstr, internalState.cnt .. " OK") or + string.match(newstr, internalState.cnt .. " NO") or + string.match(newstr, internalState.cnt .. " BAD")) then + done = true + end + if (str ~= nil) then + str = str .. "\n" .. newstr + else + str = newstr + end + end end end - -- Get the session ID and the udm values - -- - local url = browser:whathaveweread() - str = string.match(url, globals.strUstPat) - if str ~= nil then - internalState.strUst = str - log.dbg("Fastmail - Ust value: " .. str) - else - log.error_print("Can't figure out the udm value") - log.raw("Can't figure out the udm value, body: " .. body) - return POPSERVER_ERR_UNKNOWN - end - - str = string.match(url, globals.strUdmPat) - if str ~= nil then - internalState.strUdm = str - log.dbg("Fastmail - Udm Value: " .. str) + if f then + return POPSERVER_ERR_OK, "" else - log.error_print("Can't figure out the udm value") - log.raw("Can't figure out the ust value, body: " .. body) - return POPSERVER_ERR_UNKNOWN + return POPSERVER_ERR_OK, str end - - -- DEBUG Message - -- - log.dbg("Fastmail - Server: " .. internalState.strMailServer .. "\n") - - -- Note that we have logged in successfully - -- - internalState.bLoginDone = true - - -- Debug info - -- - log.dbg("Created session for " .. - internalState.strUser .. "@" .. internalState.strDomain .. "\n") - - -- Return Success - -- - log.raw("Successful login") - return POPSERVER_ERR_OK end -- Download a single message @@ -369,15 +223,12 @@ -- Local Variables -- - local browser = internalState.browser local uidl = get_mailmessage_uidl(pstate, msg) - - local url = string.format(globals.strCmdMsgView, internalState.strMailServer, - uidl, uidl, internalState.strUst, uidl, internalState.strMBoxID, internalState.strUdm); + local msgid = internalState.msgids[uidl] -- Debug Message -- - log.dbg("Getting message: " .. uidl .. ", URL: " .. url) + log.dbg("Getting message: " .. uidl) -- Define a structure to pass between the callback calls -- @@ -393,63 +244,63 @@ -- Lines Received - Not really used for anything -- nLinesReceived = 0, + + -- data + -- + dataptr = data, + + -- uidl + -- + uidlptr = uidl } - -- Define the callback - -- - local cb = downloadMsg_cb(cbInfo, data) - - -- Start the download on the body - -- - local f, _ = browser:pipe_uri(url, cb) - if not f then - -- An empty message. Throw an error - -- - return POPSERVER_ERR_NETWORK + internalState.cbInfo = cbInfo + + local f = function(line) + if (string.match(line, "OK FETCH completed") or string.match(line, "^%)$") + or string.match(line, " FETCH %(")) then + return POPSERVER_ERR_OK + end + + local cbInfo = internalState.cbInfo + if (line == "") then + line = "X-FREEPOPS-UIDL: " .. cbInfo.uidlptr .. "\r\n" + end + line = cbInfo.strHack:dothack(line) .. "\r\n\0" + popserver_callback(line, cbInfo.dataptr) + return POPSERVER_ERR_OK end - + local cmd = " BODY[HEADER]" + if (internalState.bKeepMsgStatus) then + cmd = " BODY.PEEK[HEADER]" + end + local rc, _ = sendCmd("fetch " .. msgid .. cmd, f) + + local f = function(line) + if (string.match(line, "OK FETCH completed") or string.match(line, "^%)$") + or string.match(line, " FETCH %(")) then + return POPSERVER_ERR_OK + end + + local cbInfo = internalState.cbInfo + cbInfo.nLinesReceived = cbInfo.nLinesReceived + 1 + line = cbInfo.strHack:dothack(line) .. "\r\n\0" + if (cbInfo.nLinesReceived <= cbInfo.nLinesRequested or cbInfo.nLinesRequested < 0) then + popserver_callback(line, cbInfo.dataptr) + end + return POPSERVER_ERR_OK + end + cmd = " BODY[TEXT]" + if (internalState.bKeepMsgStatus) then + cmd = " BODY.PEEK[TEXT]" + end + if (nLines ~= 0) then + local rc, _ = sendCmd("fetch " .. msgid .. cmd, f) + end + + internalState.cbInfo = nil return POPSERVER_ERR_OK -end - --- Callback for the retr function --- -function downloadMsg_cb(cbInfo, data) - - return function(body, len) - -- Are we done with Top and should just ignore the chunks - -- - if (cbInfo.nLinesRequested ~= -2 and cbInfo.nLinesReceived == -1) then - return 0, nil - end - - -- Perform our "TOP" actions - -- - if (cbInfo.nLinesRequested ~= -2) then - body = cbInfo.strHack:tophack(body, cbInfo.nLinesRequested) - - -- Check to see if we are done and if so, update things - -- - if cbInfo.strHack:check_stop(cbInfo.nLinesRequested) then - cbInfo.nLinesReceived = -1; - if (string.sub(body, -2, -1) ~= "\r\n") then - body = body .. "\r\n" - end - else - cbInfo.nLinesReceived = cbInfo.nLinesRequested - - cbInfo.strHack:current_lines() - end - end - - -- End the strings properly - -- - body = cbInfo.strHack:dothack(body) .. "\0" - -- Send the data up the stream - -- - popserver_callback(body, data) - - return len, nil - end end -- ************************************************************************** -- @@ -464,48 +315,48 @@ local domain = freepops.get_domain(username) local user = freepops.get_name(username) - internalState.strDomain = domain internalState.strUser = user - -- If the flag emptyTrash is set to 1 , - -- the trash will be emptied on 'quit' + -- Override the domain variable if it is set in the login parameter -- - local val = (freepops.MODULE_ARGS or {}).emptytrash or 0 - if val == "1" then - log.dbg("Fastmail: Trash folder will be emptied on exit.") - internalState.bEmptyTrash = true + local val = (freepops.MODULE_ARGS or {}).domain or nil + if val ~= nil then + log.dbg("Fastmail: Using overridden domain: " .. val) + internalState.strDomain = val + else + internalState.strDomain = domain end -- Get the folder -- - local mbox = (freepops.MODULE_ARGS or {}).folder - if mbox == nil then - internalState.strMBox = globals.strInbox - return POPSERVER_ERR_OK - end + local mbox = (freepops.MODULE_ARGS or {}).folder or globals.strInbox + mbox = string.gsub(mbox, " ", "+") + internalState.strMBox = "INBOX." .. mbox - local start = string.match(mbox, globals.strSentPat) - if start ~= nil then - internalState.strMBox = globals.strSent - return POPSERVER_ERR_OK - end - - start = string.match(mbox, globals.strTrashPat) - if start ~= nil then - internalState.strMBox = globals.strTrash - return POPSERVER_ERR_OK + -- Get the view to use in STAT (ALL, UNREAD or FLAG) + -- + local strView = (freepops.MODULE_ARGS or {}).view or "All" + local str = string.match(strView, globals.strViewAllPat) + if str ~= nil then + internalState.strView = globals.strViewAll + else + str = string.match(strView, globals.strViewUnreadPat) + if str ~= nil then + internalState.strView = globals.strViewUnread + else + internalState.strView = globals.strViewFlagged + end end - - start = string.match(mbox, globals.strDraftPat) - if start ~= nil then - internalState.strMBox = globals.strDraft - return POPSERVER_ERR_OK + + -- If the flag keepmsgstatus=1 is set, then we won't touch the status of + -- messages that we pull. + -- + val = (freepops.MODULE_ARGS or {}).keepmsgstatus or 0 + if val == "1" then + log.dbg("Fastmail: All messages pulled will have its status left alone.") + internalState.bKeepMsgStatus = true end - -- Defaulting to the inbox - -- - log.say("Fastmail: Custom folder selected: " .. mbox .. ".\n") - internalState.strMBox = mbox return POPSERVER_ERR_OK end @@ -515,56 +366,12 @@ -- Store the password -- internalState.strPassword = password - - -- Get a session - -- - local sessID = session.load_lock(hash()) - - -- See if we already have a session. We want to prevent - -- multiple sessions for a given account - -- - if sessID ~= nil then - -- Session exists - -- This code is copied from example. It doesn't make sense to me. - -- - - -- Check to see if it is locked - -- Why "\a"? - -- - if sessID == "\a" then - log.dbg("Error: Session locked - Account: " .. internalState.strUser .. - "@" .. internalState.strDomain .. "\n") - return POPSERVER_ERR_LOCKED - end - - -- Load the session which looks to be a function pointer - -- - local func, err = loadstring(sessID) - if not func then - log.error_print("Unable to load saved session (Account: " .. - internalState.strUser .. "@" .. internalState.strDomain .. "): ".. err) - return login() - end - - log.dbg("Session loaded - Account: " .. internalState.strUser .. - "@" .. internalState.strDomain .. "\n") - - -- Execute the function saved in the session - -- - func() - - return POPSERVER_ERR_OK - else - -- Create a new session by logging in - -- - return login() - end + return login() end -- Quit abruptly -- function quit(pstate) - session.unlock(hash()) return POPSERVER_ERR_OK end @@ -580,72 +387,34 @@ -- Local Variables -- - local browser = internalState.browser - local cmdUrl = string.format(globals.strCmdDelete, internalState.strMailServer, internalState.strUst, - internalState.strUdm) local cnt = get_popstate_nummesg(pstate) - local dcnt = 0 - local postBase = string.format(globals.strCmdDeletePost, internalState.strMBoxID, internalState.strMBoxID) - local post = postBase -- Cycle through the messages and see if we need to delete any of them -- for i = 1, cnt do if get_mailmessage_flag(pstate, i, MAILMESSAGE_DELETE) then - post = post .. "&" .. "FMB-MF-R-" .. get_mailmessage_uidl(pstate, i) .. "-Sel=on" - dcnt = dcnt + 1 - - -- Send out in a batch of 5 - -- - if math.fmod(dcnt, 5) == 0 then - log.dbg("Sending Delete URL: " .. cmdUrl .. "Post Data: " .. post .. "\n") - local body, err = browser:post_uri(cmdUrl, post) - if not body or err then - log.error_print("Unable to delete messages.\n") - end - - -- Reset the variables - -- - dcnt = 0 - post = postBase - end - end - end - - -- Send whatever is left over - -- - if dcnt > 0 and dcnt < 5 then - log.dbg("Sending Delete URL: " .. cmdUrl .. "Post Data: " .. post .. "\n") - local body, err = browser:post_uri(cmdUrl, post) - if not body or err then - log.error_print("Unable to delete messages.\n") - end - end - - -- Empty the trash - -- - if internalState.bEmptyTrash then - if internalState.strCrumb ~= '' then - cmdUrl = string.format(globals.strCmdEmptyTrash, internalState.strMailServer, internalState.strUst, - internalState.strMBoxID, internalState.strUdm, internalState.strTrashID) - log.dbg("Sending Empty Trash URL: " .. cmdUrl .."\n") - local body, err = browser:get_uri(cmdUrl) - if not body or err then - log.error_print("Error when trying to empty the trash with url: ".. cmdUrl .."\n") - end - else - log.error_print("Cannot empty trash - crumb not found\n") + local uidl = get_mailmessage_uidl(pstate, i) + local msgid = internalState.msgids[uidl] + -- Copy the message to the trash + -- + local rc, str = sendCmd("copy " .. msgid .. " " .. globals.strTrash, nil) + + if (string.match(str, "OK ")) then + -- Mark it as deleted + -- + local rc, str = sendCmd("store " .. msgid .. [[ +FLAGS \Deleted ]], nil) + log.dbg("Marking message: " .. uidl .. " as deleted") + else + log.error_print("Delete operation failed. Unknown trash folder name.") + return POPSERVER_ERR_UNKNOWN + end end end - -- Save and then Free up the session + -- Logout -- - session.save(hash(), serialize_state(), session.OVERWRITE) - session.unlock(hash()) - - log.dbg("Session saved - Account: " .. internalState.strUser .. - "@" .. internalState.strDomain .. "\n") - + local rc, str = sendCmd("logout", nil) + return POPSERVER_ERR_OK end @@ -658,197 +427,51 @@ if internalState.bStatDone then return POPSERVER_ERR_OK end - - -- Local variables - -- - local browser = internalState.browser - local nPage = 1 - local nMsgs = 0 - local nTotMsgs = 0; - local firstUrl = string.format(globals.strCmdMsgList, internalState.strMailServer, - internalState.strUst, internalState.strMBoxID, internalState.strUdm, internalState.strMBoxID); - local cmdUrl = firstUrl - local nextUrl = string.format(globals.strCmdMsgListNextPage, internalState.strMailServer, - internalState.strUst, internalState.strMBoxID, internalState.strUdm, internalState.strMBoxID); - - -- Debug Message + internalState.bStatDone = true + + -- Initialize the state -- - log.dbg("Stat URL: " .. cmdUrl .. "\n"); - - -- Initialize our state - -- - set_popstate_nummesg(pstate, nMsgs) - - -- Local function to process the list of messages, getting id's and sizes - -- - local function funcProcess(body) - -- Find out if there are any messages - -- - local nomesg = string.match(body, globals.strMsgListNoMsgPat) - if (nomesg ~= nil) then - return true, nil - end + set_popstate_nummesg(pstate, 0) - -- Tokenize out the message ID and size for each item in the list - -- - local items = mlex.match(body, globals.strMsgLineLitPattern, globals.strMsgLineAbsPattern) - log.dbg("Stat Count: " .. items:count()) - - -- Remember the count - -- - local cnt = items:count() - if cnt == 0 then - return true, nil - end - - -- Cycle through the items and store the msg id and size - -- - for i = 1, cnt do - local size = items:get(0, i - 1) - local uidl = items:get(1, i - 1) - - if not uidl or not size then - log.say("Fastmail Module needs to fix it's individual message list pattern matching.\n") - return nil, "Unable to parse the size and uidl from the html" - end - - -- Get the message id. It's in the format of "MSG[numbers].[number(s)]". - -- - uidl = string.match(uidl, 'MSignal=MR%-%*%*([^"]+)"') - - -- Convert the size from it's string (4KB or 2MB) to bytes - -- First figure out the unit (KB or just B) - -- - local kbUnit = string.match(size, "([Kk])") - size = string.match(size, "([%d]+)[KkMm]") - if not kbUnit then - size = math.max(tonumber(size), 0) * 1024 * 1024 - else - size = math.max(tonumber(size), 0) * 1024 - end - - -- Save the information - -- - nMsgs = nMsgs + 1 - log.dbg("Processed STAT - Msg: " .. nMsgs .. ", UIDL: " .. uidl .. ", Size: " .. size) - set_popstate_nummesg(pstate, nMsgs) - set_mailmessage_size(pstate, nMsgs, size) - set_mailmessage_uidl(pstate, nMsgs, uidl) - end - - -- We are done with this page, increment the counter - -- - nPage = nPage + 1 - - return true, nil - end - - -- Local Function to check for more pages of messages. If found, the - -- change the command url + -- Select the folder -- - local function funcCheckForMorePages(body) - -- See if there are messages remaining - -- - if nMsgs < nTotMsgs then - cmdUrl = firstUrl - if (nPage > 1) then - cmdUrl = nextUrl .. (nPage - 1) - end - return false - end - return true + local rc, str = sendCmd("select " .. internalState.strMBox, nil) + if (rc ~= POPSERVER_ERR_OK) then + log.error_print("Error Received selecting folder: " .. str .. "\n") + return POPSERVER_ERR_NETWORK end - -- Local Function to get the list of messages - -- - local function funcGetPage() - -- Debug Message - -- - log.dbg("Debug - Getting page: ".. cmdUrl) - - -- Get the page and check to see if we got results - -- - local body, err - if (internalState.strStatBodyCache ~= nil and internalState.strMBox == globals.strInbox) then - body = internalState.strStatBodyCache - internalState.strStatBodyCache = nil - else - body, err = browser:get_uri(cmdUrl) - if body == nil then - return body, err - end + local f = function(l) + internalState.nTotMsgs = internalState.nTotMsgs + 1 + if (string.match(l, "\Deleted")) then + log.dbg("Found a deleted message. Ignoring!") + return POPSERVER_ERR_OK + end + if (internalState.strView == globals.strViewUnread and + string.match(l, globals.strViewUnread) ~= nil) then + return POPSERVER_ERR_OK end - - -- Is the session expired - -- - local strSessExpr = string.match(body, globals.strRetLoginSessionExpired) - if strSessExpr == nil then - -- Invalidate the session - -- - internalState.bLoginDone = nil - session.remove(hash()) - log.raw("Session Expired - Last page loaded: " .. cmdUrl .. ", Body: " .. body) - - -- Try Logging back in - -- - local status = login() - if status ~= POPSERVER_ERR_OK then - return nil, "Session expired. Unable to recover" - end - - -- Reset the local variables - -- - browser = internalState.browser - cmdUrl = firstUrl - if nPage > 1 then - cmdUrl = nextUrl .. (nPage - 1) - end - - -- Retry to load the page - -- - browser:get_uri(cmdUrl) + if (internalState.strView == globals.strViewFlagged and + string.match(l, globals.strViewFlagged) == nil) then + return POPSERVER_ERR_OK end - - -- Get the total number of messages - -- - if nTotMsgs == 0 then - local strTotMsgs = string.match(body, globals.strMsgListCntPattern) - if strTotMsgs == nil then - nTotMsgs = 0 - else - nTotMsgs = tonumber(strTotMsgs) - end - log.dbg("Total messages in message list: " .. nTotMsgs) - end - - return body, err - end - - - -- Run through the pages and pull out all the message pieces from - -- all the message lists - -- - if not support.do_until(funcGetPage, funcCheckForMorePages, funcProcess) then - log.error_print("STAT Failed.\n") - session.remove(hash()) - log.raw("Session removed (STAT Failure) - Account: " .. internalState.strUser .. - "@" .. internalState.strDomain) - return POPSERVER_ERR_NETWORK - end - - -- Update our state - -- - internalState.bStatDone = true - -- Check to see that we completed successfully. If not, return a network - -- error. This is the safest way to let the email client now that there is - -- a problem but that it shouldn't drop the list of known uidls. - if (nMsgs < nTotMsgs) then - return POPSERVER_ERR_NETWORK + local nMsgs = internalState.nMsgs + local size, uidl = string.match(l, "UID (%d+) RFC822.SIZE (%d+)") + if (size ~= nil and uidl ~= nil) then + nMsgs = nMsgs + 1 + log.dbg("Processed STAT - Msg: " .. nMsgs .. ", UIDL: " .. uidl .. ", Size: " .. size) + set_popstate_nummesg(pstate, nMsgs) + set_mailmessage_size(pstate, nMsgs, size) + set_mailmessage_uidl(pstate, nMsgs, tostring(uidl)) + internalState.msgids[uidl] = internalState.nTotMsgs + end + internalState.nMsgs = nMsgs + return POPSERVER_ERR_OK end - - -- Return that we succeeded - -- + + local rc, _ = sendCmd("fetch 1:* (flags uid RFC822.SIZE)", f) + return POPSERVER_ERR_OK end @@ -921,14 +544,6 @@ -- Load dependencies -- - - -- Serialization - -- - require("serial") - - -- Browser - -- - require("browser") -- MIME Parser/Generator -- @@ -937,7 +552,11 @@ -- Common module -- require("common") - + + -- Common module + -- + require("psock") + -- Run a sanity check -- freepops.set_sanity_checks() only in patch2: unchanged: --- freepops-0.2.9.orig/src/lua/yahoo.lua +++ freepops-0.2.9/src/lua/yahoo.lua @@ -1,30 +1,21 @@ -- ************************************************************************** -- --- FreePOPs @yahoo.com webmail interface +-- FreePOPs @yahoo webmail interface -- -- Released under the GNU/GPL license -- Written by Russell Schwager --- yahoo.it added by Nicola Cocchiaro --- yahoo.ie added by Bruce Williamson --- Contributions by Przemyslaw Wroblewski --- Contributions from Kevin Edwards -- ************************************************************************** -- -PLUGIN_VERSION = "0.2.20081116" -PLUGIN_NAME = "yahoo.com" -PLUGIN_REQUIRE_VERSION = "0.2.8" +-- Globals +-- +PLUGIN_VERSION = "0.3.20091127" +PLUGIN_NAME = "yahoo.lua" +PLUGIN_REQUIRE_VERSION = "0.2.0" PLUGIN_LICENSE = "GNU/GPL" -PLUGIN_URL = "http://www.freepops.org/download.php?module=yahoo.lua" -PLUGIN_HOMEPAGE = "http://www.freepops.org/" -PLUGIN_AUTHORS_NAMES = {"Russell Schwager","Nicola Cocchiaro"} -PLUGIN_AUTHORS_CONTACTS = - {"russell822 (at) yahoo (.) com", - "ncocchiaro (at) users (.) sourceforge (.) net"} -PLUGIN_DOMAINS = {"@yahoo.com", "@yahoo.ie", "@yahoo.it", "@yahoo.ca", "@rocketmail.com", "@yahoo.com.ar", - "@yahoo.co.in", "@yahoo.co.id", "@yahoo.com.tw", "@yahoo.co.uk", "@yahoo.com.cn", - "@yahoo.es", "@yahoo.de", "@talk21.com", "@btinternet.com", "@yahoo.com.au", "@yahoo.co.nz", - "@ymail.com", "@yahoo.in" -} - +PLUGIN_URL = "http://freepops.sourceforge.net/download.php?contrib=yahoo.lua" +PLUGIN_HOMEPAGE = "http://freepops.sourceforge.net/" +PLUGIN_AUTHORS_NAMES = {"Russell Schwager"} +PLUGIN_AUTHORS_CONTACTS = {"russell822 (at) yahoo (.) com"} +PLUGIN_DOMAINS = {"@yahoo.com"} PLUGIN_PARAMETERS = { {name = "folder", description = { it = [[ @@ -52,18 +43,6 @@ pull. It determines what messages to be pulled. Possible values are All, Unread and Flag.]] } }, - {name = "markunread", description = { - it = [[ Viene usato per far sì che il plugin segni come non letti i messaggi che scarica. Se il valore è 1 questo comportamento viene attivato.]], - en = [[ Parameter is used to have the plugin mark all messages that it -pulls as unread. If the value is 1, the behavior is turned on.]] - } - }, - {name = "nossl", description = { - it = [[ Viene usato per forzare il modulo a fare login con HTTP semplice e non HTTPS con SSL. Se il valore è 1 questo comportamento viene attivato.]], - en = [[ Parameter is used to force the module to login through plain -HTTP and not HTTPS with SSL. If the value is 1, the SSL is not used.]] - } - }, {name = "emptytrash", description = { it = [[ Viene usato per forzare il plugin a svuotare il cestino quando ha finito di scaricare i messaggi. Se il valore è 1 questo comportamento viene attivato.]], en = [[ @@ -78,31 +57,19 @@ pulling messages. Set the value to 1.]] } }, - {name = "maxmsgs", description = { - en = [[ -Parameter is used to force the plugin to only download a maximum number of messages. ]] - } - }, {name = "keepmsgstatus", description = { en = [[ Parameter is used to maintain the status of the message in the state it was before being pulling. If the value is 1, the behavior is turned on and will override the markunread flag. ]] } }, - {name = "useeventlib", description = { - en = [[ -Parameter is used to turn on windows event library logging. If the value is 1, -the behavior is turned on. ]] - } - }, {name = "domain", description = { en = [[ Parameter is used to override the domain in the email address. This is used so that users don't need to add a mapping to config.lua for a hosted hotmail account. ]] - } - }, + } + }, } - PLUGIN_DESCRIPTIONS = { it=[[ Questo plugin vi per mette di leggere le mail che avete in una @@ -120,179 +87,19 @@ -- ************************************************************************** -- local globals = { - -- Login strings - -- - strMailPage = "http://mail.yahoo.com", - strLoginPage = "http://login.yahoo.com", - strLoginHTTP = "http://login.yahoo.com/config/login", - strLoginHTTPs = "https://login.yahoo.com/config/login", - strLoginPostData = ".tries=1&.src=ym&.intl=%s&login=%s&passwd=%s&.persistent=y&.v=0&.chkP=Y&.u=%s", - strLoginPostDataMD5 = ".tries=1&.src=ym&.intl=%s&login=%s&passwd=%s&.hash=1".. - "&.md5=1&.js=1&.challenge=%s&.persistent=y&.v=0&.chkP=Y&.u=%s", - strLoginFailed = "Login Failed - Invalid User name and password", - strLoginChallenge = 'name="%.challenge" value="([^"]-)"', - strLoginU = 'name="%.u" value="([^"]-)"', - - -- Expressions to pull out of returned HTML from Yahoo corresponding to a problem - -- - strRetLoginBadPassword = "(login_form)", - strRetLoginSessionExpired = "(error code: Login)", - - -- Regular expression to extract the mail server - -- - - -- Get the mail server for Yahoo - -- - strRegExpMailServer = '(http://[^/]+/)([my][mc])/', - - -- Redirect site on login - -- - strRegExpMetarefresh = 'window.location.replace%("([^"]*)"', - - -- Get the html corresponding only to the message list - -- - strMsgListHTMLPattern = '(.*).*
', - - -- Get the crumb value that is needed for deleting messages and emptying the trash - -- - strRegExpCrumb = '', - - -- Delete Form hidden items - -- - strHiddenItems = '', - strDeletePostPat = '', - - -- Mark unread url - -- - strMsgMarkUnreadPat = '
', - - -- Pattern to determine if we have no messages. If this is found, we have messages. - -- - strMsgListNoMsgPat = "()", - - -- Pattern to determine if we have no messages with 'mc'. If found, there is no messages. - -- - strMsgListNoMsgPatMC = '(modulecontainer filled nomessages)', - - -- Used by Stat to pull out the message ID and the size - -- - strMsgLineLitPattern = ".*[.*]{div}[.*]{h2}.*.*[.*]{/h2}[.*]{/div}.*.*.*.*.*.*", - strMsgLineAbsPattern = "O[O]{O}[O]{O}OO[O]{O}[O]{O}OOOOXO", - - strMCUnreadPattern = '[^<]+]+>= 0) then -- and getmetatable(val) == nil then - local tmp = {} - table.foreach( t, - function (k,v) - table.insert(tmp, tostr(k, depth-1) .. "=" .. repr(v, depth-1)) - end - ) - result = "{" .. table.concat(tmp,", ") .. "}" - else - result = tostring(t) - end - return result -end - --- Create a literal string representation of the given object -local repr_map = { - ["table"] = table_to_string - ,["string"] = quote_string - ,["nil"] = get_nil_string - ,["number"] = tostring - ,["boolean"] = tostring - ,["default"] = tostring -} - -local repr_max_depth=2 -function repr( val, depth ) - local val_type = type(val) - local func - depth = depth or repr_max_depth - func = repr_map[val_type] or repr_map["default"] - return func(val, depth) -end - --- Convert any object to a string --- Unlike repr, tostr is idempotent and does not add double quotes to a string. -function tostr( val ) - if type(val) == "string" then - return val - end - return repr(val) -end - - - --- ************************************************************************** -- --- CRLF string functions --- ************************************************************************** -- - --- Returns "data" with "{LF}" prefixing all \n and "{CR}" prefixing all \r, --- so hex viewing for those bytes isn't necessary. --- -function showCRLF( data ) - local str = data - if str then - str = string.gsub(str, "\n", "{LF}\n") - str = string.gsub(str, "\r", "{CR}\r") - end - return str -end - --- Returns a new string with all single \r and \n replaced by \r\n -function fixCRLF( str ) - if str then - -- temporarily convert proper ending to \n - str = string.gsub(str, "\r\n", "\n") - str = string.gsub(str, "\r", "\n") -- should we worry about embedded \r? - str = string.gsub(str, "\n", "\r\n") - - -- this alternative is actually a bit slower: --- str = string.gsub(str, "([^\r]-)\n", "%1\r\n") - end - return str -end - - - --- ************************************************************************** -- --- smartlog functions --- ************************************************************************** -- - --- ************************************************************************** -- --- Helper functions --- ************************************************************************** -- - --- Serialize the state --- --- serial. serialize is not enough powerfull to correcly serialize the --- internal state. the problem is the field b. b is an object. this means --- that is a table (and no problem for this) that has some field that are --- pointers to functions. this is the problem. there is no easy way for the --- serial module to know how to serialize this. so we call b:serialize --- method by hand hacking a bit on names --- -function serialize_state() - internalState.bStatDone = false; - if (internalState.bUseWel) then - return serial.serialize("internalState", internalState) .. - internalState.browser:serialize("internalState.browser") .. - internalState.logger:serialize("internalState.logger") - end - return serial.serialize("internalState", internalState) .. - internalState.browser:serialize("internalState.browser") -end - --- Computes the hash of our state. Concate the user, domain, mailbox and password --- -function hash() - return (internalState.strUser or "") .. "~" .. - (internalState.strDomain or "") .. "~" .. - (internalState.strMBox or "") .. "~" .. - (internalState.strView or "") .. "~" .. - internalState.strPassword -- this asserts strPassword ~= nil -end - --- Check to see if the GUI is the new one --- -function checkForNewGUI(browser, body) - local server = string.match(browser:whathaveweread(), globals.strRegExpMailServerNew) - if (server ~= nil) then - log.dbg("Detected New Version of the Yahoo interface!", browser:whathaveweread()) - log.dbg("Yahoo Mail Server: " .. server) - - internalState.strMailServer = server - internalState.bNewGUI = true - return true - end - - return false -end - --- Issue the command to login to Yahoo --- -function loginYahoo() - -- Check to see if we've already logged in - -- - - log.dbg( "Entering loginYahoo()" ) - - if internalState.loginDone then - log.dbg( "internalState.loginDone" ) - return POPSERVER_ERR_OK - end - - -- Create a browser to do the dirty work (It must be set to IE 6.0) - -- - internalState.browser = browser.new("Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_2; en) AppleWebKit/525.9 (KHTML, like Gecko) Version/3.1 Safari/525.9") - --browser.new("Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; {02ABE9F9-C33D-95EA-0C84-0B70CD0AC3F8}; .NET CLR 1.1.4322)") --- internalState.browser = browser.new("Mozilla/4.0 (compatible; U; en)") --- internalState.browser = browser.new("Mozilla/3.0 (U; en)") --- internalState.browser = browser.new("FreePOPs/2.5 (U; en)") - local SSLEnabled = browser.ssl_enabled() - - -- Create the windows event logger - if (internalState.bUseWel) then - -- Windows event smartlog - -- - require("wel") - internalState.logger = wel.new('FreePOPs','yahoo') - end - - -- Define some local variables - -- - local username = internalState.strUser - local password = internalState.strPassword - local domain = internalState.strDomain - local intFlag = internalState.strIntFlag - local url = globals.strLoginHTTP - local browser = internalState.browser - local post - local challengeCode, uVal - - -- Add the domain always - -- - username = username .. "@" .. domain - - if internalState.bNoSSL == true then - log.dbg("Yahoo: SSL login will not be used.") - SSLEnabled = false - end - - if SSLEnabled then - url = globals.strLoginHTTPs - browser:ssl_init_stuff() - end - - -- Login to Yahoo - -- - log.dbg( "login get: " .. globals.strLoginPage ) - local body, err = browser:get_uri(globals.strLoginPage) - log.dbg( "login response: err=" .. tostr(err), smartlog.dbg_limit(body) ) - - if body ~= nil then - challengeCode = string.match(body, globals.strLoginChallenge) - uVal = string.match(body, globals.strLoginU) - end - - if (uVal == nil) then - uVal = "" - end - - if challengeCode ~= nil then - password = crypto.bin2hex(crypto.md5(password)) - password = crypto.bin2hex(crypto.md5(password .. challengeCode)) - post = string.format(globals.strLoginPostDataMD5, intFlag, username, - password, challengeCode, uVal) - else -- if we didn't get the challenge code, then login in cleartext - post = string.format(globals.strLoginPostData, intFlag, username, password, uVal) - end - - log.dbg( "login challenge post: \nurl=" .. url .. " \npost=" .. post ) - body, err = browser:post_uri(url, post) - log.dbg( "login challenge response: err=" .. tostr(err), smartlog.dbg_limit(body) ) - - -- Check for redirect - -- - local str = string.match(body, globals.strRedirectNew) - if (str ~= nil) then - log.dbg( "login redirect get: " .. str ) - body, err = browser:get_uri(str) - log.dbg( "login redirect response: err=" .. tostr(err), smartlog.dbg_limit(body) ) - end - - -- Check for interstitial page (advertisements) - -- - url = browser:whathaveweread() - log.dbg("browser:whathaveweread()=" .. url) - str = string.match( url, '(http://.-interstitial.-/)[^/]*' ) - if (str ~= nil) then - local str2 = string.match(body, '