コード例 #1
0
ファイル: svnsftp.py プロジェクト: shalk/svn-manager
def get(hostname=None,port=22,username='******',password='******',config_dict=None,remote_file=None,local_file=None):
    """
    从服务器上下载文件
    支持参数,支持字典
    """
    if hostname is None:
        hostname = config_dict['hostname']
        port     = config_dict['port']
        username = config_dict['username']
        password = config_dict['password']

    try:
        svn_logger.debug("connect to %s:%s " % (hostname,port))
        t = paramiko.Transport((hostname, port))
        t.connect(username=username, password=password)

        sftp =paramiko.SFTPClient.from_transport(t)

        sftp.get(remote_file,local_file)
        svn_logger.debug("get file from  remote(%s) to local (%s) " % (remote_file,local_file))
        t.close();
    except Exception, e:
        svn_logger.error("connect to %s:%s failed " % (hostname,port))
        import traceback
        traceback.print_exc()
        try:
            t.close()
        except:
            pass
コード例 #2
0
ファイル: svngroup.py プロジェクト: shalk/svn-manager
 def del_privilege(self, dir):
     svn_logger.debug("Group(%s) del priv (%s) " % (self.name, dir))
     if dir in self.privilege:
         del self.privilege[dir]
     else:
         svn_logger.warn("Group(%s) do not have privilege dir(%s)" %
                         (self.name, dir))
コード例 #3
0
ファイル: svngroup.py プロジェクト: shalk/svn-manager
 def has_id(self,id):
     if id.name in self.get_id_name_list():
         svn_logger.debug("Group(%s) contain id(%s)  " % (self.name,id.name))
         return True
     else:
         svn_logger.debug("Group(%s) do  not contain id(%s)  " % (self.name,id.name))
         return False
コード例 #4
0
def send(hostname=None,
         port=22,
         username='******',
         password='******',
         config_dict=None,
         local_file=None,
         remote_file=None):
    """
    上传文件到服务器
    """
    if hostname is None:
        hostname = config_dict['hostname']
        port = config_dict['port']
        username = config_dict['username']
        password = config_dict['password']

    try:
        svn_logger.debug("connect to %s:%s " % (hostname, port))
        t = paramiko.Transport((hostname, port))
        t.connect(username=username, password=password)

        sftp = paramiko.SFTPClient.from_transport(t)

        sftp.put(local_file, remote_file)
        svn_logger.debug("send file from  local(%s) to remote(%s) " %
                         (local_file, remote_file))
        t.close()
    except Exception, e:
        svn_logger.error("connect to %s:%s failed " % (hostname, port))
        import traceback
        traceback.print_exc()
        try:
            t.close()
        except:
            pass
コード例 #5
0
ファイル: svngroup.py プロジェクト: shalk/svn-manager
 def get_idlist_as_string(self):
     svn_logger.debug("Group(%s) get idlist  as str()  " % self.name)
     id_name_list = []
     for id in self.idlist:
         # print(id.name)
         id_name_list.append(id.name)
     string = ",".join(id_name_list)
     return string
コード例 #6
0
ファイル: svngroup.py プロジェクト: shalk/svn-manager
 def get_idlist_as_string(self):
     svn_logger.debug("Group(%s) get idlist  as str()  " % self.name)
     id_name_list = []
     for id in self.idlist:
        # print(id.name)
         id_name_list.append(id.name)
     string = ",".join(id_name_list)
     return string
コード例 #7
0
ファイル: svngroup.py プロジェクト: shalk/svn-manager
 def display(self):
     svn_logger.debug("Group(%s) display  " % self.name)
     print("Group: %s" % self.name)
     print("ID:")
     for id in self.idlist:
         print(" "  +  id.name )
     print("DIR:")
     for dir,mode in self.privilege.items():
         print("%-3s %s" % (mode,dir))
コード例 #8
0
ファイル: svngroup.py プロジェクト: shalk/svn-manager
 def __init__(self, name, idlist=None, privilege=None):
     svn_logger.debug("Group(%s) created" % name)
     self.name = name
     self.idlist = []
     self.privilege = {}
     if idlist:
         self.idlist = idlist
     if privilege:
         self.privilege = privilege
コード例 #9
0
ファイル: svngroup.py プロジェクト: shalk/svn-manager
 def has_id(self, id):
     if id.name in self.get_id_name_list():
         svn_logger.debug("Group(%s) contain id(%s)  " %
                          (self.name, id.name))
         return True
     else:
         svn_logger.debug("Group(%s) do  not contain id(%s)  " %
                          (self.name, id.name))
         return False
コード例 #10
0
ファイル: svngroup.py プロジェクト: shalk/svn-manager
 def display(self):
     svn_logger.debug("Group(%s) display  " % self.name)
     print("Group: %s" % self.name)
     print("ID:")
     for id in self.idlist:
         print(" " + id.name)
     print("DIR:")
     for dir, mode in self.privilege.items():
         print("%-3s %s" % (mode, dir))
コード例 #11
0
ファイル: svngroup.py プロジェクト: shalk/svn-manager
 def __init__(self,name,idlist=None,privilege=None):
     svn_logger.debug("Group(%s) created" %  name)
     self.name      = name
     self.idlist = []
     self.privilege = {}
     if idlist:
         self.idlist    = idlist
     if privilege:
         self.privilege = privilege
コード例 #12
0
ファイル: svnid.py プロジェクト: shalk/svn-manager
 def write_priv_to_file(self, filename):
     svn_logger.debug("write(%s) to file(%s)" % (self.name, filename))
     try:
         fh = open(filename, "a")
         for dir, mode in self.privilege.items():
             fh.write("[%s]" % dir)
             fh.write("%s = %s " % (self.name, mode))
     except IOError:
         svn_logger.error("can not open (%s) !" % filename)
     finally:
         fh.close()
コード例 #13
0
ファイル: svngroup.py プロジェクト: shalk/svn-manager
 def write_priv_to_file(self,filename):
     svn_logger.debug("Group(%s) write to file(%s)  " % (self.name,filename))
     try:
         fh = open(filename,"a")
         for dir,mode in self.privilege.iteritems:
             fh.write("[%s]" % dir)
             fh.write("@%s = %s " % (self.name,mode))
     except IOError:
         print("can not open (%s) !" % filename)
     finally:
         fh.close()
コード例 #14
0
ファイル: svnauth.py プロジェクト: shalk/svn-manager
 def refresh(self,passwdfile=None,authfile=None):
     self.id_dict={}
     self.group_dict = {}
     svn_logger.info("refresh svnauth from file(%s),(%s)" % (passwdfile,authfile))
     if passwdfile:
         self.read_passwdfile(passwdfile)
     else:
         svn_logger.debug("passwdfile is None ")
     if authfile:
         self.read_authfile(authfile)
     else:
         svn_logger.debug("authfile is None ")
コード例 #15
0
ファイル: svnauth.py プロジェクト: shalk/svn-manager
 def get_id_priv(self,name):
     priv_dict={}
     if name  in sorted(self.id_dict.keys()):
         svn_logger.info("Id(%s) get priv " % name )
         priv_dict = self.id_dict[name].get_privilege()
         for group in self.group_dict.values():
             if group.has_id(self.id_dict[name]):
                 svn_logger.debug("group(%s) contain priv  for id(%s)" %( group.name, name) )
                 priv_dict.update(group.privilege)
         return priv_dict
     else:
         svn_logger.warn("Id %s not exist" % name)
         return None
コード例 #16
0
ファイル: svnauth.py プロジェクト: shalk/svn-manager
    def read_passwdfile(self,passwdfile):
        svn_logger.info("read passwd from file(%s)" % passwdfile)
        try:
            passfh = open(passwdfile,"r")
            re1 = r"^(\w+)\s*=\s*(\w+)"
            pattern = re.compile(re1)

            for line in passfh:
                match = pattern.match(line)
                if match:
                    name   = match.group(1)
                    passwd = match.group(2)
                    self.id_add(name,passwd)
                else:
                    svn_logger.debug("line(%s) did not match id=passwd  ;ignore this line" %  line )
        except IOError:
            svn_logger.error("The file(%s) do not exist" % passwdfile)
            exit()
        finally:
            passfh.close()
コード例 #17
0
ファイル: svnconfig.py プロジェクト: shalk/svn-manager
def read_config_to_dict(ini='/etc/svn.ini'):
    """
    从ini文件里读取svn_server字段
    :param ini:
    :return:svn_sftp_dict
    """
    cf = ConfigParser.ConfigParser()
    svn_sftp_dict={}
    field="svn_server"
    local_field="local"
    try:
        svn_logger.debug("read svn ini file(%s) " % ini )
        cf.read(ini)
        svn_sftp_dict['hostname'] = cf.get(field,'hostname')
        svn_sftp_dict['port'] = cf.getint(field,'port')
        svn_sftp_dict['username'] = cf.get(field,'username')
        svn_sftp_dict['password'] = cf.get(field,'password')
        svn_sftp_dict['passwdfile'] = cf.get(field,'passwdfile')
        svn_sftp_dict['authfile'] = cf.get(field,'authfile')
        svn_sftp_dict['local_passwdfile'] = cf.get(local_field,'passwdfile')
        svn_sftp_dict['local_authfile'] = cf.get(local_field,'authfile')
    except IOError as e:
        svn_logger.error("open svn ini file (%s) failed" % ini)
    return svn_sftp_dict
コード例 #18
0
ファイル: svnconfig.py プロジェクト: shalk/svn-manager
def read_config_to_dict(ini='/etc/svn.ini'):
    """
    从ini文件里读取svn_server字段
    :param ini:
    :return:svn_sftp_dict
    """
    cf = ConfigParser.ConfigParser()
    svn_sftp_dict = {}
    field = "svn_server"
    local_field = "local"
    try:
        svn_logger.debug("read svn ini file(%s) " % ini)
        cf.read(ini)
        svn_sftp_dict['hostname'] = cf.get(field, 'hostname')
        svn_sftp_dict['port'] = cf.getint(field, 'port')
        svn_sftp_dict['username'] = cf.get(field, 'username')
        svn_sftp_dict['password'] = cf.get(field, 'password')
        svn_sftp_dict['passwdfile'] = cf.get(field, 'passwdfile')
        svn_sftp_dict['authfile'] = cf.get(field, 'authfile')
        svn_sftp_dict['local_passwdfile'] = cf.get(local_field, 'passwdfile')
        svn_sftp_dict['local_authfile'] = cf.get(local_field, 'authfile')
    except IOError as e:
        svn_logger.error("open svn ini file (%s) failed" % ini)
    return svn_sftp_dict
コード例 #19
0
ファイル: svnauth.py プロジェクト: shalk/svn-manager
    def read_authfile(self,authfile):
        svn_logger.info("read line from file(%s)" % authfile)
        try:
            authfh = open(authfile,'r')#,encoding='utf-8')

            group_flag_re=r"\[groups\]"
            pattern_group_flag=re.compile(group_flag_re)
            #组名 和成员列表
            group_userlist_re=r"^(\w+)\s*=\s*(.*)$"
            pattern_userlist=re.compile(group_userlist_re)
            #权限路径
            path_re = r"^\[(\w+:)?(/\S*)\]"
            pattern_path=re.compile(path_re)
            #成员名称和权限
            user_priv_re=r"^(\w+)\s*=\s*(\w+)"
            pattern_user_priv=re.compile(user_priv_re)
            #组名称和权限
            group_priv_re=r"^@(\w+)\s*=\s*(\w+)"
            pattern_group_priv=re.compile(group_priv_re)

            tmp_status = 0
            tmp_dir    = ''
            # 状态0  为初始状态
            # 状态1   遇到[group]标志之后
            # 状态2   遇到[/dir] 目录之后 ,并记录目录名称
            for line in authfh:
                svn_logger.debug("read line from file(%s)" % line)
                if tmp_status == 0:
                    match = pattern_group_flag.match(line)
                    if match:
                        tmp_status = 1
                        svn_logger.debug("match group flag")
                elif tmp_status == 1:
                    match = pattern_userlist.match(line)
                    if match:
                        #匹配到
                        svn_logger.debug("match userlist in group")

                        group_name = match.group(1)
                        self.group_create(group_name)
                        userlist_string = match.group(2)
                        userlist_string = userlist_string.replace(' ','')
                        userlist = userlist_string.split(',')
                        svn_logger.debug("group(%s) will add userlist(%s)" % (group_name,userlist))
                        for id_name in userlist:
                            if id_name == "":
                                continue
                            self.group_add_id(group_name,id_name)

                    elif pattern_path.match(line):
                        #匹配到目录

                        match = pattern_path.match(line)
                        if  match.group(1):
                            tmp_dir =  match.group(1) + match.group(2)
                        else:
                            tmp_dir = match.group(2)
                        svn_logger.debug("match diretory(%s)" % tmp_dir)
                        tmp_status = 2
                    else:
                        pass
                elif tmp_status == 2:
                    if pattern_group_priv.match(line):
                        svn_logger.debug("match group priv")
                        match = pattern_group_priv.match(line)
                        group_name = match.group(1)
                        mode = match.group(2)
                        self.group_add_priv(group_name,tmp_dir,mode)
                    elif pattern_user_priv.match(line):
                        svn_logger.debug("match user priv")
                        match = pattern_user_priv.match(line)
                        name = match.group(1)
                        mode = match.group(2)
                       # print("(%s) add (%s)" % (name,tmp_dir))
                        self.id_add_priv(name,tmp_dir,mode)
                       # print("(%s) add (%s)" % (name,tmp_dir))
                    elif pattern_path.match(line):
                        #匹配到目录
                        match = pattern_path.match(line)
                        if  match.group(1):
                            tmp_dir =  match.group(1) + match.group(2)
                        else:
                            tmp_dir = match.group(2)
                        svn_logger.debug("match diretory(%s)" % tmp_dir)
                    else:
                        pass
        except IOError:
            svn_logger.error("The file(%s) do not exist" % authfile)
            exit()

        authfh.close()
        return
コード例 #20
0
ファイル: svngroup.py プロジェクト: shalk/svn-manager
 def get_id_name_list(self):
     svn_logger.debug("Group(%s) get idlist  as  list()  " % self.name)
     id_name_list=[]
     for id in self.idlist:
         id_name_list.append(id.name)
     return id_name_list
コード例 #21
0
ファイル: svngroup.py プロジェクト: shalk/svn-manager
 def get_privilege(self, dir):
     svn_logger.debug("Group(%s) get priv (%s) " % (self.name, dir))
     return self.privilege
コード例 #22
0
ファイル: svnauth.py プロジェクト: shalk/svn-manager
 def __new__(cls,*args,**kwargs):
     if not cls._instance:
        svn_logger.debug("SvnAuth function __new__ once")
        #cls._instance = super(SvnAuth, cls).__new__(cls, *args, **kwargs)
        cls._instance = super(SvnAuth, cls).__new__(cls)
     return cls._instance
コード例 #23
0
ファイル: svnid.py プロジェクト: shalk/svn-manager
 def get_privilege(self):
     svn_logger.debug("get privilege for (%s)" % self.name)
     return self.privilege
コード例 #24
0
ファイル: svnid.py プロジェクト: shalk/svn-manager
 def del_privilege(self, dir):
     svn_logger.debug("add priv(%s) for (%s)" % (dir, self.name))
     del self.privilege[dir]
コード例 #25
0
ファイル: svngroup.py プロジェクト: shalk/svn-manager
 def del_id(self, id):
     svn_logger.debug("Group(%s) del id (%s)" % (self.name,id.name))
     if  self.has_id(id):
         self.idlist.remove(id)
コード例 #26
0
ファイル: svnid.py プロジェクト: shalk/svn-manager
 def set_pass(self, passwd):
     svn_logger.debug("set password for (%s)" % self.name)
     self.passwd = passwd
コード例 #27
0
ファイル: svngroup.py プロジェクト: shalk/svn-manager
 def del_id(self, id):
     svn_logger.debug("Group(%s) del id (%s)" % (self.name, id.name))
     if self.has_id(id):
         self.idlist.remove(id)
コード例 #28
0
ファイル: svnid.py プロジェクト: shalk/svn-manager
 def clear_privilege(self):
     svn_logger.debug("clear priv for (%s)" % (dir, self.name))
     self.privilege.clear()
コード例 #29
0
ファイル: svnid.py プロジェクト: shalk/svn-manager
 def set_pass(self, passwd):
     svn_logger.debug("set password for (%s)" % self.name)
     self.passwd = passwd
コード例 #30
0
ファイル: svnid.py プロジェクト: shalk/svn-manager
 def get_privilege(self):
     svn_logger.debug("get privilege for (%s)" % self.name)
     return self.privilege
コード例 #31
0
ファイル: svngroup.py プロジェクト: shalk/svn-manager
 def add_privilege(self, dir, mode='rw'):
     svn_logger.debug("Group(%s) add priv (%s) mode (%s)" %
                      (self.name, dir, mode))
     self.privilege[dir] = mode
コード例 #32
0
ファイル: svnid.py プロジェクト: shalk/svn-manager
 def get_pass(self, passwd):
     svn_logger.debug("get password for (%s)" % self.name)
     return self.passwd
コード例 #33
0
ファイル: svngroup.py プロジェクト: shalk/svn-manager
 def add_privilege(self,dir,mode='rw'):
     svn_logger.debug("Group(%s) add priv (%s) mode (%s)" % (self.name,dir,mode))
     self.privilege[dir] = mode
コード例 #34
0
ファイル: svnid.py プロジェクト: shalk/svn-manager
 def __init__(self, name, passwd=None):
     svn_logger.debug("id(%s) created" % name)
     self.name = name
     if passwd:
         self.passwd = passwd
     self.privilege = {}
コード例 #35
0
ファイル: svngroup.py プロジェクト: shalk/svn-manager
 def del_privilege(self,dir):
     svn_logger.debug("Group(%s) del priv (%s) " % (self.name,dir))
     if dir in self.privilege :
         del self.privilege[dir]
     else:
         svn_logger.warn("Group(%s) do not have privilege dir(%s)" % (self.name,dir))
コード例 #36
0
ファイル: svnid.py プロジェクト: shalk/svn-manager
 def get_pass(self, passwd):
     svn_logger.debug("get password for (%s)" % self.name)
     return self.passwd
コード例 #37
0
ファイル: svngroup.py プロジェクト: shalk/svn-manager
 def get_privilege(self,dir):
     svn_logger.debug("Group(%s) get priv (%s) " % (self.name,dir))
     return self.privilege
コード例 #38
0
ファイル: svnid.py プロジェクト: shalk/svn-manager
 def add_privilege(self, dir, mode='rw'):
     svn_logger.debug("add priv(%s) mode(%s) for (%s)" %
                      (dir, mode, self.name))
     self.privilege[dir] = mode
コード例 #39
0
ファイル: svngroup.py プロジェクト: shalk/svn-manager
 def add_id(self, id):
     svn_logger.debug("Group(%s) add id (%s)" % (self.name, id.name))
     if not self.has_id(id):
         self.idlist.append(id)
コード例 #40
0
ファイル: svnid.py プロジェクト: shalk/svn-manager
 def clear_privilege(self):
     svn_logger.debug("clear priv for (%s)" % (dir, self.name))
     self.privilege.clear()
コード例 #41
0
ファイル: svnid.py プロジェクト: shalk/svn-manager
 def add_privilege(self, dir, mode="rw"):
     svn_logger.debug("add priv(%s) mode(%s) for (%s)" % (dir, mode, self.name))
     self.privilege[dir] = mode
コード例 #42
0
ファイル: svngroup.py プロジェクト: shalk/svn-manager
 def add_id(self, id):
     svn_logger.debug("Group(%s) add id (%s)" % (self.name,id.name))
     if not self.has_id(id):
         self.idlist.append(id)
コード例 #43
0
ファイル: svnid.py プロジェクト: shalk/svn-manager
 def del_privilege(self, dir):
     svn_logger.debug("add priv(%s) for (%s)" % (dir, self.name))
     del self.privilege[dir]
コード例 #44
0
ファイル: svngroup.py プロジェクト: shalk/svn-manager
 def get_id_name_list(self):
     svn_logger.debug("Group(%s) get idlist  as  list()  " % self.name)
     id_name_list = []
     for id in self.idlist:
         id_name_list.append(id.name)
     return id_name_list
コード例 #45
0
ファイル: svnid.py プロジェクト: shalk/svn-manager
 def __init__(self, name, passwd=None):
     svn_logger.debug("id(%s) created" % name)
     self.name = name
     if passwd:
         self.passwd = passwd
     self.privilege = {}