
cherokee at cherokee-project
Oct 23, 2009, 9:15 AM
Post #1 of 1
(113 views)
Permalink
|
|
[3746] cherokee/trunk/admin: Adds ColdFusion Wizard
|
|
Revision: 3746 http://svn.cherokee-project.com/changeset/3746 Author: taher Date: 2009-10-23 18:15:31 +0200 (Fri, 23 Oct 2009) Log Message: ----------- Adds ColdFusion Wizard Modified Paths: -------------- cherokee/trunk/admin/Makefile.am cherokee/trunk/admin/static/images/wizards/Makefile.am Added Paths: ----------- cherokee/trunk/admin/Wizard_ColdFusion.py cherokee/trunk/admin/static/images/wizards/coldfusion.png Modified: cherokee/trunk/admin/Makefile.am =================================================================== --- cherokee/trunk/admin/Makefile.am 2009-10-22 16:22:42 UTC (rev 3745) +++ cherokee/trunk/admin/Makefile.am 2009-10-23 16:15:31 UTC (rev 3746) @@ -135,7 +135,8 @@ Wizard_Alfresco.py \ Wizard_Glassfish.py \ Wizard_uWSGI.py \ -Wizard_Mono.py +Wizard_Mono.py \ +Wizard_ColdFusion.py endif adminpy_DATA = $(admin_data) Added: cherokee/trunk/admin/Wizard_ColdFusion.py =================================================================== --- cherokee/trunk/admin/Wizard_ColdFusion.py (rev 0) +++ cherokee/trunk/admin/Wizard_ColdFusion.py 2009-10-23 16:15:31 UTC (rev 3746) @@ -0,0 +1,187 @@ +""" +ColdFussion wizard. + +Last update: +* Cherokee 0.99.25 +* Adobe ColdFusion 9 +""" +import validations +import urllib + +from config import * +from util import * +from Page import * +from Wizard import * + +# For gettext +N_ = lambda x: x + +NOTE_VSRV_NAME = N_("Name of the new domain that will be created.") +NOTE_SOURCE = N_('The pair IP:port of the server running ColdFusion. You can add more later to have the load balanced.') +NOTE_WEB_DIR = N_("Web folder under which Coldfusion will be accessible.") +ERROR_NO_SRC = N_("ColdFusion is not running on the specified host.") + +SOURCE = """ +source!%(src_num)d!env_inherited = 0 +source!%(src_num)d!type = host +source!%(src_num)d!nick = ColdFusion %(src_num)d +source!%(src_num)d!host = %(new_source)s +""" + +CONFIG_VSRV = SOURCE + """ +%(vsrv_pre)s!nick = %(new_host)s +%(vsrv_pre)s!document_root = /dev/null + +%(vsrv_pre)s!rule!1!match = default +%(vsrv_pre)s!rule!1!encoder!gzip = 1 +%(vsrv_pre)s!rule!1!handler = proxy +%(vsrv_pre)s!rule!1!handler!balancer = ip_hash +%(vsrv_pre)s!rule!1!handler!balancer!source!1 = %(src_num)d +%(vsrv_pre)s!rule!1!handler!in_allow_keepalive = 1 +%(vsrv_pre)s!rule!1!handler!in_preserve_host = 1 +""" + +""" +vserver!120!rule!100!handler!balancer = ip_hash +vserver!120!rule!100!handler!balancer!source!1 = 15 +vserver!120!rule!100!handler!in_allow_keepalive = 1 +vserver!120!rule!100!handler!in_preserve_host = 1 +vserver!120!rule!100!match = default +vserver!120!rule!100!match!final = 1 +""" + +CONFIG_RULES = SOURCE + """ +%(rule_pre)s!match = directory +%(rule_pre)s!match!directory = %(webdir)s +%(rule_pre)s!encoder!gzip = 1 +%(rule_pre)s!handler = proxy +%(rule_pre)s!handler!balancer = ip_hash +%(rule_pre)s!handler!balancer!source!1 = %(src_num)d +%(rule_pre)s!handler!in_allow_keepalive = 1 +%(rule_pre)s!handler!in_preserve_host = 1 +""" + +def is_coldfusion_host (host): + try: + cf_host = urllib.urlopen("http://%s" % host) + except: + raise ValueError, _(ERROR_NO_SRC) + + headers = str(cf_host.headers).lower() + cf_host.close() + if not "jrun" in headers: + raise ValueError, _(ERROR_NO_SRC) + return host + +DATA_VALIDATION = [. + ("tmp!wizard_coldfusion!new_host", (validations.is_new_host, 'cfg')), + ('tmp!wizard_coldfusion!new_source', validations.is_information_source), + ('tmp!wizard_coldfusion!new_source', is_coldfusion_host) +] + +class Wizard_VServer_ColdFusion (WizardPage): + ICON = "coldfusion.png" + DESC = _("New virtual server to proxy a ColdFusion host.") + + def __init__ (self, cfg, pre): + WizardPage.__init__ (self, cfg, pre, + submit = '/vserver/wizard/ColdFusion', + id = "ColdFusion_Page1", + title = _("ColdFusion Wizard"), + group = _(WIZARD_GROUP_LANGS)) + + def show (self): + return True + + def _render_content (self, url_pre): + txt = '<h1>%s</h1>' % (self.title) + + txt += '<h2>New Virtual Server</h2>' + table = TableProps() + self.AddPropEntry (table, _('New Host Name'), 'tmp!wizard_coldfusion!new_host', _(NOTE_VSRV_NAME), value="coldfusion.example.com") + txt += self.Indent(table) + + txt += '<h2>ColdFusion</h2>' + table = TableProps() + self.AddPropEntry (table, _('Host'), 'tmp!wizard_coldfusion!new_source', _(NOTE_SOURCE), value="127.0.0.1:8500") + txt += self.Indent(table) + + txt += '<h2>Logging</h2>' + txt += self._common_add_logging() + + form = Form (url_pre, add_submit=True, auto=False) + return form.Render(txt, DEFAULT_SUBMIT_VALUE) + return txt + + def _op_apply (self, post): + # Store tmp, validate and clean up tmp + self._cfg_store_post (post) + + self._ValidateChanges (post, DATA_VALIDATION) + if self.has_errors(): + return + + self._cfg_clean_values (post) + + # Incoming info + new_host = post.pop('tmp!wizard_coldfusion!new_host') + new_source = post.pop('tmp!wizard_coldfusion!new_source') + + # Locals + vsrv_pre = cfg_vsrv_get_next (self._cfg) + src_num, src_pre = cfg_source_get_next (self._cfg) + + # Add the new rules + config = CONFIG_VSRV % (locals()) + self._apply_cfg_chunk (config) + self._common_apply_logging (post, vsrv_pre) + + +class Wizard_Rules_ColdFusion (WizardPage): + ICON = "coldfusion.png" + DESC = _("New directory to proxy a Coldfusion host.") + + def __init__ (self, cfg, pre): + WizardPage.__init__ (self, cfg, pre, + submit = '/vserver/%s/wizard/ColdFusion'%(pre.split('!')[1]), + id = "Coldfusion_Page1", + title = _("ColdFusion Wizard"), + group = _(WIZARD_GROUP_LANGS)) + + def show (self): + return True + + def _render_content (self, url_pre): + txt = '<h1>%s</h1>' % (self.title) + + txt += '<h2>ColdFusion</h2>' + table = TableProps() + self.AddPropEntry (table, _('Web Directory'), 'tmp!wizard_coldfusion!new_webdir', _(NOTE_WEB_DIR), value="/coldfusion") + self.AddPropEntry (table, _('Host'), 'tmp!wizard_coldfusion!new_source', _(NOTE_SOURCE), value="127.0.0.1:8500") + txt += self.Indent(table) + + form = Form (url_pre, add_submit=True, auto=False) + return form.Render(txt, DEFAULT_SUBMIT_VALUE) + return txt + + def _op_apply (self, post): + # Store tmp, validate and clean up tmp + self._cfg_store_post (post) + + self._ValidateChanges (post, DATA_VALIDATION) + if self.has_errors(): + return + + self._cfg_clean_values (post) + + # Incoming info + webdir = post.pop('tmp!wizard_coldfusion!new_webdir') + new_source = post.pop('tmp!wizard_coldfusion!new_source') + + # Locals + rule_num, rule_pre = cfg_vsrv_rule_get_next (self._cfg, self._pre) + src_num, src_pre = cfg_source_get_next (self._cfg) + + # Add the new rules + config = CONFIG_RULES % (locals()) + self._apply_cfg_chunk (config) Property changes on: cherokee/trunk/admin/Wizard_ColdFusion.py ___________________________________________________________________ Name: svn:mergeinfo + Modified: cherokee/trunk/admin/static/images/wizards/Makefile.am =================================================================== --- cherokee/trunk/admin/static/images/wizards/Makefile.am 2009-10-22 16:22:42 UTC (rev 3745) +++ cherokee/trunk/admin/static/images/wizards/Makefile.am 2009-10-23 16:15:31 UTC (rev 3746) @@ -29,7 +29,8 @@ wordpress.png \ zend.png \ uwsgi.png \ -mono.png +mono.png \ +coldfusion.png EXTRA_DIST = \ $(wizards_DATA) Added: cherokee/trunk/admin/static/images/wizards/coldfusion.png =================================================================== --- cherokee/trunk/admin/static/images/wizards/coldfusion.png (rev 0) +++ cherokee/trunk/admin/static/images/wizards/coldfusion.png 2009-10-23 16:15:31 UTC (rev 3746) @@ -0,0 +1,16 @@ +\x89PNG + + +IHDR 2 2 i8\xB8' sRGB \xAE\xCE\xE9 bKGD \xFF \xFF \xFF\xA0\xBD\xA7\x93 \xFBIDATh\xDE\xED\x99y\x8C]U\xC7?\xE7\xDC\xFBޛδ0--\xA5\xCBP +\x94P\xA4U D@ +\x84\xB0'\x84\xA0\x82$,ƥ\x98( +q\x8B\xA0A"K\@0X#eIR\xF8\xD9\xC4a\x91ER\x86*\x83t\xA3\x9D\xF5\xBD{\xEF\xD9~\xFEq\xDF{\xF3\xDE̛\xE9*\xD3_\xF2^\xDEr\xCF\xF9\x9D\xDF\xF6\xFD-& "\xD2\x{8C8835}V1\x80\xF7\x96\x8B\xEFz\x869\x93KО|d\xC1ܑ'\xCB\xE5\xB2T\x92L\x86+e9\xE6\x82+\xA5\.@0T\xE6\xC2\xEB\xEEc\xC1\xAC=\xB8\xFF'\x970\)\x8F\xF0\\xDD\xF3\xA6(\xA5\xEA\xFC 췿b\xBB\xA8\xA5/\xBC\xF0B~\xC4s\xDE/W\xF1\xB5c\xA2\xABF \xFF\x98t\xF0\xF7n\xB9\xE8x\x96\xFDb%\xFD7\xB0h\xCE\xD4|\xAB\xB5\xEB6\xC8)߽c\x8F\s\xFF\xEE}\xA7\xF5\xB1\x87\xF9/QAj/\x91\xC6\xEF!\xF1\xDEKww\xB7 u\xA90\xCEr\xF1\xCF\xEEa\xE5_\xDF \xB3\x86̦\x9C\xFD\xD3?\xB1i0\xE5\xDDMCX\xEF\xEAꋒ\xF20\xE6\xCC\xE2\xEA;$KR\x8Aq\x81 +k70\xBDC\xD3\xD9I\x924k\xE0\xEDwz]\xDFI)\xC1#DDi\xDE۰\x91%K\x96\xE4\x8E\xB0i\xE3{\x8C\xB2\xD2\x9A\xBA{'\xEF\xA9\x9A\x9Ak\x8F\x9A\xA2\xD1c\x95R-\xE5\xA9\xFDV\x8D \x8FR\xC2O\x97\xAF\xE2MS\xC0;\xE1\xB6\xF3\x8F\xA3{u/\xCE9>\xB6p^\xF3&\xA9\xC9$\xCB29\xF7\xFA$5\x99\xA4&\x93\x9C|\xFE\xDA\xF2\xCE\xC61\x C6H\x9A\xA6#\x96\xF7\xD6E\x8A\xA1r\x82\xF7>\xE7$Y\x85s\xBE}-\xD6;\xBC\xF7#G2\xC6`\x8C!Td\xB8\x9C\xE0U\xC6@_?\xDFpi\x9A\x81V#\xAC\xB5\x88\x82;\xBF~:G|\xF9:\x94\xBF\xF6K\xF4m\xDA\xC0P%i:\xBF\xE8\xED\xEDQ\x80hPa\\xD5\xEE=\xB7+Wkj\xB2\xBAJ[\xA9\xB2\x91b\x80,I1ƌo\xDDql\xF3\xA5Z\x98\xEFՠ\xE1\x95W^\x91&]\x8D\xA7Эq\xFC\xF1\xA8Q\xF7\xF1(I\xEA\xB5\xD6(\xA5xm\xF5\xBF\xB8\xEA\xB7\xA1\xDA:0\xC9 \x9E\xFA>\xF5\xD1\xB6\x89a/U}v\xFD\xE6A\xAE\xB8\xF7yRc\xB9\xE9\xB2/\xD0\xD9\xD1\xC0\xBA~\x83֚\xB3oXA\xA9P\xC4A\xE1\xA8e\xDCw\xF9\xE9\xC60mf\xE2=J\xA0\xADT\xE0\x92\xDBë\x88;/>\xEF\x85\xCC8D\x84\xA9\xED\xD8\xC4Ⓦ嗞\x8E\xB1y\xAC\xA5\x99\xAD3hTugl5l\xC1dTL`\xD5o\xB0\xF4\xA0yh\xD7OW\x885\xE5r\x99\xB68\xE2\xD4,G\xC4\xF2\xF1\x85sXv\xCARDQ\xA8\xABv\xA2\xCC8n]vG_r?\xFE}?\xFD\xD72I,\xCE\xA2\x8E\xC9<~\xF3\xF4mbHkV^u\x99\x90\\xDAq!\xB4F\xEF\xAE[+j\x94\xFD\xB4\x86b\xA1\x80\xD6\xEF=\xC6Z\xBC:&\xB5#\xA2HӴ\xE1ᑈ]\xBFv\x8B/Vc$\xA9-\x{DE95}4kᢃzظ\x86\ x9FWv\xD1\xFF)\xBD\xFAꫲ3\xC8{/!i\x8CY\x96\xED\xD0!%\xF7ۖ\xC8\x8F\x97\xFAv\xE6G\xFFWg\x90 \xF3ʖr\xAF(P2A\x82\x87\xFC\x81B\x83\xA5\xE1\xFB\xBFy\x80\xD7{z)L\xEA`\xB2\xB6\xDC|\xF9\xF9Սr4\xAE!n\xF0\xA0\x94\xCF\xD7) \x82\x8A@2\x9Bp\xE6\xC7\xFC\x85оO "\x9C\xD68\xE8.ӻn3Zk\xA2XAP\xB8όjG!\x8C\xA6\xC9&V \xB1k.\xBC\xEE>fϛ\xCF\xFC)\x9Ao\x9C\xF3\xE9*J\xA2+\x9E{\x9D'{\xFA!\xE0%\x97\xFE\xB2>\xC4\xF3\xE7\x8CT\x{DB58}\x88pJ(Bq7\x92\xA1A\xBE~\xC1id\xD6"J\x81 +\xADc\x94\x9C\xB4xG.\x9A\x87ҞI\xC5*(~\x8C}\x9Bs\xBC\xCB\xF3\xC9ӯ\xAEA\xF0\xB4\xC51\xE5,\xA5\xA04\xAA\xB6P\x9Bdc(\x8Ac\xFA\x94PȓUp\x84\x89\x92\x96R\xAAnx\xAD5&1d6C\xF0BSZ +\xE2Ȳ\x8C\x9B\xEF]ɍw\xDEG93<v\xCBw\x88\xA41h\xC6QW\xAD.\x9E6\xB9ci\x921)*0<*Xp\xCE\xD16m%\xA2\xCC"\xD6\xE1\x95#E\x8BB\xC2\x9A\xAES\xA8T*D\x91b\xF9\xAAg9\xF5\x8B\xB1.0\xA9\xD4F\xC5\xE4\xF5lZI8\xF79\xE3\xE8C\xD0\x95j}P\xAB\xC7[K\xA2\xC0\x87\xDC7c9\xEB\x98C\xB9\xEB\xD1g\xB9\xF1\x81\xE7\xB9\xE6W\xF7\xD0^,Qv\xF0\xF0\xF5\xDF\xC4y!K\x9C\xF3\x94\xDB\xD8 B\x901\xE5zS0\xFA`k\xE1\xCFYG-\xA0\xBD(\xFC\xFC\x8FOO\xEB\xC2(JL+\xB2\xE1>ʙa\xD8z|Ț\x99\xB4\x80\x95\xBAl\xDD\xDD\xDD2k\xD6\xCCj\xC4*B@("\xE28\xCE\xE3\xC89\x8C +1\xE3\x99M\xF1U\xAFm\x8B\xD9{\xCDR-mb\xA0\M\x98<nRAȚ \xD3yHR\x87`\xEB45w\xDE4!\xB0oxK\xBE\xC1_\xFD6\xD4\xC2\xDEo7\xD4O\x84\xD4M\xC1\xD8\xC8d\x87\xD8x\xF9\xA4s\xB7\xDD\xE9\xE8\xDF)L\x8A\xC5\xE2\xAEzf\xFD﨧\xA7'\xEF\xC6:si\xF1\xF9\xBFEa\xD4D\xA0\xF1\xD5\xD3\xD3\xD32\xDE[\xC2\xDA\xC0\xC0@>7\xE2˖\xB0f\xA7\xCD\xE8ơ\xDAٶJ\x90\xF6\xD4\xF0\xE7\xFD +m\xB7x\xA2\xD9V\xA3a\xB6:]\xB5Z\xA4\xA49s7~WJ\xD5N\x9D\xD0ӻ\x9E\xD4T\xA6\xEE\xD6\xC1\xFC\xD9\xD3\xC7X\xB7\xA5Қx\xE8j\xDAo(}\x94\xE8 m\xB5EA\xA4A=J (\xD0:\xC2Z\xCFm+\xE5\xFE\xA7^gF\xD7>\x94\xDA;\x88T^\xE2(-Yf\x99\xB7GW\x9Cy$\xC5HЪ\x98\xEF\xA5&\x8E\xF1\xF9\xE1k\xF5\xB0\xAA\xD74l\xBF 5\x9D(шVDQĽ\xAB\x9E\xE3\xBF̜}\xF6eޢc\x8C\xA1kJ\x81#ܛ\xF9{M#\xB1\x96\xF7\xFAy\xEE\xAD\xF7\xF0"\xE8 \xE8\xB8\xC8+\x9F\xE1\xC1'_BGZ\xE5\x8AA\x88\x94\xC6\xFB@\xE5á]t&\xFB͝\x8E\xB5v\xC7c\xA4\xD68IP( +J\xB1\x8A\xB9c\xE5S<\xF4\xD2\xDB\xEC5\xBB\x8B\xF2P\x85\xAE\xE9S\xF8\xD6g\x8F\xA6\xB3]c]\xA8\xB6\x8F\xED0sw\x8E:ho4B |Q\x9C1\x97bA!\xA2\x88\x8BS\xA2\xAF\xAA\x98.h\xFA* \xC1y>\x9F\x80\xEF\x88 \xB9E(\x8D"\xCD\xDB\xEB\xFBX\xF5\xF7\xA2\xA26\x92$\xA1\xBD\xB3\xEC\x84C\x98R\xAA\xCD\xEAtsi\xE7\xA5^]*@\x9C'K+ %\xBC\xF7|\xEE\xD0}9\xF9ȏ \xC15\xB5V\xD6\xACwy\xE3\x88\xD4G\xAE\xDB\xEC\xF5F^\xA2@b6\xF6\xF5a)l \xE00\xB6´\xC9mdΏ\xB8\x9Fj +\x927\x98\xCE9\xAC\xF1D\xAC\xB5T\x92\x8C\xC1\xC1~\xAC\xF1\xFF(\x8AF*BM\xB7^\xD7\p{\xEF\xB1>\xBF%Ɍǚ\xCC*\xA9\xA3TPh\xAD$o4AB\xAA\xDA\xCCL~Gcm\xC8˟Y\xC3\xDDϬ\xA9\xF3I\xAC\xE5\x98E\xB3\xF9\xEAI\x87\xE5\xFB5\xCE1\xD5\xC4V٢Ej\xFDeR\xC9X\xBCSK/\xF2\xCF\xC1\x8AŘ͕\x94k\xEFy\x8C\xAB\xCF?\x994M\xB1\xAE\xA61\x9B\x8B\xE2\x80\xF7\x82IS\x88#D\x84\xA5\x8Bf\xB1x\xDFٸ\xEAD,\x84\xC0\x8C\xA9\x93\xF3\xF9B\xC3U\xC1\xC4\xC8Ȕ$ xM$\x81\xE0S.9c)_\xB9\xF5ϔ\x87\x86)\x8B<\xFD\xDAZ?\xE7JN8\xFC N\xFC\xE4,\xDA{\x8A\xC0\xFA\xCDC\xFC\xE5\x955\xBC\xFEֿ\xB8\xF4\x9CS\x98\\xD2\x97\x91\xA6)\xA1\xE3\x9Cc\xEE\x939n\xF1\xBE\xA4֍Q\xA2\xAF\xC1P#m~[ѣ\xDA,\x8F00\xB3\xB3\x83?\z*7\xADx\x96\xBB\x9F\xF8m\x93h\x9B\xB6'O\xAC\xDE\xCC=\x8F \xE2\xEB}\xAC\x88" +)\xD6Z\xBC\xF78\x93\x91$e\xBC\x8B\xF0R\xAF\xEBׄ[\xBA5ےq\xE2\xF1F{ι\xA6\xC0\xCAGS\x8AT\xE5\x9D\xEDO>\x8Ce\xA7-e\xE3pƋ\xAB\xDF\xE5\xE5\xD5ocC@\xA9\x9C\xE9\x9D\x9Dq\xC0Lu\xCDD\xC4SN3\x99?\x87\xA1ԡ\x89P\xE2X8\xBB\x93\xC4d\xD5\xD6h\x9B{\xCF-\x9A\xDD\xDD\xCFˌ=g\xA3\xA3\xE6M}^)AD\xD55\xB7\xC3Uq\xF5ƴ\xEDBc\xF2\xC8\xC6 +X\xB2\xE4P\xB5UQ*\xC2K*\xBE/\xE5\xFB\xE8\xCA;\xE7\xE9G\x9DmPK\xAA\x98\xDF\xEA\xF0;E\xFB;q\xB4\xB1\x8B\xA8\xA4 ۜ\xD9\x85kzޢo\xA0\xCD\xE3\xCE]T>O\xEA\xEA\xEA\xDA5\x8B\xD8E\xEF'\xFD\xF6\x94.?\xDBz}d IEND\xAEB`\x82 \ No newline at end of file Property changes on: cherokee/trunk/admin/static/images/wizards/coldfusion.png ___________________________________________________________________ Name: svn:mergeinfo +
|