root/feedmelinks/_config/parse-config.xsl

Revision 1405, 3.9 kB (checked in by jm3, 2 years ago)

updated configuration setup script to also build our crontab file, so now there are like, ZERO passwords or paths coded anywhere

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
Line 
1 <?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
2 <!--
3         Reads in a servers.xml config file and spits out application server configs
4         in formats that all the different rube-goldberg-esque spinning gears need:
5                 perl,
6                 sh,
7                 php,
8                 etc.
9 -->
10 <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
11         <xsl:output method="text" />
12
13         <xsl:template match="/">
14
15                 <!--
16
17                         each "mode" parses servers.xml and spits it out in a different native format,
18                         so we can quickly add new perl, php, sh, etc scripts that use the global config values
19                         without ever hard-coding passwords anywhere. cool.
20
21                 -->
22                 <xsl:choose>
23
24                         <xsl:when test="$mode = 'php'">&lt;%
25 function get_env() {
26         return "<xsl:value-of select="$server-name" />";
27 }
28                                 <xsl:for-each select="/servers/server[@name=$server-name]/@*">
29 function get_<xsl:value-of select="translate(name(.), '-', '_')" />() {
30         return "<xsl:value-of select="." />";
31 }
32                                 </xsl:for-each>
33                                 <xsl:call-template name="CRLF" />
34 %&gt;</xsl:when>
35
36                         <xsl:when test="$mode = 'crontab'">
37 # This file is autogenerated by _config/parse-config.xsl
38 # DO NOT EDIT! or your changes will be blown away the next time someone runs bin/configure.sh
39 # instead, modify the configuration values in _config/server.xml
40
41 PATH=/bin:/usr/bin:/usr/local/bin:<xsl:value-of select="/servers/server[@name=$server-name]/@webserver-root"/>/bin
42 MAILTO=<xsl:value-of select="/servers/server[@name=$server-name]/@maintainer-email"/>
43 ADMIN_USER=<xsl:value-of select="/servers/server[@name=$server-name]/@admin-user"/>
44 ADMIN_PASSWORD=<xsl:value-of select="/servers/server[@name=$server-name]/@admin-user-password"/>
45 WEBSERVER_ROOT=<xsl:value-of select="/servers/server[@name=$server-name]/@webserver-root"/>
46 SITE=<xsl:value-of select="/servers/server[@name=$server-name]/@domain"/>
47
48         <xsl:call-template name="CRLF" />
49         <xsl:call-template name="CRLF" />
50 </xsl:when>
51
52                         <xsl:when test="$mode = 'sh'">
53 # This file is autogenerated by _config/parse-config.xsl
54 # DO NOT EDIT! or your changes will be blown away the next time someone runs bin/configure.sh
55
56 function get_env () {
57         echo "<xsl:value-of select="$server-name" />"
58 }
59                                 <xsl:for-each select="/servers/server[@name=$server-name]/@*">
60 function get_<xsl:value-of select="translate(name(.), '-', '_')" /> () {
61         echo "<xsl:value-of select="." />";
62 }
63                                 </xsl:for-each>
64                         </xsl:when>
65
66                         <xsl:when test="$mode = 'perl'">
67 sub get_env {
68         return "<xsl:value-of select="$server-name" />"
69 }
70                                 <xsl:for-each select="/servers/server[@name=$server-name]/@*">
71 sub get_<xsl:value-of select="translate(name(.), '-', '_')" /> {
72         return '<xsl:value-of select="." />';
73 }
74                                 </xsl:for-each>
75 1; # modules must return a true value
76                         </xsl:when>
77
78                         <xsl:when test="$mode = 'htaccess'">
79                                 <xsl:copy-of select="/servers/global/apache-config/text()" />
80                                 <xsl:copy-of select="/servers/server[@name=$server-name]/apache-config/text()" />
81                                 <xsl:call-template name="CRLF" />
82                         </xsl:when>
83
84                         <xsl:when test="$mode = 'domain'">
85                                 <xsl:choose>
86                                         <xsl:when test="/servers/server[@name=$server-name]">
87                                                 <xsl:variable name="port" select="/servers/server[@name=$server-name]/@port"/>
88                                                 <xsl:value-of select="/servers/server[@name=$server-name]/@domain" /><xsl:if test="$port != ''">:<xsl:value-of select="$port" /></xsl:if>
89                                                 <xsl:call-template name="CRLF" />
90                                         </xsl:when>
91                                         <xsl:otherwise>FML_NO_SUCH_SERVER<xsl:call-template name="CRLF" />
92                                         </xsl:otherwise>
93                                 </xsl:choose>
94                         </xsl:when>
95
96                         <xsl:when test="$mode = 'atom'">
97                                 <xsl:for-each select="/servers/server[@name=$server-name]/@*">
98                                         <xsl:if test="name(.) = $atom">
99                                                 <xsl:value-of select="." />
100                                         </xsl:if>
101                                 </xsl:for-each>
102                                 <xsl:call-template name="CRLF" />
103                         </xsl:when>
104
105                         <xsl:otherwise>
106                                 Error: Unknown mode passed to parse-config.xsl
107                         </xsl:otherwise>
108                 </xsl:choose>
109
110         </xsl:template>
111
112         <xsl:template name="CRLF">
113                 <xsl:text>
114 </xsl:text>
115         </xsl:template>
116
117 </xsl:stylesheet>
118
Note: See TracBrowser for help on using the browser.