Ralf S. Engelschall 8 роки тому
батько
коміт
7b311d3a64
3 змінених файлів з 211 додано та 0 видалено
  1. 28 0
      nats-board/nats-board.patch
  2. 122 0
      nats-board/nats-board.spec
  3. 61 0
      nats-board/rc.nats-board

+ 28 - 0
nats-board/nats-board.patch

@@ -0,0 +1,28 @@
+Index: lib/server.js
+--- lib/server.js.orig	2017-10-14 13:30:31.000000000 +0200
++++ lib/server.js	2017-10-14 13:52:32.850667000 +0200
+@@ -16,6 +16,7 @@
+ // Init the vars
+ var ARGS         = utilex.args();
+ var APP_PATH     = path.resolve(path.join(__dirname, '..'));
++var NODE_ADDR    = process.env.NODE_ADDR    || ARGS['addr']         || '127.0.0.1';
+ var NODE_PORT    = process.env.NODE_PORT    || ARGS['port']         || '3000';
+ var NATS_MON_URL = process.env.NATS_MON_URL || ARGS['nats-mon-url'] || 'http://localhost:8222';
+ 
+@@ -29,6 +30,7 @@
+ var server = http.createServer(app);
+ var ws     = new WebSocket.Server({server});
+ 
++app.set('NODE_ADDR',    NODE_ADDR);    // server address
+ app.set('NODE_PORT',    NODE_PORT);    // server port
+ app.set('NATS_MON_URL', NATS_MON_URL); // nats monitoring url
+ app.set('WS',           ws);           // websocket server
+@@ -38,6 +40,6 @@
+ app.use(express.static(path.join(APP_PATH, 'public'))); // static file serving
+ 
+ // Start the server
+-server.listen(NODE_PORT, function() {
+-  console.log('Listening on %d', server.address().port);
++server.listen(NODE_PORT, NODE_ADDR, function() {
++  console.log('Listening on %s:%d', server.address().address, server.address().port);
+ });

+ 122 - 0
nats-board/nats-board.spec

@@ -0,0 +1,122 @@
+##
+##  nats-board.spec -- OpenPKG RPM Package Specification
+##  Copyright (c) 2000-2017 OpenPKG Foundation e.V. <http://openpkg.net/>
+##
+##  Permission to use, copy, modify, and distribute this software for
+##  any purpose with or without fee is hereby granted, provided that
+##  the above copyright notice and this permission notice appear in all
+##  copies.
+##
+##  THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+##  WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+##  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+##  IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR
+##  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+##  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+##  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+##  USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+##  ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+##  OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+##  OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+##  SUCH DAMAGE.
+##
+
+#   package information
+%define       V_nats_board_base  5.0.0
+%define       V_nats_board_snap  20171014
+
+#   package information
+Name:         nats-board
+Summary:      NATS Process Monitoring Web Dashboard
+URL:          https://github.com/devfacet/natsboard
+Vendor:       Fatih Cetinkaya
+Packager:     OpenPKG Foundation e.V.
+Distribution: OpenPKG Community
+Class:        EVAL
+Group:        Terminal
+License:      MIT
+Version:      %{V_nats_board_base}.%{V_nats_board_snap}
+Release:      20171014
+
+#   list of sources
+Source0:      http://download.openpkg.org/components/versioned/nats/nats-board-%{V_nats_board_snap}.tar.xz
+Source1:      rc.nats-board
+Patch0:       nats-board.patch
+
+#   build information
+BuildPreReq:  OpenPKG, openpkg >= 20160101
+PreReq:       OpenPKG, openpkg >= 20160101, node
+
+%description
+    NATSboard is a Web-based UI for monitoring the NATS message queuing
+    system. It connects with WebSockets to a backend which regularily
+    polls the NATS monitoring port.
+
+%track
+    prog nats-board:release = {
+        version   = %{V_nats_board_base}
+        url       = https://github.com/devfacet/natsboard/releases
+        regex     = v(__VER__)\.tar\.gz
+    }
+    prog nats-board:snapshot = {
+        version   = %{V_nats_board_snap}
+        url       = http://download.openpkg.org/components/versioned/nats/
+        regex     = nats-board-(__VER__)\.tar\.xz
+    }
+
+%prep
+    %setup -q -n nats-board
+    %patch -p0
+
+%build
+    #   reduce distribution
+    rm -f CHANGELOG.md Dockerfile LICENSE.txt README.md docker-compose.yml package-lock.json
+    rm -rf bin test
+    for name in \
+        .editconfig .gitattributes .istanbul.yml .npmignore .travis.yml \
+        LICENSE README.md README.markdown CHANGES.md CONTRIBUTING.md HISTORY.md; do
+        find . -name $name -type f -print | xargs rm -f
+    done
+
+%install
+    #   create directory hierarchy
+    %{l_shtool} mkdir -f -p -m 755 \
+        $RPM_BUILD_ROOT%{l_prefix}/etc/rc.d \
+        $RPM_BUILD_ROOT%{l_prefix}/lib/nats-board \
+        $RPM_BUILD_ROOT%{l_prefix}/var/nats-board/run \
+        $RPM_BUILD_ROOT%{l_prefix}/var/nats-board/log
+
+    #   install programs
+    cp -rp * \
+        $RPM_BUILD_ROOT%{l_prefix}/lib/nats-board/
+
+    #   install run-command script
+    %{l_shtool} install -c -m 755 %{l_value -s -a} \
+        %{SOURCE rc.nats-board} $RPM_BUILD_ROOT%{l_prefix}/etc/rc.d/
+
+    #   determine installation files
+    %{l_rpmtool} files -v -ofiles -r$RPM_BUILD_ROOT \
+        %{l_files_std} \
+        '%attr(-,%{l_rusr},%{l_rgrp}) %{l_prefix}/var/nats-board/*'
+
+%files -f files
+
+%clean
+
+%post
+    if [ $1 -eq 2 ]; then
+        #   after upgrade, restart service
+        eval `%{l_rc} nats-board status 2>/dev/null`
+        [ ".$nats_board_active" = .yes ] && %{l_rc} nats-board restart
+    fi
+    exit 0
+
+%preun
+    #   before erase, stop service and remove log files
+    if [ $1 -eq 0 ]; then
+        %{l_rc} nats-board stop 2>/dev/null
+        rm -f  $RPM_INSTALL_PREFIX/var/nats-board/log/* >/dev/null 2>&1 || true
+        rm -f  $RPM_INSTALL_PREFIX/var/nats-board/run/* >/dev/null 2>&1 || true
+    fi
+    exit 0
+

+ 61 - 0
nats-board/rc.nats-board

@@ -0,0 +1,61 @@
+#!@l_prefix@/bin/openpkg rc
+##
+##  rc.nats-board -- Run-Commands
+##
+
+%config
+    nats_board_enable="$openpkg_rc_def"
+    nats_board_flags="--addr 127.0.0.1 --port 3000 --nats-mon-url http://127.0.0.1:8222"
+    nats_board_log_prolog="true"
+    nats_board_log_epilog="true"
+    nats_board_log_numfiles="10"
+    nats_board_log_minsize="1M"
+    nats_board_log_complevel="9"
+
+%common
+    nats_board_pidfile="@l_prefix@/var/nats-board/run/nats-board.pid"
+    nats_board_logfile="@l_prefix@/var/nats-board/log/nats-board.log"
+    nats_board_signal () {
+        [ -f $nats_board_pidfile ] && kill -$1 `cat $nats_board_pidfile`
+    }
+
+%status -u @l_rusr@ -o
+    nats_board_usable="unknown"
+    nats_board_active="no"
+    rcService nats-board enable yes && \
+        nats_board_signal 0 && nats_board_active="yes"
+    echo "nats_board_enable=\"$nats_board_enable\""
+    echo "nats_board_usable=\"$nats_board_usable\""
+    echo "nats_board_active=\"$nats_board_active\""
+
+%start -u @l_rusr@
+    rcService nats-board enable yes || exit 0
+    rcService nats-board active yes && exit 0
+    (   nohup @l_prefix@/bin/node \
+           @l_prefix@/lib/nats-board/index.js \
+           $nats_board_flags \
+        </dev/null >>$nats_board_logfile 2>&1 &
+        echo $! >$nats_board_pidfile
+    ) >/dev/null 2>&1
+
+%stop -u @l_rusr@
+    rcService nats-board enable yes || exit 0
+    rcService nats-board active no  && exit 0
+    nats_board_signal TERM
+    sleep 2
+    rm -f $nats_board_pidfile >/dev/null 2>&1 || true
+
+%restart -u @l_rusr@
+    rcService nats-board enable yes || exit 0
+    rcService nats-board active no  && exit 0
+    rc nats-board stop start
+
+%daily -u @l_rusr@
+    rcService nats-board enable yes || exit 0
+    shtool rotate -f \
+        -n ${nats_board_log_numfiles} -s ${nats_board_log_minsize} -d \
+        -z ${nats_board_log_complevel} -m 664 -o @l_rusr@ -g @l_rgrp@ \
+        -P "${nats_board_log_prolog}" \
+        -E "${nats_board_log_epilog}; rc nats-board restart" \
+        $nats_board_logfile
+