mirror of
https://github.com/bettercap/bettercap
synced 2025-08-14 02:36:57 -07:00
misc: small fix or general refactoring i did not bother commenting
This commit is contained in:
parent
6af2de6de9
commit
76e094f687
8 changed files with 733 additions and 679 deletions
202
modules/zerogod/zerogod_ipp_get_printer_attributes.go
Normal file
202
modules/zerogod/zerogod_ipp_get_printer_attributes.go
Normal file
|
@ -0,0 +1,202 @@
|
|||
package zerogod
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"time"
|
||||
|
||||
"github.com/evilsocket/islazy/ops"
|
||||
"github.com/phin1x/go-ipp"
|
||||
)
|
||||
|
||||
func ippOnGetPrinterAttributes(ctx *HandlerContext, ipp_req *ipp.Request) {
|
||||
ipp_resp := ipp.NewResponse(ipp.StatusOk, ipp_req.RequestId)
|
||||
|
||||
// https://tools.ietf.org/html/rfc2911 section 3.1.4.2 Response Operation Attributes
|
||||
ipp_resp.OperationAttributes["attributes-charset"] = []ipp.Attribute{
|
||||
{
|
||||
Value: "utf-8",
|
||||
Tag: ipp.TagCharset,
|
||||
},
|
||||
}
|
||||
ipp_resp.OperationAttributes["attributes-natural-language"] = []ipp.Attribute{
|
||||
{
|
||||
Value: "en",
|
||||
Tag: ipp.TagLanguage,
|
||||
},
|
||||
}
|
||||
|
||||
// collect user attributes
|
||||
userProps := make(map[string]string)
|
||||
for name, defaultValue := range IPP_USER_ATTRIBUTES {
|
||||
if value, found := ctx.ippAttributes[name]; found {
|
||||
userProps[name] = value
|
||||
} else {
|
||||
userProps[name] = defaultValue
|
||||
}
|
||||
}
|
||||
|
||||
// rfc2911 section 4.4
|
||||
ipp_resp.PrinterAttributes = []ipp.Attributes{
|
||||
{
|
||||
// custom
|
||||
"printer-name": []ipp.Attribute{
|
||||
{
|
||||
Value: userProps["printer-name"],
|
||||
Tag: ipp.TagName,
|
||||
},
|
||||
},
|
||||
"printer-info": []ipp.Attribute{
|
||||
{
|
||||
Value: userProps["printer-info"],
|
||||
Tag: ipp.TagText,
|
||||
},
|
||||
},
|
||||
"printer-make-and-model": []ipp.Attribute{
|
||||
{
|
||||
Value: userProps["printer-make-and-model"],
|
||||
Tag: ipp.TagText,
|
||||
},
|
||||
},
|
||||
"printer-location": []ipp.Attribute{
|
||||
{
|
||||
Value: userProps["printer-location"],
|
||||
Tag: ipp.TagText,
|
||||
},
|
||||
},
|
||||
"printer-privacy-policy-uri": []ipp.Attribute{
|
||||
{
|
||||
Value: userProps["printer-privacy-policy-uri"],
|
||||
Tag: ipp.TagUri,
|
||||
},
|
||||
},
|
||||
"ppd-name": []ipp.Attribute{
|
||||
{
|
||||
Value: userProps["ppd-name"],
|
||||
Tag: ipp.TagName,
|
||||
},
|
||||
},
|
||||
"printer-uri-supported": []ipp.Attribute{
|
||||
{
|
||||
Value: fmt.Sprintf("%s://%s:%d/printer", ops.Ternary(ctx.srvTLS, "ipps", "ipp"), ctx.srvHost, ctx.srvPort),
|
||||
Tag: ipp.TagUri,
|
||||
},
|
||||
},
|
||||
"uri-security-supported": []ipp.Attribute{
|
||||
{
|
||||
Value: ops.Ternary(ctx.srvTLS, "tls", "none"),
|
||||
Tag: ipp.TagKeyword,
|
||||
},
|
||||
},
|
||||
"uri-authentication-supported": []ipp.Attribute{
|
||||
{
|
||||
Value: "none",
|
||||
Tag: ipp.TagKeyword,
|
||||
},
|
||||
},
|
||||
"printer-state": []ipp.Attribute{
|
||||
{
|
||||
Value: 3, // idle
|
||||
Tag: ipp.TagEnum,
|
||||
},
|
||||
},
|
||||
"printer-state-reasons": []ipp.Attribute{
|
||||
{
|
||||
Value: "none",
|
||||
Tag: ipp.TagKeyword,
|
||||
},
|
||||
},
|
||||
"ipp-versions-supported": []ipp.Attribute{
|
||||
{
|
||||
Value: "1.1",
|
||||
Tag: ipp.TagKeyword,
|
||||
},
|
||||
},
|
||||
"operations-supported": []ipp.Attribute{
|
||||
{
|
||||
Value: []int{
|
||||
0x0002, // print job (required by cups)
|
||||
0x0004, // validate job (required by cups)
|
||||
0x0008, // cancel job (required by cups)
|
||||
0x0009, // get job attributes (required by cups)
|
||||
0x000b, // get printer attributes
|
||||
},
|
||||
Tag: ipp.TagEnum,
|
||||
},
|
||||
},
|
||||
"multiple-document-jobs-supported": []ipp.Attribute{
|
||||
{
|
||||
Value: false,
|
||||
Tag: ipp.TagBoolean,
|
||||
},
|
||||
},
|
||||
"charset-configured": []ipp.Attribute{
|
||||
{
|
||||
Value: "utf-8",
|
||||
Tag: ipp.TagCharset,
|
||||
},
|
||||
},
|
||||
"charset-supported": []ipp.Attribute{
|
||||
{
|
||||
Value: "utf-8",
|
||||
Tag: ipp.TagCharset,
|
||||
},
|
||||
},
|
||||
"natural-language-configured": []ipp.Attribute{
|
||||
{
|
||||
Value: "en",
|
||||
Tag: ipp.TagLanguage,
|
||||
},
|
||||
},
|
||||
"generated-natural-language-supported": []ipp.Attribute{
|
||||
{
|
||||
Value: "en",
|
||||
Tag: ipp.TagLanguage,
|
||||
},
|
||||
},
|
||||
"document-format-default": []ipp.Attribute{
|
||||
{
|
||||
Value: "application/pdf",
|
||||
Tag: ipp.TagMimeType,
|
||||
},
|
||||
},
|
||||
"document-format-supported": []ipp.Attribute{
|
||||
{
|
||||
Value: "application/pdf",
|
||||
Tag: ipp.TagMimeType,
|
||||
},
|
||||
},
|
||||
"printer-is-accepting-jobs": []ipp.Attribute{
|
||||
{
|
||||
Value: true,
|
||||
Tag: ipp.TagBoolean,
|
||||
},
|
||||
},
|
||||
"queued-job-count": []ipp.Attribute{
|
||||
{
|
||||
Value: 0,
|
||||
Tag: ipp.TagInteger,
|
||||
},
|
||||
},
|
||||
"pdl-override-supported": []ipp.Attribute{
|
||||
{
|
||||
Value: "not-attempted",
|
||||
Tag: ipp.TagKeyword,
|
||||
},
|
||||
},
|
||||
"printer-up-time": []ipp.Attribute{
|
||||
{
|
||||
Value: time.Now().Unix(),
|
||||
Tag: ipp.TagInteger,
|
||||
},
|
||||
},
|
||||
"compression-supported": []ipp.Attribute{
|
||||
{
|
||||
Value: "none",
|
||||
Tag: ipp.TagKeyword,
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
ippSendResponse(ctx, ipp_resp)
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue