Sophie

Sophie

distrib > Mageia > 5 > i586 > by-pkgid > 82e3334c74b3d383e8c26a2aba9e4c6f > files > 2

ajenti-1.2.22-11.mga5.src.rpm

diff --git a/ajenti/core.py b/ajenti/core.py
index 63f4b73..47deb03 100644
--- a/ajenti/core.py
+++ b/ajenti/core.py
@@ -58,7 +58,7 @@ def run():
         logging.warning('Couldn\'t set default locale')
 
     logging.info('Ajenti %s running on platform: %s' % (ajenti.version, ajenti.platform))
-    if not ajenti.platform in ['debian', 'centos', 'freebsd']:
+    if not ajenti.platform in ['debian', 'centos', 'freebsd', 'mageia']:
         logging.warn('%s is not officially supported!' % ajenti.platform)
 
     if ajenti.debug:
diff --git a/ajenti/plugins/apache/__init__.py b/ajenti/plugins/apache/__init__.py
index d007d38..94a3152 100644
--- a/ajenti/plugins/apache/__init__.py
+++ b/ajenti/plugins/apache/__init__.py
@@ -10,6 +10,7 @@ info = PluginInfo(
     dependencies=[
         PluginDependency('webserver_common'),
         BinaryDependency(platform_select(
+            mageia='httpd',
             centos='httpd',
             freebsd='apachectl',
             default='apache2',
diff --git a/ajenti/plugins/apache/main.py b/ajenti/plugins/apache/main.py
index b69732f..16fa924 100644
--- a/ajenti/plugins/apache/main.py
+++ b/ajenti/plugins/apache/main.py
@@ -17,6 +17,7 @@ class Apache (WebserverPlugin):
     hosts_available_dir = platform_select(
         debian='/etc/apache2/sites-available',
         centos='/etc/httpd/conf.d',
+        mageia='/etc/httpd/conf',
         freebsd='/usr/local/etc/apache/sites-available',
     )
     hosts_enabled_dir = '/etc/apache2/sites-enabled'
@@ -48,5 +49,6 @@ class Apache (WebserverPlugin):
         self.title = 'Apache'
         self.category = _('Software')
         self.icon = 'globe'
-        if ajenti.platform == 'centos':
+        if ajenti.platform == 'centos' or \
+               ajenti.platform == 'mageia':
             self.service_name = 'httpd'
diff --git a/ajenti/plugins/bind9/main.py b/ajenti/plugins/bind9/main.py
index 634bab7..778872f 100644
--- a/ajenti/plugins/bind9/main.py
+++ b/ajenti/plugins/bind9/main.py
@@ -15,6 +15,7 @@ class BIND9Plugin (SectionPlugin):
     config_root = platform_select(
         debian='/etc/bind/',
         centos='/etc/named/',
+        mageia='/etc/named/',
         arch='/var/named/',
     )
 
diff --git a/ajenti/plugins/ctdb/main.py b/ajenti/plugins/ctdb/main.py
index 3533aa6..2f2b175 100644
--- a/ajenti/plugins/ctdb/main.py
+++ b/ajenti/plugins/ctdb/main.py
@@ -25,7 +25,8 @@ class CTDB (SectionPlugin):
 
         self.config_path = {
             'debian': '/etc/default/ctdb',
-            'centos': '/etc/sysconfig/ctdb'
+            'centos': '/etc/sysconfig/ctdb',
+            'mageia': '/etc/sysconfig/ctdb'
         }[ajenti.platform]
 
         self.config = CTDBConfig(path=self.config_path)
diff --git a/ajenti/plugins/network/main.py b/ajenti/plugins/network/main.py
index 7cc85b6..a110ebc 100755
--- a/ajenti/plugins/network/main.py
+++ b/ajenti/plugins/network/main.py
@@ -9,7 +9,7 @@ from api import *
 
 @plugin
 class NetworkPlugin (SectionPlugin):
-    platforms = ['debian', 'centos']
+    platforms = ['debian', 'centos', 'mageia']
 
     def init(self):
         self.title = _('Network')
diff --git a/ajenti/plugins/network/nc_centos.py b/ajenti/plugins/network/nc_centos.py
index b7e0091..3c06e6c 100755
--- a/ajenti/plugins/network/nc_centos.py
+++ b/ajenti/plugins/network/nc_centos.py
@@ -18,7 +18,7 @@ optionmap = {
 
 @plugin
 class CentosNetworkConfig (LinuxIfconfig, INetworkConfig):
-    platforms = ['centos']
+    platforms = ['centos', 'mageia']
 
     interfaces = None
 
diff --git a/ajenti/plugins/network/nctp_linux.py b/ajenti/plugins/network/nctp_linux.py
index b0ca3ec..415fe7a 100644
--- a/ajenti/plugins/network/nctp_linux.py
+++ b/ajenti/plugins/network/nctp_linux.py
@@ -10,7 +10,7 @@ from ajenti.ui import *
 
 
 class LinuxIfconfig (object):
-    platforms = ['debian', 'centos']
+    platforms = ['debian', 'centos', 'mageia']
 
     def detect_dev_class(self, iface):
         ifname = re.compile('[a-z]+').findall(iface.name)
diff --git a/ajenti/plugins/nginx/main.py b/ajenti/plugins/nginx/main.py
index 8046fe5..c44169a 100644
--- a/ajenti/plugins/nginx/main.py
+++ b/ajenti/plugins/nginx/main.py
@@ -5,7 +5,7 @@ from ajenti.util import platform_select
 
 @plugin
 class Nginx (WebserverPlugin):
-    platforms = ['debian', 'centos', 'freebsd', 'arch']
+    platforms = ['debian', 'centos', 'freebsd', 'arch', 'mageia']
     service_name = 'nginx'
     service_buttons = [
         {
@@ -17,6 +17,7 @@ class Nginx (WebserverPlugin):
     hosts_available_dir = platform_select(
         debian='/etc/nginx/sites-available',
         centos='/etc/nginx/conf.d',
+        mageia='/etc/nginx/conf.d',
         freebsd='/usr/local/etc/nginx/conf.d',
         arch='/etc/nginx/sites-available',
     )
diff --git a/ajenti/plugins/ntpd/main.py b/ajenti/plugins/ntpd/main.py
index c95035c..8d6ec2f 100644
--- a/ajenti/plugins/ntpd/main.py
+++ b/ajenti/plugins/ntpd/main.py
@@ -70,6 +70,7 @@ class NTPDPlugin(SectionPlugin):
     service_name = platform_select(
         default='ntp',
         centos='ntpd',
+        mageia='ntpd',
     )
 
     def init(self):
diff --git a/ajenti/plugins/packages/__init__.py b/ajenti/plugins/packages/__init__.py
index d36bd73..796a60f 100644
--- a/ajenti/plugins/packages/__init__.py
+++ b/ajenti/plugins/packages/__init__.py
@@ -18,4 +18,5 @@ def init():
     import pm_bsd
     import pm_yum
     import pm_pacman
+    import pm_urpmi
     import installer
diff --git a/ajenti/plugins/packages/installer.py b/ajenti/plugins/packages/installer.py
index d6f45f0..a2f21f1 100644
--- a/ajenti/plugins/packages/installer.py
+++ b/ajenti/plugins/packages/installer.py
@@ -79,6 +79,27 @@ db = {
         'ipmitool': 'ipmitool',
         'cron': 'cronie',
     },
+    'mageia': {
+        'python-module-BeautifulSoup': 'python-beautifulsoup',
+        'supervisord': 'supervisor',
+        'hddtemp': 'hddtemp',
+        'sensors': 'lm_sensors',
+        'munin-cron': 'munin',
+        'smbd': 'samba',
+        'smartctl': 'smartmontools',
+        'squid3': 'squid',
+        'apache2': 'apache',
+        'ctdb': 'ctdb',
+        'mysql': 'mariadb',
+        'mysqld_safe': 'mariadb-core',
+        'psql': 'postgresql',
+        'mdadm': 'mdadm',
+        'nginx': 'nginx',
+        'ipmitool': 'ipmitool',
+        'cron': 'cronie',
+        'openvpn': 'openvpn',
+        'memcached': 'memcached',
+    },
     'arch': {
         'python-module-BeautifulSoup': 'python2-beautifulsoup3',
         'supervisord': 'supervisor',
diff --git a/ajenti/plugins/packages/main.py b/ajenti/plugins/packages/main.py
index 4b449d9..11c7fcc 100644
--- a/ajenti/plugins/packages/main.py
+++ b/ajenti/plugins/packages/main.py
@@ -8,7 +8,7 @@ from api import PackageManager, PackageInfo
 
 @plugin
 class Packages (SectionPlugin):
-    platforms = ['debian', 'centos', 'freebsd', 'arch']
+    platforms = ['debian', 'centos', 'freebsd', 'arch', 'mageia']
     def init(self):
         self.title = _('Packages')
         self.icon = 'gift'
diff --git a/ajenti/plugins/packages/pm_urpmi.py b/ajenti/plugins/packages/pm_urpmi.py
new file mode 100644
index 0000000..5c77f6f
--- /dev/null
+++ b/ajenti/plugins/packages/pm_urpmi.py
@@ -0,0 +1,93 @@
+import subprocess
+
+from ajenti.api import *
+from api import PackageInfo, PackageManager
+
+
+@plugin
+@rootcontext
+@persistent
+class UrpmiPackageManager (PackageManager):
+    platforms = ['mageia']
+    def refresh(self):
+        try:
+            out_update = subprocess.check_output(['urpmi.update', '-a'])
+        except subprocess.CalledProcessError as e:
+            pass
+
+        try:
+            out_u = subprocess.check_output(['urpmq', '--auto-select', "-r"])
+            self.upgradeable = self._parse_urpmi(out_u)
+        except subprocess.CalledProcessError as e:
+            self.upgradeable = []
+
+        try:
+            out_a = subprocess.check_output(['urpmq', '--list', "-r"])
+            self.all = self._parse_urpmi(out_a)
+            self.all_dict = dict((x.name, x) for x in self.all)
+        except subprocess.CalledProcessError as e:
+            self.all = []
+            self.all_dict = {}
+
+    def search(self, query):
+        if query.strip() == "":
+            return []
+        try:
+            out_s = subprocess.check_output(['urpmq', "-Y",
+                                             "--summary", query])
+        except subprocess.CalledProcessError as e:
+            return []
+        
+        r = []
+        for l in out_s.split('\n'):
+            s = l.strip().split(":", 1)
+            if len(s) != 2:
+                continue
+            summary_list = s[1].rsplit("(",1)
+            if len(summary_list) != 2:
+                continue
+            p = PackageInfo()
+            p.name = s[0].strip()
+            p.summary = summary_list[0].strip()
+            p.version = summary_list[1].rsplit(")",1)[0].strip()
+            p.state = 'r'
+            if p.name in self.all_dict and self.all_dict[p.name].state == 'i':
+                p.state = 'i'
+            r.append(p)
+        return r
+    def get_lists(self):
+        self.context.launch('terminal',
+                            command='urpmi.update -a ; read -p "Press [enter] to continue"')
+
+    def do(self, actions, callback=lambda: 0):
+        to_install = [a for a in actions if a.action == 'i']
+        to_remove = [a for a in actions if a.action == 'r']
+        cmd = ''
+        if len(to_install) > 0:
+            cmd += 'urpmi ' + ' '.join(a.name for a in to_install)
+            if len(to_remove) > 0:
+                cmd += ' && '
+        if len(to_remove) > 0:
+            cmd += 'urpme ' + ' '.join(a.name for a in to_remove)
+        if len(to_install) > 0 or len(to_remove) > 0:
+            cmd += " ; "
+        cmd += 'read -p "Press [enter] to continue"'
+        self.context.launch('terminal', command=cmd, callback=callback)
+
+    def _parse_urpmi(self, ss):
+        r = []
+        for s in ss.splitlines():
+            s = s.strip().rsplit("-", 2)
+            if len(s) != 3:
+                continue
+            try:
+                p = PackageInfo()
+                p.name = s[0]
+                p.version = "-".join(s[1:])
+                p.state = 'i'
+                r.append(p)
+                if len(r.keys()) > 2500:
+                    break
+            except:
+                pass
+        return r
diff --git a/ajenti/plugins/samba/main.py b/ajenti/plugins/samba/main.py
index d8b7532..c74cc52 100644
--- a/ajenti/plugins/samba/main.py
+++ b/ajenti/plugins/samba/main.py
@@ -22,6 +22,7 @@ class Samba (SectionPlugin):
         self.find('servicebar').name = platform_select(
             debian='samba',
             ubuntu='smbd',
+            mageia='smbd',
             centos='smb',
             default='samba',
         )
diff --git a/ajenti/plugins/sensors/load.py b/ajenti/plugins/sensors/load.py
index 849ce7b..e162570 100644
--- a/ajenti/plugins/sensors/load.py
+++ b/ajenti/plugins/sensors/load.py
@@ -15,7 +15,7 @@ class BaseLoadSensor (Sensor):
 
 @plugin
 class LinuxLoadSensor (BaseLoadSensor):
-    platforms = ['debian', 'centos', 'arch']
+    platforms = ['debian', 'centos', 'arch', 'mageia']
 
     def measure(self, variant):
         idx = self.get_variants().index(variant)
diff --git a/ajenti/plugins/users/main.py b/ajenti/plugins/users/main.py
index 53f89ba..e284080 100644
--- a/ajenti/plugins/users/main.py
+++ b/ajenti/plugins/users/main.py
@@ -157,7 +157,7 @@ class UsersBackend (object):
 
 @plugin
 class LinuxUsersBackend (UsersBackend):
-    platforms = ['debian', 'centos', 'arch']
+    platforms = ['debian', 'centos', 'arch', 'mageia']
 
     def add_user(self, name):
         subprocess.call(['useradd', '-s', '/bin/false', name])
diff --git a/ajenti/plugins/iptables/main.py b/ajenti/plugins/iptables/main.py
index 44aadd4..02de6cb 100755
--- a/ajenti/plugins/iptables/main.py
+++ b/ajenti/plugins/iptables/main.py
@@ -50,7 +50,7 @@ class DebianFirewallManager (FirewallManager, BasePlugin):
 
 @plugin
 class CentOSFirewallManager (FirewallManager, BasePlugin):
-    platforms = ['centos']
+    platforms = ['centos', 'mageia']
     config_path = '/etc/sysconfig/iptables'
     config_path_ajenti = '/etc/iptables.up.rules.ajenti'
 
@@ -70,7 +70,7 @@ class ArchFirewallManager (FirewallManager, BasePlugin):
 
 @plugin
 class Firewall (SectionPlugin):
-    platforms = ['centos', 'debian', 'arch']
+    platforms = ['centos', 'debian', 'arch', 'mageia']
     manager_class = FirewallManager
 
     def init(self):