|
From: creedon <icr...@us...> - 2005-06-15 23:32:01
|
Update of /cvsroot/frontierkernel/odbs/mainResponderRoot/mainResponder/adminSite/website In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv11116 Modified Files: 23pageHeader setupFrontier 23template Log Message: fixes so that adminSite can be used to complete Frontier install Index: 23pageHeader =================================================================== RCS file: /cvsroot/frontierkernel/odbs/mainResponderRoot/mainResponder/adminSite/website/23pageHeader,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** 23pageHeader 26 Mar 2005 21:45:16 -0000 1.1.1.1 --- 23pageHeader 15 Jun 2005 23:31:50 -0000 1.2 *************** *** 1,3 **** FrontierVcsFile:1:optx:mainResponder.adminSite.website.["#pageHeader"] ! <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title><%title%></title> <META HTTP-EQUIV="Expires" CONTENT="Mon, 01 Jan 1990 01:00:00 GMT"> <%metaTags ()%> <%string (prefsSuite.javaScriptSource)%> <style type="text/css"> body { margin-top: 0px; margin-left: 0px; margin-right: 0px; margin-bottom: 0px; } body, td, p { font-family: verdana, sans-serif; font-size: 12px; } h2 { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 24px; font-weight: bold } .header { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 40px; font-weight: bold } .realsmall { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 9px; } .small { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 10px; } .smallAlignTop { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 10px; vertical-align: top; } .adminMenuLink { font-weight: bold } .adminMenuLinkFontCurrent { font-weight: bold } </style> </head> <%bodyTag ()%> \ No newline at end of file --- 1,3 ---- FrontierVcsFile:1:optx:mainResponder.adminSite.website.["#pageHeader"] ! <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title><%title%></title> <META HTTP-EQUIV="Expires" CONTENT="Mon, 01 Jan 1990 01:00:00 GMT"> <%metaTags ()%> <%string (prefsSuite.javaScriptSource)%> <style type="text/css"> body { margin:0px 0px 10px 0px; background: #FFFFFF; } A { color: #336666; font-family: verdana, arial, sans-serif; font-size:10px; text-decoration: none; font-weight:bold; } A:link { color: #336666; text-decoration: none; } A:visited { color: #669999; text-decoration: none; } A:active { color: #FFFF00; } A:hover { color: #000000; } #banner { font-family:verdana, arial, sans-serif; color:#FFF; font-size:20px; font-weight:normal; border-bottom:1px dotted #000000; border-top:3px solid #003333; background:#336666; padding:15px; text-transform:uppercase; letter-spacing: .2em; } .description { font-family:verdana, arial, sans-serif; color:#99CCCC; font-size:12px; font-weight:bold; text-transform:none; } #content { background:#fff; margin-right:15px; padding-bottom:20px; } #links { background:#fff; padding-right:15px; } .blog { padding-left:15px; padding-top:15px; padding-right:15px; } .blogbody { font-family:georgia, verdana, arial, sans-serif; color:#333; font-size:13px; font-weight:normal; background:#FFF; line-height:15px; padding-left:10px; padding-right:10px; padding-top:10px; } .title { font-family: verdana, arial; font-size: 15px; color: #003333; text-transform: uppercase; font-weight:bold; } .footer { font-family:georgia, verdana, arial, sans-serif; color:#333; font-size:11px; font-weight:normal; line-height:11px; padding-left:10px; padding-right:10px; padding-top:10px; border-top:1px dotted #999; text-align:center; } #menu { margin-bottom:15px; background:#FFF; } .date { font-family:verdana, arial, sans-serif; color:#666; font-size:9px; font-weight:bold; text-align:center; background:#EEE; line-height:14px; padding:2px; margin-top:10px; text-transform:uppercase; letter-spacing: .2em; } .posted { font-family:verdana, arial, sans-serif; font-size: 11px; color: #003366; margin-bottom:15px; } .side { font-family:verdana, arial, sans-serif; color:#333; font-size:11px; font-weight:normal; background:#FFF; line-height:14px; padding:2px; } .sidetitle { font-family:verdana, arial, sans-serif; color:#666; font-size:9px; font-weight:bold; background:#EEE; line-height:14px; padding:2px; margin-top:10px; text-align:center; text-transform:uppercase; letter-spacing: .2em; } .dlHeader{ font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 10px; padding:4px; text-transform:uppercase; letter-spacing: .2em; } .dlCountReadsTitle, .dlSubjectTitle, .dlCountMessagesTitle, .dlPostedTitle, .dlMessageLinkTitle, .dlAuthorTitle { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 10px; color:#333; padding:4px; } .dlSubject, .dlCountMessages, .dlPosted, .dlCountReads, .dlAuthor, .dlMessageLink { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 10px; padding:4px; } .discussHeader { font-family:georgia, verdana, arial, sans-serif; color:#333; font-size:11px; font-weight:normal; line-height:11px; } .discussResponceList { font-family:georgia, verdana, arial, sans-serif; color:#333; font-size:11px; font-weight:normal; line-height:11px; padding-left:10px; padding-right:10px; padding-top:10px; margin-top:10px; border-top:1px dotted #999; } .hCalendarMonthYearRow, .dCalendarMonthYearRow { font-family:verdana, arial, sans-serif; color:#003366; font-size:10px; font-weight:bold; line-height:14px; padding:2px; } .hCalendarDayNameRow, .dCalendarDayNameRow { color:#666; font-family:verdana, arial, sans-serif; font-size:10px; font-weight:bold; line-height:14px; padding:2px; } .hCalendarDayRow, .dCalendarDayRow { color:#666; font-family:verdana, arial, sans-serif; font-size:10px; font-weight:normal; line-height:14px; padding:2px; } .hCalendarDayLinked, .dCalendarDayLinked { color:#666; background-color: #EEEEEE; font-family:verdana, arial, sans-serif; font-size:10px; font-weight:normal; line-height:14px; padding:2px; } .hCalendarDayCurrent, .dCalendarDayCurrent { color: #FFFFFF; background-color: #DCDCDC; font-family:verdana, arial, sans-serif; font-size:10px; font-weight:normal; line-height:14px; padding:2px; } td { font-family:georgia, verdana, arial, sans-serif; color:#333; font-size:13px; font-weight:normal; line-height:15px; } .adminMenuLink:hover { border-bottom: solid; } .adminMenuLinkFont { } .adminMenuLinkFontCurrent { border-bottom: solid; } </style> </head> <%bodyTag ()%> \ No newline at end of file Index: 23template =================================================================== RCS file: /cvsroot/frontierkernel/odbs/mainResponderRoot/mainResponder/adminSite/website/23template,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** 23template 26 Mar 2005 21:45:17 -0000 1.1.1.1 --- 23template 15 Jun 2005 23:31:51 -0000 1.2 *************** *** 1,3 **** FrontierVcsFile:1:optx:mainResponder.adminSite.website.["#template"] ! <body bgcolor="#FFFFFF" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0" style="background-image: url('/mainResponderResources/adminSite/headerBackground'); background-repeat: no-repeat;"> <table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr> <td colspan="2"> <table width="100%" cellpadding="0" border="0" cellspacing="0"><tr> <td width="1"><img src="/mainResponderResources/adminSite/shim" width="1" height="36"></td> <td align="center"><%menu ("white")%></td> </tr></table> </td> </tr> <tr> <td width="175"><img src="/mainResponderResources/adminSite/shim" width="175" height="45" border="0" usemap="#header"><map name="header"><area shape="rect" href="http://frontier.userland.com/" coords="13, 7, 166, 29" /></map></td> <td align="right"><a href="http://www.userland.com/"><img src="/mainResponderResources/adminSite/userlandLogo" width="140" height="20" border="0"></a></td> </tr> </table> <div align="center"> <table width="85%" border="0" cellspacing="0" cellpadding="4"> <tr> <td valign="top"> <table border="0" width="100%" cellspacing="12" cellpadding="0"> <tr> <td> <p><font size="+1"><b><%viewPageTitle ()%></b></font></p> {bodytext} </td> </tr> </table> </td> </tr> </table> </div> <br /><br /><br /> <hr width="95%" size="1"> <br /> <div align="center"> © Copyright 2001-<%date.year ()%> <a href="http://www.userland.com/">UserLand Software, Inc</a>.<br /> <font size="-1"><i>Last update: <%timeModified (adrobject)%>.</i></font><br /> </div> </body> </html> \ No newline at end of file --- 1,3 ---- FrontierVcsFile:1:optx:mainResponder.adminSite.website.["#template"] ! <body> <div id="banner"> <a href="" style="font-family:verdana, arial, sans-serif;color:#FFF;font-size:20px;font-weight:normal;text-transform:uppercase;letter-spacing: .2em;"> Frontier </a> <br/> <span class="description"> High performance Web content management, object database, system-level and Internet scripting environment, including source code editing and debugging. </span> </div> <div id="content"> <div class="blogbody"> <%menu ("black")%> <br/> <p class="title"> <%viewPageTitle ()%> </p> {bodytext} <div class="footer"> <p> This Page was last update: <%timeModified (adrobject)%> <br/> Page template based on <a href="http://www.bryanbell.com/">Bryan Bell's</a> <a href="http://www.bryanbell.com/2002/07/23#a63">Moveable Manila: green</a>. <br/> © Copyright <%date.year ()%> </p> <p> <a href="http://jigsaw.w3.org/css-validator/"> <img style="border:0;width:88px;height:31px" src="http://jigsaw.w3.org/css-validator/images/vcss" alt="Valid CSS!"> </a> </p> </div> </div> </div> </body> </html> \ No newline at end of file Index: setupFrontier =================================================================== RCS file: /cvsroot/frontierkernel/odbs/mainResponderRoot/mainResponder/adminSite/website/setupFrontier,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** setupFrontier 26 Mar 2005 21:45:19 -0000 1.1.1.1 --- setupFrontier 15 Jun 2005 23:31:51 -0000 1.2 *************** *** 1,3 **** FrontierVcsFile:1:scpt:mainResponder.adminSite.website.setupFrontier ! on setupFrontier () { ÇChanges Ç5/18/04; 11:37:08 PM by JES ÇOn OS X, handle options for not enabling port forwarding, and setting the actual port. Ç4/13/04; 1:35:37 AM by JES ÇGive a confirmation page after submitting forms to let the user know what's about to happen when they log in. Ç3/12/04; 4:25:55 PM by JES ÇSave all open databases after processing a POST. Prevents possible configuration errors if Frontier is exitted before databases are saved after initial setup. Ç8/21/02; 7:17:33 PM by JES ÇFixed a bug which would prevent the setup from succeeding on Windows and MacOS Classic. Ç4/11/02; 10:27:06 PM by JES ÇCreated. Cribbed from radio.html.setupFrontier. local (flOpenAdminSite = true); //set to false to open the first Manila site instead. local (pta = html.getPageTableAddress ()); Çworkspace.pt = pta^ pta^.title = "It Worked!"; local (htmltext, indentlevel = 0); on add (s) { htmltext = htmltext + string.filledstring ("\t", indentlevel) + s + "\r"}; bundle { //set up a temp table to save messages for redirected pages if not defined (system.temp.frontier.setupFrontier) { new (tableType, @system.temp.frontier.setupFrontier)}}; local (errorMessage = "", confirmMessage = "", postedSection = "", flError = false, flConfirmPage = false, flPortForwardPage = false); if pta^.method == "POST" { Çworkspace.pt = pta^; edit (@workspace.pt) local (adrargs = @pta^.postArgs); on getInitials (s) { local (initials = ""); bundle { //strip off parentheticals if s contains "(" { s = string.nthField (s, "(", 1)}; if s contains "[" { s = string.nthField (s, "[", 1)}; if s contains "{" { s = string.nthField (s, "{", 1)}}; s = string.trimWhiteSpace (s); initials = string.upper (s[1]); local (i, ct = sizeOf (s)); if sizeOf (s) > 1 { local (flNextCharIsInitial = false); for i = 2 to ct { if flNextCharIsInitial { if string.isAlpha (s[i]) { initials = initials + string.upper (s[i])}; flNextCharIsInitial = false}; if not string.isAlpha (s[i]) { flNextCharIsInitial = true}}}; return (initials)}; on setName (name) { user.prefs.name = name; bundle { //set user.prefs.initials user.prefs.initials = getInitials (name)}}; on setEmail (email) { user.prefs.mailAddress = email}; on saveDatabases () { local (rootPath = window.getFile (@root)); on visitproc (f) { if f != rootPath { fileMenu.save (f)} else { fileMenu.saveMyRoot (@root)}; return (true)}; table.visitOpenDatabases (@visitproc); target.set (@root); fileMenu.save ()}; local (flFinishSetup = false); if defined (adrargs^.setupFrontier) { //personalization postedSection = "setupFrontier"; local (name = adrargs^.name); local (organization = adrargs^.organization); local (serverDomain = adrargs^.serverDomain); local (email = adrargs^.email); local (mailhost = adrargs^.mailHost); local (password = adrargs^.password); local (repeat = adrargs^.repeatPassword); if system.environment.isMac { //convert name, organization to Mac text name = latinToMac.convert (name); organization = latinToMac.convert (organization)}; setName (name); setEmail (email); user.prefs.organization = organization; user.prefs.mailHost = mailhost; config.manila.prefs.baseUrl = "http://" + serverDomain + "/"; bundle { //check that the password is ok, and that it matches the repeat password if sizeOf (password) < 4 { errorMessage = "Can't continue setting up Frontier because the password you supplied is not at least four characters long."; flError = true}; if not flError { if password != repeat { errorMessage = "Can't continue setting up Frontier because the password you supplied does not match the repeat password."; flError = true}}}; bundle { //set up Admin member for access to control panel bundle { //create the Admin membership group if needed local (adrRoot = @[system.temp.mainResponder.membersRootFile]); local (adrGroup = @adrRoot^.admin); if not defined (adrGroup^) { new (tableType, adrGroup)}; if not defined (adrGroup^.callbacks) { new (tableType, @adrGroup^.callbacks)}; if not defined (adrGroup^.cookieDomain) { adrGroup^.cookieDomain = ""}; if not defined (adrGroup^.cookieExpires) { adrGroup^.cookieExpires = "Mon, 01 Apr 2030 07:00:00 GMT"}; if not defined (adrGroup^.cookieName) { adrGroup^.cookieName = "Admin"}; if not defined (adrGroup^.mailReturnAddress) { adrGroup^.mailReturnAddress = user.prefs.mailAddress}; if not defined (adrGroup^.mailSubject) { adrGroup^.mailSubject = "Admin"}; if not defined (adrGroup^.mailTemplate) { wp.newTextObject ("", @adrGroup^.mailTemplate)}; if not defined (adrGroup^.openToPublic) { adrGroup^.openToPublic = false}; if not defined (adrGroup^.users) { new (tableType, @adrGroup^.users)}}; local (adrMember = mainResponder.members.getMemberTable ("Admin", user.prefs.mailAddress)); if not defined (adrMember^) { new (tableType, adrMember)}; adrMember^.password = password; if not defined (adrMember^.personalInfo) { new (tableType, @adrMember^.personalInfo)}; if not defined (adrMember^.personalInfo.name) { adrMember^.personalInfo.name = user.prefs.name}}; if not flError { //complete the setup try { //trap network errors if system.environment.isCarbon { //we need to run the port forwarding page now flPortForwardPage = true} else { //Windows and Classic don't need to deal with port forwarding local (urlParts = string.urlSplit (config.manila.prefs.baseUrl)); userland.completeSetup (urlParts[2], password); flConfirmPage = true; }}Çsystem.temp.Frontier.setupFrontier.flAllowLocalAccessToSetupPage = false //require login from now on else { //network or other error errorMessage = tryError; flError = true}}}; if defined (adrargs^.proxy) { //set proxy settings postedSection = "proxy"; try { //convert port to a number -- if not, it's an error adrargs^.port = number (adrargs^.port)} else { errorMessage = "Can't set your proxy settings because the port you entered is not valid."; adrargs^.enabled = false; flError = true}; user.webBrowser.proxy.domain = adrargs^.domain; user.webBrowser.proxy.username = adrargs^.username; user.webBrowser.proxy.password = binary (adrargs^.password); user.webBrowser.proxy.enabled = false; if not flError { user.webBrowser.proxy.port = adrargs^.port}; if defined (adrargs^.enabled) { if adrargs^.enabled { user.webBrowser.proxy.enabled = true}}; //PBS 12/31/01: *true*, not false (that was a bug) if flError { //redirect to the proxy settings section of the page mainResponder.redirect ("http://" + pta^.host + pta^.uri + "#proxy")} else { confirmMessage = "Your proxy server information has been set."; mainResponder.redirect ("http://" + pta^.host + pta^.uri)}}; if defined (adrargs^.portForward) { //set port forwarding preferences local (adminPassword = adrargs^.password); local (flRememberAdminPassword = defined (adrargs^.flRememberAdminPassword)); local (flEnablePortForwarding = defined (adrargs^.flEnablePortForwarding)); local (actualPort = number (adrargs^.port)); if actualPort != user.inetd.config.http.port { local (flRunning = inetd.isDaemonRunning (@user.inetd.config.http)); if flRunning { //stop server, set port, restart server inetd.stopOne (@user.inetd.config.http); user.inetd.config.http.port = actualPort; inetd.startOne (@user.inetd.config.http)} else { //just set port user.inetd.config.http.port = actualPort}}; if flRememberAdminPassword and flEnablePortForwarding { user.prefs.portForwardingAdminPassword = binary (adminPassword)}; local (password = mainResponder.members.getMemberTable ("Admin", user.prefs.mailAddress)^.password); local (urlparts = string.urlSplit (config.manila.prefs.baseUrl)); userland.completeSetup (urlparts[2], password, adminPassword, flRememberAdminPassword, flEnablePortForwarding); flConfirmPage = true; };Çsystem.temp.Frontier.setupFrontier.flAllowLocalAccessToSetupPage = false //require login from now on Çif defined (adrargs^.confirmSetup) //redirect to the Control Panel home page ÇmainResponder.redirect ("http://" + pta^.host + "/") bundle { //if redirecting, set messages in the temp table, and don't bother to finish rendering saveDatabases (); if defined (pta^.responderAttributes.redirectUrl) { temp.frontier.postedSection = postedSection; temp.frontier.setupFrontier.flError = flError; temp.frontier.setupFrontier.errorMessage = errorMessage; temp.frontier.setupFrontier.message = confirmMessage; return ("")} else { //no redirect -- make sure messages are cleared temp.frontier.postedSection = ""; temp.frontier.setupFrontier.flError = false; temp.frontier.setupFrontier.errorMessage = ""; temp.frontier.setupFrontier.message = ""}}}; if flConfirmPage and (not flError) { //render the confirmation page bundle { //Confirmation page pta^.title = "Congratulations!"; local (adminSiteUrl = "http://" + pta^.host + "/"); local (t); new (tableType, @t); t.adminSiteUrl = adminSiteUrl; add (mainResponder.getString ("setupFrontier.newUserConfirmMessage", @t)); bundle { //add the Continue button add ("<form method=\"GET\" action=\"" + adminSiteUrl + "\">"); add ("<input type=\"submit\" value=\"Continue\" onclick=\"document.location='" + adminSiteUrl + "'\">"); add ("</form>")}; system.temp.Frontier.setupFrontier.flAllowLocalAccessToSetupPage = false}; //require login from now on Çbundle //redirect to admin website home page Çif flOpenAdminSite //see the first line of this script above Çlocal (port, adminSiteUrl) Çport = user.inetd.config.http2.port Çif port == 80 ÇadminSiteUrl = "http://127.0.0.1/" Çelse ÇadminSiteUrl = "http://127.0.0.1:" + port + "/" ÇmainResponder.redirect (adminSiteUrl) Çelse Çlocal (myManilaServerSiteUrl = manilaSuite.getSiteUrl (@myManilaServerManilaWebsite)) ÇmainResponder.redirect (myManilaServerSiteUrl) Çreturn ("")} else { //render the welcome/setup form bundle { //change the template to the setup template, which doesn't have navigation links to the rest of the control panel table.assign (@pta^.template, "setup"); pta^.indirectTemplate = true}; if flPortForwardPage { //oops -- unix: we have to deal with port forwarding local (t); new (tableType, @t); t.adminPassword = ""; t.rememberAdminPassword = "checked"; t.enablePortForwarding = "checked"; t.actualPort = user.inetd.config.http.port; if defined (user.prefs.portForwardingAdminPassword) { t.adminPassword = string (user.prefs.portForwardingAdminPassword)}; add (mainResponder.getString ("setupFrontier.portForward", @t))} else { //the main setup form and proxy settings local (name = user.prefs.name, email = user.prefs.mailAddress, organization = user.prefs.organization, mailHost = user.prefs.mailHost); if system.environment.isMac { //convert name, organization to latin text name = latinToMac.macToLatin (name); organization = latinToMac.macToLatin (organization)}; bundle { //render the new user page local (t); new (tabletype, @t); bundle { //add personal info to replacement table t.username = name; t.useremail = email; t.userorganization = organization; t.userpassword = ""; local (urlparts = string.urlSplit (config.manila.prefs.baseUrl)); t.serverdomain = urlparts[2]; try { //try to get the admin password from the Admin membership group local (adrMember = mainResponder.members.getMemberTable ("Admin", user.prefs.mailAddress)); if defined (adrMember^) { t.userpassword = adrMember^.password}}; t.mailhost = mailHost}; bundle { //add proxy settings to replacement table with user.webBrowser.proxy { t.proxydomain = user.webBrowser.proxy.domain; t.proxyusername = user.webBrowser.proxy.username; t.proxypassword = string (user.webBrowser.proxy.password); t.proxyport = user.webBrowser.proxy.port; if user.webBrowser.proxy.enabled { t.proxyenabled = "checked"} else { t.proxyenabled = ""}}}; bundle { //add error or confirmation messages to replacement table t.proxyConfirm = ""; t.setupError = ""; t.proxyError = ""; if defined (system.temp.frontier.postedSection) { //only defined after the first POST if defined (system.temp.frontier.setupFrontier.flError) { //only defined after the first POST if temp.frontier.setupFrontier.flError { case temp.frontier.postedSection { "setupFrontier" { t.setupError = "<p><font color=\"red\">" + temp.frontier.setupFrontier.errorMessage + "</font></p>"}; "proxy" { t.proxyError = "<p><font color=\"red\">" + temp.frontier.setupFrontier.errorMessage + "</font></p>"}}} else { case temp.frontier.postedSection { "proxy" { t.proxyConfirm = "<p><font color=\"navy\">" + temp.frontier.setupFrontier.message + "</font></p>"}}}}}}; add (mainResponder.getString ("setupFrontier.main", @t))}}}; return (htmltext)}; Çbundle //testing Çlocal (pagetable); new (tableType, @pagetable) Çpagetable.method = "GET" Çhtml.setPageTableAddress (@pagetable) ÇsetupFrontier () Çhtml.deletePageTableAddress () \ No newline at end of file --- 1,3 ---- FrontierVcsFile:1:scpt:mainResponder.adminSite.website.setupFrontier ! on setupFrontier () { ÇChanges Ç6/15/05; 11:34:39 AM by TAC Çchanged config.manila.prefs.baseUrl to config.mainResponder.prefs.baseUrl Çchanged references to userland table, to Frontier table Ç5/18/04; 11:37:08 PM by JES ÇOn OS X, handle options for not enabling port forwarding, and setting the actual port. Ç4/13/04; 1:35:37 AM by JES ÇGive a confirmation page after submitting forms to let the user know what's about to happen when they log in. Ç3/12/04; 4:25:55 PM by JES ÇSave all open databases after processing a POST. Prevents possible configuration errors if Frontier is exitted before databases are saved after initial setup. Ç8/21/02; 7:17:33 PM by JES ÇFixed a bug which would prevent the setup from succeeding on Windows and MacOS Classic. Ç4/11/02; 10:27:06 PM by JES ÇCreated. Cribbed from radio.html.setupFrontier. local (flOpenAdminSite = true); //set to false to open the first Manila site instead. local (pta = html.getPageTableAddress ()); Çworkspace.pt = pta^ pta^.title = "It Worked!"; local (htmltext, indentlevel = 0); on add (s) { htmltext = htmltext + string.filledstring ("\t", indentlevel) + s + "\r"}; bundle { //set up a temp table to save messages for redirected pages if not defined (system.temp.frontier.setupFrontier) { new (tableType, @system.temp.frontier.setupFrontier)}}; local (errorMessage = "", confirmMessage = "", postedSection = "", flError = false, flConfirmPage = false, flPortForwardPage = false); if pta^.method == "POST" { Çworkspace.pt = pta^; edit (@workspace.pt) local (adrargs = @pta^.postArgs); on getInitials (s) { local (initials = ""); bundle { //strip off parentheticals if s contains "(" { s = string.nthField (s, "(", 1)}; if s contains "[" { s = string.nthField (s, "[", 1)}; if s contains "{" { s = string.nthField (s, "{", 1)}}; s = string.trimWhiteSpace (s); initials = string.upper (s[1]); local (i, ct = sizeOf (s)); if sizeOf (s) > 1 { local (flNextCharIsInitial = false); for i = 2 to ct { if flNextCharIsInitial { if string.isAlpha (s[i]) { initials = initials + string.upper (s[i])}; flNextCharIsInitial = false}; if not string.isAlpha (s[i]) { flNextCharIsInitial = true}}}; return (initials)}; on setName (name) { user.prefs.name = name; bundle { //set user.prefs.initials user.prefs.initials = getInitials (name)}}; on setEmail (email) { user.prefs.mailAddress = email}; on saveDatabases () { local (rootPath = window.getFile (@root)); on visitproc (f) { if f != rootPath { fileMenu.save (f)} else { fileMenu.saveMyRoot (@root)}; return (true)}; table.visitOpenDatabases (@visitproc); target.set (@root); fileMenu.save ()}; local (flFinishSetup = false); if defined (adrargs^.setupFrontier) { //personalization postedSection = "setupFrontier"; local (name = adrargs^.name); local (organization = adrargs^.organization); local (serverDomain = adrargs^.serverDomain); local (email = adrargs^.email); local (mailhost = adrargs^.mailHost); local (password = adrargs^.password); local (repeat = adrargs^.repeatPassword); if system.environment.isMac { //convert name, organization to Mac text name = latinToMac.convert (name); organization = latinToMac.convert (organization)}; setName (name); setEmail (email); user.prefs.organization = organization; user.prefs.mailHost = mailhost; config.mainResponder.prefs.baseUrl = "http://" + serverDomain + "/"; bundle { //check that the password is ok, and that it matches the repeat password if sizeOf (password) < 4 { errorMessage = "Can't continue setting up Frontier because the password you supplied is not at least four characters long."; flError = true}; if not flError { if password != repeat { errorMessage = "Can't continue setting up Frontier because the password you supplied does not match the repeat password."; flError = true}}}; bundle { //set up Admin member for access to control panel bundle { //create the Admin membership group if needed local (adrRoot = @[system.temp.mainResponder.membersRootFile]); local (adrGroup = @adrRoot^.admin); if not defined (adrGroup^) { new (tableType, adrGroup)}; if not defined (adrGroup^.callbacks) { new (tableType, @adrGroup^.callbacks)}; if not defined (adrGroup^.cookieDomain) { adrGroup^.cookieDomain = ""}; if not defined (adrGroup^.cookieExpires) { adrGroup^.cookieExpires = "Mon, 01 Apr 2030 07:00:00 GMT"}; if not defined (adrGroup^.cookieName) { adrGroup^.cookieName = "Admin"}; if not defined (adrGroup^.mailReturnAddress) { adrGroup^.mailReturnAddress = user.prefs.mailAddress}; if not defined (adrGroup^.mailSubject) { adrGroup^.mailSubject = "Admin"}; if not defined (adrGroup^.mailTemplate) { wp.newTextObject ("", @adrGroup^.mailTemplate)}; if not defined (adrGroup^.openToPublic) { adrGroup^.openToPublic = false}; if not defined (adrGroup^.users) { new (tableType, @adrGroup^.users)}}; local (adrMember = mainResponder.members.getMemberTable ("Admin", user.prefs.mailAddress)); if not defined (adrMember^) { new (tableType, adrMember)}; adrMember^.password = password; if not defined (adrMember^.personalInfo) { new (tableType, @adrMember^.personalInfo)}; if not defined (adrMember^.personalInfo.name) { adrMember^.personalInfo.name = user.prefs.name}}; if not flError { //complete the setup try { //trap network errors if system.environment.isCarbon { //we need to run the port forwarding page now flPortForwardPage = true} else { //Windows and Classic don't need to deal with port forwarding local (urlParts = string.urlSplit (config.mainResponder.prefs.baseUrl)); Frontier.completeSetup (urlParts[2], password); flConfirmPage = true; }}Çsystem.temp.Frontier.setupFrontier.flAllowLocalAccessToSetupPage = false //require login from now on else { //network or other error errorMessage = tryError; flError = true}}}; if defined (adrargs^.proxy) { //set proxy settings postedSection = "proxy"; try { //convert port to a number -- if not, it's an error adrargs^.port = number (adrargs^.port)} else { errorMessage = "Can't set your proxy settings because the port you entered is not valid."; adrargs^.enabled = false; flError = true}; user.webBrowser.proxy.domain = adrargs^.domain; user.webBrowser.proxy.username = adrargs^.username; user.webBrowser.proxy.password = binary (adrargs^.password); user.webBrowser.proxy.enabled = false; if not flError { user.webBrowser.proxy.port = adrargs^.port}; if defined (adrargs^.enabled) { if adrargs^.enabled { user.webBrowser.proxy.enabled = true}}; //PBS 12/31/01: *true*, not false (that was a bug) if flError { //redirect to the proxy settings section of the page mainResponder.redirect ("http://" + pta^.host + pta^.uri + "#proxy")} else { confirmMessage = "Your proxy server information has been set."; mainResponder.redirect ("http://" + pta^.host + pta^.uri)}}; if defined (adrargs^.portForward) { //set port forwarding preferences local (adminPassword = adrargs^.password); local (flRememberAdminPassword = defined (adrargs^.flRememberAdminPassword)); local (flEnablePortForwarding = defined (adrargs^.flEnablePortForwarding)); local (actualPort = number (adrargs^.port)); if actualPort != user.inetd.config.http.port { local (flRunning = inetd.isDaemonRunning (@user.inetd.config.http)); if flRunning { //stop server, set port, restart server inetd.stopOne (@user.inetd.config.http); user.inetd.config.http.port = actualPort; inetd.startOne (@user.inetd.config.http)} else { //just set port user.inetd.config.http.port = actualPort}}; if flRememberAdminPassword and flEnablePortForwarding { user.prefs.portForwardingAdminPassword = binary (adminPassword)}; local (password = mainResponder.members.getMemberTable ("Admin", user.prefs.mailAddress)^.password); local (urlparts = string.urlSplit (config.mainResponder.prefs.baseUrl)); Frontier.completeSetup (urlparts[2], password, adminPassword, flRememberAdminPassword, flEnablePortForwarding); flConfirmPage = true; };Çsystem.temp.Frontier.setupFrontier.flAllowLocalAccessToSetupPage = false //require login from now on Çif defined (adrargs^.confirmSetup) //redirect to the Control Panel home page ÇmainResponder.redirect ("http://" + pta^.host + "/") bundle { //if redirecting, set messages in the temp table, and don't bother to finish rendering saveDatabases (); if defined (pta^.responderAttributes.redirectUrl) { temp.frontier.postedSection = postedSection; temp.frontier.setupFrontier.flError = flError; temp.frontier.setupFrontier.errorMessage = errorMessage; temp.frontier.setupFrontier.message = confirmMessage; return ("")} else { //no redirect -- make sure messages are cleared temp.frontier.postedSection = ""; temp.frontier.setupFrontier.flError = false; temp.frontier.setupFrontier.errorMessage = ""; temp.frontier.setupFrontier.message = ""}}}; if flConfirmPage and (not flError) { //render the confirmation page bundle { //Confirmation page pta^.title = "Congratulations!"; local (adminSiteUrl = "http://" + pta^.host + "/"); local (t); new (tableType, @t); t.adminSiteUrl = adminSiteUrl; add (mainResponder.getString ("setupFrontier.newUserConfirmMessage", @t)); bundle { //add the Continue button add ("<form method=\"GET\" action=\"" + adminSiteUrl + "\">"); add ("<input type=\"submit\" value=\"Continue\" onclick=\"document.location='" + adminSiteUrl + "'\">"); add ("</form>")}; system.temp.Frontier.setupFrontier.flAllowLocalAccessToSetupPage = false}; //require login from now on Çbundle //redirect to admin website home page Çif flOpenAdminSite //see the first line of this script above Çlocal (port, adminSiteUrl) Çport = user.inetd.config.http2.port Çif port == 80 ÇadminSiteUrl = "http://127.0.0.1/" Çelse ÇadminSiteUrl = "http://127.0.0.1:" + port + "/" ÇmainResponder.redirect (adminSiteUrl) Çelse Çlocal (myManilaServerSiteUrl = manilaSuite.getSiteUrl (@myManilaServerManilaWebsite)) ÇmainResponder.redirect (myManilaServerSiteUrl) Çreturn ("")}} else { //render the welcome/setup form bundle { //change the template to the setup template, which doesn't have navigation links to the rest of the control panel table.assign (@pta^.template, "setup"); pta^.indirectTemplate = true}; if flPortForwardPage { //oops -- unix: we have to deal with port forwarding local (t); new (tableType, @t); t.adminPassword = ""; t.rememberAdminPassword = "checked"; t.enablePortForwarding = "checked"; t.actualPort = user.inetd.config.http.port; if defined (user.prefs.portForwardingAdminPassword) { t.adminPassword = string (user.prefs.portForwardingAdminPassword)}; add (mainResponder.getString ("setupFrontier.portForward", @t))} else { //the main setup form and proxy settings local (name = user.prefs.name, email = user.prefs.mailAddress, organization = user.prefs.organization, mailHost = user.prefs.mailHost); if system.environment.isMac { //convert name, organization to latin text name = latinToMac.macToLatin (name); organization = latinToMac.macToLatin (organization)}; bundle { //render the new user page local (t); new (tabletype, @t); bundle { //add personal info to replacement table t.username = name; t.useremail = email; t.userorganization = organization; t.userpassword = ""; local (urlparts = string.urlSplit (config.mainResponder.prefs.baseUrl)); t.serverdomain = urlparts[2]; try { //try to get the admin password from the Admin membership group local (adrMember = mainResponder.members.getMemberTable ("Admin", user.prefs.mailAddress)); if defined (adrMember^) { t.userpassword = adrMember^.password}}; t.mailhost = mailHost}; bundle { //add proxy settings to replacement table with user.webBrowser.proxy { t.proxydomain = user.webBrowser.proxy.domain; t.proxyusername = user.webBrowser.proxy.username; t.proxypassword = string (user.webBrowser.proxy.password); t.proxyport = user.webBrowser.proxy.port; if user.webBrowser.proxy.enabled { t.proxyenabled = "checked"} else { t.proxyenabled = ""}}}; bundle { //add error or confirmation messages to replacement table t.proxyConfirm = ""; t.setupError = ""; t.proxyError = ""; if defined (system.temp.frontier.postedSection) { //only defined after the first POST if defined (system.temp.frontier.setupFrontier.flError) { //only defined after the first POST if temp.frontier.setupFrontier.flError { case temp.frontier.postedSection { "setupFrontier" { t.setupError = "<p><font color=\"red\">" + temp.frontier.setupFrontier.errorMessage + "</font></p>"}; "proxy" { t.proxyError = "<p><font color=\"red\">" + temp.frontier.setupFrontier.errorMessage + "</font></p>"}}} else { case temp.frontier.postedSection { "proxy" { t.proxyConfirm = "<p><font color=\"navy\">" + temp.frontier.setupFrontier.message + "</font></p>"}}}}}}; add (mainResponder.getString ("setupFrontier.main", @t))}}}; return (htmltext)}; Çbundle //testing Çlocal (pagetable); new (tableType, @pagetable) Çpagetable.method = "GET" Çhtml.setPageTableAddress (@pagetable) ÇsetupFrontier () Çhtml.deletePageTableAddress () \ No newline at end of file |