Skip to content

Instantly share code, notes, and snippets.

@ddan9
Last active May 25, 2024 09:54
Show Gist options
  • Save ddan9/067f519270432173a4edaa020090d8bd to your computer and use it in GitHub Desktop.
Save ddan9/067f519270432173a4edaa020090d8bd to your computer and use it in GitHub Desktop.


ВАЖНО


[ ! ] : Добавить потом все прочитанные мануалы в рефы

[ ! ] : Конфиг самбы нуждается в серьёзной доработке по поддержке расшары принтера по p910nd (сейчас не работает)

[ ! ] : Т.к. от самбы сейчас толку нет, то целесообразно не ставить её вообще пока что. Сильно много весит

[ ! ] : На данный момент работает автоподхват на ОС Линукс со стороны клиента (удобненько, avahi + cups отрабатывают нормально). На ОС Windows автоподхват не работает, нужно руками настраивать - нужно выяснить почему и доработать

[ ! ] : На линуксе можно ограничиться набором пакетов: p910nd, umdns - для автоматики достаточно

[ ! ] : На линуксе всё работает как положено, а в винде нужно на клиенте выключать "двунаправленную передачу данных" в настройках/свойствах принтера (по крайней мере конкретно у меня, и непонятно на что влияет). Если с вашим принтером в целом есть проблема с передачей файлов на печать, то попробуйте выключить "bidirectional mode" в конфиге сервера

[ ! ] : Если осилите CLI настройку, то можно не ставить пакеты отвечающие за LuCI (они сами бестолковые, а там в целом легко всё). Также можно не ставить SNMP, UPNP, SAMBA

[ ! ] : OWRT версии 19.07.10 (и вроде бы 22.03.6) не имеет автокорректировки mDNS в конфиге /etc/config/p910nd, а 23.05.3 имеет. Так что возможно лучше использовать её, т.к. меньше гемора, но она имеет в 2 раза меньше свободного места

[ ! ] : Есть короче идея. Реализовать поддержку всех девайсов разом, через samba и ftp (преимущественно). Суть короче в том, что мы расшариваем свободную условную /var/tmp/spool и клиенты будут кидать файлы на печать. А crontab-скрипт будет её проверять, обходить и печатать файлы по очереди, а потом удалять их (освобождать очередь, идемпотентность, проверки и все дела). Делать либо напрямую в /dev/usb/lp0 либо echo file | netcat 9100 или типо того. Но нужно разобраться как работать с принтером напрямую. В openwrt нема lp lpr lpd cups и всякого такого. У меня лично не получается ни напрямую ни netcat'ом. Смотрел исходиники p910nd - не одупляю, как он работает. Хотя походу начинаю понимать - на клиенте выбираются дрова и raw данные соответственно. Нужно короче брать билдить .prn файл и засылать так и по идее должно работать

[ ! ] : Нужно потом будет написать скрипт коррекции работы типо добавлять ссылку на lp0 в dev и т.д (прим. внизу) в кронтаб его

[ ! ] : Короче можно расшарить клиентам usb порт напрямую с принтером сразу. usbip и usbipd на сервере (https://github.com/cezanne/usbip-win - клиент для винды, рабочий, проверял). По крайней мере реальный вариант под винду. Но проблема в том, что при запуске и бинде на сервере, пропадает /dev/usb/lp0 - это косяк, нужно будет обработать (там нужно будет повозиться с конфигом p910nd на файл lp0)

Установка:

	
opkg update
	
opkg remove --force-depends libudev-fbsd
	
opkg install http://downloads.openwrt.org/releases/17.01.7/packages/mipsel_24kc/packages/libudev_3.2-1_mipsel_24kc.ipk
	
reboot
	
opkg update
	
opkg install kmod-usb-ohci usbip-server usbip-client
	

Рефы:


[ ! ]: Хукаем пакеты netcat'ом, которые идут на интерфейс принтера (так можно даже печатать, вместо p910nd юзать, работает). Там внатуре всё дело в клиентских запросах. Они шлют уже готовый под принтер файл. Поэтому если просто netcat'ом кинуть строку на порт ничо не сработает

Команды

# Установка
opkg update
opkg install netcat
	
# Запуск на сервере
while true; do netcat -l -p 9100 | tee -a file.log /dev/usb/lp0; done;

# Смотрим
ls -hal /root
	
# Выгружаем	
scp [email protected]:/root/file.log ./
	
# Грузим на принтер
cat file.log | netcat 192.168.1.1 9100
	

[ ! ]: Для получения возможности использования USB-Flash накопителей:

Команды:

# базовая установка
opkg update
opkg install block-mount kmod-usb kmod-usb2 kmod-usb3 kmod-usb-storage kmod-usb-storage-uas kmod-usb-storage-extras
	
# для fat
opkg install kmod-fs-vfat kmod-nls-cp437 kmod-nls-iso8859-1 dosfstools
	
# для ext
opkg install e2fsprogs kmod-fs-ext4
	
# для f2fs
opkg install f2fs-tools kmod-fs-f2fs
	
# для ntfs
opkg install ntfs-3g ntfsprogs_ntfs-3g

# для exfat
opkg install kmod-fs-exfat exfat-fsck 

# проверка. Должно показать 2 устройства
ls -hal /dev/sd*
	
# монтирование
mkdir -p /mnt/sda1
mount /dev/sda1 /mnt/sda1

# тестирование
echo "test" > /mnt/sda1/test.txt
	
# размонтирование
umount /mnt/sda1
rm -rf /mnt/sda1
	
# форматирование
mkfs.fat /dev/sda1
mkfs.ext4 /dev/sda1

# создание разделов и форматирование в gui
opkg install cfdisk
cfdisk /dev/sda

# дальнейшее автомонтирование уже подключеной флешки в /mnt
block detect | uci import fstab
uci set fstab.@mount[-1].enabled='1' && uci set fstab.@global[0].check_fs='1' && uci set fstab.@global[0].auto_mount='1' && uci commit fstab && service fstab boot
	

[ ! ]: Можно ещё попробовать chroot. Лично у меня не получилось. Вероятно из-за архитектуры устройства. По мануалам вам не понадобится даже binutils. Всё что нужно - отформатированная в ext4 другим компом флешка, выбранная версия debian (с обязательным наличием сборки под mips и/или mipsel) и одна из зеркал:

Команды:

# базовая установка
opkg update
opkg install kmod-usb-storage kmod-fs-ext4 debootstrap
	
# монтируем подключенную флешку
mkdir -p /mnt/sda1
mount /dev/sda1 /mnt/sda1
cd /mnt/sda1
	
# качаем нужную версию debian
debootstrap --verbose --no-check-gpg --arch=<нужная архитектура (mips/mipsel)> <выбранная версия debian> /mnt/sda1 <url, выбранное зеркало>

# биндим системные директории
mount --bind /dev /mnt/sda1/dev
mount --bind /sys /mnt/sda1/sys
mount --bind /proc /mnt/sda1/proc
	
# чрутимся
chroot /mnt/sda1 /bin/bash
	

[ ! ]: Нужно составить конфиг для wsdd2 в связках с sabma и ksmbd и p910nd. Я не смог найти нормальный мануал для этого + мне уже стало тупо влом этим заниматься


[ ! ]: Расшариваем общую анонимную FTP-директорию. Будет использоваться /var/tmp, которая находится в оперативной памяти (которой обычно свободно около 20мб, со всеми вытекающими). Это вполне годится для передачи мелких файлов и документов между устройствами по сети. FTP протокол поддерживают подавляющее большинство устройств в том или ином виде

Установка:

	
okpg update
	
opkg install vsftpd
	

Конфиг: /etc/vsftpd.conf

####################
# DEFAULT TEMPLATE #
####################

#background=YES
#listen=YES
#anonymous_enable=YES
#local_enable=NO
#write_enable=YES
#local_umask=022
#check_shell=NO
#dirmessage_enable=YES
#ftpd_banner=Welcome to blah FTP service.
#session_support=NO
#syslog_enable=YES
#userlist_enable=NO
#userlist_deny=NO
#userlist_file=/etc/vsftpd/vsftpd.users
#xferlog_enable=YES
#xferlog_file=/var/log/vsftpd.log
#xferlog_std_format=YES
###
### TLS/SSL options
### example key generation: openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/vsftpd/vsftpd_privkey.pem -out /etc/vsftpd/vsftpd_cert.pem -subj /C="DE"/ST="Saxony"/L="Leipzig"/CN="OpenWrt"
#ssl_enable=YES
#allow_anon_ssl=NO
#force_local_data_ssl=NO
#force_local_logins_ssl=NO
#ssl_tlsv1=YES
#ssl_sslv2=NO
#ssl_sslv3=NO
#rsa_cert_file=/etc/vsftpd/vsftpd_cert.pem
#rsa_private_key_file=/etc/vsftpd/vsftpd_privkey.pem

####################
# GENERAL SETTINGS #
####################

background=YES
listen=YES
write_enable=YES
local_umask=022
check_shell=NO
syslog_enable=YES
dirmessage_enable=YES
use_localtime=YES
log_ftp_protocol=YES
connect_from_port_20=YES
listen_port=21
chroot_local_user=YES
secure_chroot_dir=/var/tmp/ftp/
pam_service_name=vsftpd
ssl_enable=NO
setproctitle_enable=YES
force_dot_files=YES
local_root=/var/tmp/ftp/
allow_writeable_chroot=YES
userlist_enable=NO
userlist_deny=NO
userlist_file=/etc/vsftpd/vsftpd.users
user_sub_token=nobody

######################
# ANONYMOUS SETTINGS #
######################

local_enable=NO
anonymous_enable=YES
anon_root=/var/tmp/ftp/
anon_mkdir_write_enable=YES
anon_upload_enable=YES
anon_other_write_enable=YES
anon_world_readable_only=NO
no_anon_password=YES
hide_ids=YES
ftp_username=nobody
anon_umask=000
chown_uploads=YES
chown_username=nobody
guest_enable=YES
	

Пользователи: /etc/vsftpd/vsftpd.users

	
anonymous
guest
nobody
root
ftp
	

Автозапуск: /etc/rc.local

	
# ...
	
if [[ -e "/var/tmp/ftp/" ]]

then

	sleep 0

else

	mkdir -p "/var/tmp/ftp/"

	chown -R ftp:ftp "/var/tmp/ftp/"

	chmod -R 755 "/var/tmp/ftp/"

	if [[ -e "/var/tmp/ftp/Shared/" ]]

	then

		sleep 0

	else

		mkdir -p "/var/tmp/ftp/Shared/"

		chown -R nobody:nogroup "/var/tmp/ftp/Shared/"

		chmod -R 777 "/var/tmp/ftp/Shared/"

	fi

	service vsftpd restart

fi

# ...
	
exit 0
	

[ ! ]: Делаем кастомный секундомер запуска системы (а-ля systemd-analyze). Подойдёт для любых систем без systemd

Автозапуск: /etc/rc.local


# ...
	
echo $(date) > /var/log/boottime.log
echo $(cat /proc/uptime) >> /var/log/boottime.log
echo $(uptime) >> /var/log/boottime.log

exit 0
	

PREPARATIONS








SOFTWARE ON XUBUNTU


install packages:

sudo apt update

sudo apt install -y zram-config htop xinetd tftp tftpd snmp nmap iproute2 nano wireless-tools
sudu apt install -y samba smbclient python-smbc python3-smbc fusesmb

sudo systemctl start zram-config


SOFTWARE ON OWRT


install packages:

opkg update

opkg install zram-swap kmod-lib-lz4
opkg install kmod-usb2 kmod-lp kmod-usb-printer hplip-common usbutils hplip nano kmod-fs-fscache
opkg install luci-app-opkg luci-i18n-opkg luci-i18n-opkg-ru luci-i18n-opkg-en
opkg install luci-app-base luci-i18n-base luci-i18n-base-en luci-i18n-base-ru
opkg install luci-app-advanced-reboot luci-i18n-advanced-reboot luci-i18n-advanced-reboot-ru luci-i18n-advanced-reboot-en
opkg install luci-app-commands luci-i18n-commands luci-i18n-commands-ru luci-i18n-commands-en
opkg install luci-theme-bootstrap luci-theme-material luci-theme-openwrt

opkg install umdns
opkg install p910nd luci-app-p910nd luci-i18n-p910nd luci-i18n-p910nd-ru luci-i18n-p910nd-en
opkg install miniupnpd luci-app-upnp luci-i18n-upnp luci-i18n-upnp-ru luci-i18n-upnp-en
opkg install mini_snmpd luci-app-snmpd luci-i18n-snmpd luci-i18n-snmpd-en luci-i18n-snmpd-ru
opkg install samba36-server samba36-hotplug luci-app-samba luci-i18n-samba luci-i18n-samba-en luci-i18n-samba-ru wsdd2

opkg install kmod-fs-ksmbd ksmbd-server ksmbd-utils luci-app-ksmbd luci-i18n-ksmbd luci-i18n-ksmbd luci-i18n-ksmbd-ru wsdd2
	


USBUTILS (LSUSB)


root@OpenWrt:~# lsusb
	
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 002: ID 03f0:002a HP, Inc LaserJet P1102
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
	
root@OpenWrt:~# lsusb -v -d 03f0:002a

Bus 001 Device 002: ID 03f0:002a HP, Inc LaserJet P1102
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass            0 (Defined at Interface level)
  bDeviceSubClass         0 
  bDeviceProtocol         0 
  bMaxPacketSize0        64
  idVendor           0x03f0 HP, Inc
  idProduct          0x002a LaserJet P1102
  bcdDevice            1.00
  iManufacturer           1 Hewlett-Packard
  iProduct                2 HP LaserJet Professional P1102
  iSerial                 3 000000000Q8CGRB3PR1a
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength           62
    bNumInterfaces          2
    bConfigurationValue     1
    iConfiguration          0 
    bmAttributes         0xc0
      Self Powered
    MaxPower               98mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           2
      bInterfaceClass         7 Printer
      bInterfaceSubClass      1 Printer
      bInterfaceProtocol      2 Bidirectional
      iInterface              4 Printer
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x01  EP 1 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0200  1x 512 bytes
        bInterval               0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0200  1x 512 bytes
        bInterval               0
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       0
      bNumEndpoints           3
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass      2 
      bInterfaceProtocol     16 
      iInterface              6 HP EWS
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x02  EP 2 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0200  1x 512 bytes
        bInterval               0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x82  EP 2 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0200  1x 512 bytes
        bInterval               0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x83  EP 3 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0008  1x 8 bytes
        bInterval              12
Device Qualifier (for other device speed):
  bLength                10
  bDescriptorType         6
  bcdUSB               2.00
  bDeviceClass            0 (Defined at Interface level)
  bDeviceSubClass         0 
  bDeviceProtocol         0 
  bMaxPacketSize0        64
  bNumConfigurations      1
Device Status:     0x0001
  Self Powered
	
root@OpenWrt:~# 
	


P910ND


config: /etc/config/p910nd

#config p910nd
#	  option device '/dev/usb/lp0'
#	  option port '0'
#	  option bidirectional '1'
#	  option runas_root '0'
#	  option mdns '0'
#	  option mdns_ty 'My Printer Manufacturer/Model'
#	  option mdns_note 'Basement'
#	  option enabled '1'

config p910nd
	option device '/dev/usb/lp0'
	option port '0'
	option bidirectional '0'
	option usbvidpid '03f0/002a'
	option runas_root '0'
	option mdns '1'
	option mdns_mfg 'Hewlett-Packard'
	option mdns_sn '000000000Q8CGRB3PR1a'
	option mdns_note 'HP LaserJet Pro P1102s custom print server'
	option mdns_mdl 'HP LaserJet Professional P1102'
	option mdns_cls 'PRINTER'
	option mdns_ty 'HP LaserJet Professional P1102'
	option mdns_product '(HP LaserJet Professional P1102)'
	option mdns_cmd 'ZJS,PJL,ACL,HTTP'
	option enabled '1'
  

file patch: /etc/init.d/p910nd

#!/bin/sh /etc/rc.common
# Copyright (C) 2007 OpenWrt.org
START=99
USE_PROCD=1

append_bool() {
	local section="$1"
	local option="$2"
	local value="$3"
	local _val
	config_get_bool _val "$section" "$option" '0'
	[ "$_val" -gt 0 ] && append args "$3"
}

append_string() {
	local section="$1"
	local option="$2"
	local value="$3"
	local _val
	config_get _val "$section" "$option"
	[ -n "$_val" ] && append args "$3$_val"
}

start_service() {
	config_load "p910nd"
	config_foreach start_p910nd p910nd
}


start_p910nd() {
	local section="$1" runas_root
	config_get_bool "enabled" "$section" "enabled" '1'
	if [ "$enabled" -gt 0 ]; then
		args="-d "
		config_get port "$section" port
		name=p910${port}d
		append_bool "$section" bidirectional "-b"
		append_string "$section" device "-f "
		append_string "$section" bind "-i "
		append_string "$section" port ""
		procd_open_instance $name
		procd_set_param stdout 1 # <--- add this for enable syslog debug
		procd_set_param stderr 1 # <--- add this for enable syslog debug
		procd_set_param command /usr/sbin/p910nd $args
		procd_set_param respawn

		config_get_bool runas_root "$section" runas_root 0
		[ "$runas_root" -ne 1 ] && procd_set_param user p910nd

		config_get_bool "mdns" "$section" "mdns" '0'
		config_get mdns_note "$section" mdns_note
		config_get mdns_ty "$section" mdns_ty
		config_get mdns_product "$section" mdns_product
		config_get mdns_mfg "$section" mdns_mfg
		config_get mdns_mdl "$section" mdns_mdl
		config_get mdns_cmd "$section" mdns_cmd
		[ "$mdns" -gt 0 ] && procd_add_mdns "pdl-datastream" "tcp" "$((port+9100))" "note=$mdns_note" "ty=$mdns_ty" "product=$mdns_product" "usb_MFG=$mdns_mfg" "usb_MDL=$mdns_mdl" "usb_CMD=$mdns_cmd"

		procd_close_instance
	fi
}

commands:

ln -s /dev/usb/lp0 /dev/lp0

service p910nd enable

service p910nd start

service p910nd restart

nmap 192.168.0.<host> -p 9100


DNSMASQ


config: /etc/dnsmasq.conf

# Change the following lines if you want dnsmasq to serve SRV
# records.
# You may add multiple srv-host lines.
# The fields are <name>,<target>,<port>,<priority>,<weight>

# A SRV record sending LDAP for the example.com domain to
# ldapserver.example.com port 289
#srv-host=_ldap._tcp.example.com,ldapserver.example.com,389

# Two SRV records for LDAP, each with different priorities
#srv-host=_ldap._tcp.example.com,ldapserver.example.com,389,1
#srv-host=_ldap._tcp.example.com,ldapserver.example.com,389,2

# A SRV record indicating that there is no LDAP server for the domain
# example.com
#srv-host=_ldap._tcp.example.com

# The following line shows how to make dnsmasq serve an arbitrary PTR
# record. This is useful for DNS-SD.
# The fields are <name>,<target>
#ptr-record=_http._tcp.dns-sd-services,"New Employee Page._http._tcp.dns-sd-services"

# Change the following lines to enable dnsmasq to serve TXT records.
# These are used for things like SPF and zeroconf.
# The fields are <name>,<text>,<text>...

#Example SPF.
#txt-record=example.com,"v=spf1 a -all"

#Example zeroconf
#txt-record=_http._tcp.example.com,name=value,paper=A4

# Provide an alias for a "local" DNS name. Note that this _only_ works
# for targets which are names from DHCP or /etc/hosts. Give host
# "bert" another name, bertrand
# The fields are <cname>,<target>
#cname=bertand,bert

expand-hosts
domain=lan
local=/lan/

txt-record=lan,"v=spf1 a -all"

# Default Base
ptr-record=b._dns-sd._udp.0.1.168.192.in-addr.arpa,lan
ptr-record=db._dns-sd._udp.0.1.168.192.in-addr.arpa,lan
ptr-record=r._dns-sd._udp.0.1.168.192.in-addr.arpa,lan
ptr-record=dr._dns-sd._udp.0.1.168.192.in-addr.arpa,lan
ptr-record=lb._dns-sd._udp.0.1.168.192.in-addr.arpa,lan

# Services
ptr-record=_services._dns-sd._udp.lan,_pdl-datastream._tcp.lan

# Printer
ptr-record=_pdl-datastream._tcp.lan,HP-LaserJet-P1102._pdl-datastream._tcp.lan
srv-host=HP-LaserJet-P1102._pdl-datastream._tcp.lan,HP-LaserJet-P1102.lan,9100
txt-record=HP-LaserJet-P1102._pdl-datastream._tcp.lan,ty=HP LaserJet Professional P1102,note=HP LaserJet Pro P1102s custom print server,product=(HP LaserJet Professional P1102),usb_MFG=Hewlett-Packard,usb_MDL=HP LaserJet Professional P1102,txtvers=1,qtotal=1,priority=20,Color=F,pdl=application/vnd.hp-PCL

commands:

service dnsmasq enable

service dnsmasq start

service dnsmasq restart

nmap 192.168.0.<host> -p 53,67,5353

sudo nmap 192.168.0.<host> -sU -p 53,67,5353


SNMPD


config: /etc/config/mini_snmpd

# you may add more than the 'default' mini_snmpd instances provided they all bind to different ports/interfaces
# to get around max 4 interface or mountpoint limit constrained by mini_snmpd's mib
config mini_snmpd 'default'
	option enabled 1
	option ipv6 0
	# Verbose flag given to mini_snmpd, extra verbose is only possible with compile time config flags
	option debug 0
	# Turn on community authentication (snmp agent must use community name)
	option auth 0
	option community 'public'
	option contact '192.168.0.100'
	option location '192.168.0.100'
	# to listen on all interfaces you need to set option listen_interface ''
	option listen_interface ''
	option udp_port '161'
	option tcp_port '161'
	#option vendor_oid ''
	option mib_timeout 1
	# enable basic disk usage statistics on specified mountpoint
	list disks '/overlay'
	list disks '/tmp'
	list disks '/dev'
	list disks '/var/run'
	# enable basic network statistics on specified interface
	# 4 interfaces maximum per instance, as named in /etc/config/network and luci
	# not physical device names
	list interfaces 'lan'
	# list interfaces 'wan'
	list interfaces 'wwan'

commands:

service mini_snmpd enable

service mini_snmpd start

service mini_snmpd restart

snmpwalk -m ALL -v 2c -c public 192.168.1.<host>

snmpwalk -Os -c public -v1 192.168.0.<host>

nmap 192.168.0.<host> -p 161

sudo nmap -Pn -sUC -p 161 192.168.0.<host>


UMDNS (ZEROCONF)


config: /etc/config/umdns

config umdns
	option jail 1
	list network lan
	list network wwan
#	list network wan
#	list network dmz
#	list network both

config: /etc/umdns/service.json

# check local/system services to share

ubus call service list | jsonfilter -e "$[*]['instances'][*]['data']['mdns']"

# output to /etc/umdns/<service-name>.json

commands:

service umdns enable

service umdns start

# restart service
service umdns restart

# test via avahi
avahi-browse --all --terminate

# test via nmap
sudo nmap -Pn -sUC -p 5353 192.168.0.<host>

# update net services list
ubus call umdns update

# browse founded services
ubus call umdns browse

# browser founded hosts
ubus call umdns hosts


SAMBA


config: /etc/samba/smb.conf.template

[global]
	netbios name = |NAME| 
	display charset = |CHARSET|
	interfaces = |INTERFACES|
	server string = |DESCRIPTION|
	unix charset = |CHARSET|
	workgroup = |WORKGROUP|
	bind interfaces only = yes
	deadtime = 30
	enable core files = no
	invalid users = root
	map to guest = Bad User
	min receivefile size = 16384
	passdb backend = smbpasswd
	smb passwd file = /etc/samba/smbpasswd
	use sendfile = yes
	printing = /usr/sbin/p910nd -b -f /dev/usb/lp0
	printcap name = p910nd
	load printers = yes
	use client driver = yes
	wins support = yes
	local master = yes
	preferred master = yes
	public = yes
	guest only = yes
	guest ok = yes
	guest account = nobody
	client min protocol = SMB1
	client max protocol = SMB3
	min protocol = SMB1
	max protocol = SMB3
	null passwords = yes 
	encrypt passwords = no
	security = share
	usershare allow guests = yes
	dns proxy = yes

[Public]
	path = /var/tmp/public
	browsable = yes
	public = yes
	guest only = yes
	guest ok = yes
	guest account = nobody
	read only = no
	writeable = yes
	create mask = 0777
	directory mask = 0777
	force create mode = 0777
	force directory mode = 0777
	security mask = 0777
	force security mode = 0777

[printers]
	printing = /usr/sbin/p910nd -b -f /dev/usb/lp0
	printcap name = p910nd
	load printers = yes
	use client driver = yes
	path = /var/tmp/spool
	printable = yes
	print ok = yes 
	browsable = yes
	public = yes
	guest only = yes
	guest ok = yes
	guest account = nobody
	read only = no
	writeable = yes
	create mask = 0777
	directory mask = 0777
	force create mode = 0777
	force directory mode = 0777
	security mask = 0777
	force security mode = 0777

[HP_LaserJet_Professional_P1102]
	printing = /usr/sbin/p910nd -b -f /dev/usb/lp0
	printcap name = p910nd
	load printers = yes
	use client driver = yes
	printer name = HP_LaserJet_Professional_P1102
	comment = HP Professional LaserJet P1102s custom print server based on OpenWRT and p910nd
	path = /var/tmp/spool
	printable = yes
	print ok = yes 
	browsable = yes
	public = yes
	guest only = yes
	guest ok = yes
	guest account = nobody
	read only = no
	writeable = yes
	create mask = 0777
	directory mask = 0777
	force create mode = 0777
	force directory mode = 0777
	security mask = 0777
	force security mode = 0777

config: /etc/config/samba

config samba
	option workgroup 'WORKGROUP'
	option homes '1'
	option name 'HP-LaserJet-P1102s-Server'
	option description 'HP Professional LaserJet P1102s custom print server based on OpenWRT and p910nd'
	option 'charset' 'UTF-8'
	option 'interface' 'loopback lan wwan'
	

commands:

mkdir /var/tmp/spool
chmod 777 -R /var/tmp/spool

mkdir /var/tmp/public
chmod 777 -R /var/tmp/public

service samba enable

service samba start

service samba restart

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment