-
Notifications
You must be signed in to change notification settings - Fork 0
Enterprise
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}"
}
}
}
}For other OSes see the official Google documentation.
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.
-
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.