CN113467725A - Linux平台图形应用程序的输出管理方法、系统、设备及介质 - Google Patents
Linux平台图形应用程序的输出管理方法、系统、设备及介质 Download PDFInfo
- Publication number
- CN113467725A CN113467725A CN202110669208.2A CN202110669208A CN113467725A CN 113467725 A CN113467725 A CN 113467725A CN 202110669208 A CN202110669208 A CN 202110669208A CN 113467725 A CN113467725 A CN 113467725A
- Authority
- CN
- China
- Prior art keywords
- printing
- event
- file
- save
- application program
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/12—Digital output to print unit, e.g. line printer, chain printer
- G06F3/1201—Dedicated interfaces to print systems
- G06F3/1202—Dedicated interfaces to print systems specifically adapted to achieve a particular effect
- G06F3/1222—Increasing security of the print job
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/14—Details of searching files based on file metadata
- G06F16/148—File search processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/16—File or folder operations, e.g. details of user interfaces specifically adapted to file systems
- G06F16/164—File meta data generation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/16—File or folder operations, e.g. details of user interfaces specifically adapted to file systems
- G06F16/168—Details of user interfaces specifically adapted to file systems, e.g. browsing and visualisation, 2d or 3d GUIs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/12—Digital output to print unit, e.g. line printer, chain printer
- G06F3/1201—Dedicated interfaces to print systems
- G06F3/1202—Dedicated interfaces to print systems specifically adapted to achieve a particular effect
- G06F3/1211—Improving printing performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/12—Digital output to print unit, e.g. line printer, chain printer
- G06F3/1201—Dedicated interfaces to print systems
- G06F3/1223—Dedicated interfaces to print systems specifically adapted to use a particular technique
- G06F3/1237—Print job management
- G06F3/1238—Secure printing, e.g. user identification, user rights for device usage, unallowed content, blanking portions or fields of a page, releasing held jobs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/12—Digital output to print unit, e.g. line printer, chain printer
- G06F3/1201—Dedicated interfaces to print systems
- G06F3/1223—Dedicated interfaces to print systems specifically adapted to use a particular technique
- G06F3/1237—Print job management
- G06F3/1253—Configuration of print job parameters, e.g. using UI at the client
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Library & Information Science (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
Abstract
本发明提出了一种Linux平台图形应用程序的输出管理方法、系统、设备及介质,根据对应用程序触发事件的判断,进入打印进程或另存为进程。进入另存为进程,判断是否为“二次另存为”事件,若是则向文件名查询服务发出二次打印请求,否则根据用户权限动态调整“另存为”对话框输出方式选项,显示“另存为”对话框,等待用户执行文件另存为操作。进入打印进程,发送打印任务至CPUS打印过滤器并查询状态控制表,根据当前打印任务记录查询结果,执行文件打印输出或向文件名查询服务发送文件名查询请求,执行文件名查找任务,以正确获取当前打印内容的原始文件全路径名。提供了基于文件主体进行信息安全管控的关键解决手段及应用程序统一的文档输出管理方法。
Description
技术领域
本发明涉及信息安全领域,尤其涉及一种Linux平台图形应用程序的输出管理方法、系统、设备及介质。
背景技术
随着操作系统的发展,Linux操作系统以其源代码开放、高可靠性、高安全性等特点,已经占领了全球服务器的操作系统市场。在移动通信、嵌入式领域,如手机、pad、车载电子等市场广泛流行的Andriod操作系统,也是运行在Linux操作系统之上。在桌面环境下,优秀的国产化操作系统如:深度操作系统、优麒麟、中标麒麟、统信UOS、银河麒麟、红旗Linux等等,也都是基于Linux操作系统的发行版本。
国产化操作系统中集成了诸多图形界面应用程序工具软件和办公软件,例如:金山WPS、福昕PDF、gedit、geany等,更多的应用程序正在开发或从Windows系统中移植过来。诸多的软件都具有打印输出功能。打印输出功能是最为常见的媒体介质转换手段,主要将电子信息转换为纸介质输出,提供人类直观的视觉呈现。打印是信息输出的通道,也是信息安全管理的关键环节。
Linux操作系统作为一种类Unix系统,早期的内容输出是围绕着PostScript(以下简称PS)页面描述语言展开的。该语言是由Adobe Systems公司开发的,它是一个成熟的、用于描述一个文档每一页面内容的程序语言。由于PS晦涩难懂,且有很多功能并不常用,现在的应用程序打印功能更多采用PDF(Portable Document Format的简称,意为“便携式文档格式”)格式输出。PDF是用于与应用程序、操作系统、硬件无关的方式进行文件交换所发展出的文件格式。PDF以PS语言图象模型为基础,无论在哪种打印机上都可保证精确的颜色和准确的打印效果,即PDF会忠实地再现原稿的每一个字符、颜色以及图象。PDF与操作系统平台无关,不管是在Windows,Unix还是在苹果公司的Mac OS操作系统中都是通用的。这一特点使它成为在Internet上进行电子文档发行和数字化信息传播的理想文档格式。越来越多的电子图书、产品说明、公司文告、网络资料、电子邮件在开始使用PDF格式文件。
Linux操作系统的打印系统是一个假脱机服务(Spooler)。它可以管理打印任务队列(Job queue),而一个队列通常和一个打印机相关联,并且用户提交的任务都是按照先进先出的原则来处理的。现在,Linux发行版本中最为常用的假脱机服务是CUPS(Common UNIXPrinting System,通用Unix打印系统)。CUPS使用的是IPP(网络打印协议)标准,这是从HTTP中衍生出来的IETF协议。CUPS也支持其它可以和打印机进行通信的流行协议,因此也可以将其作为一个连接不支持IPP协议打印机的一个桥梁。这就使得CUPS同时支持连接本地打印机和网络打印机。IPP可以通过使用认证和SSL连接来加强网络传输安全性。
一般情况下,PS/PDF数据会先在主机中翻译成打印机本地的页面描述语言再输出给真实的打印机。这是翻译功能由CUPS系统的转换过滤器(Filter)来完成。一个过滤器实际上就是一个特殊的程序,它可以处理输入的数据,并且输出经过加工的数据。Linux CUPS中使用着各种不同的过滤器,包括:转换过滤器、I/O过程器(负责将数据传送至设备)、处理过滤器(转换文档数据)等。过滤器支持级联工作,一个过滤器的输出能够作为下一个过滤器的输入。一个打印任务中的数据在送达打印机前可能会通过多个过滤器。
在信息安全领域,打印控制系统是必备的安全组件,是系统输出控制的关键环节。在Linux操作系统下,利用定制CUPS打印过滤器,能够截获全部待打印的内容(注意:此内容并不是原始文件内容,是经过上层应用程序转换后的结果)。然后在过滤器中根据安全策略来做安全控制,包括:打印输出控制、打印设备选择(高密、低密打印机分流输出)、水印或签章添加、打印预览、特殊内容修改及安全审核审计等动作。
使用CUPS打印过滤器可以很好地完成各种打印控制工作,但安全管理是以原始文件作为主体进行管理的,必须按照原始文件全路径来进行确定安全责任归属。这就要求在CUPS打印过滤器中必须要知道当前打印内容的文档来源,也就是必须要获得当前打印的文件的全路径名。
CUPS作为一个假脱机服务,它接受所有符合IPP协议的打印任务,并不强制要求打印任务参数中必须包含当前打印的文件全路径名称。目前,有些图形用户界面程序在打印任务中会携带原始文件名称,而且不是全路径名,更多的应用程序,如金山WPS、永中office、福昕、gedit、geany、gvim等等,它们在打印任务只会包含任务标题,而标题并不是实际的文件名,在多标签编辑模式下,这种情况更为严重。此外,如金山WPS之类的软件对编辑的原始文件,在其打开后会先拷贝内容,然后创建临时文件或做内存映射mmap,随即关闭原始文件,编辑窗口显示的内容来自临时文件或内存缓存。此外,应用程序输给CUPS的内容已被转换为PS或PDF格式,并不是原始文件内容,从内容中提取原始文件名的方法并不可行。
通过监控上层应用程序对文件系统的访问事件,来获取打印文件名的方法并不可行,因为文件系统事件非常多,且应用程序会存在对原始文件和临时文件执行打开、关闭、内存映射等系列操作,操作之间缺乏上下文关联关系。
钩挂应用程序的打印操作是获取文件名的一种可行途径,但需要针对应用程序进行具体研究,并不通用,且分析和开发应用钩子难度大,推广困难。
图形用户界面程序的“打印”功能仅能将文件输出到打印机或文件中,输出的途径相对单一。若用户需要将文档输出到光盘刻录机、电子传真机、“三合一系统”、网盘等其它输出载体上,就必须先保存文档,然后再打开对应的应用软件,再将文档输出。尤其是需要将文件连续输出到第三方系统的业务场景下,操作更为繁琐。一定程度上阻碍了国产化操作系统的应用推广。此外,由于图形用户界面程序多种多样,单独为某个应用程序增加统一输出的功能,会增大软件开发成本和维护成本,不符合集约化管理的指导思路。
总结,国产化操作系统下,当前还没有一个普遍适用的方法,能够在打印过程中准确获得原始文件的全路径名。同时,图形用户界面程序也缺乏统一的输出入口,存在文档输出方式单一、输出操作繁琐的问题。
发明内容
有鉴于此,本发明提出了一种Linux平台图形应用程序的输出管理方法,有效解决了当前业务办公和信息安全管理所打印输出主体难以确定、输出方式单一的问题。
本发明的技术方案是这样实现的:
S1,应用程序根据事件监听结果触发“打印”事件或“另存为”事件,若触发“打印”事件,则进入打印事件进程,向CUPS打印过滤器发出打印任务,继续执行步骤S2;若触发“另存为”事件,则进入另存为事件进程;设置状态控制表,用以标记“打印”事件和“另存为”事件的状态;
S2,CUPS打印过滤器接收打印任务,查询状态控制表,若未查找到当前打印任务的记录,则更新状态控制表,向文件查询服务发送文件名查询请求,通知其执行文件名查找,文件名查询服务等待“二次打印”事件被触发,继续执行步骤S3;
S3,文件查询服务接收文件名查询请求,执行文件名查找任务,若未找到则向活动窗口发送“另存为”键盘事件,继续执行步骤S4;
S4,“另存为”键盘事件触发应用程序执行文件另存过程,此为“二次另存为”事件,运行于应用程序内的HOOK API将查询状态控制表判断是否为“二次另存为”事件,继续执行步骤S5;
S5,所述HOOK API库实现对libgtk2/libgtk3中与文件“另存为”相关的API函数的钩挂,若判断为“二次另存为”事件,则通过“另存为”对象得到原始文件全路径名,并更新到状态控制表中,向文件名查询服务发送“二次打印”请求,继续执行步骤S6;
S6,文件名查询服务接收“二次打印”请求,向应用程序发送“打印”键盘事件,进入打印事件进程,此时查找到当前打印任务记录以及原始文件全路径名,继续执行步骤S7;
S7,进行打印文件输出。
通过上述方法,获取了原始文件全路径名,并且完成了文件输出操作。
其中,HOOK API库实现对libgtk2/libgtk3中与文件“另存为”相关的API函数的钩挂,包括“另存为”对话框的创建函数、初始化函数、对话框显示函数、数据代理函数。当应用程序的“另存为”事件被触发(触发条件可能是用户点击“另存为”菜单项或者是点击“另存为”按钮,或者是按下“另存为”快捷键)。HOOK API在“另存为”选择框显示前被钩住。
在以上技术方案的基础上,优选的,步骤S1具体包括:S1-1,若进入打印事件进程,则进入假脱机打印后台,将打印任务参数表以及打印任务发送给CUPS打印过滤器;S1-2,若进入另存为事件进程,则HOOK API将查询状态控制表判断是否为“二次另存为”事件。
对事件类型进行判断以确定接下来将要进行的操作。
在以上技术方案的基础上,优选的,步骤S2具体包括:S2-1,CUPS打印过滤器接收打印任务,并更新打印任务参数表,查询状态控制表,根据查询结果,选择执行步骤S2-2或者步骤S2-3;S2-2,若未查找到当前打印任务的记录,则添加状态控制项,并更新状态控制表,向文件查询服务发送文件名查询请求;S2-3,若查找到当前打印任务的记录,则执行步骤S7。
实时更新任务参数表以及状态控制表,记录任务参数以及打印任务状态,以便后续步骤执行。
在以上技术方案的基础上,优选的,步骤S3具体包括:S3-1,文件查询服务接收文件名查询请求,执行文件名查找任务,根据查找结果,选择执行步骤S3-2或者步骤S3-3;S3-2,若找到,则根据用户权限配置文件检查全路径名是否合理,并更新控制表;S3-3,若未找到,则根据当前桌面顶层应用活动窗口标题查找文件名,继续执行步骤S3-4;S3-4,若仍未找到,则给活动窗口发送“另存为”键盘事件,触发应用程序执行文件另存过程,此为“二次另存为”事件,将执行步骤S5。
在以上技术方案的基础上,优选的,步骤S6具体包括:S6-1,文件名查询服务接收“二次打印”请求,向活动窗口发送“打印”键盘事件;S6-2,“打印”键盘事件触发应用程序的“打印”事件,进入打印事件进程,应用程序向CUPS打印过滤器发出打印任务;S6-3,CUPS打印过滤器接收打印任务,并记录进打印任务参数表,查询状态控制表,此时查找到当前打印任务的记录,并获得原始文件全路径名,继续执行步骤S7。
文件名查询服务给活动窗口发送“打印”键盘事件,触发CUPS打印过滤器“二次打印”事件,由于第一次打印被CUPS打印过滤器隐式忽略,不会弹出打印控制对话框,用户实际不会感知到二次打印的存在。
在以上技术方案的基础上,优选的,步骤S7具体包括:S7-1,CUPS打印过滤器获得原始文件全路径名,根据用户权限配置文件查询用户输出权限,并根据用户输出权限动态修改“打印控制”对话框的输出方式选项,设置好对应的执行函数,继续执行步骤S7-2;S7-2,根据用户信息及全路径文件名信息检查打印管控检查,判断是否通过管控检查,根据判断结果,选择执行步骤S7-3或S7-4;S7-3,若通过管控检查,正常显示打印对话框,根据用户在对话框内选择输出的输出途径,对文件进行相应输出;S7-4,若未通过管控检查,则忽略此打印事件,拒绝应用程序打印输出。
对文件输出进行管控检查,增强文件输出过程安全性。
在以上技术方案的基础上,优选的,步骤S1-2具体包括如下分步骤:S1-2-1,HOOKAPI将查询状态控制表判断是否为“二次另存为”事件,根据判断结果选择执行步骤S1-2-2或者步骤S1-2-3。S1-2-2,若HOOK API判断为“二次另存为”事件,则通过“另存为”对象得到原始文件全路径名,更新到状态控制表中,向文件名查询服务发送“二次打印”请求,执行步骤S6;S1-2-3,若HOOK API判断不为“二次另存为”事件,则执行正常“另存为”事件文件输出,继续执行步骤S1-2-4;S1-2-4,根据用户权限配置文件查询用户输出权限,根据用户权限给“另存为”对话框修改相应输出选择功能项,显示已经动态修改后的“另存为”对话框,继续执行步骤S1-2-5;S1-2-5,根据用户在对话框内选择输出的输出途径,对文件进行相应输出。
简化文件输出操作流程,统一输出方式。
根据用户权限,在打印控制对话框中提供“输出方式”选项,例如添加“输出到光盘”、“输出到三合一系统”等选择项,提供将原始文件或打印内容输出到其它载体的能力,改变标准打印输出的默认行为,并设置好对应的执行函数;显示对话框,根据用户选择,输出对应格式的文件。为各种图形应用程序提供一个统一的文件输出入口,执行文档的受控输出,此过程中可以扩展安全审计、添加动态水印等功能。
更进一步优选的,所述Linux平台图形应用程序的输出管理系统包括:
应用程序模块,用以根据监听事件类型,触发“打印”事件或“另存为”事件,并根据事件性质来进行操作或发出相应请求;
CUPS打印过滤器模块,用以接收应用程序模块发出的打印请求和打印数据,并将打印任务记录给文件查询服务,通知其执行文件名查找,同时设置状态控制表;
文件名查询服务模块,用以接收查询请求、二次打印请求,执行文件名查找任务,给活动窗口发送“打印”键盘事件。
第二方面,所述Linux平台图形应用程序的输出管理方法、系统、设备及介质还包括一种设备,所述设备包括:运行于应用程序进程空间的HOOK API库、CUPS打印过滤器以及文件名查询服务,并可在设备上运行Linux平台图形应用程序的输出管理方法、系统、设备及介质程序,Linux平台图形应用程序的输出管理方法、系统、设备及介质程序配置为实现如上文所述的Linux平台图形应用程序的输出管理方法、系统、设备及介质。
第三方面,所述Linux平台图形应用程序的输出管理方法、系统、设备及介质还包括一种介质,所述介质为计算机介质,所述存储介质上存储有Linux平台图形应用程序的输出管理方法、系统、设备及介质程序,所述Linux平台图形应用程序的输出管理方法、系统、设备及介质程序被执行时实现如上文所述的Linux平台图形应用程序的输出管理方法、系统、设备及介质。
本发明的Linux平台图形应用程序的输出管理方法、系统、设备及介质及系统相对于现有技术具有以下有益效果:
(1)本发明通过应用程序及HOOK API库、CUPS打印过滤器、文件名查询服务相互配合获得原始文件的全路径名,使得CUPS打印过滤器获取当前打印内容的文档来源,从而确定安全责任归属,以原始文件作为主体进行对安全管理,增强了信息安全性。
(2)通过HOOK API库检测用户权限对“另存为”对话框中的“输出选项”进行动态修改,根据用户对“输出选项”的选择进行对应的文档输出操作,简化了输出操作步骤,统一了图形应用程序的文件输出方法,丰富了文档输出方式。
(3)本发明不需要针对每一个应用程序做研究,充分利用当前Linux桌面系统下GUI编辑器的共性功能,完全在Linux操作系统用户态下执行,不侵入操作系统内核,不修改任何内核配置,支持分用户单独配置;支持虚拟机运行,具有环境隔离能力,适合各种基于KDE/GNOME的Linux图形桌面发行版使用,并可以方便地移植到其它硬件平台,包括x86、ARM、龙芯、飞腾、海光等,具有普遍适用性。
(4)本方法是对KDE/GNOME图形环境的底层支撑库进行钩挂,并不涉及上层应用程序的修改,因此对应用程序无影响;并且,在执行过程中会进行流程状态判断,避免干扰用户操作;HOOK API实现简单,只对libgtk2/libgtk3库与文件“另存为”相关的API进行钩挂,涉及的函数数量很少,对系统侵入降到最低;HOOK API库在用户HOME目录下采用preload模式进行加载,有利于安全监管,也便于随时恢复原状,不需要操作系统特权,尤其适合安全专用机场景使用。
(5)本发明针对应用程序提供各种文件名检查模式和提取规则,形成匹配规则表,灵活性高。
(6)本发明中CUPS打印过滤器可以根据安全需求进行功能扩展,提供对打印内容的高度控制,比如集成打印审计、打印预览、敏感数据检测等能力;“另存为”对话框根据用户权限动态增加输出方式选项,可根据需要集成多种文档输出方法,扩展性强。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明Linux平台图形应用程序的输出管理方法的处理流程图。
具体实施方式
下面将结合本发明实施方式,对本发明实施方式中的技术方案进行清楚、完整地描述,显然,所描述的实施方式仅仅是本发明一部分实施方式,而不是全部的实施方式。基于本发明中的实施方式,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施方式,都属于本发明保护的范围。
实施例
以国产化操作系统为例,本发明Linux平台图形应用程序的输出管理方法、系统、设备及介质处理流程见图1,处理步骤说明如下:
第一步,设置LD_PRELOAD环境变量,加载文件“另存为”HOOK API库,使用自定义的API函数扩展系统的“另存为”方法;然后,运行文件名查询服务程序,等待接收查询命令;
第二步,安装CUPS打印过滤器。当应用程序发出的打印事件后,会通知CUPS后台服务自动运行过滤器。过滤器首先记录打印任务参数到打印任务参数表,然后截获全部打印数据并存储为临时文件,然后检查状态控制表,是否有当前打印任务的记录,如果没有就在表中创建控制项,设置控制状态为search_pending,转第三步;否则转第七步;
第三步,若控制状态为search_pending,则将打印任务参数传递给查询服务进程,请求查询打印内容的原始文件全路径名,然后返回,等待“二次打印”事件被触发;
第四步,文件名查询服务得到查询请求,首先使用打印任务标题作为文件名在文件系统中搜索,如果搜索到,则记录找到的文件全路径名;如果未搜索到,则查找当前桌面顶层应用程序的活动窗口,得到当前触发打印的应用程序进程PID,窗口WID和窗口标题。先从窗口标题中提取文件名称和文件路径,然后再搜索文件;如果找到,记录找到的文件全路径名,然后根据进程PID,得到执行用户uid和用户HOME目录,再结合用户安全配置策略,排除文件名重名情况,得到当前打印的文件全路径名,更新状态控制表,设置查询状态为search_finish_ok,并将状态控制表写入数据库(db)中,立即返回,转入步骤六。如果仍未找到,将查询任务写入状态控制表,转入步骤五;
第五步,文件名查询服务向当前应用程序的活动窗口发送“文件另存为”键盘事件,强制触发文件另存操作(文档编辑软件都有文件另存功能)。KDE/GNOME桌面应用程序会统一调用系统的“另存为”API接口,传入需另存的原始文件的名称,此文件名称为全路径文件名。在预先定义的HOOK API中,能够通过文件选择实体对象得到全路径文件名,然后更新状态控制表,设置查询状态为search_finish_ok,立即返回,并不弹出另存为窗口;
第六步,当PID下的查询状态为search_finish_ok后,立即向应用程序的活动窗口发送“打印”键盘事件,再次触发打印操作;
第七步,再一次进入打印过滤器,根据打印任务的参数,检索状态控制表,此时得到原始文件的全路径名。首先根据用户权限配置文件检查用户权限,然后根据用户权限在打印控制对话框中添加输出方式选项,如“打印到光盘”、“打印到三合一系统”等功能项,并设置好对应的执行函数。随后,根据用户信息及全路径文件名信息检查打印管控检查,如通过管控检查,正常显示打印对话框,否则忽略此打印事件,拒绝应用程序打印输出。
上述状态控制表(statusControlTab)中记录的内容包括:项目序号(id),关联打印任务编号(jobID),关联触发打印的操作系统用户id(userID),关联打印任务标题(jobTitle),文件全路径名(fullpathFilename),控制状态(searchStatus)如Search_pending、Search_processing、Search_finish_ok,标记自定义"另存为事件"触发(saveasEventTrigger),标记自定义"打印事件"触发(printEventTrigger)、自定义事件触发方式(triggerMethod)如键盘快捷键、模拟鼠标点击、组合,GUI程序进程ID(guiProcessID),GUI程序当前活动窗口ID(activeWindowID),GUI程序主窗口ID(masterWindowID),窗口标题(windowTitle),主窗口桌面绝对坐标(masterWindowCoordinate),更新时间戳(timestamp)。
上述打印任务参数表中记录的内容包括:任务编号(jobID),触发打印的操作系统用户id(userID),打印任务标题(jobTitle),打印任务其他选项,所述打印任务其他选项是一个选项组合,如:打印份数、双面打印、打印页面尺寸等(jobOptions),更新时间戳(timestamp)。
上述用户权限配置文件中记录的内容包括:操作系统用户id(userID),操作系统用户名(userName),用户别名或工号(userAlias),当前用户许可的工作目录(workspacePath),当前用户许可的输出选项(outputCapability),更新时间戳(timestamp)等;所述当前用户许可的工作目录是个数组,如:["~/mydocs","/opt/workspace",...],所述当前用户许可的输出选项是个对象数组,如:[{"输出到光盘":"true"},{"输出到三合一":"false"},{"输出到传真机":"true"},{"是否可以另存":"true"},...]。
在具体实施时,还可以设置辅助参数表,用于预先设置图形应用程序的快捷键,增加系统灵活性,同时用于记录一些具体实现算法上的辅助参数,增加文件名判断算法的准确性和效率,也增加本系统的扩展能力。
与上述方法实施例相对应,本发明还提出一种Linux平台图形应用程序的输出管理系统,所述系统包括:应用程序模块、CUPS打印过滤器模块、文件名查询服务模块:
应用程序模块,用于根据事件监听结果,触发“打印”事件或“另存为”事件,并根据事件性质来进行操作或发出相应请求;设置状态控制表,用以记录“打印”事件和“另存为”事件的历史状态;应用程序模块内运行有HOOK API库,HOOK API库实现对libgtk2/libgtk3中与文件“另存为”相关的API函数的钩挂,在应用程序处触发“另存为”事件后,查询状态控制表,判断是否为文件查询服务发送的“二次另存为”事件,若是,则通过“另存为”对象得到原始文件全路径名,并更新状态控制表,发送二次打印请求进行打印输出;
CUPS打印过滤器模块,用于在应用程序触发“打印”事件后接收打印任务,并记录进打印任务参数表,查询状态控制表,若未查找到当前打印任务的记录,则更新状态控制表,向文件查询服务发送文件名查询请求,通知其执行文件名查找,等待“二次打印”事件被触发;
文件查询服务模块,用于接收文件名查询请求,执行文件名查找任务,根据查找结果更新状态控制表。
与上述方法实施例相对应,本发明还提出一种Linux平台图形应用程序的输出管理设备,包括运行于应用程序进程空间的HOOK API库、CUPS打印过滤器以及文件名查询服务,并可在设备上运行Linux平台图形应用程序的输出管理方法程序,Linux平台图形应用程序的输出管理方法程序配置为实现如上述提供的方法实施例,具体功能实现请参见方法实施例中的说明,在此不在赘述。
与上述方法实施例相对应,本发明还提出一种计算机可读介质,存储有Linux平台图形应用程序的输出管理方法程序,所述Linux平台图形应用程序的输出管理方法程序被执行时实现如上述提供的方法实施例,具体功能实现请参见方法实施例中的说明,在此不在赘述。
本发明通过综合采用定制化X11窗口消息、GNOME文档“另存为”HOOK API、CUPS打印过滤器等手段,实现了正确获取当前打印内容的原始文件全路径名,为基于文件主体进行信息安全管控提供了关键解决手段;同时,在“另存为”选择对话框和打印控制对话框中,根据用户权限动态添加输出方式选择项,为文档提供更丰富的输出方式。本发明提出在国产化操作系统桌面环境下,获取打印内容的原始文件全路径名的方法以及给图形应用程序添加统一输出功能项的方法。有效解决了当前业务办公和信息安全管理所打印输出主体难以确定、输出方式单一的问题,具有灵活性高、扩展性好、系统兼容性强、移植性好等优势。
以上所述仅为本发明的较佳实施方式而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种Linux平台图形应用程序的输出管理方法,其特征在于,所述Linux平台图形应用程序的输出管理方法包括以下步骤;
S1,应用程序根据事件监听结果触发“打印”事件或“另存为”事件,若触发“打印”事件,则进入打印事件进程,向CUPS打印过滤器发出打印任务,继续执行步骤S2;若触发“另存为”事件,则进入另存为事件进程;设置状态控制表,用以标记“打印”事件和“另存为”事件的状态;
S2,所述CUPS打印过滤器接收打印任务,查询状态控制表,若未查找到当前打印任务的记录,则更新状态控制表,向文件查询服务发送文件名查询请求,通知其执行文件名查找,文件名查询服务等待“二次打印”事件被触发,继续执行步骤S3;
S3,所述文件查询服务接收文件名查询请求,执行文件名查找任务,若未找到则向活动窗口发送“另存为”键盘事件,继续执行步骤S4;
S4,“另存为”键盘事件触发应用程序执行文件另存过程,此为“二次另存为”事件,运行于所述应用程序内的HOOK API将查询状态控制表判断是否为“二次另存为”事件,继续执行步骤S5;
S5,所述HOOK API库实现对libgtk2/libgtk3中与文件“另存为”相关的API函数的钩挂,若判断为“二次另存为”事件,则通过“另存为”对象得到原始文件全路径名,并更新到状态控制表中,向所述文件名查询服务发送“二次打印”请求,继续执行步骤S6;
S6,所述文件名查询服务接收“二次打印”请求,向所述应用程序发送“打印”键盘事件,进入打印事件进程,此时查找到当前打印任务记录以及原始文件全路径名,继续执行步骤S7;
S7,进行打印文件输出。
2.如权利要求1所述的Linux平台图形应用程序的输出管理方法,其特征在于,所述步骤S1具体包括:
S1-1,若进入打印事件进程,则进入假脱机打印后台,将打印任务参数表以及打印任务发送给所述CUPS打印过滤器,所述CUPS打印过滤器查询状态控制表;
S1-2,若进入另存为事件进程,则所述HOOK API将查询状态控制表判断是否为“二次另存为”事件。
3.如权利要求1所述的Linux平台图形应用程序的输出管理方法,其特征在于,所述步骤S2具体包括:
S2-1,所述CUPS打印过滤器接收打印任务,并更新打印任务参数表,查询状态控制表,根据查询结果,选择执行步骤S2-2或者步骤S2-3;
S2-2,若未查找到当前打印任务的记录,则添加状态控制项,并更新状态控制表,向文件查询服务发送文件名查询请求;
S2-3,若查找到当前打印任务的记录,则执行步骤S7。
4.如权利要求1所述的Linux平台图形应用程序的输出管理方法,其特征在于,所述步骤S3具体包括:
S3-1,所述文件查询服务接收文件名查询请求,执行文件名查找任务,根据查找结果,选择执行步骤S3-2或者步骤S3-3;
S3-2,若找到,则根据用户权限配置文件检查全路径名是否合理,并更新控制表;
S3-3,若未找到,则根据当前桌面顶层应用活动窗口标题查找文件名,继续执行步骤S3-4;
S3-4,若仍未找到,则给活动窗口发送“另存为”键盘事件,触发应用程序执行文件另存过程,此为“二次另存为”事件,将执行步骤S5。
5.如权利要求1所述的Linux平台图形应用程序的输出管理方法,其特征在于,所述步骤S6具体包括:
S6-1,所述文件名查询服务接收“二次打印”请求,向活动窗口发送“打印”键盘事件;
S6-2,“打印”键盘事件触发应用程序的“打印”事件,进入打印事件进程,所述应用程序向所述CUPS打印过滤器发出打印任务;
S6-3,所述CUPS打印过滤器接收打印任务,并记录进打印任务参数表,查询状态控制表,此时查找到当前打印任务的记录,并获得原始文件全路径名,继续执行步骤S7。
6.如权利要求1所述的Linux平台图形应用程序的输出管理方法,其特征在于,所述步骤S7具体包括:
S7-1,所述CUPS打印过滤器获得原始文件全路径名,根据用户权限配置文件查询用户输出权限,并根据用户输出权限动态修改“打印控制”对话框的输出方式选项,设置好对应的执行函数,继续执行步骤S7-2;
S7-2,根据用户信息及全路径文件名信息检查打印管控检查,判断是否通过管控检查,根据判断结果,选择执行步骤S7-3或S7-4;
S7-3,若通过管控检查,正常显示打印对话框,根据用户在对话框内选择输出的输出途径,对文件进行相应输出;
S7-4,若未通过管控检查,则忽略此打印事件,拒绝应用程序打印输出。
7.如权利要求2所述的Linux平台图形应用程序的输出管理方法,其特征在于,所述步骤S1-2具体包括如下分步骤:
S1-2-1,所述HOOK API将查询状态控制表判断是否为“二次另存为”事件,根据判断结果选择执行步骤S1-2-2或者步骤S1-2-3。
S1-2-2,若所述HOOK API判断为“二次另存为”事件,则通过“另存为”对象得到原始文件全路径名,更新到状态控制表中,向所述文件名查询服务发送“二次打印”请求,执行步骤S6;
S1-2-3,若所述HOOK API判断不为“二次另存为”事件,则执行正常“另存为”事件文件输出,继续执行步骤S1-2-4;
S1-2-4,根据用户权限配置文件查询用户输出权限,根据用户权限给“另存为”对话框修改相应输出选择功能项,显示已经动态修改后的“另存为”对话框,继续执行步骤S1-2-5;
S1-2-5,根据用户在对话框内选择输出的输出途径,对文件进行相应输出。
8.一种Linux平台图形应用程序的输出管理系统,其特征在于,所述系统包括:应用程序模块、CUPS打印过滤器模块、文件名查询服务模块:
所述应用程序模块,用于根据事件监听结果,触发“打印”事件或“另存为”事件,并根据事件性质来进行操作或发出相应请求;设置状态控制表,用以标记“打印”事件和“另存为”事件的状态;所述应用程序模块内运行有HOOK API库,所述HOOK API库实现对libgtk2/libgtk3中与文件“另存为”相关的API函数的钩挂,在应用程序处触发“另存为”事件后,查询状态控制表,判断是否为文件查询服务发送的“二次另存为”事件,若是,则通过“另存为”对象得到原始文件全路径名,并更新状态控制表,发送二次打印请求进行打印输出;
所述CUPS打印过滤器模块,用于在应用程序触发“打印”事件后接收打印任务,并记录进打印任务参数表,查询状态控制表,若未查找到当前打印任务的记录,则更新状态控制表,向文件查询服务发送文件名查询请求,通知其执行文件名查找,等待“二次打印”事件被触发;
所述文件查询服务模块,用于接收文件名查询请求,执行文件名查找任务,根据查找结果更新状态控制表。
9.一种电子设备,其特征在于,包括运行于应用程序进程空间的HOOK API库、CUPS打印过滤器以及文件名查询服务,并可在设备上运行Linux平台图形应用程序的输出管理方法程序,Linux平台图形应用程序的输出管理方法程序配置为实现如权利要求1至7任一项的Linux平台图形应用程序的输出管理方法。
10.一种计算机可读存储介质,其特征在于,所述存储介质上存储有Linux平台图形应用程序的输出管理方法程序,所述Linux平台图形应用程序的输出管理方法程序被执行时实现如权利要求1-7中任一项的Linux平台图形应用程序的输出管理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110669208.2A CN113467725B (zh) | 2021-06-16 | 2021-06-16 | Linux平台图形应用程序的输出管理方法、系统、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110669208.2A CN113467725B (zh) | 2021-06-16 | 2021-06-16 | Linux平台图形应用程序的输出管理方法、系统、设备及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113467725A true CN113467725A (zh) | 2021-10-01 |
CN113467725B CN113467725B (zh) | 2022-06-10 |
Family
ID=77870133
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110669208.2A Active CN113467725B (zh) | 2021-06-16 | 2021-06-16 | Linux平台图形应用程序的输出管理方法、系统、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113467725B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116483294A (zh) * | 2023-06-25 | 2023-07-25 | 闪捷信息科技有限公司 | 基于Linux内核管控的打印机水印添加方法和装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000103144A (ja) * | 1998-09-29 | 2000-04-11 | Fujitsu Ltd | プリンタ、データ処理装置、データ送信装置、印刷制御装置、印刷システム、記録媒体、及び印刷制御方法 |
CN1831752A (zh) * | 2005-03-11 | 2006-09-13 | 微软公司 | 用于利用上下文保存来管理输出路径的系统和方法 |
JP2010211620A (ja) * | 2009-03-11 | 2010-09-24 | Hitachi Ltd | 印刷情報取得システム及び取得方法 |
CN105183403A (zh) * | 2015-09-21 | 2015-12-23 | 西安电子科技大学 | 一种基于cups架构的打印管控方法 |
CN106933872A (zh) * | 2015-12-30 | 2017-07-07 | 阿里巴巴集团控股有限公司 | 一种通过传统文件系统接口访问云存储服务的方法及装置 |
CN111240610A (zh) * | 2020-01-08 | 2020-06-05 | 中孚安全技术有限公司 | 一种打印流程管控方法、系统、终端及存储介质 |
-
2021
- 2021-06-16 CN CN202110669208.2A patent/CN113467725B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000103144A (ja) * | 1998-09-29 | 2000-04-11 | Fujitsu Ltd | プリンタ、データ処理装置、データ送信装置、印刷制御装置、印刷システム、記録媒体、及び印刷制御方法 |
CN1831752A (zh) * | 2005-03-11 | 2006-09-13 | 微软公司 | 用于利用上下文保存来管理输出路径的系统和方法 |
JP2010211620A (ja) * | 2009-03-11 | 2010-09-24 | Hitachi Ltd | 印刷情報取得システム及び取得方法 |
CN105183403A (zh) * | 2015-09-21 | 2015-12-23 | 西安电子科技大学 | 一种基于cups架构的打印管控方法 |
CN106933872A (zh) * | 2015-12-30 | 2017-07-07 | 阿里巴巴集团控股有限公司 | 一种通过传统文件系统接口访问云存储服务的方法及装置 |
CN111240610A (zh) * | 2020-01-08 | 2020-06-05 | 中孚安全技术有限公司 | 一种打印流程管控方法、系统、终端及存储介质 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116483294A (zh) * | 2023-06-25 | 2023-07-25 | 闪捷信息科技有限公司 | 基于Linux内核管控的打印机水印添加方法和装置 |
CN116483294B (zh) * | 2023-06-25 | 2023-09-01 | 闪捷信息科技有限公司 | 基于Linux内核管控的打印机水印添加方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN113467725B (zh) | 2022-06-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20180067933A1 (en) | System and method of handling file metadata | |
EP0969654B1 (en) | Device control system | |
US5881213A (en) | Deferred printing | |
US5765156A (en) | Data transfer with expanded clipboard formats | |
US5911066A (en) | Data transfer utilizing a single functionally independent data transfer mechanism | |
US20080071820A1 (en) | Apparatus and method for managing an encapsulated document | |
US20080282160A1 (en) | Designated screen capturing and automatic image exporting | |
US20090132919A1 (en) | Appending Hover Help to Hover Help for a User Interface | |
KR101682738B1 (ko) | 관리 시스템 확장성 | |
US10063725B2 (en) | Information processing apparatus, information processing method, and information processing system | |
US20050030576A1 (en) | Data processing apparatus | |
JPH1165795A (ja) | 情報処理装置及び該装置におけるプログラムの起動方法 | |
US8082513B2 (en) | Method and system for saving images from web pages | |
US11182439B2 (en) | Automatic data capture of desired data fields and generation of metadata based on captured data fields | |
CN113467725B (zh) | Linux平台图形应用程序的输出管理方法、系统、设备及介质 | |
US11137964B2 (en) | Information processing apparatus and non-transitory computer readable medium | |
US20070260622A1 (en) | Reducing Programming Complexity In Client Applications When Interfacing With Database Servers Operating With Different Programming Interfaces | |
US6408344B1 (en) | Method and apparatus for file transfer and computer readable recording medium recording a file transfer program | |
CN116893807A (zh) | 使用浏览器设计机器人流程自动化机器人的系统和方法 | |
US20120215908A1 (en) | Method and system for detecting improper operation and computer-readable non-transitory storage medium | |
US20110055816A1 (en) | Method to derive software use and software data object use characteristics by analyzing attributes of related files | |
JP2000163345A (ja) | デバイス制御システムおよび情報登録方法、デバイス利用方法、並びにコンピュータプログラムを記録した記録媒体 | |
US9805039B2 (en) | Method and system for archiving a document | |
JP2001350666A (ja) | ツリー管理装置及びツリー管理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |