由于我们网站上的用户命名空间情况混乱,我们需要以编程方式更改与已提交的打印作业 (job-originating-user-name) 关联的用户名。例如,如果用户“bob”提交了一份作业,则需要将其更改为用户“robert”,然后才能将其发送到下一跳。
我们目前正在运行旧的 LPRng 设置。它有一个“控制过滤器”机制,可以修改 LPD 控制文件的内容(参见)。我正在寻找 CUPS 中的类似功能。
我找到了 CUPS 过滤器 API 文档过滤器和后端编程(cups.org)其中列出的所有功能都是用于处理打印机交互(这并不罕见,因为大多数过滤器要么更改文件格式,要么与打印机交互)。
CUPS 编程手册https://www.cups.org/doc/cupspm.html确实有 cupsSetUser() 和 cupsUser() 函数……但这看起来像是引用了执行过滤器的用户,而不是改变相关作业上的用户。
CUPS 有这样的功能吗?似乎添加了支持以在用户的 shell 环境中定义 CUPS_USER 变量来更改提交作业时显示的用户...但我们更愿意将新用户名作为打印过滤器的一部分来确定,而不是设置 shell 环境变量。