mirror of
https://github.com/anope/anope.git
synced 2026-07-05 17:03:12 +02:00
Rewrote the mail system to use threading
This commit is contained in:
@@ -8,12 +8,31 @@ Anope Version 1.9.3
|
||||
NICK_UNGROUP_SUCCESSFUL
|
||||
NICK_UNGROUP_SUCCESSFUL
|
||||
NICK_HELP_CMD_UNGROUP
|
||||
NICK_REG_MAIL
|
||||
NICK_MAIL_TEXT
|
||||
NICK_SENDPASS
|
||||
|
||||
*** Mod Strings:
|
||||
NICK_GLIST_REPLY
|
||||
NICK_RESETPASS_MESSAGE
|
||||
|
||||
*** Del Strings:
|
||||
NICK_GLIST_REPLY_ADMIN
|
||||
NICK_REG_MAIL_HEAD
|
||||
NICK_REG_MAIL_LINE_1
|
||||
NICK_REG_MAIL_LINE_2
|
||||
NICK_REG_MAIL_LINE_3
|
||||
NICK_REG_MAIL_LINE_4
|
||||
NICK_REG_MAIL_LINE_5
|
||||
MEMO_MAIL_TEXT1
|
||||
MEMO_MAIL_TEXT2
|
||||
MEMO_MAIL_TEXT3
|
||||
NICK_SENDPASS_HEAD
|
||||
NICK_SENDPASS_HEAD_1
|
||||
NICK_SENDPASS_HEAD_2
|
||||
NICK_SENDPASS_HEAD_3
|
||||
NICK_SENDPASS_HEAD_4
|
||||
NICK_SENDPASS_HEAD_5
|
||||
|
||||
Anope Version 1.9.2
|
||||
--------------------
|
||||
|
||||
@@ -211,15 +211,6 @@ E void log_perror(const char *fmt, ...) FORMAT(printf,1,2);
|
||||
E void fatal(const char *fmt, ...) FORMAT(printf,1,2);
|
||||
E void fatal_perror(const char *fmt, ...) FORMAT(printf,1,2);
|
||||
|
||||
/**** mail.c ****/
|
||||
|
||||
E MailInfo *MailBegin(User *u, NickCore *nc, char *subject, char *service);
|
||||
E MailInfo *MailRegBegin(User *u, NickRequest *nr, char *subject, char *service);
|
||||
E MailInfo *MailMemoBegin(NickCore * nc);
|
||||
E void MailEnd(MailInfo *mail);
|
||||
E void MailReset(User *u, NickCore *nc);
|
||||
E int MailValidate(const char *email);
|
||||
|
||||
/**** main.c ****/
|
||||
|
||||
E const char version_number[];
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
|
||||
extern CoreExport bool Mail(User *u, NickRequest *nr, const std::string &service, const std::string &subject, const std::string &message);
|
||||
extern CoreExport bool Mail(User *u, NickCore *nc, const std::string &service, const std::string &subject, const std::string &message);
|
||||
extern CoreExport bool Mail(NickCore *nc, const std::string &subject, const std::string &message);
|
||||
extern CoreExport bool MailValidate(const std::string &email);
|
||||
|
||||
class MailThread : public Thread
|
||||
{
|
||||
private:
|
||||
const std::string MailTo;
|
||||
const std::string Addr;
|
||||
const std::string Subject;
|
||||
const std::string Message;
|
||||
|
||||
bool Success;
|
||||
public:
|
||||
MailThread(const std::string &mailto, const std::string &addr, const std::string &subject, const std::string &message) : Thread(), MailTo(mailto), Addr(addr), Subject(subject), Message(message), Success(false)
|
||||
{
|
||||
}
|
||||
|
||||
~MailThread();
|
||||
|
||||
void Run();
|
||||
};
|
||||
@@ -901,6 +901,7 @@ struct Uplink;
|
||||
class ServerConfig;
|
||||
|
||||
#include "extern.h"
|
||||
#include "mail.h"
|
||||
#include "servers.h"
|
||||
#include "config.h"
|
||||
|
||||
|
||||
@@ -36,10 +36,7 @@ class Thread : public Extensible
|
||||
private:
|
||||
/* Set to true to tell the thread to finish and we are waiting for it */
|
||||
bool Exit;
|
||||
|
||||
/** Join to the thread, sets the exit state to true
|
||||
*/
|
||||
void Join();
|
||||
|
||||
public:
|
||||
/* Handle for this thread */
|
||||
ThreadHandle Handle;
|
||||
@@ -52,6 +49,10 @@ class Thread : public Extensible
|
||||
*/
|
||||
virtual ~Thread();
|
||||
|
||||
/** Join to the thread, sets the exit state to true
|
||||
*/
|
||||
void Join();
|
||||
|
||||
/** Sets the exit state as true informing the thread we want it to shut down
|
||||
*/
|
||||
void SetExitState();
|
||||
|
||||
+22
-27
@@ -866,18 +866,15 @@ NICK_SENDPASS_UNAVAILABLE
|
||||
La comanda SENDPASS no esta disponible per l'us d'encriptació.
|
||||
NICK_SENDPASS_SUBJECT
|
||||
Clau pel Nickname (%s)
|
||||
NICK_SENDPASS_HEAD
|
||||
Hola,
|
||||
NICK_SENDPASS_LINE_1
|
||||
El teu has demanat rebre la clau pel nickname %s via e-mail.
|
||||
NICK_SENDPASS_LINE_2
|
||||
La clau es %s Per raons de seguretat hauries de canviar-la quant rebis aquest mail.
|
||||
NICK_SENDPASS_LINE_3
|
||||
Si no saps per que aquest mail t'ha estat enviat, per favor ignora'l.
|
||||
NICK_SENDPASS_LINE_4
|
||||
Per favor NO RESPONGUIS a aquest EMAIL!
|
||||
NICK_SENDPASS_LINE_5
|
||||
Administradors de %s.
|
||||
NICK_SENDPASS
|
||||
Hi,
|
||||
|
||||
You have requested to receive the password of nickname %s by e-mail.
|
||||
The password is %s. For security purposes, you should change it as soon as you receive this mail.
|
||||
|
||||
If you don't know why this mail was sent to you, please ignore it silently.
|
||||
|
||||
%s administrators.
|
||||
NICK_SENDPASS_OK
|
||||
La clau de %s ha estat enviada.
|
||||
|
||||
@@ -891,9 +888,8 @@ NICK_RESETPASS_MESSAGE
|
||||
|
||||
You have requested to have the password for %s reset.
|
||||
To reset your password, type %R%s CONFIRM %s
|
||||
If you don't know why this mail is sent to you, please ignore it silently.
|
||||
|
||||
PLEASE DON'T ANSWER TO THIS MAIL!
|
||||
If you don't know why this mail was sent to you, please ignore it silently.
|
||||
|
||||
%s administrators.
|
||||
NICK_RESETPASS_COMPLETE
|
||||
@@ -944,17 +940,14 @@ NICK_ENTER_REG_CODE
|
||||
A passcode has been sent to %s, please type %R%s confirm <passcode> to complete registration
|
||||
NICK_REG_MAIL_SUBJECT
|
||||
Nickname Registration (%s)
|
||||
NICK_REG_MAIL_HEAD
|
||||
NICK_REG_MAIL
|
||||
Hi,
|
||||
NICK_REG_MAIL_LINE_1
|
||||
You have requested to register the following nickname %s.
|
||||
NICK_REG_MAIL_LINE_2
|
||||
|
||||
You have requested to register the nickname %s on %s.
|
||||
Please type " %R%s confirm %s " to complete registration.
|
||||
NICK_REG_MAIL_LINE_3
|
||||
If you don't know why this mail is sent to you, please ignore it silently.
|
||||
NICK_REG_MAIL_LINE_4
|
||||
PLEASE DON'T ANSWER TO THIS MAIL!
|
||||
NICK_REG_MAIL_LINE_5
|
||||
|
||||
If you don't know why this mail was sent to you, please ignore it silently.
|
||||
|
||||
%s administrators.
|
||||
NICK_GETPASS_PASSCODE_IS
|
||||
Passcode for %s is %s.
|
||||
@@ -2040,12 +2033,14 @@ MEMO_INFO_X_NOTIFY_SIGNON
|
||||
# Standard responses
|
||||
MEMO_MAIL_SUBJECT
|
||||
New memo
|
||||
MEMO_MAIL_TEXT1
|
||||
NICK_MAIL_TEXT
|
||||
Hi %s
|
||||
MEMO_MAIL_TEXT2
|
||||
|
||||
You've just received a new memo from %s. This is memo number %d.
|
||||
MEMO_MAIL_TEXT3
|
||||
Memo Text:
|
||||
|
||||
Memo text:
|
||||
|
||||
%s
|
||||
|
||||
###########################################################################
|
||||
#
|
||||
|
||||
@@ -885,18 +885,15 @@ NICK_SENDPASS_UNAVAILABLE
|
||||
SENDPASS Befehl nicht verfügbar, da die Verschlüsselung aktiviert ist.
|
||||
NICK_SENDPASS_SUBJECT
|
||||
Nick-Passwort (%s)
|
||||
NICK_SENDPASS_HEAD
|
||||
NICK_SENDPASS
|
||||
Hi,
|
||||
NICK_SENDPASS_LINE_1
|
||||
Du wolltest dir dein Passwort von dem Nicknamen %s via eMail schicken lassen.
|
||||
NICK_SENDPASS_LINE_2
|
||||
Das Passwort ist %s Aus Sicherheitsgründen solltest du das Passwort nach Erhalt dieser eMail ändern.
|
||||
NICK_SENDPASS_LINE_3
|
||||
Wenn du nicht weisst, warum du diese Mail erhalten hast, ignoriere sie bitte.
|
||||
NICK_SENDPASS_LINE_4
|
||||
BITTE NICHT AUF DIESE NACHRICHT ANTWORTEN!
|
||||
NICK_SENDPASS_LINE_5
|
||||
%s Administratoren.
|
||||
|
||||
You have requested to receive the password of nickname %s by e-mail.
|
||||
The password is %s. For security purposes, you should change it as soon as you receive this mail.
|
||||
|
||||
If you don't know why this mail was sent to you, please ignore it silently.
|
||||
|
||||
%s administrators.
|
||||
NICK_SENDPASS_OK
|
||||
Das Passwort von %s wurde per eMail verschickt.
|
||||
|
||||
@@ -910,9 +907,8 @@ NICK_RESETPASS_MESSAGE
|
||||
|
||||
You have requested to have the password for %s reset.
|
||||
To reset your password, type %R%s CONFIRM %s
|
||||
If you don't know why this mail is sent to you, please ignore it silently.
|
||||
|
||||
PLEASE DON'T ANSWER TO THIS MAIL!
|
||||
If you don't know why this mail was sent to you, please ignore it silently.
|
||||
|
||||
%s administrators.
|
||||
NICK_RESETPASS_COMPLETE
|
||||
@@ -957,18 +953,15 @@ NICK_ENTER_REG_CODE
|
||||
Ein Password wurde zu %s gesendet, bitte tippe %R%s confirm <passcode> um die Registrierung abzuschließen.
|
||||
NICK_REG_MAIL_SUBJECT
|
||||
Nickname Registrierung (%s)
|
||||
NICK_REG_MAIL_HEAD
|
||||
NICK_REG_MAIL
|
||||
Hi,
|
||||
NICK_REG_MAIL_LINE_1
|
||||
Du hast die Registrierung des Nicknamen %s angefordert.
|
||||
NICK_REG_MAIL_LINE_2
|
||||
Bitte tippe " %R%s confirm %s " zum Abschluß der Registrierung ein.
|
||||
NICK_REG_MAIL_LINE_3
|
||||
Wenn du nicht weisst, warum du diese Mail erhalten hast, ignoriere sie bitte.
|
||||
NICK_REG_MAIL_LINE_4
|
||||
BITTE NICHT AUF DIESE NACHRICHT ANTWORTEN!
|
||||
NICK_REG_MAIL_LINE_5
|
||||
Die %s Administratoren.
|
||||
|
||||
You have requested to register the nickname %s on %s.
|
||||
Please type " %R%s confirm %s " to complete registration.
|
||||
|
||||
If you don't know why this mail was sent to you, please ignore it silently.
|
||||
|
||||
%s administrators.
|
||||
NICK_GETPASS_PASSCODE_IS
|
||||
Passcode für %s ist %s.
|
||||
NICK_FORCE_REG
|
||||
@@ -2037,13 +2030,15 @@ MEMO_INFO_X_NOTIFY_SIGNON
|
||||
# Memo2Mail
|
||||
MEMO_MAIL_SUBJECT
|
||||
Neue Memo
|
||||
MEMO_MAIL_TEXT1
|
||||
NICK_MAIL_TEXT
|
||||
Hi %s
|
||||
MEMO_MAIL_TEXT2
|
||||
Du hast gerade eine neue Memo von %s erhalten. Dies ist Memo Nummer %d.
|
||||
MEMO_MAIL_TEXT3
|
||||
Memo Text:
|
||||
|
||||
You've just received a new memo from %s. This is memo number %d.
|
||||
|
||||
Memo text:
|
||||
|
||||
%s
|
||||
|
||||
# Standard responses
|
||||
MEMO_RSEND_PLEASE_WAIT
|
||||
Bitte warte %d Sekunden bevor der RSEND Befehl wieder funktioniert.
|
||||
|
||||
+27
-31
@@ -850,17 +850,14 @@ NICK_SENDPASS_UNAVAILABLE
|
||||
SENDPASS command unavailable because encryption is in use.
|
||||
NICK_SENDPASS_SUBJECT
|
||||
Nickname password (%s)
|
||||
NICK_SENDPASS_HEAD
|
||||
NICK_SENDPASS
|
||||
Hi,
|
||||
NICK_SENDPASS_LINE_1
|
||||
|
||||
You have requested to receive the password of nickname %s by e-mail.
|
||||
NICK_SENDPASS_LINE_2
|
||||
The password is %s for security purposes, you should change it as soon as you receive this mail.
|
||||
NICK_SENDPASS_LINE_3
|
||||
If you don't know why this mail is sent to you, please ignore it silently.
|
||||
NICK_SENDPASS_LINE_4
|
||||
PLEASE DON'T ANSWER TO THIS MAIL!
|
||||
NICK_SENDPASS_LINE_5
|
||||
The password is %s. For security purposes, you should change it as soon as you receive this mail.
|
||||
|
||||
If you don't know why this mail was sent to you, please ignore it silently.
|
||||
|
||||
%s administrators.
|
||||
NICK_SENDPASS_OK
|
||||
Password of %s has been sent.
|
||||
@@ -872,12 +869,12 @@ NICK_RESETPASS_SUBJECT
|
||||
Reset password request for %s
|
||||
NICK_RESETPASS_MESSAGE
|
||||
Hi,
|
||||
|
||||
|
||||
You have requested to have the password for %s reset.
|
||||
To reset your password, type %R%s CONFIRM %s
|
||||
If you don't know why this mail is sent to you, please ignore it silently.
|
||||
PLEASE DON'T ANSWER TO THIS MAIL!
|
||||
|
||||
|
||||
If you don't know why this mail was sent to you, please ignore it silently.
|
||||
|
||||
%s administrators.
|
||||
NICK_RESETPASS_COMPLETE
|
||||
Password reset email for %s has been sent.
|
||||
@@ -919,24 +916,21 @@ NICK_IS_PREREG
|
||||
This nick is awaiting an e-mail verification code before completing registration.
|
||||
NICK_ENTER_REG_CODE
|
||||
A passcode has been sent to %s, please type %R%s confirm <passcode> to complete registration
|
||||
NICK_REG_MAIL_SUBJECT
|
||||
Nickname Registration (%s)
|
||||
NICK_REG_MAIL_HEAD
|
||||
Hi,
|
||||
NICK_REG_MAIL_LINE_1
|
||||
You have requested to register the following nickname %s.
|
||||
NICK_REG_MAIL_LINE_2
|
||||
Please type " %R%s confirm %s " to complete registration.
|
||||
NICK_REG_MAIL_LINE_3
|
||||
If you don't know why this mail is sent to you, please ignore it silently.
|
||||
NICK_REG_MAIL_LINE_4
|
||||
PLEASE DON'T ANSWER TO THIS MAIL!
|
||||
NICK_REG_MAIL_LINE_5
|
||||
%s administrators.
|
||||
NICK_GETPASS_PASSCODE_IS
|
||||
Passcode for %s is %s.
|
||||
NICK_FORCE_REG
|
||||
Nickname %s confirmed
|
||||
NICK_REG_MAIL_SUBJECT
|
||||
Nickname Registration (%s)
|
||||
NICK_REG_MAIL
|
||||
Hi,
|
||||
|
||||
You have requested to register the nickname %s on %s.
|
||||
Please type " %R%s confirm %s " to complete registration.
|
||||
|
||||
If you don't know why this mail was sent to you, please ignore it silently.
|
||||
|
||||
%s administrators.
|
||||
|
||||
# Confirm responses
|
||||
NICK_CONFIRM_NOT_FOUND
|
||||
@@ -1994,12 +1988,14 @@ MEMO_INFO_X_NOTIFY_SIGNON
|
||||
# Memo2Mail responses
|
||||
MEMO_MAIL_SUBJECT
|
||||
New memo
|
||||
MEMO_MAIL_TEXT1
|
||||
NICK_MAIL_TEXT
|
||||
Hi %s
|
||||
MEMO_MAIL_TEXT2
|
||||
|
||||
You've just received a new memo from %s. This is memo number %d.
|
||||
MEMO_MAIL_TEXT3
|
||||
Memo Text:
|
||||
|
||||
Memo text:
|
||||
|
||||
%s
|
||||
|
||||
# RSEND responses
|
||||
MEMO_RSEND_PLEASE_WAIT
|
||||
|
||||
@@ -870,18 +870,15 @@ NICK_SENDPASS_UNAVAILABLE
|
||||
El comando SENDPASS no esta disponible por el uso de encriptacion.
|
||||
NICK_SENDPASS_SUBJECT
|
||||
Clave para el Nickname (%s)
|
||||
NICK_SENDPASS_HEAD
|
||||
Hola,
|
||||
NICK_SENDPASS_LINE_1
|
||||
Tu has pedido recibir la clave para el nickname %s por e-mail.
|
||||
NICK_SENDPASS_LINE_2
|
||||
La clave es %s Por razones de seguridad deberas cambiarla en cuanto recibas este mail.
|
||||
NICK_SENDPASS_LINE_3
|
||||
Si no sabes porque este mail ha sido enviado a ti, por favor ignoralo.
|
||||
NICK_SENDPASS_LINE_4
|
||||
POR FAVOR NO RESPONDER A ESTE EMAIL!
|
||||
NICK_SENDPASS_LINE_5
|
||||
Administradores de %s.
|
||||
NICK_SENDPASS
|
||||
Hi,
|
||||
|
||||
You have requested to receive the password of nickname %s by e-mail.
|
||||
The password is %s. For security purposes, you should change it as soon as you receive this mail.
|
||||
|
||||
If you don't know why this mail was sent to you, please ignore it silently.
|
||||
|
||||
%s administrators.
|
||||
NICK_SENDPASS_OK
|
||||
La clave de %s ha sido enviada.
|
||||
|
||||
@@ -895,9 +892,8 @@ NICK_RESETPASS_MESSAGE
|
||||
|
||||
You have requested to have the password for %s reset.
|
||||
To reset your password, type %R%s CONFIRM %s
|
||||
If you don't know why this mail is sent to you, please ignore it silently.
|
||||
|
||||
PLEASE DON'T ANSWER TO THIS MAIL!
|
||||
If you don't know why this mail was sent to you, please ignore it silently.
|
||||
|
||||
%s administrators.
|
||||
NICK_RESETPASS_COMPLETE
|
||||
@@ -942,18 +938,15 @@ NICK_ENTER_REG_CODE
|
||||
El password ha sido enviado a %s, tipea %R%s confirm <password> para completar el registro.
|
||||
NICK_REG_MAIL_SUBJECT
|
||||
Registro de Nick (%s)
|
||||
NICK_REG_MAIL_HEAD
|
||||
Hola,
|
||||
NICK_REG_MAIL_LINE_1
|
||||
Tu has pedido registrar el nickname %s.
|
||||
NICK_REG_MAIL_LINE_2
|
||||
Tipea " %R%s confirm %s " para completar el registro.
|
||||
NICK_REG_MAIL_LINE_3
|
||||
Si no sabes por que has recibido este email, por favor ignorarlo.
|
||||
NICK_REG_MAIL_LINE_4
|
||||
NO RESPONDAS A ESTE MAIL!
|
||||
NICK_REG_MAIL_LINE_5
|
||||
Administradores de %s.
|
||||
NICK_REG_MAIL
|
||||
Hi,
|
||||
|
||||
You have requested to register the nickname %s on %s.
|
||||
Please type " %R%s confirm %s " to complete registration.
|
||||
|
||||
If you don't know why this mail was sent to you, please ignore it silently.
|
||||
|
||||
%s administrators.
|
||||
NICK_GETPASS_PASSCODE_IS
|
||||
El password para %s es %s.
|
||||
NICK_FORCE_REG
|
||||
@@ -2032,12 +2025,14 @@ MEMO_INFO_X_NOTIFY_SIGNON
|
||||
# Standard responses
|
||||
MEMO_MAIL_SUBJECT
|
||||
Nuevo memo
|
||||
MEMO_MAIL_TEXT1
|
||||
Hola %s
|
||||
MEMO_MAIL_TEXT2
|
||||
Acabas de recibir un nuevo memo de %s. Es el memo numero %d.
|
||||
MEMO_MAIL_TEXT3
|
||||
Texto del Memo:
|
||||
NICK_MAIL_TEXT
|
||||
Hi %s
|
||||
|
||||
You've just received a new memo from %s. This is memo number %d.
|
||||
|
||||
Memo text:
|
||||
|
||||
%s
|
||||
|
||||
# Standard responses
|
||||
MEMO_RSEND_PLEASE_WAIT
|
||||
|
||||
@@ -877,18 +877,15 @@ NICK_SENDPASS_UNAVAILABLE
|
||||
La commande SENDPASS est indisponible car le cryptage est utilisé.
|
||||
NICK_SENDPASS_SUBJECT
|
||||
Mot de passe du pseudo %s
|
||||
NICK_SENDPASS_HEAD
|
||||
Bonjour,
|
||||
NICK_SENDPASS_LINE_1
|
||||
Vous avez demandé à recevoir le mot de passe du pseudo %s par e-mail.
|
||||
NICK_SENDPASS_LINE_2
|
||||
Le mot de passe est %s . Pour des raisons de sécurité, vous devriez le changer dès que vous lisez cet e-mail.
|
||||
NICK_SENDPASS_LINE_3
|
||||
Si vous ne savez pas de quoi il retourne dans cet e-mail, il s'agit probablement d'une erreur, nous vous prions de nous excuser et vous demandons d'ignorer cet e-mail.
|
||||
NICK_SENDPASS_LINE_4
|
||||
NE REPONDEZ PAS À CE MAIL!
|
||||
NICK_SENDPASS_LINE_5
|
||||
Les administrateurs de %s.
|
||||
NICK_SENDPASS
|
||||
Hi,
|
||||
|
||||
You have requested to receive the password of nickname %s by e-mail.
|
||||
The password is %s. For security purposes, you should change it as soon as you receive this mail.
|
||||
|
||||
If you don't know why this mail was sent to you, please ignore it silently.
|
||||
|
||||
%s administrators.
|
||||
NICK_SENDPASS_OK
|
||||
Le mot de passe de %s a été envoyé.
|
||||
|
||||
@@ -902,9 +899,8 @@ NICK_RESETPASS_MESSAGE
|
||||
|
||||
You have requested to have the password for %s reset.
|
||||
To reset your password, type %R%s CONFIRM %s
|
||||
If you don't know why this mail is sent to you, please ignore it silently.
|
||||
|
||||
PLEASE DON'T ANSWER TO THIS MAIL!
|
||||
If you don't know why this mail was sent to you, please ignore it silently.
|
||||
|
||||
%s administrators.
|
||||
NICK_RESETPASS_COMPLETE
|
||||
@@ -955,18 +951,15 @@ NICK_ENTER_REG_CODE
|
||||
Un passcode a été envoyé à %s, merci de taper %R%s confirm <passcode> une fois que vous l'aurez reçu pour compléter l'enregistrement.
|
||||
NICK_REG_MAIL_SUBJECT
|
||||
Enregistrement d'un pseudo (%s)
|
||||
NICK_REG_MAIL_HEAD
|
||||
Bonjour,
|
||||
NICK_REG_MAIL_LINE_1
|
||||
Vous venez de demander l'enregistrement du pseudo %s.
|
||||
NICK_REG_MAIL_LINE_2
|
||||
Veuillez tapez " %R%s confirm %s " sur IRC afin de valider l'enregistrement.
|
||||
NICK_REG_MAIL_LINE_3
|
||||
Si vous ne savez pas pourquoi vous avez reçu cet email, ignorez-le.
|
||||
NICK_REG_MAIL_LINE_4
|
||||
NE REPONDEZ PAS À CE MESSAGE.
|
||||
NICK_REG_MAIL_LINE_5
|
||||
Les administrateurs de %s.
|
||||
NICK_REG_MAIL
|
||||
Hi,
|
||||
|
||||
You have requested to register the nickname %s on %s.
|
||||
Please type " %R%s confirm %s " to complete registration.
|
||||
|
||||
If you don't know why this mail was sent to you, please ignore it silently.
|
||||
|
||||
%s administrators.
|
||||
NICK_GETPASS_PASSCODE_IS
|
||||
Le passcode pour %s est %s.
|
||||
NICK_FORCE_REG
|
||||
@@ -2047,12 +2040,14 @@ MEMO_INFO_X_NOTIFY_SIGNON
|
||||
# Standard responses
|
||||
MEMO_MAIL_SUBJECT
|
||||
Nouveau mémo
|
||||
MEMO_MAIL_TEXT1
|
||||
Bonjour %s,
|
||||
MEMO_MAIL_TEXT2
|
||||
Vous venez de recevoir un mémo de %s. Le numéro de ce mémo est %d.
|
||||
MEMO_MAIL_TEXT3
|
||||
Mémo:
|
||||
NICK_MAIL_TEXT
|
||||
Hi %s
|
||||
|
||||
You've just received a new memo from %s. This is memo number %d.
|
||||
|
||||
Memo text:
|
||||
|
||||
%s
|
||||
|
||||
###########################################################################
|
||||
#
|
||||
|
||||
@@ -865,18 +865,15 @@ NICK_SENDPASS_UNAVAILABLE
|
||||
Ç SENDPASS åíôïëÞ äåí åßíáé äéáèÝóéìç ãéáôß ÷ñçóéìïðïéåßôáé ç êùäéêïðïßçóç.
|
||||
NICK_SENDPASS_SUBJECT
|
||||
Ï êùäéêüò ôïõ øåõäþíõìïõ (%s)
|
||||
NICK_SENDPASS_HEAD
|
||||
ÃåéÜ,
|
||||
NICK_SENDPASS_LINE_1
|
||||
Åßóáé óôçí ëßóôá ãéá íá ëÜâåéò ôïí êùäéêü ôïõ øåõäþíõìïý óïõ %s ìÝóù e-mail.
|
||||
NICK_SENDPASS_LINE_2
|
||||
Ï êùäéêü óïõ åßíáé %s Ãéá ðåñéóóüôåñç áóöÜëåéá, èá ðñÝðåé íá áëëÜîåéò üóï óýíôïìá ãßíåôáé ôïí êùäéêü óïõ áöïý ëÜâåéò ôïí êùäéêü óïõ óå e-mail.
|
||||
NICK_SENDPASS_LINE_3
|
||||
Áí äåí ãíùñßæåéò ãéáôß áõôü ôï e-mail óôÜëèçêå óå óÝíá, ðáñáêáëþ áãíüçóÝ ôï ÷ùñßò åñùôÞóåéò êëð.
|
||||
NICK_SENDPASS_LINE_4
|
||||
ÐÁÑÁÊÁËÙ ÌÇÍ ÁÐÁÍÔÇÓÅÉÓ ÓÅ ÁÕÔÏ ÔÏ E-MAIL!
|
||||
NICK_SENDPASS_LINE_5
|
||||
%s åðéêåöáëåßò õðçñåóéþí.
|
||||
NICK_SENDPASS
|
||||
Hi,
|
||||
|
||||
You have requested to receive the password of nickname %s by e-mail.
|
||||
The password is %s. For security purposes, you should change it as soon as you receive this mail.
|
||||
|
||||
If you don't know why this mail was sent to you, please ignore it silently.
|
||||
|
||||
%s administrators.
|
||||
NICK_SENDPASS_OK
|
||||
Ï êùäéêüò ôïõ %s Ý÷åé óôáëèåß.
|
||||
|
||||
@@ -890,10 +887,9 @@ NICK_RESETPASS_MESSAGE
|
||||
|
||||
You have requested to have the pasword for %s reset.
|
||||
To reset your password, type %R%s CONFIRM %s
|
||||
If you don't know why this mail is sent to you, please ignore it silently.
|
||||
|
||||
PLEASE DON'T ANSWER TO THIS MAIL!
|
||||
|
||||
|
||||
If you don't know why this mail was sent to you, please ignore it silently.
|
||||
|
||||
%s administrators.
|
||||
NICK_RESETPASS_COMPLETE
|
||||
Password reset email for %s has been sent.
|
||||
@@ -943,17 +939,14 @@ NICK_ENTER_REG_CODE
|
||||
A passcode has been sent to %s, please type %R%s confirm <passcode> to complete registration
|
||||
NICK_REG_MAIL_SUBJECT
|
||||
Nickname Registration (%s)
|
||||
NICK_REG_MAIL_HEAD
|
||||
NICK_REG_MAIL
|
||||
Hi,
|
||||
NICK_REG_MAIL_LINE_1
|
||||
You have requested to register the following nickname %s.
|
||||
NICK_REG_MAIL_LINE_2
|
||||
|
||||
You have requested to register the nickname %s on %s.
|
||||
Please type " %R%s confirm %s " to complete registration.
|
||||
NICK_REG_MAIL_LINE_3
|
||||
If you don't know why this mail is sent to you, please ignore it silently.
|
||||
NICK_REG_MAIL_LINE_4
|
||||
PLEASE DON'T ANSWER TO THIS MAIL!
|
||||
NICK_REG_MAIL_LINE_5
|
||||
|
||||
If you don't know why this mail was sent to you, please ignore it silently.
|
||||
|
||||
%s administrators.
|
||||
NICK_GETPASS_PASSCODE_IS
|
||||
Passcode for %s is %s.
|
||||
@@ -2042,12 +2035,14 @@ MEMO_INFO_X_NOTIFY_SIGNON
|
||||
# Standard responses
|
||||
MEMO_MAIL_SUBJECT
|
||||
New memo
|
||||
MEMO_MAIL_TEXT1
|
||||
NICK_MAIL_TEXT
|
||||
Hi %s
|
||||
MEMO_MAIL_TEXT2
|
||||
|
||||
You've just received a new memo from %s. This is memo number %d.
|
||||
MEMO_MAIL_TEXT3
|
||||
Memo Text:
|
||||
|
||||
Memo text:
|
||||
|
||||
%s
|
||||
|
||||
###########################################################################
|
||||
#
|
||||
|
||||
+24
-29
@@ -862,18 +862,15 @@ NICK_SENDPASS_UNAVAILABLE
|
||||
SENDPASS nem elérhetõ, amíg az encryption használatban van.
|
||||
NICK_SENDPASS_SUBJECT
|
||||
Nicknév jelszó (%s)
|
||||
NICK_SENDPASS_HEAD
|
||||
NICK_SENDPASS
|
||||
Hi,
|
||||
NICK_SENDPASS_LINE_1
|
||||
Azt kérted, hogy a %s nicknév jelszavát küldjük el e-mailben.
|
||||
NICK_SENDPASS_LINE_2
|
||||
A jelszavad %s Ezt a biztosnág miatt meg kell váltóztatni, miután megkaptad ezt a levelet.
|
||||
NICK_SENDPASS_LINE_3
|
||||
Ha nem tudod miért kaptad ezt a levelet, akkor kérlek hagyd figyelmen kivül!
|
||||
NICK_SENDPASS_LINE_4
|
||||
ERRE A LEVÉLRE NE VÁLASZOLJ!!!
|
||||
NICK_SENDPASS_LINE_5
|
||||
%s adminisztrátorok.
|
||||
|
||||
You have requested to receive the password of nickname %s by e-mail.
|
||||
The password is %s. For security purposes, you should change it as soon as you receive this mail.
|
||||
|
||||
If you don't know why this mail was sent to you, please ignore it silently.
|
||||
|
||||
%s administrators.
|
||||
NICK_SENDPASS_OK
|
||||
%s nick jelszava elküldve.
|
||||
|
||||
@@ -887,9 +884,8 @@ NICK_RESETPASS_MESSAGE
|
||||
|
||||
You have requested to have the password for %s reset.
|
||||
To reset your password, type %R%s CONFIRM %s
|
||||
If you don't know why this mail is sent to you, please ignore it silently.
|
||||
|
||||
PLEASE DON'T ANSWER TO THIS MAIL
|
||||
If you don't know why this mail was sent to you, please ignore it silently.
|
||||
|
||||
%s administrators.
|
||||
NICK_RESETPASS_COMPLETE
|
||||
@@ -934,18 +930,15 @@ NICK_ENTER_REG_CODE
|
||||
A kód a %s címre lett küldve, írd be %R%s confirm <kód> a regisztráció befejezéséhez.
|
||||
NICK_REG_MAIL_SUBJECT
|
||||
Nicknév Regisztráció (%s)
|
||||
NICK_REG_MAIL_HEAD
|
||||
NICK_REG_MAIL
|
||||
Hi,
|
||||
NICK_REG_MAIL_LINE_1
|
||||
Te kérelmeztad a %s nick regisztrálását.
|
||||
NICK_REG_MAIL_LINE_2
|
||||
Írd be: " %R%s confirm %s ", hogy befejezd a regisztrációt.
|
||||
NICK_REG_MAIL_LINE_3
|
||||
Ha nem tudod miért kaptad a levelet, kérlek hagyd figyelmen kívül!
|
||||
NICK_REG_MAIL_LINE_4
|
||||
NE VÁLASZOLJ A LEVÉLRE!
|
||||
NICK_REG_MAIL_LINE_5
|
||||
%s adminisztrátorok.
|
||||
|
||||
You have requested to register the nickname %s on %s.
|
||||
Please type " %R%s confirm %s " to complete registration.
|
||||
|
||||
If you don't know why this mail was sent to you, please ignore it silently.
|
||||
|
||||
%s administrators.
|
||||
NICK_GETPASS_PASSCODE_IS
|
||||
Kód a %s nickhez: %s.
|
||||
NICK_FORCE_REG
|
||||
@@ -2027,12 +2020,14 @@ MEMO_INFO_X_NOTIFY_SIGNON
|
||||
# Memo2Mail válaszok
|
||||
MEMO_MAIL_SUBJECT
|
||||
Új memo
|
||||
MEMO_MAIL_TEXT1
|
||||
NICK_MAIL_TEXT
|
||||
Hi %s
|
||||
MEMO_MAIL_TEXT2
|
||||
Kaptál egy új memo üzenetet %s nicktõl. Ez a memo a %d sorszámú.
|
||||
MEMO_MAIL_TEXT3
|
||||
Memo Szöveg:
|
||||
|
||||
You've just received a new memo from %s. This is memo number %d.
|
||||
|
||||
Memo text:
|
||||
|
||||
%s
|
||||
|
||||
# RSEND válaszok
|
||||
MEMO_RSEND_PLEASE_WAIT
|
||||
|
||||
@@ -852,18 +852,15 @@ NICK_SENDPASS_UNAVAILABLE
|
||||
Il comando SENDPASS non è disponibile perché è in uso la criptazione dei dati.
|
||||
NICK_SENDPASS_SUBJECT
|
||||
Password del nick (%s)
|
||||
NICK_SENDPASS_HEAD
|
||||
Salve,
|
||||
NICK_SENDPASS_LINE_1
|
||||
Hai richiesto di ricevere via e-mail la password del nick %s.
|
||||
NICK_SENDPASS_LINE_2
|
||||
La password è %s Per ragioni di sicurezza, ti invitiamo a cambiarla il più presto possibile con il comando "/ns set password".
|
||||
NICK_SENDPASS_LINE_3
|
||||
Se non sai perché hai ricevuto questa mail, ignorala.
|
||||
NICK_SENDPASS_LINE_4
|
||||
IMPORTANTE! Non rispondere a questa mail!
|
||||
NICK_SENDPASS_LINE_5
|
||||
Gli amministratori di %s.
|
||||
NICK_SENDPASS
|
||||
Hi,
|
||||
|
||||
You have requested to receive the password of nickname %s by e-mail.
|
||||
The password is %s. For security purposes, you should change it as soon as you receive this mail.
|
||||
|
||||
If you don't know why this mail was sent to you, please ignore it silently.
|
||||
|
||||
%s administrators.
|
||||
NICK_SENDPASS_OK
|
||||
La password di %s è stata inviata.
|
||||
|
||||
@@ -877,9 +874,8 @@ NICK_RESETPASS_MESSAGE
|
||||
|
||||
You have requested to have the password for %s reset.
|
||||
To reset your password, type %R%s CONFRM %s
|
||||
If you don't know why this mail is sent to you, please ignore it silently.
|
||||
|
||||
PLEASE DON'T ANSWER TO THIS MAIL!
|
||||
If you don't know why this mail was sent to you, please ignore it silently.
|
||||
|
||||
%s administrators.
|
||||
NICK_RESETPASS_COMPLETE
|
||||
@@ -924,18 +920,15 @@ NICK_ENTER_REG_CODE
|
||||
Un codice di attivazione è stato inviato a %s. Digita %R%s CONFIRM <codice> per completare la registrazione.
|
||||
NICK_REG_MAIL_SUBJECT
|
||||
Registrazione del nick (%s)
|
||||
NICK_REG_MAIL_HEAD
|
||||
Salve,
|
||||
NICK_REG_MAIL_LINE_1
|
||||
Hai richiesto la registrazione del nick %s.
|
||||
NICK_REG_MAIL_LINE_2
|
||||
Digita " %R%s CONFIRM %s " (senza virgolette) per completare la registrazione.
|
||||
NICK_REG_MAIL_LINE_3
|
||||
Se non sai perché hai ricevuto questa e-mail, ignorala.
|
||||
NICK_REG_MAIL_LINE_4
|
||||
NON RISPONDERE A QUESTA MAIL!
|
||||
NICK_REG_MAIL_LINE_5
|
||||
Gli amministratori di %s.
|
||||
NICK_REG_MAIL
|
||||
Hi,
|
||||
|
||||
You have requested to register the nickname %s on %s.
|
||||
Please type " %R%s confirm %s " to complete registration.
|
||||
|
||||
If you don't know why this mail was sent to you, please ignore it silently.
|
||||
|
||||
%s administrators.
|
||||
NICK_GETPASS_PASSCODE_IS
|
||||
Il codice di attivazione per %s is %s.
|
||||
NICK_FORCE_REG
|
||||
@@ -2000,12 +1993,14 @@ MEMO_INFO_X_NOTIFY_SIGNON
|
||||
# Memo2Mail responses
|
||||
MEMO_MAIL_SUBJECT
|
||||
Nuovo memo
|
||||
MEMO_MAIL_TEXT1
|
||||
Ciao %s
|
||||
MEMO_MAIL_TEXT2
|
||||
Hai appena ricevuto un nuovo memo da %s. Questo è il memo numero %d.
|
||||
MEMO_MAIL_TEXT3
|
||||
Testo del memo:
|
||||
NICK_MAIL_TEXT
|
||||
Hi %s
|
||||
|
||||
You've just received a new memo from %s. This is memo number %d.
|
||||
|
||||
Memo text:
|
||||
|
||||
%s
|
||||
|
||||
# RSEND responses
|
||||
MEMO_RSEND_PLEASE_WAIT
|
||||
|
||||
@@ -869,18 +869,15 @@ NICK_SENDPASS_UNAVAILABLE
|
||||
SENDPASS commando is onbeschikbaar omdat encryptie aanstaat.
|
||||
NICK_SENDPASS_SUBJECT
|
||||
Nick wachtwoord (%s)
|
||||
NICK_SENDPASS_HEAD
|
||||
Hoi,
|
||||
NICK_SENDPASS_LINE_1
|
||||
Je hebt het wachtwoord van nick %s via e-mail aangevraagd.
|
||||
NICK_SENDPASS_LINE_2
|
||||
Het wachtwoord is %s Wegens veiligheidsredenen kun je dit het beste zo snel mogelijk veranderen.
|
||||
NICK_SENDPASS_LINE_3
|
||||
Als je niet weet waarom deze email gestuurd is, negeer deze dan.
|
||||
NICK_SENDPASS_LINE_4
|
||||
ANTWOORD NIET OP DEZE E-MAIL!
|
||||
NICK_SENDPASS_LINE_5
|
||||
%s beheerders.
|
||||
NICK_SENDPASS
|
||||
Hi,
|
||||
|
||||
You have requested to receive the password of nickname %s by e-mail.
|
||||
The password is %s. For security purposes, you should change it as soon as you receive this mail.
|
||||
|
||||
If you don't know why this mail was sent to you, please ignore it silently.
|
||||
|
||||
%s administrators.
|
||||
NICK_SENDPASS_OK
|
||||
Wachtwoord %s is verstuurd.
|
||||
|
||||
@@ -893,9 +890,8 @@ NICK_RESETPASS_MESSAGE
|
||||
|
||||
You have requested to have the password for %s reset.
|
||||
To reset your password, type %R%s CONFIRM %s
|
||||
If you don't know why this mail is sent to you, please ignore it silently.
|
||||
|
||||
PLEASE DON'T ANSWER TO THIS MAIL
|
||||
If you don't know why this mail was sent to you, please ignore it silently.
|
||||
|
||||
%s administrators.
|
||||
|
||||
@@ -941,18 +937,15 @@ NICK_ENTER_REG_CODE
|
||||
Een verificatiecode is verstuurd naar %s. Type %R%s confirm <verificatiecode> om de registratie te voltooien.
|
||||
NICK_REG_MAIL_SUBJECT
|
||||
Nickname Registratie (%s)
|
||||
NICK_REG_MAIL_HEAD
|
||||
Hoi,
|
||||
NICK_REG_MAIL_LINE_1
|
||||
Je hebt een aanvraag ingediend om de nickname %s te registreren.
|
||||
NICK_REG_MAIL_LINE_2
|
||||
Type " %R%s confirm %s " om de registratie te voltooien.
|
||||
NICK_REG_MAIL_LINE_3
|
||||
Als je niet weet waarom deze e-mail naar je gestuurd is, negeer deze dan.
|
||||
NICK_REG_MAIL_LINE_4
|
||||
REAGEER NIET OP DEZE MAIL!
|
||||
NICK_REG_MAIL_LINE_5
|
||||
%s administrators.
|
||||
NICK_REG_MAIL
|
||||
Hi,
|
||||
|
||||
You have requested to register the nickname %s on %s.
|
||||
Please type " %R%s confirm %s " to complete registration.
|
||||
|
||||
If you don't know why this mail was sent to you, please ignore it silently.
|
||||
|
||||
%s administrators.
|
||||
NICK_GETPASS_PASSCODE_IS
|
||||
Verificatiecode voor %s is %s.
|
||||
NICK_FORCE_REG
|
||||
@@ -2025,12 +2018,14 @@ MEMO_INFO_X_NOTIFY_SIGNON
|
||||
# Standard responses
|
||||
MEMO_MAIL_SUBJECT
|
||||
Nieuwe memo
|
||||
MEMO_MAIL_TEXT1
|
||||
Hoi %s
|
||||
MEMO_MAIL_TEXT2
|
||||
Je hebt zojuist een memo ontvangen van %s. Het gaat om memo nummer %d.
|
||||
MEMO_MAIL_TEXT3
|
||||
Inhoud van de memo:
|
||||
NICK_MAIL_TEXT
|
||||
Hi %s
|
||||
|
||||
You've just received a new memo from %s. This is memo number %d.
|
||||
|
||||
Memo text:
|
||||
|
||||
%s
|
||||
|
||||
###########################################################################
|
||||
#
|
||||
|
||||
@@ -1096,24 +1096,15 @@ NICK_SENDPASS_UNAVAILABLE
|
||||
NICK_SENDPASS_SUBJECT
|
||||
Has³o do nicka %s
|
||||
|
||||
NICK_SENDPASS_HEAD
|
||||
Witaj!
|
||||
|
||||
NICK_SENDPASS_LINE_1
|
||||
Za¿±da³e¶(a¶) wys³ania has³a do nicka %s na e-mail.
|
||||
|
||||
NICK_SENDPASS_LINE_2
|
||||
Twoje has³o to: %s
|
||||
Dla w³asnego bezpieczeñstwa nale¿y to has³o natychmiast zmieniæ na inne.
|
||||
|
||||
NICK_SENDPASS_LINE_3
|
||||
Je¶li nie wiesz dlaczego ta wiadomo¶æ dotar³a do Ciebie zignoruj j±. Je¶li ta sytuacja bêdzie siê powtarzaæ skontaktuj siê z administratorem sieci.
|
||||
|
||||
NICK_SENDPASS_LINE_4
|
||||
PROSZÊ NIE ODPOWIADAÆ NA T¡ WIADOMO¦Æ!
|
||||
|
||||
NICK_SENDPASS_LINE_5
|
||||
Administratorzy sieci %s.
|
||||
NICK_SENDPASS
|
||||
Hi,
|
||||
|
||||
You have requested to receive the password of nickname %s by e-mail.
|
||||
The password is %s. For security purposes, you should change it as soon as you receive this mail.
|
||||
|
||||
If you don't know why this mail was sent to you, please ignore it silently.
|
||||
|
||||
%s administrators.
|
||||
|
||||
NICK_SENDPASS_OK
|
||||
Has³o do nicka %s zosta³o wys³ane.
|
||||
@@ -1128,9 +1119,8 @@ NICK_RESETPASS_MESSAGE
|
||||
|
||||
You have requested to have the password for %s reset.
|
||||
To reset your password, type %R%s CONFIRM %s
|
||||
If you don't know why this mail is sent to you, please ignore it silently.
|
||||
|
||||
PLEASE DON'T ANSWER TO THIS MAIL!
|
||||
If you don't know why this mail was sent to you, please ignore it silently.
|
||||
|
||||
%s administrators.
|
||||
NICK_RESETPASS_COMPLETE
|
||||
@@ -1189,22 +1179,15 @@ NICK_ENTER_REG_CODE
|
||||
NICK_REG_MAIL_SUBJECT
|
||||
Rejestracja nicka %s
|
||||
|
||||
NICK_REG_MAIL_HEAD
|
||||
Witaj!
|
||||
|
||||
NICK_REG_MAIL_LINE_1
|
||||
Chcesz zarejestrowaæ nastêpuj±cy nick: %s.
|
||||
|
||||
NICK_REG_MAIL_LINE_2
|
||||
Proszê napisaæ %R%s CONFIRM %s aby dokoñczyæ rejestracjê.
|
||||
|
||||
NICK_REG_MAIL_LINE_3
|
||||
Je¶li nie wiesz dlaczego ta wiadomo¶æ dotar³a do Ciebie zignoruj j±. Je¶li sytuacja bêdzie siê powtarzaæ skontaktuj siê z administratorem sieci.
|
||||
NICK_REG_MAIL_LINE_4
|
||||
PROSZÊ NIE ODPOWIADAÆ NA T¡ WIADOMO¦Æ!
|
||||
|
||||
NICK_REG_MAIL_LINE_5
|
||||
Administratorzy sieci %s.
|
||||
NICK_REG_MAIL
|
||||
Hi,
|
||||
|
||||
You have requested to register the nickname %s on %s.
|
||||
Please type " %R%s confirm %s " to complete registration.
|
||||
|
||||
If you don't know why this mail was sent to you, please ignore it silently.
|
||||
|
||||
%s administrators.
|
||||
|
||||
NICK_GETPASS_PASSCODE_IS
|
||||
Kod rejestracyjny dla %s to %s.
|
||||
@@ -2640,14 +2623,14 @@ MEMO_INFO_X_NOTIFY_SIGNON
|
||||
MEMO_MAIL_SUBJECT
|
||||
Nowa wiadomo¶æ
|
||||
|
||||
MEMO_MAIL_TEXT1
|
||||
Witaj %s!
|
||||
|
||||
MEMO_MAIL_TEXT2
|
||||
W³a¶nie nadesz³a now± wiadomo¶æ od %s, ma numer %d.
|
||||
|
||||
MEMO_MAIL_TEXT3
|
||||
Tre¶æ wiadomo¶ci:
|
||||
NICK_MAIL_TEXT
|
||||
Hi %s
|
||||
|
||||
You've just received a new memo from %s. This is memo number %d.
|
||||
|
||||
Memo text:
|
||||
|
||||
%s
|
||||
|
||||
# RSEND responses
|
||||
MEMO_RSEND_PLEASE_WAIT
|
||||
|
||||
@@ -871,18 +871,15 @@ NICK_SENDPASS_UNAVAILABLE
|
||||
Comando SENDPASS não disponível: modo de encriptação ativado.
|
||||
NICK_SENDPASS_SUBJECT
|
||||
Senha do nick (%s)
|
||||
NICK_SENDPASS_HEAD
|
||||
Olá,
|
||||
NICK_SENDPASS_LINE_1
|
||||
Você pediu para que a senha do nick %s fosse enviada por e-mail.
|
||||
NICK_SENDPASS_LINE_2
|
||||
A senha é %s. Por motivos de segurança, recomendamos que você mude sua senha após ler este e-mail.
|
||||
NICK_SENDPASS_LINE_3
|
||||
Se você não souba porque este e-mail lhe foi enviado, por favor ignore-o.
|
||||
NICK_SENDPASS_LINE_4
|
||||
NÃO RESPONDA A ESTE E-MAIL!
|
||||
NICK_SENDPASS_LINE_5
|
||||
Administradores %s.
|
||||
NICK_SENDPASS
|
||||
Hi,
|
||||
|
||||
You have requested to receive the password of nickname %s by e-mail.
|
||||
The password is %s. For security purposes, you should change it as soon as you receive this mail.
|
||||
|
||||
If you don't know why this mail was sent to you, please ignore it silently.
|
||||
|
||||
%s administrators.
|
||||
NICK_SENDPASS_OK
|
||||
Senha para %s foi enviada.
|
||||
|
||||
@@ -896,9 +893,8 @@ NICK_RESETPASS_MESSAGE
|
||||
|
||||
You have requested to have the password for %s reset.
|
||||
To reset your password, type %R%s CONFIRM %s
|
||||
If you don't know why this mail is sent to you, please ignore it silently.
|
||||
|
||||
PLEASE DON'T ANSWER TO THIS MAIL!
|
||||
If you don't know why this mail was sent to you, please ignore it silently.
|
||||
|
||||
%s administrators.
|
||||
NICK_RESETPASS_COMPLETE
|
||||
@@ -943,18 +939,15 @@ NICK_ENTER_REG_CODE
|
||||
O passcode foi enviado para %s, por favor digite %R%s confirm <passcode> para completar o registro.
|
||||
NICK_REG_MAIL_SUBJECT
|
||||
Registro de nick (%s)
|
||||
NICK_REG_MAIL_HEAD
|
||||
Olá,
|
||||
NICK_REG_MAIL_LINE_1
|
||||
Você solicitou o registro do seguinte nick: %s.
|
||||
NICK_REG_MAIL_LINE_2
|
||||
Por favor digite %R%s confirm %s para completar o registro.
|
||||
NICK_REG_MAIL_LINE_3
|
||||
Se você não sabe porque este e-mail lhe foi enviado, por favor ignore-o com sigilo.
|
||||
NICK_REG_MAIL_LINE_4
|
||||
POR FAVOR NÃO RESPONDA A ESTE E-MAIL!
|
||||
NICK_REG_MAIL_LINE_5
|
||||
Administradores %s.
|
||||
NICK_REG_MAIL
|
||||
Hi,
|
||||
|
||||
You have requested to register the nickname %s on %s.
|
||||
Please type " %R%s confirm %s " to complete registration.
|
||||
|
||||
If you don't know why this mail was sent to you, please ignore it silently.
|
||||
|
||||
%s administrators.
|
||||
NICK_GETPASS_PASSCODE_IS
|
||||
Passcode para %s é %s.
|
||||
NICK_FORCE_REG
|
||||
@@ -2018,12 +2011,14 @@ MEMO_INFO_X_NOTIFY_SIGNON
|
||||
# Memo2Mail responses
|
||||
MEMO_MAIL_SUBJECT
|
||||
Novo memo
|
||||
MEMO_MAIL_TEXT1
|
||||
Olá %s
|
||||
MEMO_MAIL_TEXT2
|
||||
Você recebeu um novo memo de %s. Este é seu memo número %d.
|
||||
MEMO_MAIL_TEXT3
|
||||
Mensagem do memo:
|
||||
NICK_MAIL_TEXT
|
||||
Hi %s
|
||||
|
||||
You've just received a new memo from %s. This is memo number %d.
|
||||
|
||||
Memo text:
|
||||
|
||||
%s
|
||||
|
||||
# RSEND responses
|
||||
MEMO_RSEND_PLEASE_WAIT
|
||||
|
||||
@@ -853,18 +853,15 @@ NICK_SENDPASS_UNAVAILABLE
|
||||
Êîìàíäà SENDPASS íåäîñòóïíà, òàê êàê âêëþ÷åíî øèôðîâàíèå ïàðîëåé.
|
||||
NICK_SENDPASS_SUBJECT
|
||||
Ïàðîëü äëÿ íèêà %s
|
||||
NICK_SENDPASS_HEAD
|
||||
Äîáðîãî âðåìåíè ñóòîê, ìíîãîóâàæàåìûé/àÿ!
|
||||
NICK_SENDPASS_LINE_1
|
||||
Áûë ïîëó÷åí çàïðîñ íà âîññòàíîâëåíèå ïàðîëÿ îò âàøåãî íèêà %s
|
||||
NICK_SENDPASS_LINE_2
|
||||
Âàø ïàðîëü %s * Äëÿ áîëüøåé áåçîïàñíîñòè, ðåêîìåíäóåòñÿ èçìåíèòü åãî êàê ìîæíî ñêîðåå.
|
||||
NICK_SENDPASS_LINE_3
|
||||
Åñëè âû íå çàïðàøèâàëè ýòî ïèñüìî, ïðîñòî ïðîèãíîðèðóéòå åãî.
|
||||
NICK_SENDPASS_LINE_4
|
||||
ÏÎÆÀËÓÉÑÒÀ, ÍÅ ÎÒÂÅ×ÀÉÒÅ ÍÀ ÝÒÎ ÏÈÑÜÌÎ!
|
||||
NICK_SENDPASS_LINE_5
|
||||
Àäìèíèñòðàöèÿ ñåòè %s.
|
||||
NICK_SENDPASS
|
||||
Hi,
|
||||
|
||||
You have requested to receive the password of nickname %s by e-mail.
|
||||
The password is %s. For security purposes, you should change it as soon as you receive this mail.
|
||||
|
||||
If you don't know why this mail was sent to you, please ignore it silently.
|
||||
|
||||
%s administrators.
|
||||
NICK_SENDPASS_OK
|
||||
Ïàðîëü äëÿ íèêà %s áûë âûñëàí íà åãî email-àäðåñ.
|
||||
|
||||
@@ -878,9 +875,8 @@ NICK_RESETPASS_MESSAGE
|
||||
|
||||
You have requested to have the password for %s reset.
|
||||
To reset your password, type %R%s CONFIRM %s
|
||||
If you don't know why this mail is sent to you, please ignore it silently.
|
||||
|
||||
PLEASE DON'T ANSWER TO THIS MAIL!
|
||||
If you don't know why this mail was sent to you, please ignore it silently.
|
||||
|
||||
%s administrators.
|
||||
NICK_RESETPASS_COMPLETE
|
||||
@@ -925,18 +921,15 @@ NICK_ENTER_REG_CODE
|
||||
Auth-êîä áûë âûñëàí íà %s, äëÿ çàâåðøåíèÿ ðåãèñòðàöèè èñïîëüçóéòå êîìàíäó %R%s confirm auth-êîä
|
||||
NICK_REG_MAIL_SUBJECT
|
||||
Ðåãèñòðàöèÿ íèêà %s
|
||||
NICK_REG_MAIL_HEAD
|
||||
Äîáðîãî âðåìåíè ñóòîê, ìíîãîóâàæàåìûé/àÿ!
|
||||
NICK_REG_MAIL_LINE_1
|
||||
Âû çàïðîñèëè ðåãèñòðàöèþ íèêà %s
|
||||
NICK_REG_MAIL_LINE_2
|
||||
Äëÿ çàâåðøåíèÿ ïðîöåññà ðåãèñòðàöèè íèêà, âîñïîëüçóéòåñü êîìàíäîé %R%s CONFIRM %s
|
||||
NICK_REG_MAIL_LINE_3
|
||||
Åñëè âû íå çàïðàøèâàëè ýòî ïèñüìî - ïðîñòî ïðîèãíîðèðóéòå åãî.
|
||||
NICK_REG_MAIL_LINE_4
|
||||
ÏÎÆÀËÓÉÑÒÀ, ÍÅ ÎÒÂÅ×ÀÉÒÅ ÍÀ ÝÒÎ ÏÈÑÜÌÎ!
|
||||
NICK_REG_MAIL_LINE_5
|
||||
Àäìèíèñòðàöèÿ ñåòè %s.
|
||||
NICK_REG_MAIL
|
||||
Hi,
|
||||
|
||||
You have requested to register the nickname %s on %s.
|
||||
Please type " %R%s confirm %s " to complete registration.
|
||||
|
||||
If you don't know why this mail was sent to you, please ignore it silently.
|
||||
|
||||
%s administrators.
|
||||
NICK_GETPASS_PASSCODE_IS
|
||||
Ïàðîëü äëÿ íèêà %s - %s.
|
||||
NICK_FORCE_REG
|
||||
@@ -1995,13 +1988,15 @@ MEMO_INFO_X_NOTIFY_SIGNON
|
||||
# Memo2Mail responses
|
||||
MEMO_MAIL_SUBJECT
|
||||
Íîâîå ìåìî-ñîîáùåíèå
|
||||
MEMO_MAIL_TEXT1
|
||||
Çäðàñòâóéòå %s.
|
||||
MEMO_MAIL_TEXT2
|
||||
Âû ïîëó÷èëè íîâîå ìåìî-ñîîáùåíèå îò %s. Íîìåð ñîîáùåíèÿ: %d.
|
||||
MEMO_MAIL_TEXT3
|
||||
Òåêñò ñîîáùåíèÿ:
|
||||
NICK_MAIL_TEXT
|
||||
Hi %s
|
||||
|
||||
You've just received a new memo from %s. This is memo number %d.
|
||||
|
||||
Memo text:
|
||||
|
||||
%s
|
||||
|
||||
# RSEND responses
|
||||
MEMO_RSEND_PLEASE_WAIT
|
||||
Ïîæàëóéñòà, ïîäîæäèòå %d ñåêóíä ïåðåä ïîâòîðíûì èñïîëüçîâàíèåì êîìàíäû RSEND.
|
||||
|
||||
@@ -872,18 +872,15 @@ NICK_SENDPASS_UNAVAILABLE
|
||||
SENDPASS komutu devre dýþý çünkü þifreleme(encryption) devrede.
|
||||
NICK_SENDPASS_SUBJECT
|
||||
Nick þifresi (%s)
|
||||
NICK_SENDPASS_HEAD
|
||||
Selam,
|
||||
NICK_SENDPASS_LINE_1
|
||||
%s nickinizin þifresinin e-mail adresinize yollanmasýný istemiþsiniz.
|
||||
NICK_SENDPASS_LINE_2
|
||||
Nickinizin Þifresi %s Güvenlik nedenlerinden dolayý, bu maili aldýktan sonra deðiþtirseniz iyi olur.
|
||||
NICK_SENDPASS_LINE_3
|
||||
Eðer bu mailin neden size gönderildiðini bilmiyorsanýz, maili ciddiye almayýn.
|
||||
NICK_SENDPASS_LINE_4
|
||||
LÜTFEN BU MAÝLE CEVAP VERMEYÝN!
|
||||
NICK_SENDPASS_LINE_5
|
||||
%s yönetimi.
|
||||
NICK_SENDPASS
|
||||
Hi,
|
||||
|
||||
You have requested to receive the password of nickname %s by e-mail.
|
||||
The password is %s. For security purposes, you should change it as soon as you receive this mail.
|
||||
|
||||
If you don't know why this mail was sent to you, please ignore it silently.
|
||||
|
||||
%s administrators.
|
||||
NICK_SENDPASS_OK
|
||||
%s nickinin þifresi gönderildi.
|
||||
|
||||
@@ -897,9 +894,8 @@ NICK_RESETPASS_MESSAGE
|
||||
|
||||
You have requested to have the password for %s reset.
|
||||
To reset your password, type %R%s CONFIRM %s
|
||||
If you don't know why this mail is sent to you, please ignore it silently.
|
||||
|
||||
PLEASE DON'T ANSWER TO THIS MAIL!
|
||||
If you don't know why this mail was sent to you, please ignore it silently.
|
||||
|
||||
%s administrators.
|
||||
NICK_RESETPASS_COMPLETE
|
||||
@@ -950,17 +946,14 @@ NICK_ENTER_REG_CODE
|
||||
A passcode has been sent to %s, please type %R%s confirm <passcode> to complete registration
|
||||
NICK_REG_MAIL_SUBJECT
|
||||
Nickname Registration (%s)
|
||||
NICK_REG_MAIL_HEAD
|
||||
NICK_REG_MAIL
|
||||
Hi,
|
||||
NICK_REG_MAIL_LINE_1
|
||||
You have requested to register the following nickname %s.
|
||||
NICK_REG_MAIL_LINE_2
|
||||
|
||||
You have requested to register the nickname %s on %s.
|
||||
Please type " %R%s confirm %s " to complete registration.
|
||||
NICK_REG_MAIL_LINE_3
|
||||
If you don't know why this mail is sent to you, please ignore it silently.
|
||||
NICK_REG_MAIL_LINE_4
|
||||
PLEASE DON'T ANSWER TO THIS MAIL!
|
||||
NICK_REG_MAIL_LINE_5
|
||||
|
||||
If you don't know why this mail was sent to you, please ignore it silently.
|
||||
|
||||
%s administrators.
|
||||
NICK_GETPASS_PASSCODE_IS
|
||||
Passcode for %s is %s.
|
||||
@@ -2036,12 +2029,14 @@ MEMO_INFO_X_NOTIFY_SIGNON
|
||||
# Standard responses
|
||||
MEMO_MAIL_SUBJECT
|
||||
New memo
|
||||
MEMO_MAIL_TEXT1
|
||||
NICK_MAIL_TEXT
|
||||
Hi %s
|
||||
MEMO_MAIL_TEXT2
|
||||
|
||||
You've just received a new memo from %s. This is memo number %d.
|
||||
MEMO_MAIL_TEXT3
|
||||
Memo Text:
|
||||
|
||||
Memo text:
|
||||
|
||||
%s
|
||||
|
||||
###########################################################################
|
||||
#
|
||||
|
||||
+2
-2
@@ -9,7 +9,7 @@ INCLUDES = ../include/commands.h ../include/defs.h ../include/language.h \
|
||||
../include/messages.h ../include/services.h \
|
||||
../include/timers.h ../include/extern.h \
|
||||
../include/modules.h ../include/slist.h ../include/hashcomp.h \
|
||||
../include/threadengine.h
|
||||
../include/threadengine.h ../include/mail.h
|
||||
|
||||
MAKEARGS = 'CFLAGS=${CFLAGS}' 'CC=${CC}' 'ANOPELIBS=${ANOPELIBS}' \
|
||||
'LDFLAGS=${LDFLAGS}' 'INSTDIR=${INSTDIR}' 'INSTALL=${INSTALL}' \
|
||||
@@ -51,7 +51,7 @@ ircd.o: ircd.c $(INCLUDES)
|
||||
hostserv.o: hostserv.c $(INCLUDES)
|
||||
language.o: language.c $(INCLUDES)
|
||||
log.o: log.c $(INCLUDES)
|
||||
mail.o: mail.c $(INCLUDES)
|
||||
mail.o: mail.cpp $(INCLUDES)
|
||||
main.o: main.c $(INCLUDES)
|
||||
memory.o: memory.c $(INCLUDES)
|
||||
memoserv.o: memoserv.c $(INCLUDES)
|
||||
|
||||
+10
-28
@@ -14,7 +14,7 @@
|
||||
|
||||
#include "module.h"
|
||||
|
||||
int do_sendregmail(User *u, NickRequest *nr);
|
||||
static bool SendRegmail(User *u, NickRequest *nr);
|
||||
|
||||
class CommandNSConfirm : public Command
|
||||
{
|
||||
@@ -279,7 +279,7 @@ class CommandNSRegister : public CommandNSConfirm
|
||||
FOREACH_MOD(I_OnMakeNickRequest, OnMakeNickRequest(nr));
|
||||
if (Config.NSEmailReg)
|
||||
{
|
||||
if (!do_sendregmail(u, nr))
|
||||
if (SendRegmail(u, nr))
|
||||
{
|
||||
notice_lang(Config.s_NickServ, u, NICK_ENTER_REG_CODE, email, Config.s_NickServ);
|
||||
Alog() << Config.s_NickServ << ": sent registration verification code to " << nr->email;
|
||||
@@ -337,7 +337,7 @@ class CommandNSResend : public Command
|
||||
notice_lang(Config.s_NickServ, u, MAIL_LATER);
|
||||
return MOD_CONT;
|
||||
}
|
||||
if (!do_sendregmail(u, nr))
|
||||
if (!SendRegmail(u, nr))
|
||||
{
|
||||
nr->lastmail = time(NULL);
|
||||
notice_lang(Config.s_NickServ, u, NICK_REG_RESENT, nr->email);
|
||||
@@ -375,6 +375,7 @@ class NSRegister : public Module
|
||||
|
||||
ModuleManager::Attach(I_OnNickServHelp, this);
|
||||
}
|
||||
|
||||
void OnNickServHelp(User *u)
|
||||
{
|
||||
notice_lang(Config.s_NickServ, u, NICK_HELP_CMD_REGISTER);
|
||||
@@ -386,33 +387,14 @@ class NSRegister : public Module
|
||||
}
|
||||
};
|
||||
|
||||
/*************************************************************************/
|
||||
|
||||
int do_sendregmail(User *u, NickRequest *nr)
|
||||
static bool SendRegmail(User *u, NickRequest *nr)
|
||||
{
|
||||
MailInfo *mail = NULL;
|
||||
char buf[BUFSIZE];
|
||||
char subject[BUFSIZE], message[BUFSIZE];
|
||||
|
||||
if (!nr && !u)
|
||||
return -1;
|
||||
snprintf(buf, sizeof(buf), getstring(NICK_REG_MAIL_SUBJECT), nr->nick);
|
||||
mail = MailRegBegin(u, nr, buf, Config.s_NickServ);
|
||||
if (!mail)
|
||||
return -1;
|
||||
fprintf(mail->pipe, "%s", getstring(NICK_REG_MAIL_HEAD));
|
||||
fprintf(mail->pipe, "\n\n");
|
||||
fprintf(mail->pipe, getstring(NICK_REG_MAIL_LINE_1), nr->nick);
|
||||
fprintf(mail->pipe, "\n\n");
|
||||
fprintf(mail->pipe, getstring(NICK_REG_MAIL_LINE_2), Config.s_NickServ, nr->passcode.c_str());
|
||||
fprintf(mail->pipe, "\n\n");
|
||||
fprintf(mail->pipe, "%s", getstring(NICK_REG_MAIL_LINE_3));
|
||||
fprintf(mail->pipe, "\n\n");
|
||||
fprintf(mail->pipe, "%s", getstring(NICK_REG_MAIL_LINE_4));
|
||||
fprintf(mail->pipe, "\n\n");
|
||||
fprintf(mail->pipe, getstring(NICK_REG_MAIL_LINE_5), Config.NetworkName);
|
||||
fprintf(mail->pipe, "\n.\n");
|
||||
MailEnd(mail);
|
||||
return 0;
|
||||
snprintf(subject, sizeof(subject), getstring(NICK_REG_MAIL_SUBJECT), nr->nick);
|
||||
snprintf(message, sizeof(message), getstring(NICK_REG_MAIL), nr->nick, Config.NetworkName, Config.s_NickServ, nr->passcode.c_str(), Config.NetworkName);
|
||||
|
||||
return Mail(u, nr, Config.s_NickServ, subject, message);
|
||||
}
|
||||
|
||||
MODULE_INIT(NSRegister)
|
||||
|
||||
+41
-39
@@ -14,6 +14,8 @@
|
||||
|
||||
#include "module.h"
|
||||
|
||||
static bool SendResetEmail(User *u, NickAlias *na);
|
||||
|
||||
class CommandNSResetPass : public Command
|
||||
{
|
||||
public:
|
||||
@@ -33,41 +35,11 @@ class CommandNSResetPass : public Command
|
||||
notice_lang(Config.s_NickServ, u, NICK_X_FORBIDDEN, na->nick);
|
||||
else
|
||||
{
|
||||
char buf[BUFSIZE], message[BUFSIZE];
|
||||
snprintf(buf, sizeof(buf), getstring(na, NICK_RESETPASS_SUBJECT), na->nick);
|
||||
|
||||
MailInfo *mail = MailBegin(u, na->nc, buf, Config.s_NickServ);
|
||||
if (!mail)
|
||||
return MOD_CONT;
|
||||
|
||||
char passcode[20];
|
||||
int min = 1, max = 62;
|
||||
int chars[] = {
|
||||
' ', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l',
|
||||
'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x',
|
||||
'z', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L',
|
||||
'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y',
|
||||
'Z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9'
|
||||
};
|
||||
|
||||
int idx;
|
||||
for (idx = 0; idx < 20; ++idx)
|
||||
passcode[idx] = chars[1 + static_cast<int>((static_cast<float>(max - min)) * getrandom16() / 65536.0) + min];
|
||||
passcode[idx] = '\0';
|
||||
|
||||
snprintf(message, sizeof(message), getstring(na, NICK_RESETPASS_MESSAGE), na->nick, Config.s_NickServ, passcode, Config.NetworkName);
|
||||
fprintf(mail->pipe, "%s", message);
|
||||
fprintf(mail->pipe, "\n.\n");
|
||||
MailEnd(mail);
|
||||
|
||||
na->nc->Shrink("ns_resetpass_code");
|
||||
na->nc->Shrink("ns_resetpass_time");
|
||||
|
||||
na->nc->Extend("ns_resetpass_code", new ExtensibleItemPointerArray<char>(sstrdup(passcode)));
|
||||
na->nc->Extend("ns_resetpass_time", new ExtensibleItemRegular<time_t>(time(NULL)));
|
||||
|
||||
Alog() << Config.s_NickServ << ": " << u->GetMask() << " used RESETPASS on " << na->nick << " (" << na->nc->display << ")";
|
||||
notice_lang(Config.s_NickServ, u, NICK_RESETPASS_COMPLETE, na->nick);
|
||||
if (SendResetEmail(u, na))
|
||||
{
|
||||
Alog() << Config.s_NickServ << ": " << u->GetMask() << " used RESETPASS on " << na->nick << " (" << na->nc->display << ")";
|
||||
notice_lang(Config.s_NickServ, u, NICK_RESETPASS_COMPLETE, na->nick);
|
||||
}
|
||||
}
|
||||
|
||||
return MOD_CONT;
|
||||
@@ -110,14 +82,13 @@ class NSResetPass : public Module
|
||||
|
||||
EventReturn OnPreCommand(User *u, const std::string &service, const ci::string &command, const std::vector<ci::string> ¶ms)
|
||||
{
|
||||
time_t t;
|
||||
char *c;
|
||||
|
||||
if (service == Config.s_NickServ && command == "CONFIRM" && !params.empty())
|
||||
{
|
||||
NickAlias *na = findnick(u->nick);
|
||||
|
||||
if (na && na->nc->GetExtArray("ns_resetpass_code", c) && na->nc->GetExtRegular<time_t>("ns_resetpass_time", t))
|
||||
time_t t;
|
||||
std::string c;
|
||||
if (na && na->nc->GetExtRegular("ns_resetpass_code", c) && na->nc->GetExtRegular("ns_resetpass_time", t))
|
||||
{
|
||||
if (t < time(NULL) - 3600)
|
||||
{
|
||||
@@ -167,4 +138,35 @@ class NSResetPass : public Module
|
||||
}
|
||||
};
|
||||
|
||||
static bool SendResetEmail(User *u, NickAlias *na)
|
||||
{
|
||||
char subject[BUFSIZE], message[BUFSIZE], passcode[20];
|
||||
|
||||
snprintf(subject, sizeof(subject), getstring(na, NICK_RESETPASS_SUBJECT), na->nick);
|
||||
|
||||
int min = 1, max = 62;
|
||||
int chars[] = {
|
||||
' ', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l',
|
||||
'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x',
|
||||
'z', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L',
|
||||
'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y',
|
||||
'Z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9'
|
||||
};
|
||||
|
||||
int idx;
|
||||
for (idx = 0; idx < 20; ++idx)
|
||||
passcode[idx] = chars[1 + static_cast<int>((static_cast<float>(max - min)) * getrandom16() / 65536.0) + min];
|
||||
passcode[idx] = '\0';
|
||||
|
||||
snprintf(message, sizeof(message), getstring(na, NICK_RESETPASS_MESSAGE), na->nick, Config.s_NickServ, passcode, Config.NetworkName);
|
||||
|
||||
na->nc->Shrink("ns_resetpass_code");
|
||||
na->nc->Shrink("ns_resetpass_time");
|
||||
|
||||
na->nc->Extend("ns_resetpass_code", new ExtensibleItemRegular<std::string>(passcode));
|
||||
na->nc->Extend("ns_resetpass_time", new ExtensibleItemRegular<time_t>(time(NULL)));
|
||||
|
||||
return Mail(u, na->nc, Config.s_NickServ, subject, message);
|
||||
}
|
||||
|
||||
MODULE_INIT(NSResetPass)
|
||||
|
||||
+18
-25
@@ -14,6 +14,8 @@
|
||||
|
||||
#include "module.h"
|
||||
|
||||
static bool SendPassMail(User *u, NickAlias *na, const std::string &pass);
|
||||
|
||||
class CommandNSSendPass : public Command
|
||||
{
|
||||
public:
|
||||
@@ -34,34 +36,14 @@ class CommandNSSendPass : public Command
|
||||
notice_lang(Config.s_NickServ, u, NICK_X_FORBIDDEN, na->nick);
|
||||
else
|
||||
{
|
||||
char buf[BUFSIZE];
|
||||
std::string tmp_pass;
|
||||
if (enc_decrypt(na->nc->pass,tmp_pass) == 1)
|
||||
{
|
||||
MailInfo *mail;
|
||||
|
||||
snprintf(buf, sizeof(buf), getstring(na, NICK_SENDPASS_SUBJECT), na->nick);
|
||||
mail = MailBegin(u, na->nc, buf, Config.s_NickServ);
|
||||
if (!mail)
|
||||
return MOD_CONT;
|
||||
|
||||
fprintf(mail->pipe, "%s", getstring(na, NICK_SENDPASS_HEAD));
|
||||
fprintf(mail->pipe, "\n\n");
|
||||
fprintf(mail->pipe, getstring(na, NICK_SENDPASS_LINE_1), na->nick);
|
||||
fprintf(mail->pipe, "\n\n");
|
||||
fprintf(mail->pipe, getstring(na, NICK_SENDPASS_LINE_2), tmp_pass.c_str());
|
||||
fprintf(mail->pipe, "\n\n");
|
||||
fprintf(mail->pipe, "%s", getstring(na, NICK_SENDPASS_LINE_3));
|
||||
fprintf(mail->pipe, "\n\n");
|
||||
fprintf(mail->pipe, "%s", getstring(na, NICK_SENDPASS_LINE_4));
|
||||
fprintf(mail->pipe, "\n\n");
|
||||
fprintf(mail->pipe, getstring(na, NICK_SENDPASS_LINE_5), Config.NetworkName);
|
||||
fprintf(mail->pipe, "\n.\n");
|
||||
|
||||
MailEnd(mail);
|
||||
|
||||
Alog() << Config.s_NickServ << ": " << u->GetMask() << " used SENDPASS on " << nick;
|
||||
notice_lang(Config.s_NickServ, u, NICK_SENDPASS_OK, nick);
|
||||
if (SendPassMail(u, na, tmp_pass))
|
||||
{
|
||||
Alog() << Config.s_NickServ << ": " << u->GetMask() << " used SENDPASS on " << nick;
|
||||
notice_lang(Config.s_NickServ, u, NICK_SENDPASS_OK, nick);
|
||||
}
|
||||
}
|
||||
else
|
||||
notice_lang(Config.s_NickServ, u, NICK_SENDPASS_UNAVAILABLE);
|
||||
@@ -102,10 +84,21 @@ class NSSendPass : public Module
|
||||
|
||||
ModuleManager::Attach(I_OnNickServHelp, this);
|
||||
}
|
||||
|
||||
void OnNickServHelp(User *u)
|
||||
{
|
||||
notice_lang(Config.s_NickServ, u, NICK_HELP_CMD_SENDPASS);
|
||||
}
|
||||
};
|
||||
|
||||
static bool SendPassMail(User *u, NickAlias *na, const std::string &pass)
|
||||
{
|
||||
char subject[BUFSIZE], message[BUFSIZE];
|
||||
|
||||
snprintf(subject, sizeof(subject), getstring(na, NICK_SENDPASS_SUBJECT), na->nick);
|
||||
snprintf(message, sizeof(message), getstring(na, NICK_SENDPASS), na->nick, pass.c_str(), Config.NetworkName);
|
||||
|
||||
return Mail(u, na->nc, Config.s_NickServ, subject, message);
|
||||
}
|
||||
|
||||
MODULE_INIT(NSSendPass)
|
||||
|
||||
-283
@@ -1,283 +0,0 @@
|
||||
/* Mail utility routines.
|
||||
*
|
||||
* (C) 2003-2010 Anope Team
|
||||
* Contact us at team@anope.org
|
||||
*
|
||||
* Please read COPYING and README for further details.
|
||||
*
|
||||
* Based on the original code of Epona by Lara.
|
||||
* Based on the original code of Services by Andy Church.
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
#include "services.h"
|
||||
#include "language.h"
|
||||
|
||||
/*************************************************************************/
|
||||
|
||||
/**
|
||||
* Begins to send a mail. Must be followed by a MailEnd call.
|
||||
* Returns NULL if the call failed. Error messages are
|
||||
* automatically sent to the user.
|
||||
* @param u the User struct
|
||||
* @param nr NickReqest Struct
|
||||
* @param subject Subject of the email
|
||||
* @param service Service to respond with
|
||||
* @return MailInfo struct
|
||||
*/
|
||||
MailInfo *MailRegBegin(User * u, NickRequest * nr, char *subject,
|
||||
char *service)
|
||||
{
|
||||
int timeToWait = 0;
|
||||
if (!u || !nr || !subject || !service) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (!Config.UseMail) {
|
||||
notice_lang(service, u, MAIL_DISABLED);
|
||||
} else if ((time(NULL) - u->lastmail < Config.MailDelay)) {
|
||||
timeToWait = Config.MailDelay - (time(NULL) - u->lastmail);
|
||||
notice_lang(service, u, MAIL_DELAYED, timeToWait);
|
||||
} else if (!nr->email) {
|
||||
notice_lang(service, u, MAIL_INVALID, nr->nick);
|
||||
} else {
|
||||
MailInfo *mail;
|
||||
|
||||
mail = new MailInfo;
|
||||
mail->sender = u;
|
||||
mail->recipient = NULL;
|
||||
mail->recip = nr;
|
||||
|
||||
if (!(mail->pipe = popen(Config.SendMailPath, "w"))) {
|
||||
delete mail;
|
||||
notice_lang(service, u, MAIL_LATER);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
fprintf(mail->pipe, "From: %s\n", Config.SendFrom);
|
||||
if (Config.DontQuoteAddresses) {
|
||||
fprintf(mail->pipe, "To: %s <%s>\n", nr->nick, nr->email);
|
||||
} else {
|
||||
fprintf(mail->pipe, "To: \"%s\" <%s>\n", nr->nick, nr->email);
|
||||
}
|
||||
fprintf(mail->pipe, "Subject: %s\n", subject);
|
||||
return mail;
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/*************************************************************************/
|
||||
|
||||
/**
|
||||
* Begins to send a mail. Must be followed by a MailEnd call.
|
||||
* Returns NULL if the call failed. Error messages are
|
||||
* automatically sent to the user.
|
||||
* @param u the User struct
|
||||
* @param nc NickCore Struct
|
||||
* @param subject Subject of the email
|
||||
* @param service Service to respond with
|
||||
* @return MailInfo struct
|
||||
*/
|
||||
MailInfo *MailBegin(User * u, NickCore * nc, char *subject, char *service)
|
||||
{
|
||||
if (!u || !nc || !subject || !service) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (!Config.UseMail) {
|
||||
notice_lang(service, u, MAIL_DISABLED);
|
||||
} else if (((time(NULL) - u->lastmail < Config.MailDelay)
|
||||
|| (time(NULL) - nc->lastmail < Config.MailDelay))
|
||||
&& !(u->Account() && u->Account()->IsServicesOper())) {
|
||||
notice_lang(service, u, MAIL_DELAYED, Config.MailDelay);
|
||||
} else if (!nc->email) {
|
||||
notice_lang(service, u, MAIL_INVALID, nc->display);
|
||||
} else {
|
||||
MailInfo *mail;
|
||||
|
||||
mail = new MailInfo;
|
||||
mail->sender = u;
|
||||
mail->recipient = nc;
|
||||
mail->recip = NULL;
|
||||
|
||||
if (!(mail->pipe = popen(Config.SendMailPath, "w"))) {
|
||||
delete mail;
|
||||
notice_lang(service, u, MAIL_LATER);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
fprintf(mail->pipe, "From: %s\n", Config.SendFrom);
|
||||
if (Config.DontQuoteAddresses) {
|
||||
fprintf(mail->pipe, "To: %s <%s>\n", nc->display, nc->email);
|
||||
} else {
|
||||
fprintf(mail->pipe, "To: \"%s\" <%s>\n", nc->display,
|
||||
nc->email);
|
||||
}
|
||||
fprintf(mail->pipe, "Subject: %s\n", subject);
|
||||
|
||||
return mail;
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/*************************************************************************/
|
||||
|
||||
/**
|
||||
* new function to send memo mails
|
||||
* @param nc NickCore Struct
|
||||
* @return MailInfo struct
|
||||
*/
|
||||
MailInfo *MailMemoBegin(NickCore * nc)
|
||||
{
|
||||
|
||||
if (!nc)
|
||||
return NULL;
|
||||
|
||||
if (!Config.UseMail || !nc->email) {
|
||||
return NULL;
|
||||
|
||||
} else {
|
||||
MailInfo *mail;
|
||||
|
||||
mail = new MailInfo;
|
||||
mail->sender = NULL;
|
||||
mail->recipient = nc;
|
||||
mail->recip = NULL;
|
||||
|
||||
if (!(mail->pipe = popen(Config.SendMailPath, "w"))) {
|
||||
delete mail;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
fprintf(mail->pipe, "From: %s\n", Config.SendFrom);
|
||||
if (Config.DontQuoteAddresses) {
|
||||
fprintf(mail->pipe, "To: %s <%s>\n", nc->display, nc->email);
|
||||
} else {
|
||||
fprintf(mail->pipe, "To: \"%s\" <%s>\n", nc->display,
|
||||
nc->email);
|
||||
}
|
||||
fprintf(mail->pipe, "Subject: %s\n",
|
||||
getstring(MEMO_MAIL_SUBJECT));
|
||||
return mail;
|
||||
}
|
||||
}
|
||||
|
||||
/*************************************************************************/
|
||||
|
||||
/**
|
||||
* Finish to send the mail. Cleanup everything.
|
||||
* @param mail MailInfo Struct
|
||||
* @return void
|
||||
*/
|
||||
void MailEnd(MailInfo * mail)
|
||||
{
|
||||
/* - param checking modified because we don't
|
||||
have an user sending this mail.
|
||||
Certus, 02.04.2004 */
|
||||
|
||||
if (!mail || !mail->pipe) { /* removed sender check */
|
||||
return;
|
||||
}
|
||||
|
||||
if (!mail->recipient && !mail->recip) {
|
||||
return;
|
||||
}
|
||||
|
||||
pclose(mail->pipe);
|
||||
|
||||
if (mail->sender) /* added sender check */
|
||||
mail->sender->lastmail = time(NULL);
|
||||
|
||||
if (mail->recipient)
|
||||
mail->recipient->lastmail = time(NULL);
|
||||
else
|
||||
mail->recip->lastmail = time(NULL);
|
||||
|
||||
|
||||
delete mail;
|
||||
}
|
||||
|
||||
/*************************************************************************/
|
||||
|
||||
/**
|
||||
* Resets the MailDelay protection.
|
||||
* @param u the User struct
|
||||
* @param nc NickCore Struct
|
||||
* @return void
|
||||
*/
|
||||
void MailReset(User * u, NickCore * nc)
|
||||
{
|
||||
if (u)
|
||||
u->lastmail = 0;
|
||||
if (nc)
|
||||
nc->lastmail = 0;
|
||||
}
|
||||
|
||||
/*************************************************************************/
|
||||
|
||||
/**
|
||||
* Checks whether we have a valid, common e-mail address.
|
||||
* This is NOT entirely RFC compliant, and won't be so, because I said
|
||||
* *common* cases. ;) It is very unlikely that e-mail addresses that
|
||||
* are really being used will fail the check.
|
||||
*
|
||||
* FIXME: rewrite this a bit cleaner.
|
||||
* @param email Email to Validate
|
||||
* @return int
|
||||
*/
|
||||
int MailValidate(const char *email)
|
||||
{
|
||||
int has_period = 0, len;
|
||||
char copy[BUFSIZE], *domain;
|
||||
|
||||
static char specials[] =
|
||||
{ '(', ')', '<', '>', '@', ',', ';', ':', '\\', '\"', '[', ']',
|
||||
' '
|
||||
};
|
||||
|
||||
if (!email)
|
||||
return 0;
|
||||
strlcpy(copy, email, sizeof(copy));
|
||||
|
||||
domain = strchr(copy, '@');
|
||||
if (!domain)
|
||||
return 0;
|
||||
*domain = '\0';
|
||||
domain++;
|
||||
|
||||
/* Don't accept NULL copy or domain. */
|
||||
if (*copy == 0 || *domain == 0)
|
||||
return 0;
|
||||
|
||||
/* Check for forbidden characters in the name */
|
||||
for (unsigned int i = 0; i < strlen(copy); i++) {
|
||||
|
||||
if (copy[i] <= 31 || copy[i] >= 127)
|
||||
return 0;
|
||||
for (unsigned int j = 0; j < 13; j++)
|
||||
if (copy[i] == specials[j])
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Check for forbidden characters in the domain, and if it seems to be valid. */
|
||||
for (int i = 0; i < (len = strlen(domain)); i++) {
|
||||
if (domain[i] <= 31 || domain[i] >= 127)
|
||||
return 0;
|
||||
for (unsigned int j = 0; j < 13; j++)
|
||||
if (domain[i] == specials[j])
|
||||
return 0;
|
||||
if (domain[i] == '.') {
|
||||
if (i == 0 || i == len - 1)
|
||||
return 0;
|
||||
has_period = 1;
|
||||
}
|
||||
}
|
||||
|
||||
if (!has_period)
|
||||
return 0;
|
||||
|
||||
return 1;
|
||||
}
|
||||
+151
@@ -0,0 +1,151 @@
|
||||
#include "services.h"
|
||||
#include "language.h"
|
||||
|
||||
MailThread::~MailThread()
|
||||
{
|
||||
if (Success)
|
||||
Alog() << "Successfully delivered mail for " << MailTo << " (" << Addr << ")";
|
||||
else
|
||||
Alog() << "Error delivering mail for " << MailTo << " (" << Addr << ")";
|
||||
}
|
||||
|
||||
void MailThread::Run()
|
||||
{
|
||||
FILE *pipe = popen(Config.SendMailPath, "w");
|
||||
|
||||
if (!pipe)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
fprintf(pipe, "From: %s\n", Config.SendFrom);
|
||||
if (Config.DontQuoteAddresses)
|
||||
fprintf(pipe, "To: %s <%s>\n", MailTo.c_str(), Addr.c_str());
|
||||
else
|
||||
fprintf(pipe, "To: \"%s\" <%s>\n", MailTo.c_str(), Addr.c_str());
|
||||
fprintf(pipe, "Subject: %s\n", Subject.c_str());
|
||||
fprintf(pipe, "%s", Message.c_str());
|
||||
fprintf(pipe, "\n.\n");
|
||||
|
||||
pclose(pipe);
|
||||
|
||||
Success = true;
|
||||
}
|
||||
|
||||
bool Mail(User *u, NickRequest *nr, const std::string &service, const std::string &subject, const std::string &message)
|
||||
{
|
||||
if (!u || !nr || subject.empty() || service.empty() || message.empty())
|
||||
return false;
|
||||
|
||||
time_t t = time(NULL);
|
||||
|
||||
if (!Config.UseMail)
|
||||
notice_lang(service.c_str(), u, MAIL_DISABLED);
|
||||
else if (t - u->lastmail < Config.MailDelay)
|
||||
notice_lang(service.c_str(), u, MAIL_DELAYED, t - u->lastmail);
|
||||
else if (!nr->email)
|
||||
notice_lang(service.c_str(), u, MAIL_INVALID, nr->nick);
|
||||
else
|
||||
{
|
||||
u->lastmail = nr->lastmail = t;
|
||||
threadEngine.Start(new MailThread(nr->nick, nr->email, subject, message));
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
bool Mail(User *u, NickCore *nc, const std::string &service, const std::string &subject, const std::string &message)
|
||||
{
|
||||
if (!u || !nc || subject.empty() || service.empty() || message.empty())
|
||||
return false;
|
||||
|
||||
time_t t = time(NULL);
|
||||
|
||||
if (!Config.UseMail)
|
||||
notice_lang(service.c_str(), u, MAIL_DISABLED);
|
||||
else if (t - u->lastmail < Config.MailDelay)
|
||||
notice_lang(service.c_str(), u, MAIL_DELAYED, t - u->lastmail);
|
||||
else if (!nc->email)
|
||||
notice_lang(service.c_str(), u, MAIL_INVALID, nc->display);
|
||||
else
|
||||
{
|
||||
u->lastmail = nc->lastmail = t;
|
||||
threadEngine.Start(new MailThread(nc->display, nc->email, subject, message));
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
bool Mail(NickCore *nc, const std::string &subject, const std::string &message)
|
||||
{
|
||||
if (!Config.UseMail || !nc || !nc->email || subject.empty() || message.empty())
|
||||
return false;
|
||||
|
||||
nc->lastmail = time(NULL);
|
||||
threadEngine.Start(new MailThread(nc->display, nc->email, subject, message));
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks whether we have a valid, common e-mail address.
|
||||
* This is NOT entirely RFC compliant, and won't be so, because I said
|
||||
* *common* cases. ;) It is very unlikely that e-mail addresses that
|
||||
* are really being used will fail the check.
|
||||
*
|
||||
* @param email Email to Validate
|
||||
* @return bool
|
||||
*/
|
||||
bool MailValidate(const std::string &email)
|
||||
{
|
||||
bool has_period = false;
|
||||
char copy[BUFSIZE];
|
||||
|
||||
static char specials[] = {
|
||||
'(', ')', '<', '>', '@', ',', ';', ':', '\\', '\"', '[', ']', ' '
|
||||
};
|
||||
|
||||
if (email.empty())
|
||||
return false;
|
||||
strlcpy(copy, email.c_str(), sizeof(copy));
|
||||
|
||||
char *domain = strchr(copy, '@');
|
||||
if (!domain)
|
||||
return false;
|
||||
*domain++ = '\0';
|
||||
|
||||
/* Don't accept NULL copy or domain. */
|
||||
if (!*copy || !*domain)
|
||||
return false;
|
||||
|
||||
/* Check for forbidden characters in the name */
|
||||
for (unsigned int i = 0; i < strlen(copy); i++)
|
||||
{
|
||||
if (copy[i] <= 31 || copy[i] >= 127)
|
||||
return false;
|
||||
for (unsigned int j = 0; j < 13; j++)
|
||||
if (copy[i] == specials[j])
|
||||
return false;
|
||||
}
|
||||
|
||||
/* Check for forbidden characters in the domain */
|
||||
for (unsigned int i = 0; i < strlen(domain); i++)
|
||||
{
|
||||
if (domain[i] <= 31 || domain[i] >= 127)
|
||||
return false;
|
||||
for (unsigned int j = 0; j < 13; j++)
|
||||
if (domain[i] == specials[j])
|
||||
return false;
|
||||
if (domain[i] == '.')
|
||||
{
|
||||
if (i == 0 || i == strlen(domain) - 1)
|
||||
return false;
|
||||
has_period = true;
|
||||
}
|
||||
}
|
||||
|
||||
return has_period;
|
||||
}
|
||||
|
||||
+7
-22
@@ -18,7 +18,7 @@
|
||||
/* *INDENT-OFF* */
|
||||
|
||||
E void moduleAddMemoServCmds();
|
||||
static void new_memo_mail(NickCore *nc, Memo *m);
|
||||
static bool SendMemoMail(NickCore *nc, Memo *m);
|
||||
E void rsend_notify(User *u, Memo *m, const char *chan);
|
||||
|
||||
/*************************************************************************/
|
||||
@@ -300,7 +300,7 @@ void memo_send(User * u, const char *name, const char *text, int z)
|
||||
/* if (MSNotifyAll) */
|
||||
/* let's get out the mail if set in the nickcore - certus */
|
||||
if (nc->HasFlag(NI_MEMO_MAIL))
|
||||
new_memo_mail(nc, m);
|
||||
SendMemoMail(nc, m);
|
||||
} else {
|
||||
Channel *c;
|
||||
|
||||
@@ -356,32 +356,17 @@ int delmemo(MemoInfo * mi, int num)
|
||||
|
||||
/*************************************************************************/
|
||||
|
||||
static void new_memo_mail(NickCore * nc, Memo * m)
|
||||
static bool SendMemoMail(NickCore *nc, Memo *m)
|
||||
{
|
||||
MailInfo *mail = NULL;
|
||||
char message[BUFSIZE];
|
||||
|
||||
if (!nc || !m)
|
||||
return;
|
||||
snprintf(message, sizeof(message), getstring(NICK_MAIL_TEXT), nc->display, m->sender.c_str(), m->number, m->text);
|
||||
|
||||
mail = MailMemoBegin(nc);
|
||||
if (!mail) {
|
||||
return;
|
||||
}
|
||||
fprintf(mail->pipe, getstring(MEMO_MAIL_TEXT1), nc->display);
|
||||
fprintf(mail->pipe, "\n");
|
||||
fprintf(mail->pipe, getstring(MEMO_MAIL_TEXT2), m->sender.c_str(),
|
||||
m->number);
|
||||
fprintf(mail->pipe, "\n\n");
|
||||
fprintf(mail->pipe, "%s", getstring(MEMO_MAIL_TEXT3));
|
||||
fprintf(mail->pipe, "\n\n");
|
||||
fprintf(mail->pipe, "%s", m->text);
|
||||
fprintf(mail->pipe, "\n");
|
||||
MailEnd(mail);
|
||||
return;
|
||||
return Mail(nc, getstring(MEMO_MAIL_SUBJECT), message);
|
||||
}
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
|
||||
/* Send receipt notification to sender. */
|
||||
|
||||
void rsend_notify(User * u, Memo * m, const char *chan)
|
||||
|
||||
@@ -1,14 +1,5 @@
|
||||
#include "services.h"
|
||||
|
||||
/** Join to the thread, sets the exit state to true
|
||||
*/
|
||||
void Thread::Join()
|
||||
{
|
||||
SetExitState();
|
||||
pthread_join(Handle, NULL);
|
||||
delete this;
|
||||
}
|
||||
|
||||
/* Threadengine attributes used by this thread engine */
|
||||
static pthread_attr_t threadengine_attr;
|
||||
|
||||
@@ -19,6 +10,11 @@ static void *entry_point(void *parameter)
|
||||
{
|
||||
Thread *thread = static_cast<Thread *>(parameter);
|
||||
thread->Run();
|
||||
if (!thread->GetExitState())
|
||||
{
|
||||
thread->Join();
|
||||
}
|
||||
delete thread;
|
||||
pthread_exit(0);
|
||||
}
|
||||
|
||||
@@ -39,6 +35,14 @@ ThreadEngine::~ThreadEngine()
|
||||
pthread_attr_destroy(&threadengine_attr);
|
||||
}
|
||||
|
||||
/** Join to the thread, sets the exit state to true
|
||||
*/
|
||||
void Thread::Join()
|
||||
{
|
||||
SetExitState();
|
||||
pthread_join(Handle, NULL);
|
||||
}
|
||||
|
||||
/** Start a new thread
|
||||
* @param thread A pointer to a newley allocated thread
|
||||
*/
|
||||
@@ -47,7 +51,7 @@ void ThreadEngine::Start(Thread *thread)
|
||||
if (pthread_create(&thread->Handle, &threadengine_attr, entry_point, thread))
|
||||
{
|
||||
delete thread;
|
||||
throw CoreException("Unable to create thread");
|
||||
throw CoreException("Unable to create thread: " + std::string(strerror(errno)));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+14
-10
@@ -1,14 +1,5 @@
|
||||
#include "services.h"
|
||||
|
||||
/** Join to the thread, sets the exit state to true
|
||||
*/
|
||||
void Thread::Join()
|
||||
{
|
||||
SetExitState();
|
||||
WaitForSingleObject(Handle, INFINITE);
|
||||
delete this;
|
||||
}
|
||||
|
||||
/** Entry point for the thread
|
||||
* @param paramter A Thread* cast to a void*
|
||||
*/
|
||||
@@ -16,6 +7,11 @@ static DWORD WINAPI entry_point(void *parameter)
|
||||
{
|
||||
Thread *thread = static_cast<Thread *>(parameter);
|
||||
thread->Run();
|
||||
if (!thread->GetExitState())
|
||||
{
|
||||
thread->Join();
|
||||
}
|
||||
delete thread;
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -31,6 +27,14 @@ ThreadEngine::~ThreadEngine()
|
||||
{
|
||||
}
|
||||
|
||||
/** Join to the thread, sets the exit state to true
|
||||
*/
|
||||
void Thread::Join()
|
||||
{
|
||||
SetExitState();
|
||||
WaitForSingleObject(Handle, INFINITE);
|
||||
}
|
||||
|
||||
/** Start a new thread
|
||||
* @param thread A pointer to a newley allocated thread
|
||||
*/
|
||||
@@ -41,7 +45,7 @@ void ThreadEngine::Start(Thread *thread)
|
||||
if (!thread->Handle)
|
||||
{
|
||||
delete thread;
|
||||
throw CoreException("Unable to create thread");
|
||||
throw CoreException("Unable to create thread: " + std::string(dlerror()));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user