summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorJack Allnutt2015-07-04 16:30:40 +0100
committerJack Allnutt2015-07-04 16:30:40 +0100
commit984137f79b25886957bbe837cfce20d8cd28850c (patch)
treeae906a952f21eb8b3dca3194fdf82674d98cc0e0
downloadaur-984137f79b25886957bbe837cfce20d8cd28850c.tar.gz
Import into AUR4 repository
-rw-r--r--.SRCINFO27
-rw-r--r--PKGBUILD56
-rw-r--r--kiwi.patch194
-rw-r--r--kiwiirc.conf.sysusers1
-rw-r--r--kiwiirc.conf.tmpfiles2
-rw-r--r--kiwiirc.install26
-rw-r--r--kiwiirc.service19
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