Changeset 7984


Ignore:
Timestamp:
Aug 24, 2018, 12:12:33 PM (14 months ago)
Author:
mabarracus
Message:

New capabilities to allow set desktop,plank & background items
Remove profiles not used when sending data to clients

Location:
syncer-plank-client/trunk/fuentes
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • syncer-plank-client/trunk/fuentes/debian/changelog

    r4432 r7984  
     1syncer-plank-client (0.2.2) unreleased; urgency=medium
     2
     3  * New capabilities to allow set desktop,plank & background items
     4  * Remove profiles not used when sending data to clients
     5
     6 -- M.Angel Juan <m.angel.juan@gmail.com>  Fri, 24 Aug 2018 12:03:53 +0200
     7
    18syncer-plank-client (0.2.1) xenial; urgency=medium
    29
  • syncer-plank-client/trunk/fuentes/debian/control

    r4089 r7984  
    1111Package: syncer-plank-client
    1212Architecture: all
    13 Depends: ${shlibs:Depends}, ${misc:Depends}, python3, syncer
     13Depends: ${shlibs:Depends}, ${misc:Depends}, python3, syncer (> 1.3)
    1414Description: syncer-plank client only
    1515 Client to set settings from syncer-plank
  • syncer-plank-client/trunk/fuentes/syncer-plank-client.install/etc/n4d/conf.d/PlankSync

    r4089 r7984  
    99remove_profile=adm,admins,admin,teachers
    1010update_profile=adm,admins,admin,teachers
     11update_profile_groups=adm,admins,admin,teachers
    1112rename_profile=adm,admins,admin,teachers
  • syncer-plank-client/trunk/fuentes/syncer-plank-client.install/etc/profile.d/syncer-plank.sh

    r4089 r7984  
    11#!/bin/sh
    22LOG="$(/usr/lib/syncer-plank/client-syncer-plank)"
    3 export SYNCER_RUN="$LOG"
     3#export SYNCER_RUN="$LOG"
  • syncer-plank-client/trunk/fuentes/syncer-plank-client.install/usr/lib/syncer-plank/client-syncer-plank

    r4089 r7984  
    11#!/usr/bin/python
    2 import sys
     2import sys,os
     3user = os.getuid()
     4groups = os.getgroups()
     5DEBUG = False
     6try:
     7    d=sys.argv[1]
     8    if d.lower() == 'debug':
     9        DEBUG=True
     10except:
     11    pass
    312
    413try:
     
    1423   
    1524    c=x.ServerProxy("https://server:9779")
    16     md5,pack=c.get_profile_pack('','PlankSync')
     25    try:
     26        md5,pack=c.get_profile_pack('','PlankSync',{'u':user,'g':groups})
     27    except:
     28        import traceback
     29        print '{}'.format(traceback.format_exc())
     30        print '{}'.format(c.get_profile_pack('','PlankSync',{'u':user,'g':groups}))
     31        sys.exit(1)
    1732    decoded=base64.b64decode(pack)
    1833    if md5 == hashlib.md5(decoded).hexdigest():
     
    2540        with tarfile.open(fileobj=StringIO.StringIO(decoded)) as f:
    2641            f.extractall(dir)
     42        if DEBUG:
     43            print dir
    2744        out=''
    2845        for root,dirnames,filenames in os.walk(dir):
    2946            program='/usr/bin/syncer'
    3047            for filename in filenames:
    31                 for cmd in ['-d','-i','-r '+dir+'/'+filename,'-s','-p']:
     48                if DEBUG:
     49                    sequence = ['-d','-i','-r '+dir+'/'+filename,'-s','-p']
     50                else:
     51                    sequence = ['-d','-i','-r '+dir+'/'+filename,'-p']
     52                for cmd in sequence:
    3253                    call=[program,'-w '+dir+' ',cmd]
    3354                    try:
    3455                        out+=subprocess.check_output(call,stderr=subprocess.STDOUT)
    35                     except:
    36                         pass
    37         shutil.rmtree(dir)
     56                    except Exception as e:
     57                        print(e)
     58        if not DEBUG:
     59            shutil.rmtree(dir)
    3860        print(out.replace('\n','').strip())
    3961except Exception as e:
     62    print(e)
    4063    sys.exit(0)
  • syncer-plank-client/trunk/fuentes/syncer-plank-client.install/usr/share/n4d/python-plugins/PlankSync.py

    r4432 r7984  
    7272            except Exception as e:
    7373                return str(e)
    74            
    75         def read_profile(self,profile_name):
     74
     75        def read_profile_old(self,profile_name):
    7676            try:
    7777                with open('/etc/syncer-plank/'+profile_name+'.sync','r') as f:
    7878                    data=json.load(f)
    7979                    return self._get_planks(data[3:])
     80            except:
     81                return False
     82
     83        def read_profile(self,profile_name):
     84            try:
     85                with open('/etc/syncer-plank/'+profile_name+'.sync','r') as f:
     86                    data=json.load(f)
     87                    return data
    8088            except:
    8189                return False
     
    103111                raise Exception(e)
    104112
    105         def update_profile(self,name,grouplist,applist):
    106             file='/etc/syncer-plank/'+name+'.sync'
    107             content=[]
    108             #add group element
    109             content.append(['users',['disavow_grp','teachers']])
    110             content.append(['users',['assert_grp',','.join(grouplist)]])
    111             #remove previous elements
    112             content.append(['plank', ['remove','all']])
    113             #add elements
    114             for a in applist:
    115                 content.append(['plank',['add',a]])
     113        def update_profile(self,name,newname,grouplist,applist):
     114            import traceback
     115            try:
     116                file='/etc/syncer-plank/'+newname+'.sync'
     117                content=[]
     118                #add group element
     119                content.append(['users',['disavow_grp','teachers']])
     120                content.append(['users',['assert_grp',','.join(grouplist)]])
     121                #remove previous elements
     122                content.append(['plank', ['remove','all']])
     123                #add elements
     124                for i in applist['plank']:
     125                    content.append(['file',['encoded',i[1],i[2]]])
     126                    content.append(['comm',['one']])
     127                    content.append(['plank',['addcontent','param']])
     128                for i in applist['desktop']:
     129                    content.append(['file',['encoded',i[1],i[2]]])
     130                    content.append(['comm',['one']])
     131                    content.append(['desktop',['addcontent','param']])
     132                content.append(['file',['encoded',applist['background'][0],applist['background'][1]]])
     133                content.append(['comm',['one']])
     134                content.append(['dconf',['/org/mate/desktop/background/picture-filename','param']])
     135            except Exception as e:
     136                raise Exception(traceback.format_exc()+str(e))
    116137            with open(file,'w') as f:
    117138                try:
    118139                    json.dump(content,f,separators=(',', ':'))
    119                     return True
    120140                except Exception as e:
    121141                    raise Exception(str(e))
    122 
    123         def get_profile_pack(self):
     142            if name[0] != '_':
     143                if name != newname:
     144                    try:
     145                        os.remove('/etc/syncer-plank/'+name+'.sync')
     146                    except Exception as e:
     147                        raise Exception(str(e))
     148            return True
     149
     150        def update_profile_groups(self,name,grouplist):
     151            try:
     152                file = '/etc/syncer-plank/'+name+'.sync'
     153                content = []
     154                if not os.path.exists(file):
     155                    return False
     156                with open(file,'r') as f:
     157                    temp = json.load(f)
     158                content.append(['users',['disavow_grp','teachers']])
     159                content.append(['users',['assert_grp',','.join(grouplist)]])
     160                #remove previous elements
     161                content.append(['plank', ['remove','all']])
     162                for item in temp:
     163                    if item[0] == 'users':
     164                        continue
     165                    content.append(item)
     166                with open(file,'w') as f:
     167                    json.dump(content,f,separators=(',',':'))
     168            except Exception as e:
     169                raise Exception(str(e))
     170            return True
     171
     172        def get_profile_pack(self,userinfo):
     173            import grp
     174            if 'u' not in userinfo or 'g' not in userinfo:
     175                raise Exception('invalid user info, {}'.format(userinfo))
     176            list_groups = userinfo['g']
     177            lfiles = []
     178            try:
     179                named_list_groups = [grp.getgrgid(g)[0] for g in list_groups]
     180                for pfile in os.listdir('/etc/syncer-plank'):
     181                    fpath = '/etc/syncer-plank/'+pfile
     182                    with open(fpath,'r') as fp:
     183                        content = json.load(fp)
     184                        for item in content:
     185                            if item[0] != 'users':
     186                                continue
     187                            if item[1][0] != 'assert_grp':
     188                                continue
     189                            lgrps = item[1][1].split(',')
     190                            add = False
     191                            for g in lgrps:
     192                                if g in named_list_groups:
     193                                    add = True
     194                                    break
     195                            if add:
     196                                lfiles.append(fpath)
     197                msg = '{}'.format(lfiles)
     198            except:
     199                import traceback
     200                msg = '{}'.format(traceback.format_exc())
     201            with open('/tmp/testeo.txt','w') as fp:
     202                fp.write(msg)
    124203            tmpfile=StringIO.StringIO()
    125204            try:
    126205                with tarfile.open(fileobj=tmpfile,mode='w:gz') as tgz:
    127                     loc='/etc/syncer-plank/'
    128                     tgz.add(loc,arcname=os.path.basename(loc))
     206                    #loc='/etc/syncer-plank/'
     207                    #tgz.add(loc,arcname=os.path.basename(loc))
     208                    for f in lfiles:
     209                        tgz.add(f,arcname=os.path.basename(f))
    129210                md5=hashlib.md5(tmpfile.getvalue()).hexdigest()
    130211                content=base64.b64encode(tmpfile.getvalue())
Note: See TracChangeset for help on using the changeset viewer.