-
Notifications
You must be signed in to change notification settings - Fork 0
Enterprise
This guide describes how system administrators can centrally deploy, configure, and manage the Cupsie Printer Provider extension across an organization.
Administrators can push configurations using two primary methods depending on their device management infrastructure.
- Sign in to the Google Admin Console.
- Navigate to Devices > Chrome > Apps & extensions > Users & browsers.
- Select the target Organizational Unit (OU) on the left.
- Click the yellow
+button and select Add from Chrome Web Store or Add by extension ID. - Search for/add Cupsie Corp (Extension ID:
blocbkaedafljnkkmhmlhnlpokoajdjg). - Set the Installation policy to Force install. This automatically installs the extension silently on user devices.
- Under the Policy for extensions text box, paste your JSON configuration.
[!IMPORTANT] When deploying via the Admin Console, schema fields must be wrapped in a
"Value"block:
{
"cupsServers": {
"Value": [
"http://cups-server.internal:631"
]
},
"ippPrinters": {
"Value": [
{
"url": "http://10.0.1.54:631/ipp/print",
"name": "HQ 1st Floor Copier"
},
{
"url": "http://10.0.1.55:631/ipp/print",
"name": "HQ 2nd Floor Copier"
}
]
},
"syncInterval": {
"Value": 1440
},
"defaultRequestingUser": {
"Value": "${user_name}"
}
}- Click Save in the top right.
For Linux workstations managed via config management tools (e.g. Ansible, Puppet), save a JSON policy file to /etc/opt/chrome/policies/managed/cupsie_policy.json.
Important
When using local 3rd-party policies, values are defined flat under the "3rdparty" extension block without the "Value" wrapper:
{
"ExtensionSettings": {
"blocbkaedafljnkkmhmlhnlpokoajdjg": {
"installation_mode": "force_installed",
"update_url": "https://clients2.google.com/service/update2/crx"
}
},
"3rdparty": {
"extensions": {
"blocbkaedafljnkkmhmlhnlpokoajdjg": {
"cupsServers": [
"http://cups-server.internal:631"
],
"ippPrinters": [
{
"url": "http://10.0.1.54:631/ipp/print",
"name": "HQ 1st Floor Copier"
},
{
"url": "http://10.0.1.55:631/ipp/print",
"name": "HQ 2nd Floor Copier"
}
],
"syncInterval": 1440,
"defaultRequestingUser": "${user_name}"
}
}
}
}Here are three examples of configurations formatted for deployment via the Google Admin Console (using the "Value" wrapper):
Just one CUPS HTTP server, with no other options configured.
{
"cupsServers": {
"Value": [
"http://cups.domain.local:631"
]
}
}Three HTTPS CUPS servers, with the dynamic identity placeholder and a 1400-minute sync interval.
{
"cupsServers": {
"Value": [
"https://cups-emea.acme.com",
"https://cups-apac.acme.com",
"https://cups-americas.acme.com"
]
},
"syncInterval": {
"Value": 1400
},
"defaultRequestingUser": {
"Value": "${user_name}"
}
}No CUPS servers configured, but two direct IPP printers and a 600-minute sync interval.
{
"ippPrinters": {
"Value": [
{
"url": "http://10.0.5.10:631/ipp/print",
"name": "Library Printer"
},
{
"url": "http://10.0.5.11:631/ipp/print",
"name": "Staff Room Copier"
}
]
},
"syncInterval": {
"Value": 600
}
}Administrators configure the extension behavior by defining values matching the schema (schema.json).
| Policy Key | Type | Description |
|---|---|---|
cupsServers |
Array of Strings | A list of network CUPS server URLs/IPs (e.g., ["http://cups.domain.local:631"]). |
ippPrinters |
Array of Objects | Standalone IPP network printer endpoints. Each item must have a url (string) and an optional friendly name (string). |
syncInterval |
Integer | Background printer discovery poll interval in minutes (min: 1, max: 7200). |
defaultRequestingUser |
String | Overrides the username sent with IPP/CUPS request metadata. Supports ${user_name} placeholder. |
-
Validation & Logging:
When the extension performs a printer synchronization cycle, it automatically validates the incoming policy values. If any configured printer/server URL is malformed, or if
syncIntervalfalls outside boundaries, the extension logs a detailed complaint in the background diagnostic logs. -
Connectivity Diagnostics:
If any of the pushed CUPS servers or printers are offline or unreachable, the background script writes an error log:
Server/Printer is unreachable: <Resource> is unreachable. Error: <Details>This allows the administrator to check user diagnostic logs to verify network routes and printer availability.
-
Zero Configuration:
Once the extension is pushed, it is silently installed. The configured CUPS queues and standalone printers instantly appear in the native Chrome print destination selector (
Ctrl + P/Cmd + P). - Configuration Display: On the extension Options page, managed configurations are displayed in read-only input blocks marked with a (Managed by Policy) badge. Users cannot delete or edit these settings.
-
Coexistence:
Users can still add their own personal CUPS servers or standalone printers. Personal settings are saved in
chrome.storage.syncand merge/coexist alongside the enterprise-managed configuration.
For enterprise environments, Cupsie is designed to be zero-touch for users and fully controlled by administrators.
graph TD
Admin[IT Administrator] -->|Deploys Policy| AdminConsole[Google Admin Console / Local Registry]
AdminConsole -->|Pushes Ext & Settings| Chrome[User Chrome Browser]
Chrome -->|Auto-grants Host Permissions| Extension[Cupsie Extension]
Extension -->|Queries identity| ChromeSync[Chrome Profile Identity]
Extension -->|Local Network Queries| Printers[CUPS Servers & IPP Printers]
-
Default Host Permissions: Cupsie declares default host permissions for
*://*/*. Users never receive permissions prompts upon installation or server configuration. -
Auto-Identity Resolution: If not overridden by policy, the extension queries the user's active Chrome Profile using the
identityAPI, extracts their username from the profile email (e.g.,bobfrombob@company.com), and uses it to negotiate printing authorization on CUPS servers. Administrators can explicitly embed this resolved username in thedefaultRequestingUserfield using the"${user_name}"placeholder (e.g."prefix_${user_name}"). - Managed Precedence: Enterprise configuration settings loaded from Chrome Managed Storage override or take precedence over the user's manual settings.
The defaultRequestingUser policy setting supports the dynamic placeholder ${user_name} to automatically resolve and inject each logged-in user's identity into print job metadata.
-
Profile Identity Lookup:
The extension queries the active Chrome user profile via Chrome's
chrome.identityAPI (getProfileUserInfo). -
Email Prefix Extraction:
It extracts the prefix from the signed-in profile email address before the
@symbol:-
jane.doe@company.com$\rightarrow$ jane.doe -
alex_smith@org.net$\rightarrow$ alex_smith
-
-
Template Substitution:
All instances of
${user_name}are dynamically replaced with the extracted username. Custom prefixes or suffixes can also be included in policy:-
"${user_name}"$\rightarrow$ "jane.doe" -
"corp_${user_name}"$\rightarrow$ "corp_jane.doe" -
"${user_name}_print"$\rightarrow$ "jane.doe_print"
-
-
Fallback Mechanism:
If the user is not signed into a Chrome profile, or if profile information is unavailable, the extension safely falls back to
"Chrome User". -
IPP Header Injection:
The resolved username is automatically set as the
requesting-user-nameattribute in IPP binary protocol payloads sent to CUPS print servers and network printers, enabling accurate user-level logging and quota enforcement.