source: server/lib/server.py @ 16055f9

no-cups
Last change on this file since 16055f9 was 16055f9, checked in by Jessica B. Hamrick <jhamrick@…>, 13 years ago

Add empty functions for desired IPP commands

  • Property mode set to 100755
File size: 5.2 KB
Line 
1#!/usr/bin/python
2
3import logging, BaseHTTPServer
4from ipprequest import *
5import ippconstants as const
6
7logging.basicConfig(level=logging.DEBUG)
8
9class GutenbachIPPHandler(BaseHTTPServer.BaseHTTPRequestHandler):
10    def handle_one_request(self):
11        self.raw_requestline = self.rfile.readline()
12        if not self.raw_requestline:
13            self.close_connection = 1
14            return
15        if not self.parse_request(): # An error code has been sent, just exit
16            return
17        self.handle_ipp()
18
19    def handle_ipp(self):
20        length = int(self.headers.getheader('content-length', 0))
21        request = IPPRequest(request=self.rfile,
22                             length=length)
23
24        response_kwargs = {}
25        response_kwargs['version'] = request.version
26        response_kwargs['request_id'] = request.request_id
27        response_kwargs = self.get_jobs(request, response_kwargs)
28        response = IPPRequest(**response_kwargs)
29
30        self.send_response(200, "o hai")
31        self.send_header("Content-Type", "application/ipp")
32        self.send_header("Connection", "close")
33        self.end_headers()
34        self.wfile.write(response.toBinaryData())
35
36    # def get_jobs(self, request, response_kwargs):
37    #     """get-jobs response"""
38
39    #     job_attributes = [IPPAttribute('job-id',
40    #                                    [IPPValue(IPPTags.INTEGER,
41    #                                              12345,
42    #                                              unpack=False)]),
43    #                       IPPAttribute('job-name',
44    #                                    [IPPValue(IPPTags.NAME_WITHOUT_LANGUAGE,
45    #                                              'foo',
46    #                                              unpack=False)]),
47    #                       IPPAttribute('job-originating-user-name',
48    #                                    [IPPValue(IPPTags.NAME_WITHOUT_LANGUAGE,
49    #                                              'jhamrick',
50    #                                              unpack=False)]),
51    #                       IPPAttribute('job-k-octets',
52    #                                    [IPPValue(IPPTags.INTEGER,
53    #                                              1,
54    #                                              unpack=False)]),
55    #                       IPPAttribute('job-state',
56    #                                    [IPPValue(IPPTags.ENUM,
57    #                                              const.IPP_JOB_HELD,
58    #                                              unpack=False)]),
59    #                       IPPAttribute('job-printer-uri',
60    #                                    [IPPValue(IPPTags.URI,
61    #                                              'http://localhost:8000/printers/foo',
62    #                                              unpack=False)])]
63
64
65    #     #req_op_attributes = request.getAttributeGroup(IPPTags.OPERATION_ATTRIBUTES_TAG)
66    #     #print req_op_attributes
67    #     #printer_uri = req_op_attributes[0].getAttribute('printer-uri')
68
69    #     op_attributes = [IPPAttribute('attributes-charset',
70    #                                   [IPPValue(IPPTags.CHARSET,
71    #                                             'utf-8',
72    #                                             unpack=False)]),
73    #                      IPPAttribute('attributes-natural-language',
74    #                                   [IPPValue(IPPTags.NATURAL_LANGUAGE,
75    #                                             'en-us',
76    #                                             unpack=False)])]
77       
78    #     job_attribute_group = IPPAttributeGroup(IPPTags.JOB_ATTRIBUTES_TAG,
79    #                                             job_attributes)
80    #     op_attributes_group = IPPAttributeGroup(IPPTags.OPERATION_ATTRIBUTES_TAG,
81    #                                             op_attributes)
82    #     response_kwargs['attribute_groups'] = [op_attributes_group,job_attribute_group]
83    #     response_kwargs['operation_id'] = const.IPP_OK
84
85    #     return response_kwargs
86
87    ##### Printer Commands
88
89    def print_job(self, request):
90        pass
91
92    def validate_job(self, request):
93        pass
94
95    def get_printer_attributes(self, request):
96        pass
97
98    def get_jobs(self, request):
99        pass
100
101    def print_uri(self, request):
102        pass
103
104    def create_job(self, request):
105        pass
106
107    def cups_get_default(self, request):
108        pass
109
110    def cups_get_printers(self, request):
111        pass
112
113    def pause_printer(self, request):
114        pass
115
116    def resume_printer(self, request):
117        pass
118
119    def set_printer_attributes(self, request):
120        pass
121
122    ##### Job Commands
123
124    def cancel_job(self, request):
125        pass
126
127    def get_job_attributes(self, request):
128        pass
129
130    def send_document(self, request):
131        pass
132
133    def send_uri(self, request):
134        pass
135
136    def set_job_attributes(self, request):
137        pass
138
139    def cups_get_document(self, request):
140        pass
141
142    def restart_job(self, request):
143        pass
144
145    def promote_job(self, request):
146        pass
147
148if __name__ == '__main__':
149    server_address = ('', 8000)
150    httpd = BaseHTTPServer.HTTPServer(server_address, GutenbachIPPHandler)
151    httpd.serve_forever()
Note: See TracBrowser for help on using the repository browser.