Monday, November 08, 2010 at 12:04 AM.
system.verbs.builtins.opmlEditor.initServerOnPort80
on initServerOnPort80 () {
<<Changes
<<8/15/09; 6:50:29 PM by DW
<<This procedure is called from opmlEditor.init, therefore it is a mistake to call xxx from this procedure. Commented the call.
<<3/18/09; 6:56:12 PM by DW
<<Now that the default responder is calling mainresponder.respond, we don't need a special responder for port 80. If it exists, delete it; otherwise don't install it.
<<8/4/08; 9:13:19 AM by DW
<<Created.
<<opmlEditor.init () //8/15/09 by DW -- commented
if user.opmlEditor.prefs.flServerOnPort80 {
if not system.temp.opmlEditor.port80.flStarted {
bundle { //set up an http daemon for port 80
local (adrd = @user.inetd.config.http3);
if not defined (adrd^) {
adrd^ = opmlEditor.data.daemon;
if system.environment.isMac { //6/4/06 by DW
adrd^.port = 5338};
if user.opmlEditor.prefs.ipAddressPort80 != "" {
adrd^.ip = user.opmlEditor.prefs.ipAddressPort80};
filemenu.save ();
inetd.startone (adrd)}};
bundle { //set up a responder that calls mainResponder.respond for requests on port 80
local (adrr = @user.webserver.responders.mainResponderOnPort80);
<<if not defined (adrr^) //commented, 3/18/09 by DW
<<adrr^ = @opmlEditor.data.responder
<<if system.environment.isMac //6/4/06 by DW
<<opmlServer.data.responder.condition = "(port == 5338)"
<<filemenu.save ()
if defined (adrr^) { //3/18/09 by DW
delete (adrr)}};
bundle { //on Mac only, forward from port 80 to port 5338
if system.environment.isMac { //6/4/06 by DW
on macPortForward (sourcePort = 80, destinationPort = 5338) {
<<Changes
<<6/4/06; 8:27:08 AM by PM
<<Adapted from userland.portForward.
local (sourceAddr="any");
if not defined (user.prefs.portForwardingAdminPassword) {
local (adminPassword = "");
Frontier.bringToFront ();
if not dialog.getPassword ("Admin password (for port forwarding)?", @adminPassword) {
return (false)};
user.prefs.portForwardingAdminPassword = binary (adminPassword);
filemenu.save ()};
local (pw = string (user.prefs.portForwardingAdminPassword), s);
s = sys.unixShellCommand ("echo \"" + pw + "\" | sudo -S /usr/sbin/sysctl -w net.inet.ip.forwarding=1");
if s == "" {
scriptError ("Can't start up the OPML Server because port forwarding failed.")};
s = s + sys.unixShellCommand ("sudo /sbin/ipfw add 102 fwd 127.0.0.1," + destinationPort + " tcp from any to " + sourceAddr + " " + sourcePort + " in");
s = s + sys.unixShellCommand ("sudo -K"); //drop our privs
return (true)};
macPortForward (80, 5338)}};
system.temp.opmlEditor.port80.flStarted = true}}
else {
if system.temp.opmlEditor.port80.flStarted {
inetd.stopone (@user.inetd.config.http3);
system.temp.opmlEditor.port80.flStarted = false}}}
<<bundle //test code
<<initServerOnPort80 ()
This listing is for code that runs in the OPML Editor environment. I created these listings because I wanted the search engines to index it, so that when I want to look up something in my codebase I don't have to use the much slower search functionality in my object database. Dave Winer.