Skip to content

Instantly share code, notes, and snippets.

@shuuryou
Last active February 8, 2026 01:03
Show Gist options
  • Select an option

  • Save shuuryou/c07332d3d0949fcbd7c413166201b21e to your computer and use it in GitHub Desktop.

Select an option

Save shuuryou/c07332d3d0949fcbd7c413166201b21e to your computer and use it in GitHub Desktop.
Zammad branding remover: a small shell script that will patch away "Powered by Zammad" and the "Come work for us" banner in the JavaScript console. It also provides a clean way to replace the SVG logos. The script needs to be run after every update.
#!/usr/bin/env bash
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
remove_branding() {
local file="$1"
echo " * $file"
perl -i -pe 'BEGIN{undef $/;} s!<div class="poweredBy">.+?</div>!!sig' "$file"
}
echo "Removing branding..."
remove_branding /opt/zammad/app/assets/javascripts/app/views/admin_password_auth/request.jst.eco
remove_branding /opt/zammad/app/assets/javascripts/app/views/admin_password_auth/request_sent.jst.eco
remove_branding /opt/zammad/app/assets/javascripts/app/views/login.jst.eco
remove_branding /opt/zammad/app/assets/javascripts/app/views/password/reset_change.jst.eco
remove_branding /opt/zammad/app/assets/javascripts/app/views/password/reset_failed.jst.eco
remove_branding /opt/zammad/app/assets/javascripts/app/views/password/reset.jst.eco
remove_branding /opt/zammad/app/assets/javascripts/app/views/password/reset_sent.jst.eco
remove_branding /opt/zammad/app/assets/javascripts/app/views/signup/verify.jst.eco
remove_branding /opt/zammad/app/assets/javascripts/app/views/signup.jst.eco
echo "Removing ASCII art logo in JavaScript console..."
cp "$SCRIPT_DIR/hello_banner.coffee" "/opt/zammad/app/assets/javascripts/app/controllers/_plugin/hello_banner.coffee"
echo "Restoring custom files in public folder..."
rsync -av "$SCRIPT_DIR/public/" "/opt/zammad/public/"
echo "Replacing logos..."
if xsltproc "$SCRIPT_DIR/patchsprites.xsl" "/opt/zammad/public/assets/images/icons.svg" > "/opt/zammad/public/assets/images/icons.svg.new"
then
mv "/opt/zammad/public/assets/images/icons.svg.new" "/opt/zammad/public/assets/images/icons.svg"
else
echo "Error!"
exit 1
fi
echo "Deleting stale assets..."
rm -v /opt/zammad/public/assets/*.gz
rm -v /opt/zammad/public/assets/*.js
rm -v /opt/zammad/public/assets/*.css
echo "Clearing cache..."
zammad run rails r "Rails.cache.clear"
echo "Recompiling assets..."
/usr/bin/zammad run rake assets:precompile
echo "Restarting application server..."
systemctl restart zammad
echo "Finished."
class HelloBanner
constructor: ->
return
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:svg="http://www.w3.org/2000/svg">
<xsl:output method="xml" doctype-public="-//W3C//DTD SVG 1.1//EN" doctype-system="http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"/>
<xsl:template match="svg:symbol[@id='icon-logo' or @id='icon-full-logo' or @id='icon-logotype']">
<symbol>
<xsl:attribute name="id"><xsl:value-of select="@id"/></xsl:attribute>
<xsl:attribute name="preserveAspectRatio"><xsl:value-of select="@preserveAspectRatio"/></xsl:attribute>
<xsl:attribute name="viewBox"><!-- TODO: Replace --></xsl:attribute>
<!-- TODO: Replace -->
</symbol>
</xsl:template>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment