Changeset 26722


Ignore:
Timestamp:
2011-04-19T17:11:02+02:00 (7 years ago)
Author:
jogo
Message:

ZNC: Fix webadmin, allow external config and minor fixes

  • Fix the webadmin module and add the themes
  • Allow providing ZNC an external config (closes #9110)
  • Allow specifying the user and group to run ZNC as (needs su when using external config)
  • Allow providing a certificate for incoming SSL connections
  • Reduce buildtime by not rebuilding everything everytime

Signed-off-by: Jonas Gorski <jonas.gorski+openwrt@…>

Location:
packages/net/znc
Files:
1 added
3 edited

Legend:

Unmodified
Added
Removed
  • packages/net/znc/Makefile

    r26656 r26722  
    1010PKG_NAME:=znc 
    1111PKG_VERSION:=0.098 
    12 PKG_RELEASE:=1 
     12PKG_RELEASE:=2 
    1313 
    1414PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz 
     
    7474        $(INSTALL_DIR) $$(1)/usr/lib/znc/ 
    7575        $(INSTALL_BIN) $$(PKG_BUILD_DIR)/modules/$(strip $(3))$(subst -,_,$(strip $(1))).so $$(1)/usr/lib/znc/ 
     76        # include webadmin page templates if existing 
     77        if [ -d $$(PKG_BUILD_DIR)/modules/$(strip $(3))$(subst -,_,$(strip $(1))) ]; then \ 
     78                $(INSTALL_DIR) $$(1)/usr/share/znc/ ;\ 
     79                $(CP) -r $$(PKG_BUILD_DIR)/modules/$(strip $(3))$(subst -,_,$(strip $(1))) $$(1)/usr/share/znc/ ;\ 
     80        fi 
    7681  endef 
    7782 
     
    8085endef 
    8186 
     87define webadmin 
     88  define Package/znc-mod-webadmin 
     89    $(Package/znc/default) 
     90    TITLE+= (webadmin plugin) 
     91    DEPENDS:=znc 
     92  endef 
     93 
     94  define Package/znc-mod-webadmin/description 
     95   Allows you to add/remove/edit users and settings on the fly via a web browser. 
     96  endef 
     97 
     98  define Package/znc-mod-webadmin/install 
     99        $(INSTALL_DIR) $$(1)/usr/lib/znc/ 
     100        $(INSTALL_BIN) $$(PKG_BUILD_DIR)/modules/webadmin.so $$(1)/usr/lib/znc/ 
     101        $(INSTALL_DIR) $$(1)/usr/share/znc/ 
     102        $(CP) -r $$(PKG_BUILD_DIR)/modules/webadmin $$(1)/usr/share/znc/ 
     103        $(INSTALL_DIR) $$(1)/usr/share/znc/webskins/ 
     104        $(CP) -r $$(PKG_BUILD_DIR)/webskins/_default_ $$(1)/usr/share/znc/webskins/ 
     105  endef 
     106 
     107  ZNC_MODULES += znc-mod-webadmin 
     108  $(if $(CONFIG_PACKAGE_znc-mod-webadmin),ZNC_MODULE_TARGETS += webadmin.so) 
     109endef 
     110 
     111define webskin 
     112  define Package/znc-webskin-$(strip $(1)) 
     113    $(Package/znc/default) 
     114    TITLE+= ($(strip $(1)) webskin) 
     115    DEPENDS:=znc-mod-webadmin 
     116  endef 
     117 
     118  define Package/znc-webskin-$(strip $(1))/description 
     119    $(strip $(1)) webskin for webadmin 
     120  endef 
     121 
     122  define Package/znc-webskin-$(strip $(1))/install 
     123        $(INSTALL_DIR) $$(1)/usr/share/znc/webskins/ 
     124        $(CP) -r $$(PKG_BUILD_DIR)/webskins/$(strip $(1)) $$(1)/usr/share/znc/webskins/ 
     125  endef 
     126  ZNC_MODULES += znc-webskin-$(strip $(1)) 
     127endef 
    82128 
    83129, := , 
     
    165211        specific users and have the text sent to a special query window.)) 
    166212 
    167 $(eval $(call module,webadmin,Allows you to add/remove/edit users and settings \ 
    168         on the fly via a web browser.)) 
    169  
    170213$(eval $(call module,antiidle,Hides your idle time.,extra/)) 
    171214 
     
    204247        of your IRC client.,extra/)) 
    205248 
     249$(eval $(call webadmin)) 
     250 
     251$(eval $(call webskin,dark-clouds)) 
     252$(eval $(call webskin,forest)) 
     253$(eval $(call webskin,ice)) 
    206254 
    207255PKG_CONFIG_DEPENDS := $(patsubst %,CONFIG_PACKAGE_%,$(ZNC_MODULES)) 
  • packages/net/znc/files/znc.conf

    r24548 r26722  
    22        # where to listen for connections 
    33        list listener   '192.168.1.1 1234' 
     4        # If using SSL sockets, use the following certifcate: 
     5        # option znc_ssl_cert '/etc/znc.cert' 
     6 
    47        # load global modules (You need to install them first): 
    58        # list module 'fail2ban' 
  • packages/net/znc/files/znc.init

    r24548 r26722  
    44START=60 
    55 
    6 PID_FILE=/tmp/etc/znc/znc.pid 
    7 ZNC_CONFIG=/tmp/etc/znc/configs/znc.conf 
     6ZNC_CONFIG_PATH=/tmp/etc/znc 
     7PID_FILE=${ZNC_CONFIG_PATH}/znc.pid 
     8ZNC_CONFIG=${ZNC_CONFIG_PATH}/configs/znc.conf 
     9 
     10EXTERNAL_CONFIG=0 
     11 
     12RUNAS_USER= 
     13RUNAS_GROUP= 
    814 
    915add_param() { 
     
    2531        local connectdelay 
    2632        local serverthrottle 
     33        local znc_config_path 
     34        local znc_pem_file 
    2735 
     36        config_get znc_config_path "$znc" znc_config_path 
    2837 
    29         config_get anoniplimit "$znc" anoniplimit 
    30         config_get maxbuffersize "$znc" maxbuffersize 
    31         config_get connectdelay "$znc" connectdelay 
    32         config_get serverthrottle "$znc" serverthrottle 
     38        config_get RUNAS_USER "$znc" runas_user 
     39        config_get RUNAS_GROUP "$znc" runas_group 
    3340 
    34         [ -z $anoniplimit ] || echo "AnonIPLimit = $anoniplimit" >> $ZNC_CONFIG 
    35         [ -z $maxbuffersize ] || echo "MaxBufferSize = $maxbuffersize" >> $ZNC_CONFIG 
    36         [ -z $connectdelay ] || echo "ConnectDelay = $connectdelay" >> $ZNC_CONFIG 
    37         [ -z $serverthrottle ] || echo "ServerThrottle = $anoniplimit" >> $ZNC_CONFIG 
     41        if [ "${znc_config_path}" ] 
     42        then 
     43                ZNC_CONFIG_PATH=$znc_config_path 
     44                EXTERNAL_CONFIG=1 
     45        else 
     46                mkdir -p $ZNC_CONFIG_PATH/configs/ 
     47                [ ! -f "$ZNC_CONFIG" ] || rm "$ZNC_CONFIG" 
    3848 
    39         echo "PidFile = $PID_FILE" >> $ZNC_CONFIG 
     49                config_get anoniplimit "$znc" anoniplimit 
     50                config_get maxbuffersize "$znc" maxbuffersize 
     51                config_get connectdelay "$znc" connectdelay 
     52                config_get serverthrottle "$znc" serverthrottle 
     53                config_get znc_pem_file "$znc" znc_ssl_cert 
    4054 
    41         config_list_foreach "$znc" listener "add_param Listener" 
    42         config_list_foreach "$znc" module "add_param LoadModule" 
     55                [ -z $znc_pem_file -o -f $ZNC_CONFIG_PATH/znc.pem ] || ln -s "$znc_pem_file" $ZNC_CONFIG_PATH/znc.pem 
    4356 
    44         add_param LoadModule "droproot nobody nogroup" 
     57                [ -z $anoniplimit ] || echo "AnonIPLimit = $anoniplimit" >> $ZNC_CONFIG 
     58                [ -z $maxbuffersize ] || echo "MaxBufferSize = $maxbuffersize" >> $ZNC_CONFIG 
     59                [ -z $connectdelay ] || echo "ConnectDelay = $connectdelay" >> $ZNC_CONFIG 
     60                [ -z $serverthrottle ] || echo "ServerThrottle = $anoniplimit" >> $ZNC_CONFIG 
     61 
     62                echo "PidFile = $PID_FILE" >> $ZNC_CONFIG 
     63 
     64                config_list_foreach "$znc" listener "add_param Listener" 
     65                config_list_foreach "$znc" module "add_param LoadModule" 
     66 
     67                add_param LoadModule "droproot ${RUNAS_USER:-nobody} ${RUNAS_GROUP:-nogroup}" 
     68        fi 
    4569} 
    4670 
     
    96120 
    97121start() { 
    98         mkdir -p /tmp/etc/znc/configs/ 
    99         [ -f "$ZNC_CONFIG" ] && rm "$ZNC_CONFIG" 
    100122        config_load znc 
    101123        config_foreach znc_global znc 
    102         config_foreach add_listener listener 
    103         config_foreach add_user user 
    104124 
    105         chown -R nobody:nogroup /tmp/etc/znc 
    106         /usr/bin/znc -d/tmp/etc/znc -r >/dev/null & 
     125        if [ "$EXTERNAL_CONFIG" -eq 0 ] 
     126        then 
     127                config_foreach add_listener listener 
     128                config_foreach add_user user 
     129 
     130                chown -R ${RUNAS_USER:-nobody}:${RUNAS_GROUP:-nogroup} /tmp/etc/znc 
     131        fi 
     132 
     133        if [ "$EXTERNAL_CONFIG" -eq 1 -a "$RUNAS_USER"  ] 
     134        then 
     135                local SU=$(which su) 
     136                if [ "$SU" ] 
     137                then 
     138                        $SU -c "/usr/bin/znc -d$ZNC_CONFIG_PATH >/dev/null &" $RUNAS_USER 
     139                else 
     140                        logger -s -t ZNC -p daemon.err "Could not run ZNC as user $RUNAS_USER: su not found." 
     141                        exit 1 
     142                fi 
     143        else 
     144                /usr/bin/znc -d$ZNC_CONFIG_PATH >/dev/null & 
     145        fi 
    107146} 
    108147 
    109148stop() { 
    110         [ -f "$PID_FILE" ] && kill $(cat "$PID_FILE") 
     149        if [ -f "$PID_FILE" ] 
     150        then 
     151                kill $(cat "$PID_FILE") 
     152        else 
     153                killall znc 
     154        fi 
    111155} 
    112156 
Note: See TracChangeset for help on using the changeset viewer.