#!/bin/python3
import os
import socket
import subprocess

socket_path = '/tmp/'
socket_path = '/opt/print-control/pipes/'
name='remove_list'

def cancel_print_job(jobid):
    try:
        # 使用 lprm 取消打印任务，将参数传递给 lprm
        result = subprocess.run(['lprm', jobid])
        if result.returncode == 0:
            print(f"Print task {jobid} has been cancelled.")
        else:
            print(f"Failed to cancel print task {jobid}.")
    except subprocess.CalledProcessError as e:
        print(f"An error occurred: {e}")

def remove_listen():
    try:
        # 检查套接字文件是否存在，如果存在则删除
        if os.path.exists(socket_path + name):
            os.remove(socket_path + name)

        server_socket = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
        server_socket.bind(socket_path + name)
        print(f"Server listening on {socket_path + name}")
        server_socket.listen(1)
        os.chmod(socket_path + name, 0o666)
        while True:
            try:
                conn, addr = server_socket.accept()
                data = conn.recv(8)
                if not data:  # 如果数据为空，可能客户端已经断开连接
                    continue

                jobid = data.decode()
                
                if jobid.strip():  # 确保 jobid 不是空字符串或仅包含空白字符
                    cancel_print_job(jobid)
            except socket.timeout:
                print(f"error: Timeout after {timeout} seconds.")
            except Exception as e:
                print(f"error: An error occurred: {e}")
        
        server_socket.close()
    except Exception as e:
        print(f"error: An error occurred: {e}")
    finally:
        server_socket.close()

if __name__ == '__main__':
    remove_listen()

