From 531da7770c7a2bb25b5c8fe1e1197f1589d29574 Mon Sep 17 00:00:00 2001 From: Stefan Becker Date: Mon, 10 Aug 2009 12:45:37 +0300 Subject: [PATCH] Cleanup username handling in sipe_login() Remove obsolete code and add some clarifying comments. Tested with the following username strings: "a,", "a@,", "a @b," REJECTED "a@b,", "a@b,c" and "a@b,c\d" ACCEPTED --- po/de.po | 191 +++++++++++++++++++++++++++++++------------------------------ src/sipe.c | 19 +++--- 2 files changed, 107 insertions(+), 103 deletions(-) diff --git a/po/de.po b/po/de.po index 29c82cd2..db9b9833 100644 --- a/po/de.po +++ b/po/de.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: pidgin-sipe\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-08-08 22:17+0300\n" +"POT-Creation-Date: 2009-08-10 12:43+0300\n" "PO-Revision-Date: 2009-01-15 14:31+0000\n" "Last-Translator: Markus Heberling \n" "Language-Team: German \n" @@ -18,91 +18,91 @@ msgstr "" "X-Launchpad-Export-Date: 2009-01-22 22:36+0000\n" "X-Generator: Launchpad (build Unknown)\n" -#: ../src/sipe.c:260 +#: ../src/sipe.c:264 msgid "Failed to authenticate to server" msgstr "Authentifizierung mit dem Server fehlgeschlagen." #. TODO: do we really want to disconnect on a failure to write? -#: ../src/sipe.c:408 ../src/sipe.c:440 +#: ../src/sipe.c:412 ../src/sipe.c:444 msgid "Could not write" msgstr "Konnte nicht schreiben" -#: ../src/sipe.c:464 ../src/sipe.c:5273 +#: ../src/sipe.c:468 ../src/sipe.c:5277 msgid "Could not connect" msgstr "Konnte keine Verbindung herstellen" -#: ../src/sipe.c:534 ../src/sipe.c:5418 +#: ../src/sipe.c:538 ../src/sipe.c:5422 msgid "Couldn't create socket" msgstr "Kann Socket nicht erstellen" -#: ../src/sipe.c:1054 ../src/sipe.c:2404 +#: ../src/sipe.c:1058 ../src/sipe.c:2408 msgid "you" msgstr "Sie" -#: ../src/sipe.c:1785 +#: ../src/sipe.c:1789 msgid "Online" msgstr "Online" #. Translators: noun -#: ../src/sipe.c:1787 ../src/sipe.c:1794 ../src/sipe.c:1801 ../src/sipe.c:1808 -#: ../src/sipe.c:1815 ../src/sipe.c:1822 ../src/sipe.c:1829 +#: ../src/sipe.c:1791 ../src/sipe.c:1798 ../src/sipe.c:1805 ../src/sipe.c:1812 +#: ../src/sipe.c:1819 ../src/sipe.c:1826 ../src/sipe.c:1833 msgid "Message" msgstr "Nachricht" -#: ../src/sipe.c:1793 +#: ../src/sipe.c:1797 msgid "Busy" msgstr "Beschäftigt" -#: ../src/sipe.c:1800 +#: ../src/sipe.c:1804 msgid "Do Not Disturb" msgstr "Nicht stören" -#: ../src/sipe.c:1807 +#: ../src/sipe.c:1811 msgid "Be Right Back" msgstr "Bin gleich zurück" -#: ../src/sipe.c:1821 +#: ../src/sipe.c:1825 msgid "On The Phone" msgstr "Am Telefon" -#: ../src/sipe.c:1828 +#: ../src/sipe.c:1832 msgid "Out To Lunch" msgstr "Zur Mittagspause" -#: ../src/sipe.c:1835 +#: ../src/sipe.c:1839 msgid "Appear Offline" msgstr "Offline erscheinen" -#: ../src/sipe.c:1929 ../src/sipe.c:1941 ../src/sipe.c:1961 ../src/sipe.c:5820 +#: ../src/sipe.c:1933 ../src/sipe.c:1945 ../src/sipe.c:1965 ../src/sipe.c:5834 msgid "Other Contacts" msgstr "Andere Kontakte" #. [MS-SIPREGE] #. reason = g_strdup(_("User logged out")); // [MS-OCER] -#: ../src/sipe.c:2111 +#: ../src/sipe.c:2115 msgid "You have been signed off because you've signed in at another location" msgstr "" "Das Konto wurde deaktiviert, da Sie sich bereits von einem anderen Ort " "angemeldet haben" -#: ../src/sipe.c:2114 +#: ../src/sipe.c:2118 msgid "User disabled" msgstr "Benutzer ist deaktiviert" -#: ../src/sipe.c:2117 +#: ../src/sipe.c:2121 msgid "User moved" msgstr "Benutzer wurde verschoben" -#: ../src/sipe.c:2121 +#: ../src/sipe.c:2125 #, c-format msgid "Unregistered by Server: %s." msgstr "Vom Server abgewiesen mit: " -#: ../src/sipe.c:2121 ../src/sipe.c:4023 ../src/sipe.c:4040 ../src/sipe.c:4057 +#: ../src/sipe.c:2125 ../src/sipe.c:4027 ../src/sipe.c:4044 ../src/sipe.c:4061 msgid "no reason given" msgstr "kein Grund angegeben" -#: ../src/sipe.c:2645 +#: ../src/sipe.c:2649 #, c-format msgid "" "This message was not delivered to %s because one or more recipients are " @@ -113,35 +113,35 @@ msgstr "" "Benutzer offline sind:\n" "%s" -#: ../src/sipe.c:2923 +#: ../src/sipe.c:2927 #, c-format msgid "Failed to invite %s" msgstr "Kann den Benutzer %s nicht einladen" -#: ../src/sipe.c:3672 ../src/sipe.c:6118 ../src/sipe-conf.c:692 +#: ../src/sipe.c:3676 ../src/sipe.c:6132 ../src/sipe-conf.c:692 #, c-format msgid "Chat #%d" msgstr "Chat #%d" -#: ../src/sipe.c:3993 ../src/sipe.c:5100 +#: ../src/sipe.c:3997 ../src/sipe.c:5104 msgid "Wrong Password" msgstr "Falsches Passwort" -#: ../src/sipe.c:4023 +#: ../src/sipe.c:4027 #, c-format msgid "You have been rejected by the server: %s" msgstr "Server %s hat Sie zurückgewiesen." -#: ../src/sipe.c:4026 +#: ../src/sipe.c:4030 msgid "You have been rejected by the server" msgstr "Der Server hat Sie zurückgewiesen" -#: ../src/sipe.c:4040 +#: ../src/sipe.c:4044 #, c-format msgid "Not Found: %s. Please, contact with your Administrator" msgstr "Nicht gefunden: %s. Bitte wenden Sie sich an ihren Systemadministrator" -#: ../src/sipe.c:4043 +#: ../src/sipe.c:4047 msgid "" "Not Found: Destination URI either not enabled for SIP or does not exist. " "Please, contact with your Administrator" @@ -149,53 +149,53 @@ msgstr "" "Nicht gefunden: entweder wurde SIP nicht für die Ziel-URI aktiviert oder sie " "existiert nicht. Bitte wenden Sie sich an ihren Systemadministrator" -#: ../src/sipe.c:4057 +#: ../src/sipe.c:4061 #, c-format msgid "Service unavailable: %s" msgstr "Service nicht verfügbar: %s" -#: ../src/sipe.c:4060 +#: ../src/sipe.c:4064 msgid "Service unavailable: no reason given" msgstr "Service nicht verfügbar: kein Grund angegeben" -#: ../src/sipe.c:5096 +#: ../src/sipe.c:5100 msgid "Invalid message signature received" msgstr "Ungültige Nachrichtensignatur erhalten" -#: ../src/sipe.c:5170 +#: ../src/sipe.c:5174 msgid "Connection not found; Please try to connect again.\n" msgstr "" "Verbindung nicht gefunden; Bitte versuchen Sie sich erneut zu verbinden.\n" -#: ../src/sipe.c:5191 +#: ../src/sipe.c:5195 msgid "SSL read error" msgstr "SSL-Lesefehler" -#: ../src/sipe.c:5194 +#: ../src/sipe.c:5198 msgid "Server has disconnected" msgstr "Serververbindung wurde unterbrochen" -#: ../src/sipe.c:5318 ../src/sipe.c:5359 ../src/sipe.c:5402 ../src/sipe.c:5472 +#: ../src/sipe.c:5322 ../src/sipe.c:5363 ../src/sipe.c:5406 ../src/sipe.c:5476 msgid "Could not create listen socket" msgstr "Kann Listen-Socket nicht erstellen" -#: ../src/sipe.c:5341 +#: ../src/sipe.c:5345 msgid "Couldn't resolve host" msgstr "Kann den Hostnamen nicht auflösen" -#: ../src/sipe.c:5381 +#: ../src/sipe.c:5385 msgid "Connection Failed" msgstr "Verbindung fehlgeschlagen" -#: ../src/sipe.c:5384 +#: ../src/sipe.c:5388 msgid "SSL Handshake Failed" msgstr "SSL Handshake gescheitert" -#: ../src/sipe.c:5387 +#: ../src/sipe.c:5391 msgid "SSL Certificate Invalid" msgstr "SSL Zertifikat ungültig" -#: ../src/sipe.c:5445 +#: ../src/sipe.c:5449 msgid "" "SSL support is not installed. Either install SSL support or configure a " "different connection type in the account editor." @@ -203,19 +203,19 @@ msgstr "" "SSL-Unterstützung ist nicht installiert. Bitte installieren Sie SSL oder " "konfigurieren Sie einen anderen Verbindungstyp im Accounteditor." -#: ../src/sipe.c:5454 +#: ../src/sipe.c:5458 msgid "Could not create SSL context" msgstr "Konnte SSL-Kontext nicht erstellen" -#: ../src/sipe.c:5463 +#: ../src/sipe.c:5467 msgid "Could not resolve hostname" msgstr "Konnte den Hostnamen nicht auflösen" -#: ../src/sipe.c:5574 +#: ../src/sipe.c:5580 msgid "SIP Exchange username contains invalid characters" msgstr "SIP-Exchange-Benutzernamen dürfen keine unerlaubten Zeichen enthalten" -#: ../src/sipe.c:5592 +#: ../src/sipe.c:5602 msgid "" "Username should be valid SIP URI\n" "Example: user@company.com" @@ -223,66 +223,66 @@ msgstr "" "Benutzername sollte eine gültige SIP URI sein.\n" "Beispiel: benutzer@domäne.com" -#: ../src/sipe.c:5603 +#: ../src/sipe.c:5628 msgid "SIP Exchange usernames may not contain whitespaces" msgstr "SIP-Exchange-Benutzernamen dürfen keine Leerzeichen enthalten" -#: ../src/sipe.c:5622 +#: ../src/sipe.c:5636 msgid "Connecting" msgstr "Verbinde" -#: ../src/sipe.c:5846 +#: ../src/sipe.c:5860 msgid "Unable to display the search results." msgstr "Kann Suchergebnisse nicht anzeigen." -#: ../src/sipe.c:5852 +#: ../src/sipe.c:5866 msgid "User Name" msgstr "Benutzername" -#: ../src/sipe.c:5855 +#: ../src/sipe.c:5869 msgid "Name" msgstr "Name" -#: ../src/sipe.c:5858 ../src/sipe.c:5949 ../src/sipe.c:6588 +#: ../src/sipe.c:5872 ../src/sipe.c:5963 ../src/sipe.c:6602 msgid "Company" msgstr "Firma" -#: ../src/sipe.c:5861 ../src/sipe.c:5951 ../src/sipe.c:6591 +#: ../src/sipe.c:5875 ../src/sipe.c:5965 ../src/sipe.c:6605 msgid "Country" msgstr "Land" -#: ../src/sipe.c:5864 +#: ../src/sipe.c:5878 msgid "Email" msgstr "E-Mail" -#: ../src/sipe.c:5891 +#: ../src/sipe.c:5905 #, c-format msgid "Found %d contact%s:" msgid_plural "Found %d contacts%s:" msgstr[0] "%d Kontakt%s gefunden:" msgstr[1] "%d Kontakte%s gefunden:" -#: ../src/sipe.c:5893 +#: ../src/sipe.c:5907 msgid " (more matched your query)" msgstr " (mehr Ergebnisse entsprachen Ihrer Suche)" -#: ../src/sipe.c:5945 +#: ../src/sipe.c:5959 msgid "First Name" msgstr "Vorname" -#: ../src/sipe.c:5947 +#: ../src/sipe.c:5961 msgid "Last Name" msgstr "Nachname" -#: ../src/sipe.c:5955 +#: ../src/sipe.c:5969 msgid "Search" msgstr "Suche" -#: ../src/sipe.c:5956 +#: ../src/sipe.c:5970 msgid "Search for a Contact" msgstr "Kontaktsuche" -#: ../src/sipe.c:5957 +#: ../src/sipe.c:5971 msgid "" "Enter the information of the person you wish to find. Empty fields will be " "ignored." @@ -290,112 +290,113 @@ msgstr "" "Geben Sie die Informationen der Person ein die Sie suchen. Leere Felder " "werden ignoriert." -#: ../src/sipe.c:5959 +#: ../src/sipe.c:5973 msgid "_Search" msgstr "_Suche" -#: ../src/sipe.c:5960 +#: ../src/sipe.c:5974 msgid "_Cancel" msgstr "_Abbrechen" -#: ../src/sipe.c:5970 +#: ../src/sipe.c:5984 msgid "Contact Search..." msgstr "Kontaktsuche..." -#: ../src/sipe.c:6034 +#: ../src/sipe.c:6048 msgid "Status" msgstr "Status" -#: ../src/sipe.c:6039 +#: ../src/sipe.c:6053 msgid "Note" msgstr "Notiz" -#: ../src/sipe.c:6050 +#: ../src/sipe.c:6064 msgid "user@company.com" msgstr "benutzer@domäne.com" -#: ../src/sipe.c:6394 +#: ../src/sipe.c:6408 #, c-format msgid "Make Leader of '%s'" msgstr "Ernenne zum Leiter der Konferenz '%s'" -#: ../src/sipe.c:6405 +#: ../src/sipe.c:6419 #, c-format msgid "Remove from '%s'" msgstr "Entferne von Konferenz '%s'" -#: ../src/sipe.c:6418 +#: ../src/sipe.c:6432 #, c-format msgid "Invite to '%s'" msgstr "Zur Konferenz '%s' einladen" -#: ../src/sipe.c:6429 +#: ../src/sipe.c:6443 msgid "New Chat" msgstr "Neuer Chat" -#: ../src/sipe.c:6434 +#: ../src/sipe.c:6448 msgid "Send Email..." msgstr "Sende E-Mail..." -#: ../src/sipe.c:6458 +#: ../src/sipe.c:6472 msgid "Copy to" msgstr "Kopiere zu" -#: ../src/sipe.c:6511 +#: ../src/sipe.c:6525 msgid "Unlock Conversation" msgstr "Freigeben" -#: ../src/sipe.c:6516 +#: ../src/sipe.c:6530 msgid "Lock Conversation" msgstr "Sperren" -#: ../src/sipe.c:6584 ../src/sipe.c:6609 +#: ../src/sipe.c:6598 ../src/sipe.c:6623 msgid "Display Name" msgstr "Display-Name" -#: ../src/sipe.c:6585 +#: ../src/sipe.c:6599 msgid "Job Title" msgstr "Beruf" -#: ../src/sipe.c:6586 +#: ../src/sipe.c:6600 msgid "Office" msgstr "Büro" -#: ../src/sipe.c:6587 +#: ../src/sipe.c:6601 msgid "Business Phone" msgstr "Geschäftstelefon" -#: ../src/sipe.c:6589 +#: ../src/sipe.c:6603 msgid "City" msgstr "Stadt" -#: ../src/sipe.c:6590 +#: ../src/sipe.c:6604 msgid "State" msgstr "Provinz/Bundesland" -#: ../src/sipe.c:6593 ../src/sipe.c:6624 +#: ../src/sipe.c:6607 ../src/sipe.c:6638 msgid "E-Mail Address" msgstr "E-Mail Adresse" -#: ../src/sipe.c:6617 +#: ../src/sipe.c:6631 msgid "Alias" msgstr "Alias" -#: ../src/sipe.c:6630 +#: ../src/sipe.c:6644 msgid "Device" msgstr "Gerät" -#: ../src/sipe.c:6798 +#: ../src/sipe.c:6812 +#, fuzzy msgid "" "Login \n" -" DOMAIN\\user or\n" +" user or DOMAIN\\user or\n" " user@company.com " msgstr "" "Anmelden\n" -" Domäne\\Benutzer oder\n" +" Benutzer oder Domäne\\Benutzer oder\n" " benutzer@domäne.com" -#: ../src/sipe.c:6802 +#: ../src/sipe.c:6816 msgid "" "Server[:Port]\n" "(Leave empty for auto-discovery)" @@ -403,33 +404,33 @@ msgstr "" "Server[:Port]\n" "(leer lassen für automatische Suche)" -#: ../src/sipe.c:6805 +#: ../src/sipe.c:6819 msgid "Connection Type" msgstr "Verbindungstyp" -#: ../src/sipe.c:6806 +#: ../src/sipe.c:6820 msgid "Auto" msgstr "Automatisch" -#: ../src/sipe.c:6807 +#: ../src/sipe.c:6821 msgid "SSL/TLS" msgstr "SSL/TLS" -#: ../src/sipe.c:6808 +#: ../src/sipe.c:6822 msgid "TCP" msgstr "TCP" -#: ../src/sipe.c:6809 +#: ../src/sipe.c:6823 msgid "UDP" msgstr "UDP" #. option = purple_account_option_bool_new(_("Publish status (note: everyone may watch you)"), "doservice", TRUE); #. prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option); -#: ../src/sipe.c:6815 +#: ../src/sipe.c:6829 msgid "User Agent" msgstr "User Agent" -#: ../src/sipe.c:6819 +#: ../src/sipe.c:6833 msgid "Use Kerberos" msgstr "Benutze Kerberos" @@ -437,7 +438,7 @@ msgstr "Benutze Kerberos" #. * No login/password is taken into account if this option present, #. * instead used default credentials stored in OS. #. -#: ../src/sipe.c:6826 +#: ../src/sipe.c:6840 msgid "Use Single Sign-On" msgstr "Benutze Single Sign-On" diff --git a/src/sipe.c b/src/sipe.c index 22da9da1..550d764d 100644 --- a/src/sipe.c +++ b/src/sipe.c @@ -5591,22 +5591,26 @@ static void sipe_login(PurpleAccount *account) sip->subscribed = FALSE; sip->subscribed_buddies = FALSE; + /* username format: ,[] */ signinname_login = g_strsplit(username, ",", 2); purple_debug_info("sipe", "sipe_login: signinname[0] '%s'\n", signinname_login[0]); - if (!strstr(signinname_login[0], "@") || g_str_has_prefix(signinname_login[0], "@") || g_str_has_suffix(signinname_login[0], "@")) { + /* ensure that username format is name@domain */ + if (!strchr(signinname_login[0], '@') || g_str_has_prefix(signinname_login[0], "@") || g_str_has_suffix(signinname_login[0], "@")) { g_strfreev(signinname_login); gc->wants_to_die = TRUE; purple_connection_error(gc, _("Username should be valid SIP URI\nExample: user@company.com")); return; } + sip->username = g_strdup(signinname_login[0]); - if (signinname_login[1] && strcmp(signinname_login[1], "")) { + /* login name specified? */ + if (signinname_login[1] && strlen(signinname_login[1])) { gchar **domain_user = g_strsplit(signinname_login[1], "\\", 2); + gboolean has_domain = domain_user[1] != NULL; purple_debug_info("sipe", "sipe_login: signinname[1] '%s'\n", signinname_login[1]); - sip->authdomain = (domain_user && domain_user[1]) ? g_strdup(domain_user[0]) : NULL; - sip->authuser = (domain_user && domain_user[1]) ? g_strdup(domain_user[1]) : - (signinname_login ? g_strdup(signinname_login[1]) : NULL); + sip->authdomain = has_domain ? g_strdup(domain_user[0]) : NULL; + sip->authuser = g_strdup(domain_user[has_domain ? 1 : 0]); purple_debug_info("sipe", "sipe_login: auth domain '%s' user '%s'\n", sip->authdomain ? sip->authdomain : "", sip->authuser); g_strfreev(domain_user); @@ -5615,12 +5619,11 @@ static void sipe_login(PurpleAccount *account) userserver = g_strsplit(signinname_login[0], "@", 2); purple_debug_info("sipe", "sipe_login: user '%s' server '%s'\n", userserver[0], userserver[1]); purple_connection_set_display_name(gc, userserver[0]); - sip->username = g_strjoin("@", userserver[0], userserver[1], NULL); sip->sipdomain = g_strdup(userserver[1]); g_strfreev(userserver); g_strfreev(signinname_login); - if (strpbrk(sip->username, " \t\v\r\n") != NULL) { + if (strchr(sip->username, ' ') != NULL) { gc->wants_to_die = TRUE; purple_connection_error(gc, _("SIP Exchange usernames may not contain whitespaces")); return; @@ -6806,7 +6809,7 @@ static void init_plugin(PurplePlugin *plugin) purple_plugin_register(plugin); - split = purple_account_user_split_new(_("Login \n DOMAIN\\user or\n user@company.com "), NULL, ','); + split = purple_account_user_split_new(_("Login \n user or DOMAIN\\user or\n user@company.com "), NULL, ','); purple_account_user_split_set_reverse(split, FALSE); prpl_info.user_splits = g_list_append(prpl_info.user_splits, split); -- 2.11.4.GIT