diff options
author | Jack Allnutt | 2015-07-04 16:30:40 +0100 |
---|---|---|
committer | Jack Allnutt | 2015-07-04 16:30:40 +0100 |
commit | 984137f79b25886957bbe837cfce20d8cd28850c (patch) | |
tree | ae906a952f21eb8b3dca3194fdf82674d98cc0e0 | |
download | aur-984137f79b25886957bbe837cfce20d8cd28850c.tar.gz |
Import into AUR4 repository
-rw-r--r-- | .SRCINFO | 27 | ||||
-rw-r--r-- | PKGBUILD | 56 | ||||
-rw-r--r-- | kiwi.patch | 194 | ||||
-rw-r--r-- | kiwiirc.conf.sysusers | 1 | ||||
-rw-r--r-- | kiwiirc.conf.tmpfiles | 2 | ||||
-rw-r--r-- | kiwiirc.install | 26 | ||||
-rw-r--r-- | kiwiirc.service | 19 |
7 files changed, 325 insertions, 0 deletions
diff --git a/.SRCINFO b/.SRCINFO new file mode 100644 index 000000000000..038cc3aa2f38 --- /dev/null +++ b/.SRCINFO @@ -0,0 +1,27 @@ +pkgbase = kiwiirc + pkgdesc = A hand-crafted web-based IRC client that you can enjoy + pkgver = 0.9.1 + pkgrel = 2 + url = https://kiwiirc.com/ + install = kiwiirc.install + arch = any + license = AGPL3 + makedepends = git + depends = nodejs>=0.10.0, + depends = npm + options = emptydirs + options = !strip + backup = etc/kiwiirc/config.js + source = https://github.com/prawnsalad/KiwiIRC/archive/v0.9.1.tar.gz + source = kiwi.patch + source = kiwiirc.service + source = kiwiirc.conf.sysusers + source = kiwiirc.conf.tmpfiles + md5sums = 06c18949f5254262379bc2ba5b29b10a + md5sums = 3c417d55e5cdbc27fadf8d8b9af1ed76 + md5sums = bcb28ddb7f0bcc3be830b8045969eb2c + md5sums = 593da856bcf9036bc51380b74d9df394 + md5sums = 803080337de27be8921edd76f15c763c + +pkgname = kiwiirc + diff --git a/PKGBUILD b/PKGBUILD new file mode 100644 index 000000000000..49f8aec61d12 --- /dev/null +++ b/PKGBUILD @@ -0,0 +1,56 @@ +# Maintainer: Jack Allnutt <jack@allnutt.eu> +pkgname=kiwiirc +pkgver=0.9.1 +pkgrel=2 +pkgdesc="A hand-crafted web-based IRC client that you can enjoy" +arch=('any') +url="https://kiwiirc.com/" +license=('AGPL3') +depends=('nodejs>=0.10.0', 'npm') +makedepends=('git') +options=('emptydirs' '!strip') +install=('kiwiirc.install') +backup=('etc/kiwiirc/config.js') +source=(https://github.com/prawnsalad/KiwiIRC/archive/v$pkgver.tar.gz + 'kiwi.patch' + 'kiwiirc.service' + 'kiwiirc.conf.sysusers' + 'kiwiirc.conf.tmpfiles') +md5sums=('06c18949f5254262379bc2ba5b29b10a' + '3c417d55e5cdbc27fadf8d8b9af1ed76' + 'bcb28ddb7f0bcc3be830b8045969eb2c' + '593da856bcf9036bc51380b74d9df394' + '803080337de27be8921edd76f15c763c') + +build() { + cp kiwiirc.service "$srcdir/KiwiIRC-$pkgver/" + cp kiwiirc.conf.sysusers "$srcdir/KiwiIRC-$pkgver/" + cp kiwiirc.conf.tmpfiles "$srcdir/KiwiIRC-$pkgver/" + cd "$srcdir/KiwiIRC-$pkgver" + git apply --whitespace=fix ../kiwi.patch + npm -q install + npm -q dedupe +} + +package() { + cd "$srcdir" + install -D -m644 KiwiIRC-$pkgver/config.example.js $pkgdir/etc/kiwiirc/config.js + install -D -m755 KiwiIRC-$pkgver/kiwi $pkgdir/usr/bin/kiwi + install -D -m644 KiwiIRC-$pkgver/kiwiirc.service $pkgdir/usr/lib/systemd/system/kiwiirc.service + install -D -m644 KiwiIRC-$pkgver/man/kiwiirc.1 $pkgdir/usr/share/man/man1/kiwi.1 + install -D -m644 KiwiIRC-$pkgver/package.json $pkgdir/usr/share/kiwiirc/package.json + install -D -m644 KiwiIRC-$pkgver/README.md $pkgdir/usr/share/kiwiirc/README.md + install -D -m644 KiwiIRC-$pkgver/kiwiirc.conf.sysusers $pkgdir/usr/lib/sysusers.d/kiwiirc.conf + install -D -m644 KiwiIRC-$pkgver/kiwiirc.conf.tmpfiles $pkgdir/usr/lib/tmpfiles.d/kiwiirc.conf + + install -d -m755 $pkgdir/usr/lib/kiwiirc/server_modules + install -d -m755 $pkgdir/var/lib/kiwiirc + install -d -m644 $pkgdir/var/log/kiwiirc + install -d -m755 $pkgdir/usr/share/kiwiirc/server + install -d -m755 $pkgdir/usr/share/kiwiirc/node_modules + + cp -dr --preserve=mode KiwiIRC-$pkgver/client/* $pkgdir/var/lib/kiwiirc + cp -dr --preserve=mode KiwiIRC-$pkgver/node_modules $pkgdir/usr/share/kiwiirc/ + cp -dr --preserve=mode KiwiIRC-$pkgver/server $pkgdir/usr/share/kiwiirc + cp -dr --preserve=mode KiwiIRC-$pkgver/server_modules $pkgdir/usr/lib/kiwiirc +} diff --git a/kiwi.patch b/kiwi.patch new file mode 100644 index 000000000000..2c90cd1e4ec7 --- /dev/null +++ b/kiwi.patch @@ -0,0 +1,194 @@ +diff --git a/config.example.js b/config.example.js +index d1f21e7..ad64d34 100644 +--- a/config.example.js ++++ b/config.example.js +@@ -6,7 +6,7 @@ conf.group = ""; + + + // Log file location +-conf.log = "kiwi.log"; ++conf.log = "/var/log/kiwi/kiwiirc.log"; + + + +@@ -53,7 +53,7 @@ conf.identd = { + + + // Where the client files are +-conf.public_http = "client/"; ++conf.public_http = "/var/lib/kiwiirc/"; + + // Transports available to the client. + // Behind an Apache reverse proxy? Uncomment the below - Apache does not support websockets! +@@ -105,7 +105,7 @@ conf.client_plugins = [ + + + // Directory to find the server modules +-conf.module_dir = "../server_modules/"; ++conf.module_dir = "/usr/lib/kiwiirc/server_modules/"; + + // Which modules to load + conf.modules = []; +diff --git a/kiwi b/kiwi +index 3ac269e..dca2dcc 100755 +--- a/kiwi ++++ b/kiwi +@@ -1,11 +1,6 @@ + #!/bin/sh +-basedir=`dirname "$0"` + +-case `uname` in +- *CYGWIN*) basedir=`cygpath -w "$basedir"`;; +-esac +- +-node $basedir/server/helpers/launcher.js "$@" ++node /usr/share/kiwiirc/server/helpers/launcher.js "$@" + ret=$? + + exit $ret +diff --git a/server/helpers/launcher.js b/server/helpers/launcher.js +index b4d8ec3..18e74f2 100644 +--- a/server/helpers/launcher.js ++++ b/server/helpers/launcher.js +@@ -1,5 +1,5 @@ + var kiwi_app = '../kiwi.js';
+-var pidfile = '../../kiwiirc.pid';
++var pidfile = '/run/kiwiirc/kiwiirc.pid';
+ var pidfile_arg;
+
+ // Check if a pidfile has been set as an argument
+@@ -16,6 +16,13 @@ if (process.argv.indexOf('-p') > -1) { + }
+ }
+
++try {
++ process.setgid('kiwiirc');
++ process.setuid('kiwiirc');
++} catch (e) {
++ console.error('Cannot switch to user kiwiirc. Try running as root.')
++ process.exit();
++}
+
+ var daemon = require('daemonize2').setup({
+ main: kiwi_app,
+diff --git a/server/httphandler.js b/server/httphandler.js +index d89ecad..5c9b78c 100644 +--- a/server/httphandler.js ++++ b/server/httphandler.js +@@ -14,7 +14,7 @@ var cached_available_locales = null; + + + var HttpHandler = function (config) { +- var public_http = config.public_http || 'client/'; ++ var public_http = config.public_http || global.config.public_http || 'client/'; + this.file_server = new node_static.Server(public_http); + + if (!cached_available_locales) { +diff --git a/server/settingsgenerator.js b/server/settingsgenerator.js +index 6f70be1..f420819 100644 +--- a/server/settingsgenerator.js ++++ b/server/settingsgenerator.js +@@ -112,7 +112,7 @@ function addThemes() { + return (config.get().client_themes || ['relaxed']).reduce(function (prom, theme) { + return prom.then(function (themes) { + return new Promise(function readThemeInfo(resolve, reject) { +- fs.readFile(__dirname + '/../client/assets/themes/' + theme.toLowerCase() + '/theme.json', function (err, theme_json) { ++ fs.readFile(global.config.public_http + '/assets/themes/' + theme.toLowerCase() + '/theme.json', function (err, theme_json) { + var theme; + if (err) { + return reject(err); +@@ -134,7 +134,7 @@ function addThemes() { + + function addTranslations() { + return new Promise(function (resolve, reject) { +- fs.readFile(__dirname + '/../client/src/translations/translations.json', function readTranslations(err, translations) { ++ fs.readFile(global.config.public_http + '/src/translations/translations.json', function readTranslations(err, translations) { + if (err) { + return reject(err); + } +@@ -145,7 +145,7 @@ function addTranslations() { + return reject(e); + } + +- fs.readdir(__dirname + '/../client/src/translations/', function readTranslationFile(err, pofiles) { ++ fs.readdir(global.config.public_http + '/src/translations/', function readTranslationFile(err, pofiles) { + var trans = []; + + if (err) { +diff --git a/server_modules/control.js b/server_modules/control.js +index c1e5517..3fb3ef7 100644 +--- a/server_modules/control.js ++++ b/server_modules/control.js +@@ -5,8 +5,8 @@ + */
+
+ var net = require('net'),
+- kiwiModules = require('../server/modules'),
+- ControlInterface = require('../server/controlinterface.js'),
++ kiwiModules = require('/usr/share/kiwiirc/server/modules'), ++ ControlInterface = require('/usr/share/kiwiirc/server/controlinterface.js'), + _ = require('lodash'),
+ winston = require('winston');
+
+diff --git a/server_modules/dnsbl.js b/server_modules/dnsbl.js +index 1a2c718..54a4300 100644 +--- a/server_modules/dnsbl.js ++++ b/server_modules/dnsbl.js +@@ -5,7 +5,7 @@ + */ + + var dns = require('dns'), +- kiwiModules = require('../server/modules'); ++ kiwiModules = require('/usr/share/kiwiirc/server/modules'); + + + // The available DNS zones to check against +diff --git a/server_modules/example.js b/server_modules/example.js +index d880c19..575dc5f 100644 +--- a/server_modules/example.js ++++ b/server_modules/example.js +@@ -1,4 +1,4 @@ +-var kiwiModules = require('../server/modules'); ++var kiwiModules = require('/usr/share/kiwiirc/server/modules'); + + var module = new kiwiModules.Module('Example Module'); + +diff --git a/server_modules/proxychecker.js b/server_modules/proxychecker.js +index 660defc..7fb96e6 100644 +--- a/server_modules/proxychecker.js ++++ b/server_modules/proxychecker.js +@@ -5,7 +5,7 @@ + */ + + var util = require('util'), +- kiwiModules = require('../server/modules'); ++ kiwiModules = require('/usr/share/kiwiirc/server/modules'); + + + var module = new kiwiModules.Module('proxychecker'); +diff --git a/server_modules/stats.js b/server_modules/stats.js +index 736ba17..a9de440 100644 +--- a/server_modules/stats.js ++++ b/server_modules/stats.js +@@ -4,7 +4,7 @@ + * Retreive stats for internal kiwi events. Handy for graphing + */ + +-var kiwiModules = require('../server/modules'), ++var kiwiModules = require('/usr/share/kiwiirc/server/modules'), + fs = require('fs'); + + +diff --git a/server_modules/web_agent_debugger.js b/server_modules/web_agent_debugger.js +index 2358508..ef85e9f 100644 +--- a/server_modules/web_agent_debugger.js ++++ b/server_modules/web_agent_debugger.js +@@ -6,7 +6,7 @@ + */ + + +-var kiwiModules = require('../server/modules'), ++var kiwiModules = require('/usr/share/kiwiirc/server/modules'), + agent = require('webkit-devtools-agent'); + + diff --git a/kiwiirc.conf.sysusers b/kiwiirc.conf.sysusers new file mode 100644 index 000000000000..6de7a507745f --- /dev/null +++ b/kiwiirc.conf.sysusers @@ -0,0 +1 @@ +u kiwiirc - "Kiwi IRC User" diff --git a/kiwiirc.conf.tmpfiles b/kiwiirc.conf.tmpfiles new file mode 100644 index 000000000000..34dc03c924c7 --- /dev/null +++ b/kiwiirc.conf.tmpfiles @@ -0,0 +1,2 @@ +R /run/kiwiirc - kiwiirc kiwiirc - - +D /run/kiwiirc - kiwiirc kiwiirc - - diff --git a/kiwiirc.install b/kiwiirc.install new file mode 100644 index 000000000000..d929bbf8a425 --- /dev/null +++ b/kiwiirc.install @@ -0,0 +1,26 @@ +post_install() { + systemd-sysusers + systemd-tmpfiles --create /usr/lib/tmpfiles.d/kiwiirc.conf + + chown -R kiwiirc:kiwiirc /etc/kiwiirc + chown -R kiwiirc:kiwiirc /usr/lib/kiwiirc + chown -R kiwiirc:kiwiirc /usr/share/kiwiirc + chown -R kiwiirc:kiwiirc /var/lib/kiwiirc + + setcap CAP_NET_BIND_SERVICE=+pe /usr/bin/node + + sudo -u kiwiirc kiwi build +} + +post_upgrade() { + post_install +} + +pre_remove() { + systemctl disable kiwiirc.service + systemd-tmpfiles --remove /usr/lib/tmpfiles.d/kiwiirc.conf +} + +post_remove() { + rm -rf /var/lib/kiwiirc/ +} diff --git a/kiwiirc.service b/kiwiirc.service new file mode 100644 index 000000000000..4364d7b7cb37 --- /dev/null +++ b/kiwiirc.service @@ -0,0 +1,19 @@ +[Unit] +Description=Kiwi IRC web client +After=network.target + +[Service] +User=kiwiirc +Group=kiwiirc +Type=forking +ProtectSystem=full +ReadWriteDirectories=/var/lib/kiwiirc /var/log/kiwiirc /run/kiwiirc +ReadOnlyDirectories=/usr/share/kiwiirc +ExecStart=/usr/bin/kiwi start -p %t/kiwiirc/kiwiirc.pid +ExecStop=/usr/bin/kiwi stop -p %t/kiwiirc/kiwiirc.pid +ExecReload=/usr/bin/kiwi reconfig -p %t/kiwiirc/kiwiirc.pid +PIDFile=%t/kiwiirc/kiwiirc.pid +SuccessExitStatus=SIGTERM 0 143 + +[Install] +WantedBy=multi-user.target |