Introduction
Introduction Statistics Contact Development Disclaimer Help
Moving git frontend to stagit. - selfhost - Incus configurations for my self-ho…
Log
Files
Refs
README
---
commit 1cccbb9ba340e0c0af70679f15d3c01798cd5f3e
parent 7c972e9d2ea5caf10dc4a414fd590898415bb35a
Author: Jay Scott <[email protected]>
Date: Sun, 23 Jun 2024 16:17:25 +0100
Moving git frontend to stagit.
Diffstat:
D git/files/cgitrc | 28 ----------------------------
D git/files/favicon.ico | 0
M git/files/favicon.png | 0
M git/files/lighttpd.conf | 14 ++------------
M git/files/logo.png | 0
A git/files/stagit.sh | 23 +++++++++++++++++++++++
A git/files/style.css | 71 +++++++++++++++++++++++++++++…
D git/files/theme.css | 825 -----------------------------…
M git/git.yaml | 2 +-
M git/init.sh | 11 ++++++-----
10 files changed, 103 insertions(+), 871 deletions(-)
---
diff --git a/git/files/cgitrc b/git/files/cgitrc
@@ -1,28 +0,0 @@
-#
-# cgit config
-#
-
-# theme
-css=/theme.css
-logo=/logo.png
-favicon=/favicon.png
-footer=
-readme=:README
-
-# header
-root-title=git.jay.scot
-root-desc=
-
-# options
-enable-http-clone=1
-enable-index-owner=0
-enable-index-links=1
-remove-suffix=1
-enable-commit-graph=1
-enable-log-filecount=1
-enable-git-config=1
-robots=noindex, nofollow
-
-# repos
-virtual-root=/
-scan-path=/srv/git
diff --git a/git/files/favicon.ico b/git/files/favicon.ico
Binary files differ.
diff --git a/git/files/favicon.png b/git/files/favicon.png
Binary files differ.
diff --git a/git/files/lighttpd.conf b/git/files/lighttpd.conf
@@ -8,7 +8,7 @@ server.groupname = "lighttpd"
server.document-root = var.basedir + "/htdocs"
server.pid-file = "/run/lighttpd.pid"
server.errorlog = var.logdir + "/error.log"
-index-file.names = ("index.php", "index.html", "index.htm", "default.htm")
+index-file.names = ("index.html")
server.modules += ( "mod_cgi", "mod_rewrite", "mod_openssl")
@@ -19,17 +19,7 @@ $SERVER["socket"] == ":443" {
ssl.openssl.ssl-conf-cmd = ("MinProtocol" => "TLSv1.3", "Options" => "-Ser…
server.name = "git.jay.scot"
- server.document-root = "/usr/share/webapps/cgit/"
-
- index-file.names = ( "cgit.cgi" )
- cgi.assign = ( "cgit.cgi" => "" )
- mimetype.assign = ( ".css" => "text/css" )
- url.rewrite-once = (
- "^/cgit/cgit.css" => "/cgit.css",
- "^/cgit/cgit.png" => "/cgit.png",
- "^/([^?/]+/[^?]*)?(?:\?(.*))?$" => "/cgit.cgi?url=$1&$2",
- )
-
+ server.document-root = "/srv/www/"
}
$HTTP["scheme"] == "http" {
diff --git a/git/files/logo.png b/git/files/logo.png
Binary files differ.
diff --git a/git/files/stagit.sh b/git/files/stagit.sh
@@ -0,0 +1,23 @@
+#!/bin/sh
+
+reposdir="/srv/git"
+wwwdir="/srv/www"
+
+stagit-index "${reposdir}/"*/ | sed 's|/log\.html||g' > "${wwwdir}/index.html"
+
+for dir in "${reposdir}/"*/; do
+
+ r=$(basename "${dir}")
+ printf "%s... " "${r}"
+
+ mkdir -p "${wwwdir}/${r}"
+ cd "${wwwdir}/${r}" || continue
+ stagit "${reposdir}/${r}"
+
+ ln -sf log.html index.html
+ ln -sf ../style.css style.css
+ ln -sf ../logo.png logo.png
+ ln -sf ../favicon.png favicon.png
+
+ echo "done"
+done
diff --git a/git/files/style.css b/git/files/style.css
@@ -0,0 +1,71 @@
+body {
+ color: #000;
+ background-color: #FFF;
+ font-family: monospace;
+ font-size: 11pt;
+ margin: 0;
+ padding: 0;
+}
+
+h1 {
+ font-size: 2em;
+ margin: 0;
+}
+
+h2, h3, h4, h5, h6 {
+ font-size: 1em;
+ margin: 0;
+}
+
+img {
+ border: 0;
+ vertical-align: middle;
+}
+
+a {
+ color: #000;
+ text-decoration: none;
+}
+
+a:hover {
+ color: #333;
+ font-weight: bold;
+}
+
+a:target {
+ background-color: #CCC;
+}
+
+.desc {
+ color: #555;
+ margin-bottom: 1em;
+}
+
+hr {
+ border: 0;
+ border-top: 1px solid #555;
+ height: 1px;
+}
+
+pre {
+ font-family: monospace;
+}
+
+@media (prefers-color-scheme: dark) {
+ body {
+ background-color: #000;
+ color: #BDBDBD;
+ }
+ hr {
+ border-color: #222;
+ }
+ a {
+ color: #56C8FF;
+ }
+ a:target {
+ background-color: #222;
+ }
+ .desc {
+ color: #AAA;
+ }
+}
diff --git a/git/files/theme.css b/git/files/theme.css
@@ -1,825 +0,0 @@
-body {
- font-family: 'Droid Sans',sans-serif;
-}
-
-div#cgit {
- padding: 0em;
- margin: 0em;
- font-family: 'Droid Sans',sans-serif;
- font-size: 14pt;
- color: #333;
- padding: 4px;
-}
-
-div#cgit a {
- color: #3232ff;
- text-decoration: none;
-}
-
-div#cgit a:hover {
- text-decoration: underline;
-}
-
-div#cgit table {
- border-collapse: collapse;
-}
-
-div#cgit table#header {
- width: 100%;
- margin-bottom: 1em;
-}
-
-div#cgit table#header td.logo {
- width: 50px;
- vertical-align: top;
-}
-
-div#cgit table#header td.main {
- font-size: 250%;
- padding-left: 10px;
- white-space: nowrap;
-}
-
-div#cgit table#header td.main a {
- color: #000;
-}
-
-div#cgit table#header td.form {
- text-align: right;
- vertical-align: bottom;
- padding-right: 1em;
- padding-bottom: 2px;
- white-space: nowrap;
-}
-
-div#cgit table#header td.form form,
-div#cgit table#header td.form input,
-div#cgit table#header td.form select {
- font-size: 90%;
-}
-
-div#cgit table#header td.sub {
- color: #777;
- border-top: solid 1px #e0e0e0;
- border-radius: 2px;
- padding-left: 10px;
-}
-
-div#cgit table.tabs {
- border-bottom: solid 3px #e0e0e0;
- border-collapse: collapse;
- border-radius: 2px;
- margin-top: 2em;
- margin-bottom: 0px;
- width: 100%;
-}
-
-div#cgit table.tabs td {
- padding: 0px 1em;
- vertical-align: bottom;
-}
-
-div#cgit table.tabs td a {
- padding: 2px 0.75em;
- color: #777;
- font-size: 110%;
-}
-
-div#cgit table.tabs td a.active {
- color: #000;
- background-color: #e0e0e0;
-}
-
-div#cgit table.tabs td.form {
- text-align: right;
-}
-
-div#cgit table.tabs td.form form {
- padding-bottom: 2px;
- font-size: 90%;
- white-space: nowrap;
-}
-
-div#cgit table.tabs td.form input,
-div#cgit table.tabs td.form select {
- font-size: 90%;
-}
-
-div#cgit div.path {
- margin: 0px;
- padding: 5px 2em 2px 2em;
- color: #000;
- background-color: #eee;
-}
-
-div#cgit div.content {
- margin: 0px;
- padding: 2em;
- border-bottom: solid 3px #e0e0e0;
-}
-
-
-div#cgit table.list {
- width: 100%;
- border: none;
- background: #D6D4CC;
- border-collapse: collapse;
-}
-
-div#cgit table.list tr {
- background-image: url('body.jpg');
-}
-
-div#cgit table.list tr.logheader {
- background: #eee;
-}
-
-div#cgit table.list tr:hover {
- background: #e0e0e0;
-}
-
-div#cgit table.list tr.nohover:hover {
- background-image: url('body.jpg');
-}
-
-div#cgit table.list th {
- font-family: 'Droid Sans';
- font-weight: bold;
- padding: 0.1em 0.5em 0.05em 0.5em;
- vertical-align: baseline;
-}
-
-div#cgit table.list td {
- border: none;
- padding: 0.1em 0.5em 0.1em 0.5em;
-}
-
-div#cgit table.list td.commitgraph {
- font-family: 'Droid Sans Mono',monospace;
- white-space: pre;
-}
-
-div#cgit table.list td.commitgraph .column1 {
- color: #a00;
-}
-
-div#cgit table.list td.commitgraph .column2 {
- color: #0a0;
-}
-
-div#cgit table.list td.commitgraph .column3 {
- color: #aa0;
-}
-
-div#cgit table.list td.commitgraph .column4 {
- color: #00a;
-}
-
-div#cgit table.list td.commitgraph .column5 {
- color: #a0a;
-}
-
-div#cgit table.list td.commitgraph .column6 {
- color: #0aa;
-}
-
-div#cgit table.list td.logsubject {
- font-family: 'Droid Sans Mono', monospace;
- font-weight: bold;
-}
-
-div#cgit table.list td.logmsg {
- font-family: 'Droid Sans Mono', monospace;
- white-space: pre;
- padding: 0 0.5em;
-}
-
-div#cgit table.list td a {
- color: black;
-}
-
-div#cgit table.list td a.ls-dir {
- font-weight: bold;
- color: #00f;
-}
-
-div#cgit table.list td a:hover {
- color: #00f;
-}
-
-div#cgit img {
- width: 60px;
- border: none;
-}
-
-div#cgit input#switch-btn {
- margin: 2px 0px 0px 0px;
-}
-
-div#cgit td#sidebar input.txt {
- width: 100%;
- margin: 2px 0px 0px 0px;
-}
-
-div#cgit table#grid {
- margin: 0px;
-}
-
-div#cgit td#content {
- vertical-align: top;
- padding: 1em 2em 1em 1em;
- border: none;
-}
-
-div#cgit div#summary {
- vertical-align: top;
- margin-bottom: 1em;
-}
-
-div#cgit table#downloads {
- float: right;
- border-collapse: collapse;
- border: solid 1px #777;
- border-radius: 2px;
- margin-left: 0.5em;
- margin-bottom: 0.5em;
-}
-
-div#cgit table#downloads th {
- background-color: #e0e0e0;
-}
-
-div#cgit div#blob {
- border: solid 1px black;
- border-radius: 2px;
-}
-
-div#cgit div.error {
- color: red;
- font-weight: bold;
- margin: 1em 2em;
-}
-
-div#cgit a.ls-blob, div#cgit a.ls-dir, div#cgit a.ls-mod {
- font-family: 'Droid Sans Mono',monospace;
-}
-
-div#cgit td.ls-size {
- text-align: right;
- font-family: 'Droid Sans Mono',monospace;
- width: 10em;
-}
-
-div#cgit td.ls-mode {
- font-family: 'Droid Sans Mono', monospace;
- width: 10em;
-}
-
-div#cgit table.blob {
- margin-top: 0.5em;
- border-top: solid 1px black;
-}
-
-div#cgit table.blob td.lines {
- margin: 0; padding: 0 0 0 0.5em;
- vertical-align: top;
- color: black;
-}
-
-div#cgit table.blob td.linenumbers {
- margin: 0; padding: 0 0.5em 0 0.5em;
- vertical-align: top;
- text-align: right;
- border-right: 1px solid gray;
-}
-
-div#cgit table.blob pre {
- padding: 0; margin: 0;
-}
-
-div#cgit table.blob td.linenumbers a,
-div#cgit table.ssdiff td.lineno a {
- color: gray;
- text-align: right;
- text-decoration: none;
-}
-
-div#cgit table.blob td.linenumbers a:hover,
-div#cgit table.ssdiff td.lineno a:hover {
- color: black;
-}
-
-div#cgit table.bin-blob {
- margin-top: 0.5em;
- border: solid 1px black;
- border-radius: 2px;
-}
-
-div#cgit table.bin-blob th {
- font-family: 'Droid Sans Mono', monospace;
- white-space: pre;
- border: solid 1px #777;
- border-radius: 2px;
- padding: 0.5em 1em;
-}
-
-div#cgit table.bin-blob td {
- font-family: 'Droid Sans Mono', monospace;
- white-space: pre;
- border-left: solid 1px #777;
- padding: 0em 1em;
-}
-
-div#cgit table.nowrap td {
- white-space: nowrap;
-}
-
-div#cgit table.commit-info {
- border-collapse: collapse;
- margin-top: 1.5em;
-}
-
-div#cgit div.cgit-panel {
- float: right;
- margin-top: 1.5em;
-}
-
-div#cgit div.cgit-panel table {
- border-collapse: collapse;
- border: solid 1px #aaa;
- background-color: #eee;
-}
-
-div#cgit div.cgit-panel th {
- text-align: center;
-}
-
-div#cgit div.cgit-panel td {
- padding: 0.25em 0.5em;
-}
-
-div#cgit div.cgit-panel td.label {
- padding-right: 0.5em;
-}
-
-div#cgit div.cgit-panel td.ctrl {
- padding-left: 0.5em;
-}
-
-div#cgit table.commit-info th {
- text-align: left;
- font-weight: normal;
- padding: 0.1em 1em 0.1em 0.1em;
- vertical-align: top;
-}
-
-div#cgit table.commit-info td {
- font-weight: normal;
- padding: 0.1em 1em 0.1em 0.1em;
-}
-
-div#cgit div.commit-subject {
- font-weight: bold;
- font-size: 125%;
- margin: 1.5em 0em 0.5em 0em;
- padding: 0em;
-}
-
-div#cgit div.commit-msg {
- white-space: pre;
- font-family: 'Droid Sans Mono', monospace;
-}
-
-div#cgit div.notes-header {
- font-weight: bold;
- padding-top: 1.5em;
-}
-
-div#cgit div.notes {
- white-space: pre;
- font-family: 'Droid Sans Mono', monospace;
- border: solid 1px #ee9;
- background-color: #ffd;
- padding: 0.3em 2em 0.3em 1em;
- float: left;
-}
-
-div#cgit div.notes-footer {
- clear: left;
-}
-
-div#cgit div.diffstat-header {
- font-weight: bold;
- padding-top: 1.5em;
-}
-
-div#cgit table.diffstat {
- border-collapse: collapse;
- border: solid 1px #aaa;
- background-color: #eee;
-}
-
-div#cgit table.diffstat th {
- font-weight: normal;
- text-align: left;
- text-decoration: underline;
- padding: 0.1em 1em 0.1em 0.1em;
- font-size: 100%;
-}
-
-div#cgit table.diffstat td {
- padding: 0.2em 0.2em 0.1em 0.1em;
- font-size: 100%;
- border: none;
-}
-
-div#cgit table.diffstat td.mode {
- white-space: nowrap;
-}
-
-div#cgit table.diffstat td span.modechange {
- padding-left: 1em;
- color: red;
-}
-
-div#cgit table.diffstat td.add a {
- color: #3232ff;
-}
-
-div#cgit table.diffstat td.del a {
- color: #3232ff;
-}
-
-div#cgit table.diffstat td.upd a {
- color: #3232ff;
-}
-
-div#cgit table.diffstat td.graph {
- width: 500px;
- vertical-align: middle;
-}
-
-div#cgit table.diffstat td.graph table {
- border: none;
-}
-
-div#cgit table.diffstat td.graph td {
- padding: 0px;
- border: 0px;
- height: 7pt;
-}
-
-div#cgit table.diffstat td.graph td.add {
- background-color: #99cc99;
-}
-
-div#cgit table.diffstat td.graph td.rem {
- background-color: #ff7f7f;
-}
-
-div#cgit div.diffstat-summary {
- color: #888;
- padding-top: 0.5em;
-}
-
-div#cgit table.diff {
- width: 100%;
-}
-
-div#cgit table.diff td {
- font-family: 'Droid Sans Mono', monospace;
- white-space: pre;
-}
-
-div#cgit table.diff td div.head {
- font-weight: bold;
- margin-top: 1em;
- color: black;
-}
-
-div#cgit table.diff td div.hunk {
- color: #3232ff;
-}
-
-div#cgit table.diff td div.add {
- background: #d9ffd9;
- color: black;
-}
-
-div#cgit table.diff td div.del {
- background: #ffcccc;
- color: black;
-}
-
-div#cgit .sha1 {
- font-family: 'Droid Sans Mono', monospace;
- font-size: 90%;
-}
-
-div#cgit .left {
- text-align: left;
-}
-
-div#cgit .right {
- text-align: right;
-}
-
-div#cgit table.list td.reposection {
- font-style: italic;
- color: #888;
-}
-
-div#cgit a.button {
- font-size: 80%;
- padding: 0em 0.5em;
-}
-
-div#cgit a.primary {
- font-size: 100%;
-}
-
-div#cgit a.secondary {
- font-size: 90%;
-}
-
-div#cgit td.toplevel-repo {
-
-}
-
-div#cgit table.list td.sublevel-repo {
- padding-left: 1.5em;
-}
-
-div#cgit ul.pager {
- list-style-type: none;
- text-align: center;
- margin: 1em 0em 0em 0em;
- padding: 0;
-}
-
-div#cgit ul.pager li {
- display: inline-block;
- margin: 0.25em 0.5em;
-}
-
-div#cgit ul.pager a {
- color: #777;
-}
-
-div#cgit ul.pager .current {
- font-weight: bold;
-}
-
-div#cgit span.age-mins {
- font-weight: bold;
- color: #080;
-}
-
-div#cgit span.age-hours {
- color: #080;
-}
-
-div#cgit span.age-days {
- color: #040;
-}
-
-div#cgit span.age-weeks {
- color: #444;
-}
-
-div#cgit span.age-months {
- color: #888;
-}
-
-div#cgit span.age-years {
- color: #bbb;
-}
-div#cgit div.footer {
- margin-top: 0.5em;
- text-align: center;
- font-size: 80%;
- color: #e0e0e0;
-}
-div#cgit a.branch-deco {
- color: #000;
- margin: 0px 0.5em;
- padding: 0px 0.25em;
- background-color: #a2ffa2;
- border: solid 1px #71b271;
- border-radius: 4px;
-}
-div#cgit a.tag-deco {
- color: #000;
- margin: 0px 0.5em;
- padding: 0px 0.25em;
- background-color: #ffff88;
- border: solid 1px #777700;
- border-radius: 4px;
-}
-div#cgit a.remote-deco {
- color: #000;
- margin: 0px 0.5em;
- padding: 0px 0.25em;
- background-color: #ccccff;
- border: solid 1px #000077;
- border-radius: 4px;
-}
-div#cgit a.deco {
- color: #000;
- margin: 0px 0.5em;
- padding: 0px 0.25em;
- background-color: #ff9393;
- border: solid 1px #b25f5f;
- border-radius: 4px;
-}
-
-div#cgit div.commit-subject a.branch-deco,
-div#cgit div.commit-subject a.tag-deco,
-div#cgit div.commit-subject a.remote-deco,
-div#cgit div.commit-subject a.deco {
- margin-left: 1em;
- font-size: 75%;
-}
-
-div#cgit table.stats {
- border: solid 1px black;
- border-radius: 2px;
- border-collapse: collapse;
-}
-
-div#cgit table.stats th {
- text-align: left;
- padding: 1px 0.5em;
- background-color: #eee;
- border: solid 1px black;
-}
-
-div#cgit table.stats td {
- text-align: right;
- padding: 1px 0.5em;
- border: solid 1px black;
- border-radius: 2px;
-}
-
-div#cgit table.stats td.total {
- font-weight: bold;
- text-align: left;
-}
-
-div#cgit table.stats td.sum {
- color: #c00;
- font-weight: bold;
-/* background-color: #eee; */
-}
-
-div#cgit table.stats td.left {
- text-align: left;
-}
-
-div#cgit table.vgraph {
- border-collapse: separate;
- border: solid 1px black;
- height: 200px;
-}
-
-div#cgit table.vgraph th {
- background-color: #eee;
- font-weight: bold;
- border: solid 1px white;
- padding: 1px 0.5em;
-}
-
-div#cgit table.vgraph td {
- vertical-align: bottom;
- padding: 0px 10px;
-}
-
-div#cgit table.vgraph div.bar {
- background-color: #eee;
-}
-
-div#cgit table.hgraph {
- border: solid 1px black;
- width: 800px;
-}
-
-div#cgit table.hgraph th {
- background-color: #eee;
- font-weight: bold;
- border: solid 1px black;
- padding: 1px 0.5em;
-}
-
-div#cgit table.hgraph td {
- vertical-align: middle;
- padding: 2px 2px;
-}
-
-div#cgit table.hgraph div.bar {
- background-color: #eee;
- height: 1em;
-}
-
-div#cgit table.ssdiff {
- width: 100%;
-}
-
-div#cgit table.ssdiff td {
- font-size: 75%;
- font-family: 'Droid Sans Mono', monospace;
- white-space: pre;
- padding: 1px 4px 1px 4px;
- border-left: solid 1px #aaa;
- border-right: solid 1px #aaa;
- border-radius: 2px;
-}
-
-div#cgit table.ssdiff td.add {
- color: black;
- background: #cfc;
- min-width: 50%;
-}
-
-div#cgit table.ssdiff td.add_dark {
- color: black;
- background: #aca;
- min-width: 50%;
-}
-
-div#cgit table.ssdiff span.add {
- background: #cfc;
- font-weight: bold;
-}
-
-div#cgit table.ssdiff td.del {
- color: black;
- background: #ff6666;
- min-width: 50%;
-}
-
-div#cgit table.ssdiff td.del_dark {
- color: black;
- background: #caa;
- min-width: 50%;
-}
-
-div#cgit table.ssdiff span.del {
- background: #ff6666;
- font-weight: bold;
-}
-
-div#cgit table.ssdiff td.changed {
- color: black;
- background: #ffc;
- min-width: 50%;
-}
-
-div#cgit table.ssdiff td.changed_dark {
- color: black;
- background: #cca;
- min-width: 50%;
-}
-
-div#cgit table.ssdiff td.lineno {
- color: black;
- background: #eee;
- text-align: right;
- width: 3em;
- min-width: 3em;
-}
-
-div#cgit table.ssdiff td.hunk {
- color: black;
- background: #ccf;
- border-top: solid 1px #aaa;
- border-bottom: solid 1px #aaa;
- border-radius: 2px;
-}
-
-div#cgit table.ssdiff td.head {
- border-top: solid 1px #aaa;
- border-bottom: solid 1px #aaa;
- border-radius: 2px;
-}
-
-div#cgit table.ssdiff td.head div.head {
- font-weight: bold;
- color: black;
-}
-
-div#cgit table.ssdiff td.foot {
- border-top: solid 1px #aaa;
- border-left: none;
- border-right: none;
- border-bottom: none;
- border-radius: 2px;
-}
-
-div#cgit table.ssdiff td.space {
- border: none;
-}
-
-div#cgit table.ssdiff td.space div {
- min-height: 3em;
-}
-
diff --git a/git/git.yaml b/git/git.yaml
@@ -36,5 +36,5 @@ config:
- echo "git:*" | chpasswd -e
packages:
- git
- - cgit
+ - stagit
- lighttpd
diff --git a/git/init.sh b/git/init.sh
@@ -7,14 +7,15 @@ incus delete $HOST
incus launch images:alpine/3.20/cloud $HOST < $HOST.yaml
incus file push ./files/lighttpd.conf $HOST/etc/lighttpd/ -pv --mode 644
-incus file push ./files/cgitrc $HOST/etc/cgitrc -pv --mode 644
+incus file push ./files/stagit.sh $HOST/etc/periodic/hourly/ -pv --mode 755
incus exec $HOST -- cloud-init status --wait
incus exec $HOST -- rc-service lighttpd start
incus exec $HOST -- rc-update add sshd
-incus file push ./files/logo.png $HOST/usr/share/webapps/cgit/ -pv --mode 644
-incus file push ./files/theme.css $HOST/usr/share/webapps/cgit/ -pv --mode 644
-incus file push ./files/favicon.png $HOST/usr/share/webapps/cgit/ -pv --mode 6…
-
+incus exec $HOST -- mkdir -p /srv/www
+incus file push ./files/logo.png $HOST/srv/www/ -pv --mode 644
+incus file push ./files/style.css $HOST/srv/www/ -pv --mode 644
+incus file push ./files/favicon.png $HOST/srv/www/ -pv --mode 644
+incus exec $HOST -- run-parts /etc/periodic/hourly
You are viewing proxied material from jay.scot. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.