Bug 13837 - msec-gui: error message and does not work (UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 16: ordinal not in range(128))
Summary: msec-gui: error message and does not work (UnicodeDecodeError: 'ascii' codec ...
Status: RESOLVED FIXED
Alias: None
Product: Mageia
Classification: Unclassified
Component: RPM Packages (show other bugs)
Version: 5
Hardware: All Linux
Priority: High critical
Target Milestone: ---
Assignee: QA Team
QA Contact:
URL:
Whiteboard: advisory MGA5-64-OK MGA5-32-OK
Keywords: PATCH, validated_update
: 16090 16204 (view as bug list)
Depends on:
Blocks: 11778 15146
  Show dependency treegraph
 
Reported: 2014-08-01 13:02 CEST by macxi
Modified: 2015-08-13 14:43 CEST (History)
20 users (show)

See Also:
Source RPM: msec-gui-1.4-3.mga5.x86_64.rpm
CVE:
Status comment:


Attachments
decode.path for MSEC (fix bug with locales which use non-english letters) (17.57 KB, patch)
2015-01-20 20:32 CET, Oleg Kozlov
Details | Diff
try patch (untested) (16.26 KB, patch)
2015-05-11 19:50 CEST, Thierry Vignaud
Details | Diff
Impoved tv's patch (17.03 KB, patch)
2015-07-05 11:59 CEST, papoteur
Details | Diff
Add a missing import (554 bytes, patch)
2015-07-29 13:25 CEST, papoteur
Details | Diff

Description macxi 2014-08-01 13:02:32 CEST
Description of problem:

When I try to access the Mageia Control Center MCC-in "Security" tab and try to access "Security Configuration and system audit",  the error message appears: "This program was not closed properly"

This error occurs in Mageia 5, Alpha 1, KDE 4.13.95, with the "Portuguese of Brazil language." 

Accessing a terminal as root, typing "drakconf", accessing the CCM, and accessing mode-chart and the security tab "Security Configuration and audit system", the error message appears: "This program was not closed properly" and appears in terminal:

[mageia5-alpha1@localhost ~]$ su -
Senha:
[root@localhost ~]# drakconf
LOG **: NP_Initialize at /usr/lib/libDrakX/mygtk2.pm line 589.
LOG **: NP_Initialize succeeded at /usr/lib/libDrakX/mygtk2.pm line 589.
LOG **: NP_Initialize at /usr/lib/libDrakX/mygtk2.pm line 589.
LOG **: NP_Initialize succeeded at /usr/lib/libDrakX/mygtk2.pm line 589.
LOG **: NP_Initialize at /usr/lib/libDrakX/mygtk2.pm line 589.
LOG **: NP_Initialize succeeded at /usr/lib/libDrakX/mygtk2.pm line 589.
LOG **: NP_Initialize at /usr/lib/libDrakX/mygtk2.pm line 589.
LOG **: NP_Initialize succeeded at /usr/lib/libDrakX/mygtk2.pm line 589.
"/usr/sbin/drakmenustyle" is not executable [Menus] at /usr/libexec/drakconf line 831.
"/usr/sbin/drakbackup" is not executable [Backups] at /usr/libexec/drakconf line 831.
"/usr/sbin/tomoyo-gui" is not executable [Tomoyo Policy] at /usr/libexec/drakconf line 831.
"/usr/sbin/drakguard" is not executable [Parental Controls] at /usr/libexec/drakconf line 831.
java version "1.7.0_65"
OpenJDK Runtime Environment (mageia-2.5.1.1.mga5-x86_64 u65-b17)
OpenJDK 64-Bit Server VM (build 24.65-b04, mixed mode)
INFO: Starting gui..
Traceback (most recent call last):
  File "/usr/share/msec/msecgui.py", line 1789, in <module>
    gui = MsecGui(log, msec, perms, msec_config, perm_conf, exceptions, embed=PlugWindowID)
  File "/usr/share/msec/msecgui.py", line 173, in __init__
    self.reload_config()
  File "/usr/share/msec/msecgui.py", line 457, in reload_config
    self.exceptions.load()
  File "/usr/share/msec/config.py", line 319, in load
    self.log.info(_("loading exceptions file %s: %s") % (self.config, sys.exc_value[1]))
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 16: ordinal not in range(128)

___________________

When I change to English (U.S.) language, will not appear the error message, but also does not work because it does not allow configuration changes, and appears in terminal:

[mageia5-alpha1@localhost ~]$ su -
Password: 
[root@localhost ~]# drakconf
LOG **: NP_Initialize at /usr/lib/libDrakX/mygtk2.pm line 589.
LOG **: NP_Initialize succeeded at /usr/lib/libDrakX/mygtk2.pm line 589.
LOG **: NP_Initialize at /usr/lib/libDrakX/mygtk2.pm line 589.
LOG **: NP_Initialize succeeded at /usr/lib/libDrakX/mygtk2.pm line 589.
LOG **: NP_Initialize at /usr/lib/libDrakX/mygtk2.pm line 589.
LOG **: NP_Initialize succeeded at /usr/lib/libDrakX/mygtk2.pm line 589.
LOG **: NP_Initialize at /usr/lib/libDrakX/mygtk2.pm line 589.
LOG **: NP_Initialize succeeded at /usr/lib/libDrakX/mygtk2.pm line 589.
"/usr/sbin/drakmenustyle" is not executable [Menus] at /usr/libexec/drakconf line 831.
"/usr/sbin/drakbackup" is not executable [Backups] at /usr/libexec/drakconf line 831.
"/usr/sbin/tomoyo-gui" is not executable [Tomoyo Policy] at /usr/libexec/drakconf line 831.
"/usr/sbin/drakguard" is not executable [Parental Controls] at /usr/libexec/drakconf line 831.
java version "1.7.0_65"
OpenJDK Runtime Environment (mageia-2.5.1.1.mga5-x86_64 u65-b17)
OpenJDK 64-Bit Server VM (build 24.65-b04, mixed mode)
INFO: Starting gui..
INFO: loading exceptions file /etc/security/msec/exceptions: No such file or directory
INFO: No exceptions loaded
INFO: Detected base msec level 'standard'
/usr/share/msec/msecgui.py:213: PyGTKDeprecationWarning: Using positional arguments with the GObject constructor has been deprecated. Please specify keyword(s) for "label" or use a class specific constructor. See: https://wiki.gnome.org/PyGObject/InitializerDeprecations
  filemenu = Gtk.MenuItem(topmenu, use_underline=True)
/usr/lib64/python2.7/site-packages/gi/overrides/__init__.py:175: Warning: The property GtkMisc:xalign is deprecated and shouldn't be used anymore. It will be removed in a future version.
  return super_init_func(self, **new_kwargs)
/usr/share/msec/msecgui.py:219: PyGTKDeprecationWarning: Using positional arguments with the GObject constructor has been deprecated. Please specify keyword(s) for "label" or use a class specific constructor. See: https://wiki.gnome.org/PyGObject/InitializerDeprecations
  menuitem = Gtk.MenuItem(submenu, use_underline=True)
/usr/share/msec/msecgui.py:236: DeprecationWarning: Gtk.modify_font is deprecated
  label.modify_font(Pango.FontDescription("13"))
/usr/share/msec/msecgui.py:572: PyGTKDeprecationWarning: Using positional arguments with the GObject constructor has been deprecated. Please specify keyword(s) for "n_rows, n_columns, homogeneous" or use a class specific constructor. See: https://wiki.gnome.org/PyGObject/InitializerDeprecations
  table = Gtk.Table(4, 4, False)
/usr/lib64/python2.7/site-packages/gi/overrides/Gtk.py:1445: DeprecationWarning: Gtk.attach is deprecated
  Gtk.Table.attach(self, child, left_attach, right_attach, top_attach, bottom_attach, xoptions, yoptions, xpadding, ypadding)
/usr/share/msec/msecgui.py:591: Warning: The property GtkMisc:yalign is deprecated and shouldn't be used anymore. It will be removed in a future version.
  label.set_property("yalign", 0.5)
/usr/share/msec/msecgui.py:604: PyGTKDeprecationWarning: Using positional arguments with the GObject constructor has been deprecated. Please specify keyword(s) for "label" or use a class specific constructor. See: https://wiki.gnome.org/PyGObject/InitializerDeprecations
  button = Gtk.Button(_("Configure"))
/usr/share/msec/msecgui.py:618: PyGTKDeprecationWarning: Using positional arguments with the GObject constructor has been deprecated. Please specify keyword(s) for "label" or use a class specific constructor. See: https://wiki.gnome.org/PyGObject/InitializerDeprecations
  button = Gtk.Button(_("Update now"))
/usr/share/msec/msecgui.py:646: PyGTKDeprecationWarning: Using positional arguments with the GObject constructor has been deprecated. Please specify keyword(s) for "label" or use a class specific constructor. See: https://wiki.gnome.org/PyGObject/InitializerDeprecations
  button = Gtk.Button(_("Configure"))
/usr/share/msec/msecgui.py:667: PyGTKDeprecationWarning: Using positional arguments with the GObject constructor has been deprecated. Please specify keyword(s) for "label" or use a class specific constructor. See: https://wiki.gnome.org/PyGObject/InitializerDeprecations
  button = Gtk.Button(_("Show results"))
/usr/share/msec/msecgui.py:673: PyGTKDeprecationWarning: Using positional arguments with the GObject constructor has been deprecated. Please specify keyword(s) for "label" or use a class specific constructor. See: https://wiki.gnome.org/PyGObject/InitializerDeprecations
  button = Gtk.Button(_("Run now"))
/usr/share/msec/msecgui.py:832: PyGTKDeprecationWarning: Using positional arguments with the GObject constructor has been deprecated. Please specify keyword(s) for "model" or use a class specific constructor. See: https://wiki.gnome.org/PyGObject/InitializerDeprecations
  treeview = Gtk.TreeView(lstore)
/usr/share/msec/msecgui.py:897: PyGTKDeprecationWarning: Using positional arguments with the GObject constructor has been deprecated. Please specify keyword(s) for "label" or use a class specific constructor. See: https://wiki.gnome.org/PyGObject/InitializerDeprecations
  self.notify_mail = Gtk.CheckButton(_("Send security alerts by email to:"))
/usr/share/msec/msecgui.py:919: PyGTKDeprecationWarning: Using positional arguments with the GObject constructor has been deprecated. Please specify keyword(s) for "label" or use a class specific constructor. See: https://wiki.gnome.org/PyGObject/InitializerDeprecations
  self.notify_desktop = Gtk.CheckButton(_("Display security alerts on desktop"))
/usr/share/msec/msecgui.py:490: PyGTKDeprecationWarning: Using positional arguments with the GObject constructor has been deprecated. Please specify keyword(s) for "model" or use a class specific constructor. See: https://wiki.gnome.org/PyGObject/InitializerDeprecations
  treeview = Gtk.TreeView(lstore)
/usr/share/msec/msecgui.py:1103: PyGTKDeprecationWarning: Using positional arguments with the GObject constructor has been deprecated. Please specify keyword(s) for "label" or use a class specific constructor. See: https://wiki.gnome.org/PyGObject/InitializerDeprecations
  self.periodic_checks = Gtk.CheckButton(_("Enable periodic security checks"))
/usr/share/msec/msecgui.py:1155: PyGTKDeprecationWarning: Using positional arguments with the GObject constructor has been deprecated. Please specify keyword(s) for "model" or use a class specific constructor. See: https://wiki.gnome.org/PyGObject/InitializerDeprecations
  treeview = Gtk.TreeView(lstore)
/usr/share/msec/msecgui.py:1192: PyGTKDeprecationWarning: Using positional arguments with the GObject constructor has been deprecated. Please specify keyword(s) for "label" or use a class specific constructor. See: https://wiki.gnome.org/PyGObject/InitializerDeprecations
  button = Gtk.Button(_("Add a rule"))
/usr/share/msec/msecgui.py:1197: PyGTKDeprecationWarning: Using positional arguments with the GObject constructor has been deprecated. Please specify keyword(s) for "label" or use a class specific constructor. See: https://wiki.gnome.org/PyGObject/InitializerDeprecations
  button = Gtk.Button(_("Delete"))
/usr/share/msec/msecgui.py:1227: PyGTKDeprecationWarning: Using positional arguments with the GObject constructor has been deprecated. Please specify keyword(s) for "model" or use a class specific constructor. See: https://wiki.gnome.org/PyGObject/InitializerDeprecations
  treeview = Gtk.TreeView(lstore)
/usr/share/msec/msecgui.py:1319: PyGTKDeprecationWarning: Using positional arguments with the GObject constructor has been deprecated. Please specify keyword(s) for "label" or use a class specific constructor. See: https://wiki.gnome.org/PyGObject/InitializerDeprecations
  button = Gtk.Button(_("Add a rule"))
/usr/share/msec/msecgui.py:1324: PyGTKDeprecationWarning: Using positional arguments with the GObject constructor has been deprecated. Please specify keyword(s) for "label" or use a class specific constructor. See: https://wiki.gnome.org/PyGObject/InitializerDeprecations
  button = Gtk.Button(_("Delete"))
Switching to secure
Traceback (most recent call last):
  File "/usr/share/msec/msecgui.py", line 282, in level_changed
    self.toggle_level(level, force=True)
  File "/usr/share/msec/msecgui.py", line 996, in toggle_level
    iter = self.level_list.get_iter_root()
AttributeError: 'ListStore' object has no attribute 'get_iter_root'
Switching to secure
Traceback (most recent call last):
  File "/usr/share/msec/msecgui.py", line 282, in level_changed
    self.toggle_level(level, force=True)
  File "/usr/share/msec/msecgui.py", line 996, in toggle_level
    iter = self.level_list.get_iter_root()
AttributeError: 'ListStore' object has no attribute 'get_iter_root'
Switching to webserver
Traceback (most recent call last):
  File "/usr/share/msec/msecgui.py", line 282, in level_changed
    self.toggle_level(level, force=True)
  File "/usr/share/msec/msecgui.py", line 996, in toggle_level
    iter = self.level_list.get_iter_root()
AttributeError: 'ListStore' object has no attribute 'get_iter_root'

AttributeError: 'ListStore' object has no attribute 'get_iter_root'
/usr/share/msec/msecgui.py:1650: PyGTKDeprecationWarning: The "buttons" argument must be a Gtk.ButtonsType enum value. Please use the "add_buttons" method for adding buttons. See: https://wiki.gnome.org/PyGObject/InitializerDeprecations
  Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL))
/usr/lib64/python2.7/site-packages/gi/overrides/Gtk.py:537: PyGTKDeprecationWarning: Using positional arguments with the GObject constructor has been deprecated. Please specify keyword(s) for "title, transient_for, flags, add_buttons" or use a class specific constructor. See: https://wiki.gnome.org/PyGObject/InitializerDeprecations
  self._init(*args, **new_kwargs)
/usr/lib64/python2.7/site-packages/gi/overrides/Gtk.py:567: Warning: The property GtkButton:use-stock is deprecated and shouldn't be used anymore. It will be removed in a future version.
  self.add_button(text, response)
/usr/lib64/python2.7/site-packages/gi/overrides/Gtk.py:567: Warning: The property GtkSettings:gtk-button-images is deprecated and shouldn't be used anymore. It will be removed in a future version.
  self.add_button(text, response)
Traceback (most recent call last):
  File "/usr/share/msec/msecgui.py", line 1662, in option_changed
    dialog.vbox.pack_start(Gtk.HSeparator())
TypeError: pack_start() takes exactly 5 arguments (2 given)
Traceback (most recent call last):
  File "/usr/share/msec/msecgui.py", line 1662, in option_changed
    dialog.vbox.pack_start(Gtk.HSeparator())
TypeError: pack_start() takes exactly 5 arguments (2 given)
Traceback (most recent call last):
  File "/usr/share/msec/msecgui.py", line 1662, in option_changed
    dialog.vbox.pack_start(Gtk.HSeparator())
TypeError: pack_start() takes exactly 5 arguments (2 given)
Traceback (most recent call last):
  File "/usr/share/msec/msecgui.py", line 1662, in option_changed
    dialog.vbox.pack_start(Gtk.HSeparator())
TypeError: pack_start() takes exactly 5 arguments (2 given)
Traceback (most recent call last):
  File "/usr/share/msec/msecgui.py", line 1662, in option_changed
    dialog.vbox.pack_start(Gtk.HSeparator())
TypeError: pack_start() takes exactly 5 arguments (2 given)
Traceback (most recent call last):
  File "/usr/share/msec/msecgui.py", line 1662, in option_changed
    dialog.vbox.pack_start(Gtk.HSeparator())
TypeError: pack_start() takes exactly 5 arguments (2 given)

_________________________


Version-Release number of selected component (if applicable):
Mageia 5 Alpha 1, KDE 4.13.95, 54 bits
msec-gui-1.4-1.mga5.x86_64.rpm


How reproducible:
Accessing "Security Configuration and system audit" in MCC.

Steps to Reproduce:
1.
2.
3.


Reproducible: 

Steps to Reproduce:
Comment 1 eric lamaze 2014-08-05 11:44:02 CEST
Hi,
Do you had try reconfigure system's localisation ? I think to an encoding problem between UTF and other encoding maybe.

I had a similary problem and switching localisation help me ( maybe look for UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 16: ordinal not in range(128) )

so I tried : 

# localedrake

I don't know precisly what i changed but now it is :

$ locale
LANG=fr_FR
LC_CTYPE=fr_FR
LC_NUMERIC=fr_FR
LC_TIME=fr_FR
LC_COLLATE=fr_FR
LC_MONETARY=fr_FR
LC_MESSAGES=fr_FR
LC_PAPER=fr_FR
LC_NAME=fr_FR
LC_ADDRESS=fr_FR
LC_TELEPHONE=fr_FR
LC_MEASUREMENT=fr_FR
LC_IDENTIFICATION=fr_FR
LC_ALL=

 and know all work fine...

CC: (none) => lameri

Comment 2 macxi 2014-08-05 14:38:14 CEST
With the "Portuguese of Brazil (pt_BR) language", the same error occurs when I try to access "Security Configuration and system audit". The error message appears: "This program was not closed properly"


[mageia-5-Alpha-1@localhost ~]$ locale
LANG=pt_BR.UTF-8
LC_CTYPE=pt_BR.UTF-8
LC_NUMERIC=pt_BR.UTF-8
LC_TIME=pt_BR.UTF-8
LC_COLLATE=pt_BR.UTF-8
LC_MONETARY=pt_BR.UTF-8
LC_MESSAGES=pt_BR.UTF-8
LC_PAPER=pt_BR.UTF-8
LC_NAME=pt_BR.UTF-8
LC_ADDRESS=pt_BR.UTF-8
LC_TELEPHONE=pt_BR.UTF-8
LC_MEASUREMENT=pt_BR.UTF-8
LC_IDENTIFICATION=pt_BR.UTF-8
LC_ALL=

[[mageia-5-Alpha-1@localhost ~]$ su -
Senha:
[root@localhost ~]# drakconf
LOG **: NP_Initialize at /usr/lib/libDrakX/mygtk2.pm line 589.
LOG **: NP_Initialize succeeded at /usr/lib/libDrakX/mygtk2.pm line 589.
LOG **: NP_Initialize at /usr/lib/libDrakX/mygtk2.pm line 589.
LOG **: NP_Initialize succeeded at /usr/lib/libDrakX/mygtk2.pm line 589.
LOG **: NP_Initialize at /usr/lib/libDrakX/mygtk2.pm line 589.
LOG **: NP_Initialize succeeded at /usr/lib/libDrakX/mygtk2.pm line 589.
LOG **: NP_Initialize at /usr/lib/libDrakX/mygtk2.pm line 589.
LOG **: NP_Initialize succeeded at /usr/lib/libDrakX/mygtk2.pm line 589.
"/usr/sbin/drakmenustyle" is not executable [Menus] at /usr/libexec/drakconf line 831.
"/usr/sbin/drakbackup" is not executable [Backups] at /usr/libexec/drakconf line 831.
"/usr/sbin/tomoyo-gui" is not executable [Tomoyo Policy] at /usr/libexec/drakconf line 831.
"/usr/sbin/drakguard" is not executable [Parental Controls] at /usr/libexec/drakconf line 831.
java version "1.7.0_65"
OpenJDK Runtime Environment (mageia-2.5.1.1.mga5-x86_64 u65-b17)
OpenJDK 64-Bit Server VM (build 24.65-b04, mixed mode)
INFO: Starting gui..
Traceback (most recent call last):
  File "/usr/share/msec/msecgui.py", line 1789, in <module>
    gui = MsecGui(log, msec, perms, msec_config, perm_conf, exceptions, embed=PlugWindowID)
  File "/usr/share/msec/msecgui.py", line 173, in __init__
    self.reload_config()
  File "/usr/share/msec/msecgui.py", line 457, in reload_config
    self.exceptions.load()
  File "/usr/share/msec/config.py", line 319, in load
    self.log.info(_("loading exceptions file %s: %s") % (self.config, sys.exc_value[1]))
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 16: ordinal not in range(128)
[root@localhost ~]#
Comment 3 Manuel Hiebel 2014-11-01 19:26:50 CET
don't you have a corrupted system ? (regarding your previous bug)
Comment 4 macxi 2014-11-02 13:35:09 CET
(In reply to Manuel Hiebel from comment #3)
> don't you have a corrupted system ? (regarding your previous bug)

No apparent error in the system that is functioning normally. 

I checked today, november 02, 2014. The error continues to occur with Mageia 5, alpha 1, all updated with kernel-desktop-3.17.2-2.mga5-1-1.mga5.x86_64

This same bug was also occurring with Mageia-5-A1 version installed on virtualbox last month. I still did not check in virtualbox after the updates.

Error with mcc (text-mode root): 

Switching to secure
Traceback (most recent call last):
  File "/usr/share/msec/msecgui.py", line 282, in level_changed
    self.toggle_level(level, force=True)
  File "/usr/share/msec/msecgui.py", line 996, in toggle_level
    iter = self.level_list.get_iter_root()
AttributeError: 'ListStore' object has no attribute 'get_iter_root'
Comment 5 macxi 2014-11-02 14:05:03 CET
This error (mentioning in the previous post) is occurring with Mageia 5 A1 running with the language-US.UTF 8.

When I change language to BR.UTF-8 (Portuguese-Brasil), and I restart the session, and try to access the option "configure system security, permissions and audit (msec-gui)" a window appears with the warning: "This program has exited abnormally".

Error with mcc (text-mode root)(BR.UTF-8): 

[user-mageia5-a1@localhost ~]$ su -
Senha:
[root@localhost ~]# mcc
"/usr/sbin/drakmenustyle" is not executable [Menus] at /usr/libexec/drakconf line 831.
"/usr/sbin/drakbackup" is not executable [Backups] at /usr/libexec/drakconf line 831.
"/usr/sbin/tomoyo-gui" is not executable [Tomoyo Policy] at /usr/libexec/drakconf line 831.
"/usr/sbin/drakguard" is not executable [Parental Controls] at /usr/libexec/drakconf line 831.
openjdk version "1.8.0_40"
OpenJDK Runtime Environment (build 1.8.0_40-b02)
OpenJDK 64-Bit Server VM (build 25.40-b05, mixed mode)
INFO: Starting gui..
Traceback (most recent call last):
  File "/usr/share/msec/msecgui.py", line 1789, in <module>
    gui = MsecGui(log, msec, perms, msec_config, perm_conf, exceptions, embed=PlugWindowID)
  File "/usr/share/msec/msecgui.py", line 173, in __init__
    self.reload_config()
  File "/usr/share/msec/msecgui.py", line 457, in reload_config
    self.exceptions.load()
  File "/usr/share/msec/config.py", line 319, in load
    self.log.info(_("loading exceptions file %s: %s") % (self.config, sys.exc_value[1]))
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 16: ordinal not in range(128)
INFO: Starting gui..
Traceback (most recent call last):
  File "/usr/share/msec/msecgui.py", line 1789, in <module>
    gui = MsecGui(log, msec, perms, msec_config, perm_conf, exceptions, embed=PlugWindowID)
  File "/usr/share/msec/msecgui.py", line 173, in __init__
    self.reload_config()
  File "/usr/share/msec/msecgui.py", line 457, in reload_config
    self.exceptions.load()
  File "/usr/share/msec/config.py", line 319, in load
    self.log.info(_("loading exceptions file %s: %s") % (self.config, sys.exc_value[1]))
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 16: ordinal not in range(128)
Comment 6 Alex Loginov 2014-11-19 11:12:56 CET
I have an error for msec-gui-1.4-3.mga5.i586.rpm:

[root@localhost user]# msecgui
INFO: Starting gui..
Traceback (most recent call last):
  File "/usr/share/msec/msecgui.py", line 1789, in <module>
    gui = MsecGui(log, msec, perms, msec_config, perm_conf, exceptions, embed=PlugWindowID)
  File "/usr/share/msec/msecgui.py", line 173, in __init__
    self.reload_config()
  File "/usr/share/msec/msecgui.py", line 457, in reload_config
    self.exceptions.load()
  File "/usr/share/msec/config.py", line 319, in load
    self.log.info(_("loading exceptions file %s: %s") % (self.config, sys.exc_value[1]))
UnicodeDecodeError: 'ascii' codec can't decode byte 0xd0 in position 0: ordinal not in range(128)

So, msecgui does not work for Russian, but works
LC_ALL=C msecgui

CC: (none) => loginov_alex

Comment 7 Dick Gevers 2014-11-19 13:28:15 CET
@loginov_alex: You mention a newer vesion of msec-gui. But is what you see under 5alfa2, 5beta1 or perhaps current Cauldron? When answering here in Bugzilla please change package & whiteboard, wiping keyword. Thanks.

Whiteboard: (none) => 5alfa1
Keywords: (none) => NEEDINFO

Comment 8 Alex Loginov 2014-11-19 13:49:08 CET
I used the latest Cauldron for all packages.
Comment 9 Dick Gevers 2014-11-19 15:20:33 CET
The error for #c6 is not disabling the operation.

So it is either encoding or localisation. 

Absent maintainer, ph i18n-bugs can say stg about it.

CC: (none) => i18n-bugs
Keywords: NEEDINFO => (none)

Comment 10 Alex Loginov 2014-11-19 20:18:32 CET
The same issue https://bugs.mageia.org/show_bug.cgi?id=12882 which was fixed before for net_monitor.
Alex Loginov 2014-11-19 21:55:18 CET

CC: (none) => thierry.vignaud

Comment 11 macxi 2014-11-20 07:44:50 CET
I updated the package and is occurring same error

RPM Package: msec-gui-1.4-3.mga5.x86_64.rpm


******************************

1st test

locale  LANG=pt_BR.UTF-8

[root@localhost ~]# locale
LANG=pt_BR.UTF-8
LC_CTYPE=pt_BR.UTF-8
LC_NUMERIC=pt_BR.UTF-8
LC_TIME=pt_BR.UTF-8
LC_COLLATE=pt_BR.UTF-8
LC_MONETARY=pt_BR.UTF-8
LC_MESSAGES=pt_BR.UTF-8
LC_PAPER=pt_BR.UTF-8
LC_NAME=pt_BR.UTF-8
LC_ADDRESS=pt_BR.UTF-8
LC_TELEPHONE=pt_BR.UTF-8
LC_MEASUREMENT=pt_BR.UTF-8
LC_IDENTIFICATION=pt_BR.UTF-8
LC_ALL=
[root@localhost ~]# 


[root@localhost ~]# msecgui
INFO: Starting gui..
Traceback (most recent call last):
  File "/usr/share/msec/msecgui.py", line 1789, in <module>
    gui = MsecGui(log, msec, perms, msec_config, perm_conf, exceptions, embed=PlugWindowID)
  File "/usr/share/msec/msecgui.py", line 173, in __init__
    self.reload_config()
  File "/usr/share/msec/msecgui.py", line 457, in reload_config
    self.exceptions.load()
  File "/usr/share/msec/config.py", line 319, in load
    self.log.info(_("loading exceptions file %s: %s") % (self.config, sys.exc_value[1]))
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 16: ordinal not in range(128)
[root@localhost ~]# 
[root@localhost ~]# 


******************************

2nd test

I changed the language to LANG=en_US.UTF-8

[root@localhost ~]# locale
LANG=en_US.UTF-8
LC_CTYPE=en_US.UTF-8
LC_NUMERIC=en_US.UTF-8
LC_TIME=en_US.UTF-8
LC_COLLATE=en_US.UTF-8
LC_MONETARY=en_US.UTF-8
LC_MESSAGES=en_US.UTF-8
LC_PAPER=en_US.UTF-8
LC_NAME=en_US.UTF-8
LC_ADDRESS=en_US.UTF-8
LC_TELEPHONE=en_US.UTF-8
LC_MEASUREMENT=en_US.UTF-8
LC_IDENTIFICATION=en_US.UTF-8
LC_ALL=
[root@localhost ~]# 


[root@localhost ~]# msecgui
INFO: Starting gui..
INFO: loading exceptions file /etc/security/msec/exceptions: No such file or directory
INFO: No exceptions loaded
INFO: Detected base msec level 'standard'
/usr/share/msec/msecgui.py:213: PyGTKDeprecationWarning: Using positional arguments with the GObject constructor has been deprecated. Please specify keyword(s) for "label" or use a class specific constructor. See: https://wiki.gnome.org/PyGObject/InitializerDeprecations
  filemenu = Gtk.MenuItem(topmenu, use_underline=True)
/usr/share/msec/msecgui.py:219: PyGTKDeprecationWarning: Using positional arguments with the GObject constructor has been deprecated. Please specify keyword(s) for "label" or use a class specific constructor. See: https://wiki.gnome.org/PyGObject/InitializerDeprecations
  menuitem = Gtk.MenuItem(submenu, use_underline=True)
/usr/share/msec/msecgui.py:236: DeprecationWarning: Gtk.modify_font is deprecated
  label.modify_font(Pango.FontDescription("13"))
/usr/share/msec/msecgui.py:572: PyGTKDeprecationWarning: Using positional arguments with the GObject constructor has been deprecated. Please specify keyword(s) for "n_rows, n_columns, homogeneous" or use a class specific constructor. See: https://wiki.gnome.org/PyGObject/InitializerDeprecations
  table = Gtk.Table(4, 4, False)
/usr/lib64/python2.7/site-packages/gi/overrides/Gtk.py:1445: DeprecationWarning: Gtk.attach is deprecated
  Gtk.Table.attach(self, child, left_attach, right_attach, top_attach, bottom_attach, xoptions, yoptions, xpadding, ypadding)
/usr/share/msec/msecgui.py:604: PyGTKDeprecationWarning: Using positional arguments with the GObject constructor has been deprecated. Please specify keyword(s) for "label" or use a class specific constructor. See: https://wiki.gnome.org/PyGObject/InitializerDeprecations
  button = Gtk.Button(_("Configure"))
/usr/share/msec/msecgui.py:618: PyGTKDeprecationWarning: Using positional arguments with the GObject constructor has been deprecated. Please specify keyword(s) for "label" or use a class specific constructor. See: https://wiki.gnome.org/PyGObject/InitializerDeprecations                                                                                
  button = Gtk.Button(_("Update now"))                                                                                                                                         
/usr/share/msec/msecgui.py:646: PyGTKDeprecationWarning: Using positional arguments with the GObject constructor has been deprecated. Please specify keyword(s) for "label" or use a class specific constructor. See: https://wiki.gnome.org/PyGObject/InitializerDeprecations
  button = Gtk.Button(_("Configure"))
/usr/share/msec/msecgui.py:667: PyGTKDeprecationWarning: Using positional arguments with the GObject constructor has been deprecated. Please specify keyword(s) for "label" or use a class specific constructor. See: https://wiki.gnome.org/PyGObject/InitializerDeprecations
  button = Gtk.Button(_("Show results"))
/usr/share/msec/msecgui.py:673: PyGTKDeprecationWarning: Using positional arguments with the GObject constructor has been deprecated. Please specify keyword(s) for "label" or use a class specific constructor. See: https://wiki.gnome.org/PyGObject/InitializerDeprecations
  button = Gtk.Button(_("Run now"))
/usr/share/msec/msecgui.py:832: PyGTKDeprecationWarning: Using positional arguments with the GObject constructor has been deprecated. Please specify keyword(s) for "model" or use a class specific constructor. See: https://wiki.gnome.org/PyGObject/InitializerDeprecations
  treeview = Gtk.TreeView(lstore)
/usr/share/msec/msecgui.py:833: DeprecationWarning: Gtk.set_rules_hint is deprecated
  treeview.set_rules_hint(True)
/usr/share/msec/msecgui.py:897: PyGTKDeprecationWarning: Using positional arguments with the GObject constructor has been deprecated. Please specify keyword(s) for "label" or use a class specific constructor. See: https://wiki.gnome.org/PyGObject/InitializerDeprecations
  self.notify_mail = Gtk.CheckButton(_("Send security alerts by email to:"))
/usr/share/msec/msecgui.py:919: PyGTKDeprecationWarning: Using positional arguments with the GObject constructor has been deprecated. Please specify keyword(s) for "label" or use a class specific constructor. See: https://wiki.gnome.org/PyGObject/InitializerDeprecations
  self.notify_desktop = Gtk.CheckButton(_("Display security alerts on desktop"))
/usr/share/msec/msecgui.py:490: PyGTKDeprecationWarning: Using positional arguments with the GObject constructor has been deprecated. Please specify keyword(s) for "model" or use a class specific constructor. See: https://wiki.gnome.org/PyGObject/InitializerDeprecations
  treeview = Gtk.TreeView(lstore)
/usr/share/msec/msecgui.py:1103: PyGTKDeprecationWarning: Using positional arguments with the GObject constructor has been deprecated. Please specify keyword(s) for "label" or use a class specific constructor. See: https://wiki.gnome.org/PyGObject/InitializerDeprecations
  self.periodic_checks = Gtk.CheckButton(_("Enable periodic security checks"))
/usr/share/msec/msecgui.py:1155: PyGTKDeprecationWarning: Using positional arguments with the GObject constructor has been deprecated. Please specify keyword(s) for "model" or use a class specific constructor. See: https://wiki.gnome.org/PyGObject/InitializerDeprecations
  treeview = Gtk.TreeView(lstore)
/usr/share/msec/msecgui.py:1192: PyGTKDeprecationWarning: Using positional arguments with the GObject constructor has been deprecated. Please specify keyword(s) for "label" or use a class specific constructor. See: https://wiki.gnome.org/PyGObject/InitializerDeprecations
  button = Gtk.Button(_("Add a rule"))
/usr/share/msec/msecgui.py:1197: PyGTKDeprecationWarning: Using positional arguments with the GObject constructor has been deprecated. Please specify keyword(s) for "label" or use a class specific constructor. See: https://wiki.gnome.org/PyGObject/InitializerDeprecations
  button = Gtk.Button(_("Delete"))
/usr/share/msec/msecgui.py:1227: PyGTKDeprecationWarning: Using positional arguments with the GObject constructor has been deprecated. Please specify keyword(s) for "model" or use a class specific constructor. See: https://wiki.gnome.org/PyGObject/InitializerDeprecations
  treeview = Gtk.TreeView(lstore)
/usr/share/msec/msecgui.py:1319: PyGTKDeprecationWarning: Using positional arguments with the GObject constructor has been deprecated. Please specify keyword(s) for "label" or use a class specific constructor. See: https://wiki.gnome.org/PyGObject/InitializerDeprecations
  button = Gtk.Button(_("Add a rule"))
/usr/share/msec/msecgui.py:1324: PyGTKDeprecationWarning: Using positional arguments with the GObject constructor has been deprecated. Please specify keyword(s) for "label" or use a class specific constructor. See: https://wiki.gnome.org/PyGObject/InitializerDeprecations
  button = Gtk.Button(_("Delete"))

  Switching to secure
Traceback (most recent call last):
  File "/usr/share/msec/msecgui.py", line 282, in level_changed
    self.toggle_level(level, force=True)
  File "/usr/share/msec/msecgui.py", line 996, in toggle_level
    iter = self.level_list.get_iter_root()
AttributeError: 'ListStore' object has no attribute 'get_iter_root'

Switching to netbook
Traceback (most recent call last):
  File "/usr/share/msec/msecgui.py", line 282, in level_changed
    self.toggle_level(level, force=True)
  File "/usr/share/msec/msecgui.py", line 996, in toggle_level
    iter = self.level_list.get_iter_root()
AttributeError: 'ListStore' object has no attribute 'get_iter_root'

Switching to fileserver
Traceback (most recent call last):
  File "/usr/share/msec/msecgui.py", line 282, in level_changed
    self.toggle_level(level, force=True)
  File "/usr/share/msec/msecgui.py", line 996, in toggle_level
    iter = self.level_list.get_iter_root()
AttributeError: 'ListStore' object has no attribute 'get_iter_root'


Traceback (most recent call last):
  File "/usr/share/msec/msecgui.py", line 1662, in option_changed
    dialog.vbox.pack_start(Gtk.HSeparator())
TypeError: pack_start() takes exactly 5 arguments (2 given)
Dick Gevers 2014-11-20 07:53:58 CET

Whiteboard: 5alfa1 => 5beta1
Source RPM: msec-gui-1.4-1.mga5.x86_64.rpm => msec-gui-1.4-3.mga5.x86_64.rpm

Thierry Vignaud 2014-11-20 10:22:09 CET

Blocks: (none) => 11778
Summary: configure system security, permissions and audit (msec-gui): error message and does not work => msec-gui: error message and does not work

Thierry Vignaud 2014-11-20 18:04:02 CET

Status: NEW => ASSIGNED
Summary: msec-gui: error message and does not work => msec-gui: error message and does not work (UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 16: ordinal not in range(128))

Comment 12 macxi 2014-12-28 16:17:48 CET
The error with msec-gui continues.
  - The msec-gui does not work in Mageia 4.1 updated. Initially allows change the security level, but is very slow and freezes before finishing configuration change.The error in Mageia 4.1 was only tested in the pt_Br language.

  - The msec-gui does not work in Mageia 5 Beta 1 updated. The error in Mageia 5 Beta 1 was tested in the pt_Br and en_US languages.
Comment 13 Oleg Kozlov 2015-01-20 20:30:20 CET
Problems are with constructions like:
self.log.error(_("Unable to save %s: %s") % (self.config, sys.exc_value))

In Python when you split values of types unicode and str, str converts to unicode. 

It's done like "some string".decode(). But decode without manual encoding choosing, mean decode("ascii"). This is the reason why errors with not-english strings. Not-english strings cannot be decoded with ascii, they need set system encoding like utf-8. 

So. With not english strings you need:

1. Get correct system encoding (it's important!)
SYS_ENC = sys.getfilesystemencoding()

2. Convert str to unicode 
"string".decode(SYS_ENC)

In example in a top of my comment, fix should be like
SYS_ENC = sys.getfilesystemencoding()
self.log.error(_("Unable to save %s: %s") % (self.config, str(sys.exc_value).decode(SYS_ENC)))

You cannot cannot decode exc_value without wrapping it in str() because excaptions (exc_value) doesn't have this method. "unicode(sys.exc_value)" also will not work, because unicode() use default encoding - ascii. 

So, only str(sys.exc_value).decode(SYS_ENC) will work correct with not english locales. 

I wrote patch which shoud fix this bug (attached).

CC: (none) => xxblx.duke

Comment 14 Oleg Kozlov 2015-01-20 20:32:45 CET
Created attachment 5829 [details]
decode.path for MSEC (fix bug with locales which use non-english letters)

Tested on Mageia 5 x86_64 with russian locale (ru_RU.UTF-8)
Comment 15 Valek Saikov 2015-01-20 22:05:13 CET
Fixed. Tested on Mageia 5 i586 with russian locale (ru_RU.UTF-8)

CC: (none) => saikov.vb

Valek Saikov 2015-01-20 22:08:55 CET

Hardware: x86_64 => All

Manuel Hiebel 2015-01-20 22:13:43 CET

Keywords: (none) => PATCH

Comment 16 Thierry Vignaud 2015-01-23 16:06:39 CET
First, thanks for your patch!
Secondly, it's a bit ugly to redo the same logic everywhere.
Could you attach a second version that would just move this login in libmsec.py so that log()/warn()/... just work out of the box?
Thanks
Comment 17 macxi 2015-01-24 10:36:39 CET
With the latest updates of Mageia. 4.1, msec.gui It is now working  correctly.

The msec.gui of the Mageia 5 still does not work. The last kernel update: kernel-desktop-3.18.3-2.mga5-1-1.mga5.x86_64.
Comment 18 Oleg Kozlov 2015-01-25 15:24:58 CET
(In reply to Thierry Vignaud from comment #16)
> First, thanks for your patch!
> Secondly, it's a bit ugly to redo the same logic everywhere.
> Could you attach a second version that would just move this login in
> libmsec.py so that log()/warn()/... just work out of the box?
> Thanks

I think that doesn't help to solve problem. 

Look at
self.log.error(_("Unable to save %s: %s") % (self.config, sys.exc_value))

Error corrupt at joining str to unicode. So, at joining (self.config, sys.exc_value) into _("Unable to save %s: %s"). This occurs before executing self.log.error(). So modification IN Log.error may not help.


[xxblx@localhost ~]$ python
Python 2.7.6 (default, Sep 26 2014, 12:20:36) 
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> # some unicode in english
... eng_ucd = u"something in english"
>>> 
>>> # some str in russian
... rus_str = "здеÑÑ ÑÑо-Ñо по-ÑÑÑÑки"
>>> 
>>> # without manual decoding will be an error
... eng_ucd + rus_str
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
UnicodeDecodeError: 'ascii' codec can't decode byte 0xd0 in position 0: ordinal not in range(128)
>>> 
>>> # manual decode
... eng_ucd + rus_str.decode("utf-8")
u'something in english\u0437\u0434\u0435\u0441\u044c \u0447\u0442\u043e-\u0442\u043e \u043f\u043e-\u0440\u0443\u0441\u0441\u043a\u0438'
>>> 
>>> u"here some unicode too %s" % rus_str
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
UnicodeDecodeError: 'ascii' codec can't decode byte 0xd0 in position 0: ordinal not in range(128)
>>> u"here some unicode too %s" % rus_str.decode("utf-8")
u'here some unicode too \u0437\u0434\u0435\u0441\u044c \u0447\u0442\u043e-\u0442\u043e \u043f\u043e-\u0440\u0443\u0441\u0441\u043a\u0438'
Comment 19 Oleg Kozlov 2015-01-25 15:39:03 CET
(In reply to Thierry Vignaud from comment #16)
> First, thanks for your patch!
> Secondly, it's a bit ugly to redo the same logic everywhere.
> Could you attach a second version that would just move this login in
> libmsec.py so that log()/warn()/... just work out of the box?
> Thanks

Look please to
[xxblx@localhost ~]$ python
Python 2.7.6 (default, Sep 26 2014, 12:20:36) 
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> def foo(s):
...   print "foo execs"
...   print s
... 
>>> foo("123")
foo execs
123
>>> 
>>> 
>>> foo(u"unicode with %s inside" % "ÑÑо-Ñо по-ÑÑÑÑки")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
UnicodeDecodeError: 'ascii' codec can't decode byte 0xd1 in position 0: ordinal not in range(128)
>>> 
>>> def foo2(s):
...   s = s.decode("utf-8")
...   print "foo execs"
...   print s
... 
>>> 
>>> foo2(u"unicode with %s inside" % "ÑÑо-Ñо по-ÑÑÑÑки")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
UnicodeDecodeError: 'ascii' codec can't decode byte 0xd1 in position 0: ordinal not in range(128)

Error corrupt before function execs. Similar will be in Log.error(), changes inside method can't solve problem which corrupts before function execution.
Comment 20 Alex Loginov 2015-01-25 16:23:49 CET
Anyway this patch with double strings is ugly.
How important to have translated errors, infos and warnings in logs?
If not very important, then my proposal is to add patch in RPM package only (not in git) and to unmark problematic strings from translations while we uses python < 3 for msec-gui.
Comment 21 Oleg Kozlov 2015-01-25 16:52:32 CET
(In reply to Alex Loginov from comment #20)
> Anyway this patch with double strings is ugly.
> How important to have translated errors, infos and warnings in logs?
> If not very important, then my proposal is to add patch in RPM package only
> (not in git) and to unmark problematic strings from translations while we
> uses python < 3 for msec-gui.

Alex, did you look to MSEC sources? In python sys module return error's description from system and place to sys.exc_value. So, you can't just "unmark problematic strings from translations" because you need to "unmark" it in system's translation =) 

In most of possible errors which fixed by patch, problem string returned from system by sys module.
Comment 22 Alex Loginov 2015-01-25 18:10:43 CET
The root of this issue is an concatenation for different strings.
For example:

-            self.log.info(_("loading exceptions file %s: %s") % (self.config, sys.exc_value[1]))
+            self.log.info("loading exceptions file %s:" % (self.config))
+            self.log.info(sys.exc_value[1])

This workaround is shorter, but there are no translations (unmarked by patch) and no concatenation (2 strings instead of 1) for different strings.
The same for other problematic strings.
Comment 23 Oleg Kozlov 2015-01-25 19:11:43 CET
(In reply to Alex Loginov from comment #22)
> The root of this issue is an concatenation for different strings.
> For example:
> 
> -            self.log.info(_("loading exceptions file %s: %s") %
> (self.config, sys.exc_value[1]))
> +            self.log.info("loading exceptions file %s:" % (self.config))
> +            self.log.info(sys.exc_value[1])
> 
> This workaround is shorter, but there are no translations (unmarked by
> patch) and no concatenation (2 strings instead of 1) for different strings.
> The same for other problematic strings.
If you already remove gettext using symbol from string, then you don't need split line. 

Just without translation correct line will be: 
self.log.info("loading exceptions file %s: %s" % (self.config, sys.exc_value[1]))

But that mean, new message in log will be:
loading exceptions file /path/to/some/file: ÐÐµÑ Ñакого Ñайла или каÑалога

In yours example message will be same, but in two lines.
Comment 24 Valek Saikov 2015-05-09 15:54:01 CEST
Correcting going? MSEC-GUI does not run as before.
Patch you do not want to take.
Comment 25 padula 2015-05-10 04:17:02 CEST
the msecgui not open to configure...

[root@localhost padula]# msecgui
INFO: Starting gui..
Traceback (most recent call last):
  File "/usr/share/msec/msecgui.py", line 1789, in <module>
    gui = MsecGui(log, msec, perms, msec_config, perm_conf, exceptions, embed=PlugWindowID)
  File "/usr/share/msec/msecgui.py", line 173, in __init__
    self.reload_config()
  File "/usr/share/msec/msecgui.py", line 457, in reload_config
    self.exceptions.load()
  File "/usr/share/msec/config.py", line 319, in load
    self.log.info(_("loading exceptions file %s: %s") % (self.config, sys.exc_value[1]))
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 16: ordinal not in range(128)                                                           
[root@localhost padula]#        

[padula@localhost ~]$ uname -a
Linux localhost 3.19.7-desktop-1.mga5 #1 SMP Fri May 8 20:06:20 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
[padula@localhost ~]$

CC: (none) => padula1000

Comment 26 Thierry Vignaud 2015-05-11 18:15:24 CEST
Can you offer a less intrusive patch that adds an helper instead of adding if/else everywhere?
That helper would be called on the arg:

def Narg(s):
    """ Try to decode string without encoding enter """
    
    try:
        s.decode()
        return s
    except:
        return sys.s[1].decode(SYS_ENC))

eg:
       self.log.error(_("Unable to load configuration file %s: %s") % (self.config, sys.exc_value[1]))
would become:
-            self.log.error(_("Unable to load configuration file %s: %s") % (self.config, Narg(sys.exc_value[1])))

WDYT?
Comment 27 Thierry Vignaud 2015-05-11 19:50:03 CEST
Created attachment 6514 [details]
try patch (untested)

Can you test this one?
Samuel Verschelde 2015-05-15 17:37:08 CEST

Whiteboard: 5beta1 => 5rc

Comment 28 padula 2015-05-17 17:38:54 CEST
[root@localhost padula]# diff --git a/src/msec/config.py b/src/msec/config.py
f.comments:
             print >>fd, comment
@@ -316,7 +335,7 @@ class ExceptionConfig:
             fd = open(self.config)
         except:
             # this file is optional, so if it is not found that's not fatal
-            self.log.info(_("loading exceptions file %s: %s") % (self.config, sys.exc_value[1]))
+            self.log.info(_("loading exceptions file %s: %s") % (self.config, Narg(sys.exc_value[1])))
             self.log.info(_("No exceptions loaded"))
             return False
         for line in fd.readlines():
@@ -331,7 +350,7 @@ class ExceptionConfig:
                 option, val = line.split(" ", 1)
                 self.options.append((option, val))
             except:
-                self.log.warn(_("Bad config option: %s") % line)
+                self.log.warn(_("Bad config option: %s") % Narg(line))
                 continue
         fd.close()
         return True
@@ -370,7 +389,7 @@ class ExceptionConfig:
         try:
             fd = open(self.config, "w")
         except:
-            self.log.error(_("Unable to save %s: %s") % (self.config, sys.exc_value))
+            self.log.error(_("Unable to save %s: %s") % (self.config, Narg(sys.exc_value)))
             return False
         for comment in self.comments:
             print >>fd, comment
@@ -420,7 +439,7 @@ class PermConfig(MsecConfig):
         try:
             fd = open(self.config)
         except:
-            self.log.error(_("Unable to load configuration file %s: %s") % (self.config, sys.exc_value))
+            self.log.error(_("Unable to load configuration file %s: %s") % (self.config, Narg(sys.exc_value)))
             return False
         for line in fd.readlines():
             line = line.strip()                                                                                                                             
@@ -439,7 +458,7 @@ class PermConfig(MsecConfig):                                                                                                            
                     self.options_order.append(file)                                                                                                         
             except:
                 traceback.print_exc()
-                self.log.warn(_("Bad config option: %s") % line)
+                self.log.warn(_("Bad config option: %s") % Narg(line))
                 continue
         fd.close()
         return True
diff: unrecognized option '--git'
diff: Try 'diff --help' for more information.
[root@localhost padula]# index c8e87f6..046804d 100755
bash: index: comando não encontrado
[root@localhost padula]# --- a/src/msec/config.py
bash: ---: comando não encontrado
Config(MsecConfig):
     [root@localhost padula]# +++ b/src/msec/config.py
bash: +++: comando não encontrado
[root@localhost padula]# @@ -81,6 +81,9 @@ SETTINGS_PERIODIC = []
bash: @@: comando não encontrado
[root@localhost padula]#  # checks that support exceptions - defined by 'audit' plugin
[root@localhost padula]#  CHECKS_WITH_EXCEPTIONS = []
bash: CHECKS_WITH_EXCEPTIONS: comando não encontrado
[root@localhost padula]#  
[root@localhost padula]# +# system encoding
bash: +#: comando não encontrado
[root@localhost padula]# +SYS_ENC = sys.getfilesystemencoding()
bash: erro de sintaxe próximo do `token' não esperado `('
[root@localhost padula]# +
bash: +: comando não encontrado
[root@localhost padula]#  # localized help
[root@localhost padula]#  try:
bash: try:: comando não encontrado
[root@localhost padula]#      from help import HELP
bash: from: comando não encontrado
[root@localhost padula]# @@ -168,6 +171,22 @@ def merge_with_baselevel(log, config, base_level, load_func, root=''):
bash: erro de sintaxe próximo do `token' não esperado `('
[root@localhost padula]#      config.merge(levelconf)
ibash: erro de sintaxe próximo do `token' não esperado `levelconf'
[root@localhost padula]#  
[root@localhost padula]#  
[root@localhost padula]# +def to_utf8(s):
bash: erro de sintaxe próximo do `token' não esperado `('
[root@localhost padula]# +    """ Returs string after decoding if needed """
bash: +: comando não encontrado
[root@localhost padula]# +    try:
bash: +: comando não encontrado
[root@localhost padula]# +        s.decode()
bash: erro de sintaxe próximo do `token' não esperado `('
[root@localhost padula]# +        return s
bash: +: comando não encontrado
[root@localhost padula]# +    except:
bash: +: comando não encontrado
[root@localhost padula]# +        return sys.s[1].decode("utf-8"))
bash: erro de sintaxe próximo do `token' não esperado `('
             if res:
                     [root@localhost padula]# +
bash: +: comando não encontrado
[root@localhost padula]# +def Narg(s):
bash: erro de sintaxe próximo do `token' não esperado `('
[root@localhost padula]# +    """ Returs string after decoding if needed """
bash: +: comando não encontrado
[root@localhost padula]# +    try:
bash: +: comando não encontrado
[root@localhost padula]# +        s.decode()
bash: erro de sintaxe próximo do `token' não esperado `('
[root@localhost padula]# +        return s
bash: +: comando não encontrado
[root@localhost padula]# +    except:
ified so launbash: +: comando não encontrado
[root@localhost padula]# +        return sys.s[1].decode(SYS_ENC))
bash: erro de sintaxe próximo do `token' não esperado `('
and: %s') % (f, s))
+            [root@localhost padula]# +
 bash: +: comando não encontrado
[root@localhost padula]#  # {{{ MsecConfig
[root@localhost padula]#  class MsecConfig:
bash: class: comando não encontrado
[root@localhost padula]#      """Msec configuration parser"""
bash: Msec configuration parser: comando não encontrado
[root@localhost padula]# @@ -208,7 +227,7 @@ class MsecConfig:
bash: @@: comando não encontrado
[root@localhost padula]#          try:
bash: try:: comando não encontrado
[root@localhost padula]#              fd = open(self.config)
bash: erro de sintaxe próximo do `token' não esperado `('
 [root@localhost padula]#          except:
bash: except:: comando não encontrado
[root@localhost padula]# -            self.log.error(_("Unable to load configuration file %s: %s") % (self.config, sys.exc_value[1]))
bash: erro de sintaxe próximo do `token' não esperado `('
[root@localhost padula]# +            self.log.error(_("Unable to load configuration file %s: %s") % (self.config, Narg(sys.exc_value[1])))
bash: erro de sintaxe próximo do `token' não esperado `('
[root@localhost padula]#              return False
bash: return: False: numeric argument required
bash: return: can only `return' from a function or sourced script
[root@localhost padula]#          for line in fd.readlines():
bash: erro de sintaxe próximo do `token' não esperado `('
.path
+
         if self[root@localhost padula]#              line = line.strip()
bash: erro de sintaxe próximo do `token' não esperado `('
[root@localhost padula]# @@ -222,7 +241,7 @@ class MsecConfig:
.exists():
                 try:
     bash: @@: comando não encontrado
[root@localhost padula]#                  option, val = line.split("=", 1)
bash: erro de sintaxe próximo do `token' não esperado `('
[root@localhost padula]#                  self.options[option] = val
bash: self.options[option]: comando não encontrado
[root@localhost padula]#              except:
bash: except:: comando não encontrado
[root@localhost padula]# -                self.log.warn(_("Bad config option: %s") % line)
bash: erro de sintaxe próximo do `token' não esperado `('
[root@localhost padula]# +                self.log.warn(_("Bad config option: %s") % Narg(line))
bash: erro de sintaxe próximo do `token' não esperado `('
[root@localhost padula]#                  continue
bash: continue: only meaningful in a `for', `while', or `until' loop
[root@localhost padula]#          fd.close()
>          return True
bash: erro de sintaxe próximo do `token' não esperado `return'
[root@localhost padula]# @@ -257,7 +276,7 @@ class MsecConfig:
bash: @@: comando não encontrado
[root@localhost padula]#          try:
bash: try:: comando não encontrado
[root@localhost padula]#              fd = open(self.config, "w")
bash: erro de sintaxe próximo do `token' não esperado `('
[root@localhost padula]#          except:
bash: except:: comando não encontrado
[root@localhost padula]# -            self.log.error(_("Unable to save %s: %s") % (self.config, sys.exc_value))
bash: erro de sintaxe próximo do `token' não esperado `('
[root@localhost padula]# +            self.log.error(_("Unable to save %s: %s") % (self.config, Narg(sys.exc_value)))
bash: erro de sintaxe próximo do `token' não esperado `('
sys.exc_value)))
+         [root@localhost padula]#              return False
bash: return: False: numeric argument required
bash: return: can only `return' from a function or sourced script
[root@localhost padula]#          for comment in self.comments:
>              print >>fd, comment
bash: erro de sintaxe próximo do `token' não esperado `print'
[root@localhost padula]# @@ -316,7 +335,7 @@ class ExceptionConfig:
bash: @@: comando não encontrado
[root@localhost padula]#              fd = open(self.config)
bash: erro de sintaxe próximo do `token' não esperado `('
[root@localhost padula]#          except:
bash: except:: comando não encontrado
[root@localhost padula]#              # this file is optional, so if it is not found that's not fatal
h[root@localhost padula]# -            self.log.info(_("loading exceptions file %s: %s") % (self.config, sys.exc_value[1]))
bash: erro de sintaxe próximo do `token' não esperado `('
[root@localhost padula]# +            self.log.info(_("loading exceptions file %s: %s") % (self.config, Narg(sys.exc_value[1])))
bash: erro de sintaxe próximo do `token' não esperado `('
[root@localhost padula]#              self.log.info(_("No exceptions loaded"))
bash: erro de sintaxe próximo do `token' não esperado `_'
[root@localhost padula]#              return False
bash: return: False: numeric argument required
bash: return: can only `return' from a function or sourced script
]
                 self.is[root@localhost padula]#          for line in fd.readlines():
bash: erro de sintaxe próximo do `token' não esperado `('
[root@localhost padula]# @@ -331,7 +350,7 @@ class ExceptionConfig:
bash: @@: comando não encontrado
[root@localhost padula]#                  option, val = line.split(" ", 1)
bash: erro de sintaxe próximo do `token' não esperado `('
[root@localhost padula]#                  self.options.append((option, val))
bash: erro de sintaxe próximo do `token' não esperado `('
[root@localhost padula]#              except:
bash: except:: comando não encontrado
[root@localhost padula]# -                self.log.warn(_("Bad config option: %s") % line)
bash: erro de sintaxe próximo do `token' não esperado `('
[root@localhost padula]# +                self.log.warn(_("Bad config option: %s") % Narg(line))
bash: erro de sintaxe próximo do `token' não esperado `('
[root@localhost padula]#                  continue
bash: continue: only meaningful in a `for', `while', or `until' loop
[root@localhost padula]#          fd.close()
>          return True
bash: erro de sintaxe próximo do `token' não esperado `return'
[root@localhost padula]# @@ -370,7 +389,7 @@ class ExceptionConfig:
bash: @@: comando não encontrado
[root@localhost padula]#          try:
bash: try:: comando não encontrado
[root@localhost padula]#              fd = open(self.config, "w")
bash: erro de sintaxe próximo do `token' não esperado `('
 self.exists():
                full = os[root@localhost padula]#          except:
bash: except:: comando não encontrado
[root@localhost padula]# -            self.log.error(_("Unable to save %s: %s") % (self.config, sys.exc_value))
bash: erro de sintaxe próximo do `token' não esperado `('
 class ConfigFile:
                    try:
                     [root@localhost padula]# +            self.log.error(_("Unable to save %s: %s") % (self.config, Narg(sys.exc_value)))
except:
-                       self.log.error('ubash: erro de sintaxe próximo do `token' não esperado `('
[root@localhost padula]#              return False
bash: return: False: numeric argument required
bash: return: can only `return' from a function or sourced script
[root@localhost padula]#          for comment in self.comments:
>              print >>fd, comment
bash: erro de sintaxe próximo do `token' não esperado `print'
_('deleted %s')[root@localhost padula]# @@ -420,7 +439,7 @@ class PermConfig(MsecConfig):
bash: erro de sintaxe próximo do `token' não esperado `('
og.[root@localhost padula]#          try:
bash: try:: comando não encontrado
[root@localhost padula]#              fd = open(self.config)
bash: erro de sintaxe próximo do `token' não esperado `('
[root@localhost padula]#          except:
bash: except:: comando não encontrado
[root@localhost padula]# -            self.log.error(_("Unable to load configuration file %s: %s") % (self.config, sys.exc_value))
bash: erro de sintaxe próximo do `token' não esperado `('
[root@localhost padula]# +            self.log.error(_("Unable to load configuration file %s: %s") % (self.config, Narg(sys.exc_value)))
bash: erro de sintaxe próximo do `token' não esperado `('
[root@localhost padula]#              return False
bash: return: False: numeric argument required
bash: return: can only `return' from a function or sourced script
[root@localhost padula]#          for line in fd.readlines():
bash: erro de sintaxe próximo do `token' não esperado `('
[root@localhost padula]#              line = line.strip()
bash: erro de sintaxe próximo do `token' não esperado `('
[root@localhost padula]# @@ -439,7 +458,7 @@ class PermConfig(MsecConfig):
bash: erro de sintaxe próximo do `token' não esperado `('lf.log.info(_('made symbolic link from %s to %s') 
[root@localhost padula]#                      self.options_order.append(file)
bash: erro de sintaxe próximo do `token' não esperado `file'
        se[root@localhost padula]#              except:
bash: except:: comando não encontrado
[root@localhost padula]#                  traceback.print_exc()
> -                self.log.warn(_("Bad config option: %s") % line)
bash: erro de sintaxe próximo do `token' não esperado `-'
[root@localhost padula]# +                self.log.warn(_("Bad config option: %s") % Narg(line))
bash: erro de sintaxe próximo do `token' não esperado `('
[root@localhost padula]#                  continue
bash: continue: only meaningful in a `for', `while', or `until' loop
[root@localhost padula]#          fd.close()
>          return True
bash: erro de sintaxe próximo do `token' não esperado `return'
[root@localhost padula]# @@ -465,7 +484,7 @@ class PermConfig(MsecConfig):
bash: erro de sintaxe próximo do `token' não esperado `('
[root@localhost padula]#          try:
bash: try:: comando não encontrado
[root@localhost padula]#              fd = open(self.config, "w")
bash: erro de sintaxe próximo do `token' não esperado `('
[root@localhost padula]#          except:
bash: except:: comando não encontrado
[root@localhost padula]# -            self.log.error(_("Unable to save %s: %s") % (self.config, sys.exc_value))
bash: erro de sintaxe próximo do `token' não esperado `('
[root@localhost padula]# +            self.log.error(_("Unable to save %s: %s") % (self.config, Narg(sys.exc_value)))
bash: erro de sintaxe próximo do `token' não esperado `('
[root@localhost padula]#              return False
bash: return: False: numeric argument required
bash: return: can only `return' from a function or sourced script
[root@localhost padula]#          for comment in self.comments:
>              print >>fd, comment
bash: erro de sintaxe próximo do `token' não esperado `print'
[root@localhost padula]# diff --git a/src/msec/libmsec.py b/src/msec/libmsec.py
diff: unrecognized option '--git'
diff: Try 'diff --help' for more information.
[root@localhost padula]# index d456eab..87b7027 100755
bash: index: comando não encontrado
[root@localhost padula]# --- a/src/msec/libmsec.py
bash: ---: comando não encontrado
,7 +695,7 @@ class MSEC:
 [root@localhost padula]# +++ b/src/msec/libmsec.py
bash: +++: comando não encontrado
            self.p[root@localhost padula]# @@ -262,7 +262,7 @@ class ConfigFiles:
bash: @@: comando não encontrado
[root@localhost padula]#                  if res:
>                      s = substitute_re_result(res, a[1])
bash: erro de sintaxe próximo do `token' não esperado `('
[root@localhost padula]#                      if commit:
> -                        self.log.info(_('%s modified so launched command: %s') % (f, s))
bash: erro de sintaxe próximo do `token' não esperado `('
)
+     [root@localhost padula]# +                        self.log.info(_('%s modified so launched command: %s') % (Narg(f), Narg(s)))
bash: erro de sintaxe próximo do `token' não esperado `('
ugin_f, file, Narg(sys.e[root@localhost padula]#                          cmd = commands.getstatusoutput(s)
bash: erro de sintaxe próximo do `token' não esperado `('
e [root@localhost padula]#                          cmd = [0, '']
bash: cmd: comando não encontrado
[root@localhost padula]#                          if cmd[0] == 0:
> @@ -367,32 +367,41 @@ class ConfigFile:
>          return link
>  
>      def write(self):
bash: erro de sintaxe próximo do `token' não esperado `('
[root@localhost padula]# +        if not (type(self.path) == unicode)
bash: erro de sintaxe próximo do `token' não esperado `('
[root@localhost padula]# +            self.pathN = Narg(self.path)
bash: erro de sintaxe próximo do `token' não esperado `('
[root@localhost padula]# +        else
bash: +: comando não encontrado
[root@localhost padula]# +            self.pathN = self.path
bash: +: comando não encontrado
[root@localhost padula]# +
bash: +: comando não encontrado
[root@localhost padula]#          if self.is_deleted:
>              if self.exists():
bash: erro de sintaxe próximo do `token' não esperado `:'
[root@localhost padula]#                  try:
bash: try:: comando não encontrado
[root@localhost padula]#                      os.unlink(self.path)
bash: erro de sintaxe próximo do `token' não esperado `self.path'
[root@localhost padula]#                  except:
bash: except:: comando não encontrado
[root@localhost padula]# -                    error('unlink %s: %s' % (self.path, str(sys.exc_value)))
bash: erro de sintaxe próximo do `token' não esperado `('
[root@localhost padula]# -                self.log.info(_('deleted %s') % (self.path,))
bash: erro de sintaxe próximo do `token' não esperado `('
[root@localhost padula]# +                    error('unlink %s: %s' % (self.pathN, str(sys.exc_value)))
bash: erro de sintaxe próximo do `token' não esperado `('
[root@localhost padula]# +                self.log.info(_('deleted %s') % (self.pathN,))
bash: erro de sintaxe próximo do `token' não esperado `('
[root@localhost padula]#          elif self.is_touched:
bash: erro de sintaxe próximo do `token' não esperado `elif'
one
         try:
             [root@localhost padula]#              if os.path.exists(self.path):
bash: erro de sintaxe próximo do `token' não esperado `self.path'
[root@localhost padula]#                  try:
bash: try:: comando não encontrado
[root@localhost padula]#                      os.utime(self.path, None)
bash: erro de sintaxe próximo do `token' não esperado `self.path,'
[root@localhost padula]#                  except:
bash: except:: comando não encontrado
ported function '%s' in '[root@localhost padula]# -                    self.log.error('utime %s: %s' % (self.path, str(sys.exc_value)))
bash: erro de sintaxe próximo do `token' não esperado `('
        self.log.info(_("Not supported function '%s' [root@localhost padula]# +                    self.log.error('utime %s: %s' % (self.pathN, str(sys.exc_value)))
bash: erro de sintaxe próximo do `token' não esperado `('
in)))
             traceback.print_exc()
        [root@localhost padula]#              elif self.suffix and os.path.exists(self.path + self.suffix):
bash: erro de sintaxe próximo do `token' não esperado `elif'
[root@localhost padula]#                  move(self.path + self.suffix, self.path)
bash: erro de sintaxe próximo do `token' não esperado `self.path'
[root@localhost padula]#                  try:
bash: try:: comando não encontrado
[root@localhost padula]#                      os.utime(self.path, None)
bash: erro de sintaxe próximo do `token' não esperado `self.path,'
[root@localhost padula]#                  except:
bash: except:: comando não encontrado
[root@localhost padula]# -                    self.log.error('utime %s: %s' % (self.path, str(sys.exc_value)))
bash: erro de sintaxe próximo do `token' não esperado `('
[root@localhost padula]# +                    self.log.error('utime %s: %s' % (self.pathN, str(sys.exc_value)))
bash: erro de sintaxe próximo do `token' não esperado `('
[root@localhost padula]#              else:
bash: else:: comando não encontrado
[root@localhost padula]#                  self.lines = []
bash: self.lines: comando não encontrado
[root@localhost padula]#                  self.is_modified = 1
bash: self.is_modified: comando não encontrado
[root@localhost padula]#                  file = open(self.path, 'w')
bash: erro de sintaxe próximo do `token' não esperado `('
[root@localhost padula]#                  file.close()
> -                self.log.info(_('touched file %s') % (self.path,))
bash: erro de sintaxe próximo do `token' não esperado `-'
[root@localhost padula]# +                self.log.info(_('touched file %s') % (self.pathN,))
bash: erro de sintaxe próximo do `token' não esperado `('
[root@localhost padula]#          elif self.sym_link:
bash: erro de sintaxe próximo do `token' não esperado `elif'
[root@localhost padula]# +            if not (type(self.sym_link) == unicode)
bash: erro de sintaxe próximo do `token' não esperado `('
[root@localhost padula]# +                self.sym_linkN = Narg(self.sym_link)
bash: erro de sintaxe próximo do `token' não esperado `('
[root@localhost padula]# +            else
bash: +: comando não encontrado
up on %s: %s") % ([root@localhost padula]# +                self.sym_linkN = self.sym_link
file, Narg(sys.exc_value)))
                 elsbash: +: comando não encontrado
[root@localhost padula]#              done = 0
bash: erro de sintaxe próximo do `token' não esperado `done'
[root@localhost padula]#              if self.exists():
bash: erro de sintaxe próximo do `token' não esperado `:'
group [root@localhost padula]#                 full = os.lstat(self.path)
bash: erro de sintaxe próximo do `token' não esperado `('
[root@localhost padula]# @@ -404,17 +413,21 @@ class ConfigFile:
         # permibash: @@: comando não encontrado
[root@localhost padula]#                     try:
bash: try:: comando não encontrado
[root@localhost padula]#                         os.unlink(self.path)
bash: erro de sintaxe próximo do `token' não esperado `self.path'
 @@ class [root@localhost padula]#                     except:
bash: except:: comando não encontrado
[root@localhost padula]# -                       self.log.error('unlink %s: %s' % (self.path, str(sys.exc_value)))
bash: erro de sintaxe próximo do `token' não esperado `('
[root@localhost padula]# -                   self.log.info(_('deleted %s') % (self.path,))
bash: erro de sintaxe próximo do `token' não esperado `('
[root@localhost padula]# +                       self.log.error('unlink %s: %s' % (self.pathN, str(sys.exc_value)))
gbash: erro de sintaxe próximo do `token' não esperado `('
[root@localhost padula]# +                   self.log.info(_('deleted %s') % (self.pathN,))
bash: erro de sintaxe próximo do `token' não esperado `('
[root@localhost padula]#              if not done:
>                  try:
>                      os.symlink(self.sym_link, self.path)
bash: erro de sintaxe próximo do `token' não esperado `self.sym_link,'
 of %s: should be %o") % (file, newperm[root@localhost padula]#                  except:
 @@ bash: except:: comando não encontrado
[root@localhost padula]# -                    self.log.error('symlink %s %s: %s' % (self.sym_link, self.path, str(sys.exc_value)))
bash: erro de sintaxe próximo do `token' não esperado `('
[root@localhost padula]# -                self.log.info(_('made symbolic link from %s to %s') % (self.sym_link, self.path))
bash: erro de sintaxe próximo do `token' não esperado `('
[root@localhost padula]# +                    self.log.error('symlink %s %s: %s' % (self.sym_linkN, self.path, str(sys.exc_value)))
bash: erro de sintaxe próximo do `token' não esperado `('
[root@localhost padula]# +                self.log.info(_('made symbolic link from %s to %s') % (self.sym_linkN, self.path))
bash: erro de sintaxe próximo do `token' não esperado `('
[root@localhost padula]#          elif self.is_moved:
bash: erro de sintaxe próximo do `token' não esperado `elif'
[root@localhost padula]# +            if not (type(self.suffix) == unicode)
bash: erro de sintaxe próximo do `token' não esperado `('
[root@localhost padula]# +                self.suffixN = Narg(self.suffix)
bash: erro de sintaxe próximo do `token' não esperado `('
[root@localhost padula]# +            else
bash: +: comando não encontrado
[root@localhost padula]# +                self.suffixN = self.suffix
bash: +: comando não encontrado
[root@localhost padula]#              move(self.path, self.path + self.suffix)
bash: erro de sintaxe próximo do `token' não esperado `self.path,'
[root@localhost padula]# -            self.log.info(_('moved file %s to %s') % (self.path, self.path + self.suffix))
bash: erro de sintaxe próximo do `token' não esperado `('
[root@localhost padula]# +            self.log.info(_('moved file %s to %s') % (self.path, self.path + self.suffixN))
bash: erro de sintaxe próximo do `token' não esperado `('
[root@localhost padula]#              self.meta.modified(self.path)
bash: erro de sintaxe próximo do `token' não esperado `self.path'
[root@localhost padula]#          elif self.is_modified:
bash: erro de sintaxe próximo do `token' não esperado `elif'
[root@localhost padula]#              content = string.join(self.lines, "\n")
bash: erro de sintaxe próximo do `token' não esperado `('
[root@localhost padula]# @@ -682,7 +695,7 @@ class MSEC:
bash: @@: comando não encontrado
[root@localhost padula]#                      self.plugins[plugin_name] = plugin
bash: self.plugins[plugin_name]: comando não encontrado
[root@localhost padula]#                      self.log.debug("Loaded plugin '%s'" % plugin_f)
bash: erro de sintaxe próximo do `token' não esperado `"Loaded plugin '%s'"'
[root@localhost padula]#                  except:
bash: except:: comando não encontrado
 any changes to system fi[root@localhost padula]# -                    self.log.error(_("Error loading plugin '%s' from %s: %s") % (plugin_f, file, sys.exc_value))
bash: erro de sintaxe próximo do `token' não esperado `('
[root@localhost padula]# +                    self.log.error(_("Error loading plugin '%s' from %s: %s") % (plugin_f, file, Narg(sys.exc_value)))
bash: erro de sintaxe próximo do `token' não esperado `('
[root@localhost padula]#  
[root@localhost padula]#      def reset(self):
bash: erro de sintaxe próximo do `token' não esperado `('
) % msg)
+            [root@localhost padula]#          """Resets the configuration"""
bash: Resets the configuration: comando não encontrado
[root@localhost padula]# @@ -699,7 +712,7 @@ class MSEC:
bash: @@: comando não encontrado
[root@localhost padula]#              plugin_, callback = name.split(".", 1)
bash: erro de sintaxe próximo do `token' não esperado `('
[root@localhost padula]#          except:
bash: except:: comando não encontrado
[root@localhost padula]#              # bad format?
markup(T[root@localhost padula]# -            self.log.error(_("Invalid callback: %s") % (name))
bash: erro de sintaxe próximo do `token' não esperado `('

@@ -659,[root@localhost padula]# +            self.log.error(_("Invalid callback: %s") % (Narg(name)))
bash: erro de sintaxe próximo do `token' não esperado `('
 updated_n, upd[root@localhost padula]#              return None
bash: return: None: numeric argument required
bash: return: can only `return' from a function or sourced script
[root@localhost padula]#          # is it a main function or a plugin?
[root@localhost padula]#          if plugin_ == config.MAIN_LIB:
> @@ -708,14 +721,14 @@ class MSEC:
>              if plugin_ in self.plugins:
>                  plugin = self.plugins[plugin_]
>              else:
> -                self.log.info(_("Plugin %s not found") % plugin_)
bash: erro de sintaxe próximo do `token' não esperado `('
[root@localhost padula]# +                self.log.info(_("Plugin %s not found") % to_utf8(plugin_)
bash: erro de sintaxe próximo do `token' não esperado `('
[root@localhost padula]#                  return self.log.info
bash: return: self.log.info: numeric argument required
bash: return: can only `return' from a function or sourced script
k.AttachOptions.EXPAND | Gtk.AttachOpt[root@localhost padula]#                  return None
bash: return: None: numeric argument required
bash: return: can only `return' from a function or sourced script
[root@localhost padula]#          try:
bash: try:: comando não encontrado
[root@localhost padula]#              func = getattr(plugin, callback)
bash: erro de sintaxe próximo do `token' não esperado `('
[root@localhost padula]#              return func
bash: return: func: numeric argument required
bash: return: can only `return' from a function or sourced script
[root@localhost padula]#          except:
bash: except:: comando não encontrado
[root@localhost padula]# -            self.log.info(_("Not supported function '%s' in '%s'") % (callback, plugin))
bash: erro de sintaxe próximo do `token' não esperado `('
[root@localhost padula]# +            self.log.info(_("Not supported function '%s' in '%s'") % (Narg(callback), Narg(plugin)))
bash: erro de sintaxe próximo do `token' não esperado `('
[root@localhost padula]#              traceback.print_exc()
>              return None
bash: erro de sintaxe próximo do `token' não esperado `return'
[root@localhost padula]#  
.[root@localhost padula]# @@ -871,7 +884,7 @@ class PERMS:
bash: @@: comando não encontrado
[root@localhost padula]#                      try:
bash: try:: comando não encontrado
[root@localhost padula]#                          os.chown(file, newuser, -1)
bash: erro de sintaxe próximo do `token' não esperado `file,'
[root@localhost padula]#                      except:
bash: except:: comando não encontrado
[root@localhost padula]# -                        self.log.error(_("Error changing user on %s: %s") % (file, sys.exc_value))
bash: erro de sintaxe próximo do `token' não esperado `('
[root@localhost padula]# +                        self.log.error(_("Error changing user on %s: %s") % (file, Narg(sys.exc_value)))
bash: erro de sintaxe próximo do `token' não esperado `('
[root@localhost padula]#                  else:
bash: else:: comando não encontrado
[root@localhost padula]#                      self.log.warn(_("Wrong owner of %s: should be %s") % (file, self.get_user_name(newuser)))
bash: erro de sintaxe próximo do `token' não esperado `_'
[root@localhost padula]#              if newgroup != None:
> @@ -880,7 +893,7 @@ class PERMS:
>                      try:
>                          os.chown(file, -1, newgroup)
bash: erro de sintaxe próximo do `token' não esperado `file,'
[root@localhost padula]#                      except:
bash: except:: comando não encontrado
[root@localhost padula]# -                        self.log.error(_("Error changing group on %s: %s") % (file, sys.exc_value))
bash: erro de sintaxe próximo do `token' não esperado `('
[root@localhost padula]# +                        self.log.error(_("Error changing group on %s: %s") % (file, Narg(sys.exc_value)))
bash: erro de sintaxe próximo do `token' não esperado `('
[root@localhost padula]#                  else:
bash: else:: comando não encontrado
[root@localhost padula]#                      self.log.warn(_("Wrong group of %s: should be %s") % (file, self.get_group_name(newgroup)))
bash: erro de sintaxe próximo do `token' não esperado `_'
[root@localhost padula]#              # permissions should be last, as chown resets them
[root@localhost padula]# @@ -891,7 +904,7 @@ class PERMS:
bash: @@: comando não encontrado
[root@localhost padula]#                      try:
bash: try:: comando não encontrado
[root@localhost padula]#                          os.chmod(file, newperm)
bash: erro de sintaxe próximo do `token' não esperado `file,'
mport Narg, SYS_E[root@localhost padula]#                      except:
bash: except:: comando não encontrado
[root@localhost padula]# -                        self.log.error(_("Error changing permissions on %s: %s") % (file, sys.exc_value))
bash: erro de sintaxe próximo do `token' não esperado `('
[root@localhost padula]# +                        self.log.error(_("Error changing permissions on %s: %s") % (file, Narg(sys.exc_value)))
bash: erro de sintaxe próximo do `token' não esperado `('
[root@localhost padula]#                  else:
bash: else:: comando não encontrado
[root@localhost padula]#                      self.log.warn(_("Wrong permissions of %s: should be %o") % (file, newperm))
bash: erro de sintaxe próximo do `token' não esperado `_'
[root@localhost padula]#  
[root@localhost padula]# @@ -913,7 +926,7 @@ class PERMS:
bash: @@: comando não encontrado
[root@localhost padula]#                                  # problem setting setfacl
[root@localhost padula]#                                  self.log.error(_("Unable to add filesystem-specific ACL %s to %s") % (acluser, file))
bash: erro de sintaxe próximo do `token' não esperado `_'
[root@localhost padula]#                      except:
bash: except:: comando não encontrado
t = os.stat(updatedir)
      [root@localhost padula]# -                        self.log.error(_("Error changing acl on %s: %s") % (file, sys.exc_value))
bash: erro de sintaxe próximo do `token' não esperado `('
[root@localhost padula]# +                        self.log.error(_("Error changing acl on %s: %s") % (file, Narg(str(sys.exc_value)))
bash: erro de sintaxe próximo do `token' não esperado `('
[root@localhost padula]#                  else:
bash: else:: comando não encontrado
ated: %s") % Narg(upda[root@localhost padula]#                      self.log.warn(_("Wrong acl of %s") % (file))
bash: erro de sintaxe próximo do `token' não esperado `_'
or(_("Unable to access %s: %s"[root@localhost padula]#  
[root@localhost padula]# diff --git a/src/msec/msecgui.py b/src/msec/msecgui.py
diff: unrecognized option '--git'
diff: Try 'diff --help' for more information.
[root@localhost padula]# index 21496c1..d3d57e9 100755
bash: index: comando não encontrado
[root@localhost padula]# --- a/src/msec/msecgui.py
bash: ---: comando não encontrado
[root@localhost padula]# +++ b/src/msec/msecgui.py
bash: +++: comando não encontrado
[root@localhost padula]# @@ -379,14 +379,14 @@ class MsecGui:
bash: @@: comando não encontrado
[root@localhost padula]#  
[root@localhost padula]#          # TODO: FIX
[root@localhost padula]#          for name, changes in allchanges:
bash: erro de sintaxe próximo do `token' não esperado `changes'
[root@localhost padula]# -            label = Gtk.Label(label=_('<b>%s:</b> <i>%s</i>\n') % (name, changes))
bash: erro de sintaxe próximo do `token' não esperado `('
[root@localhost padula]# +            label = Gtk.Label(label=_('<b>%s:</b> <i>%s</i>\n') % (Narg(name), Narg(changes)))
bash: erro de sintaxe próximo do `token' não esperado `('
[root@localhost padula]#              label.set_use_markup(True)
bash: erro de sintaxe próximo do `token' não esperado `True'
[root@localhost padula]#              label.set_property("xalign", 0.0)
bash: erro de sintaxe próximo do `token' não esperado `"xalign",'
[root@localhost padula]#              vbox.pack_start(label, False, False, padding=DEFAULT_SPACING)
bash: erro de sintaxe próximo do `token' não esperado `label,'
[root@localhost padula]#          # see if there were any changes to system files
[root@localhost padula]#          for msg in messages['info']:
>              if msg.find(config.MODIFICATIONS_FOUND) != -1 or msg.find(config.MODIFICATIONS_NOT_FOUND) != -1:
bash: erro de sintaxe próximo do `token' não esperado `if'
[root@localhost padula]# -                label = Gtk.Label(label=_("<b>MSEC test run results:</b> <i>%s</i>") % msg)
bash: erro de sintaxe próximo do `token' não esperado `('
[root@localhost padula]# +                label = Gtk.Label(label=_("<b>MSEC test run results:</b> <i>%s</i>") % Narg(msg))
bash: erro de sintaxe próximo do `token' não esperado `('
[root@localhost padula]#                  label.set_line_wrap(True)
bash: erro de sintaxe próximo do `token' não esperado `True'
[root@localhost padula]#                  label.set_use_markup(True)
bash: erro de sintaxe próximo do `token' não esperado `True'
[root@localhost padula]#                  label.set_property("xalign", 0.0)
bash: erro de sintaxe próximo do `token' não esperado `"xalign",'
[root@localhost padula]# @@ -659,7 +659,7 @@ class MsecGui:
bash: @@: comando não encontrado
[root@localhost padula]#          for check, logfile, updated_n, updated in tools.periodic_check_status(log):
bash: erro de sintaxe próximo do `token' não esperado `logfile,'
[root@localhost padula]#              if not updated:
>                  updated = _("Never")
bash: erro de sintaxe próximo do `token' não esperado `('
[root@localhost padula]# -            label = Gtk.Label(label=_("Check: %s. Last run: %s") % (check, updated))
bash: erro de sintaxe próximo do `token' não esperado `('
[root@localhost padula]# +            label = Gtk.Label(label=_("Check: %s. Last run: %s") % (Narg(check), Narg(updated)))
bash: erro de sintaxe próximo do `token' não esperado `('
[root@localhost padula]#              label.set_property("xalign", 0.0)
bash: erro de sintaxe próximo do `token' não esperado `"xalign",'
[root@localhost padula]#              table.attach(label, 2, 3, row, row + 1, Gtk.AttachOptions.EXPAND | Gtk.AttachOptions.FILL, 0, 0, 0)
bash: erro de sintaxe próximo do `token' não esperado `label,'
[root@localhost padula]#  
[root@localhost padula]# @@ -691,7 +691,7 @@ class MsecGui:
bash: @@: comando não encontrado
[root@localhost padula]#              with open(logfile, "r") as fd:
bash: erro de sintaxe próximo do `token' não esperado `('
[root@localhost padula]#                  data = fd.readlines()
bash: erro de sintaxe próximo do `token' não esperado `('
[root@localhost padula]#          except:
bash: except:: comando não encontrado
[root@localhost padula]# -            data = [_("Unable to read log file: %s") % sys.exc_value]
bash: erro de sintaxe próximo do `token' não esperado `('
[root@localhost padula]# +            data = [_("Unable to read log file: %s") % Narg(sys.exc_value)]
bash: erro de sintaxe próximo do `token' não esperado `('
[root@localhost padula]#          dialog = Gtk.Dialog(_("Periodic check results"),
bash: erro de sintaxe próximo do `token' não esperado `('
[root@localhost padula]#                  self.window,
bash: self.window,: comando não encontrado
[root@localhost padula]#                  0,
bash: 0,: comando não encontrado
[root@localhost padula]# @@ -724,7 +724,7 @@ class MsecGui:
bash: @@: comando não encontrado
[root@localhost padula]#                  flags=0,
[root@localhost padula]#                  type=Gtk.MessageType.INFO,
[root@localhost padula]#                  buttons=Gtk.ButtonsType.YES_NO)
bash: erro de sintaxe próximo do `token' não esperado `)'
[root@localhost padula]# -        dialog.set_markup(_("Do you want to run the <b>%s</b> periodic check? Please note that it could take a considerable time to finish.") % check)
bash: erro de sintaxe próximo do `token' não esperado `('
[root@localhost padula]# +        dialog.set_markup(_("Do you want to run the <b>%s</b> periodic check? Please note that it could take a considerable time to finish.") % Narg(check))
bash: erro de sintaxe próximo do `token' não esperado `('
[root@localhost padula]#          dialog.show_all()
>          ret = dialog.run()
bash: erro de sintaxe próximo do `token' não esperado `ret'
[root@localhost padula]#          dialog.destroy()
> @@ -1643,6 +1643,10 @@ class MsecGui:
bash: erro de sintaxe próximo do `token' não esperado `@@'
[root@localhost padula]#  
[root@localhost padula]#          val_def = conf_def.get(param)
bash: erro de sintaxe próximo do `token' não esperado `('
[root@localhost padula]#  
[root@localhost padula]# +        for i in [param, descr, value]:
bash: +: comando não encontrado
[root@localhost padula]# +            if not (type(i) == unicode) and not config.try_decode(i):
bash: erro de sintaxe próximo do `token' não esperado `('
[root@localhost padula]# +                i = i.decode(config.SYS_ENC)
bash: erro de sintaxe próximo do `token' não esperado `('
[root@localhost padula]# +
bash: +: comando não encontrado
[root@localhost padula]#          # asks for new parameter value
[root@localhost padula]#          dialog = Gtk.Dialog(_("Select new value for %s") % (param),
bash: erro de sintaxe próximo do `token' não esperado `('
[root@localhost padula]#                  self.window, 0,
bash: self.window,: comando não encontrado
[root@localhost padula]# diff --git a/src/msec/tools.py b/src/msec/tools.py
diff: unrecognized option '--git'
diff: Try 'diff --help' for more information.
[root@localhost padula]# index 3a079cd..cb9d1bf 100755
bash: index: comando não encontrado
[root@localhost padula]# --- a/src/msec/tools.py
bash: ---: comando não encontrado
[root@localhost padula]# +++ b/src/msec/tools.py
bash: +++: comando não encontrado
[root@localhost padula]# @@ -9,6 +9,8 @@ import sys
bash: @@: comando não encontrado
[root@localhost padula]#  import time

[root@localhost padula]#  import locale

[root@localhost padula]#  
[root@localhost padula]# +from config import Narg, SYS_ENC
bash: +from: comando não encontrado
[root@localhost padula]# +
bash: +: comando não encontrado
[root@localhost padula]#  # localization
[root@localhost padula]#  import gettext
[root@localhost padula]#  try:
bash: try:: comando não encontrado
[root@localhost padula]# @@ -30,7 +32,7 @@ def find_firewall_info(log):
bash: erro de sintaxe próximo do `token' não esperado `('
[root@localhost padula]#              if l[:3] == "-A ":
>                  firewall_entries.append(l.strip())
bash: erro de sintaxe próximo do `token' não esperado `l.strip'
[root@localhost padula]#      except:
bash: except:: comando não encontrado
[root@localhost padula]# -        log.error(_("Unable to parse firewall configuration: %s") % sys.exc_value)
bash: erro de sintaxe próximo do `token' não esperado `('
[root@localhost padula]# +        log.error(_("Unable to parse firewall configuration: %s") % Narg(sys.exc_value))
bash: erro de sintaxe próximo do `token' não esperado `('
[root@localhost padula]#      # not find out if the firewall is enabled
[root@localhost padula]#      if len(firewall_entries) == 0:
bash: erro de sintaxe próximo do `token' não esperado `firewall_entries'
[root@localhost padula]#          firewall_status = _("Disabled")
bash: erro de sintaxe próximo do `token' não esperado `('
[root@localhost padula]# @@ -44,10 +46,9 @@ def get_updates_status(log, updatedir="/var/lib/urpmi"):
bash: erro de sintaxe próximo do `token' não esperado `('
[root@localhost padula]#      try:
bash: try:: comando não encontrado
[root@localhost padula]#          ret = os.stat(updatedir)
bash: erro de sintaxe próximo do `token' não esperado `('
[root@localhost padula]#          updated = time.localtime(ret[stat.ST_MTIME])
bash: erro de sintaxe próximo do `token' não esperado `('
[root@localhost padula]# -        updated_s = time.strftime(locale.nl_langinfo(locale.D_T_FMT), updated)
bash: erro de sintaxe próximo do `token' não esperado `('
[root@localhost padula]# -        status = _("Last updated: %s") % updated_s
bash: erro de sintaxe próximo do `token' não esperado `('
[root@localhost padula]# +        status = _("Last updated: %s") % Narg(updated_s)
bash: erro de sintaxe próximo do `token' não esperado `('
[root@localhost padula]#      except:
bash: except:: comando não encontrado
[root@localhost padula]# -        log.error(_("Unable to access %s: %s") % (updatedir, sys.exc_value))
bash: erro de sintaxe próximo do `token' não esperado `('
[root@localhost padula]# +        log.error(_("Unable to access %s: %s") % (updatedir, Narg(sys.exc_value)))
bash: erro de sintaxe próximo do `token' não esperado `('
[root@localhost padula]#          status = _("Unable to determine update status")
bash: erro de sintaxe próximo do `token' não esperado `('
[root@localhost padula]#      return status
bash: return: status: numeric argument required
bash: return: can only `return' from a function or sourced script
[root@localhost padula]#  
[root@localhost padula]# 
[root@localhost padula]# 
[root@localhost padula]#
Comment 29 Rémi Verschelde 2015-05-17 17:43:21 CEST
(In reply to padula from comment #28)
> [root@localhost padula]# diff --git a/src/msec/config.py b/src/msec/config.py

It would have been better to say "I don't know how to apply a patch, could you give me instructions?" than to paste such spam...
Samuel Verschelde 2015-06-06 15:56:05 CEST

Whiteboard: 5rc => MGA5TOO

Comment 30 Dimitrios Glentadakis 2015-06-08 13:26:56 CEST
*** Bug 16090 has been marked as a duplicate of this bug. ***

CC: (none) => dglent

Thierry Vignaud 2015-06-11 16:19:33 CEST

CC: (none) => mageia

Comment 31 Otto Leipälä 2015-06-28 12:28:17 CEST
I can confirm this bug too only way i found to launch it is force locale to en with this command.

env LANG=en_US.UTF-8 msec-gui

locale command output: LANG=fi_FI.UTF-8

CC: (none) => ozkyster

Comment 32 Otto Leipälä 2015-06-28 12:32:17 CEST
(In reply to Otto Leipälä from comment #31)
> I can confirm this bug too only way i found to launch it is force locale to
> en with this command.
> 
> env LANG=en_US.UTF-8 msec-gui
> 
> locale command output: LANG=fi_FI.UTF-8

Little typo env LANG=en_US.UTF-8 mcc
Comment 33 papoteur 2015-07-04 11:26:51 CEST
*** Bug 16204 has been marked as a duplicate of this bug. ***
Comment 34 Marja Van Waes 2015-07-04 11:51:40 CEST
(In reply to Thierry Vignaud from comment #27)
> Created attachment 6514 [details]
> try patch (untested)
> 
> Can you test this one?

Tested locally, with Brazilian Portuguese, in Mageia 5, after renaming the patch to msec.patch and replacing "src" everywhere in it with "share":

[root@Mga5_32bit usr]# patch -p1 < msec.patch 
patching file share/msec/config.py
patching file share/msec/libmsec.py
patching file share/msec/msecgui.py
patching file share/msec/tools.py
[root@Mga5_32bit usr]# LANGUAGE=pt_BR msecgui
Traceback (most recent call last):
  File "/usr/share/msec/msecgui.py", line 34, in <module>
    import config
  File "/usr/share/msec/config.py", line 180
    return sys.s[1].decode("utf-8"))
                                   ^
SyntaxError: invalid syntax
[root@Mga5_32bit usr]#

CC: (none) => marja11

Comment 35 Marja Van Waes 2015-07-04 11:57:49 CEST
Btw, it now throws the exact same error when starting it in Dutch or English (that wasn't a problem before)
Comment 36 Marja Van Waes 2015-07-04 12:14:25 CEST
(In reply to Oleg Kozlov from comment #14)
> Created attachment 5829 [details]
> decode.path for MSEC (fix bug with locales which use non-english letters)
> 
> Tested on Mageia 5 x86_64 with russian locale (ru_RU.UTF-8)

Tested on Mageia 5 32 bit

msecgui now starts fine in pt_BR
in Dutch and English it still starts, too

(btw "LC_ALL=C mcc does work here to get mcc in English, but _not_ the msecgui part. For msecgui "LANGUAGE=en mcc" or "LANGUAGE=en msecgui" is needed to start it in English)
Comment 37 Marja Van Waes 2015-07-04 12:15:57 CEST
(In reply to Marja van Waes from comment #35)
> Btw, it now throws the exact same error when starting it in Dutch or English
> (that wasn't a problem before)

Not sure how I tried to start it in English, so maybe only true for Dutch
Comment 38 papoteur 2015-07-04 22:11:06 CEST
I'm looking at the code to give a solution.
Papoteur

CC: (none) => yves.brungard_mageia

Comment 39 papoteur 2015-07-05 07:18:06 CEST
The error is also in the source text.
Comment 40 papoteur 2015-07-05 07:18:59 CEST
Forget my previous comment, it's not for this bug report :/
Comment 41 papoteur 2015-07-05 11:59:48 CEST
Created attachment 6815 [details]
Impoved tv's patch

Tested by marja for different languages, including Russian, Portuguese, Dutch, Greek, Chinese.
Comment 42 Marja Van Waes 2015-07-05 12:18:14 CEST
(In reply to papoteur from comment #41)
> Created attachment 6815 [details]
> Impoved tv's patch
> 
> Tested by marja for different languages, including Russian, Portuguese,
> Dutch, Greek, Chinese.

Thanks, Yves :-)

In case there are some users who are affected by this bug, and do not know how to apply the patch:

become root and then:

   cd /usr/share

if you already tried a patch before, then please first run (else go to "then:"):

   urpmi --replacepkgs msec msec-gui

then:

   wget https://bugs.mageia.org/attachment.cgi?id=6815

   mv attachment.cgi\?id\=6815 13837_41.patch

   patch -p2 < 13837_41.patch


and you should be able to start msecgui again :-)
Comment 43 Valek Saikov 2015-07-05 23:55:58 CEST
Russian It works after applying the patch
Comment 44 papoteur 2015-07-17 21:00:13 CEST
Can this patch be submitted, then?
Comment 45 Marja Van Waes 2015-07-22 08:43:26 CEST
(In reply to papoteur from comment #44)
> Can this patch be submitted, then?

Sorry for the late reply. Having seen on dev ml how painful it can be when someone isn't properly credited for his work, makes me confused about how each of the persons who contributed to this patch should be credited.
CC'ing Packager Team leaders and BugSquad leaders

* IMHO this bug should have had a higher severity and probably priority, too. Msec-gui not working at all in many languages is a very serious problem.

(for BugSquad's Mga5 postmortem?)

* Besides, I think Oleg's working patch should have been pushed half a year ago, regardless of how ugly it was. 

(That wouldn't have prevented replacing ugly with better code, later on!)

(for Packagers Team's Mga5 postmortem?)

Now I don't know what the proper way to continue is: 
Can the final patch be pushed, mentioning it is made in collaboration by Oleg, Alex. Thierry and Yves (see the bug report for who did what)? 
Or is it better to push the three attached patches, starting with Oleg's fix, and reworking the others to become patches on top of the former one(s)?

@ ennael, akien: can you please decide and push the fix? 

@ Thierry
Is there a special reason you set this bug to ASSIGNED without assigning it to yourself? Is that because you're not the maintainer of msec?

CC: (none) => ennael1, manuel.mageia, rverschelde, stormi
Priority: Normal => High
Severity: normal => critical

Comment 46 Thierry Vignaud 2015-07-25 17:23:34 CEST
Proper credit would be sg like:
v1: Thierry Vignaud
v2: improved by patpoteur
Comment 47 Thierry Vignaud 2015-07-25 17:28:46 CEST
I just submitted 1.12 in cauldron using Papoteur patch
Comment 48 Marja Van Waes 2015-07-27 21:43:00 CEST
(In reply to Thierry Vignaud from comment #47)
> I just submitted 1.12 in cauldron using Papoteur patch

Thanks Thierry :-)

It works fine here (only tried with Brazilian, though, I've wiped my cauldrons with many languages to test upgrading KDE)

Do you mind pushing the same patch to Mga5?

Version: Cauldron => 5
Whiteboard: MGA5TOO => (none)

Comment 49 Thierry Vignaud 2015-07-28 11:00:07 CEST
*** Bug 16090 has been marked as a duplicate of this bug. ***
Comment 50 Thierry Vignaud 2015-07-28 11:01:23 CEST
(In reply to Marja van Waes from comment #48)
Anyone can just push msec-1.12 into mga5
Comment 51 Marja Van Waes 2015-07-28 11:07:56 CEST
(In reply to Thierry Vignaud from comment #50)
> (In reply to Marja van Waes from comment #48)
> Anyone can just push msec-1.12 into mga5

Any full packager can

@ AlexL @ dglent
Could one of you please push it into updates_testing, whip up an advisory and assign to QA (do I forget something?)
Comment 52 David GEIGER 2015-07-28 11:31:02 CEST
I'm on it :)

CC: (none) => geiger.david68210

Comment 53 Samuel Verschelde 2015-07-28 11:58:34 CEST
Advisory proposal, feel free to correct and improve. I hope I understood the problem right.

-------
msec-gui (in Mageia Control Center: Security Configuration and system audit) did not function properly in some cases due to an error in the way it handled non ASCII characters in translations. This update fixes it.
Comment 54 David GEIGER 2015-07-28 15:10:51 CEST
msec and msec-gui now submitted and uploaded on mga5 Core/Updates_testing repo.

Assigning now to QA.


Advisory:
========================

msec-gui (in Mageia Control Center: Security Configuration and system audit) did not function properly in some cases due to an error in the way it handled non ASCII characters in translations. This update fixes it.


========================

Packages in 5/core/updates_testing:
========================
msec-1.12-1.mga5.i586.rpm
msec-1.12-1.mga5.x86_64.rpm
msec-gui-1.12-1.mga5.i586.rpm
msec-gui-1.12-1.mga5.x86_64.rpm


Source RPM: 
========================
msec-1.12-1.mga5.src.rpm

Assignee: bugsquad => qa-bugs

Comment 55 Marja Van Waes 2015-07-28 16:21:26 CEST
I feel ashamed

updated to 
msec-1.12-1.mga5.i586.rpm and
msec-gui-1.12-1.mga5.i586.rpm

on a system where I had previously seen msecgui crash immediately when started in Brazilian Portuguese or Russian.

Both when started directly (command: msecgui) as when started via MCC, the tool starts fine now in both languages, and additionally also in any language I could think of.

However, I hadn't before thought of trying to do change anything /o\

Now I did think of that, and even when starting the tool in _English_: when I change whom to send the security alerts to, there's a crash:

  Traceback (most recent call last):
  File "/usr/share/msec/msecgui.py", line 438, in ok
    self.msec.commit(True)
  File "/usr/share/msec/libmsec.py", line 739, in commit
    self.configfiles.write_files(really_commit)
  File "/usr/share/msec/libmsec.py", line 252, in write_files
    f.write()
  File "/usr/share/msec/libmsec.py", line 371, in write
    self.pathN = Narg(self.path)
NameError: global name 'Narg' is not defined

@ papoteur

Sorry again for not having tested better before. Would you have time to look into this?

Whiteboard: (none) => advisory feedback

Comment 56 Thierry Vignaud 2015-07-28 16:24:42 CEST
Missing import...
Marja Van Waes 2015-07-28 16:26:53 CEST

Whiteboard: advisory feedback => feedback

Comment 57 Philippe Makowski 2015-07-28 16:45:09 CEST
Are you sure that your patch is still needed after the wxgtk and pythongtk rebuild ? don't you need only to rebuild msec-gui with these new packages ? 
cf https://bugs.mageia.org/show_bug.cgi?id=16397 
lib(64)wxgtku3.0-devel-3.0.2-1.1
wxgtk-3.0.2-1.1.mga5
lib(64)wxgtkugl3.0_0-3.0.2-1.1.mga5
wxgtk-debuginfo-3.0.2-1.1.mga5
lib(64)wxgtku3.0_0-3.0.2-1.1.mga5

wxPython-wxversion-3.0.2.0-1.mga5
wxPython-tools-3.0.2.0-1.mga5
wxPython-debuginfo-3.0.2.0-1.mga5
lib(64)wxPython3.0-devel-3.0.2.0-1.mga5
wxPython-3.0.2.0-1.mga5

CC: (none) => makowski.mageia

Comment 58 papoteur 2015-07-29 13:24:52 CEST
@Philippe
The bug can be well explained with a missing import, as pointed by Thierry.
I add a patch for that.
@marja : can you test it at first?
Comment 59 papoteur 2015-07-29 13:25:47 CEST
Created attachment 6869 [details]
Add a missing import
Comment 60 Marja Van Waes 2015-07-29 13:51:59 CEST
(In reply to Philippe Makowski from comment #57)
> Are you sure that your patch is still needed after the wxgtk and pythongtk
> rebuild ? don't you need only to rebuild msec-gui with these new packages ? 
> cf https://bugs.mageia.org/show_bug.cgi?id=16397 

This morning, with the old msec 1.11 tarball, I did blindly (without looking at the BuildRequires) rebuild and install it locally (on a fully updated system) and then test with Brazilian Portuguese.
It still crashed:
 UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 16: ordinal not in range(128)


(In reply to papoteur from comment #59)
> Created attachment 6869 [details]
> Add a missing import

Will test asap, ETA: before tomorrow
Comment 61 Marja Van Waes 2015-07-29 13:53:23 CEST
(In reply to Marja van Waes from comment #60)
> (In reply to Philippe Makowski from comment #57)
> > Are you sure that your patch is still needed after the wxgtk and pythongtk
> > rebuild ? don't you need only to rebuild msec-gui with these new packages ? 
> > cf https://bugs.mageia.org/show_bug.cgi?id=16397 
> 
> This morning, with the old msec 1.11 tarball, I did blindly (without looking
> at the BuildRequires) rebuild 

That was in Mageia 5, though!
Comment 62 Marja Van Waes 2015-07-29 18:17:14 CEST
tested papoteur's new patch locally on the same system where I had installed  msec-1.12-1.mga5.i586.rpm and
msec-gui-1.12-1.mga5.i586.rpm

Not only starting msecgui works fine, now, but also making some changes and saving them (like changing the security level and whom to send the security alerts to). Tested in pt_BR, en and ru.

However, I'll again try philippem's suggestion, now with the wx* packages from updates_testing (I used the old packages this morning :-/)
Comment 63 Marja Van Waes 2015-07-29 18:31:28 CEST
(In reply to Marja van Waes from comment #62)
> tested papoteur's new patch locally on the same system where I had installed
> msec-1.12-1.mga5.i586.rpm and
> msec-gui-1.12-1.mga5.i586.rpm
> 
> Not only starting msecgui works fine, now, but also making some changes and
> saving them (like changing the security level and whom to send the security
> alerts to). Tested in pt_BR, en and ru.
> 
> However, I'll again try philippem's suggestion, now with the wx* packages
> from updates_testing (I used the old packages this morning :-/)

msec 1.11 still crashes with the initial error when it's built on a system with 
wxgtk-3.0.2-1.1.mga5
lib64wxgtku3.0_0-3.0.2-1.1.mga5 
(the other wx packages weren't installed, so I saw no need to add them)

So I vote for using papoteur's additional patch :-)
Comment 64 Philippe Makowski 2015-07-30 09:26:00 CEST
(In reply to Marja van Waes from comment #63)
> So I vote for using papoteur's additional patch :-)

me too
Comment 65 Mageia Robot 2015-07-30 15:29:10 CEST
commit 4d629bedca83258745ca9d8952a8768a3b24dc07
Author: Papoteur <papoteur@...>
Date:   Thu Jul 30 15:08:18 2015 +0200

    Add Narg import in libmsec (mga#13837)
---
 Commit Link:
   http://gitweb.mageia.org/software/msec/commit/?id=4d629bedca83258745ca9d8952a8768a3b24dc07
Comment 66 Marja Van Waes 2015-07-30 15:31:52 CEST
I hope this was the correct way to add papoteur's patch to msec:

git ci -m "Add Narg import in libmsec (mga#13837)" --author="Papoteur <papoteur@mageialinux-online.org>"

I don't currently manage to use an ssh-agent in the only cauldron I still have, so I can't save david_david or whoever is going to push 1.13 to cauldron and updates testing some time
Comment 67 Rémi Verschelde 2015-07-30 16:15:55 CEST
(In reply to Marja van Waes from comment #66)
> I hope this was the correct way to add papoteur's patch to msec:
> 
> git ci -m "Add Narg import in libmsec (mga#13837)" --author="Papoteur
> <papoteur@mageialinux-online.org>"

I think it worked pretty well according to the commit log :)
Comment 68 David GEIGER 2015-07-30 17:27:10 CEST
new fix of msec-1.13 and msec-gui-1.13 now submitted and uploaded on mga5 Core/Updates_testing repo and on Cauldron repo too.


========================

Packages in 5/core/updates_testing:
========================
msec-1.13-1.mga5.i586.rpm
msec-1.13-1.mga5.x86_64.rpm
msec-gui-1.13-1.mga5.i586.rpm
msec-gui-1.13-1.mga5.x86_64.rpm


Source RPM: 
========================
msec-1.13-1.mga5.src.rpm
Marja Van Waes 2015-07-30 21:06:25 CEST

Whiteboard: feedback => (none)

Comment 69 Marja Van Waes 2015-07-30 21:36:07 CEST
AFAICS it is OK now.

First downgraded to 
msec-gui-1.11-2.mga5.i586.rpm
msec-1.11-2.mga5.i586.rpm

and saw that starting msecgui in pt_BR crashed the tool before it appeared, with the same error as in the summary of this bug reoort.

Then upgraded to 
msec-1.13-1.mga5.i586.rpm
msec-gui-1.13-1.mga5.i586.rpm

Not only starting the tool works fine now, also changing settings no longer leads to a crash.

I tested in Brazilian Portuguese, Russian, Greek, Spanish, Dutch and English

Whiteboard: (none) => MGA5-32-OK

Comment 70 Marja Van Waes 2015-07-31 15:01:52 CEST
First downgraded to 
msec-gui-1.11-2.mga5.x86_64.rpm
msec-1.11-2.mga5.x86_64.rpm

and saw that starting msecgui in pt_BR crashed the tool before it appeared, with the same error as in the summary of this bug reoort.

Then upgraded to 
msec-1.13-1.mga5.x86_64.rpm
msec-gui-1.13-1.mga5.x86_64.rpm

Not only starting the tool works fine now, also changing settings no longer leads to a crash (tested in several languages, including two affected by this bug) 

I did have a crash when pushing a button to run a check. However, I was not able to reproduce it and the trace wasn't related to this fix (but rather to one of the DeprecationWarnings that both version 1.11-2 and version 1.11-2 show).

If a bug report for those warnings doesn't yet exist, then I intend to file one.

However, feel free to beat me to it ;-)

I think this package is ready to be pushed to updates, even if msec(-gui) certainly needs more work.

Whiteboard: MGA5-32-OK => MGA5-32-OK MGA5-64-OK

Comment 71 David GEIGER 2015-08-03 23:58:28 CEST
If you want before validate/push this update we can fix an other small msec bug:

https://bugs.mageia.org/show_bug.cgi?id=15146

If you are agree I can commit and submit an other update for msec adding "gettext" as a requirement, any objection?
Comment 72 Marja Van Waes 2015-08-04 12:22:49 CEST
(In reply to David GEIGER from comment #71)
> If you want before validate/push this update we can fix an other small msec
> bug:
> 
> https://bugs.mageia.org/show_bug.cgi?id=15146
> 
> If you are agree I can commit and submit an other update for msec adding
> "gettext" as a requirement, any objection?

I'm fine with anything that works best for the QA team leaders + Lewis
Comment 73 Dave Hodgins 2015-08-04 23:48:05 CEST
(In reply to David GEIGER from comment #71)
> If you want before validate/push this update we can fix an other small msec
> bug:
> https://bugs.mageia.org/show_bug.cgi?id=15146
> If you are agree I can commit and submit an other update for msec adding
> "gettext" as a requirement, any objection?

Any decision on this before I add the advisory to svn?

CC: (none) => davidwhodgins

Comment 74 Rémi Verschelde 2015-08-05 09:53:10 CEST
(In reply to David GEIGER from comment #71)
> If you want before validate/push this update we can fix an other small msec
> bug:
> 
> https://bugs.mageia.org/show_bug.cgi?id=15146
> 
> If you are agree I can commit and submit an other update for msec adding
> "gettext" as a requirement, any objection?

Go for it, if it's just an added requires it should be quick to test.
Comment 75 David GEIGER 2015-08-05 15:54:54 CEST
new fix of msec-1.13-1.1 and msec-gui-1.13-1.1 now submitted and uploaded on mga5 Core/Updates_testing repo.


Advisory:
========================

msec-gui (in Mageia Control Center: Security Configuration and system audit) did not function properly in some cases due to an error in the way it handled non ASCII characters in translations. This update fixes it.

Also it fixes an other issue on a missing dependency needed for msec main package to properly work. This dependency is "gettext", see below the other associate bug:
https://bugs.mageia.org/show_bug.cgi?id=15146

========================

Packages in 5/core/updates_testing:
========================
msec-1.13-1.1.mga5.i586.rpm
msec-1.13-1.1.mga5.x86_64.rpm
msec-gui-1.13-1.1.mga5.i586.rpm
msec-gui-1.13-1.1.mga5.x86_64.rpm


Source RPM: 
========================
msec-1.13-1.1.mga5.src.rpm
David GEIGER 2015-08-05 15:56:45 CEST

Blocks: (none) => 15146

Comment 76 David GEIGER 2015-08-05 16:00:42 CEST
Clean Whiteboard :)

Whiteboard: MGA5-32-OK MGA5-64-OK => (none)

Manuel Hiebel 2015-08-05 16:41:11 CEST

CC: manuel.mageia => (none)

Dave Hodgins 2015-08-05 16:42:48 CEST

Whiteboard: (none) => advisory

Comment 77 Yann Cantin 2015-08-06 02:30:01 CEST
mga5 64 LANG=fr_FR.UTF-8

msec-gui-1.13-1.1.mga5.x86_64
msec-1.13-1.1.mga5.x86_64

before update : crash
after update : launched, tested force daily check.

Note : shouldn't msec-gui require msec in the same version ?

CC: (none) => yann.cantin
Whiteboard: advisory => advisory MGA5-64-OK

Comment 78 Yann Cantin 2015-08-09 22:30:02 CEST
mga5 32 LANG=fr_FR.UTF-8

msec-gui-1.13-1.1.mga5.i586.rpm
msec-1.13-1.1.mga5.i586.rpm

before update : crash
after update : launched, tested force daily check.

Whiteboard: advisory MGA5-64-OK => advisory MGA5-64-OK MGA5-32-OK

Comment 79 Dave Hodgins 2015-08-09 23:48:15 CEST
Based on comment 78, adding the validated_update keyword.

Keywords: (none) => validated_update
CC: (none) => sysadmin-bugs

Comment 80 Mageia Robot 2015-08-10 16:32:30 CEST
An update for this issue has been pushed to Mageia Updates repository.

http://advisories.mageia.org/MGAA-2015-0081.html

Status: ASSIGNED => RESOLVED
Resolution: (none) => FIXED

Comment 81 macxi 2015-08-13 14:43:35 CEST
I updated the Mageia 5  (locale pt_BR - Brazilian Portuguese)  with the packages:

- Msec-1.13-1.1.mga5.x86_64
- Msec-gui-1.13-1.1.mga5.x86_64

This all working ok.
I was able to access the configuration tool "Security Configuration and system audit" (msec-gui) and I was able to change the settings.

No error message appeared.

Thank you for all the effort to correct this bug.
Congratulations to all the Mageia team.

Note You need to log in before you can comment on or make changes to this bug.