webhooks: Specify server_address on klippy command-line

Don't default to "/tmp/klippy_uds" for the webhooks unix domain socket
filename.  Instead, require the filename to be specified on the
command-line (via a new "-a" parameter).

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
This commit is contained in:
Kevin O'Connor 2020-08-11 16:26:07 -04:00
parent ebc79a1ee8
commit 0aad2437c5
2 changed files with 11 additions and 9 deletions

View File

@ -247,6 +247,8 @@ def main():
opts.add_option("-I", "--input-tty", dest="inputtty",
default='/tmp/printer',
help="input tty name (default is /tmp/printer)")
opts.add_option("-a", "--api-server", dest="apiserver",
help="api server unix domain socket filename")
opts.add_option("-l", "--logfile", dest="logfile",
help="write log to file instead of stderr")
opts.add_option("-v", action="store_true", dest="verbose",
@ -259,7 +261,8 @@ def main():
options, args = opts.parse_args()
if len(args) != 1:
opts.error("Incorrect number of arguments")
start_args = {'config_file': args[0], 'start_reason': 'startup'}
start_args = {'config_file': args[0], 'apiserver': options.apiserver,
'start_reason': 'startup'}
debuglevel = logging.INFO
if options.verbose:

View File

@ -11,8 +11,6 @@ import errno
import json
import homing
SERVER_ADDRESS = "/tmp/klippy_uds"
# Json decodes strings as unicode types in Python 2.x. This doesn't
# play well with some parts of Klipper (particuarly displays), so we
# need to create an object hook. This solution borrowed from:
@ -98,15 +96,16 @@ class ServerSocket:
self.reactor = printer.get_reactor()
self.sock = self.fd_handle = None
self.clients = {}
is_fileinput = (printer.get_start_args().get('debuginput')
is not None)
if is_fileinput:
# Do not enable server in batch mode
start_args = printer.get_start_args()
server_address = start_args.get('apiserver')
is_fileinput = (start_args.get('debuginput') is not None)
if not server_address or is_fileinput:
# Do not enable server
return
self._remove_socket_file(SERVER_ADDRESS)
self._remove_socket_file(server_address)
self.sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
self.sock.setblocking(0)
self.sock.bind(SERVER_ADDRESS)
self.sock.bind(server_address)
self.sock.listen(1)
self.fd_handle = self.reactor.register_fd(
self.sock.fileno(), self._handle_accept)