初始提交:中兴B863AV3.2-M刷Armbian + CUPS打印服务教程
包含:
- 刷机教程.md - 完整刷机和CUPS配置文档
- setup_cups.sh - 一键安装CUPS脚本(支持换源、多驱动选择、中文界面)
- cups-templates-zh_CN/ - CUPS中文界面模板
🤖 Generated with Claude Code
This commit is contained in:
37
cups-templates-zh_CN/add-class.tmpl
Normal file
37
cups-templates-zh_CN/add-class.tmpl
Normal file
@@ -0,0 +1,37 @@
|
||||
<H2 CLASS="title">Add Class</H2>
|
||||
|
||||
<FORM METHOD="POST" ACTION="/admin">
|
||||
<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
|
||||
<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
|
||||
|
||||
<TABLE>
|
||||
<TR>
|
||||
<TH CLASS="label">Name:</TH>
|
||||
<TD><INPUT TYPE="TEXT" NAME="PRINTER_NAME" SIZE="40" MAXLENGTH="127"><BR>
|
||||
<SMALL>(May contain any printable characters except "/", "#", and space)</SMALL></TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TH CLASS="label">Description:</TH>
|
||||
<TD><INPUT TYPE="TEXT" NAME="PRINTER_INFO" SIZE="40" MAXLENGTH="127"><BR>
|
||||
<SMALL>(Human-readable description such as "HP LaserJet with Duplexer")</SMALL></TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TH CLASS="label">Location:</TH>
|
||||
<TD><INPUT TYPE="TEXT" NAME="PRINTER_LOCATION" SIZE="40" MAXLENGTH="127"><BR>
|
||||
<SMALL>(Human-readable location such as "Lab 1")</SMALL></TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TH CLASS="label">Members:</TH>
|
||||
<TD>
|
||||
<SELECT NAME="MEMBER_URIS" SIZE="10" MULTIPLE>
|
||||
{[member_uris]<OPTION VALUE="{member_uris}" {?member_selected}>{member_names}}
|
||||
</SELECT>
|
||||
</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD></TD>
|
||||
<TD><INPUT TYPE="SUBMIT" VALUE="Add Class"></TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
|
||||
</FORM>
|
||||
41
cups-templates-zh_CN/add-printer.tmpl
Normal file
41
cups-templates-zh_CN/add-printer.tmpl
Normal file
@@ -0,0 +1,41 @@
|
||||
<H2 CLASS="title">添加打印机</H2>
|
||||
<FORM METHOD="POST" ACTION="/admin">
|
||||
<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
|
||||
<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
|
||||
<INPUT TYPE="HIDDEN" NAME="BAUDRATE" VALUE="{?baudrate}">
|
||||
<INPUT TYPE="HIDDEN" NAME="BITS" VALUE="{?bits}">
|
||||
<INPUT TYPE="HIDDEN" NAME="PARITY" VALUE="{?parity}">
|
||||
<INPUT TYPE="HIDDEN" NAME="FLOW" VALUE="{?flow}">
|
||||
{?current_make!?<INPUT TYPE="HIDDEN" NAME="CURRENT_MAKE" VALUE="{current_make}">:}
|
||||
{?current_make_and_model!?<INPUT TYPE="HIDDEN" NAME="CURRENT_MAKE_AND_MODEL" VALUE="{current_make_and_model}">:}
|
||||
<TABLE>
|
||||
<TR>
|
||||
<TH CLASS="label">名称:</TH>
|
||||
<TD><INPUT TYPE="TEXT" NAME="PRINTER_NAME" SIZE="40" MAXLENGTH="127" VALUE="{?template_name}"><BR>
|
||||
<SMALL>(可包含任何可打印字符,除了 "/"、"#" 和空格)</SMALL></TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TH CLASS="label">描述:</TH>
|
||||
<TD><INPUT TYPE="TEXT" NAME="PRINTER_INFO" SIZE="40" MAXLENGTH="127" VALUE="{?PRINTER_INFO}"><BR>
|
||||
<SMALL>(如 "HP 激光打印机")</SMALL></TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TH CLASS="label">位置:</TH>
|
||||
<TD><INPUT TYPE="TEXT" NAME="PRINTER_LOCATION" SIZE="40" MAXLENGTH="127" VALUE="{?PRINTER_LOCATION}"><BR>
|
||||
<SMALL>(如 "办公室")</SMALL></TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TH CLASS="label">连接:</TH>
|
||||
<TD><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">{device_uri}</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TH CLASS="label">共享:</TH>
|
||||
<TD><INPUT TYPE="CHECKBOX" NAME="PRINTER_IS_SHARED" ID="PRINTER_IS_SHARED" {PRINTER_IS_SHARED=1?CHECKED:}>
|
||||
<LABEL FOR="PRINTER_IS_SHARED">共享此打印机</LABEL></TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD></TD>
|
||||
<TD><INPUT TYPE="SUBMIT" VALUE="继续"></TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
</FORM>
|
||||
63
cups-templates-zh_CN/admin.tmpl
Normal file
63
cups-templates-zh_CN/admin.tmpl
Normal file
@@ -0,0 +1,63 @@
|
||||
<div class="row">
|
||||
<div class="halves">
|
||||
<H2 CLASS="title">打印机</H2>
|
||||
<P>
|
||||
<FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="add-printer"><INPUT TYPE="SUBMIT" VALUE="添加打印机"></FORM>
|
||||
<FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="find-new-printers"><INPUT TYPE="SUBMIT" VALUE="查找新打印机"></FORM>
|
||||
<FORM ACTION="/printers/" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="管理打印机"></FORM>
|
||||
</P>
|
||||
<H2 CLASS="title">打印机类</H2>
|
||||
<P>
|
||||
<FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="add-class"><INPUT TYPE="SUBMIT" VALUE="添加打印机类"></FORM>
|
||||
<FORM ACTION="/classes/" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="管理打印机类"></FORM>
|
||||
</P>
|
||||
<H2 CLASS="title">打印任务</H2>
|
||||
<P>
|
||||
<FORM ACTION="/jobs/" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="管理打印任务"></FORM>
|
||||
</P>
|
||||
</div>
|
||||
<div class="halves">
|
||||
<H2 CLASS="title">服务器</H2>
|
||||
<P>
|
||||
<FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="config-server"><INPUT TYPE="SUBMIT" VALUE="编辑配置文件"></FORM>
|
||||
</P>
|
||||
{SETTINGS_ERROR?<P>{SETTINGS_MESSAGE}</P>
|
||||
<BLOCKQUOTE>{SETTINGS_ERROR}</BLOCKQUOTE>:
|
||||
<FORM METHOD="POST" ACTION="/admin">
|
||||
<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
|
||||
{ADVANCEDSETTINGS?<P><B>服务器设置:</B></P>
|
||||
<P><A HREF="/admin/">高级 <SMALL>▼</SMALL></A><BR>
|
||||
<INPUT TYPE="HIDDEN" NAME="OP" VALUE="config-server">
|
||||
<INPUT TYPE="HIDDEN" NAME="ADVANCEDSETTINGS" VALUE="YES">
|
||||
<INPUT TYPE="CHECKBOX" NAME="SHARE_PRINTERS" ID="SHARE_PRINTERS" {?share_printers}><LABEL FOR="SHARE_PRINTERS"> 共享连接到此系统的打印机</LABEL><BR>
|
||||
最大客户端数:
|
||||
<INPUT TYPE="TEXT" NAME="MAX_CLIENTS" VALUE="{?max_clients}" SIZE="6"><BR>
|
||||
<INPUT TYPE="CHECKBOX" NAME="REMOTE_ANY" ID="REMOTE_ANY" {?remote_any}><LABEL FOR="REMOTE_ANY"> 允许从互联网打印</LABEL><BR>
|
||||
<INPUT TYPE="CHECKBOX" NAME="BROWSE_WEB_IF" ID="BROWSE_WEB_IF" {?browse_web_if}><LABEL FOR="BROWSE_WEB_IF"> 公布 Web 界面</LABEL><BR>
|
||||
<INPUT TYPE="CHECKBOX" NAME="REMOTE_ADMIN" ID="REMOTE_ADMIN" {?remote_admin}><LABEL FOR="REMOTE_ADMIN"> 允许远程管理</LABEL><BR>
|
||||
{have_gssapi?<INPUT TYPE="CHECKBOX" NAME="KERBEROS" ID="KERBEROS" {?kerberos}><LABEL FOR="KERBEROS"> 使用 Kerberos 认证</LABEL><BR>:}
|
||||
<INPUT TYPE="CHECKBOX" NAME="USER_CANCEL_ANY" ID="USER_CANCEL_ANY" {?user_cancel_any}><LABEL FOR="USER_CANCEL_ANY"> 允许用户取消任何任务</LABEL><BR>
|
||||
<INPUT TYPE="CHECKBOX" NAME="PRESERVE_JOBS" ID="PRESERVE_JOBS" {?preserve_jobs}><LABEL FOR="PRESERVE_JOBS"> 保留任务历史</LABEL><BR>
|
||||
最大任务数(0为无限制):
|
||||
<INPUT TYPE="TEXT" NAME="MAX_JOBS" VALUE="{?max_jobs}" SIZE="6"><BR>
|
||||
保留元数据:
|
||||
<INPUT TYPE="TEXT" NAME="PRESERVE_JOB_HISTORY" VALUE="{?preserve_job_history}" SIZE="6"><BR>
|
||||
保留文档:
|
||||
<INPUT TYPE="TEXT" NAME="PRESERVE_JOB_FILES" VALUE="{?preserve_job_files}" SIZE="6"><BR>
|
||||
<INPUT TYPE="CHECKBOX" NAME="DEBUG_LOGGING" ID="DEBUG_LOGGING" {?debug_logging}><LABEL FOR="DEBUG_LOGGING"> 保存调试信息</LABEL><BR>
|
||||
最大日志文件大小:
|
||||
<INPUT TYPE="TEXT" NAME="MAX_LOG_SIZE" VALUE="{?max_log_size}" SIZE="6"></P>
|
||||
:<P><B>服务器设置:</B></P>
|
||||
<P><A HREF="/admin/?ADVANCEDSETTINGS=YES">高级 <SMALL>▶</SMALL></A><BR>
|
||||
<INPUT TYPE="HIDDEN" NAME="OP" VALUE="config-server">
|
||||
<INPUT TYPE="CHECKBOX" NAME="SHARE_PRINTERS" ID="SHARE_PRINTERS" {?share_printers}><LABEL FOR="SHARE_PRINTERS"> 共享连接到此系统的打印机</LABEL><BR>
|
||||
<INPUT TYPE="CHECKBOX" NAME="REMOTE_ANY" ID="REMOTE_ANY" {?remote_any}><LABEL FOR="REMOTE_ANY"> 允许从互联网打印</LABEL><BR>
|
||||
<INPUT TYPE="CHECKBOX" NAME="REMOTE_ADMIN" ID="REMOTE_ADMIN" {?remote_admin}><LABEL FOR="REMOTE_ADMIN"> 允许远程管理</LABEL><BR>
|
||||
{have_gssapi?<INPUT TYPE="CHECKBOX" NAME="KERBEROS" ID="KERBEROS" {?kerberos}><LABEL FOR="KERBEROS"> 使用 Kerberos 认证</LABEL><BR>:}
|
||||
<INPUT TYPE="CHECKBOX" NAME="USER_CANCEL_ANY" ID="USER_CANCEL_ANY" {?user_cancel_any}><LABEL FOR="USER_CANCEL_ANY"> 允许用户取消任何任务</LABEL><BR>
|
||||
<INPUT TYPE="CHECKBOX" NAME="DEBUG_LOGGING" ID="DEBUG_LOGGING" {?debug_logging}><LABEL FOR="DEBUG_LOGGING"> 保存调试信息</LABEL></P>
|
||||
}
|
||||
<P><INPUT TYPE="SUBMIT" NAME="CHANGESETTINGS" VALUE="保存设置"></P>
|
||||
</FORM>}
|
||||
</div>
|
||||
</div>
|
||||
49
cups-templates-zh_CN/choose-device.tmpl
Normal file
49
cups-templates-zh_CN/choose-device.tmpl
Normal file
@@ -0,0 +1,49 @@
|
||||
<H2 CLASS="title">{op=modify-printer?修改 {printer_name}:添加打印机}</H2>
|
||||
|
||||
{CUPS_GET_DEVICES_DONE?<FORM METHOD="POST" ACTION="/admin">
|
||||
<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
|
||||
<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
|
||||
{printer_name?<INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}">:}
|
||||
|
||||
<TABLE>
|
||||
{op=add-printer?:<TR>
|
||||
<TH CLASS="label">当前连接:</TH>
|
||||
<TD><INPUT TYPE="RADIO" NAME="DEVICE_URI" ID="{current_device_uri}" VALUE="{current_device_uri}" CHECKED>
|
||||
<LABEL FOR="{current_device_uri}">{current_device_uri}</LABEL></TD>
|
||||
</TR>}
|
||||
<TR>
|
||||
<TH CLASS="label">本地打印机:</TH>
|
||||
<TD>
|
||||
{[device_uri]{device_class!network?<INPUT TYPE="RADIO" NAME="DEVICE_URI" ID="{device_uri}"
|
||||
VALUE="{device_uri}{?device_make_and_model!Unknown?|{device_make_and_model}:}">
|
||||
<LABEL FOR="{device_uri}">{device_info} {?device_make_and_model!Unknown?({device_make_and_model}):}</LABEL><BR>
|
||||
:}}
|
||||
</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TH CLASS="label">已发现的网络打印机:</TH>
|
||||
<TD>
|
||||
{[device_uri]{device_class=network?{device_uri~[a-z]+://?<INPUT TYPE="RADIO" NAME="DEVICE_URI" ID="{device_uri}{?device_make_and_model!Unknown?|{device_make_and_model}:}"
|
||||
VALUE="{device_uri}{?device_make_and_model!Unknown?|{device_make_and_model}:}">
|
||||
<LABEL FOR="{device_uri}{?device_make_and_model!Unknown?|{device_make_and_model}:}">{device_info} {?device_make_and_model!Unknown?({device_make_and_model}):}</LABEL><BR>
|
||||
:}:}}
|
||||
</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TR>
|
||||
<TH CLASS="label">其他网络打印机:</TH>
|
||||
<TD>
|
||||
{[device_uri]{device_class=network?{device_uri~[a-z]+://?:<INPUT TYPE="RADIO" NAME="DEVICE_URI" ID="{device_uri}{?device_make_and_model!Unknown?|{device_make_and_model}:}"
|
||||
VALUE="{device_uri}{?device_make_and_model!Unknown?|{device_make_and_model}:}">
|
||||
<LABEL FOR="{device_uri}{?device_make_and_model!Unknown?|{device_make_and_model}:}">{device_info} {?device_make_and_model!Unknown?({device_make_and_model}):}</LABEL><BR>
|
||||
}:}}
|
||||
</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD></TD>
|
||||
<TD><INPUT TYPE="SUBMIT" VALUE="继续"></TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
|
||||
</FORM>:<P><IMG SRC="/images/wait.gif" WIDTH="16" HEIGHT="16" ALIGN="ABSMIDDLE"
|
||||
ALT="加载中"> 正在搜索打印机...</P>}
|
||||
61
cups-templates-zh_CN/choose-make.tmpl
Normal file
61
cups-templates-zh_CN/choose-make.tmpl
Normal file
@@ -0,0 +1,61 @@
|
||||
<H2 CLASS="title">{op=modify-printer?修改 {printer_name}:添加打印机}</H2>
|
||||
|
||||
<FORM METHOD="POST" ACTION="/admin" ENCTYPE="multipart/form-data">
|
||||
<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
|
||||
<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
|
||||
{printer_name?<INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}">:}
|
||||
<INPUT TYPE="HIDDEN" NAME="BAUDRATE" VALUE="{?baudrate}">
|
||||
<INPUT TYPE="HIDDEN" NAME="BITS" VALUE="{?bits}">
|
||||
<INPUT TYPE="HIDDEN" NAME="PARITY" VALUE="{?parity}">
|
||||
<INPUT TYPE="HIDDEN" NAME="FLOW" VALUE="{?flow}">
|
||||
|
||||
<TABLE>
|
||||
{op=modify-printer?:<TR>
|
||||
<TH CLASS="label">名称:</TH>
|
||||
<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">{printer_name}</TD>
|
||||
</TR>}
|
||||
<TR>
|
||||
<TH CLASS="label">描述:</TH>
|
||||
<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_INFO" VALUE="{printer_info}">{printer_info}</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TH CLASS="label">位置:</TH>
|
||||
<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_LOCATION" VALUE="{printer_location}">{printer_location}</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TH CLASS="label">连接:</TH>
|
||||
<TD><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">{device_uri}</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TH CLASS="label">共享:</TH>
|
||||
<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_IS_SHARED" VALUE="{?printer_is_shared}">
|
||||
{?printer_is_shared=?不:{?printer_is_shared=0?不:}}共享此打印机</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TH CLASS="label">品牌:</TH>
|
||||
<TD>
|
||||
<SELECT NAME="PPD_MAKE" SIZE="10">
|
||||
{[ppd_make]<OPTION VALUE="{ppd_make}" {?current_make={ppd_make}?SELECTED:}>{ppd_make}}
|
||||
</SELECT>
|
||||
</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD></TD>
|
||||
<TD><INPUT TYPE="SUBMIT" VALUE="继续"></TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD></TD>
|
||||
<TD> </TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TH CLASS="label">或提供 PPD 文件:</TH>
|
||||
<TD><INPUT TYPE="HIDDEN" NAME="MAX_FILE_SIZE" VALUE="262144"><INPUT
|
||||
TYPE="FILE" NAME="PPD_FILE"></TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD></TD>
|
||||
<TD><INPUT TYPE="SUBMIT" VALUE="{op=add-printer?添加打印机:修改打印机}"></TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
|
||||
</FORM>
|
||||
58
cups-templates-zh_CN/choose-model.tmpl
Normal file
58
cups-templates-zh_CN/choose-model.tmpl
Normal file
@@ -0,0 +1,58 @@
|
||||
<H2 CLASS="title">{op=modify-printer?修改 {printer_name}:添加打印机}</H2>
|
||||
|
||||
<FORM METHOD="POST" ACTION="/admin" ENCTYPE="multipart/form-data">
|
||||
<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
|
||||
<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
|
||||
{printer_name?<INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}">:}
|
||||
<INPUT TYPE="HIDDEN" NAME="BAUDRATE" VALUE="{?baudrate}">
|
||||
<INPUT TYPE="HIDDEN" NAME="BITS" VALUE="{?bits}">
|
||||
<INPUT TYPE="HIDDEN" NAME="PARITY" VALUE="{?parity}">
|
||||
<INPUT TYPE="HIDDEN" NAME="FLOW" VALUE="{?flow}">
|
||||
<TABLE>
|
||||
{op=modify-printer?:<TR>
|
||||
<TH CLASS="label">名称:</TH>
|
||||
<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">{printer_name}</TD>
|
||||
</TR>}
|
||||
<TR>
|
||||
<TH CLASS="label">描述:</TH>
|
||||
<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_INFO" VALUE="{printer_info}">{printer_info}</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TH CLASS="label">位置:</TH>
|
||||
<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_LOCATION" VALUE="{printer_location}">{printer_location}</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TH CLASS="label">连接:</TH>
|
||||
<TD><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">{device_uri}</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TH CLASS="label">共享:</TH>
|
||||
<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_IS_SHARED" VALUE="{?printer_is_shared}">
|
||||
{?printer_is_shared=?不:{?printer_is_shared=0?不:}}共享此打印机</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TH CLASS="label">品牌:</TH>
|
||||
<TD>{PPD_MAKE} <INPUT TYPE="SUBMIT" NAME="SELECT_MAKE" VALUE="选择其他品牌"></TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TH CLASS="label">型号:</TH>
|
||||
<TD>
|
||||
<SELECT NAME="PPD_NAME" SIZE="10">
|
||||
{op=add-printer?:<OPTION VALUE="__no_change__" SELECTED>当前驱动 - {current_make_and_model}</OPTION>:}
|
||||
{show_ipp_everywhere?<OPTION VALUE="everywhere" SELECTED>{current_make_and_model?{current_make_and_model} -:} IPP Everywhere ™</OPTION>:}
|
||||
{[ppd_name]<OPTION VALUE="{ppd_name}" {op=modify-printer?:{?current_make_and_model={ppd_make_and_model}?SELECTED:}}>{ppd_make_and_model} ({ppd_natural_language})
|
||||
}</SELECT>
|
||||
</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TH CLASS="label">或提供 PPD 文件:</TH>
|
||||
<TD><INPUT TYPE="HIDDEN" NAME="MAX_FILE_SIZE" VALUE="262144"><INPUT
|
||||
TYPE="FILE" NAME="PPD_FILE"></TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD></TD>
|
||||
<TD><INPUT TYPE="SUBMIT" VALUE="{op=add-printer?添加打印机:修改打印机}"></TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
|
||||
</FORM>
|
||||
49
cups-templates-zh_CN/choose-serial.tmpl
Normal file
49
cups-templates-zh_CN/choose-serial.tmpl
Normal file
@@ -0,0 +1,49 @@
|
||||
<H2 CLASS="title">{op=modify-printer?Modify {printer_name}:Add Printer}</H2>
|
||||
|
||||
<FORM METHOD="POST" ACTION="/admin">
|
||||
<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
|
||||
<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
|
||||
{printer_name?<INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}">:}
|
||||
|
||||
<TABLE>
|
||||
<TR>
|
||||
<TH CLASS="label">Connection:</TH>
|
||||
<TD><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">{device_uri}</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TH CLASS="label">Baud Rate:</TH>
|
||||
<TD><SELECT NAME="BAUDRATE">
|
||||
{[baudrates]<OPTION {?baudrate={baudrates}?SELECTED:}>{baudrates}}
|
||||
</SELECT></TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TH CLASS="label">Parity:</TH>
|
||||
<TD><SELECT NAME="PARITY">
|
||||
<OPTION VALUE="none" {?parity=none?SELECTED:}>None
|
||||
<OPTION VALUE="even" {?parity=even?SELECTED:}>Even
|
||||
<OPTION VALUE="odd" {?parity=odd?SELECTED:}>Odd
|
||||
</SELECT></TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TH CLASS="label">Data Bits:</TH>
|
||||
<TD><SELECT NAME="BITS">
|
||||
<OPTION {?bits=8?SELECTED:}>8
|
||||
<OPTION {?bits=7?SELECTED:}>7
|
||||
</SELECT></TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TH CLASS="label">Flow Control:</TH>
|
||||
<TD><SELECT NAME="FLOW">
|
||||
<OPTION VALUE="none" {?flow=none?SELECTED:}>None
|
||||
<OPTION VALUE="soft" {?flow=soft?SELECTED:}>XON/XOFF (Software)
|
||||
<OPTION VALUE="hard" {?flow=hard?SELECTED:}>RTS/CTS (Hardware)
|
||||
<OPTION VALUE="dtrdsr" {?flow=dtrdsr?SELECTED:}>DTR/DSR (Hardware)
|
||||
</SELECT></TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD></TD>
|
||||
<TD><INPUT TYPE="SUBMIT" VALUE="Continue"></TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
|
||||
</FORM>
|
||||
41
cups-templates-zh_CN/choose-uri.tmpl
Normal file
41
cups-templates-zh_CN/choose-uri.tmpl
Normal file
@@ -0,0 +1,41 @@
|
||||
<H2 CLASS="title">{op=modify-printer?Modify {printer_name}:Add Printer}</H2>
|
||||
|
||||
<FORM METHOD="POST" ACTION="/admin">
|
||||
<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
|
||||
<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
|
||||
{printer_name?<INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}">:}
|
||||
<INPUT TYPE="HIDDEN" NAME="CURRENT_MAKE_AND_MODEL" VALUE="{?current_make_and_model}">
|
||||
|
||||
<TABLE>
|
||||
<TR>
|
||||
<TH CLASS="label">Connection:</TH>
|
||||
<TD><INPUT TYPE="URL" SIZE="60" MAXLENGTH="1023" NAME="DEVICE_URI" VALUE="{current_device_uri?{current_device_uri}:{device_uri}}"></TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD></TD>
|
||||
<TD>Examples:
|
||||
<PRE>
|
||||
http://hostname:631/ipp/
|
||||
http://hostname:631/ipp/port1
|
||||
|
||||
ipp://hostname/ipp/
|
||||
ipp://hostname/ipp/port1
|
||||
|
||||
lpd://hostname/queue
|
||||
|
||||
socket://hostname
|
||||
socket://hostname:9100
|
||||
</PRE>
|
||||
|
||||
<P>See <A HREF="/help/network.html" TARGET="_blank">"Network
|
||||
Printers"</A> for the correct URI to use with your printer.</P>
|
||||
|
||||
</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD></TD>
|
||||
<TD><INPUT TYPE="SUBMIT" VALUE="Continue"></TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
|
||||
</FORM>
|
||||
4
cups-templates-zh_CN/class-added.tmpl
Normal file
4
cups-templates-zh_CN/class-added.tmpl
Normal file
@@ -0,0 +1,4 @@
|
||||
<H2 CLASS="title">Add Class</H2>
|
||||
|
||||
<P>Class <A HREF="/classes/{printer_name}">{printer_name}</A> has been added
|
||||
successfully.
|
||||
6
cups-templates-zh_CN/class-confirm.tmpl
Normal file
6
cups-templates-zh_CN/class-confirm.tmpl
Normal file
@@ -0,0 +1,6 @@
|
||||
<H2 CLASS="title">Delete Class {printer_name}</H2>
|
||||
|
||||
<P><B>Warning:</B> Are you sure you want to delete class
|
||||
{printer_name}?</P>
|
||||
|
||||
<P ALIGN="CENTER"><FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="op" VALUE="delete-class"><INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}"><INPUT TYPE="SUBMIT" NAME="confirm" VALUE="Delete Class"></FORM></P>
|
||||
3
cups-templates-zh_CN/class-deleted.tmpl
Normal file
3
cups-templates-zh_CN/class-deleted.tmpl
Normal file
@@ -0,0 +1,3 @@
|
||||
<H2 CLASS="title">Delete Class {printer_name}</H2>
|
||||
|
||||
<P>Class {printer_name} has been deleted successfully.
|
||||
1
cups-templates-zh_CN/class-jobs-header.tmpl
Normal file
1
cups-templates-zh_CN/class-jobs-header.tmpl
Normal file
@@ -0,0 +1 @@
|
||||
<H3 CLASS="title">Jobs</H3>
|
||||
4
cups-templates-zh_CN/class-modified.tmpl
Normal file
4
cups-templates-zh_CN/class-modified.tmpl
Normal file
@@ -0,0 +1,4 @@
|
||||
<H2 CLASS="title">Modify Class {printer_name}</H2>
|
||||
|
||||
<P>Class <A HREF="/classes/{printer_name}">{printer_name}</A> has been
|
||||
modified successfully.
|
||||
41
cups-templates-zh_CN/class.tmpl
Normal file
41
cups-templates-zh_CN/class.tmpl
Normal file
@@ -0,0 +1,41 @@
|
||||
<H2 CLASS="title"><A HREF="{printer_uri_supported}">{printer_name}</A>
|
||||
({printer_state=3?Idle:{printer_state=4?Processing:Paused}},
|
||||
{printer_is_accepting_jobs=0?Rejecting Jobs:Accepting Jobs},
|
||||
{server_is_sharing_printers=0?Not:{printer_is_shared=0?Not:}} Shared{default_name={printer_name}?, Server Default:})</H2>
|
||||
|
||||
<FORM METHOD="POST" ACTION="{printer_uri_supported}" NAME="maintenance">
|
||||
<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
|
||||
<SELECT NAME="OP" ONCHANGE="document.maintenance.submit();">
|
||||
<OPTION VALUE="">Maintenance</OPTION>
|
||||
<OPTION VALUE="print-test-page">Print Test Page</OPTION>
|
||||
{printer_state=5?<OPTION VALUE="start-class">Resume Class</OPTION>:<OPTION VALUE="stop-class">Pause Class</OPTION>}
|
||||
{printer_is_accepting_jobs=0?<OPTION VALUE="accept-jobs">Accept Jobs</OPTION>:<OPTION VALUE="reject-jobs">Reject Jobs</OPTION>}
|
||||
<OPTION VALUE="move-jobs">Move All Jobs</OPTION>
|
||||
<OPTION VALUE="cancel-jobs">Cancel All Jobs</OPTION>
|
||||
</SELECT>
|
||||
<INPUT TYPE="SUBMIT" VALUE="Go" STYLE="display: none;">
|
||||
</FORM>
|
||||
|
||||
<FORM METHOD="POST" ACTION="{admin_uri}" NAME="administration">
|
||||
<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
|
||||
<INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}">
|
||||
<INPUT TYPE="HIDDEN" NAME="IS_CLASS" VALUE="1">
|
||||
<SELECT NAME="OP" ONCHANGE="document.administration.submit();">
|
||||
<OPTION VALUE="">Administration</OPTION>
|
||||
<OPTION VALUE="modify-class">Modify Class</OPTION>
|
||||
<OPTION VALUE="delete-class">Delete Class</OPTION>
|
||||
<OPTION VALUE="set-class-options">Set Default Options</OPTION>
|
||||
<OPTION VALUE="set-as-default">Set As Server Default</OPTION>
|
||||
<OPTION VALUE="set-allowed-users">Set Allowed Users</OPTION>
|
||||
</SELECT>
|
||||
<INPUT TYPE="SUBMIT" VALUE="Go" STYLE="display: none;">
|
||||
</FORM>
|
||||
|
||||
<TABLE SUMMARY="{printer_name}">
|
||||
<TR><TH ALIGN="RIGHT" VALIGN="TOP">Description:</TH><TD>{printer_info}</TD></TR>
|
||||
<TR><TH ALIGN="RIGHT" VALIGN="TOP">Location:</TH><TD>{printer_location}</TD></TR>
|
||||
<TR><TH ALIGN="RIGHT" VALIGN="TOP">Members:</TH><TD>{?member_uris=?None:{member_uris}}</TD></TR>
|
||||
<TR><TH ALIGN="RIGHT" VALIGN="TOP">Defaults:</TH><TD>job-sheets={job_sheets_default}
|
||||
media={media_default?{media_default}:unknown}
|
||||
{sides_default?sides={sides_default}:}</TD></TR>
|
||||
</TABLE>
|
||||
1
cups-templates-zh_CN/classes-header.tmpl
Normal file
1
cups-templates-zh_CN/classes-header.tmpl
Normal file
@@ -0,0 +1 @@
|
||||
<P ALIGN="CENTER">{total=0?没有打印机类:显示 {total} 个打印机类中的 {#printer_name} 个}。</P>
|
||||
11
cups-templates-zh_CN/classes.tmpl
Normal file
11
cups-templates-zh_CN/classes.tmpl
Normal file
@@ -0,0 +1,11 @@
|
||||
{#printer_name=0?:
|
||||
<TABLE CLASS="list" SUMMARY="打印机类列表">
|
||||
<THEAD>
|
||||
<TR><TH>队列名称</TH><TH>描述</TH><TH>位置</TH><TH>成员</TH><TH>状态</TH></TR>
|
||||
</THEAD>
|
||||
<TBODY>
|
||||
{[printer_name]
|
||||
<TR><TD><A HREF="{printer_uri_supported}">{printer_name}</A></TD><TD>{printer_info}</TD><TD>{printer_location}</TD><TD>{?member_uris=?无:{member_uris}}</TD><TD>{printer_state=3?空闲:{printer_state=4?处理中:已暂停}}{printer_state_message? - "{printer_state_message}":}</TD></TR>
|
||||
}
|
||||
</TBODY>
|
||||
</TABLE></DIV>}
|
||||
8
cups-templates-zh_CN/command.tmpl
Normal file
8
cups-templates-zh_CN/command.tmpl
Normal file
@@ -0,0 +1,8 @@
|
||||
<H2 CLASS="title">{title} On {printer_name}</H2>
|
||||
|
||||
<P>{job_state>5?:<IMG SRC="/images/wait.gif" WIDTH="16" HEIGHT="16"
|
||||
ALIGN="ABSMIDDLE" ALT="Busy Indicator"> }Printer command job
|
||||
{job_state=3?pending:{job_state=4?held:
|
||||
{job_state=5?processing:{job_state=6?stopped:
|
||||
{job_state=7?canceled:{job_state=8?aborted:completed}}}}}}{job_state=9?:{job_printer_state_message?,
|
||||
<EM>"{job_printer_state_message}"</EM>:}}</P>
|
||||
20
cups-templates-zh_CN/edit-config.tmpl
Normal file
20
cups-templates-zh_CN/edit-config.tmpl
Normal file
@@ -0,0 +1,20 @@
|
||||
<SCRIPT TYPE="text/javascript">
|
||||
function reset_config()
|
||||
{
|
||||
document.cups.CUPSDCONF.value = "{?cupsdconf_default}";
|
||||
}
|
||||
</SCRIPT>
|
||||
|
||||
<H2 CLASS="title">Edit Configuration File</H2>
|
||||
|
||||
<FORM NAME="cups" METHOD="POST" ACTION="/admin/">
|
||||
<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
|
||||
<INPUT TYPE="HIDDEN" NAME="OP" VALUE="config-server">
|
||||
|
||||
<TEXTAREA NAME="CUPSDCONF" COLS="80" ROWS="25">{CUPSDCONF}</TEXTAREA>
|
||||
|
||||
<P><INPUT TYPE="SUBMIT" NAME="SAVECHANGES" VALUE="Save Changes">
|
||||
<INPUT TYPE="BUTTON" VALUE="Use Default Configuration File"
|
||||
onClick="reset_config();"></P>
|
||||
|
||||
</FORM>
|
||||
5
cups-templates-zh_CN/error-op.tmpl
Normal file
5
cups-templates-zh_CN/error-op.tmpl
Normal file
@@ -0,0 +1,5 @@
|
||||
<H2 CLASS="title">{?title} {?printer_name} Error</H2>
|
||||
|
||||
<P>Error:</P>
|
||||
|
||||
<BLOCKQUOTE>Unknown operation "{op}"!</BLOCKQUOTE>
|
||||
5
cups-templates-zh_CN/error.tmpl
Normal file
5
cups-templates-zh_CN/error.tmpl
Normal file
@@ -0,0 +1,5 @@
|
||||
<H2 CLASS="title">{?title} {?printer_name} Error</H2>
|
||||
|
||||
<P>{?message?{message}:Error}:</P>
|
||||
|
||||
<BLOCKQUOTE>{error}</BLOCKQUOTE>
|
||||
40
cups-templates-zh_CN/header.tmpl
Normal file
40
cups-templates-zh_CN/header.tmpl
Normal file
@@ -0,0 +1,40 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<link rel="stylesheet" href="/cups.css" type="text/css">
|
||||
<link rel="shortcut icon" href="/apple-touch-icon.png" type="image/png">
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
{refresh_page?<meta http-equiv="refresh" content="{refresh_page}">:}
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=9">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<style>html{display:none;}</style>
|
||||
<script type="text/javascript"><!--
|
||||
if (self == top) {
|
||||
document.documentElement.style.display = 'block';
|
||||
} else {
|
||||
top.location = self.location;
|
||||
}
|
||||
function check_cookies() {
|
||||
if (!navigator.cookieEnabled) {
|
||||
document.getElementById('body').innerHTML = '此页面使用 Cookie 防止跨站攻击,请启用 Cookie。';
|
||||
}
|
||||
}
|
||||
--></SCRIPT>
|
||||
<title>{title} - CUPS 打印管理</title>
|
||||
</head>
|
||||
<body onload="check_cookies();">
|
||||
<div class="header">
|
||||
<ul>
|
||||
<li><a href="https://openprinting.github.io/cups/" target="_blank">OpenPrinting CUPS</a></li>
|
||||
<li><a {SECTION=admin?class="active" :}href="/">首页</a></li>
|
||||
<li><a {SECTION=admin?class="active" :}href="/admin">管理</a></li>
|
||||
<li><a {SECTION=classes?class="active" :}href="/classes/">打印机类</a></li>
|
||||
<li><a {SECTION=help?class="active" :}href="/help/">帮助</a></li>
|
||||
<li><a {SECTION=jobs?class="active" :}href="/jobs/">任务</a></li>
|
||||
<li><a {SECTION=printers?class="active" :}href="/printers/">打印机</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="body">
|
||||
<div class="row">
|
||||
<h1>{title}</h1>
|
||||
41
cups-templates-zh_CN/help-header.tmpl
Normal file
41
cups-templates-zh_CN/help-header.tmpl
Normal file
@@ -0,0 +1,41 @@
|
||||
<FORM ACTION="/help/{?HELPFILE}" METHOD="GET">
|
||||
{TOPIC?<INPUT TYPE="HIDDEN" NAME="TOPIC" VALUE="{TOPIC}">:}
|
||||
|
||||
<P ALIGN="CENTER"><B>Search in
|
||||
{HELPTITLE?{HELPTITLE}:{TOPIC?{TOPIC}:All Documents}}:</B> <INPUT
|
||||
TYPE="SEARCH" NAME="QUERY" VALUE="{?QUERY}" SIZE="40" PLACEHOLDER=""
|
||||
AUTOSAVE="org.cups.help" RESULTS="20">
|
||||
<INPUT TYPE="SUBMIT" NAME="SEARCH" VALUE="Search">
|
||||
<INPUT TYPE="SUBMIT" NAME="CLEAR" VALUE="Clear"></P>
|
||||
|
||||
</FORM>
|
||||
|
||||
<!-- Bookmarks -->
|
||||
<DIV CLASS="sidebar"><TABLE CLASS="inset" SUMMARY="Contents">
|
||||
<TR><TD>
|
||||
|
||||
<H3 CLASS="title">Online Help Documents</H3>
|
||||
|
||||
<P CLASS="l0"><A HREF="/help/{QUERY??QUERY={QUERY}:}">All Documents</A></P>
|
||||
<HR>
|
||||
|
||||
{[BMTEXT]<P CLASS="l{BMINDENT}"><A HREF="{BMLINK}">{BMTEXT}</A></P>
|
||||
}
|
||||
</TD></TR>
|
||||
</TABLE></DIV>
|
||||
|
||||
{QUERY?<P>Search Results in {HELPFILE?{HELPTITLE}:{TOPIC?{TOPIC}:All Documents}}\:</P>
|
||||
{QTEXT?<UL>
|
||||
{[QTEXT]<LI><A HREF="{QLINK}">{QTEXT}</A>{QPTEXT? (in <I><A HREF="{QPLINK}">{QPTEXT}</A></I>):}</LI>}
|
||||
{QTEXT?</UL>:}
|
||||
:<P>No matches found.</P>}
|
||||
<HR NOSHADE>:}
|
||||
{HELPTITLE?<FORM ACTION="/help/{?HELPFILE}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="PRINTABLE" VALUE="YES"><INPUT TYPE="SUBMIT" VALUE="View Printable Version"></FORM>:
|
||||
|
||||
<H1>Online Help</H1>
|
||||
|
||||
<P>This is the CUPS online help interface. Enter search words above or click on any of the documentation links to display online help information.</P>
|
||||
|
||||
<P>If you are new to CUPS, read the "<a href="/help/overview.html">Overview of CUPS</a>" page.</P>
|
||||
|
||||
<P>The <A HREF="https://openprinting.github.io/cups/">CUPS home page</A> also provides many resources including user discussion forums, answers to frequently-asked questions, and a form for submitting bug reports and feature requests.</P>}
|
||||
9
cups-templates-zh_CN/help-printable.tmpl
Normal file
9
cups-templates-zh_CN/help-printable.tmpl
Normal file
@@ -0,0 +1,9 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
|
||||
<TITLE>{HELPTITLE}</TITLE>
|
||||
<LINK REL="STYLESHEET" TYPE="text/css" HREF="/cups-printable.css">
|
||||
<LINK REL="SHORTCUT ICON" HREF="/images/cups-icon.png" TYPE="image/png">
|
||||
</HEAD>
|
||||
<BODY>
|
||||
0
cups-templates-zh_CN/help-trailer.tmpl
Normal file
0
cups-templates-zh_CN/help-trailer.tmpl
Normal file
3
cups-templates-zh_CN/job-cancel.tmpl
Normal file
3
cups-templates-zh_CN/job-cancel.tmpl
Normal file
@@ -0,0 +1,3 @@
|
||||
<H2 CLASS="title">Cancel Job {job_id}</H2>
|
||||
|
||||
<P><A HREF="{job_printer_uri}">Job {job_id}</A> has been canceled.
|
||||
3
cups-templates-zh_CN/job-hold.tmpl
Normal file
3
cups-templates-zh_CN/job-hold.tmpl
Normal file
@@ -0,0 +1,3 @@
|
||||
<H2 CLASS="title">Hold Job {job_id}</H2>
|
||||
|
||||
<P><A HREF="{job_printer_uri}">Job {job_id}</A> has been held from printing.
|
||||
23
cups-templates-zh_CN/job-move.tmpl
Normal file
23
cups-templates-zh_CN/job-move.tmpl
Normal file
@@ -0,0 +1,23 @@
|
||||
<FORM METHOD="POST" ACTION="/{SECTION}/{job_id?:{printer_name}}">
|
||||
<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
|
||||
<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
|
||||
{job_id?<INPUT TYPE="HIDDEN" NAME="JOB_ID" VALUE="{job_id}">:}
|
||||
|
||||
<H2 CLASS="title">{job_id?Move Job {job_id}:Move All Jobs}</H2>
|
||||
|
||||
<TABLE>
|
||||
<TR>
|
||||
<TH CLASS="label">New Destination:</TH>
|
||||
<TD>
|
||||
<SELECT NAME="JOB_PRINTER_URI" SIZE="10">
|
||||
{[job_printer_uri]<OPTION VALUE="{job_printer_uri}">{job_printer_name}}
|
||||
</SELECT>
|
||||
</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD></TD>
|
||||
<TD><INPUT TYPE="SUBMIT" VALUE="{job_id?Move Job:Move Jobs}"></TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
|
||||
</FORM>
|
||||
4
cups-templates-zh_CN/job-moved.tmpl
Normal file
4
cups-templates-zh_CN/job-moved.tmpl
Normal file
@@ -0,0 +1,4 @@
|
||||
<H2 CLASS="title">{job_id?Move Job {job_id}:Move All Jobs}</H2>
|
||||
|
||||
<P>{job_id?<A HREF="/jobs/{job_id}">Job {job_id}</A>:All jobs} moved to
|
||||
<A HREF="/{is_class?classes:printers}/{job_printer_name}">{job_printer_name}</A>.</P>
|
||||
3
cups-templates-zh_CN/job-release.tmpl
Normal file
3
cups-templates-zh_CN/job-release.tmpl
Normal file
@@ -0,0 +1,3 @@
|
||||
<H2 CLASS="title">Release Job {job_id}</H2>
|
||||
|
||||
<P><A HREF="{job_printer_uri}">Job {job_id}</A> has been released for printing.
|
||||
3
cups-templates-zh_CN/job-restart.tmpl
Normal file
3
cups-templates-zh_CN/job-restart.tmpl
Normal file
@@ -0,0 +1,3 @@
|
||||
<H2 CLASS="title">Reprint Job {job_id}</H2>
|
||||
|
||||
<P><A HREF="{job_printer_uri}">Job {job_id}</A> has been restarted.
|
||||
5
cups-templates-zh_CN/jobs-header.tmpl
Normal file
5
cups-templates-zh_CN/jobs-header.tmpl
Normal file
@@ -0,0 +1,5 @@
|
||||
{?which_jobs=?:<FORM ACTION="{?printer_name=?/jobs:{printer_uri_supported}}" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="显示活动任务"></FORM>}
|
||||
{?which_jobs=completed?:<FORM ACTION="{?printer_name=?/jobs:{printer_uri_supported}}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="which_jobs" VALUE="completed"><INPUT TYPE="SUBMIT" VALUE="显示已完成任务"></FORM>}
|
||||
{?which_jobs=all?:<FORM ACTION="{?printer_name=?/jobs:{printer_uri_supported}}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="which_jobs" VALUE="all"><INPUT TYPE="SUBMIT" VALUE="显示所有任务"></FORM>}
|
||||
|
||||
<P ALIGN="CENTER">{?which_jobs=?活动任务按处理顺序排列;挂起任务显示在前面。:{which_jobs=all?任务按顺序排列:已完成任务按完成顺序排列}}</P>
|
||||
36
cups-templates-zh_CN/jobs.tmpl
Normal file
36
cups-templates-zh_CN/jobs.tmpl
Normal file
@@ -0,0 +1,36 @@
|
||||
{#job_id=0?:
|
||||
<TABLE CLASS="list" SUMMARY="任务列表">
|
||||
<THEAD>
|
||||
<TR><TH>编号</TH><TH>名称</TH><TH>用户</TH><TH>大小</TH><TH>页数</TH><TH>状态</TH><TH>操作</TH></TR>
|
||||
</THEAD>
|
||||
<TBODY>
|
||||
{[job_id]
|
||||
<TR VALIGN="TOP">
|
||||
<TD><A HREF="{job_printer_uri}">{job_printer_name}</A>-{job_id}{?phone? ({phone}):} </TD>
|
||||
<TD>{?job_name=?未知:{job_name}} </TD>
|
||||
<TD>{?job_originating_user_name=?未提供:{job_originating_user_name}} </TD>
|
||||
<TD>{job_k_octets}k </TD>
|
||||
<TD>{job_impressions_completed=0?未知:{?job_impressions_completed}} </TD>
|
||||
<TD>{job_state=3?等待中<BR>{?time_at_creation=?未知:{time_at_creation}}:{job_state=4?已挂起<BR>{?time_at_creation=?未知:{time_at_creation}}:
|
||||
{job_state=5?处理中<BR>{?time_at_processing=?未知:{time_at_processing}}:{job_state=6?已停止:
|
||||
{job_state=7?已取消<BR>{?time_at_completed=?未知:{time_at_completed}}:{job_state=8?已中止:已完成<BR>{?time_at_completed=?未知:{time_at_completed}}}}}}}} {job_printer_state_message?<BR>
|
||||
<EM>"{job_printer_state_message}"</EM>:}</TD>
|
||||
<TD>
|
||||
{job_preserved>0?{job_state>5?
|
||||
<FORM ACTION="/jobs/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="restart-job"><INPUT TYPE="HIDDEN" NAME="job_id" VALUE="{job_id}"><INPUT TYPE="HIDDEN" NAME="job_printer_uri" VALUE="{job_printer_uri}"><INPUT TYPE="SUBMIT" VALUE="重新打印"></FORM>:}:}
|
||||
{job_state=4?{job_hold_until=auth-info-required?需要认证:
|
||||
<FORM ACTION="/jobs/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="release-job"><INPUT TYPE="HIDDEN" NAME="job_id" VALUE="{job_id}"><INPUT TYPE="HIDDEN" NAME="job_printer_uri" VALUE="{job_printer_uri}">
|
||||
<INPUT TYPE="SUBMIT" VALUE="释放任务"></FORM>:}:}
|
||||
{job_state=3?
|
||||
<FORM ACTION="/jobs/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="hold-job"><INPUT TYPE="HIDDEN" NAME="job_id" VALUE="{job_id}"><INPUT TYPE="HIDDEN" NAME="job_printer_uri" VALUE="{job_printer_uri}">
|
||||
<INPUT TYPE="SUBMIT" VALUE="挂起任务"></FORM>:}
|
||||
{job_state<7?
|
||||
<FORM ACTION="/jobs/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="cancel-job"><INPUT TYPE="HIDDEN" NAME="job_id" VALUE="{job_id}"><INPUT TYPE="HIDDEN" NAME="job_printer_uri" VALUE="{job_printer_uri}">
|
||||
<INPUT TYPE="SUBMIT" VALUE="取消任务"></FORM>
|
||||
<FORM ACTION="/jobs/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="move-job"><INPUT TYPE="HIDDEN" NAME="job_id" VALUE="{job_id}"><INPUT TYPE="SUBMIT" VALUE="移动任务"></FORM>:}
|
||||
</TD>
|
||||
</TR>
|
||||
}
|
||||
</TBODY>
|
||||
</TABLE>
|
||||
}
|
||||
7
cups-templates-zh_CN/list-available-printers.tmpl
Normal file
7
cups-templates-zh_CN/list-available-printers.tmpl
Normal file
@@ -0,0 +1,7 @@
|
||||
<H2 CLASS="title">Available Printers</H2>
|
||||
|
||||
{#device_uri=0?<P>No printers found.</P>
|
||||
:<UL>{[device_uri]
|
||||
<LI><FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="add-printer"><INPUT TYPE="HIDDEN" NAME="TEMPLATE_NAME" VALUE="{template_name}"><INPUT TYPE="HIDDEN" NAME="PRINTER_LOCATION" VALUE="Local Printer"><INPUT TYPE="HIDDEN" NAME="PRINTER_INFO" VALUE="{device_make_and_model}"><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}"><INPUT TYPE="SUBMIT" VALUE="Add This Printer"></FORM>
|
||||
{device_make_and_model} ({device_info})</LI>
|
||||
}</UL>}
|
||||
31
cups-templates-zh_CN/modify-class.tmpl
Normal file
31
cups-templates-zh_CN/modify-class.tmpl
Normal file
@@ -0,0 +1,31 @@
|
||||
<H2 CLASS="title">Modify Class {printer_name}</H2>
|
||||
|
||||
<FORM METHOD="POST" ACTION="/admin">
|
||||
<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
|
||||
<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
|
||||
<INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">
|
||||
|
||||
<TABLE>
|
||||
<TR>
|
||||
<TH CLASS="label">Description:</TH>
|
||||
<TD><INPUT TYPE="TEXT" NAME="PRINTER_INFO" VALUE="{?printer_info}" SIZE="40" MAXLENGTH="127"></TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TH CLASS="label">Location:</TH>
|
||||
<TD><INPUT TYPE="TEXT" NAME="PRINTER_LOCATION" VALUE="{?printer_location}" SIZE="40" MAXLENGTH="127"></TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TH CLASS="label">Members:</TH>
|
||||
<TD>
|
||||
<SELECT NAME="MEMBER_URIS" SIZE="10" MULTIPLE>
|
||||
{[member_uris]<OPTION VALUE="{member_uris}" {?member_selected}>{member_names}}
|
||||
</SELECT>
|
||||
</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD></TD>
|
||||
<TD><INPUT TYPE="SUBMIT" VALUE="Modify Class"></TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
|
||||
</FORM>
|
||||
39
cups-templates-zh_CN/modify-printer.tmpl
Normal file
39
cups-templates-zh_CN/modify-printer.tmpl
Normal file
@@ -0,0 +1,39 @@
|
||||
<H2 CLASS="title">Modify {printer_name}</H2>
|
||||
|
||||
<FORM METHOD="POST" ACTION="/admin">
|
||||
<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
|
||||
<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
|
||||
<INPUT TYPE="HIDDEN" NAME="BAUDRATE" VALUE="{?baudrate}">
|
||||
<INPUT TYPE="HIDDEN" NAME="BITS" VALUE="{?bits}">
|
||||
<INPUT TYPE="HIDDEN" NAME="PARITY" VALUE="{?parity}">
|
||||
<INPUT TYPE="HIDDEN" NAME="FLOW" VALUE="{?flow}">
|
||||
<INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">
|
||||
|
||||
<TABLE>
|
||||
<TR>
|
||||
<TH CLASS="label">Description:</TH>
|
||||
<TD><INPUT TYPE="TEXT" NAME="PRINTER_INFO" VALUE="{?printer_info}" SIZE="40" MAXLENGTH="127"><BR>
|
||||
<SMALL>(Human-readable description such as "HP LaserJet with Duplexer")</SMALL></TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TH CLASS="label">Location:</TH>
|
||||
<TD><INPUT TYPE="TEXT" NAME="PRINTER_LOCATION" VALUE="{?printer_location}" SIZE="40" MAXLENGTH="127"><BR>
|
||||
<SMALL>(Human-readable location such as "Lab 1")</SMALL></TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TH CLASS="label">Connection:</TH>
|
||||
<TD><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">{device_uri}</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TH CLASS="label">Sharing:</TH>
|
||||
<TD><INPUT TYPE="CHECKBOX" NAME="PRINTER_IS_SHARED" ID="PRINTER_IS_SHARED" {PRINTER_IS_SHARED=1?CHECKED:}>
|
||||
<LABEL FOR="PRINTER_IS_SHARED">Share This Printer</LABEL></TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TR>
|
||||
<TD></TD>
|
||||
<TD><INPUT TYPE="SUBMIT" VALUE="Continue"></TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
|
||||
</FORM>
|
||||
4
cups-templates-zh_CN/norestart.tmpl
Normal file
4
cups-templates-zh_CN/norestart.tmpl
Normal file
@@ -0,0 +1,4 @@
|
||||
<H2 CLASS="title">Change Settings</H2>
|
||||
|
||||
<P>The server was not restarted because no changes were made to
|
||||
the configuration...</P>
|
||||
6
cups-templates-zh_CN/option-boolean.tmpl
Normal file
6
cups-templates-zh_CN/option-boolean.tmpl
Normal file
@@ -0,0 +1,6 @@
|
||||
<TR>
|
||||
<TH {conflicted=1?CLASS="conflict":CLASS="label"} WIDTH="50%"><A NAME="{keyword}">{keytext}</A>:</TH>
|
||||
<TD>
|
||||
{[choices]<INPUT TYPE="RADIO" NAME="{keyword-1}" ID="{keyword-1}" {choices={defchoice-1}?CHECKED:} VALUE="{choices}"><LABEL FOR="{keyword-1}">{text}</LABEL>}
|
||||
</TD>
|
||||
</TR>
|
||||
7
cups-templates-zh_CN/option-conflict.tmpl
Normal file
7
cups-templates-zh_CN/option-conflict.tmpl
Normal file
@@ -0,0 +1,7 @@
|
||||
<P><B>Error:</B> The following options are conflicting:</P>
|
||||
|
||||
<UL>
|
||||
{[ckeyword]<LI><A HREF="#{ckeyword}">{ckeytext}</A>: {cchoice}</LI>
|
||||
}</UL>
|
||||
|
||||
<P>Please change one or more of the options to resolve the conflicts.</P>
|
||||
5
cups-templates-zh_CN/option-header.tmpl
Normal file
5
cups-templates-zh_CN/option-header.tmpl
Normal file
@@ -0,0 +1,5 @@
|
||||
<DIV CLASS="tab" ID="{group_id}">
|
||||
|
||||
<H3 ALIGN="CENTER">{group}</H3>
|
||||
|
||||
<TABLE WIDTH="100%">
|
||||
6
cups-templates-zh_CN/option-pickmany.tmpl
Normal file
6
cups-templates-zh_CN/option-pickmany.tmpl
Normal file
@@ -0,0 +1,6 @@
|
||||
<TR>
|
||||
<TH {conflicted=1?CLASS="conflict":CLASS="label"} WIDTH="50%"><A NAME="{keyword}">{keytext}</A>:</TH>
|
||||
<TD><SELECT NAME="{keyword}" MULTIPLE SIZE="10">
|
||||
{[choices]<OPTION {choices={defchoice-1}?SELECTED:} VALUE="{choices}">{text}}
|
||||
</SELECT></TD>
|
||||
</TR>
|
||||
18
cups-templates-zh_CN/option-pickone.tmpl
Normal file
18
cups-templates-zh_CN/option-pickone.tmpl
Normal file
@@ -0,0 +1,18 @@
|
||||
<TR>
|
||||
<TH {conflicted=1?CLASS="conflict":CLASS="label"} WIDTH="50%"><A NAME="{keyword}">{keytext}</A>:</TH>
|
||||
<TD><SELECT NAME="{keyword}" ID="select-{keyword}" ONCHANGE="update_paramtable('{keyword}')">
|
||||
{[choices]<OPTION {choices={defchoice-1}?SELECTED:} VALUE="{choices}">{text}}
|
||||
</SELECT>
|
||||
{iscustom=1?<TABLE NAME="paramtable" id="{keyword}-params">{[params]
|
||||
<TR><TH CLASS="sublabel">{paramtext}:</TH>
|
||||
<TD>{params=Units?<SELECT NAME="{keyword-1}.{params}">
|
||||
<OPTION VALUE="pt"{paramvalue=pt? SELECTED:}>Points</OPTION>
|
||||
<OPTION VALUE="mm"{paramvalue=mm? SELECTED:}>Millimeters</OPTION>
|
||||
<OPTION VALUE="cm"{paramvalue=cm? SELECTED:}>Centimeters</OPTION>
|
||||
<OPTION VALUE="in"{paramvalue=in? SELECTED:}>Inches</OPTION>
|
||||
<OPTION VALUE="ft"{paramvalue=ft? SELECTED:}>Feet</OPTION>
|
||||
<OPTION VALUE="m"{paramvalue=m? SELECTED:}>Meters</OPTION>
|
||||
</SELECT>:<INPUT TYPE="{inputtype}" NAME="{keyword-1}.{params}" VALUE="{paramvalue}">}</TD></TR>
|
||||
}</TABLE>
|
||||
</TD>:}
|
||||
</TR>
|
||||
5
cups-templates-zh_CN/option-trailer.tmpl
Normal file
5
cups-templates-zh_CN/option-trailer.tmpl
Normal file
@@ -0,0 +1,5 @@
|
||||
</TABLE>
|
||||
|
||||
<P ALIGN="CENTER"><INPUT TYPE="SUBMIT" VALUE="Set Default Options"></P>
|
||||
|
||||
</DIV>
|
||||
7
cups-templates-zh_CN/pager.tmpl
Normal file
7
cups-templates-zh_CN/pager.tmpl
Normal file
@@ -0,0 +1,7 @@
|
||||
<TABLE CLASS="inset" SUMMARY="Paging Bar">
|
||||
<TR>
|
||||
<TD WIDTH="50%">{PREV?{PREV>0?<FORM ACTION="{THISURL}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="QUERY" VALUE="{?QUERY}"><INPUT TYPE="HIDDEN" NAME="WHICH_JOBS" VALUE="{?WHICH_JOBS}"><INPUT TYPE="HIDDEN" NAME="FIRST" VALUE="0"><INPUT TYPE="SUBMIT" VALUE="◀◀ Show First"></FORM> :}<FORM ACTION="{THISURL}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="QUERY" VALUE="{?QUERY}"><INPUT TYPE="HIDDEN" NAME="WHICH_JOBS" VALUE="{?WHICH_JOBS}"><INPUT TYPE="HIDDEN" NAME="FIRST" VALUE="{PREV}"><INPUT TYPE="SUBMIT" VALUE="◀ Show Previous"></FORM>: }</TD>
|
||||
<TD WIDTH="50%" ALIGN="RIGHT">{NEXT?<FORM ACTION="{THISURL}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="QUERY" VALUE="{?QUERY}"><INPUT TYPE="HIDDEN" NAME="ORDER" VALUE="{?ORDER}"><INPUT TYPE="HIDDEN" NAME="WHICH_JOBS" VALUE="{?WHICH_JOBS}"><INPUT TYPE="HIDDEN" NAME="FIRST" VALUE="{NEXT}"><INPUT TYPE="SUBMIT" VALUE="Show Next ▶"></FORM>: }
|
||||
{LAST?<FORM ACTION="{THISURL}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="QUERY" VALUE="{?QUERY}"><INPUT TYPE="HIDDEN" NAME="WHICH_JOBS" VALUE="{?WHICH_JOBS}"><INPUT TYPE="HIDDEN" NAME="FIRST" VALUE="{LAST}"><INPUT TYPE="SUBMIT" VALUE="Show Last ▶▶"></FORM>:}</TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
5
cups-templates-zh_CN/printer-accept.tmpl
Normal file
5
cups-templates-zh_CN/printer-accept.tmpl
Normal file
@@ -0,0 +1,5 @@
|
||||
<H2 CLASS="title">Accept Jobs On {is_class?Class:Printer} {printer_name}</H2>
|
||||
|
||||
<P>{is_class?Class:Printer} <A
|
||||
HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
|
||||
is now accepting jobs.</P>
|
||||
15
cups-templates-zh_CN/printer-added.tmpl
Normal file
15
cups-templates-zh_CN/printer-added.tmpl
Normal file
@@ -0,0 +1,15 @@
|
||||
<H2 CLASS="title">Add Printer {printer_name}</H2>
|
||||
|
||||
<P>Printer <A HREF="/printers/{printer_name}">{printer_name}</A> has been added
|
||||
successfully.
|
||||
|
||||
<blockquote>
|
||||
<b>Note:<b>Printer drivers and raw queues are deprecated and will stop working in a future version of CUPS.
|
||||
</blockquote>
|
||||
|
||||
<FORM ACTION="admin/" METHOD="POST">
|
||||
<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
|
||||
<INPUT TYPE="HIDDEN" NAME="OP" VALUE="set-printer-options">
|
||||
<INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}">
|
||||
<INPUT TYPE="SUBMIT" VALUE="Set Printer Options">
|
||||
</FORM>
|
||||
5
cups-templates-zh_CN/printer-cancel-jobs.tmpl
Normal file
5
cups-templates-zh_CN/printer-cancel-jobs.tmpl
Normal file
@@ -0,0 +1,5 @@
|
||||
<H2 CLASS="title">Cancel Jobs On {is_class?Class:Printer} {printer_name}</H2>
|
||||
|
||||
<P>All jobs on {is_class?class:printer} <A
|
||||
HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
|
||||
have been canceled.</P>
|
||||
4
cups-templates-zh_CN/printer-configured.tmpl
Normal file
4
cups-templates-zh_CN/printer-configured.tmpl
Normal file
@@ -0,0 +1,4 @@
|
||||
<H2 CLASS="title">Set Default Options for {printer_name}</H2>
|
||||
|
||||
<P>{OP=set-class-options?Class <A HREF="/classes/{printer_name}">:Printer <A HREF="/printers/{printer_name}">}{printer_name}</A>
|
||||
default options have been set successfully.
|
||||
6
cups-templates-zh_CN/printer-confirm.tmpl
Normal file
6
cups-templates-zh_CN/printer-confirm.tmpl
Normal file
@@ -0,0 +1,6 @@
|
||||
<H2 CLASS="title">Delete Printer {printer_name}</H2>
|
||||
|
||||
<P><B>Warning:</B> Are you sure you want to delete printer
|
||||
{printer_name}?</P>
|
||||
|
||||
<P ALIGN="CENTER"><FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="delete-printer"><INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}"><INPUT TYPE="SUBMIT" NAME="confirm" VALUE="Delete Printer"></FORM></P>
|
||||
9
cups-templates-zh_CN/printer-default.tmpl
Normal file
9
cups-templates-zh_CN/printer-default.tmpl
Normal file
@@ -0,0 +1,9 @@
|
||||
<H2 CLASS="title">Set {is_class?Class:Printer} {printer_name} As Default</H2>
|
||||
|
||||
<P>{is_class?Class:Printer} <A
|
||||
HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
|
||||
has been made the default printer on the server.</P>
|
||||
|
||||
<BLOCKQUOTE><B>Note:</B> Any user default that has been set via
|
||||
the <TT>lpoptions</TT> command will override this default
|
||||
setting.</BLOCKQUOTE>
|
||||
3
cups-templates-zh_CN/printer-deleted.tmpl
Normal file
3
cups-templates-zh_CN/printer-deleted.tmpl
Normal file
@@ -0,0 +1,3 @@
|
||||
<H2 CLASS="title">Delete Printer {printer_name}</H2>
|
||||
|
||||
<P>Printer {printer_name} has been deleted successfully.
|
||||
1
cups-templates-zh_CN/printer-jobs-header.tmpl
Normal file
1
cups-templates-zh_CN/printer-jobs-header.tmpl
Normal file
@@ -0,0 +1 @@
|
||||
<H3 CLASS="title">Jobs</H3>
|
||||
4
cups-templates-zh_CN/printer-modified.tmpl
Normal file
4
cups-templates-zh_CN/printer-modified.tmpl
Normal file
@@ -0,0 +1,4 @@
|
||||
<H2 CLASS="title">Modify Printer {printer_name}</H2>
|
||||
|
||||
<P>Printer <A HREF="/printers/{printer_name}">{printer_name}</A> has been
|
||||
modified successfully.
|
||||
5
cups-templates-zh_CN/printer-reject.tmpl
Normal file
5
cups-templates-zh_CN/printer-reject.tmpl
Normal file
@@ -0,0 +1,5 @@
|
||||
<H2 CLASS="title">Reject Jobs On {is_class?Class:Printer} {printer_name}</H2>
|
||||
|
||||
<P>{is_class?Class:Printer} <A
|
||||
HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
|
||||
is no longer accepting jobs.</P>
|
||||
5
cups-templates-zh_CN/printer-start.tmpl
Normal file
5
cups-templates-zh_CN/printer-start.tmpl
Normal file
@@ -0,0 +1,5 @@
|
||||
<H2 CLASS="title">Resume {is_class?Class:Printer} {printer_name}</H2>
|
||||
|
||||
<P>{is_class?Class:Printer} <A
|
||||
HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
|
||||
has been resumed.</P>
|
||||
5
cups-templates-zh_CN/printer-stop.tmpl
Normal file
5
cups-templates-zh_CN/printer-stop.tmpl
Normal file
@@ -0,0 +1,5 @@
|
||||
<H2 CLASS="title">Pause {is_class?Class:Printer} {printer_name}</H2>
|
||||
|
||||
<P>{is_class?Class:Printer} <A
|
||||
HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
|
||||
has been paused.</P>
|
||||
43
cups-templates-zh_CN/printer.tmpl
Normal file
43
cups-templates-zh_CN/printer.tmpl
Normal file
@@ -0,0 +1,43 @@
|
||||
<H2 CLASS="title"><A HREF="{printer_uri_supported}">{printer_name}</A>
|
||||
({printer_state=3?空闲:{printer_state=4?处理中:已暂停}},
|
||||
{printer_is_accepting_jobs=0?拒绝任务:接受任务},
|
||||
{server_is_sharing_printers=0?未:{printer_is_shared=0?未:}}共享{default_name={printer_name}?, 服务器默认:})</H2>
|
||||
|
||||
<FORM METHOD="POST" ACTION="{printer_uri_supported}" NAME="maintenance">
|
||||
<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
|
||||
<SELECT NAME="OP" ONCHANGE="document.maintenance.submit();">
|
||||
<OPTION VALUE="">维护</OPTION>
|
||||
<OPTION VALUE="print-test-page">打印测试页</OPTION>
|
||||
{printer_commands~.*Clean.*?<OPTION VALUE="clean-print-heads">清洗打印头</OPTION>:}
|
||||
{printer_commands~.*PrintSelfTestPage.*?<OPTION VALUE="print-self-test-page">打印自检页</OPTION>:}
|
||||
{printer_state=5?<OPTION VALUE="start-printer">恢复打印机</OPTION>:<OPTION VALUE="stop-printer">暂停打印机</OPTION>}
|
||||
{printer_is_accepting_jobs=0?<OPTION VALUE="accept-jobs">接受任务</OPTION>:<OPTION VALUE="reject-jobs">拒绝任务</OPTION>}
|
||||
<OPTION VALUE="move-jobs">移动所有任务</OPTION>
|
||||
<OPTION VALUE="cancel-jobs">取消所有任务</OPTION>
|
||||
</SELECT>
|
||||
<NOSCRIPT><INPUT TYPE="SUBMIT" VALUE="执行"></NOSCRIPT>
|
||||
</FORM>
|
||||
|
||||
<FORM METHOD="POST" ACTION="{admin_uri}" NAME="administration">
|
||||
<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
|
||||
<INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}">
|
||||
<SELECT NAME="OP" ONCHANGE="document.administration.submit();">
|
||||
<OPTION VALUE="">管理</OPTION>
|
||||
<OPTION VALUE="modify-printer">修改打印机</OPTION>
|
||||
<OPTION VALUE="delete-printer">删除打印机</OPTION>
|
||||
<OPTION VALUE="set-printer-options">设置默认选项</OPTION>
|
||||
<OPTION VALUE="set-as-default">设为服务器默认</OPTION>
|
||||
<OPTION VALUE="set-allowed-users">设置允许用户</OPTION>
|
||||
</SELECT>
|
||||
<NOSCRIPT><INPUT TYPE="SUBMIT" VALUE="执行"></NOSCRIPT>
|
||||
</FORM>
|
||||
|
||||
<TABLE SUMMARY="{printer_name}">
|
||||
<TR><TH ALIGN="RIGHT" VALIGN="TOP">描述:</TH><TD>{printer_info}</TD></TR>
|
||||
<TR><TH ALIGN="RIGHT" VALIGN="TOP">位置:</TH><TD>{printer_location}</TD></TR>
|
||||
<TR><TH ALIGN="RIGHT" VALIGN="TOP">驱动:</TH><TD>{printer_make_and_model} ({color_supported=1?彩色:灰度}{sides_supported=one-sided?:, 双面打印})<BR>
|
||||
<TR><TH ALIGN="RIGHT" VALIGN="TOP">连接:</TH><TD>{device_uri}</TD></TR>
|
||||
<TR><TH ALIGN="RIGHT" VALIGN="TOP">默认设置:</TH><TD>job-sheets={job_sheets_default}
|
||||
media={media_default?{media_default}:未知}
|
||||
{sides_default?sides={sides_default}:}</TD></TR>
|
||||
</TABLE>
|
||||
1
cups-templates-zh_CN/printers-header.tmpl
Normal file
1
cups-templates-zh_CN/printers-header.tmpl
Normal file
@@ -0,0 +1 @@
|
||||
<P ALIGN="CENTER">{total=0?没有打印机:显示 {total} 台打印机中的 {#printer_name} 台}。</P>
|
||||
11
cups-templates-zh_CN/printers.tmpl
Normal file
11
cups-templates-zh_CN/printers.tmpl
Normal file
@@ -0,0 +1,11 @@
|
||||
{#printer_name=0?:
|
||||
<TABLE CLASS="list" SUMMARY="打印机列表">
|
||||
<THEAD>
|
||||
<TR><TH>队列名称</TH><TH>描述</TH><TH>位置</TH><TH>品牌型号</TH><TH>状态</TH></TR>
|
||||
</THEAD>
|
||||
<TBODY>
|
||||
{[printer_name]
|
||||
<TR><TD><A HREF="{printer_uri_supported}">{printer_name}</A></TD><TD>{printer_info}</TD><TD>{printer_location}</TD><TD>{printer_make_and_model}</TD><TD>{printer_state=3?空闲:{printer_state=4?处理中:已暂停}}{printer_state_message? - "{printer_state_message}":}</TD></TR>
|
||||
}
|
||||
</TBODY>
|
||||
</TABLE></DIV>}
|
||||
4
cups-templates-zh_CN/restart.tmpl
Normal file
4
cups-templates-zh_CN/restart.tmpl
Normal file
@@ -0,0 +1,4 @@
|
||||
<H2 CLASS="title">Change Settings</H2>
|
||||
|
||||
<P><IMG SRC="data:image/gif;base64,R0lGODlhEAAQAIQAAP///wAAAPDw8IqKiuDg4EZGRnp6egAAAFhYWCQkJKysrL6+vhQUFJycnAQEBDY2NmhoaP///////////////////////////////////////////////////////////yH/C05FVFNDQVBFMi4wAwEAAAAh+QQABQD/ACwAAAAAEAAQAAAFdyAgAgIJIeWoAkRCCMdBkKtIHIngyMKsErPBYbADpkSCwhDmQCBethRB6Vj4kFCkQPG4IlWDgrNRIwnO4UKBXDufzQvDMaoSDBgFb886MiQadgNABAokfCwzBA8LCg0Egl8jAggGAA1kBIA1BAYzlyILczULC2UhACH5BAEFAB8ALAAAAAAQABAAAAV2ICACAmlAZTmOREEIyUEQjLKKxPHADhEvqxlgcGgkGI1DYSVAIAWMx+lwSKkICJ0QsHi9RgKBwnVTiRQQgwF4I4UFDQQEwi6/3YSGWRRmjhEETAJfIgMFCnAKM0KDV4EEEAQLiF18TAYNXDaSe3x6mjidN1s3IQAh+QQBBQAfACwAAAAAEAAQAAAFeCAgAgLZDGU5jgRECEUiCI+yioSDwDJyLKsXoHFQxBSHAoAAFBhqtMJg8DgQBgfrEsJAEAg4YhZIEiwgKtHiMBgtpg3wbUZXGO7kOb1MUKRFMysCChAoggJCIg0GC2aNe4gqQldfL4l/Ag1AXySJgn5LcoE3QXI3IQAh+QQBBQAfACwAAAAAEAAQAAAFdiAgAgLZNGU5joQhCEjxIssqEo8bC9BRjy9Ag7GILQ4QEoE0gBAEBcOpcBA0DoxSK/e8LRIHn+i1cK0IyKdg0VAoljYIg+GgnRrwVS/8IAkICyosBIQpBAMoKy9dImxPhS+GKkFrkX+TigtLlIyKXUF+NjagNiEAIfkEAQUAHwAsAAAAABAAEAAABWwgIAICaRhlOY4EIgjH8R7LKhKHGwsMvb4AAy3WODBIBBKCsYA9TjuhDNDKEVSERezQEL0WrhXucRUQGuik7bFlngzqVW9LMl9XWvLdjFaJtDFqZ1cEZUB0dUgvL3dgP4WJZn4jkomWNpSTIyEAIfkEAQUAHwAsAAAAABAAEAAABX4gIAICuSxlOY6CIgiD8RrEKgqGOwxwUrMlAoSwIzAGpJpgoSDAGifDY5kopBYDlEpAQBwevxfBtRIUGi8xwWkDNBCIwmC9Vq0aiQQDQuK+VgQPDXV9hCJjBwcFYU5pLwwHXQcMKSmNLQcIAExlbH8JBwttaX0ABAcNbWVbKyEAIfkEAQUAHwAsAAAAABAAEAAABXkgIAICSRBlOY7CIghN8zbEKsKoIjdFzZaEgUBHKChMJtRwcWpAWoWnifm6ESAMhO8lQK0EEAV3rFopIBCEcGwDKAqPh4HUrY4ICHH1dSoTFgcHUiZjBhAJB2AHDykpKAwHAwdzf19KkASIPl9cDgcnDkdtNwiMJCshACH5BAEFAB8ALAAAAAAQABAAAAV3ICACAkkQZTmOAiosiyAoxCq+KPxCNVsSMRgBsiClWrLTSWFoIQZHl6pleBh6suxKMIhlvzbAwkBWfFWrBQTxNLq2RG2yhSUkDs2b63AYDAoJXAcFRwADeAkJDX0AQCsEfAQMDAIPBz0rCgcxky0JRWE1AmwpKyEAIfkEAQUAHwAsAAAAABAAEAAABXkgIAICKZzkqJ4nQZxLqZKv4NqNLKK2/Q4Ek4lFXChsg5ypJjs1II3gEDUSRInEGYAw6B6zM4JhrDAtEosVkLUtHA7RHaHAGJQEjsODcEg0FBAFVgkQJQ1pAwcDDw8KcFtSInwJAowCCA6RIwqZAgkPNgVpWndjdyohACH5BAEFAB8ALAAAAAAQABAAAAV5ICACAimc5KieLEuUKvm2xAKLqDCfC2GaO9eL0LABWTiBYmA06W6kHgvCqEJiAIJiu3gcvgUsscHUERm+kaCxyxa+zRPk0SgJEgfIvbAdIAQLCAYlCj4DBw0IBQsMCjIqBAcPAooCBg9pKgsJLwUFOhCZKyQDA3YqIQAh+QQBBQAfACwAAAAAEAAQAAAFdSAgAgIpnOSonmxbqiThCrJKEHFbo8JxDDOZYFFb+A41E4H4OhkOipXwBElYITDAckFEOBgMQ3arkMkUBdxIUGZpEb7kaQBRlASPg0FQQHAbEEMGDSVEAA1QBhAED1E0NgwFAooCDWljaQIQCE5qMHcNhCkjIQAh+QQBBQAfACwAAAAAEAAQAAAFeSAgAgIpnOSoLgxxvqgKLEcCC65KEAByKK8cSpA4DAiHQ/DkKhGKh4ZCtCyZGo6F6iYYPAqFgYy02xkSaLEMV34tELyRYNEsCQyHlvWkGCzsPgMCEAY7Cg04Uk48LAsDhRA8MVQPEF0GAgqYYwSRlycNcWskCkApIyEAOw==" WIDTH="16" HEIGHT="16" ALIGN="ABSMIDDLE"
|
||||
ALT="Busy Indicator"> Please stand by while the server restarts...</P>
|
||||
10
cups-templates-zh_CN/search.tmpl
Normal file
10
cups-templates-zh_CN/search.tmpl
Normal file
@@ -0,0 +1,10 @@
|
||||
<FORM ACTION="/{SECTION}/{?SEARCH_DEST}" METHOD="GET">
|
||||
{WHICH_JOBS?<INPUT TYPE="HIDDEN" NAME="WHICH_JOBS" VALUE="{WHICH_JOBS}">:}
|
||||
{ORDER?<INPUT TYPE="HIDDEN" NAME="ORDER" VALUE="{ORDER}">:}
|
||||
|
||||
<P ALIGN="CENTER"><B>在
|
||||
{SEARCH_DEST?{SEARCH_DEST}:{SECTION=classes?打印机类:{SECTION=jobs?任务:打印机}}} 中搜索:</B>
|
||||
<INPUT TYPE="SEARCH" NAME="QUERY" VALUE="{?QUERY}" SIZE="40" PLACEHOLDER="" AUTOSAVE="org.cups.{SECTION}" RESULTS="20"> <INPUT
|
||||
TYPE="SUBMIT" VALUE="搜索"> <INPUT TYPE="SUBMIT" NAME="CLEAR" VALUE="清除"></P>
|
||||
|
||||
</FORM>
|
||||
24
cups-templates-zh_CN/set-printer-options-header.tmpl
Normal file
24
cups-templates-zh_CN/set-printer-options-header.tmpl
Normal file
@@ -0,0 +1,24 @@
|
||||
<H2 CLASS="title">Set Default Options for {printer_name}</H2>
|
||||
|
||||
<FORM METHOD="POST" ACTION="/admin">
|
||||
<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
|
||||
<INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">
|
||||
<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
|
||||
{HAVE_AUTOCONFIGURE?<INPUT TYPE="SUBMIT" NAME="AUTOCONFIGURE" VALUE="Query Printer for Default Options">:}
|
||||
|
||||
<SCRIPT TYPE="text/javascript"><!--
|
||||
function update_paramtable(option)
|
||||
{
|
||||
var cb = document.getElementById("select-" + option)
|
||||
var paramstable = document.getElementById(option + "-params");
|
||||
if (cb.value == "Custom")
|
||||
paramstable.style.display = "table";
|
||||
else
|
||||
paramstable.style.display = "none";
|
||||
}
|
||||
--></SCRIPT>
|
||||
|
||||
<H3 CLASS="title">{[group_id]
|
||||
<A HREF="#{group_id}">{group}</A> }</H3>
|
||||
|
||||
<DIV CLASS="tabs">
|
||||
14
cups-templates-zh_CN/set-printer-options-trailer.tmpl
Normal file
14
cups-templates-zh_CN/set-printer-options-trailer.tmpl
Normal file
@@ -0,0 +1,14 @@
|
||||
</DIV>
|
||||
|
||||
<SCRIPT TYPE="text/javascript"><!--
|
||||
// Hide custom options parameters for browsers that understand Javascript
|
||||
var paramtables = document.getElementsByName("paramtable");
|
||||
for (var i = 0; i < paramtables.length; i++)
|
||||
{
|
||||
var opt = paramtables[i].id.substr(0, paramtables[i].id.lastIndexOf("-"));
|
||||
var cb = document.getElementById("select-" + opt);
|
||||
if (cb.value != "Custom")
|
||||
paramtables[i].style.display = "none";
|
||||
}
|
||||
--></SCRIPT>
|
||||
</FORM>
|
||||
4
cups-templates-zh_CN/test-page.tmpl
Normal file
4
cups-templates-zh_CN/test-page.tmpl
Normal file
@@ -0,0 +1,4 @@
|
||||
<H2 CLASS="title">Print Test Page On {printer_name}</H2>
|
||||
|
||||
<P>Test page sent; job ID is <A HREF="/{SECTION}/{printer_name}">
|
||||
{printer_name}-{job_id}</A>.</P>
|
||||
5
cups-templates-zh_CN/trailer.tmpl
Normal file
5
cups-templates-zh_CN/trailer.tmpl
Normal file
@@ -0,0 +1,5 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="footer">CUPS 和 CUPS 标志是 <a href="http://www.apple.com">Apple Inc.</a> 的商标 | 中文汉化版</div>
|
||||
</body>
|
||||
</html>
|
||||
27
cups-templates-zh_CN/users.tmpl
Normal file
27
cups-templates-zh_CN/users.tmpl
Normal file
@@ -0,0 +1,27 @@
|
||||
<FORM METHOD="POST" ACTION="/admin">
|
||||
<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
|
||||
<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{OP}">
|
||||
<INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">
|
||||
{IS_CLASS?<INPUT TYPE="HIDDEN" NAME="IS_CLASS" VALUE="{IS_CLASS}">:}
|
||||
|
||||
<H2 CLASS="title">Allowed Users For {printer_name}</H2>
|
||||
|
||||
<TABLE>
|
||||
<TR>
|
||||
<TH CLASS="label">Users:</TH>
|
||||
<TD>
|
||||
<INPUT TYPE='TEXT' NAME='users' SIZE='60' VALUE='{?requesting_user_name_allowed}{?requesting_user_name_denied}'>
|
||||
<BR>
|
||||
<INPUT TYPE='RADIO' NAME='type' VALUE='requesting-user-name-allowed' ID='requesting-user-name-allowed' {requesting_user_name_allowed?checked:}><LABEL FOR='requesting-user-name-allowed'>Allow these users to print</LABEL>
|
||||
<INPUT TYPE='RADIO' NAME='type' VALUE='requesting-user-name-denied' ID='requesting-user-name-denied' {requesting_user_name_denied?checked:}><LABEL FOR='requesting-user-name-denied'>Prevent these users from printing</LABEL>
|
||||
</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD></TD>
|
||||
<TD>
|
||||
<INPUT TYPE="SUBMIT" VALUE="Set Allowed Users">
|
||||
</TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
|
||||
</FORM>
|
||||
439
setup_cups.sh
Executable file
439
setup_cups.sh
Executable file
@@ -0,0 +1,439 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# CUPS 打印服务一键配置脚本
|
||||
# 适用于 Armbian / Debian / Ubuntu
|
||||
# 作者: 自动生成
|
||||
# 用法: chmod +x setup_cups.sh && ./setup_cups.sh
|
||||
#
|
||||
|
||||
set -e
|
||||
|
||||
# 颜色定义
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
BLUE='\033[0;34m'
|
||||
NC='\033[0m' # No Color
|
||||
|
||||
# 打印带颜色的信息
|
||||
info() { echo -e "${BLUE}[信息]${NC} $1"; }
|
||||
success() { echo -e "${GREEN}[成功]${NC} $1"; }
|
||||
warn() { echo -e "${YELLOW}[警告]${NC} $1"; }
|
||||
error() { echo -e "${RED}[错误]${NC} $1"; exit 1; }
|
||||
|
||||
# 检查是否为root用户
|
||||
check_root() {
|
||||
if [ "$(id -u)" != "0" ]; then
|
||||
error "请使用 root 用户运行此脚本,或使用 sudo"
|
||||
fi
|
||||
}
|
||||
|
||||
# 检测系统版本和架构
|
||||
detect_os() {
|
||||
if [ -f /etc/os-release ]; then
|
||||
. /etc/os-release
|
||||
OS_ID=$ID
|
||||
OS_VERSION=$VERSION_CODENAME
|
||||
else
|
||||
OS_ID="unknown"
|
||||
OS_VERSION="unknown"
|
||||
fi
|
||||
|
||||
# 检测CPU架构
|
||||
ARCH=$(uname -m)
|
||||
case $ARCH in
|
||||
x86_64|amd64)
|
||||
ARCH_TYPE="amd64"
|
||||
;;
|
||||
aarch64|arm64)
|
||||
ARCH_TYPE="arm64"
|
||||
;;
|
||||
armv7l|armhf)
|
||||
ARCH_TYPE="armhf"
|
||||
;;
|
||||
*)
|
||||
ARCH_TYPE="unknown"
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
# 更换为国内源
|
||||
change_to_china_mirror() {
|
||||
info "检测当前软件源..."
|
||||
|
||||
detect_os
|
||||
|
||||
# 检查源是否正确
|
||||
local need_change=0
|
||||
|
||||
if [ "$OS_ID" = "ubuntu" ]; then
|
||||
if [ "$ARCH_TYPE" = "amd64" ]; then
|
||||
# x86_64 不应该用 ubuntu-ports
|
||||
if grep -q "ubuntu-ports" /etc/apt/sources.list 2>/dev/null; then
|
||||
warn "检测到错误的源配置 (ubuntu-ports 用于 ARM,当前是 x86_64)"
|
||||
need_change=1
|
||||
elif grep -q "mirrors.tuna.tsinghua.edu.cn/ubuntu\|mirrors.aliyun.com/ubuntu\|mirrors.ustc.edu.cn/ubuntu" /etc/apt/sources.list 2>/dev/null; then
|
||||
success "当前已是正确的国内源,跳过换源"
|
||||
return 0
|
||||
else
|
||||
need_change=1
|
||||
fi
|
||||
else
|
||||
# ARM 应该用 ubuntu-ports
|
||||
if grep -q "mirrors.tuna.tsinghua.edu.cn/ubuntu-ports\|mirrors.aliyun.com/ubuntu-ports" /etc/apt/sources.list 2>/dev/null; then
|
||||
success "当前已是正确的国内源,跳过换源"
|
||||
return 0
|
||||
else
|
||||
need_change=1
|
||||
fi
|
||||
fi
|
||||
elif [ "$OS_ID" = "debian" ]; then
|
||||
if grep -q "mirrors.tuna.tsinghua.edu.cn/debian\|mirrors.aliyun.com/debian\|mirrors.ustc.edu.cn/debian" /etc/apt/sources.list 2>/dev/null; then
|
||||
success "当前已是正确的国内源,跳过换源"
|
||||
return 0
|
||||
else
|
||||
need_change=1
|
||||
fi
|
||||
else
|
||||
need_change=1
|
||||
fi
|
||||
|
||||
if [ "$need_change" = "0" ]; then
|
||||
return 0
|
||||
fi
|
||||
|
||||
# 备份原有源
|
||||
if [ -f /etc/apt/sources.list ]; then
|
||||
cp /etc/apt/sources.list /etc/apt/sources.list.bak
|
||||
info "已备份原有源到 /etc/apt/sources.list.bak"
|
||||
fi
|
||||
|
||||
# 根据系统类型选择源
|
||||
case $OS_ID in
|
||||
debian)
|
||||
info "检测到 Debian 系统 ($OS_VERSION),更换为清华源..."
|
||||
cat > /etc/apt/sources.list << EOF
|
||||
# 清华大学 Debian 镜像源
|
||||
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ $OS_VERSION main contrib non-free non-free-firmware
|
||||
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ $OS_VERSION-updates main contrib non-free non-free-firmware
|
||||
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ $OS_VERSION-backports main contrib non-free non-free-firmware
|
||||
deb https://mirrors.tuna.tsinghua.edu.cn/debian-security $OS_VERSION-security main contrib non-free non-free-firmware
|
||||
EOF
|
||||
;;
|
||||
ubuntu)
|
||||
# 根据架构选择正确的源
|
||||
if [ "$ARCH_TYPE" = "amd64" ]; then
|
||||
UBUNTU_MIRROR="mirrors.tuna.tsinghua.edu.cn/ubuntu"
|
||||
info "检测到 Ubuntu 系统 ($OS_VERSION) [x86_64],更换为清华源..."
|
||||
else
|
||||
UBUNTU_MIRROR="mirrors.tuna.tsinghua.edu.cn/ubuntu-ports"
|
||||
info "检测到 Ubuntu 系统 ($OS_VERSION) [ARM],更换为清华源..."
|
||||
fi
|
||||
cat > /etc/apt/sources.list << EOF
|
||||
# 清华大学 Ubuntu 镜像源
|
||||
deb https://$UBUNTU_MIRROR/ $OS_VERSION main restricted universe multiverse
|
||||
deb https://$UBUNTU_MIRROR/ $OS_VERSION-updates main restricted universe multiverse
|
||||
deb https://$UBUNTU_MIRROR/ $OS_VERSION-backports main restricted universe multiverse
|
||||
deb https://$UBUNTU_MIRROR/ $OS_VERSION-security main restricted universe multiverse
|
||||
EOF
|
||||
;;
|
||||
*)
|
||||
warn "未识别的系统类型: $OS_ID,跳过换源"
|
||||
return 1
|
||||
;;
|
||||
esac
|
||||
|
||||
# 处理 Armbian 源
|
||||
if [ -f /etc/apt/sources.list.d/armbian.list ]; then
|
||||
if ! grep -q "mirrors.tuna.tsinghua.edu.cn" /etc/apt/sources.list.d/armbian.list; then
|
||||
cp /etc/apt/sources.list.d/armbian.list /etc/apt/sources.list.d/armbian.list.bak
|
||||
sed -i 's|apt.armbian.com|mirrors.tuna.tsinghua.edu.cn/armbian|g' /etc/apt/sources.list.d/armbian.list
|
||||
info "Armbian 源已更换为清华镜像"
|
||||
fi
|
||||
fi
|
||||
|
||||
success "软件源已更换为国内镜像(清华大学)"
|
||||
}
|
||||
|
||||
# 获取本机IP地址
|
||||
get_ip() {
|
||||
ip addr show | grep -oP '(?<=inet\s)\d+(\.\d+){3}' | grep -v '127.0.0.1' | head -n1
|
||||
}
|
||||
|
||||
# 显示欢迎信息
|
||||
show_banner() {
|
||||
clear
|
||||
echo -e "${GREEN}"
|
||||
echo "╔══════════════════════════════════════════════════════════╗"
|
||||
echo "║ CUPS 打印服务一键配置脚本 ║"
|
||||
echo "║ 适用于 Armbian / Debian / Ubuntu ║"
|
||||
echo "╚══════════════════════════════════════════════════════════╝"
|
||||
echo -e "${NC}"
|
||||
echo ""
|
||||
}
|
||||
|
||||
# 选择打印机驱动
|
||||
select_drivers() {
|
||||
echo -e "${YELLOW}请选择要安装的打印机驱动 (可多选,用空格或逗号分隔):${NC}"
|
||||
echo ""
|
||||
echo " 1) 通用驱动 (推荐,支持大多数打印机)"
|
||||
echo " 2) HP 打印机 (hplip)"
|
||||
echo " 3) 爱普生 (gutenprint)"
|
||||
echo " 4) 兄弟 (brlaser)"
|
||||
echo " 5) 全部安装"
|
||||
echo " 0) 仅安装CUPS (不安装额外驱动)"
|
||||
echo ""
|
||||
echo -e " ${BLUE}示例: 1 2 或 1,2 表示同时安装通用驱动和HP驱动${NC}"
|
||||
echo ""
|
||||
read -p "请输入选项 (默认: 1): " driver_choice
|
||||
driver_choice=${driver_choice:-1}
|
||||
# 统一分隔符
|
||||
driver_choice=$(echo "$driver_choice" | tr ',' ' ')
|
||||
}
|
||||
|
||||
# 安装驱动
|
||||
install_drivers() {
|
||||
local packages=""
|
||||
|
||||
for choice in $driver_choice; do
|
||||
case $choice in
|
||||
1)
|
||||
info "添加通用驱动..."
|
||||
packages="$packages printer-driver-all"
|
||||
;;
|
||||
2)
|
||||
info "添加 HP 驱动..."
|
||||
packages="$packages hplip"
|
||||
;;
|
||||
3)
|
||||
info "添加爱普生驱动..."
|
||||
packages="$packages printer-driver-gutenprint"
|
||||
;;
|
||||
4)
|
||||
info "添加兄弟驱动..."
|
||||
packages="$packages printer-driver-brlaser"
|
||||
;;
|
||||
5)
|
||||
info "添加全部驱动..."
|
||||
packages="printer-driver-all hplip printer-driver-gutenprint printer-driver-brlaser"
|
||||
break
|
||||
;;
|
||||
0)
|
||||
info "跳过驱动安装"
|
||||
return 0
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
if [ -n "$packages" ]; then
|
||||
info "正在安装驱动: $packages"
|
||||
apt install -y $packages
|
||||
fi
|
||||
}
|
||||
|
||||
# 配置CUPS
|
||||
configure_cups() {
|
||||
info "配置 CUPS 允许远程访问..."
|
||||
|
||||
# 备份原配置
|
||||
cp /etc/cups/cupsd.conf /etc/cups/cupsd.conf.bak
|
||||
|
||||
# 修改监听地址
|
||||
sed -i 's/^Listen localhost:631$/Listen 0.0.0.0:631/' /etc/cups/cupsd.conf
|
||||
|
||||
# 如果没有找到 Listen localhost:631,则添加
|
||||
if ! grep -q "Listen 0.0.0.0:631" /etc/cups/cupsd.conf; then
|
||||
sed -i '/^Listen/d' /etc/cups/cupsd.conf
|
||||
sed -i '1a Listen 0.0.0.0:631\nListen /run/cups/cups.sock' /etc/cups/cupsd.conf
|
||||
fi
|
||||
|
||||
# 启用网络浏览
|
||||
if grep -q "^Browsing" /etc/cups/cupsd.conf; then
|
||||
sed -i 's/^Browsing.*/Browsing Yes/' /etc/cups/cupsd.conf
|
||||
else
|
||||
echo "Browsing Yes" >> /etc/cups/cupsd.conf
|
||||
fi
|
||||
|
||||
# 配置访问权限 - 允许所有网络访问
|
||||
# 先删除现有的 Location 块,然后重新添加
|
||||
cat > /tmp/cups_locations.conf << 'EOF'
|
||||
|
||||
# 允许所有网络访问(内网环境使用)
|
||||
<Location />
|
||||
Order allow,deny
|
||||
Allow all
|
||||
</Location>
|
||||
|
||||
<Location /admin>
|
||||
Order allow,deny
|
||||
Allow all
|
||||
</Location>
|
||||
|
||||
<Location /admin/conf>
|
||||
AuthType Default
|
||||
Require user @SYSTEM
|
||||
Order allow,deny
|
||||
Allow all
|
||||
</Location>
|
||||
EOF
|
||||
|
||||
# 移除旧的 Location 块
|
||||
sed -i '/<Location/,/<\/Location>/d' /etc/cups/cupsd.conf
|
||||
|
||||
# 添加新的 Location 配置
|
||||
cat /tmp/cups_locations.conf >> /etc/cups/cupsd.conf
|
||||
rm /tmp/cups_locations.conf
|
||||
|
||||
success "CUPS 配置完成"
|
||||
}
|
||||
|
||||
# 主函数
|
||||
main() {
|
||||
show_banner
|
||||
check_root
|
||||
|
||||
LOCAL_IP=$(get_ip)
|
||||
info "检测到本机IP: ${LOCAL_IP}"
|
||||
echo ""
|
||||
|
||||
# 选择驱动
|
||||
select_drivers
|
||||
echo ""
|
||||
|
||||
# 询问是否换源
|
||||
echo -e "${YELLOW}是否将软件源更换为国内镜像(清华大学)?${NC}"
|
||||
echo " 推荐:国内用户选择 Y,可大幅加快下载速度"
|
||||
echo ""
|
||||
read -p "更换国内源? [Y/n]: " change_mirror
|
||||
change_mirror=${change_mirror:-Y}
|
||||
echo ""
|
||||
|
||||
# 确认安装
|
||||
echo -e "${YELLOW}即将执行以下操作:${NC}"
|
||||
if [[ "$change_mirror" =~ ^[Yy]$ ]]; then
|
||||
echo " 1. 更换为国内软件源(清华大学)"
|
||||
echo " 2. 更新系统软件源"
|
||||
else
|
||||
echo " 1. 更新系统软件源"
|
||||
fi
|
||||
echo " 3. 安装 CUPS 和 Avahi"
|
||||
echo " 4. 安装打印机驱动"
|
||||
echo " 5. 配置 CUPS 允许局域网访问"
|
||||
echo " 6. 将当前用户添加到 lpadmin 组"
|
||||
echo " 7. 启动并设置开机自启"
|
||||
echo ""
|
||||
read -p "是否继续? [Y/n]: " confirm
|
||||
confirm=${confirm:-Y}
|
||||
|
||||
if [[ ! "$confirm" =~ ^[Yy]$ ]]; then
|
||||
echo "已取消"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
echo ""
|
||||
info "开始安装..."
|
||||
echo ""
|
||||
|
||||
# 1. 换源(如果选择)
|
||||
if [[ "$change_mirror" =~ ^[Yy]$ ]]; then
|
||||
change_to_china_mirror
|
||||
fi
|
||||
|
||||
# 2. 更新系统
|
||||
info "更新软件源..."
|
||||
apt update
|
||||
success "软件源更新完成"
|
||||
|
||||
# 2. 安装 CUPS 和 Avahi
|
||||
info "安装 CUPS 和 Avahi..."
|
||||
apt install -y cups avahi-daemon
|
||||
success "CUPS 和 Avahi 安装完成"
|
||||
|
||||
# 3. 安装中文语言包(CUPS汉化)
|
||||
info "安装中文语言包..."
|
||||
apt install -y locales language-pack-zh-hans 2>/dev/null || apt install -y locales 2>/dev/null
|
||||
# 生成中文 locale
|
||||
sed -i 's/# zh_CN.UTF-8 UTF-8/zh_CN.UTF-8 UTF-8/' /etc/locale.gen 2>/dev/null
|
||||
locale-gen zh_CN.UTF-8 2>/dev/null
|
||||
# 设置 CUPS 默认语言为中文
|
||||
if ! grep -q "DefaultLanguage" /etc/cups/cupsd.conf 2>/dev/null; then
|
||||
echo 'DefaultLanguage zh_CN.UTF-8' >> /etc/cups/cupsd.conf
|
||||
fi
|
||||
|
||||
# 安装中文 Web 界面模板
|
||||
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||||
if [ -d "$SCRIPT_DIR/cups-templates-zh_CN" ]; then
|
||||
info "安装 CUPS 中文界面模板..."
|
||||
mkdir -p /usr/share/cups/templates-zh_CN
|
||||
cp -f "$SCRIPT_DIR/cups-templates-zh_CN/"*.tmpl /usr/share/cups/templates-zh_CN/
|
||||
success "中文界面模板安装完成"
|
||||
else
|
||||
warn "未找到中文模板目录 (cups-templates-zh_CN),跳过界面汉化"
|
||||
fi
|
||||
success "中文语言包安装完成"
|
||||
|
||||
# 3. 安装驱动
|
||||
install_drivers
|
||||
success "驱动安装完成"
|
||||
|
||||
# 4. 配置 CUPS
|
||||
configure_cups
|
||||
|
||||
# 5. 添加用户到 lpadmin 组
|
||||
info "将 root 用户添加到 lpadmin 组..."
|
||||
usermod -aG lpadmin root
|
||||
|
||||
# 如果有其他用户,也添加
|
||||
CURRENT_USER=$(logname 2>/dev/null || echo "")
|
||||
if [ -n "$CURRENT_USER" ] && [ "$CURRENT_USER" != "root" ]; then
|
||||
usermod -aG lpadmin "$CURRENT_USER"
|
||||
info "将 $CURRENT_USER 用户添加到 lpadmin 组"
|
||||
fi
|
||||
success "用户组配置完成"
|
||||
|
||||
# 6. 启动服务
|
||||
info "启动 CUPS 服务..."
|
||||
systemctl restart cups
|
||||
systemctl enable cups
|
||||
success "CUPS 服务已启动并设置开机自启"
|
||||
|
||||
info "启动 Avahi 服务..."
|
||||
systemctl restart avahi-daemon
|
||||
systemctl enable avahi-daemon
|
||||
success "Avahi 服务已启动并设置开机自启"
|
||||
|
||||
# 完成提示
|
||||
echo ""
|
||||
echo -e "${GREEN}╔══════════════════════════════════════════════════════════╗${NC}"
|
||||
echo -e "${GREEN}║ 安装完成! ║${NC}"
|
||||
echo -e "${GREEN}╚══════════════════════════════════════════════════════════╝${NC}"
|
||||
echo ""
|
||||
echo -e " ${BLUE}CUPS 管理界面:${NC} https://${LOCAL_IP}:631"
|
||||
echo -e " ${BLUE}用户名:${NC} root"
|
||||
echo -e " ${BLUE}密码:${NC} 你的 SSH 密码"
|
||||
echo ""
|
||||
echo -e " ${YELLOW}下一步:${NC}"
|
||||
echo " 1. 用浏览器打开上面的地址"
|
||||
echo " 2. 点击 Administration → Add Printer"
|
||||
echo " 3. 选择你的 USB 打印机"
|
||||
echo " 4. 勾选 Share This Printer"
|
||||
echo ""
|
||||
echo -e " ${YELLOW}客户端连接:${NC}"
|
||||
echo " - Windows: 设置 → 打印机 → 添加打印机"
|
||||
echo " - macOS/iOS: 自动通过 AirPrint 发现"
|
||||
echo " - Android: 安装 Mopria Print Service"
|
||||
echo ""
|
||||
|
||||
# 检查打印机
|
||||
echo -e "${BLUE}[检测]${NC} 正在检测 USB 打印机..."
|
||||
if lsusb | grep -i -E "printer|print" > /dev/null 2>&1; then
|
||||
success "检测到 USB 打印机:"
|
||||
lsusb | grep -i -E "printer|print"
|
||||
else
|
||||
warn "未检测到 USB 打印机,请确认打印机已连接"
|
||||
fi
|
||||
echo ""
|
||||
}
|
||||
|
||||
# 运行主函数
|
||||
main
|
||||
415
刷机教程.md
Normal file
415
刷机教程.md
Normal file
@@ -0,0 +1,415 @@
|
||||
# 中兴B863AV3.2-M 刷 Armbian + CUPS打印服务 完整教程
|
||||
|
||||
## 风险警告
|
||||
|
||||
> **刷机前请务必阅读**
|
||||
> - 刷机会**清除原有系统**,无法恢复运营商IPTV功能
|
||||
> - 操作失败可能导致**变砖**,需要TTL救砖
|
||||
> - 建议有一定Linux基础再操作
|
||||
> - 请确保有备用设备,刷机过程中断电可能导致不可逆损坏
|
||||
|
||||
---
|
||||
|
||||
## 目录
|
||||
|
||||
1. [设备信息](#设备信息)
|
||||
2. [第一部分:刷机准备](#第一部分刷机准备)
|
||||
3. [第二部分:刷机步骤](#第二部分刷机步骤)
|
||||
4. [第三部分:系统初始化](#第三部分系统初始化)
|
||||
5. [第四部分:安装CUPS打印服务](#第四部分安装cups打印服务)
|
||||
6. [第五部分:客户端连接](#第五部分客户端连接)
|
||||
7. [常见问题排查](#常见问题排查)
|
||||
8. [参考资料](#参考资料)
|
||||
|
||||
---
|
||||
|
||||
## 设备信息
|
||||
|
||||
| 项目 | 信息 |
|
||||
|------|------|
|
||||
| 型号 | 中兴 B863AV3.2-M |
|
||||
| 芯片 | 晶晨 S905L3A |
|
||||
| 设备树 | `meson-g12a-s905l3a-m401a.dtb` (编号306) |
|
||||
|
||||
> **注意**: B863AV3.2-M有两种主控版本,本教程仅适用于**S905L3A**版本。刷机前请确认芯片型号。
|
||||
|
||||
---
|
||||
|
||||
## 第一部分:刷机准备
|
||||
|
||||
### 1.1 所需工具
|
||||
|
||||
| 工具 | 说明 |
|
||||
|------|------|
|
||||
| 公对公USB线 | 连接盒子与电脑 |
|
||||
| U盘 x2 | 8G以上,建议有一个USB2.0的 |
|
||||
| HDMI短接器(可选) | 替代手动短接 |
|
||||
| 镊子/导线 | 用于短接 |
|
||||
| 刷机软件 | USB Burning Tool v2.2.0 |
|
||||
| 写盘工具 | Rufus 或 balenaEtcher |
|
||||
|
||||
### 1.2 下载资源
|
||||
|
||||
**1. Armbian镜像**
|
||||
|
||||
从 https://github.com/ophub/amlogic-s9xxx-armbian/releases 下载
|
||||
- 选择带 `s905l3a` 或 `s905l3-cm211` 字样的镜像
|
||||
- 推荐 Debian Bookworm server 版本
|
||||
|
||||
**2. 安卓底包**(可选)
|
||||
|
||||
用于恢复或开启ADB,建议从网盘或论坛获取对应型号的底包
|
||||
|
||||
---
|
||||
|
||||
## 第二部分:刷机步骤
|
||||
|
||||
### 2.1 拆机找短接点
|
||||
|
||||
1. 拧开机器背面两颗螺丝(在防滑垫下)
|
||||
2. 用拆机片从后面划开取出主板
|
||||
3. 找到短接点 **C79A8**
|
||||
|
||||
> **提示**: 如果有HDMI短接神器,可以跳过拆机,直接插HDMI口
|
||||
|
||||
<!-- 建议在此处添加主板短接点位置图片 -->
|
||||
|
||||
### 2.2 线刷安卓底包(可选但推荐)
|
||||
|
||||
1. 打开 USB Burning Tool
|
||||
2. 导入安卓刷机包
|
||||
3. 勾选「擦除Flash」和「擦除Bootloader」
|
||||
4. **用镊子短接 C79A8,不要松手**
|
||||
5. 插入双公头USB线到盒子**靠近网口**的USB口
|
||||
6. 接通盒子电源
|
||||
7. 软件显示连接成功后松开短接
|
||||
8. 等待刷机完成(约3-5分钟)
|
||||
|
||||
### 2.3 开启ADB
|
||||
|
||||
刷入安卓底包后,需要开启ADB才能从U盘启动Armbian。
|
||||
|
||||
**方式一:二维码验证**
|
||||
|
||||
1. 进入 设置 → 关于 → 连续点击「版本号」7次
|
||||
2. 返回设置,进入「开发者选项」
|
||||
3. 出现二维码验证,使用「中兴STB工具」扫描
|
||||
4. 输入工具返回的验证码
|
||||
5. 开启「USB调试」和「网络ADB调试」
|
||||
|
||||
**方式二:随机码验证**
|
||||
|
||||
1. 进入 设置 → 高级设置
|
||||
2. 记录屏幕上显示的随机码
|
||||
3. 使用「算号器」计算开发者密码
|
||||
4. 输入密码进入开发者选项
|
||||
5. 开启「USB调试」和「网络ADB调试」
|
||||
|
||||
> **验证ADB是否开启**: 在同一局域网的电脑上执行 `adb connect 盒子IP`,返回 `connected` 表示成功
|
||||
|
||||
### 2.4 制作Armbian启动U盘
|
||||
|
||||
1. 使用 Rufus 将 Armbian 镜像写入U盘(选择DD模式)
|
||||
2. 写入完成后,打开U盘根目录
|
||||
3. 编辑 `uEnv.txt` 文件
|
||||
4. 找到 `FDT=` 行,修改为:
|
||||
```
|
||||
FDT=/dtb/amlogic/meson-g12a-s905l3a-m401a.dtb
|
||||
```
|
||||
5. 保存并安全弹出U盘
|
||||
|
||||
### 2.5 从U盘启动Armbian
|
||||
|
||||
将U盘插入盒子**靠近网口**的USB接口,然后在电脑上执行:
|
||||
|
||||
```bash
|
||||
adb connect 192.168.x.x # 替换为盒子IP
|
||||
adb shell reboot update # 重启进入U盘系统
|
||||
```
|
||||
|
||||
> **提示**: 如果无法启动,尝试换一个USB2.0的U盘
|
||||
|
||||
### 2.6 写入eMMC
|
||||
|
||||
成功从U盘启动后,通过SSH登录Armbian:
|
||||
|
||||
- 默认用户: `root`
|
||||
- 默认密码: `1234`
|
||||
|
||||
执行安装命令:
|
||||
|
||||
```bash
|
||||
armbian-install
|
||||
```
|
||||
|
||||
按提示操作:
|
||||
1. 选择 **306: M401A,UNT403A,B863AV3.2-M**
|
||||
2. 文件系统选择 **ext4**
|
||||
3. 等待写入完成,根据提示拔掉U盘并重启
|
||||
|
||||
**如果写入失败**,尝试以下步骤:
|
||||
|
||||
```bash
|
||||
# 清除分区表
|
||||
dd if=/dev/zero of=/dev/mmcblk2 bs=4096 count=4
|
||||
|
||||
# 重新安装
|
||||
armbian-install -m yes
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 第三部分:系统初始化
|
||||
|
||||
### 3.1 首次登录设置
|
||||
|
||||
从eMMC启动后,首次登录会提示:
|
||||
1. 修改root密码
|
||||
2. 创建普通用户(可跳过)
|
||||
3. 选择默认Shell
|
||||
|
||||
### 3.2 网络配置
|
||||
|
||||
**设置静态IP(推荐用于服务器场景)**
|
||||
|
||||
```bash
|
||||
# 使用图形界面配置
|
||||
nmtui
|
||||
```
|
||||
|
||||
或手动编辑配置:
|
||||
|
||||
```bash
|
||||
nano /etc/network/interfaces
|
||||
```
|
||||
|
||||
### 3.3 基础优化
|
||||
|
||||
```bash
|
||||
# 设置时区
|
||||
timedatectl set-timezone Asia/Shanghai
|
||||
|
||||
# 更新系统
|
||||
apt update && apt upgrade -y
|
||||
|
||||
# 减少swap使用,延长eMMC寿命
|
||||
echo 'vm.swappiness=10' >> /etc/sysctl.conf
|
||||
sysctl -p
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 第四部分:安装CUPS打印服务
|
||||
|
||||
### 一键安装(推荐)
|
||||
|
||||
提供一键脚本,自动完成 CUPS 安装和配置:
|
||||
|
||||
```bash
|
||||
# 下载并运行一键脚本
|
||||
wget -O setup_cups.sh https://你的地址/setup_cups.sh
|
||||
chmod +x setup_cups.sh
|
||||
./setup_cups.sh
|
||||
```
|
||||
|
||||
或者如果脚本已在本地:
|
||||
|
||||
```bash
|
||||
chmod +x setup_cups.sh
|
||||
./setup_cups.sh
|
||||
```
|
||||
|
||||
脚本功能:
|
||||
- 自动安装 CUPS 和 Avahi
|
||||
- 交互式选择打印机驱动
|
||||
- 自动配置局域网访问权限
|
||||
- 自动启动服务并设置开机自启
|
||||
- 检测 USB 打印机连接状态
|
||||
|
||||
> 如果想手动安装,请继续阅读以下步骤。
|
||||
|
||||
---
|
||||
|
||||
### 4.1 安装CUPS和依赖(手动)
|
||||
|
||||
```bash
|
||||
apt update && apt upgrade -y
|
||||
apt install cups avahi-daemon -y
|
||||
```
|
||||
|
||||
### 4.2 安装打印机驱动
|
||||
|
||||
根据打印机品牌选择安装:
|
||||
|
||||
```bash
|
||||
# HP打印机
|
||||
apt install hplip -y
|
||||
|
||||
# 爱普生
|
||||
apt install printer-driver-gutenprint -y
|
||||
|
||||
# 兄弟
|
||||
apt install printer-driver-brlaser -y
|
||||
|
||||
# 通用驱动(推荐都装)
|
||||
apt install printer-driver-all -y
|
||||
```
|
||||
|
||||
### 4.3 配置CUPS允许远程访问
|
||||
|
||||
```bash
|
||||
nano /etc/cups/cupsd.conf
|
||||
```
|
||||
|
||||
修改以下内容:
|
||||
|
||||
```conf
|
||||
# 修改监听地址(允许所有IP访问)
|
||||
Listen 0.0.0.0:631
|
||||
Listen /run/cups/cups.sock
|
||||
|
||||
# 启用网络浏览
|
||||
Browsing Yes
|
||||
BrowseLocalProtocols dnssd
|
||||
|
||||
# 修改访问权限(允许所有网络)
|
||||
<Location />
|
||||
Order allow,deny
|
||||
Allow all
|
||||
</Location>
|
||||
|
||||
<Location /admin>
|
||||
Order allow,deny
|
||||
Allow all
|
||||
</Location>
|
||||
|
||||
<Location /admin/conf>
|
||||
AuthType Default
|
||||
Require user @SYSTEM
|
||||
Order allow,deny
|
||||
Allow all
|
||||
</Location>
|
||||
```
|
||||
|
||||
> **说明**: 内网环境无公网IP,可直接使用 `Allow all`。如需限制访问,可改为 `Allow from 192.168.*.*` 等。
|
||||
|
||||
### 4.4 将用户添加到打印组
|
||||
|
||||
```bash
|
||||
usermod -aG lpadmin root
|
||||
```
|
||||
|
||||
### 4.5 启动服务
|
||||
|
||||
```bash
|
||||
systemctl restart cups
|
||||
systemctl enable cups
|
||||
systemctl restart avahi-daemon
|
||||
systemctl enable avahi-daemon
|
||||
```
|
||||
|
||||
### 4.6 访问Web管理界面
|
||||
|
||||
```
|
||||
浏览器打开: https://盒子IP:631
|
||||
用户名: root
|
||||
密码: 你的SSH密码
|
||||
```
|
||||
|
||||
> **注意**: CUPS默认使用HTTPS,浏览器可能提示证书不安全,选择继续访问即可
|
||||
|
||||
### 4.7 添加打印机
|
||||
|
||||
1. 点击 **Administration** → **Add Printer**
|
||||
2. 选择你的USB打印机(Local Printers下)
|
||||
3. 填写打印机名称和描述
|
||||
4. 勾选 **Share This Printer**
|
||||
5. 选择对应的驱动型号
|
||||
|
||||
---
|
||||
|
||||
## 第五部分:客户端连接
|
||||
|
||||
### Windows
|
||||
|
||||
```
|
||||
设置 → 蓝牙和其他设备 → 打印机和扫描仪 → 添加打印机
|
||||
```
|
||||
|
||||
如果自动发现不到,手动添加:
|
||||
```
|
||||
http://盒子IP:631/printers/打印机名称
|
||||
```
|
||||
|
||||
### macOS / iOS
|
||||
|
||||
自动通过AirPrint发现(需要avahi-daemon正常运行)
|
||||
|
||||
### Linux
|
||||
|
||||
```bash
|
||||
# 使用 IPP 协议添加
|
||||
lpadmin -p 打印机名 -E -v ipp://盒子IP:631/printers/打印机名
|
||||
```
|
||||
|
||||
### Android
|
||||
|
||||
安装「Mopria Print Service」或「CUPS Printing」应用,可自动发现打印机
|
||||
|
||||
---
|
||||
|
||||
## 常见问题排查
|
||||
|
||||
| 问题 | 可能原因 | 解决方案 |
|
||||
|------|----------|----------|
|
||||
| USB Burning Tool 识别不到设备 | 驱动未安装/短接失败 | 1.安装LibUSB驱动 2.换USB口 3.确认短接成功 |
|
||||
| U盘启动后黑屏 | 设备树错误/U盘兼容性 | 1.检查uEnv.txt配置 2.换USB2.0 U盘 3.TTL查看日志 |
|
||||
| armbian-install 选项没有306 | 脚本版本过旧 | 运行 `armbian-update` 更新脚本 |
|
||||
| eMMC写入失败 | 分区表损坏 | 执行 `dd if=/dev/zero of=/dev/mmcblk2 bs=4096 count=4` |
|
||||
| CUPS打印机不显示 | USB未识别 | 运行 `lsusb` 确认识别,检查USB线 |
|
||||
| Windows找不到打印机 | 防火墙/网络问题 | 1.关闭防火墙测试 2.手动输入IPP地址 |
|
||||
| macOS无法发现AirPrint | avahi服务问题 | 运行 `systemctl status avahi-daemon` 检查状态 |
|
||||
| 打印乱码 | 驱动不匹配 | 在CUPS中更换其他驱动测试 |
|
||||
|
||||
### TTL调试接线
|
||||
|
||||
如遇启动问题,建议连接TTL查看日志:
|
||||
|
||||
| TTL线 | 盒子 |
|
||||
|-------|------|
|
||||
| GND | GND |
|
||||
| RX | TX |
|
||||
| TX | RX |
|
||||
|
||||
波特率: **115200**
|
||||
|
||||
---
|
||||
|
||||
## 注意事项
|
||||
|
||||
1. **刷机有风险**,建议先备份原系统
|
||||
2. 如果U盘无法识别,换一个**USB2.0**的U盘
|
||||
3. 建议连接**TTL调试**观察启动日志排查问题
|
||||
4. CUPS驱动建议用apt安装,**不要从厂商网站下载**
|
||||
5. B863AV3.2-M有两种主控版本,确认是S905L3A
|
||||
6. 首次启动Armbian可能较慢,请耐心等待
|
||||
|
||||
---
|
||||
|
||||
## 测试环境
|
||||
|
||||
| 项目 | 版本 |
|
||||
|------|------|
|
||||
| Armbian | Debian Bookworm (建议使用最新Release) |
|
||||
| 内核 | 6.1.x LTS |
|
||||
| 测试日期 | 2024年 |
|
||||
|
||||
---
|
||||
|
||||
## 参考资料
|
||||
|
||||
- [ophub/amlogic-s9xxx-armbian #741](https://github.com/ophub/amlogic-s9xxx-armbian/issues/741)
|
||||
- [ophub/amlogic-s9xxx-armbian #313](https://github.com/ophub/amlogic-s9xxx-armbian/issues/313)
|
||||
- [ophub/amlogic-s9xxx-armbian #2587](https://github.com/ophub/amlogic-s9xxx-armbian/issues/2587)
|
||||
- [中兴盒子刷机教程 - 博客园](https://www.cnblogs.com/imagecc/p/17904264.html)
|
||||
- [S905L3A刷Armbian - 博客园](https://www.cnblogs.com/modys/p/17701772.html)
|
||||
Reference in New Issue
Block a user