修改Viewvc代码使只读权限的用户只能查看log

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介:

弄了近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哈哈~






本文转自 xkdcc 51CTO博客,原文链接:http://blog.51cto.com/brantc/213780,如需转载请自行联系原作者

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
5月前
|
SQL 存储 监控
|
6月前
|
Java
使用Java代码打印log日志
使用Java代码打印log日志
312 1
|
6月前
|
C++ 开发者 Python
实现Python日志点击跳转到代码位置的方法
本文介绍了如何在Python日志中实现点击跳转到代码位置的功能,以提升调试效率。通过结合`logging`模块的`findCaller()`方法记录代码位置信息,并使用支持点击跳转的日志查看工具(如VS Code、PyCharm),开发者可以从日志直接点击链接定位到出错代码,加快问题排查。
99 2
08-06-06>pe_xscan 精简log分析代码 速度提升一倍
08-06-06>pe_xscan 精简log分析代码 速度提升一倍
|
2月前
|
SQL 安全 数据库
基于SQL Server事务日志的数据库恢复技术及实战代码详解
基于事务日志的数据库恢复技术是SQL Server中一个非常强大的功能,它能够帮助数据库管理员在数据丢失或损坏的情况下,有效地恢复数据。通过定期备份数据库和事务日志,并在需要时按照正确的步骤恢复,可以最大限度地减少数据丢失的风险。需要注意的是,恢复数据是一个需要谨慎操作的过程,建议在执行恢复操作之前,详细了解相关的操作步骤和注意事项,以确保数据的安全和完整。
104 0
|
3月前
|
消息中间件 Kubernetes Kafka
微服务从代码到k8s部署应有尽有系列(十一、日志收集)
微服务从代码到k8s部署应有尽有系列(十一、日志收集)
|
3月前
分享一份 .NET Core 简单的自带日志系统配置,平时做一些测试或个人代码研究,用它就可以了
分享一份 .NET Core 简单的自带日志系统配置,平时做一些测试或个人代码研究,用它就可以了
|
4月前
|
Unix Python
Python代码示例:使用`syslog`模块进行日志记录
Python代码示例:使用`syslog`模块进行日志记录
|
6月前
|
机器学习/深度学习 自然语言处理 数据可视化
基于CIFAR数据集 进行 MAE实现及预训练可视化 (CIFAR for MAE,代码权重日志全部开源,自取)
基于CIFAR数据集 进行 MAE实现及预训练可视化 (CIFAR for MAE,代码权重日志全部开源,自取)
|
5月前
|
安全 Java 编译器
写个代码扫描插件,再也不怕 log4j 等问题
写个代码扫描插件,再也不怕 log4j 等问题
34 0