# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
-listen_port = 13850
+listen_port = process.env.app_port ? 9988
sys = require 'sys'
fs = require 'fs'
http = require 'http'
querystring = require 'querystring'
url = require 'url'
+console.log "required builtins"
less = require 'less'
+console.log "required less"
coffee = require 'coffee-script'
+console.log "required coffee-script"
model = require './common.coffee'
+console.log "required common.coffee"
games = {}
max_concurrent_games = 50
html_handler = (args, out, request, url_parts) ->
fs.readFile 'index.html', 'utf8', (err, data) ->
if err
- return out.end 'Server failed to read index.html'
+ return out.end "Server failed to read index.html: #{err}"
out.end data
clean_pathname_regex = new RegExp('[^a-zA-Z/_.-]')
str = str.replace clean_pathname_regex2, '/_'
return str.replace clean_pathname_regex3, '_'
-# serve javascript files from within /usr/share/javascript
-javascript_handler = (args, out, request, url_parts) ->
- filename = clean_pathname "/usr/share/#{url_parts.pathname}"
+# serve javascript files from within external/
+external_javascript_handler = (args, out, request, url_parts) ->
+ filename = clean_pathname "external/#{url_parts.pathname.substr 10}"
fs.readFile filename, 'utf8', (err, data) ->
if err
out.writeHead 404
rel_path = url_parts.pathname.substr 1
- if rel_path.substr(0, 11) is 'javascript/'
- return javascript_handler url_parts.query, res, req, url_parts
+ if rel_path.substr(0, 9) is 'external/'
+ return external_javascript_handler url_parts.query, res, req, url_parts
else if rel_path.substr(rel_path.length - 4) is '.css'
res.writeHead 200, 'Content-Type': 'text/css'
return css_handler url_parts.query, res, req, url_parts
return html_handler url_parts.query, res, req, url_parts
+################## INIT ####################
+# make sure the current working directory is correct
+process.chdir __dirname
+
setInterval expire_old_games, 2 * 60 * 1000 # check every 2 minutes for expired games
http_server.listen listen_port, "127.0.0.1"