修改Viewvc程式碼使只讀許可權的使用者只能檢視log

firefule發表於2021-09-09


弄了近3天(這個週末是totally進去咯),總算把viewvc修改成只讀許可權(這裡說的只讀許可權是指svnauthz中配置為只讀許可權)的使用者只能檢視log了 O(∩_∩)O哈哈~

太累了,先發貼佔個位子,等幾天把程式碼及修改的詳細地方貼出來~~

O(∩_∩)O哈哈~

主要是在viewvc.py中增加兩個viewvc現成的函式_process_access_section(self,  cp,  section)

_userspec_matches_user(self,  userspec):

然後在class Request:

  def __init__(self, server, cfg):

函式中,在獲得了USERNAME後面,加上下面的語句:

(說起這幾句話簡單,就是把diff,annotate,markup 三種view從cfg中去掉,不曉得我看了好久的程式碼才找到是該在這個位置裡新增!沁透了我的汗水啊~~~~兄弟們,給我頂~~~(^ω^)):

#Brant

        logging.basicConfig(level=logging.DEBUG,

                                        format='%(asctime)s %(levelname)s %(message)s',

                                        filename='D:/Viewvc.Request.log',

                                        filemode='w')

        logging.debug('A debug message1')        

            

        cp1 = ConfigParser()

        cp1.read(self.cfg.conf_path) # Read viewvc.conf

        

        svnauthzfile = cp1.get("authz-svnauthz", "authzfile") # get svnauthzfile frmo viewvc.conf

        cp = ConfigParser()

        cp.read(svnauthzfile) # Read svnauthzfile

        root_sections = []

        no_diff_annonate_markup_view = 0

        

        logging.debug('below:cp.sections')        

        logging.debug(cp.sections())        

        for section in cp.sections():                

                logging.debug('A debug message5')

            # Skip the "groups" section -- we handled that already.

                if section == 'groups':

                        continue

            

                if section == 'aliases':

                        continue

                no_diff_annonate_markup_view = _process_access_section(self,    cp,    section)

                logging.debug('after1 cp.sections[%s] haha:%d',    section,    no_diff_annonate_markup_view)

        

        logging.debug('ooo view_result:%d',    no_diff_annonate_markup_view)

        logging.debug(self.cfg.options.allowed_views)

        if no_diff_annonate_markup_view == 1:

                if 'diff' in self.cfg.options.allowed_views:

                        self.cfg.options.allowed_views.remove('diff');

                if 'markup' in self.cfg.options.allowed_views:

                        self.cfg.options.allowed_views.remove('markup');

                if 'annotate' in self.cfg.options.allowed_views:

                        self.cfg.options.allowed_views.remove('annotate');

                        

                if 'diff' in cfg.options.allowed_views:

                        cfg.options.allowed_views.remove('diff');

                if 'markup' in cfg.options.allowed_views:

                        cfg.options.allowed_views.remove('markup');

                if 'annotate' in cfg.options.allowed_views:

                        cfg.options.allowed_views.remove('annotate');

其他的工作就是修改下viewcv的模板。等幾天再寫吧,O(∩_∩)O哈哈~

PS幾句:

偶從來沒想過會用python這個後起新秀,更別說學習它了!更別說修改一個用它寫的開源工具了!

可是這週末沒想到鬼使神差地硬把Viewvc按照我的需求給改了!

我都覺得我瘋了~~

不過看到自己成果後,還是爽翻了O(∩_∩)O哈哈~

©著作權歸作者所有:來自51CTO部落格作者xkdcc的原創作品,如需轉載,請註明出處,否則將追究法律責任


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/1834/viewspace-2820392/,如需轉載,請註明出處,否則將追究法律責任。

相關文章