commit 7d9d434c136ed48c8e96e9e0f3a0cef7d82f499b
Author: Marc Dequènes (Duck) <Duck@DuckCorp.org>
Date:   Sun Apr 4 17:36:06 2010 +0200

    [cleanup] moved CommandRunner out of 'bin/postman' and associated L10N strings

diff --git a/bin/postman b/bin/postman
index 32968ac..b878816 100755
--- a/bin/postman
+++ b/bin/postman
@@ -28,8 +28,7 @@ require 'cyborghood'
 require 'cyborghood/imap'
 require 'cyborghood/mail'
 require 'cyborghood/mail_order'
-require 'cyborghood/objects'
-require 'cyborghood/services/dns'
+require 'cyborghood/command_runner'
 
 #Socket.gethostname
 
@@ -232,154 +231,6 @@ module CyborgHood
         s
       end
     end
-
-    class CommandRunner
-      include I18nTranslation
-
-      def self.run(order)
-        result_list = []
-        order.commands.each do |cmd|
-          result = OpenStruct.new
-          result.cmd = cmd.cmdline
-          result.ok = false
-
-          if cmd.valid?
-            logger.info "Executing command: #{cmd.cmdline}"
-            begin
-              execute_cmd(order.user, cmd.cmdsplit, order.shared_parameters, result)
-            rescue CyberError => e
-              result.message = e.message.capitalize + "."
-            rescue
-              logger.error "Command crashed: " + $!
-	      logger.error "Crash trace: " + $!.backtrace.join("\n")
-              result.message = _("Internal error. Administrator is warned.")
-            end
-
-            tag = result.ok ? "SUCCESS" : "FAILURE"
-            logger.debug "Command result: [#{tag}] #{result.message.untranslated}"
-          else
-            logger.info "Invalid command detected: #{cmd.cmdline}"
-	    cmd.parsing_errors.collect{|err| logger.debug "Invalid command detected - reason: " + err.untranslated }
-            result.message = cmd.parsing_errors.collect{|err| err.to_s }.join("\n")
-          end
-          result_list << result
-        end
-        result_list
-      end
-
-      private
-
-      def self.execute_cmd(user, cmdline, shared_parameters, result)
-        subsys = cmdline.shift
-        case subsys.upcase
-        when "DNS"
-          return if cmdline.empty?
-          case cmdline.shift.upcase
-          when "INFO"
-            return unless cmdline.empty?
-            list = CyborgHood::DnsDomain.find_by_manager(user)
-            txt_list = list.collect{|z| z.cn }.sort.join(", ")
-            result.ok = true
-            result.message = _("You are manager of the following zones: %{zone_list}.", :zone_list => txt_list)
-          when "GET"
-            return if cmdline.empty?
-            case cmdline.shift.upcase
-            when "ZONE"
-              return if cmdline.empty?
-              zone = cmdline.shift.downcase
-
-              dom = CyborgHood::DnsDomain.new(zone)
-              unless dom.hosted?
-                result.message = _("This zone is not hosted here.")
-                return result
-              end
-              unless dom.managed_by? user
-                result.message = _("You are not allowed to manage this zone.")
-                return result
-              end
-
-              srv_dns = CyborgHood::Services::DNS.new(zone)
-              result.ok = true
-              result.message = _("Requested zone content attached.")
-              zone_ref = {:content => srv_dns.read_zone, :filename => "dnszone_#{zone}.txt"}.to_ostruct
-              result.refs = [zone_ref]
-            end
-          when "SET"
-            return if cmdline.empty?
-            case cmdline.shift.upcase
-            when "ZONE"
-            return if cmdline.empty?
-              zone = cmdline.shift.downcase
-              dom = CyborgHood::DnsDomain.new(zone)
-              unless dom.hosted?
-                result.message = _("This zone is not hosted here.")
-                return result
-              end
-              unless dom.managed_by? user
-                result.message = _("You are not allowed to manage this zone.")
-                return result
-              end
-              srv_dns = CyborgHood::Services::DNS.new(zone)
-
-              return if cmdline.empty?
-              content_ref = cmdline.shift
-              part = shared_parameters[content_ref]
-              unless part.type == "text/plain"
-                result.message = _("Attachment has wrong content-type.")
-                return result
-              end
-
-              f = Tempfile.new(zone)
-              f.write(part.content)
-              f.close
-              logger.debug "Created temporary zone file '#{f.path}'"
-
-              srv_dns = CyborgHood::Services::DNS.new(zone)
-              current_serial = srv_dns.serial
-              logger.debug "Current serial: #{current_serial}"
-
-              dns_result = srv_dns.check_zone_file(f.path)
-              unless dns_result.ok
-                result.message = _("Invalid zone data.")
-                f.close!
-                return result
-              end
-              logger.debug "New serial: #{dns_result.serial}"
-              # allow new serial or missing serial (to allow creating a new zone or replacing a broken zone)
-              unless current_serial.nil? or dns_result.serial > current_serial
-                result.message = _("Zone serial is not superior to current serial.")
-                f.close!
-                return result
-              end
-
-              begin
-                srv_dns.write_zone_from_file(f.path)
-                logger.debug "zone changed"
-                if srv_dns.reload_zone
-                  logger.debug "zone reloaded"
-                  result.ok = true
-                  result.message = _("Zone updated.")
-                else
-                  logger.warn "zone reload failed, replacing old content"
-                  srv_dns.replace_zone_with_backup
-                  result.message = _("Internal error. Administrator is warned.")
-                end
-              rescue
-                logger.warn "Writing zone file failed"
-                raise
-              ensure
-                f.close!
-              end
-            end
-          end
-        end
-
-        if result.message.nil?
-          # here fall lost souls
-          result.message = _("Command not recognized.")
-        end
-      end
-    end
   end
 end
 
diff --git a/lib/cyborghood/command_runner.rb b/lib/cyborghood/command_runner.rb
new file mode 100644
index 0000000..76b17ff
--- /dev/null
+++ b/lib/cyborghood/command_runner.rb
@@ -0,0 +1,175 @@
+#--
+# CyborgHood, a distributed system management software.
+# Copyright (c) 2009 Marc Dequènes (Duck) <Duck@DuckCorp.org>
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#++
+
+
+require 'tempfile'
+require 'shellwords'
+require 'cyborghood/order'
+require 'cyborghood/objects'
+require 'cyborghood/services/dns'
+
+
+module CyborgHood
+    class CommandRunner
+      include I18nTranslation
+
+      def self.run(order)
+        result_list = []
+        order.commands.each do |cmd|
+          result = OpenStruct.new
+          result.cmd = cmd.cmdline
+          result.ok = false
+
+          if cmd.valid?
+            logger.info "Executing command: #{cmd.cmdline}"
+            begin
+              execute_cmd(order.user, cmd.cmdsplit, order.shared_parameters, result)
+            rescue CyberError => e
+              result.message = e.message.capitalize + "."
+            rescue
+              logger.error "Command crashed: " + $!
+	      logger.error "Crash trace: " + $!.backtrace.join("\n")
+              result.message = _("Internal error. Administrator is warned.")
+            end
+
+            tag = result.ok ? "SUCCESS" : "FAILURE"
+            logger.debug "Command result: [#{tag}] #{result.message.untranslated}"
+          else
+            logger.info "Invalid command detected: #{cmd.cmdline}"
+	    cmd.parsing_errors.collect{|err| logger.debug "Invalid command detected - reason: " + err.untranslated }
+            result.message = cmd.parsing_errors.collect{|err| err.to_s }.join("\n")
+          end
+          result_list << result
+        end
+        result_list
+      end
+
+      private
+
+      def self.execute_cmd(user, cmdline, shared_parameters, result)
+        subsys = cmdline.shift
+        case subsys.upcase
+        when "DNS"
+          return if cmdline.empty?
+          case cmdline.shift.upcase
+          when "INFO"
+            return unless cmdline.empty?
+            list = DnsDomain.find_by_manager(user)
+            txt_list = list.collect{|z| z.cn }.sort.join(", ")
+            result.ok = true
+            result.message = _("You are manager of the following zones: %{zone_list}.", :zone_list => txt_list)
+          when "GET"
+            return if cmdline.empty?
+            case cmdline.shift.upcase
+            when "ZONE"
+              return if cmdline.empty?
+              zone = cmdline.shift.downcase
+
+              dom = DnsDomain.new(zone)
+              unless dom.hosted?
+                result.message = _("This zone is not hosted here.")
+                return result
+              end
+              unless dom.managed_by? user
+                result.message = _("You are not allowed to manage this zone.")
+                return result
+              end
+
+              srv_dns = Services::DNS.new(zone)
+              result.ok = true
+              result.message = _("Requested zone content attached.")
+              zone_ref = {:content => srv_dns.read_zone, :filename => "dnszone_#{zone}.txt"}.to_ostruct
+              result.refs = [zone_ref]
+            end
+          when "SET"
+            return if cmdline.empty?
+            case cmdline.shift.upcase
+            when "ZONE"
+            return if cmdline.empty?
+              zone = cmdline.shift.downcase
+              dom = DnsDomain.new(zone)
+              unless dom.hosted?
+                result.message = _("This zone is not hosted here.")
+                return result
+              end
+              unless dom.managed_by? user
+                result.message = _("You are not allowed to manage this zone.")
+                return result
+              end
+              srv_dns = Services::DNS.new(zone)
+
+              return if cmdline.empty?
+              content_ref = cmdline.shift
+              part = shared_parameters[content_ref]
+              unless part.type == "text/plain"
+                result.message = _("Attachment has wrong content-type.")
+                return result
+              end
+
+              f = Tempfile.new(zone)
+              f.write(part.content)
+              f.close
+              logger.debug "Created temporary zone file '#{f.path}'"
+
+              srv_dns = Services::DNS.new(zone)
+              current_serial = srv_dns.serial
+              logger.debug "Current serial: #{current_serial}"
+
+              dns_result = srv_dns.check_zone_file(f.path)
+              unless dns_result.ok
+                result.message = _("Invalid zone data.")
+                f.close!
+                return result
+              end
+              logger.debug "New serial: #{dns_result.serial}"
+              # allow new serial or missing serial (to allow creating a new zone or replacing a broken zone)
+              unless current_serial.nil? or dns_result.serial > current_serial
+                result.message = _("Zone serial is not superior to current serial.")
+                f.close!
+                return result
+              end
+
+              begin
+                srv_dns.write_zone_from_file(f.path)
+                logger.debug "zone changed"
+                if srv_dns.reload_zone
+                  logger.debug "zone reloaded"
+                  result.ok = true
+                  result.message = _("Zone updated.")
+                else
+                  logger.warn "zone reload failed, replacing old content"
+                  srv_dns.replace_zone_with_backup
+                  result.message = _("Internal error. Administrator is warned.")
+                end
+              rescue
+                logger.warn "Writing zone file failed"
+                raise
+              ensure
+                f.close!
+              end
+            end
+          end
+        end
+
+        if result.message.nil?
+          # here fall lost souls
+          result.message = _("Command not recognized.")
+        end
+      end
+    end
+  end
diff --git a/po/cyborghood.pot b/po/cyborghood.pot
index 4ef61cf..92f4bc9 100644
--- a/po/cyborghood.pot
+++ b/po/cyborghood.pot
@@ -7,7 +7,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: CyborgHood 0.2.0~dev\n"
-"POT-Creation-Date: 2010-04-04 02:19+0200\n"
+"POT-Creation-Date: 2010-04-04 17:32+0200\n"
 "PO-Revision-Date: 2009-03-07 21:38+0100\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -20,39 +20,39 @@ msgstr ""
 msgid "Syntax error in command."
 msgstr ""
 
-#: lib/cyborghood/mail.rb:93
+#: lib/cyborghood/mail.rb:92
 msgid "Replay detected."
 msgstr ""
 
-#: lib/cyborghood/mail.rb:99
+#: lib/cyborghood/mail.rb:98
 msgid "Mail not RFC3156 compliant."
 msgstr ""
 
-#: lib/cyborghood/mail.rb:173
+#: lib/cyborghood/mail.rb:172
 msgid "Mail not formatted correctly (signed part)."
 msgstr ""
 
-#: lib/cyborghood/mail.rb:176
+#: lib/cyborghood/mail.rb:175
 msgid "Mail content tampered or badly signed: %{sig_err}"
 msgstr ""
 
-#: lib/cyborghood/mail.rb:180
+#: lib/cyborghood/mail.rb:179
 msgid "Mail is from an unknown person."
 msgstr ""
 
-#: lib/cyborghood/mail.rb:189
+#: lib/cyborghood/mail.rb:188
 msgid ""
 "The signature was made too long ago (check your system clock). Rejected "
 "message to avoid replay attacks."
 msgstr ""
 
-#: lib/cyborghood/mail.rb:193
+#: lib/cyborghood/mail.rb:192
 msgid ""
 "The signature was made in the future (check your system clock). Rejected "
 "message to avoid replay attacks."
 msgstr ""
 
-#: lib/cyborghood/mail.rb:238
+#: lib/cyborghood/mail.rb:237
 msgid "Mail not formatted correctly (encrypted part)."
 msgstr ""
 
@@ -63,3 +63,43 @@ msgstr ""
 #: lib/cyborghood/mail_order.rb:38
 msgid "Attachment '%{ref}' not found."
 msgstr ""
+
+#: lib/cyborghood/command_runner.rb:47 lib/cyborghood/command_runner.rb:157
+msgid "Internal error. Administrator is warned."
+msgstr ""
+
+#: lib/cyborghood/command_runner.rb:75
+msgid "You are manager of the following zones: %{zone_list}."
+msgstr ""
+
+#: lib/cyborghood/command_runner.rb:85 lib/cyborghood/command_runner.rb:107
+msgid "This zone is not hosted here."
+msgstr ""
+
+#: lib/cyborghood/command_runner.rb:89 lib/cyborghood/command_runner.rb:111
+msgid "You are not allowed to manage this zone."
+msgstr ""
+
+#: lib/cyborghood/command_runner.rb:95
+msgid "Requested zone content attached."
+msgstr ""
+
+#: lib/cyborghood/command_runner.rb:120
+msgid "Attachment has wrong content-type."
+msgstr ""
+
+#: lib/cyborghood/command_runner.rb:135
+msgid "Invalid zone data."
+msgstr ""
+
+#: lib/cyborghood/command_runner.rb:142
+msgid "Zone serial is not superior to current serial."
+msgstr ""
+
+#: lib/cyborghood/command_runner.rb:153
+msgid "Zone updated."
+msgstr ""
+
+#: lib/cyborghood/command_runner.rb:171
+msgid "Command not recognized."
+msgstr ""
diff --git a/po/cyborghood_postman.pot b/po/cyborghood_postman.pot
index 284a95f..1a97bdf 100644
--- a/po/cyborghood_postman.pot
+++ b/po/cyborghood_postman.pot
@@ -7,7 +7,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: CyborgHood 0.2.0~dev\n"
-"POT-Creation-Date: 2010-04-04 02:19+0200\n"
+"POT-Creation-Date: 2010-04-04 17:32+0200\n"
 "PO-Revision-Date: 2009-03-07 21:38+0100\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -16,74 +16,34 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
 
-#: /opt/cyborghood-dev/bin/postman:146 /opt/cyborghood-dev/bin/postman:162
+#: /opt/cyborghood-dev/bin/postman:145 /opt/cyborghood-dev/bin/postman:161
 msgid "Hello %{cn},"
 msgstr ""
 
-#: /opt/cyborghood-dev/bin/postman:146
+#: /opt/cyborghood-dev/bin/postman:145
 msgid "Hello,"
 msgstr ""
 
-#: /opt/cyborghood-dev/bin/postman:148
+#: /opt/cyborghood-dev/bin/postman:147
 msgid ""
 "A message (ID: %{id}), apparently from you, was rejected for the following "
 "reason:"
 msgstr ""
 
-#: /opt/cyborghood-dev/bin/postman:167
+#: /opt/cyborghood-dev/bin/postman:166
 msgid ""
 "An order, in a message (ID: %{id}) from you, was rejected for the following "
 "reason:"
 msgstr ""
 
-#: /opt/cyborghood-dev/bin/postman:181
+#: /opt/cyborghood-dev/bin/postman:180
 msgid "Follows the transcript of your commands:"
 msgstr ""
 
-#: /opt/cyborghood-dev/bin/postman:230
+#: /opt/cyborghood-dev/bin/postman:229
 msgid "Contact eMail:"
 msgstr ""
 
-#: /opt/cyborghood-dev/bin/postman:231
+#: /opt/cyborghood-dev/bin/postman:230
 msgid "Contact URL:"
 msgstr ""
-
-#: /opt/cyborghood-dev/bin/postman:255 /opt/cyborghood-dev/bin/postman:365
-msgid "Internal error. Administrator is warned."
-msgstr ""
-
-#: /opt/cyborghood-dev/bin/postman:283
-msgid "You are manager of the following zones: %{zone_list}."
-msgstr ""
-
-#: /opt/cyborghood-dev/bin/postman:293 /opt/cyborghood-dev/bin/postman:315
-msgid "This zone is not hosted here."
-msgstr ""
-
-#: /opt/cyborghood-dev/bin/postman:297 /opt/cyborghood-dev/bin/postman:319
-msgid "You are not allowed to manage this zone."
-msgstr ""
-
-#: /opt/cyborghood-dev/bin/postman:303
-msgid "Requested zone content attached."
-msgstr ""
-
-#: /opt/cyborghood-dev/bin/postman:328
-msgid "Attachment has wrong content-type."
-msgstr ""
-
-#: /opt/cyborghood-dev/bin/postman:343
-msgid "Invalid zone data."
-msgstr ""
-
-#: /opt/cyborghood-dev/bin/postman:350
-msgid "Zone serial is not superior to current serial."
-msgstr ""
-
-#: /opt/cyborghood-dev/bin/postman:361
-msgid "Zone updated."
-msgstr ""
-
-#: /opt/cyborghood-dev/bin/postman:379
-msgid "Command not recognized."
-msgstr ""
diff --git a/po/fr/cyborghood.po b/po/fr/cyborghood.po
index 1ef7346..ccc726c 100644
--- a/po/fr/cyborghood.po
+++ b/po/fr/cyborghood.po
@@ -7,7 +7,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: CyborgHood 0.2.0~dev\n"
-"POT-Creation-Date: 2010-04-04 02:19+0200\n"
+"POT-Creation-Date: 2010-04-04 17:32+0200\n"
 "PO-Revision-Date: 2010-04-04 20:59+0100\n"
 "Last-Translator: Marc Dequènes (Duck) <Duck@DuckCorp.org>\n"
 "MIME-Version: 1.0\n"
@@ -19,27 +19,27 @@ msgstr ""
 msgid "Syntax error in command."
 msgstr "Erreur de syntaxe dans la commande."
 
-#: lib/cyborghood/mail.rb:93
+#: lib/cyborghood/mail.rb:92
 msgid "Replay detected."
 msgstr "Rejeu détecté."
 
-#: lib/cyborghood/mail.rb:99
+#: lib/cyborghood/mail.rb:98
 msgid "Mail not RFC3156 compliant."
 msgstr "Mail ne respectant pas la RFC3156."
 
-#: lib/cyborghood/mail.rb:173
+#: lib/cyborghood/mail.rb:172
 msgid "Mail not formatted correctly (signed part)."
 msgstr "Mail formaté incorrectement (partie signée)."
 
-#: lib/cyborghood/mail.rb:176
+#: lib/cyborghood/mail.rb:175
 msgid "Mail content tampered or badly signed: %{sig_err}"
 msgstr "Contenu du mail altéré ou mal signé: %{sig_err}"
 
-#: lib/cyborghood/mail.rb:180
+#: lib/cyborghood/mail.rb:179
 msgid "Mail is from an unknown person."
 msgstr "Mail provenant d'une personne inconnue"
 
-#: lib/cyborghood/mail.rb:189
+#: lib/cyborghood/mail.rb:188
 msgid ""
 "The signature was made too long ago (check your system clock). Rejected "
 "message to avoid replay attacks."
@@ -47,7 +47,7 @@ msgstr ""
 "La signature a été faite depuis trop longtemps (vérifiez votre horloge "
 "système. Message rejeté pour éviter les attaques par rejeux."
 
-#: lib/cyborghood/mail.rb:193
+#: lib/cyborghood/mail.rb:192
 msgid ""
 "The signature was made in the future (check your system clock). Rejected "
 "message to avoid replay attacks."
@@ -55,7 +55,7 @@ msgstr ""
 "La signature a été faite dans le futur (vérifiez votre horloge système. "
 "Message rejeté pour éviter les attaques par rejeux."
 
-#: lib/cyborghood/mail.rb:238
+#: lib/cyborghood/mail.rb:237
 msgid "Mail not formatted correctly (encrypted part)."
 msgstr "Mail formaté incorrectement (partie chiffrée)."
 
@@ -67,3 +67,43 @@ msgstr ""
 #: lib/cyborghood/mail_order.rb:38
 msgid "Attachment '%{ref}' not found."
 msgstr "La pièce jointe '%{ref}' n'a pas été trouvée."
+
+#: lib/cyborghood/command_runner.rb:47 lib/cyborghood/command_runner.rb:157
+msgid "Internal error. Administrator is warned."
+msgstr "Erreur interne. L'administrateur a été prévenu."
+
+#: lib/cyborghood/command_runner.rb:75
+msgid "You are manager of the following zones: %{zone_list}."
+msgstr "Vous gérez les zones suivantes : %{zone_list}."
+
+#: lib/cyborghood/command_runner.rb:85 lib/cyborghood/command_runner.rb:107
+msgid "This zone is not hosted here."
+msgstr "Cette zone n'est pas hébergée ici."
+
+#: lib/cyborghood/command_runner.rb:89 lib/cyborghood/command_runner.rb:111
+msgid "You are not allowed to manage this zone."
+msgstr "Vous n'êtes pas autorisé à gérer cette zone."
+
+#: lib/cyborghood/command_runner.rb:95
+msgid "Requested zone content attached."
+msgstr "Le contenu de la zone demandée est en pièce jointe."
+
+#: lib/cyborghood/command_runner.rb:120
+msgid "Attachment has wrong content-type."
+msgstr "La pièce jointe a un mauvais type de contenu (content-type)."
+
+#: lib/cyborghood/command_runner.rb:135
+msgid "Invalid zone data."
+msgstr "Données pour la zone invalides."
+
+#: lib/cyborghood/command_runner.rb:142
+msgid "Zone serial is not superior to current serial."
+msgstr "Le numéro de série de la zone n'est pas supèrieur à celui actuel."
+
+#: lib/cyborghood/command_runner.rb:153
+msgid "Zone updated."
+msgstr "Zone mise à jour."
+
+#: lib/cyborghood/command_runner.rb:171
+msgid "Command not recognized."
+msgstr "Commande non reconnue."
diff --git a/po/fr/cyborghood_postman.po b/po/fr/cyborghood_postman.po
index ee4a598..a74406b 100644
--- a/po/fr/cyborghood_postman.po
+++ b/po/fr/cyborghood_postman.po
@@ -7,7 +7,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: CyborgHood 0.2.0~dev\n"
-"POT-Creation-Date: 2010-04-04 02:19+0200\n"
+"POT-Creation-Date: 2010-04-04 17:32+0200\n"
 "PO-Revision-Date: 2010-04-04 21:27+0100\n"
 "Last-Translator: Marc Dequènes (Duck) <Duck@DuckCorp.org>\n"
 "MIME-Version: 1.0\n"
@@ -15,15 +15,15 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=1; plural=(n > 1);\n"
 
-#: /opt/cyborghood-dev/bin/postman:146 /opt/cyborghood-dev/bin/postman:162
+#: /opt/cyborghood-dev/bin/postman:145 /opt/cyborghood-dev/bin/postman:161
 msgid "Hello %{cn},"
 msgstr "Bonjour %{cn},"
 
-#: /opt/cyborghood-dev/bin/postman:146
+#: /opt/cyborghood-dev/bin/postman:145
 msgid "Hello,"
 msgstr "Bonjour,"
 
-#: /opt/cyborghood-dev/bin/postman:148
+#: /opt/cyborghood-dev/bin/postman:147
 msgid ""
 "A message (ID: %{id}), apparently from you, was rejected for the following "
 "reason:"
@@ -31,7 +31,7 @@ msgstr ""
 "Un message (ID: %{id}), provenant apparemment de vous, a été rejeté pour la "
 "raison suivante :"
 
-#: /opt/cyborghood-dev/bin/postman:167
+#: /opt/cyborghood-dev/bin/postman:166
 msgid ""
 "An order, in a message (ID: %{id}) from you, was rejected for the following "
 "reason:"
@@ -39,54 +39,14 @@ msgstr ""
 "Un order, dans in message (ID: %{id}) venant de vous, a été rejeté pour la "
 "raison suivante :"
 
-#: /opt/cyborghood-dev/bin/postman:181
+#: /opt/cyborghood-dev/bin/postman:180
 msgid "Follows the transcript of your commands:"
 msgstr "La retranscription des commandes suit :"
 
-#: /opt/cyborghood-dev/bin/postman:230
+#: /opt/cyborghood-dev/bin/postman:229
 msgid "Contact eMail:"
 msgstr "eMail de Contact :"
 
-#: /opt/cyborghood-dev/bin/postman:231
+#: /opt/cyborghood-dev/bin/postman:230
 msgid "Contact URL:"
 msgstr "URL de Contact :"
-
-#: /opt/cyborghood-dev/bin/postman:255 /opt/cyborghood-dev/bin/postman:365
-msgid "Internal error. Administrator is warned."
-msgstr "Erreur interne. L'administrateur a été prévenu."
-
-#: /opt/cyborghood-dev/bin/postman:283
-msgid "You are manager of the following zones: %{zone_list}."
-msgstr "Vous gérez les zones suivantes : %{zone_list}."
-
-#: /opt/cyborghood-dev/bin/postman:293 /opt/cyborghood-dev/bin/postman:315
-msgid "This zone is not hosted here."
-msgstr "Cette zone n'est pas hébergée ici."
-
-#: /opt/cyborghood-dev/bin/postman:297 /opt/cyborghood-dev/bin/postman:319
-msgid "You are not allowed to manage this zone."
-msgstr "Vous n'êtes pas autorisé à gérer cette zone."
-
-#: /opt/cyborghood-dev/bin/postman:303
-msgid "Requested zone content attached."
-msgstr "Le contenu de la zone demandée est en pièce jointe."
-
-#: /opt/cyborghood-dev/bin/postman:328
-msgid "Attachment has wrong content-type."
-msgstr "La pièce jointe a un mauvais type de contenu (content-type)."
-
-#: /opt/cyborghood-dev/bin/postman:343
-msgid "Invalid zone data."
-msgstr "Données pour la zone invalides."
-
-#: /opt/cyborghood-dev/bin/postman:350
-msgid "Zone serial is not superior to current serial."
-msgstr "Le numéro de série de la zone n'est pas supèrieur à celui actuel."
-
-#: /opt/cyborghood-dev/bin/postman:361
-msgid "Zone updated."
-msgstr "Zone mise à jour."
-
-#: /opt/cyborghood-dev/bin/postman:379
-msgid "Command not recognized."
-msgstr "Commande non reconnue."
