{"id":27974256,"url":"https://github.com/openprinting/go-mfp","last_synced_at":"2025-05-08T00:13:32.261Z","repository":{"id":286974875,"uuid":"768196882","full_name":"OpenPrinting/go-mfp","owner":"OpenPrinting","description":"MFP: Go libraries and tools for Multi-Function Printers and scanners","archived":false,"fork":false,"pushed_at":"2025-05-07T23:50:58.000Z","size":11876,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-05-08T00:13:24.002Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-2-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/OpenPrinting.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-03-06T16:39:09.000Z","updated_at":"2025-05-07T23:51:01.000Z","dependencies_parsed_at":null,"dependency_job_id":"d3d6a4c6-b15a-4d5b-be34-85e27f61354b","html_url":"https://github.com/OpenPrinting/go-mfp","commit_stats":null,"previous_names":["alexpevzner/mfp","openprinting/go-mfp"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenPrinting%2Fgo-mfp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenPrinting%2Fgo-mfp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenPrinting%2Fgo-mfp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenPrinting%2Fgo-mfp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/OpenPrinting","download_url":"https://codeload.github.com/OpenPrinting/go-mfp/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252973673,"owners_count":21834108,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-05-08T00:13:31.509Z","updated_at":"2025-05-08T00:13:32.217Z","avatar_url":"https://github.com/OpenPrinting.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# GO-MFP\n\n[![godoc.org](https://godoc.org/github.com/OpenPrinting/go-mfp?status.svg)](https://godoc.org/github.com/OpenPrinting/go-mfp)\n![GitHub](https://img.shields.io/github/license/OpenPrinting/go-mfp)\n[![Go Report Card](https://goreportcard.com/badge/github.com/OpenPrinting/go-mfp)](https://goreportcard.com/report/github.com/OpenPrinting/go-mfp)\n\n**Warning:** this project is work in progress and under the intensive\ndevelopment.\n\nThis project contains the foundation of the behavior-accurate simulator for\nmulti-function printers (MFPs) that supports at least IPP 2.x for\nprinting, eSCL and WSD for scanning, and DNS-SD and WS-Discovery for\ndevice discovery.\n\nThis simulator will consist of a core simulation engine that provides\nreference implementations of the aforementioned protocols, along with a\ncustomization engine that allows for the expression of implementation\ndetails specific to individual devices without the need to reimplement\ncommon functionalities repeatedly.\n\nFor the purpose of implementation of the MFP core simulation engine it\ncontains many libraries (Go packages) that are aimed to be a part of the\nsimulator, but can be useful as a general-purpose libraries as well.\n\nIt contains (partially done for now) the fairly complete eSCL and WSD\nWS-Scan implementations, DNS-SD and WS-Discovery published and querier,\nsmart device discovery engine, able to bind various instances of the\nsame device together, representing them as a sub-units of a single\nphysical device (IPP/IPPS, AppSocket AKA JetDirect and LPD for printing,\neSCL and WSD for scanning), based on the similar work previously done for\nscanners in the [sane-airscan](https://github.com/alexpevzner/sane-airscan)\nproject and much more.\n\nThe ultimate goal of this project, among writing the MFP simulator, is\nto implement a comprehensive Go toolkit for printing and scanning on\nLinux and UNIX-like systems.\n\n## Building\n\nBuilding is quite straightforward: just type `make` at the root\ndirectory.\n\nIt requires the following development packages to be installed:\n\n  * Golang compiler\n  * gcc compiler\n  * avahi-libs for the DNS-SD\n\nIt also requires some external Go libraries, but if your build computer\nis connected to the network, they will be downloaded and cached\nautomatically at the first build attrmpt:\n\n  * github.com/OpenPrinting/go-avahi - Go binding for Avahi\n  * github.com/OpenPrinting/goipp - Low-level IPP implementation\n  * github.com/google/go-cmp - used only for testing\n  * github.com/peterh/liner - line editor for the interactive shell\n\n## Source tree organization\n\n### import github.com/OpenPrinting/go-mfp/abstract\"\n\nThis package contains definitions for the abstract\n(protocol-independent) printer and scanner.\n\n### import github.com/OpenPrinting/go-mfp/argv\"\n\nThis is a general-purpose library for parsing command options.\n\n### import github.com/OpenPrinting/go-mfp/cmd\"\n\nThis is a root directory for all commands (executable files) build as a\npart of this project.\n\n#### import github.com/OpenPrinting/go-mfp/cmd/mfp\"\n\nTODO\n\n#### import github.com/OpenPrinting/go-mfp/cmd/mfp-cups\"\n\nThis is the command-line CUPS client.\n\n#### import github.com/OpenPrinting/go-mfp/cmd/mfp-discover\"\n\nThis is the command-line device discovery tool.\n\n#### import github.com/OpenPrinting/go-mfp/cmd/mfp-masq\"\n\nThis is the MFP masquerading tool. It allows to re-expose existent MFP\ndevice under the different name or different IP address and to sniff its\ntraffic (which is convenient tool for troubleshooting).\n\n#### import github.com/OpenPrinting/go-mfp/cmd/mfp-shell\"\n\nThis is interactive shell for all mfp-XXX commands.\n\n#### import github.com/OpenPrinting/go-mfp/cmd/mfp-virtual\"\n\nThis is the vurtual MFP simulator.\n\n#### import github.com/OpenPrinting/go-mfp/cups\"\n\nThis is the CUPS API library. It uses the IPP protocol to communicate\nwith the CUPS server.\n\n#### import github.com/OpenPrinting/go-mfp/discovery\"\n\nThis is the smart MFP discovery library.\n\n#### import github.com/OpenPrinting/go-mfp/internal\"\n\nThis is the collection of internally used support libraries. These\nlibraries are not exposed via the GO-MFP API.\n\n#### import github.com/OpenPrinting/go-mfp/log\"\n\nThis is the logging library, used across the project.\n\n### import github.com/OpenPrinting/go-mfp/proto\"\n\nThis is the collection of packages, that implement MFP protocols.\n\n#### import github.com/OpenPrinting/go-mfp/proto/escl\"\n\nThis is the eSCL protocol implementation.\n\n#### import github.com/OpenPrinting/go-mfp/proto/ipp\"\n\nThis is the high-level IPP protocol implementation.\n\n#### import github.com/OpenPrinting/go-mfp/proto/wsd\"\n\nThis is the WS-Discovery protocol implementation, querier and responder.\n\n### import github.com/OpenPrinting/go-mfp/transport\"\n\nThis is the low-level transport library, used for communication with\ndevices.\n\n### import github.com/OpenPrinting/go-mfp/util\"\n\nThis is the collection of internally used support libraries. These\nlibraries are exposed via the GO-MFP API. \n\n\u003c!-- vim:ts=8:sw=4:et:textwidth=72\n--\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenprinting%2Fgo-mfp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fopenprinting%2Fgo-mfp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenprinting%2Fgo-mfp/lists"}