1 # This file is part of NIT ( http://www.nitlanguage.org ).
3 # Copyright 2014 Alexis Laferrière <alexis.laf@xymus.net>
5 # Licensed under the Apache License, Version 2.0 (the "License");
6 # you may not use this file except in compliance with the License.
7 # You may obtain a copy of the License at
9 # http://www.apache.org/licenses/LICENSE-2.0
11 # Unless required by applicable law or agreed to in writing, software
12 # distributed under the License is distributed on an "AS IS" BASIS,
13 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 # See the License for the specific language governing permissions and
15 # limitations under the License.
17 # Web server part of the Tnitter project
26 redef class OptionContext
27 var drop
= new OptionUserAndGroup.for_dropping_privileges
28 var help
= new OptionBool("Print this message", "--help", "-h")
30 init do add_option
(drop
, help
)
33 # Address and port of the listening socket
34 fun tnitter_interface
: String do return "localhost:8080"
37 var opts
= new OptionContext
39 if not opts
.errors
.is_empty
or opts
.help
.value
then
41 print
"Usage: tnitter [Options]"
47 var vh
= new VirtualHost(tnitter_interface
)
48 var factory
= new HttpFactory.and_libevent
49 factory
.config
.virtual_hosts
.add vh
51 # Drop to a low-privileged user
52 var user_group
= opts
.drop
.value
53 if user_group
!= null then user_group
.drop_privileges
55 # Complete server config
56 vh
.routes
.add
new Route("/rest/", new TnitterREST)
57 vh
.routes
.add
new Route("/push/", new TnitterPush)
58 vh
.routes
.add
new Route(null, new TnitterWeb)
61 print
"Launching server on http://{tnitter_interface} ..."