mirror of
https://github.com/openwrt/packages.git
synced 2025-02-07 09:19:51 +00:00
89 lines
2.4 KiB
Bash
Executable File
89 lines
2.4 KiB
Bash
Executable File
#!/bin/sh /etc/rc.common
|
|
# Copyright (C) 2010-2025 OpenWrt.org
|
|
|
|
START=82
|
|
STOP=10
|
|
USE_PROCD=1
|
|
PROG='/usr/sbin/papd'
|
|
|
|
# Config file, contents and status
|
|
default_config="/etc/papd.conf"
|
|
papd_config=''
|
|
papd_error=0
|
|
|
|
# Log tag
|
|
log_tag='papd-init'
|
|
|
|
NL=$'\n'
|
|
|
|
generate_config() {
|
|
# Setup section
|
|
config_file=''
|
|
config_overwrite=''
|
|
|
|
parse_printer() {
|
|
local section="$1"
|
|
local _buffer=''
|
|
local _value
|
|
local _printer=''
|
|
local _disabled=1
|
|
config_get _printer "$section" "name"
|
|
append _buffer "$_printer: "
|
|
[ -n "$_printer" ] || {
|
|
papd_error=1 && logger -p err -t "$log_tag" "Missing printer name for printer $section"
|
|
}
|
|
config_get _disabled "$section" 'disabled' '1'
|
|
config_get _value "$section" 'am'
|
|
[ -z "$_value" ] || append _buffer " :am=$_value:"
|
|
config_get _value "$section" 'au'
|
|
[ -z "$_value" ] || append _buffer " :au=$_value:"
|
|
config_get _value "$section" 'co'
|
|
[ -z "$_value" ] || append _buffer " :co=$_value:"
|
|
config_get _value "$section" 'fo'
|
|
[ -z "$_value" ] || append _buffer " :fo=$_value:"
|
|
config_get _value "$section" 'op'
|
|
[ -z "$_value" ] || append _buffer " :op=$_value:"
|
|
config_get _value "$section" 'pa'
|
|
[ -z "$_value" ] || append _buffer " :pa=$_value:"
|
|
config_get _value "$section" 'pd'
|
|
[ -z "$_value" ] || append _buffer " :pd=$_value:"
|
|
config_get _value "$section" 'pr'
|
|
[ -z "$_value" ] || append _buffer " :pr=$_value:"
|
|
config_get _value "$section" 'sp'
|
|
[ -z "$_value" ] || append _buffer " :sp=$_value:"
|
|
config_get _value "$section" 'ca'
|
|
[ -z "$_value" ] || append _buffer " :ca=$_value:"
|
|
[ "$_disabled" == '1' ] || papd_config="$papd_config$_buffer$NL$NL"
|
|
}
|
|
|
|
config_load papd
|
|
|
|
config_get disabled papd disabled '0'
|
|
if [ "$disabled" = "1" ] ; then
|
|
logger -p info -t $log_tag "Disabled by config"
|
|
exit
|
|
fi
|
|
config_get config_file papd config_file "$default_config"
|
|
config_get config_overwrite papd config_overwrite
|
|
if [ "$config_overwrite" == "1" ] ; then
|
|
config_foreach parse_printer printer
|
|
mkdir -p `dirname "$config_file"`
|
|
echo "$papd_config" > "$config_file"
|
|
logger -p info -t $log_tag "Configuration written to $config_file"
|
|
else
|
|
logger -p info -t $log_tag 'Configuration not modified - papd:config_overwrite=0 or missing'
|
|
fi
|
|
}
|
|
|
|
start_service() {
|
|
generate_config
|
|
|
|
[ "$papd_error" == "0" ] || exit
|
|
|
|
procd_open_instance
|
|
procd_set_param command $PROG -d -f "$config_file"
|
|
procd_set_param file "$config_file"
|
|
procd_set_param respawn
|
|
procd_close_instance
|
|
}
|