Initial version of murmur module

This commit is contained in:
Ossi Salmi 2013-04-13 21:28:26 +03:00
parent 313d847e6a
commit 4b0c766c5a
4 changed files with 337 additions and 0 deletions

18
murmur/Makefile Normal file
View file

@ -0,0 +1,18 @@
include $(CURDIR)/../Makefile.inc
VERSION = 1.2.3
TARGET = murmur-static_x86-$(VERSION).tar.bz2
SOURCE = http://downloads.sourceforge.net/project/mumble/Mumble/$(VERSION)/murmur-static_x86-$(VERSION).tar.bz2
all: download manifest
download: $(PACKAGES)/$(TARGET)
manifest: $(MANIFESTS)/murmur.pp
$(PACKAGES)/$(TARGET):
@umask 022; echo $@; \
test -f $@ || curl -o $@ $(SOURCE)
$(MANIFESTS)/murmur.pp: $(PACKAGES)/$(TARGET)
@umask 022; echo $@; \
echo '$$murmur_package_latest = "$(TARGET)"' > $@

56
murmur/files/murmur.init Normal file
View file

@ -0,0 +1,56 @@
#!/bin/bash
# chkconfig: 35 90 12
# description: Murmur Service
# processname: murmur
[ -f /etc/rc.d/init.d/functions ] || exit 0
. /etc/rc.d/init.d/functions
RETVAL=0
PROG="/usr/local/murmur/murmur.x86"
ARGS="-ini /srv/murmur/murmur.ini"
start() {
echo -n "Starting Murmur server: "
daemon --user murmur $PROG $ARGS
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/murmur
return $RETVAL
}
stop() {
echo -n "Stopping Murmur server: "
killproc $PROG
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/murmur
return $RETVAL
}
case "$1" in
start)
start
;;
stop)
stop
;;
status)
status $PROG
;;
restart|reload|condrestart)
stop
sleep 2
start
;;
*)
echo "Usage: $0 {start|stop|status|restart|reload|condrestart}"
exit 1
esac
exit $RETVAL

113
murmur/manifests/init.pp Normal file
View file

@ -0,0 +1,113 @@
# Install murmur (Mumble server).
#
# === Global variables
#
# $murmur_ssl_key:
# Path to SSL private key.
#
# $murmur_ssl_cert:
# Path to SSL certificate.
#
# $murmur_password:
# Server passwords. Defaults to none.
#
# $murmur_welcome:
# Server welcome message.
#
class murmur {
if !$murmur_package {
if $murmur_package_latest {
$murmur_package = $murmur_package_latest
} else {
fail("Must define \$murmur_package or \$murmur_package_latest")
}
}
if !$murmur_password {
$murmur_password = ""
}
if !$murmur_welcome {
$murmur_welcome = "<br />Welcome to this server running Murmur.<br />"
}
file { "/usr/local/src/murmur-static_x86.tar.bz2":
ensure => present,
mode => "0644",
owner => "root",
group => "root",
source => "puppet:///files/packages/${murmur_package}",
}
util::extract::tar { "/usr/local/murmur":
strip => 1,
source => "/usr/local/src/murmur-static_x86.tar.bz2",
require => File["/usr/local/src/murmur-static_x86.tar.bz2"],
notify => Service["murmur"],
}
include user::system
realize(User["murmur"], Group["murmur"])
if !$murmur_ssl_key {
$murmur_ssl_key = "${puppet_ssldir}/private_keys/${homename}.pem"
}
if !$murmur_ssl_cert {
$murmur_ssl_cert = "${puppet_ssldir}/certs/${homename}.pem"
}
include ssl
file { "${ssl::certs}/murmur.crt":
ensure => present,
mode => "0644",
owner => "root",
group => "root",
source => $murmur_ssl_cert,
notify => Service["murmur"],
}
file { "${ssl::private}/murmur.key":
ensure => present,
mode => "0640",
owner => "root",
group => "murmur",
source => $murmur_ssl_key,
require => Group["murmur"],
notify => Service["murmur"],
}
file { "/srv/murmur":
ensure => directory,
mode => "0700",
owner => "murmur",
group => "murmur",
require => User["murmur"],
}
file { "/srv/murmur/murmur.ini":
ensure => present,
mode => "0600",
owner => "murmur",
group => "murmur",
content => template("murmur/murmur.ini.erb"),
require => File["/srv/murmur"],
notify => Service["murmur"],
}
file { "/etc/init.d/murmur":
ensure => present,
mode => "0755",
owner => "root",
group => "root",
source => "puppet:///modules/murmur/murmur.init",
notify => Exec["add-service-murmur"],
}
exec { "add-service-murmur":
path => "/bin:/usr/bin:/sbin:/usr/sbin",
command => "chkconfig --add murmur",
refreshonly => true,
before => Service["murmur"],
}
service { "murmur":
ensure => running,
enable => true,
}
}

View file

@ -0,0 +1,150 @@
# Path to database. If blank, will search for
# murmur.sqlite in default locations or create it if not found.
database=/srv/murmur/murmur.sqlite
# If you wish to use something other than SQLite, you'll need to set the name
# of the database above, and also uncomment the below.
# Sticking with SQLite is strongly recommended, as it's the most well tested
# and by far the fastest solution.
#
#dbDriver=QMYSQL
#dbUsername=
#dbPassword=
#dbHost=
#dbPort=
#dbPrefix=murmur_
#dbOpts=
# Murmur defaults to not using D-Bus. If you wish to use dbus, which is one of the
# RPC methods available in murmur, please specify so here.
#
#dbus=session
# Alternate service name. Only use if you are running distinct
# murmurd processes connected to the same D-Bus daemon.
#dbusservice=net.sourceforge.mumble.murmur
# If you want to use ZeroC Ice to communicate with Murmur, you need
# to specify the endpoint to use. Since there is no authentication
# with ICE, you should only use it if you trust all the users who have
# shell access to your machine.
# Please see the ICE documentation on how to specify endpoints.
#ice="tcp -h 127.0.0.1 -p 6502"
# Ice primarily uses local sockets. This means anyone who has a
# user account on your machine can connect to the Ice services.
# You can set a plaintext "secret" on the Ice connection, and
# any script attempting to access must then have this secret
# (as context with name "secret").
# Access is split in read (look only) and write (modify)
# operations. Write access always includes read access,
# unless read is explicitly denied (see note below).
#
# Note that if this is uncommented and with empty content,
# access will be denied.
icesecretread=
icesecretwrite=
# How many login attempts do we tolerate from one IP
# inside a given timeframe before we ban the connection?
# Note that this is global (shared between all virtual servers), and that
# it counts both successfull and unsuccessfull connection attempts.
# Set either Attempts or Timeframe to 0 to disable.
#autobanAttempts = 10
#autobanTimeframe = 120
#autobanTime = 300
# Murmur default to logging to murmur.log. If you leave this blank,
# murmur will log to the console (linux) or through message boxes (win32).
logfile=/srv/murmur/murmur.log
# If set, murmur will write its process ID to this file.
pidfile=/srv/murmur/murmur.pid
# The below will be used as defaults for new configured servers.
# If you're just running one server (the default), it's easier to
# configure it here than through D-Bus or Ice.
#
# Welcome message sent to clients when they connect
welcometext="<%= murmur_welcome %>"
# Port to bind TCP and UDP sockets to
port=64738
# Specific IP or hostname to bind to.
# If this is left blank (default), murmur will bind to all available addresses.
#host=
# Password to join server
serverpassword=<%= murmur_password %>
# Maximum bandwidth (in bits per second) clients are allowed
# to send speech at.
bandwidth=72000
# Maximum number of concurrent clients allowed.
users=100
# Regular expression used to validate channel names
# (note that you have to escape backslashes with \ )
#channelname=[ \\-=\\w\\#\\[\\]\\{\\}\\(\\)\\@\\|]+
# Regular expression used to validate user names
# (note that you have to escape backslashes with \ )
#username=[-=\\w\\[\\]\\{\\}\\(\\)\\@\\|\\.]+
# Maximum length of text messages in characters. 0 for no limit.
#textmessagelength=5000
# Maximum length of text messages in characters, with image data. 0 for no limit.
#imagemessagelength=131072
# Allow clients to use HTML in messages, user comments and channel descriptions?
#allowhtml=true
# Murmur retains the per-server log entries in an internal database which
# allows it to be accessed over D-Bus/ICE.
# How many days should such entries be kept?
# Set to 0 to keep forever, or -1 to disable logging to the DB
#logdays=31
# To enable public server registration, the serverpassword must be blank, and
# this must all be filled out.
# The password here is used to create a registry for the server name; subsequent
# updates will need the same password. Don't lose your password.
# The URL is your own website, and only set the registerHostname for static IP
# addresses.
# Only uncomment the 'registerName' parameter if you wish to give your "Root" channel a custom name.
#
#registerName=Mumble Server
#registerPassword=secret
#registerUrl=http://mumble.sourceforge.net/
#registerHostname=
# To enable bonjour service discovery uncomment the following line.
# To change the name announced by bonjour adjust the registerName variable.
# See http://developer.apple.com/networking/bonjour/index.html for more information
# about bonjour.
bonjour=False
# If you have a proper SSL certificate, you can provide the filenames here.
# Otherwise, Murmur will create it's own certificate automatically.
sslCert=<%= scope.lookupvar('ssl::certs') %>/murmur.crt
sslKey=<%= scope.lookupvar('ssl::private') %>/murmur.key
# If murmur is started as root, which user should it switch to?
# This option is ignored if murmur isn't started with root privileges.
#uname=
# If this options is enabled, only clients which have a certificate are allowed
# to connect.
#certrequired=False
# You can configure any of the configuration options for Ice here. We recommend
# leave the defaults as they are.
# Please note that this section has to be last in the configuration file.
#
[Ice]
Ice.Warn.UnknownProperties=1
Ice.MessageSizeMax=65536