Warmcat homepage andy@warmcat.com
libwebsockets
{"schema":"libjg2-1", "vpath":"/git/", "avatar":"/git/avatar/", "alang":"", "gen_ut":1713410270, "reponame":"gitohashi", "desc":"Git web frontend with clientside rendering", "owner": { "name": "Andy Green", "email": "andy@warmcat.com", "md5": "c50933ca2aa61e0fe2c43d46bb6b59cb" },"url":"https://warmcat.com/repo/gitohashi", "f":3, "items": [ {"schema":"libjg2-1", "cid":"c538396e67d8579ca8f2aa11a5a519ec", "oid":{ "oid": "9961e6fef5f0f2458efc1c2a40d63f7cc50ebfce", "alias": [ "refs/heads/main","refs/heads/master"]},"blobname": "etc-gitohashi/conf.d/localhost", "blob": "# you should create one file like this per vhost in /etc/gitohashi/conf.d\n\n{\n\t\u0022vhosts\u0022: [{\n\t\t# this should match the external hostname for the vhost,\n\t\t# like xyz.com\n\t\t\u0022name\u0022: \u0022localhost\u0022,\n\t\t# multiple vhosts can occupy the same port (SNI is used\n\t\t# to resolve)\n\t\t\u0022port\u0022: \u0022443\u0022,\n\t\t# required for avatar cache\n\t\t\u0022enable-client-ssl\u0022: \u0022on\u0022,\n\t\t# \u0022ipv6\u0022: \u0022on\u0022,\n\n\t\t# You should store your real certificate key somewhere safer,\n\t\t# eg on Fedora /etc/pki/tls/private, readable only by root. But\n\t\t# since the right place for this differs by distro and these\n\t\t# particular certs are not valuable, we get them from\n\t\t# /usr/local/share where they are installed.\n\n\t\t\u0022host-ssl-key\u0022: \u0022/usr/local/share/gitohashi/example-cert/localhost-100y.key.pem\u0022,\n\t\t\u0022host-ssl-cert\u0022: \u0022/usr/local/share/gitohashi/example-cert/localhost-100y.cert.pem\u0022,\n\n\t\t\u0022mounts\u0022: [\n\t\t\t{\n\t\t\t\t# the dynamic html + json from libjsongit2\n\t\t\t\t\u0022mountpoint\u0022: \u0022/git\u0022,\n\t\t\t\t\u0022origin\u0022: \u0022callback://gitohashi\u0022\n\t\t\t},\n\t\t\t{\n\t\t\t\t# static assets like js, css, fonts\n\t\t\t\t\u0022mountpoint\u0022: \u0022/git/_gitohashi\u0022,\n\t\t\t\t\u0022origin\u0022: \u0022file:///usr/local/share/gitohashi/assets\u0022,\n\t\t\t\t\u0022cache-max-age\u0022: \u00227200\u0022,\n\t\t\t\t\u0022cache-reuse\u0022: \u00221\u0022,\n\t\t\t\t\u0022cache-revalidate\u0022: \u00220\u0022,\n\t\t\t\t\u0022cache-intermediaries\u0022: \u00220\u0022,\n\t \t\t\t\u0022extra-mimetypes\u0022: {\n\t\t\t\t\t\u0022.zip\u0022: \u0022application/zip\u0022,\n\t\t\t\t\t\u0022.map\u0022: \u0022application/json\u0022,\n\t\t\t\t\t\u0022.ttf\u0022: \u0022application/x-font-ttf\u0022\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\t# semi-static cached avatar icons\n\t\t\t\t\u0022mountpoint\u0022: \u0022/git/avatar\u0022,\n\t\t\t\t\u0022origin\u0022: \u0022callback://avatar-proxy\u0022,\n\t\t\t\t\u0022cache-max-age\u0022: \u00222400\u0022,\n\t\t\t\t\u0022cache-reuse\u0022: \u00221\u0022,\n\t\t\t\t\u0022cache-revalidate\u0022: \u00220\u0022,\n\t\t\t\t\u0022cache-intermediaries\u0022: \u00220\u0022\n\t\t\t}\n\t\t],\n\t\t\n\t\t#\n\t\t# these headers, which will be sent on every transaction, make\n\t\t# recent browsers definitively ban any external script sources,\n\t\t# no matter what might manage to get injected later in the\n\t\t# page. It's a last line of defence against any successful XSS.\n\t\t#\n\t\t\n\t\t\u0022headers\u0022: [{\n\t\t \u0022content-security-policy\u0022: \u0022default-src 'none'; img-src 'self' data: https://travis-ci.org https://api.travis-ci.org https://ci.appveyor.com https://scan.coverity.com; script-src 'self'; font-src 'self'; style-src 'self'; connect-src 'self'; frame-ancestors 'none'; base-uri 'none';\u0022,\n\t\t \u0022x-content-type-options\u0022: \u0022nosniff\u0022,\n\t\t \u0022x-xss-protection\u0022: \u00221; mode\u003dblock\u0022,\n\t\t \u0022x-frame-options\u0022: \u0022deny\u0022,\n\t\t \u0022referrer-policy\u0022: \u0022no-referrer\u0022\n\t\t}],\n\n\t\t\u0022ws-protocols\u0022: [\n\n\t\t{\u0022gitohashi\u0022: {\n\t\t\t# template HTML to use for this vhost. You'd normally\n\t\t\t# copy this to gitohashi-vhostname.html and modify it\n\t\t\t# to show the content, logos, links, fonts, css etc for\n\t\t\t# your vhost. It's not served directly but read from\n\t\t\t# the filesystem. Although it's cached in memory by\n\t\t\t# gitohashi, it checks for changes and reloads if\n\t\t\t# changed automatically.\n\t\t\t#\n\t\t\t# Putting logos etc as svg in css is highly recommended,\n\t\t\t# like fonts these can be transferred once with a loose\n\t\t\t# caching policy. So in practice they cost very little,\n\t\t\t# and allow the browser to compose the page without\n\t\t\t# delay.\n\t\t\t#\n\t\t\t\u0022html-file\u0022:\t \u0022/usr/local/share/gitohashi/templates/gitohashi-example.html\u0022,\n\t\t\t#\n\t\t\t# vpath required at start of links into this vhost's\n\t\t\t# gitohashi content for example if an external http\n\t\t\t# server is proxying us, and has been told to direct\n\t\t\t# URLs starting \u0022/git\u0022 to us, this should be set to\n\t\t\t# \u0022/git/\u0022 so URLs we generate referring to our own pages\n\t\t\t# can work.\n\t\t\t#\n\t\t\t\u0022vpath\u0022:\t \u0022/git/\u0022,\n\t\t\t#\n\t\t\t# base directory for the bare git repos we might serve\n\t\t\t#\n\t\t\t\u0022repo-base-dir\u0022: \u0022/srv/repositories\u0022,\n\t\t\t#\n\t\t\t# allow serving git repos that have gitolite read ACL\n\t\t\t# rights for this user. Set to \u0022@all\u0022 to serve all\n\t\t\t# available repos (except gitolite-admin, which will\n\t\t\t# never be served) The recommended convention is a\n\t\t\t# virtual user \u0022v-vhostname\u0022 in gitolite config and here\n\t\t\t# to mark which repos should be made available on this\n\t\t\t# vhost.\n\t\t\t#\n\t\t\t\u0022acl-user\u0022:\t \u0022@all\u0022,\n\t\t\t#\n\t\t\t# url mountpoint for the avatar cache\n\t\t\t#\n\t\t\t\u0022avatar-url\u0022:\t \u0022/git/avatar/\u0022,\n\t\t\t#\n\t\t\t# libjsgit2 JSON cache... this\n\t\t\t# should not be directly served\n\t\t\t#\n\t\t\t\u0022cache-base\u0022:\t\u0022/var/cache/libjsongit2\u0022,\n\t\t\t#\n\t\t\t# restrict the JSON cache size\n\t\t\t# to 100MB\n\t\t\t#\n\t\t\t\u0022cache-size\u0022: \u0022100000000\u0022,\n\t\t\t#\n\t\t\t# optional flags, b0 \u003d 1 \u003d blog mode\n\t\t\t#\n\t\t\t\u0022flags\u0022: 0\n\t\t\t#\u0022blog-repo-name\u0022:\t\u0022myrepo\u0022\n\t\t},\n\t\t\u0022avatar-proxy\u0022: {\n\t\t\t\u0022remote-base\u0022: \u0022https://www.gravatar.com/avatar/\u0022,\n\t\t\t#\n\t\t\t# this dir is served via avatar-proxy\n\t\t\t#\n\t\t\t\u0022cache-dir\u0022: \u0022/var/cache/libjsongit2\u0022\n\t\t}}\n\t\t]\n\t\t}\n\t]\n}\n","s":{"c":1713410270,"u": 224}} ],"g": 2245,"chitpc": 0,"ehitpc": 0,"indexed":0 , "ab": 1, "si": 0, "db":0, "di":0, "sat":0, "lfc": "0000"}