Jeff,
This one can be started and stopped. It also traps any errors in the forever loop,
making it somewhat impervious. Also note the complete lack of security.

--Ryan

rebol [
    Title: "Even More Slightly Upgraded SID Server"
]

running: FALSE
listen-port: open/lines tcp://:8080
max-sid: "5000"
send-http: func [data mime] [
  insert data rejoin ["HTTP/1.0 200 OK^/Content-type: " mime "^/^/"]
  insert http-port data
]

command-list: [
  "/kill" [
     mime: "text/html"
     send-http copy "<H1>SERVER KILLED</H1>" mime
     close http-port
     quit
  ]
  "/reset" [
    mime: "text/html"
    send-http copy "<H1>SERVER RESET</H1>" mime
    max-sid: "5000"
  ]
  "/start" [
    mime: "text/html"
    send-http copy "<H1>SERVER STARTED</H1>" mime
    running: TRUE
  ]
  "/stop" [
    mime: "text/html"
    send-http copy "<H1>SERVER STOPPED</H1>" mime
    running: FALSE
  ]
  "/" [
    either running [
      max-sid: form (load max-sid) + 5000
      mime: "text/plain"
      send-http copy max-sid mime
    ] [
      mime: "text/html"
      send-http copy "<H1>SERVER NOT RUNNING</H1>" mime
    ]
  ]
]

forever [
  error? try [
    http-port: first wait listen-port
    request: first http-port
    command: second parse/all request " "
    do select command-list command
    close http-port
  ]
]

--

Ryan Cole
Programmer Analyst
www.iesco-dms.com
707-468-5400


Reply via email to