Syslog日志服务器设计_第1页
Syslog日志服务器设计_第2页
Syslog日志服务器设计_第3页
Syslog日志服务器设计_第4页
Syslog日志服务器设计_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、自动化专业综合设计说明书课题名称:Syslog日志服务器设计学生学号:专业班级:学生姓名:学生成绩:指导教师:课题工作时间:至XXXX教务处制、课程设计的任务的基本要求:该课程设计主要的任务是编写一种可以被记录到不同的文件,还可以通过网络实现运行 syslog协议的机器之间的信息传递的叫做syslog协议的这么一个课题。Syslog已被许多日志函数 采纳,它用在许多保护措施中任何行为都可以通过syslog记录事件。通过SystemCall,记录用户自行开发的应用程序的运行状况。日志系统的重点之一便是要研究及开发一些系统程序,该课 题的设计过程要求先做好课题设计的大纲包括该课题应包括那些模块,要

2、实现哪些功能,代码要用 什么语言来写以及要用什么编译工具来编译运行该课题和运行的结果是什么样的,要用流程图把各 个模块的连接关系一一的列出来,设计者应该有敢于创新和勇于负责的精神,从投入施工的角度来 严肃对待自己的设计,使自己的设计能最大限度满足生产实际需要,既经济,又可靠。二、课题设计框图:指导教师签字:教研室主任签字:指导教师签字:年月日二、进度安排:第一周:指导教师讲解设计要求、规程、部分相关国家标准及有关技术规范、参考资料等事项。采用计算机辅助软件绘制工艺流程图结合设计题目熟悉代码流程。第二周:在熟悉代码流程的基础上,针对典型流程图进行代码分析。第三周:按代码功能模块的顺序画出代码流程

3、图。讲画好的代码框图与小组的其他成员讨论研究其缜密性和可行性,找出该流程的弊端和矛 盾之处,最终确定更好的代码顺序方案。第四周:按照流程图编写代码,并且在编写代码的过程中要每写一个模块就要编译一次避免不必要 的错误。最后撰写详细的设计文档并让指导老师审核。三、应收集资料及主要参考文献:中软国际LINUX系统程序设计谭浩强C程序设计(第三版)严蔚敏,吴伟民数据结构(C语言篇)张宇河,董宁计算机控制系统北京:北京理工大学出版社,2002谢希仁 计算机网络(第五版)刘兵,吴煜煌LINUX实用教程四、课程设计摘要(中文):Syslog是一种工业标准的协议,可用来记录设备的日志。在UNIX系统,路由器、

4、交换机等网 络设备中,系统日志(System Log)记录系统中任何时间发生的大小事件。管理者可以通过查看系 统记录,随时掌握系统状况。UNIX的系统日志是通过syslogd这个进程记录系统有关事件记录,也 可以记录应用程序运作事件。通过适当的配置,我们还可以实现运行syslog协议的机器间通信,通过分析这些网络行为日志,藉以追踪掌握与设备和网络有关的状况。从目前的情况来看,Syslog (系统日志)这一历史悠久的日志系统仍旧占据着最主流的地位。由于 与类UNIX平台之间的渊源,Syslog是在实际应用环境中最容易获得的日志系统。同时,还有很多 的基于Syslog的扩展产品存在,这其中也包括大

5、量基于UNIX平台构建内核的网络硬件设备,这些 设备往往都内置了 Syslog功能支持,例如Cisco路由器就是如此。六、成绩评定: 指导教师评语:指导教师签字:年 月 日项目评价项目评价调查论证工作量、工 作态度实践能力分析、解决 问题能力丿页量创新得分该课题是基于LINUX环境下的设计,它实现的功能是任意的一个进程都能调用syslog函数,并 且可以随意的将任何信息传送至文本文件中。该功能的实现和设计报告所写完全一致。当遇到编译错误是设计者是这样做的:首先分清每个模块的功能,然后将整个代码流程逐行检查, 并且在每个模块上加上一系列的打印信息,再次编译并观察代码运行到哪一行,然后在有问题的代

6、 码出处进行改正。设计者采用先做粗略的设计文档在进行代码编写,这样做的好处是保证了代码的缜密性和严谨性。答辩意见及答辩成绩答辩小组教师(签字): 年 月 日总评成绩:(教师评分X 75%+答辩成绩X 25%)目录 TOC o 1-5 h z HYPERLINK l bookmark6 o Current Document 摘要0 HYPERLINK l bookmark8 o Current Document 绪论1 HYPERLINK l bookmark10 o Current Document 1引言1 HYPERLINK l bookmark12 o Current Document

7、网络管理的原则和要求1 HYPERLINK l bookmark14 o Current Document 集中式网络管理的实现1 HYPERLINK l bookmark16 o Current Document 第一章Syslog协议2 HYPERLINK l bookmark18 o Current Document Syslog 简介2 HYPERLINK l bookmark20 o Current Document Syslog 协议2 HYPERLINK l bookmark22 o Current Document Syslog体系结构3 HYPERLINK l bookmar

8、k24 o Current Document Syslog 包格式3PRI3HEADER 部分5MSG 部分5 HYPERLINK l bookmark26 o Current Document 第二章Syslog酉己置6 HYPERLINK l bookmark28 o Current Document 2.1概览6 HYPERLINK l bookmark30 o Current Document 2.2选择符6 HYPERLINK l bookmark32 o Current Document 2.3动作7 HYPERLINK l bookmark34 o Current Documen

9、t C 语言中的syslog7closelog9 HYPERLINK l bookmark38 o Current Document 第三章功能模块的设计10 HYPERLINK l bookmark40 o Current Document 3.1功能框架图10 HYPERLINK l bookmark36 o Current Document 3.2程序流程图11 HYPERLINK l bookmark42 o Current Document 第四章代码介绍12 HYPERLINK l bookmark44 o Current Document 4.1编码步骤12 HYPERLINK

10、l bookmark46 o Current Document 4.2代码解析12main 函数的设计12syslog()函数的设计13server ()函数的设计16save _to_ file()函数的设计18 HYPERLINK l bookmark48 o Current Document 第五章课程总结20 HYPERLINK l bookmark50 o Current Document 参考文献20摘要Syslog是一种工业标准的协议,可用来记录设备的日志。在UNIX系统,路由器、交换机等 网络设备中,系统日志(SystemLog)记录系统中任何时间发生的大小事件。管理者可以通过

11、查 看系统记录,随时掌握系统状况。UNIX的系统日志是通过syslogd这个进程记录系统有关事件记 录,也可以记录应用程序运作事件。通过适当的配置,我们还可以实现运行syslog协议的机器 间通信,通过分析这些网络行为日志,藉以追踪掌握与设备和网络有关的状况。从目前的情况来看,Syslog (系统日志)这一历史悠久的日志系统仍旧占据着最主流的地位。 由于与类UNIX平台之间的渊源,Syslog是在实际应用环境中最容易获得的日志系统。同时, 还有很多的基于Syslog的扩展产品存在,这其中也包括大量基于UNIX平台构建内核的网络硬件 设备,这些设备往往都内置了 Syslog功能支持,例如Cisc

12、o路由器就是如此。关键词:Syslog, Syslogd, Priority (PRI), Facility. Severity. Header, Message (MSG), Timestamp绪论本文档规定了 syslog项目各模块的详细设计,函数设计,数据结构。用于在linux下进行 syslog的开发标准。引言电信运营商的网络庞大而复杂,其上运行着多种网络设备、主机系统以及业务应用。而且随 着电信业的不断发展,各种新业务的推出,不同的系统纷纷建立,网络的复杂性不断增长,使 得被管理的对象在系统中不是集中的而是分散的。分布式的管理必然要求网络管理员在网络的协 议层次结构上对系统管理做出重

13、新的认识,通过适当的策略实现集中式管理,实现事件的实时 监控和快速响应的网络管理。传统的网络管理员关心的问题不单是安装配置、备份恢复、系统安 全、性能优化等,还必须从0SI模型不同的层次重新考虑系统管理的内容和形式,再加上承载 业务的特点,侧重于事件监控和响应的建设是当今网络管理的主要方向。网络管理的原则和要求从技术的角度来说,网络管理有两条原则:1、由于管理信息而带来的通行量不应明显的增加网络的通信量。2、被管理设备上的协议代理不应明显得增加系统处理的额外开销,以致于该设备的主要功 能都被削弱。网络管理的对象主要是构成网络的硬件和软件应用所组成。这一类包括工作站、服 务器、网卡、路由器、网桥

14、和集线器等等。通常情况下这些设备都分散在不同的地方,另外由 于设备众多,要做到实时实地管理需要大量的人力和物力。有什么办法可以对网络设备进行远程 管理和状态进行预警呢?集中式网络管理的实现实际工作中,由于管理员不可能7X24小时监视着网络设备,网络运行中可能会发生很多突 发情况。因此,使用日志记录设备的报警信息十分重要,管理员可以借此对安全事件进行原因追 查和故障排除等工作。以路由器为例,一般都会设定内存保留Syslog。但路由器的内存(Buffer) 容量有限,大量事件发生时,会覆盖之前的记录,不利于实时预警和报告。而对UNIX系统来说, 由于管理设备的多样性和数量的缘故,一台台登录访问日志

15、效率低下也不现实。所以有必要建立 专门的日志服务器,通过Syslog服务,接收设备发送出的报警信息。第一章Syslog协议Syslog 简介Syslog是一种工业标准的协议,可用来记录设备的日志。在UNIX系统,路由器、交换机等 网络设备中,系统日志(SystemLog)记录系统中任何时间发生的大小事件。管理者可以通过查 看系统记录,随时掌握系统状况。在UNIX系统里,被syslog协议接受的事件可以被记录到不 同的文件,还可以通过网络实现运行syslog协议的机器之间的信息传递。Syslog已被许多日志函数采纳,它用在许多保护措施中任何行为都可以通过syslog记录事件。通过System C

16、all,记录用户自行开发的应用程序的运行状况。日志系统的重点之一便是要 研究及开发一些系统程序,例如logger等,将网络应用程序重要的行为向syslog接口呼叫并记 录为日志,大部分内部系统工具如邮件和打印系统都是如此生成信息的,许多新增的程序如 Tcpwrappers和SSH也是如此工 作的。通过syslogd (负责大部分系统事件的daemon),系统事 件可以写到一个文件或设备中,或给用户发送一个信息。它能记录本地事件或通过网络记录远 端设备上的事件。Nel WC*rit App 1nt iortwsyslogdsyslogdSyslog 协议syslog使用UDP协议作为它的传输层协

17、议,其默认使用UDP端口 514。Syslog协议提供了一个传递方式,允许一个设备通过网络把事件信息传递给事件信息接受者 (也称之为日志服务器)。由于每个进程、应用程序和操作系统都 或多或少地被独立完成,在 syslog信息内容会有一些不一致的地方。因此,协议中并没有任何关于信息的格式或内容的假设。 这个协议就是简单地被设计用来传送事件信息,但是事件已经被接受到不会被通知。Syslog协 议和进程最基本原则就是简单,在协议的发送者和接受者之间不要求有严格的相互协调。事实 上, syslog信息的传递可以在接受器没有被配置甚至没有接受器的情况下开始。反过来,在没 有被清晰配置或者定义的情况下,接

18、收器也可以接收到信息。几乎所有的网络设备都可以通过syslog protocol将日志信息以UDP方式传送到远端服务器, 远端接收日志服务器必须通过syslogd来监听UDP Port 514,并且据syslog.conf中的配置来处 理本机和接收访问系统的日志信息,把指定的事件写入特定档案中,供后台数据库管理和响应之 用。也就是说可以让任何所产生的事件都登录到一台或多台服务器上,以便后台数据库。Syslog体系结构syslog模糊了发送方、接收方,设备、中继以及收集器的区别,一台设备可以同时是某种日 志信息的中继、也可以是另外某种信息的收集器,同时可以作为发送者发送日志:发送方发送日志信息至

19、某个主机,并不知道这台主机会如何处理这些日志。发送方可以通过配置,把同一条日志同时发送给多个接收者。中继可以发送所有或者部分信息给后序接收者,这种情况下它不完全是中继,也是一个 收集信息者。中继可以产生自己的日志信息发送给后序接收者,这种情况下它也是一个产生信息的设 备。图2日志分析系统架构图Syslog包格式Syslog包分为3个部分,PRI, HEADER,以及MSG,总长度不能超过1024个字节。PRIPRI是priority的缩写,它代表了 facility以及severity,即代表消息来源以及消息的严 重程度。它必须是1、2或者3个十进制字符,用括起后组成的串,它是由facilit

20、y 以及severity构成,组成的方法是把facility的值乘以8,再加上severity的值。如facility 取值 local4(20), severiry 为 warning(4),那么 pri 的值为164。Facility的取值如下表所示:Numerical Code0Numerical Code012345678messages generated internally by syslogd line printer subsystem network news subsystemUUCP subsystem9clock daemon10security/authorizat

21、ic11FTP daemon12NTP subsystem13log audit14log alert15clock daemon (note 2)16local use 0 (localO)17local use 1 (local1)18local use 2 (local2)19local use 3 (local3)20local use 4 (local4)21local use 5 (local5)22local use 6 (local6)23local use 7 (local7)messages严重等级分为:Numerical CodeSeverity0Emergency: s

22、ystem is unusable1Alert: action must be taken immediately2Critical: critical conditions3Error: error conditions4Warning: warning conditions5Notice: normal but significant condition6Informational: informational messages7Debug: debug-level messagesHEADER 部分HEADER部分包含一个时间戳以及发送方的主机名或者ip地址,并且HEADER部分必须是一

23、些 可打印字符。时间戳部分是格式为” Mmm dd hh:mm:ss”的本地时间,其中Mmm是3个字母的英文缩写, 如果日期小于10,必须用空格代替缺少的一个数字。主机名部分一半使用主机名,如果没有的话可以使用IPv4或者IPv6的地址。需要注意的是 主机名中不能包含任何空格。时间戳和主机名后面都各自跟一个空格。MSG 部分消息体部分一般包含生成消息的进程信息(TAG field)以及消息正文(CONTENT field)。TAG 部分主要是包含生成消息的进程信息,不能超过32个字符。消息体必须是一些可见字符,这部 分就是消息的正文。TAG与CONTENT之间的间隔用非字母表字母隔开,一般用”

24、“,”:”或者空 格隔开。第二章Syslog配置21概览Syslog的全局配置文件一般存储在/etc/目录下,名为syslog.conf,由它指定syslogd程 序对日志信息的处理。配置文件由一系列的规则组成,一般每行一个规则,也可以使用反斜杠“”来续行。配置文件中每个规则都是由两部分组成,分别叫做选择符以及其对应的动作。选择符就是指 上文介绍过的priority,包括facility以及severity,动作指匹配成功的话应执行的动作,如 把日志写入管道,写入文件,或者再转发至另一台主机。2.2选择符选择符包括两部分,facility以及severity,两部分以一个点号” ”分割。这两个

25、部分都 大小写无关,并且可以使用上文中定义的数字来代替字符。Facility部分可以使用下列关键字:auth, authpriv, cron, daemon, ftp, kern, lpr, mail, mark, news, security (same as auth), syslog, user, uucp and localO 到 local7,或者使 用其对应的数字。Severity 部分可以使用下列关键字:debug, info, notice, warning, warn (等同于 warning), err, error(同 err), crit, alert, emerg,

26、panic (同 emerg)。最初的BSD syslogd程序中,程序会把等于或者高于指定severity等级的日志按照指定动 作来执行,现在syslogd程序中还包括一些有用的扩展:“*”号,可以代表任何facility或者severity,根据在” ”之前或之后判断。“,”号,可以分割facility,这样可以把几个facility可以合并。但是severity不 能这样合并。“;”号,可以指定多个选择符,后面跟一个动作。处理得顺序是按照从前向后的顺序 匹配选择符,并且后面的选择符可以覆盖前面的。因此可以使用这种特性来排除一些特 殊的等级。“二”号,可以加在severity前面,表示准备

27、匹配。“!”号,表示忽略这种severi ty或者更高等级,也可以与”=”号一起用。23动作动作表示收到匹配的日志信息以后的处理动作,主要有写入文件,命名管道,终端,写入远 程,提醒当前某些用户。写入普通文件。后面加入日志文件的绝对路径即可。也可以添加“-”号来表示不立即 写入。女口: *.=crit;kern.none/var/adm/critical命名管道。通过加上” |”即可把日志写入命名管道。女口: mail,news.二info| /tmp/message.fifo终端。只要动作中指定的文件是一个tty文件即可。女口: mail.二info/dev/ttyl2远端机器。添加” ”符

28、号,加上远端主机名/ip地址即可。syslog需要-h参数启动才 会转发远端而来的消息。女口: kern.critfinlandia用户。直接在动作之中写入用户列表的名字即可。以逗号分割各个用户。女口: *.alertroot,joey所有已登陆用户。在动作中直接“*”号,表示把信息直接显示到已登陆用户的终端上。女口: *.=emerg*C语言中的syslogGNU C库中包含了写syslog的一些库函数,使用这些函数可以方便的对syslog进行写操作。 Glibc中主要包含以下syslog相关函数:openlog:打开连接syslog; vsyslog:写 syslogcloselog:关闭

29、连接set logmask:置标志,可以实现忽略某些消息openlogopenlog函数在syslog.h中被声明,其原型如下:void openlog (const char *ident, int option, int facility);openlog不是必须被调用的,但是可以方便syslog的使用。indent表示一串字符串,以后调用syslog写日志时这个字符串都会被自动添加到正文之前, 一般用来表示当前程序的名字。如果indent为NULL,或者openlog没有被调用过,那么默认的 名字是当前进程名。option是一个位串,有以下掩码构成:L0G_PERR0R:记录至syslo

30、g的同时写到标准错误输出。默认不写入标准错误输出。 L0G_C0NS:如果写入Syslog失败时写入控制台,默认不写入控制台。LOG_PID:是否把进程ID也加入到信息中去。LOG_NDELAY:打开的话,openlog会打开连接,否则syslog调用时才连接。L0G_0DELAY:无意义,为兼容旧版本。facility是此连接的默认的facility,参见上文facility相关内容。默认是LOG_USER。syslog就是记录日志的主函数,它通过写socket /dev/log(syslogd进程一直在监听此socket文件)实现写日志,其原型如下:void syslog (int fac

31、ility_priority, char *format,.)facility_priority参数就是facility和severity的集合,可以使用LOG_MAKEPRI宏来生 成此参数:LOG_MAKEPRI(LOG_USER, LOG_WARNING)也可以直接使用syslog.h中定义的宏把facility与severity连接起来即可。如: syslog(LOG_WARN|LOG_LOCALl, “message” );其中LOG_LOCAL1宏的定义为(173)。对应我们上文介绍的facility,#defineLOG KERN#defineLOG USER#defineLOG

32、 MAIL#defineLOG DAEMON#defineLOG AUTH#defineLOG SYSLOG#defineLOG LPR#defineLOG NEWS#defineLOG UUCP#defineLOG CRON#defineLOG AUTHPRIV有以下宏定义:(03)(13)(23)对应我们上文介绍的facility,#defineLOG KERN#defineLOG USER#defineLOG MAIL#defineLOG DAEMON#defineLOG AUTH#defineLOG SYSLOG#defineLOG LPR#defineLOG NEWS#defineL

33、OG UUCP#defineLOG CRON#defineLOG AUTHPRIV有以下宏定义:(03)(13)(23)(33)(43)(53)(63)(73)(83)(93)(103)(113)/* kernel messages */* random user-level messages */* mail system */* system daemons */* security/authorization messages */* messages generated internally by syslogd */* line printer subsystem */* netwo

34、rk news subsystem */* UUCP subsystem */*/*/*clock daemon */security/authorization messages (private) */ ftp daemon */#define LOG_LOCAL0(163)/* reserved forlocal use */#defineLOG_LOCAL1(173)/*reservedforlocaluse*/#defineLOG_LOCAL2(183)/*reservedforlocaluse*/#defineLOG_LOCAL3(193)/*reservedforlocaluse

35、*/#defineLOG_LOCAL4(203)/*reservedforlocaluse*/#defineLOG_LOCAL5(213)/*reservedforlocaluse*/#defineLOG_LOCAL6(223)/*reservedforlocaluse*/#defineLOG_LOCAL7(233)/*reservedforlocaluse*/#defineLOG FTP对应严重等级的宏有:LOG EMERGLOG ALERTLOG CRITLOG ERRLOG_WARNINGLOG_NOTICELOG_INFOLOG_DEBUG后面的参数部分是一个可变长参数,使用方法和常用

36、的printf相同。 closelogcloselog函数会关闭当前连接,如果有连接打开的话。函数原型为: void closelog (void);setlogmaskset logmask函数可以使后面调用syslog时忽略某些等级,与syslog.conf中配置的不同, 如果被set logmask函数忽略掉的日志,永远不会被发送至syslog。它的原型为:int setlogmask (int mask);其中mask是一个位串,其中每位表示一个等级,如果此位为1,那么syslog正常处理;如果为 0,则忽略掉此信息。通过宏LOG_MASK可以方便的表示可以忽略掉那些等级,如:LOG_

37、MASK(LOG_EMERG) | LOG_MASK(LOG_ERROR)表示忽略EMERG和ERRORo或者使用,如:(LOG_MASK(LOG_INFO)表示忽略INFO以外的等级。也可以使用宏LOG_UPTO,表示某等级或者此等级以上。第三章功能模块的设计3.1功能框架图错误!未指定书签。错误!未指定书签。主框架示意图主框架示意图错误!未找到引用源。Syslog主进程3.2程序流程图错误!未找到引用源。文件操作流程图错误!未找到引用源。文件操作流程图错误!未找到引用源。syslog ()接口第四章代码介绍4.1编码步骤(1)发送消息 /创建消息队列 读取标准输入 封装消息发送消息/循环(

38、输入,封装,发送)/关闭队列关闭程序(2)接收消息创建消息队列打开文件读取消息队列解析消息写入文件打印到终端循环(读取,解析,写入,打印)关闭文件关闭消息队列关闭程序42代码解析4.2.1 main函数的设计【功能】此文件是一段试运行代码,是主函数main调用syslog函数的程序,程序中的相关信息放进 syslog机构体里。test.c TOC o 1-5 h z #includestdio.h#include dlfcn.h#define uint8_t unsigned char#define uint32_t unsigned int#define uintl6_t unsigned

39、intint syslog(int mod_id,uint8_t *file_name,uint8_t *func_name,uint32_t line,const char *info,.);int main()syslog(l,ll,ll,10,%s,hahahahahhahahahhah);4.2.2 syslog ()函数的设计【功能】提供外部调用,外部程序可以调用此函数想syslog主进程发送消息。创建和初始化一个消 息队列qid,以及参数的解析并且把消息发送至消息队列。syslog.c TOC o 1-5 h z #include stdio.h#include sys/shm.h

40、#includeti me.h#include stdlib.h#include unis td.h#include string.h#includefentl .h#include stdlib.h#include #include sys/ipc.h#include sys/msg.h #include #includesys/ipc.h #includesys/msg.h #includesys/stat .h TOC o 1-5 h z #define PR0J_ID32#define PATH_NAME/tmp#define SERVER_MSG1#define MAX_LOG_LE

41、N512#define FILESIZE 1024#define uint8_t unsigned char#define uint32_t unsigned char#define uint16_t unsigned charvoid save_to_flie();typedef structlong msgtype; char pMsgMAX_LOG_LEN; SYSL0G_READ_L0G_t;SYSL0G_READ_L0G_t msg;int main(void)int qid;key_t msgkey;辻(msgkey = ftok(PATH_NAME, PR0J_ID) = -1)

42、perror(ftok error!n); exit(l);f (qid = msgget(msgkey, IPC_CREAT | 0660) = -1)perror(msgget error!n); exit(l);while(l)/*receive message from message queue with CLIENT_MSG type */ if (msgrcv(qid, &msg,MAX_LOG_LEN, SERVER_MSG, 0) = -1) perror(Server msgrcv error!n); exit(l);printf (Client: %sn, msg.pMs

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论