From d47bb161b4979dcbcdf1a97eea0d8cd928949a8f Mon Sep 17 00:00:00 2001 From: voipsense <35378628+voipsense@users.noreply.github.com> Date: Sun, 24 Jun 2018 11:51:37 +0100 Subject: [PATCH 1/3] Create menu.xml --- samples/issabel/menu.xml | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 samples/issabel/menu.xml diff --git a/samples/issabel/menu.xml b/samples/issabel/menu.xml new file mode 100644 index 0000000..f33eb94 --- /dev/null +++ b/samples/issabel/menu.xml @@ -0,0 +1,9 @@ + + + + + + + + + From 284a35c5cb4b284cd4b9936a6f11377aaa8143b3 Mon Sep 17 00:00:00 2001 From: voipsense <35378628+voipsense@users.noreply.github.com> Date: Mon, 25 Jun 2018 11:43:17 +0100 Subject: [PATCH 2/3] Add files via upload --- samples/issabel/issabel4-qpanel.spec | 127 +++++++++++++++++++++++++++ 1 file changed, 127 insertions(+) create mode 100644 samples/issabel/issabel4-qpanel.spec diff --git a/samples/issabel/issabel4-qpanel.spec b/samples/issabel/issabel4-qpanel.spec new file mode 100644 index 0000000..a1f59c1 --- /dev/null +++ b/samples/issabel/issabel4-qpanel.spec @@ -0,0 +1,127 @@ +%define modname qpanel +Name: issabel-%{modname} +Version: 0.14.1 +Release: 2%{?dist} +Summary: Qpanel is dashboard for Queues in Asterisk +Group: Applications/Communications +License: MIT +URL: https://github.com/roramirez/qpanel +Source0: %{modname}-%{version}.tar.gz +BuildRoot: %{_tmppath}/%{modname}-%{version}-root +Prereq: issabel-framework >= 4.0.0 + +# Git is used for py-asterisk lib from repository +Requires: httpd, python >= 2.7, python-pip, mod_wsgi, git +BuildArch: noarch + +%description +Qpanel is a dashboard for app_queue of Asterisk + + +%prep +%setup -n %{modname}-%{version} + + +%install +rm -rf $RPM_BUILD_ROOT +mkdir -p $RPM_BUILD_ROOT/opt/%{modname} +mv * $RPM_BUILD_ROOT/opt/%{modname} +mkdir -p $RPM_BUILD_ROOT/usr/share/issabel/module_installer/%{name}-%{version}-%{release}/ +cp $RPM_BUILD_ROOT/opt/%{modname}/samples/issabel/menu.xml $RPM_BUILD_ROOT/usr/share/issabel/module_installer/%{name}-%{version}-%{release}/ + +%post + + + +CONFIG_FILE=/opt/%{modname}/config.ini +if ! [ -f "$CONFIG_FILE" ]; then + + # Manager config + RAN_PASS=$(date +%s | sha256sum | base64 | head -c 32 ; echo) + cp /opt/%{modname}/samples/config.ini-dist /opt/%{modname}/config.ini + sed -i "s/= password/= $RAN_PASS/" /opt/%{modname}/config.ini + sed -i "s/= username/= qpanel/" /opt/%{modname}/config.ini + sed -i "s/;base_url = /base_url = \/qpanel/" /opt/%{modname}/config.ini + + search_include=$(grep manager_qpanel.conf /etc/asterisk/manager.conf | grep -v ';') + if [ ${#search_include} -eq 0 ]; then + echo "#include manager_qpanel.conf" >> /etc/asterisk/manager.conf; + fi +else + RAN_PASS=$(grep "\[manager\]" -a5 $CONFIG_FILE | grep password | cut -f 3 --delimiter=" ") + python /opt/%{modname}/update_config.py $CONFIG_FILE /opt/%{modname}/samples/config.ini-dist +fi + +# Update or create manager config for qpanel user +CONFIG_FILE_MANAGER=/etc/asterisk/manager_qpanel.conf +if ! [ -f "$CONFIG_FILE_MANAGER" ]; then + cp /opt/%{modname}/samples/configs/manager_asterisk.conf $CONFIG_FILE_MANAGER +else + # update role commands + ROL_READ=$(grep "read.*" /opt/%{modname}/samples/configs/manager_asterisk.conf) + ROL_WRITE=$(grep "write.*" /opt/%{modname}/samples/configs/manager_asterisk.conf) + sed -i "s/read.*/$ROL_READ/" $CONFIG_FILE_MANAGER + sed -i "s/write.*/$ROL_WRITE/" $CONFIG_FILE_MANAGER +fi +sed -i "s/secret.*/secret = $RAN_PASS/" $CONFIG_FILE_MANAGER +asterisk -rx "reload" + + +# Dependencies +pip install virtualenv +mkdir /opt/%{modname}/env +virtualenv /opt/%{modname}/env +source /opt/%{modname}/env/bin/activate +pip install -r /opt/%{modname}/requirements.txt +deactivate + + +# httpd apache +if ! [ -f "/etc/httpd/conf.d/qpanel.conf" ]; then +echo ' +Alias /qpanel/static /opt/qpanel/qpanel/static + + Require all granted + + + + + Require all granted + + + +WSGISocketPrefix /var/run/wsgi +WSGIDaemonProcess qpanel_app python-path=/opt/qpanel:/opt/qpanel/env/lib/python2.7/site-packages +WSGIProcessGroup qpanel_app +WSGIScriptAlias /qpanel /opt/qpanel/start.wsgi process-group=qpanel_app +' > /etc/httpd/conf.d/qpanel.conf + +fi +service httpd restart + + +pathModule="/usr/share/issabel/module_installer/%{name}-%{version}-%{release}" +# Run installer script to fix up ACLs and add module to issabel menus. +issabel-menumerge $pathModule/menu.xml + + +%pre +mkdir -p /usr/share/issabel/module_installer/%{name}-%{version}-%{release}/ + + +%clean +rm -rf $RPM_BUILD_ROOT + +%preun +if [ $1 -eq 0 ] ; then # Validation for desinstall this rpm + echo "Delete menus" + issabel-menuremove "%{modname}" +fi + +%files +%defattr(-,root,root,-) +/opt/%{modname}/* +/usr/share/issabel/module_installer/* +%doc + +%changelog From 53d4e7ad665ffe177e02f784ff6112bfdb55d3cf Mon Sep 17 00:00:00 2001 From: voipsense <35378628+voipsense@users.noreply.github.com> Date: Mon, 25 Jun 2018 11:45:34 +0100 Subject: [PATCH 3/3] Add files via upload --- samples/issabel/create_rpm_issabel4.sh | 62 ++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 samples/issabel/create_rpm_issabel4.sh diff --git a/samples/issabel/create_rpm_issabel4.sh b/samples/issabel/create_rpm_issabel4.sh new file mode 100644 index 0000000..33dc010 --- /dev/null +++ b/samples/issabel/create_rpm_issabel4.sh @@ -0,0 +1,62 @@ +#!/bin/sh + +# +# Create a RPM from last stable version or other if setted +# This script need have installed git, sed, rpmdevtools and curl +# +# Author: Rodrigo Ramírez Norambuena +# + +# config +BRANCH=stable +SPEC_FILE=issabel4-qpanel.spec +REPO="https://github.com/roramirez/qpanel.git" +URL_STABLE_VERSION="https://rodrigoramirez.com/qpanel/version/$BRANCH" + +if ! [ -x "$(command -v git)" ]; then + echo "Please install git" + exit 1 +fi + +if ! [ -x "$(command -v rpmdev-setuptree)" ]; then + echo "Please install rpm-build and rpmdevtools" + exit 1 +fi + +if ! [ -x "$(command -v curl)" ]; then + echo "Please install curl" + exit 1 +fi + +if ! [ -x "$(command -v npm)" ]; then + echo "Please install npm" + exit 1 +fi + +VERSION_STABLE=$(curl -L $URL_STABLE_VERSION) +CLONE_DIR="/tmp/qpanel-$VERSION_STABLE" +FILE_TAR="qpanel-$VERSION_STABLE.tar.gz" +if [ -d "$CLONE_DIR" ]; then + cd $CLONE_DIR + git pull +else + git clone -b $BRANCH $REPO $CLONE_DIR +fi + +cd $CLONE_DIR +pybabel compile -d translations +# Bower +cd $CLONE_DIR +npm install +sudo $CLONE_DIR/node_modules/bower/bin/bower --allow-root install + +cd /tmp +tar cvfz $FILE_TAR --exclude=node_modules qpanel-$VERSION_STABLE + +rpmdev-setuptree +cd +cp /tmp/$FILE_TAR rpmbuild/SOURCES +cd rpmbuild +cp $CLONE_DIR/samples/issabel/$SPEC_FILE $SPEC_FILE +sed -i s/"Version: *.*.*"/"Version: $VERSION_STABLE"/g $SPEC_FILE +rpmbuild -v -bb $SPEC_FILE