Bugs item #482056, was opened at 2001-11-15 07:00 You can respond by visiting: http://sourceforge.net/tracker/?func=detail&atid=103152&aid=482056&group_id=3152
Category: Scripting: Other Group: aolserver3_3_1 >Status: Closed >Resolution: Wont Fix Priority: 5 Submitted By: Pol Ouilapan (polawat) Assigned to: Kriston Rehberg (kriston) Summary: tcl script can shutdown server Initial Comment: A .tcl file containing only the word 'exit' in it can shutdown the server. If you put this file anywhere under your web site root directory and access it with your web browser, AOLServer will go down. Is this a hole in the system or is it a mis- configuration issue? I'm using AOLserver/3.3.1+ad13. ---------------------------------------------------------------------- >Comment By: Kriston Rehberg (kriston) Date: 2002-03-19 15:15 Message: Logged In: YES user_id=16427 We're closing this ticket as it is acceptable behavior for something that runs and relies on Tcl. ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2001-11-16 11:04 Message: Logged In: NO namespace.tcl creates a script that is run in each new interpreter after startup. That script builds procs and namespaces but not inline code. Inline code such as rename exit _exit only gets evaluated once in the startup intrepreter. If you want inline code to run on each new intrepreter you have to tack it on to the script that is generated by namespace.tcl ---------------------------------------------------------------------- Comment By: Dossy Shiobara (dossy) Date: 2001-11-16 10:31 Message: Logged In: YES user_id=21885 polawat, Try adding the code to the end of your nsd.tcl instead, then. However, I thought modules/tcl/init.tcl got loaded for every interpreter when the interp gets created. Maybe I was wrong. -- Dossy ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2001-11-16 09:51 Message: Logged In: NO #you should be able to redefine exit proc exit {args} { ns_log Notice "exit is not allowed" } ---------------------------------------------------------------------- Comment By: Pol Ouilapan (polawat) Date: 2001-11-16 02:12 Message: Logged In: YES user_id=120476 Dossy, I did exactly that - added "rename exit {}" and restart nsd. I can still bring the server down with 'exit'. Shouldn't matter if I still have other nsd processes running, should it? - Polawat. ---------------------------------------------------------------------- Comment By: Dossy Shiobara (dossy) Date: 2001-11-16 01:23 Message: Logged In: YES user_id=21885 polawat, Did you do it from where you installed AOLserver, and did you then restart AOLserver? Typically, AOLserver gets installed into /usr/local/aolserver -- you want to basically add the line "rename exit {}" to the end of the file /usr/local/aolserver/modules/tcl/init.tcl, and then restart the nsd process. -- Dossy ---------------------------------------------------------------------- Comment By: Pol Ouilapan (polawat) Date: 2001-11-16 00:53 Message: Logged In: YES user_id=120476 I tried the rename as suggested, but didn't seem to work. cat >>modules/tcl/init.tcl <<-EOF rename exit {} EOF ---------------------------------------------------------------------- Comment By: Dossy Shiobara (dossy) Date: 2001-11-15 14:38 Message: Logged In: YES user_id=21885 Changing the behavior of exit in nsd core would be a big disservice. The formation of my AOLserver testing framework relies on it. ;-) If you want to avoid people accidentally shutting your AOLserver down by invoking "exit" by accident, do this: cat >>modules/tcl/init.tcl <<-EOF rename exit _real_exit EOF If you want to prevent exit from being invoked at all, do this: cat >>modules/tcl/init.tcl <<-EOF rename exit {} EOF IMHO, this is the best solution to this problem. For people who run public servers, they can "disable" the exit proc using the second approach. For people (such as myself) who NEED the exit proc, either the first approach, or not changing anything at all, accomodates them. If what I've suggested here is a reasonable solution, I think we should close this ticket. -- Dossy ---------------------------------------------------------------------- Comment By: Scott Goodwin (scottg) Date: 2001-11-15 11:32 Message: Logged In: YES user_id=37651 The last comment posted here wasn't all that helpful; I think it tends to turn people away from this server and the community. Anyway, I pointed out this problem about a year ago in the nscp module. When I typed 'exit' to close the telnet session to nscp, the server would shutdown. That was happening because the Tcl interp that nscp was using did what I told it -- exited, which took the server with it. The solution was to create a new exit command that either did a Ctrl-D for you (which was the proper way to exit nscp) or a No-Op (I forget which way it was implemented). I don't think this is really a bug, as you're not supposed to explicitly exit a Tcl script running in AOLserver. However, I think it should be fairly easy to replace the exit command with code that does a No-Op or calls the normal "close my connection" code. Thanks for submitting this report, /s. ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2001-11-15 11:12 Message: Logged In: NO "Doctor, it hurts when I do this!" "Don't do that." ---------------------------------------------------------------------- You can respond by visiting: http://sourceforge.net/tracker/?func=detail&atid=103152&aid=482056&group_id=3152