BE:LiquidFeedback/Serverkonfiguration
Installation deepthought
Basissystem ist Debian/Lenny 64 Bit minimal wie von Hetzner bereitgestellt. Die IP-Adresse des Servers lautet 88.198.49.151.
Unnötige Dienste abschalten:
/etc/init.d/portmap stop update-rc.d -f portmap remove
System auf aktuellen Stand bringen:
apt-get update apt-get upgrade
Benötigte Pakete installieren:
apt-get install lighttpd postgresql libpq-dev lua5.1 liblua5.1-0-dev build-essential ghc libghc6-parsec-dev imagemagick screen sudo mercurial
LiquidFeedback mit Abhängigkeiten herunterladen
mkdir /root/install cd /root/install
Web development environment WebMCP
wget http://www.public-software-group.org/pub/projects/webmcp/v1.0.3/webmcp-v1.0.3.tar.gz
Wiki rocketwiki (LiquidFeedback-Edition)
wget http://www.public-software-group.org/pub/projects/rocketwiki/liquid_feedback_edition/v0.1.0/rocketwiki-lqfb-v0.1.0-rc1.tar.gz
LiquidFeedback core
wget http://www.public-software-group.org/pub/projects/liquid_feedback/backend/beta10/liquid_feedback_core-beta10.tar.gz
LiquidFeedback frontend
wget http://www.public-software-group.org/pub/projects/liquid_feedback/frontend/alpha5/liquid_feedback_frontend-alpha5.tar.gz
LiquidFeedback installieren
mkdir /opt mkdir /opt/liquid_feedback
cd /opt/liquid_feedback tar xvzf /root/install/webmcp-v1.0.3.tar.gz ln -s webmcp-v1.0.3 webmcp cd webmcp
Da wir ein 64 Bit System haben Makefile.options anpassen:
CFLAGS = -fPIC -O2 -Wall -I /usr/include -I /usr/local/include -I /usr/local/include/lua51 -I /usr/include/lua5.1
make
cd /root/install tar xvzf rocketwiki-lqfb-v0.1.0-rc1.tar.gz cd rocketwiki-lqfb-v0.1.0 make mkdir /opt/liquid_feedback/rocketwiki/ cp rocketwiki-lqfb rocketwiki-lqfb-compat /opt/liquid_feedback/rocketwiki/
cd /root/install tar xvzf liquid_feedback_core-beta10.tar.gz cd liquid_feedback_core-beta10 make
mkdir /opt/liquid_feedback/lf_update cp lf_update /opt/liquid_feedback/lf_update
su - postgres createuser www-data # Shall the new role be a superuser? (y/n) n # Shall the new role be allowed to create databases? (y/n) y # Shall the new role be allowed to create more new roles? (y/n) n exit
su - www-data export INSTANCE=be #export INSTANCE=hb #export INSTANCE=sh createdb liquid_feedback_$INSTANCE cd /root/install/liquid_feedback_core-beta10/ psql --set ON_ERROR_STOP=1 -f core.sql liquid_feedback_$INSTANCE psql --set ON_ERROR_STOP=1 -f init.sql liquid_feedback_$INSTANCE exit
cd /opt/liquid_feedback tar xvzf /root/install/liquid_feedback_frontend-alpha5.tar.gz ln -s liquid_feedback_frontend-alpha5 webapp cd webapp/fastpath vi getpic.c #define GETPIC_DEFAULT_AVATAR "/opt/liquid_feedback/webapp/static/avatar.jpg" export INSTANCE=be #export INSTANCE=hb #export INSTANCE=sh mkdir $INSTANCE cd $INSTANCE cp ../getpic.c . vi getpic.c #define GETPIC_CONNINFO "dbname=liquid_feedback_XX" make -f ../Makefile
# Temporäres Verzeichnis für Webserver schreibbar machen cd webapp chown www-data tmp
Webserver konfigurieren
cat > /etc/lighttpd/conf-available/42-liquid_feedback.conf << EOF server.modules += ( "mod_cgi", "mod_alias", "mod_setenv", "mod_rewrite", "mod_redirect", ) # Redirect fuer /lf/ auf /be/ url.redirect += ( "^/lf$" => "/be/", "^/lf/(.*)" => "/be/$1", ) # Enable CGI-Execution of *.lua files through lua binary cgi.assign += ( ".lua" => "/usr/bin/lua" ) # Connect external URLs to server static files and the webmcp cgi interface alias.url += ( "/be/fastpath/" => "/opt/liquid_feedback/webapp/fastpath/be/", "/be/static/" => "/opt/liquid_feedback/webapp/static/", "/be/" => "/opt/liquid_feedback/webmcp/framework/cgi-bin/", "/bb/fastpath/" => "/opt/liquid_feedback/webapp/fastpath/bb/", "/bb/static/" => "/opt/liquid_feedback/webapp/static/", "/bb/" => "/opt/liquid_feedback/webmcp/framework/cgi-bin/", "/by/fastpath/" => "/opt/liquid_feedback/webapp/fastpath/by/", "/by/static/" => "/opt/liquid_feedback/webapp/static/", "/by/" => "/opt/liquid_feedback/webmcp/framework/cgi-bin/", "/hb/fastpath/" => "/opt/liquid_feedback/webapp/fastpath/hb/", "/hb/static/" => "/opt/liquid_feedback/webapp/static/", "/hb/" => "/opt/liquid_feedback/webmcp/framework/cgi-bin/", "/sh/fastpath/" => "/opt/liquid_feedback/webapp/fastpath/sh/", "/sh/static/" => "/opt/liquid_feedback/webapp/static/", "/sh/" => "/opt/liquid_feedback/webmcp/framework/cgi-bin/", "/mv/fastpath/" => "/opt/liquid_feedback/webapp/fastpath/mv/", "/mv/static/" => "/opt/liquid_feedback/webapp/static/", "/mv/" => "/opt/liquid_feedback/webmcp/framework/cgi-bin/", "/nw/fastpath/" => "/opt/liquid_feedback/webapp/fastpath/nw/", "/nw/static/" => "/opt/liquid_feedback/webapp/static/", "/nw/" => "/opt/liquid_feedback/webmcp/framework/cgi-bin/", "/hh/fastpath/" => "/opt/liquid_feedback/webapp/fastpath/hh/", "/hh/static/" => "/opt/liquid_feedback/webapp/static/", "/hh/" => "/opt/liquid_feedback/webmcp/framework/cgi-bin/", "/sn/fastpath/" => "/opt/liquid_feedback/webapp/fastpath/sn/", "/sn/static/" => "/opt/liquid_feedback/webapp/static/", "/sn/" => "/opt/liquid_feedback/webmcp/framework/cgi-bin/", "/st/fastpath/" => "/opt/liquid_feedback/webapp/fastpath/st/", "/st/static/" => "/opt/liquid_feedback/webapp/static/", "/st/" => "/opt/liquid_feedback/webmcp/framework/cgi-bin/", "/rp/fastpath/" => "/opt/liquid_feedback/webapp/fastpath/rp/", "/rp/static/" => "/opt/liquid_feedback/webapp/static/", "/rp/" => "/opt/liquid_feedback/webmcp/framework/cgi-bin/" "/ni/fastpath/" => "/opt/liquid_feedback/webapp/fastpath/ni/", "/ni/static/" => "/opt/liquid_feedback/webapp/static/", "/ni/" => "/opt/liquid_feedback/webmcp/framework/cgi-bin/", "/int/br/fastpath/" => "/opt/liquid_feedback/webapp/fastpath/int-br/", "/int/br/static/" => "/opt/liquid_feedback/webapp/static/", "/int/br/" => "/opt/liquid_feedback/webmcp/framework/cgi-bin/", "/int/ch/fastpath/" => "/opt/liquid_feedback/webapp/fastpath/int-ch/", "/int/ch/static/" => "/opt/liquid_feedback/webapp/static/", "/int/ch/" => "/opt/liquid_feedback/webmcp/framework/cgi-bin/", "/int/at/fastpath/" => "/opt/liquid_feedback/webapp/fastpath/int-at/", "/int/at/static/" => "/opt/liquid_feedback/webapp/static/", "/int/at/" => "/opt/liquid_feedback/webmcp/framework/cgi-bin/" ) $HTTP["url"] =~ "^/be/" { setenv.add-environment += ( "WEBMCP_CONFIG_NAME" => "piraten-be" , "WEBMCP_APP_BASEPATH" => "/opt/liquid_feedback/webapp", ) } $HTTP["url"] =~ "^/bb/" { setenv.add-environment += ( "WEBMCP_CONFIG_NAME" => "piraten-bb" , "WEBMCP_APP_BASEPATH" => "/opt/liquid_feedback/webapp", ) } $HTTP["url"] =~ "^/by/" { setenv.add-environment += ( "WEBMCP_CONFIG_NAME" => "piraten-by" , "WEBMCP_APP_BASEPATH" => "/opt/liquid_feedback/webapp", ) } $HTTP["url"] =~ "^/hb/" { setenv.add-environment += ( "WEBMCP_CONFIG_NAME" => "piraten-hb" , "WEBMCP_APP_BASEPATH" => "/opt/liquid_feedback/webapp", ) } $HTTP["url"] =~ "^/sh/" { setenv.add-environment += ( "WEBMCP_CONFIG_NAME" => "piraten-sh" , "WEBMCP_APP_BASEPATH" => "/opt/liquid_feedback/webapp", ) } $HTTP["url"] =~ "^/mv/" { setenv.add-environment += ( "WEBMCP_CONFIG_NAME" => "piraten-mv" , "WEBMCP_APP_BASEPATH" => "/opt/liquid_feedback/webapp", ) } $HTTP["url"] =~ "^/nw/" { setenv.add-environment += ( "WEBMCP_CONFIG_NAME" => "piraten-nw" , "WEBMCP_APP_BASEPATH" => "/opt/liquid_feedback/webapp", ) } $HTTP["url"] =~ "^/hh/" { setenv.add-environment += ( "WEBMCP_CONFIG_NAME" => "piraten-hh" , "WEBMCP_APP_BASEPATH" => "/opt/liquid_feedback/webapp", ) } $HTTP["url"] =~ "^/sn/" { setenv.add-environment += ( "WEBMCP_CONFIG_NAME" => "piraten-sn" , "WEBMCP_APP_BASEPATH" => "/opt/liquid_feedback/webapp", ) } $HTTP["url"] =~ "^/st/" { setenv.add-environment += ( "WEBMCP_CONFIG_NAME" => "piraten-st" , "WEBMCP_APP_BASEPATH" => "/opt/liquid_feedback/webapp", ) } $HTTP["url"] =~ "^/rp/" { setenv.add-environment += ( "WEBMCP_CONFIG_NAME" => "piraten-rp" , "WEBMCP_APP_BASEPATH" => "/opt/liquid_feedback/webapp", ) } $HTTP["url"] =~ "^/ni/" { setenv.add-environment += ( "WEBMCP_CONFIG_NAME" => "piraten-ni" , "WEBMCP_APP_BASEPATH" => "/opt/liquid_feedback/webapp", ) } $HTTP["url"] =~ "^/int/br/" { setenv.add-environment += ( "WEBMCP_CONFIG_NAME" => "piraten-int-br" , "WEBMCP_APP_BASEPATH" => "/opt/liquid_feedback/webapp", ) } $HTTP["url"] =~ "^/int/ch/" { setenv.add-environment += ( "WEBMCP_CONFIG_NAME" => "piraten-int-ch" , "WEBMCP_APP_BASEPATH" => "/opt/liquid_feedback/webapp", ) } $HTTP["url"] =~ "^/int/at/" { setenv.add-environment += ( "WEBMCP_CONFIG_NAME" => "piraten-int-at" , "WEBMCP_APP_BASEPATH" => "/opt/liquid_feedback/webapp", ) } # URL beautification url.rewrite-once += ( # do not rewrite redirects from /lf/ "^(/lf.*)" => "$1", # do not rewrite static URLs "^/([a-z][a-z])/fastpath/(.*)$" => "/$1/fastpath/$2", "^/([a-z][a-z])/static/(.*)$" => "/$1/static/$2", "^/int/([a-z][a-z])/fastpath/(.*)$" => "/int/$1/fastpath/$2", "^/int/([a-z][a-z])/static/(.*)$" => "/int/$1/static/$2", # base URL "^/([a-z][a-z])/(\?(.*))?$" => "/$1/webmcp-wrapper.lua?_webmcp_urldepth=0&_webmcp_module=index&_webmcp_view=index&$3", "^/int/([a-z][a-z])/(\?(.*))?$" => "/int/$1/webmcp-wrapper.lua?_webmcp_urldepth=0&_webmcp_module=index&_webmcp_view=index&$3", # module base URLs "^/([a-z][a-z])/([^/\?]+)/(\?(.*))?$" => "/$1/webmcp-wrapper.lua?_webmcp_urldepth=1&_webmcp_module=$2&_webmcp_view=index&$4", "^/int/([a-z][a-z])/([^/\?]+)/(\?(.*))?$" => "/int/$1/webmcp-wrapper.lua?_webmcp_urldepth=1&_webmcp_module=$2&_webmcp_view=index&$4", # actions "^/([a-z][a-z])/([^/\?]+)/([^/\.\?]+)(\?(.*))?$" => "/$1/webmcp-wrapper.lua?_webmcp_urldepth=1&_webmcp_module=$2&_webmcp_action=$3&$5", "^/int/([a-z][a-z])/([^/\?]+)/([^/\.\?]+)(\?(.*))?$" => "/int/$1/webmcp-wrapper.lua?_webmcp_urldepth=1&_webmcp_module=$2&_webmcp_action=$3&$5", # views without numeric id or string ident "^/([a-z][a-z])/([^/\?]+)/([^/\.\?]+)\.([^/\?]+)(\?(.*))?$" => "/$1/webmcp-wrapper.lua?_webmcp_urldepth=1&_webmcp_module=$2&_webmcp_view=$3&_webmcp_suffix=$4&$6", "^/int/([a-z][a-z])/([^/\?]+)/([^/\.\?]+)\.([^/\?]+)(\?(.*))?$" => "/int/$1/webmcp-wrapper.lua?_webmcp_urldepth=1&_webmcp_module=$2&_webmcp_view=$3&_webmcp_suffix=$4&$6", # views with numeric id or string ident "^/([a-z][a-z])/([^/\?]+)/([^/\?]+)/([^/\.\?]+)\.([^/\?]+)(\?(.*))?$" => "/$1/webmcp-wrapper.lua?_webmcp_urldepth=2&_webmcp_module=$2&_webmcp_view=$3&_webmcp_id=$4&_webmcp_suffix=$5&$7", "^/int/([a-z][a-z])/([^/\?]+)/([^/\?]+)/([^/\.\?]+)\.([^/\?]+)(\?(.*))?$" => "/int/$1/webmcp-wrapper.lua?_webmcp_urldepth=2&_webmcp_module=$2&_webmcp_view=$3&_webmcp_id=$4&_webmcp_suffix=$5&$7", ) # Redirects for URLs without trailing slashes url.redirect += ( # base URL without trailing slash "^/([a-z][a-z])$" => "/$1/", "^/int/([a-z][a-z])$" => "/int/$1/", # module base URL without trailing slash "^/([a-z][a-z])/([^/\?]+)$" => "/$1/$2/", "^/int/([a-z][a-z])/([^/\?]+)$" => "/int/$1/$2/", ) $SERVER["socket"] == ":80" { url.redirect += ( "^/(.*)$" => "https://lqpp.de$0" ) } $HTTP["url"] =~ "^/be/fastpath/" { cgi.assign = ( "" => "" ) setenv.add-response-header = ( "Cache-Control" => "private; max-age=86400" ) } $HTTP["url"] =~ "^/bb/fastpath/" { cgi.assign = ( "" => "" ) setenv.add-response-header = ( "Cache-Control" => "private; max-age=86400" ) } $HTTP["url"] =~ "^/by/fastpath/" { cgi.assign = ( "" => "" ) setenv.add-response-header = ( "Cache-Control" => "private; max-age=86400" ) } $HTTP["url"] =~ "^/hb/fastpath/" { cgi.assign = ( "" => "" ) setenv.add-response-header = ( "Cache-Control" => "private; max-age=86400" ) } $HTTP["url"] =~ "^/sh/fastpath/" { cgi.assign = ( "" => "" ) setenv.add-response-header = ( "Cache-Control" => "private; max-age=86400" ) } $HTTP["url"] =~ "^/mv/fastpath/" { cgi.assign = ( "" => "" ) setenv.add-response-header = ( "Cache-Control" => "private; max-age=86400" ) } $HTTP["url"] =~ "^/nw/fastpath/" { cgi.assign = ( "" => "" ) setenv.add-response-header = ( "Cache-Control" => "private; max-age=86400" ) } $HTTP["url"] =~ "^/hh/fastpath/" { cgi.assign = ( "" => "" ) setenv.add-response-header = ( "Cache-Control" => "private; max-age=86400" ) } $HTTP["url"] =~ "^/sn/fastpath/" { cgi.assign = ( "" => "" ) setenv.add-response-header = ( "Cache-Control" => "private; max-age=86400" ) } $HTTP["url"] =~ "^/st/fastpath/" { cgi.assign = ( "" => "" ) setenv.add-response-header = ( "Cache-Control" => "private; max-age=86400" ) } $HTTP["url"] =~ "^/rp/fastpath/" { cgi.assign = ( "" => "" ) setenv.add-response-header = ( "Cache-Control" => "private; max-age=86400" ) } $HTTP["url"] =~ "^/ni/fastpath/" { cgi.assign = ( "" => "" ) setenv.add-response-header = ( "Cache-Control" => "private; max-age=86400" ) } $HTTP["url"] =~ "^/int/br/fastpath/" { cgi.assign = ( "" => "" ) setenv.add-response-header = ( "Cache-Control" => "private; max-age=86400" ) } $HTTP["url"] =~ "^/int/ch/fastpath/" { cgi.assign = ( "" => "" ) setenv.add-response-header = ( "Cache-Control" => "private; max-age=86400" ) } $HTTP["url"] =~ "^/int/at/fastpath/" { cgi.assign = ( "" => "" ) setenv.add-response-header = ( "Cache-Control" => "private; max-age=86400" ) } EOF
Die Konfiguration aktivieren:
lighttpd-enable-mod liquid_feedback
Anwendung konfigurieren
Logo einbinden:
cd /opt/liquid_feedback/webapp/static wget http://upload.wikimedia.org/wikipedia/commons/thumb/6/6c/Piratpartiet.svg/48px-Piratpartiet.svg.png mv 48px-Piratpartiet.svg.png logo.png
vi /opt/liquid_feedback/webapp/config/default
config.app_version = config.app_version .. "+pt_br" config.use_terms_checkboxes = { { name = "nutzungsbedingungen_v1", html = "Ich akzeptiere die Nutzungsbedingungen durch Auswahl dieser Ankreuzbox", not_accepted_error = "Du musst die Nutzungsbedingungen akzeptieren, um dich zu registrieren." } } --db = assert(mondelefant.connect{ -- engine='postgresql', -- dbname='liquid_feedback' --})
cat > /opt/liquid_feedback/webapp/config/piraten-default.lua << EOF config.instance_path = string.gsub(config.instance_prefix, "_", "/") if string.find(config.instance_prefix, "_") then config.international = true end config.absolute_base_url = "https://lqpp.de/" .. config.instance_path .. "/" db = assert(mondelefant.connect{ engine='postgresql', dbname='liquid_feedback_' .. config.instance_prefix }) execute.config("default") if not config.app_title then config.app_title = "LiquidFeedback (Piratenpartei " .. config.instance_name .. ")" end config.app_logo = "logo.png" config.app_service_provider = 'Piratenpartei Deutschland Landesverband Berlin (PIRATEN Berlin)<br />Pflugstr. 9a<br />10115 Berlin<br /><br />E-Mail Support: <a href="mailto:support@lqpp.de">support@lqpp.de</a><br />E-Mail Administratoren: <a href="mailto:admins@lqpp.de">admins@lqpp.de</a><br /><br />Diskussion, Support & FAQ: <a href="http://wiki.piratenpartei.de/BE:LiquidFeedback">http://wiki.piratenpartei.de/BE:LiquidFeedback</a>' config.formatting_engine_executeables = { rocketwiki= "/opt/liquid_feedback/rocketwiki/rocketwiki-lqfb", compat = "/opt/liquid_feedback/rocketwiki/rocketwiki-lqfb-compat" } config.mail_subject_prefix = "[lqpp.de] " config.mail_from = { name = "lqpp.de", address = "support@lqpp.de" } config.fastpath_url_func = function(member_id, image_type) return "https://lqpp.de/" .. config.instance_path .. "/fastpath/getpic?" .. tostring(member_id) .. "+" .. tostring(image_type) end if not international then config.issue_discussion_url_func = function(issue) return "http://wiki.piratenpartei.de/" .. string.upper(config.instance_prefix) .. ":LiquidFeedback_Themendiskussion/" .. issue.id end end EOF
cat > /opt/liquid_feedback/webapp/config/piraten-be.lua << EOF config.instance_prefix = "be" config.instance_name = "Berlin" config.api_enabled = true config.use_terms = "=== Nutzungsbedingungen ===\nFür die Nutzung von LiquidFeedback, nachfolgend System genannt, unter der Domain lqpp.de gelten die Nutzungsbedingungen der Piratenpartei Deutschland Berlin. Jedem Piraten, der das System nutzt, sind diese bekannt; er erklärt sich durch Login in das System unter vorgenannter Domain mit ihnen einverstanden.\n\n# Jeder Pirat der Piratenpartei Deutschland Berlin, Nutzer genannt, erhält einen Zugang zum System.\n# Jeder Nutzer wird hiermit ausdrücklich darauf hingewiesen, dass **alle Einträge und Einstellungen**, die er vornimmt, aus Gründen der Nachvollziehbarkeit (Transparenz) für unbestimmte Zeit im System erhalten bleiben und auch **veröffentlicht** werden können. Dies gilt auch im Falle der Beendigung der Mitgliedschaft in der Piratenpartei Deutschland Berlin.\n# Der Nutzer muss einen frei wählbaren, öffentlich einsehbaren Namen angeben. Der Nutzer kann eine Pseudonymisierung seiner Einträge erreichen, indem er für den öffentlich einsehbaren Namen ein Pseudonym wählt.\n# Eine Anonymisierung ist prinzipiell nicht möglich.\n# Dem Nutzer ist bekannt, dass andere Nutzer die Datenbankinhalte zum Zwecke der Nachvollziehbarkeit herunterladen können und Änderungen des gewählten Namens öffentlich dokumentiert werden. Eine nachträgliche Pseudonymisierung von Daten ist daher nicht möglich.\n# Die Weitergabe jeglicher ab dem 1.7.2010 zum Download angebotenen oder ab diesem Zeitpunkt im System einsehbaren Daten mit Ausnahme der Inhalte von Benutzerprofilseiten ist jedem Nutzer gestattet.\n# Der Nutzer darf seine Zugangsdaten nicht an Dritte, auch nicht an andere Piraten, weitergeben. Er darf das System nur selbst persönlich nutzen. Vollmacht zur Stimmübertragung darf ausschließlich systemintern als Delegation erfolgen. Nutzer, die aus persönlichen Gründen das System nicht uneingeschränkt nutzen können, können Ausnahmen beim Vorstand der Piratenpartei Deutschland Berlin beantragen." config.download_dir = "/opt/liquid_feedback/download/be/" config.download_use_terms = "Es gelten die [https://lqpp.de/be/index/usage_terms.html Nutzungsbedingungen], insbesondere Punkt 6 ist zu beachten:\n\n6. Die Weitergabe jeglicher ab dem 1.7.2010 zum Download angebotenen oder ab diesem Zeitpunkt im System einsehbaren Daten mit Ausnahme der Inhalte von Benutzerprofilseiten ist jedem Nutzer gestattet." config.public_access_issue_head = function(issue) if issue.state == "new" then message = "Dieses Thema befindet sich in der Phase „Neu“. Dies bedeutet, dass es automatisch abgebrochen wird, wenn es nicht genug Unterstützer findet oder in die Diskussionsphase kommt, wenn es genug Unterstützer findet. <b>Dieser Antrag ist keine offizielle Aussage der Piratenpartei Deutschland oder der Piratenpartei Deutschland Berlin.</b>" elseif issue.state == "accepted" then message = "Dieses Thema befindet sich in der Phase „Diskussion“. Dies bedeutet, dass sich Antragstexte noch ändern können. Die nächste Phase dieses Themas ist „Eingefroren“. <b>Dieser Antrag ist keine offizielle Aussage der Piratenpartei Deutschland oder der Piratenpartei Deutschland Berlin.</b>" elseif issue.state == "frozen" then message = "Dieses Thema befindet sich in der Phase „Eingefroren“. Dies bedeutet, dass Antragstexte sich nicht mehr ändern können. Die Anträge die ausreichend Unterstützer finden werden in der nächsten Phase abgestimmt. <b>Dieser Antrag ist keine offizielle Aussage der Piratenpartei Deutschland oder der Piratenpartei Deutschland Berlin.</b>" elseif issue.state == "voting" then message = "Dieses Thema befindet sich in der Phase „Abstimmung“. Dies bedeutet, dass die Mitglieder des Landesverbandes Berlin Momentan darüber Abstimmen, ob sie den Antrag bzw. die Anträgen annehmen oder ablehnen. <b>Dieser Antrag ist keine offizielle Aussage der Piratenpartei Deutschland oder der Piratenpartei Deutschland Berlin.</b>" elseif issue.state == "cancelled" then message = "Dieses Thema ist „Abgebrochen“. Dies bedeutet, dass es nicht genug Unterstützter fand und an einem Quorum scheiterte. <b>Dieser Antrag ist keine offizielle Aussage der Piratenpartei Deutschland oder der Piratenpartei Deutschland Berlin.</b>" elseif issue.state == "finished" then message = "Dieses Thema wurde abgestimmt. Du kannst für jeden Antrag entnehmen welchen Platz er eingenommen hat und mit wievielen Stimmen dafür und dagegen votiert wurde. Dieses Votum kann, wenn der Antrag beim zuständigen Organ der PIRATEN Berlin eingebracht wird, Berücksichtigung finden. Diese Organe sind durch die Satzung gehalten, in LiquidFeedback positiv beschiedene Anträge vorrangig zu behandeln. <b>Solange kein Organ dem Antrag zugestimmt hat stellt er keine offizielle Aussage der Piratenpartei Deutschland oder der Piratenpartei Deutschland Berlin dar.</b>" end ui.tag{ tag = "div", attr = { class = "public_access_issue_head" }, content = function() slot.put(message) end } end config.public_access = "anonymous" execute.config("piraten-default") EOF
cat > /opt/liquid_feedback/webapp/config/piraten-bb.lua << EOF config.instance_prefix = "bb" config.instance_name = "Brandenburg" config.app_title = "LiquidFeedback Testinstanz (Piratenpartei Brandenburg)" config.use_terms = "=== Nutzungsbedingungen ===\nFür die Nutzung von LiquidFeedback, nachfolgend System genannt, unter der Domain lqpp.de gelten die Nutzungsbedingungen der Piratenpartei Deutschland LV Brandenburg. Jedem Piraten, der das System nutzt, sind diese bekannt; er erklärt sich durch Login in das System unter vorgenannter Domain mit ihnen einverstanden.\n\n# Jeder Pirat der Piratenpartei Deutschland LV Brandenburg, Nutzer genannt, erhält einen Zugang zum System.\n# Jeder Nutzer wird hiermit ausdrücklich darauf hingewiesen, dass **alle Einträge und Einstellungen**, die er vornimmt, aus Gründen der Nachvollziehbarkeit (Transparenz) für unbestimmte Zeit im System erhalten bleiben und auch **veröffentlicht** werden können. Dies gilt auch im Falle der Beendigung der Mitgliedschaft in der Piratenpartei Deutschland LV Brandenburg.\n# Der Nutzer muss einen frei wählbaren, öffentlich einsehbaren Namen angeben. Der Nutzer kann eine Pseudonymisierung seiner Einträge erreichen, indem er für den öffentlich einsehbaren Namen ein Pseudonym wählt.\n# Eine Anonymisierung ist prinzipiell nicht möglich.\n# Dem Nutzer ist bekannt, dass andere Nutzer die Datenbankinhalte zum Zwecke der Nachvollziehbarkeit herunterladen können und Änderungen des gewählten Namens öffentlich dokumentiert werden. Eine nachträgliche Pseudonymisierung von Daten ist daher nicht möglich.\n# Die Weitergabe jeglicher zum Download angebotenen oder im System einsehbaren Daten mit Ausnahme der Inhalte von Benutzerprofilseiten ist jedem Nutzer gestattet.\n# Der Nutzer darf seine Zugangsdaten nicht an Dritte, auch nicht an andere Piraten, weitergeben. Er darf das System nur selbst persönlich nutzen. Vollmacht zur Stimmübertragung darf ausschließlich systemintern als Delegation erfolgen. Nutzer, die aus persönlichen Gründen das System nicht uneingeschränkt nutzen können, können Ausnahmen beim Vorstand der Piratenpartei Deutschland Berlin beantragen." execute.config("piraten-default") EOF
cat > /opt/liquid_feedback/webapp/config/piraten-by.lua << EOF config.instance_prefix = "by" config.instance_name = "Bayern" config.use_terms = "=== Nutzungsbedingungen ===\nFür die Nutzung von LiquidFeedback, nachfolgend System genannt, unter der Domain lqpp.de gelten die Nutzungsbedingungen des Landesverbandes Bayern der Piratenpartei Deutschland. Jedem Pirat, der das System nutzt, sind diese bekannt; er erklärt sich durch Login in das System unter vorgenannter Domain mit ihnen einverstanden.\n\n# Jeder Pirat der Piratenpartei Berlin, Nutzer genannt, erhält einen Zugang zum System.\n# Jeder Nutzer wird hiermit ausrdrücklich darauf hingewiesen, dass alle Einträge und Einstellungen, die er vornimmt, aus Gründen der Nachvollziehbarkeit (Transparenz) für unbegrenzte Zeit im System erhalten bleiben und auch veröffentlicht werden können. Dies gilt auch im Fall des Parteiaustritts.\n# Der Nutzer kann eine Pseudonymisierung seiner Einträge durch Verwendung eines Pseudonyms erreichen.\n# Eine Anonymisierung ist prinzipiell nicht möglich.\n# Dem Nutzer ist bekannt, dass jeder Nutzer die Datenbankinhalte zum Zwecke der Nachvollziehbarkeit herunterladen kann. Eine nachträgliche Pseudonymisierung dieser Daten ist daher nicht möglich.\n# Die Weitergabe jeglicher datenschutzrelevanter Daten ist nur unter Vorraussetzung der Zustimmung aller betroffenen Nutzer gestattet. Ohne ausdrückliche Genehmigung ist die Veröffentlichung personenbezogener Daten untersagt.\n# Der Nutzer darf seine Zugangsdaten nicht an Dritte, auch nicht an andere Piraten, weitergeben. Er darf das System nur selbst persönlich nutzen. Vollmacht zur Stimmübertragung darf ausschließlich systemintern als Delegation erfolgen. Nutzer die aus persönlichen Gründen das System nicht uneingeschränkt nutzen können, können Ausnahmen beim Generalsekretär beantragen." execute.config("piraten-default") EOF
cat > /opt/liquid_feedback/webapp/config/piraten-hb.lua << EOF config.instance_prefix = "hb" config.instance_name = "Bremen" config.use_terms = "=== Nutzungsbedingungen ===\nFür die Nutzung von LiquidFeedback, nachfolgend System genannt, unter der Domain lqpp.de gelten die Nutzungsbedingungen des Landesverbandes Bremen der Piratenpartei Deutschland. Jedem Pirat, der das System nutzt, sind diese bekannt; er erklärt sich durch Login in das System unter vorgenannter Domain mit ihnen einverstanden.\n\n# Jeder Pirat der Piratenpartei Berlin, Nutzer genannt, erhält einen Zugang zum System.\n# Jeder Nutzer wird hiermit ausrdrücklich darauf hingewiesen, dass alle Einträge und Einstellungen, die er vornimmt, aus Gründen der Nachvollziehbarkeit (Transparenz) für unbegrenzte Zeit im System erhalten bleiben und auch veröffentlicht werden können. Dies gilt auch im Fall des Parteiaustritts.\n# Der Nutzer kann eine Pseudonymisierung seiner Einträge durch Verwendung eines Pseudonyms erreichen.\n# Eine Anonymisierung ist prinzipiell nicht möglich.\n# Dem Nutzer ist bekannt, dass jeder Nutzer die Datenbankinhalte zum Zwecke der Nachvollziehbarkeit herunterladen kann. Eine nachträgliche Pseudonymisierung dieser Daten ist daher nicht möglich.\n# Es ist dem Nutzer aus Gründen des Datenschutzes nicht gestattet Datenbankinhalte ganz oder teilweise Dritten zugänglich zu machen. Ausgenommen hiervon ist eine Weitergabe an Mitlieder der Piratenpartei Deutschland, die diesen Nutzungsbedingungen zustimmen.\n# Der Nutzer darf seine Zugangsdaten nicht an Dritte, auch nicht an andere Piraten, weitergeben. Er darf das System nur selbst persönlich nutzen. Vollmacht zur Stimmübertragung darf ausschließlich systemintern als Delegation erfolgen. Nutzer die aus persönlichen Gründen das System nicht uneingeschränkt nutzen können, können Ausnahmen beim Generalsekretär beantragen." config.api_enabled = true execute.config("piraten-default") EOF
cat > /opt/liquid_feedback/webapp/config/piraten-sh.lua << EOF config.instance_prefix = "sh" config.instance_name = "Schleswig-Holstein" config.use_terms = "=== Nutzungsbedingungen ===\nFür die Nutzung von LiquidFeedback, nachfolgend System genannt, unter der Domain lqpp.de gelten die Nutzungsbedingungen des Landesverbandes Schleswig-Holstein der Piratenpartei Deutschland. Jedem Pirat, der das System nutzt, sind diese bekannt; er erklärt sich durch Login in das System unter vorgenannter Domain mit ihnen einverstanden.\n\n# Jeder Pirat der Piratenpartei Berlin, Nutzer genannt, erhält einen Zugang zum System.\n# Jeder Nutzer wird hiermit ausrdrücklich darauf hingewiesen, dass alle Einträge und Einstellungen, die er vornimmt, aus Gründen der Nachvollziehbarkeit (Transparenz) für unbegrenzte Zeit im System erhalten bleiben und auch veröffentlicht werden können. Dies gilt auch im Fall des Parteiaustritts.\n# Der Nutzer kann eine Pseudonymisierung seiner Einträge durch Verwendung eines Pseudonyms erreichen.\n# Eine Anonymisierung ist prinzipiell nicht möglich.\n# Dem Nutzer ist bekannt, dass jeder Nutzer die Datenbankinhalte zum Zwecke der Nachvollziehbarkeit herunterladen kann. Eine nachträgliche Pseudonymisierung dieser Daten ist daher nicht möglich.\n# Es ist dem Nutzer aus Gründen des Datenschutzes nicht gestattet Datenbankinhalte ganz oder teilweise Dritten zugänglich zu machen. Ausgenommen hiervon ist eine Weitergabe an Mitlieder der Piratenpartei Deutschland, die diesen Nutzungsbedingungen zustimmen.\n# Der Nutzer darf seine Zugangsdaten nicht an Dritte, auch nicht an andere Piraten, weitergeben. Er darf das System nur selbst persönlich nutzen. Vollmacht zur Stimmübertragung darf ausschließlich systemintern als Delegation erfolgen. Nutzer die aus persönlichen Gründen das System nicht uneingeschränkt nutzen können, können Ausnahmen beim Generalsekretär beantragen." execute.config("piraten-default") EOF
cat > /opt/liquid_feedback/webapp/config/piraten-mv.lua << EOF config.instance_prefix = "mv" config.instance_name = "Mecklenburg-Vorpommern" config.use_terms = "=== Nutzungsbedingungen ===\nFür die Nutzung von LiquidFeedback, nachfolgend System genannt, unter der Domain lqpp.de gelten die Nutzungsbedingungen des Landesverbandes Mecklenburg-Vorpommern der Piratenpartei Deutschland. Jedem Pirat, der das System nutzt, sind diese bekannt; er erklärt sich durch Login in das System unter vorgenannter Domain mit ihnen einverstanden.\n\n# Jeder Pirat der Piratenpartei Berlin, Nutzer genannt, erhält einen Zugang zum System.\n# Jeder Nutzer wird hiermit ausrdrücklich darauf hingewiesen, dass alle Einträge und Einstellungen, die er vornimmt, aus Gründen der Nachvollziehbarkeit (Transparenz) für unbegrenzte Zeit im System erhalten bleiben und auch veröffentlicht werden können. Dies gilt auch im Fall des Parteiaustritts.\n# Der Nutzer kann eine Pseudonymisierung seiner Einträge durch Verwendung eines Pseudonyms erreichen.\n# Eine Anonymisierung ist prinzipiell nicht möglich.\n# Dem Nutzer ist bekannt, dass jeder Nutzer die Datenbankinhalte zum Zwecke der Nachvollziehbarkeit herunterladen kann. Eine nachträgliche Pseudonymisierung dieser Daten ist daher nicht möglich.\n# Es ist dem Nutzer aus Gründen des Datenschutzes nicht gestattet Datenbankinhalte ganz oder teilweise Dritten zugänglich zu machen. Ausgenommen hiervon ist eine Weitergabe an Mitlieder der Piratenpartei Deutschland, die diesen Nutzungsbedingungen zustimmen.\n# Der Nutzer darf seine Zugangsdaten nicht an Dritte, auch nicht an andere Piraten, weitergeben. Er darf das System nur selbst persönlich nutzen. Vollmacht zur Stimmübertragung darf ausschließlich systemintern als Delegation erfolgen. Nutzer die aus persönlichen Gründen das System nicht uneingeschränkt nutzen können, können Ausnahmen beim Generalsekretär beantragen." execute.config("piraten-default") config.public_access = "anonymous" EOF
cat > /opt/liquid_feedback/webapp/config/piraten-nw.lua << EOF config.instance_prefix = "nw" config.instance_name = "Nordrhein-Westfalen" config.use_terms = "=== Nutzungsbedingungen ===\nFür die Nutzung von LiquidFeedback, nachfolgend System genannt, unter der Domain lqpp.de gelten die Nutzungsbedingungen des Landesverbandes Nordrhein-Westfalen der Piratenpartei Deutschland. Jedem Pirat, der das System nutzt, sind diese bekannt; er erklärt sich durch Login in das System unter vorgenannter Domain mit ihnen einverstanden.\n\n# Jeder Pirat der Piratenpartei Berlin, Nutzer genannt, erhält einen Zugang zum System.\n# Jeder Nutzer wird hiermit ausrdrücklich darauf hingewiesen, dass alle Einträge und Einstellungen, die er vornimmt, aus Gründen der Nachvollziehbarkeit (Transparenz) für unbegrenzte Zeit im System erhalten bleiben und auch veröffentlicht werden können. Dies gilt auch im Fall des Parteiaustritts.\n# Der Nutzer kann eine Pseudonymisierung seiner Einträge durch Verwendung eines Pseudonyms erreichen.\n# Eine Anonymisierung ist prinzipiell nicht möglich.\n# Dem Nutzer ist bekannt, dass jeder Nutzer die Datenbankinhalte zum Zwecke der Nachvollziehbarkeit herunterladen kann. Eine nachträgliche Pseudonymisierung dieser Daten ist daher nicht möglich.\n# Es ist dem Nutzer aus Gründen des Datenschutzes nicht gestattet Datenbankinhalte ganz oder teilweise Dritten zugänglich zu machen. Ausgenommen hiervon ist eine Weitergabe an Mitlieder der Piratenpartei Deutschland, die diesen Nutzungsbedingungen zustimmen.\n# Der Nutzer darf seine Zugangsdaten nicht an Dritte, auch nicht an andere Piraten, weitergeben. Er darf das System nur selbst persönlich nutzen. Vollmacht zur Stimmübertragung darf ausschließlich systemintern als Delegation erfolgen. Nutzer die aus persönlichen Gründen das System nicht uneingeschränkt nutzen können, können Ausnahmen beim Generalsekretär beantragen." -- Namespace im Wiki noch NRW config.issue_discussion_url_func = function(issue) return "http://wiki.piratenpartei.de/NRW:LiquidFeedback_Themendiskussion/" .. issue.id end -- Ausnahme fuer About-Seite config.app_service_provider = 'Piratenpartei Deutschland Landesverband Berlin (PIRATEN Berlin)<br />Pflugstr. 9a<br />10115 Berlin<br /><br />E-Mail Support: <a href="mailto:support@lqpp.de">support@lqpp.de</a><br />E-Mail Administratoren: <a href="mailto:admins@lqpp.de">admins@lqpp.de</a><br /><br />Diskussion, Support & FAQ: <a href="http://wiki.piratenpartei.de/NRW:LiquidFeedback">http://wiki.piratenpartei.de/NRW:LiquidFeedback</a>' config.api_enabled = true execute.config("piraten-default") EOF
cat > /opt/liquid_feedback/webapp/config/piraten-hh.lua << EOF config.instance_prefix = "hh" config.instance_name = "Hamburg" config.api_enabled = true config.use_terms = "=== Nutzungsbedingungen ===\nFür die Nutzung von LiquidFeedback, nachfolgend System genannt, unter der Domain lqpp.de gelten die Nutzungsbedingungen des Landesverbandes Hamburg der Piratenpartei Deutschland. Jedem Pirat, der das System nutzt, sind diese bekannt; er erklärt sich durch Login in das System unter vorgenannter Domain mit ihnen einverstanden.\n\n# Jeder Pirat der Piratenpartei Berlin, Nutzer genannt, erhält einen Zugang zum System.\n# Jeder Nutzer wird hiermit ausrdrücklich darauf hingewiesen, dass alle Einträge und Einstellungen, die er vornimmt, aus Gründen der Nachvollziehbarkeit (Transparenz) für unbegrenzte Zeit im System erhalten bleiben und auch veröffentlicht werden können. Dies gilt auch im Fall des Parteiaustritts.\n# Der Nutzer kann eine Pseudonymisierung seiner Einträge durch Verwendung eines Pseudonyms erreichen.\n# Eine Anonymisierung ist prinzipiell nicht möglich.\n# Dem Nutzer ist bekannt, dass jeder Nutzer die Datenbankinhalte zum Zwecke der Nachvollziehbarkeit herunterladen kann. Eine nachträgliche Pseudonymisierung dieser Daten ist daher nicht möglich.\n# Es ist dem Nutzer aus Gründen des Datenschutzes nicht gestattet Datenbankinhalte ganz oder teilweise Dritten zugänglich zu machen. Ausgenommen hiervon ist eine Weitergabe an Mitlieder der Piratenpartei Deutschland, die diesen Nutzungsbedingungen zustimmen.\n# Der Nutzer darf seine Zugangsdaten nicht an Dritte, auch nicht an andere Piraten, weitergeben. Er darf das System nur selbst persönlich nutzen. Vollmacht zur Stimmübertragung darf ausschließlich systemintern als Delegation erfolgen. Nutzer die aus persönlichen Gründen das System nicht uneingeschränkt nutzen können, können Ausnahmen beim Generalsekretär beantragen." execute.config("piraten-default") EOF
cat > /opt/liquid_feedback/webapp/config/piraten-sn.lua << EOF config.instance_prefix = "sn" config.instance_name = "Sachsen" config.use_terms = "=== Nutzungsbedingungen ===\nFür die Nutzung von LiquidFeedback, nachfolgend System genannt, unter der Domain lqpp.de gelten die Nutzungsbedingungen des Landesverbandes Sachsen der Piratenpartei Deutschland. Jedem Pirat, der das System nutzt, sind diese bekannt; er erklärt sich durch Login in das System unter vorgenannter Domain mit ihnen einverstanden.\n\n# Jeder Pirat der Piratenpartei Berlin, Nutzer genannt, erhält einen Zugang zum System.\n# Jeder Nutzer wird hiermit ausrdrücklich darauf hingewiesen, dass alle Einträge und Einstellungen, die er vornimmt, aus Gründen der Nachvollziehbarkeit (Transparenz) für unbegrenzte Zeit im System erhalten bleiben und auch veröffentlicht werden können. Dies gilt auch im Fall des Parteiaustritts.\n# Der Nutzer kann eine Pseudonymisierung seiner Einträge durch Verwendung eines Pseudonyms erreichen.\n# Eine Anonymisierung ist prinzipiell nicht möglich.\n# Dem Nutzer ist bekannt, dass jeder Nutzer die Datenbankinhalte zum Zwecke der Nachvollziehbarkeit herunterladen kann. Eine nachträgliche Pseudonymisierung dieser Daten ist daher nicht möglich.\n# Es ist dem Nutzer aus Gründen des Datenschutzes nicht gestattet Datenbankinhalte ganz oder teilweise Dritten zugänglich zu machen. Ausgenommen hiervon ist eine Weitergabe an Mitlieder der Piratenpartei Deutschland, die diesen Nutzungsbedingungen zustimmen.\n# Der Nutzer darf seine Zugangsdaten nicht an Dritte, auch nicht an andere Piraten, weitergeben. Er darf das System nur selbst persönlich nutzen. Vollmacht zur Stimmübertragung darf ausschließlich systemintern als Delegation erfolgen. Nutzer die aus persönlichen Gründen das System nicht uneingeschränkt nutzen können, können Ausnahmen beim Generalsekretär beantragen." execute.config("piraten-default") config.api_enabled = true EOF
cat > /opt/liquid_feedback/webapp/config/piraten-st.lua << EOF config.instance_prefix = "st" config.instance_name = "Sachsen-Anhalt" config.use_terms = "=== Nutzungsbedingungen ===\nFür die Nutzung von LiquidFeedback, nachfolgend System genannt, unter der Domain lqpp.de gelten die Nutzungsbedingungen des Landesverbandes Sachsen-Anhalt der Piratenpartei Deutschland. Jedem Pirat, der das System nutzt, sind diese bekannt; er erklärt sich durch Login in das System unter vorgenannter Domain mit ihnen einverstanden.\n\n# Jeder Pirat der Piratenpartei Berlin, Nutzer genannt, erhält einen Zugang zum System.\n# Jeder Nutzer wird hiermit ausrdrücklich darauf hingewiesen, dass alle Einträge und Einstellungen, die er vornimmt, aus Gründen der Nachvollziehbarkeit (Transparenz) für unbegrenzte Zeit im System erhalten bleiben und auch veröffentlicht werden können. Dies gilt auch im Fall des Parteiaustritts.\n# Der Nutzer kann eine Pseudonymisierung seiner Einträge durch Verwendung eines Pseudonyms erreichen.\n# Eine Anonymisierung ist prinzipiell nicht möglich.\n# Dem Nutzer ist bekannt, dass jeder Nutzer die Datenbankinhalte zum Zwecke der Nachvollziehbarkeit herunterladen kann. Eine nachträgliche Pseudonymisierung dieser Daten ist daher nicht möglich.\n# Es ist dem Nutzer aus Gründen des Datenschutzes nicht gestattet Datenbankinhalte ganz oder teilweise Dritten zugänglich zu machen. Ausgenommen hiervon ist eine Weitergabe an Mitlieder der Piratenpartei Deutschland, die diesen Nutzungsbedingungen zustimmen.\n# Der Nutzer darf seine Zugangsdaten nicht an Dritte, auch nicht an andere Piraten, weitergeben. Er darf das System nur selbst persönlich nutzen. Vollmacht zur Stimmübertragung darf ausschließlich systemintern als Delegation erfolgen. Nutzer die aus persönlichen Gründen das System nicht uneingeschränkt nutzen können, können Ausnahmen beim Generalsekretär beantragen." -- Namespace im Wiki ist LSA config.issue_discussion_url_func = function(issue) return "http://wiki.piratenpartei.de/LSA:LiquidFeedback_Themendiskussion/" .. issue.id end config.api_enabled = true execute.config("piraten-default") config.public_access = "anonymous" EOF
cat > /opt/liquid_feedback/webapp/config/piraten-ni.lua << EOF config.instance_prefix = "ni" config.api_enabled = true config.instance_name = "Niedersachsen" config.use_terms = "=== Nutzungsbedingungen ===\nFür die Nutzung von LiquidFeedback, nachfolgend System genannt, unter der Domain lqpp.de gelten die Nutzungsbedingungen des Landesverbandes Niedersachsen der Piratenpartei Deutschland. Jedem Pirat, der das System nutzt, sind diese bekannt; er erklärt sich durch Login in das System unter vorgenannter Domain mit ihnen einverstanden.\n\n# Jeder Pirat der Piratenpartei Berlin, Nutzer genannt, erhält einen Zugang zum System.\n# Jeder Nutzer wird hiermit ausrdrücklich darauf hingewiesen, dass alle Einträge und Einstellungen, die er vornimmt, aus Gründen der Nachvollziehbarkeit (Transparenz) für unbegrenzte Zeit im System erhalten bleiben und auch veröffentlicht werden können. Dies gilt auch im Fall des Parteiaustritts.\n# Der Nutzer kann eine Pseudonymisierung seiner Einträge durch Verwendung eines Pseudonyms erreichen.\n# Eine Anonymisierung ist prinzipiell nicht möglich.\n# Dem Nutzer ist bekannt, dass jeder Nutzer die Datenbankinhalte zum Zwecke der Nachvollziehbarkeit herunterladen kann. Eine nachträgliche Pseudonymisierung dieser Daten ist daher nicht möglich.\n# Es ist dem Nutzer aus Gründen des Datenschutzes nicht gestattet Datenbankinhalte ganz oder teilweise Dritten zugänglich zu machen. Ausgenommen hiervon ist eine Weitergabe an Mitlieder der Piratenpartei Deutschland, die diesen Nutzungsbedingungen zustimmen.\n# Der Nutzer darf seine Zugangsdaten nicht an Dritte, auch nicht an andere Piraten, weitergeben. Er darf das System nur selbst persönlich nutzen. Vollmacht zur Stimmübertragung darf ausschließlich systemintern als Delegation erfolgen. Nutzer die aus persönlichen Gründen das System nicht uneingeschränkt nutzen können, können Ausnahmen beim Generalsekretär beantragen." execute.config("piraten-default") -- Namespace im Wiki noch NRW config.issue_discussion_url_func = function(issue) return "http://wiki.piratenpartei.de/NDS:LiquidFeedback_Themendiskussion/" .. issue.id end EOF
cat > /opt/liquid_feedback/webapp/config/piraten-int-br.lua << EOF config.instance_prefix = "int_br" config.instance_name = "Brasil" config.app_title = "LiquidFeedback (Partido Pirata do Brasil)" config.use_terms = "Aceito e respeito os termos de uso que recebi do Partido Pirata do Brasil no ato de recebimento do meu código de convite e cadastro no sistema." config.download_dir = "/opt/liquid_feedback/download/int_br" config.download_use_terms = "" execute.config("piraten-default") EOF
cat > /opt/liquid_feedback/webapp/config/piraten-int-ch.lua << EOF config.instance_prefix = "int_ch" config.instance_name = "Schweiz" config.use_terms = "=== Nutzungsbedingungen ===\nFür die Nutzung von LiquidFeedback, nachfolgend System genannt, unter der Domain lqpp.de gelten die Nutzungsbedingungen der Piratenpartei Schweiz. Jedem Pirat, der das System nutzt, sind diese bekannt; er erklärt sich durch Login in das System unter vorgenannter Domain mit ihnen einverstanden.\n\n# Jeder Pirat der Piratenpartei Schweiz, Nutzer genannt, erhält einen Zugang zum System.\n# Jeder Nutzer wird hiermit ausrdrücklich darauf hingewiesen, dass alle Einträge und Einstellungen, die er vornimmt, aus Gründen der Nachvollziehbarkeit (Transparenz) für unbegrenzte Zeit im System erhalten bleiben und auch veröffentlicht werden können. Dies gilt auch im Fall des Parteiaustritts.\n# Der Nutzer kann eine Pseudonymisierung seiner Einträge durch Verwendung eines Pseudonyms erreichen.\n# Eine Anonymisierung ist prinzipiell nicht möglich.\n# Dem Nutzer ist bekannt, dass jeder Nutzer die Datenbankinhalte zum Zwecke der Nachvollziehbarkeit herunterladen kann. Eine nachträgliche Pseudonymisierung dieser Daten ist daher nicht möglich.\n# Die Weitergabe jeglicher datenschutzrelevanter Daten ist nur unter Vorraussetzung der Zustimmung aller betroffenen Nutzer gestattet. Ohne ausdrückliche Genehmigung ist die Veröffentlichung personenbezogener Daten untersagt.\n# Der Nutzer darf seine Zugangsdaten nicht an Dritte, auch nicht an andere Piraten, weitergeben. Er darf das System nur selbst persönlich nutzen. Vollmacht zur Stimmübertragung darf ausschließlich systemintern als Delegation erfolgen. Nutzer die aus persönlichen Gründen das System nicht uneingeschränkt nutzen können, können Ausnahmen beim Vorstand beantragen." execute.config("piraten-default") EOF
cat > /opt/liquid_feedback/webapp/config/piraten-int-at.lua << EOF config.instance_prefix = "int_at" config.instance_name = "Österreich" config.use_terms = "=== Nutzungsbedingungen ===\nFür die Nutzung von LiquidFeedback, nachfolgend System genannt, unter der Domain lqpp.de gelten die Nutzungsbedingungen der Piratenpartei Österreichs. Jedem Pirat, der das System nutzt, sind diese bekannt; er erklärt sich durch Login in das System unter vorgenannter Domain mit ihnen einverstanden.\n\n# Jeder Pirat der Piratenpartei Österreichs, Nutzer genannt, erhält einen Zugang zum System.\n# Jeder Nutzer wird hiermit ausrdrücklich darauf hingewiesen, dass alle Einträge und Einstellungen, die er vornimmt, aus Gründen der Nachvollziehbarkeit (Transparenz) für unbegrenzte Zeit im System erhalten bleiben und auch veröffentlicht werden können. Dies gilt auch im Fall des Parteiaustritts.\n# Der Nutzer kann eine Pseudonymisierung seiner Einträge durch Verwendung eines Pseudonyms erreichen.\n# Eine Anonymisierung ist prinzipiell nicht möglich.\n# Dem Nutzer ist bekannt, dass jeder Nutzer die Datenbankinhalte zum Zwecke der Nachvollziehbarkeit herunterladen kann. Eine nachträgliche Pseudonymisierung dieser Daten ist daher nicht möglich.\n# Die Weitergabe jeglicher datenschutzrelevanter Daten ist nur unter Vorraussetzung der Zustimmung aller betroffenen Nutzer gestattet. Ohne ausdrückliche Genehmigung ist die Veröffentlichung personenbezogener Daten untersagt.\n# Der Nutzer darf seine Zugangsdaten nicht an Dritte, auch nicht an andere Piraten, weitergeben. Er darf das System nur selbst persönlich nutzen. Vollmacht zur Stimmübertragung darf ausschließlich systemintern als Delegation erfolgen. Nutzer die aus persönlichen Gründen das System nicht uneingeschränkt nutzen können, können Ausnahmen beim Vorstand beantragen." config.issue_discussion_url_func = function(issue) return "http://wiki.piratenpartei.at/" .. "LiquidFeedback_Themendiskussion/" .. issue.id end config.download_dir = "/opt/liquid_feedback/download/int_at" execute.config("piraten-default") EOF
SSL aktivieren
Leider konnte uns die Bundes-IT nicht wie vereinbart das piratenpartei.de-Wildcard-Zertifikat zur Verfügung stellen. Daher mussten wir uns kurzfristig mit einem preiswerten Ersatz begnügen, ein Domain-validiertes GoDaddy Cert. Leider konnte kein Verantwortlicher der Bundes-IT zeitnah erreicht werden, um die Domain-Validierung zu bestätigen. Daher sind wir statt liquid-berlin.piratenpartei.de zu nutzen auf die Domain lqpp.de ausgewichen.
mkdir /etc/lighttpd/ssl
Zertifikat nach /etc/lighttpd/ssl/lqdd.de.pem kopieren! Cert-Chain-Bundle nach /etc/lighttpd/ssl/goDaddyBundle.crt kopieren!
chmod 600 lqpp.de.pem chmod 600 goDaddyBundle.crt vi /etc/lighttpd/conf-available/10-ssl.conf $SERVER["socket"] == "0.0.0.0:443" { ssl.engine = "enable" ssl.pemfile = "/etc/lighttpd/ssl/lqpp.de.pem" ssl.ca-file = "/etc/lighttpd/ssl/goDaddyBundle.crt"
} lighttpd-enable-mod ssl
Admin Kennwort setzen
su - www-data cd /opt/liquid_feedback/webapp ../webmcp/framework/bin/webmcp_shell piraten member = Member:by_id(1) member:set_password("sesam") member:save() CTRL-d exit
Webserver starten
/etc/init.d/lighttpd restart
Einloggen als admin und Passwort neu setzen!
MTA installieren und konfigurieren
apt-get install exim4 courier-imap-ssl dpkg-reconfigure exim4-config -> internet site; mail is sent and received directly using SMTP -> System mail name: lqpp.de -> IP-addresses to listen on: [empty] (means any interface) -> Other destinations: lqpp.de -> Domains to relay mail for: [empty] -> Machines to relay mail for: [empty] -> Keep number of DNS-queries minimal: No -> Delivery method for local mail: Maildir -> Split configuration: No -> Root and postmater receipient: admins adduser admins adduser support
SSL-PEM-File nach /etc/courier/imapd.pem kopieren
Relaying für via TLS/PLAIN authentifizierte Benutzer erlauben
(Single config file vorausgesetzt)
/usr/share/doc/exim4-base/examples/exim-gencert
/etc/exim4/exim.key und /etc/exim4/exim.crt durch korrektes Zertifikat ersetzen
In /etc/exim4/exim4.conf.template vor ### end main/01_exim4-config_listmacrosdefs folgende 2 Zeilen einfügen:
# enable TLS MAIN_TLS_ENABLE = true
In /etc/exim4/exim4.conf.template Kommentarzeichen des Abschnitts plain_server entfernen. Anschließend /etc/exim4/passwd anlegen:
/usr/share/doc/exim4/examples/exim-adduser chown root:Debian-exim /etc/exim4/passwd chmod 640 /etc/exim4/passwd
Software updaten
WebMCP updaten
WEBMCP_VERSION=1.1.0 cd /root/install wget http://www.public-software-group.org/pub/projects/webmcp/v$WEBMCP_VERSION/webmcp-v$WEBMCP_VERSION.tar.gz cd /opt/liquid_feedback/ tar xvzf /root/install/webmcp-v$WEBMCP_VERSION.tar.gz cd webmcp-v$WEBMCP_VERSION # Da wir ein 64 Bit System haben Makefile.options anpassen: sed -i -e 's/-O2/-fPIC -O2/' Makefile.options make cd .. rm webmcp ln -s webmcp-v$WEBMCP_VERSION webmcp
RocketWiki updaten
ROCKETWIKI_VERSION=0.2 wget http://www.public-software-group.org/pub/projects/rocketwiki/liquid_feedback_edition/v$ROCKETWIKI_VERSION/rocketwiki-lqfb-v$ROCKETWIKI_VERSION.tar.gz tar xvzf rocketwiki-lqfb-v$ROCKETWIKI_VERSION.tar.gz cd rocketwiki-lqfb-v$ROCKETWIKI_VERSION make cp rocketwiki-lqfb rocketwiki-lqfb-compat /opt/liquid_feedback/rocketwiki/
LiquidFeedback Core updaten
# auf keinen fall vergessen: vorher backup! export LFCORE_VERSION=v1.2.7 cd /root/install wget http://www.public-software-group.org/pub/projects/liquid_feedback/backend/$LFCORE_VERSION/liquid_feedback_core-$LFCORE_VERSION.tar.gz tar xvzf liquid_feedback_core-$LFCORE_VERSION.tar.gz cd liquid_feedback_core-$LFCORE_VERSION make mkdir -p /opt/liquid_feedback/tmp chown www-data /opt/liquid_feedback/tmp cd /opt/liquid_feedback/tmp
INSTANCE=be #bb by hb hh mv ni nw sh sn st int-br export DBNAME=liquid_feedback_$INSTANCE export TMPFILE=tmp_$INSTANCE.sql su www-data # wenn noetig alte db vorbereiten fuer update psql --set ON_ERROR_STOP=1 $DBNAME -f /root/install/liquid_feedback_core-$LFCORE_VERSION/update/prepare-beta25-beta26.sql pg_dump --disable-triggers -a -D $DBNAME > $TMPFILE dropdb ${DBNAME}_save echo "alter database $DBNAME rename to ${DBNAME}_save;" | psql template1 createdb $DBNAME psql --set ON_ERROR_STOP=1 $DBNAME -f /root/install/liquid_feedback_core-$LFCORE_VERSION/core.sql exit su postgres psql --set ON_ERROR_STOP=1 $DBNAME -f $TMPFILE exit
# jetzt alles ueberpruefen!!!1!! su www-data rm tmp.sql
Liquid Feedback Frontend per mercurial
cd /opt/liquid_feedback/ hg clone http://www.public-software-group.org/mercurial/liquid_feedback_frontend liquid_feedback_frontend-current
Liquid Feedback Frontend per mercurial updaten
cd /opt/liquid_feedback/liquid_feedback_frontend-current hg pull -u hg update
Liquid Feedback Frontend updaten (deprecated)
LF_VERSION=beta10 cd /root/install wget http://www.public-software-group.org/pub/projects/liquid_feedback/frontend/$LF_VERSION/liquid_feedback_frontend-$LF_VERSION.tar.gz cd /opt/liquid_feedback tar xvzf /root/install/liquid_feedback_frontend-$LF_VERSION.tar.gz cd liquid_feedback_frontend-$LF_VERSION chown www-data tmp cd fastpath vi getpic.c #define GETPIC_DEFAULT_AVATAR "/opt/liquid_feedback/webapp/static/avatar.jpg" make rm webapp ln -s liquid_feedback_frontend-$LF_VERSION webapp
Anwendung konfigurieren: [BE:Liquid_Democracy_Test/Serverkonfiguration#Anwendung_konfigurieren]
Wichtiger Hinweis: The image accelerator fastpath/getpic.c is broken since beta1. Do not enable the fastpath mechanism for images in your config file, or copy the getpic.c file from alpha5, which works fine!
Durchgeführte Updates
2010-01-02 (Björn, Jbe): WebMCP 1.0.5, Core beta12, Frontend beta2
2010-01-02 (Björn, Jbe): Core beta13, Frontend beta3 & beta4
2010-01-04 (Björn, Jbe): Core beta14, Frontend beta5, im Rahmen des Updates wurde folgender manueller DB-Eingriff vorgenommen:
update member set created = (select used from invite_code where invite_code.member_id = member.id); update member set created = '2010-01-01' where id = 1;
Anmerkung: In Anschluss an das Update haben wir vergessen, den Auszählungsprozess (lf_update) wieder zu starten. Daher fand für ca. 2 Stunden kein Update der Unterstützer statt, und Anträge konnten keinen Statuswechsel vollziehen. Der Hintergrundprozess läuft wieder seit 2010-01-05 01:57:12.
2010-01-11 (Björn, Jbe): Core beta15, Frontend beta6
2010-01-19 (Björn): Frontend hotfix eingespielt zur Vermeidung der Anzeige von Initatoren in der Wahlmaske, die die Einladung zum Initiator nicht angenommen haben.
2010-01-22 (Björn): Frontend hotfix eingespielt (HTML-Kodierung der Postanschrift des Mitglied)
2010-01-22 (Björn, Jbe): RocketWiki 0.2, WebMCP 1.0.6, Core beta17, Frontend beta7, Frontend beta8
2010-01-23 (Björn, Jbe): Core beta18
2010-01-25 (Björn, Jbe): Frontend hotfix eingespielt zur Verhinderung der Abstimmung ueber zurueckgezogene Initiativen, (Björn): Frontend hotfix eingespielt: Fehlende Ereignisse in der Zeitachse bei gleichzeitig gewaehlten Filtern Unterstuetzer und Potentieller Unterstuetzer
2010-02-02 (Björn, Jbe): Frontend beta9 eingespielt, Frontend hotfix eingespielt zur Verhinderung der Abstimmung ueber zurueckgezogene Initiativen, Frontend hotfix eingespielt: Fehlende Ereignisse in der Zeitachse bei gleichzeitig gewaehlten Filtern Unterstuetzer und Potentieller Unterstuetzer
2010-02-21 (Björn, Jbe): Core beta21, Frontend beta10, WebMCP 1.0.8 eingespielt. Im Initiativen-Listing name durch shortened_name ersetzt. Frontend beta11 eingespielt.
2010-02-24 (Björn): Frontend beta12, Frontend auf mercurial umgestellt. Frontend update auf beta12.1
2010-03-02 (Björn): Frontend update auf beta12.2 (cfc2b9aeca91)
2010-03-04 (Jbe): Backend-Update auf beta23 (damit kritischer Bug bezüglich Stimmenauszählung bei Anregungen behoben)
2010-03-07 (Björn, Jbe): Frontend beta12.3 (ca3a0552927f), Frontend beta13 (53a45356c107)
2010-03-15 (Björn): Frontend beta14 (aaba4d28dd53)
2010-03-26 (Björn): WebMCP 1.0.9, Frontend beta15 (a4e6f30fa84d)
2010-03-26 (Jbe): Backend-Update auf beta26
2010-04-22 (Jbe): Backend-Update auf v1.0.2 (via 1.0.0, 1.0.1)
2010-04-22 (Björn): WebMCP 1.1.0, Frontend beta17 (8e11fb45c688)
2010-04-23 (Björn): Frontend beta18 (c553898f64cb)
2010-04-27 (Björn): pt_br Sprachpaket Server-lokal hinzugefügt
2010-05-05 (Björn): Vorstandsbeschlusses bzgl. Nutzungsbedingungen technisch umgesetzt.
2010-07-28 (Björn) Frontend beta23, Backend 1.2.3
2010-08-30 (Björn) Frontend beta27, Backend 1.2.6, Backend 1.2.7
2010-09-08 (Jbe) Backend 1.2.8
2010-11-16 (Björn) Backend 1.3.0, Frontend beta30
Invite-Codes hinzufügen
Hierfür habe ich (Jbe) es ein kleines Hilfsprogramm geschrieben, welches auf deepthought im Verzeichnis /root/install/lf_piraten_utils liegt. Bischof hat sich eine Kopie davon gemacht. Ist man im richtigen Verzeichnis, kann man folgendermaßen Einladungscodes erzeugen:
./codegen.lua berlin/invitecodes.YYYY-MM-DD.NN.txt berlin/invitecodes.YYYY-MM-DD.NN.sql 854 su www-data psql liquid_feedback \i berlin/invitecodes.YYYY-MM-DD.NN.sql \q exit
TODOs
- SSL-Zertifikat installieren (auch fuer exim und courier!)
- lf_export als Cronjob einrichten und Datenbankdumps per HTTP veröffentlichen