Skip to content

Commit

Permalink
Merge pull request #79 from waartaa/cli-allinone-webserver
Browse files Browse the repository at this point in the history
Allinone run now runs web server as well.
  • Loading branch information
rtnpro committed Sep 13, 2016
2 parents 291059e + 4a11950 commit bc138ff
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 8 deletions.
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,8 +36,7 @@ A versatile IRC bouncer.

### Quickstart
```
ircb run server
ircb run web
sudo ircb run allinone
```

### Advanced
Expand All @@ -46,8 +45,9 @@ You can run the various components of ``ircb``: ``stores``, ``bouncers`` as
different processes.

- Run stores as a different process: ``ircb run stores``
- Run bouncer: ``ircb run server -m bouncer``
- Run bouncer: ``ircb run bouncer``
- Run web server: ``ircb run web``
- Run identd server: ``sudo ircb run identd``

## Connecting for IRC client

Expand Down
14 changes: 11 additions & 3 deletions ircb/cli/run.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
import click

from ircb import bouncer
from ircb.web.app import runserver as webserver
from ircb.web import app as web
from ircb import identd


Expand All @@ -22,14 +22,21 @@ def run_cli():
help='Host for identd, defaults to 0.0.0.0')
@click.option('--identd-port', default=113,
help='Port for identd, defaults to 113')
def run_allinone(host, port, identd_host, identd_port):
@click.option('--web-host', default='0.0.0.0',
help='Host for web server, defaults to 0.0.0.0')
@click.option('--web-port', default=10000,
help='Port for web server, defaults to 10000')
def run_allinone(host, port, identd_host, identd_port,
web_host, web_port):
"""Run ircb in a single process"""
import ircb.stores
import ircb.stores.base
import ircb.storeclient
ircb.stores.initialize()
loop = asyncio.get_event_loop()
bouncer_server = bouncer.Bouncer(loop).create(host, port)
identd_server = identd.IdentdServer(loop).create(identd_host, identd_port)
web_server = web.createserver(loop, web_host, web_port)
try:
loop.run_forever()
except KeyboardInterrupt:
Expand All @@ -38,6 +45,7 @@ def run_allinone(host, port, identd_host, identd_port):
identd_server.close()
loop.run_until_complete(bouncer_server.wait_closed())
loop.run_until_complete(identd_server.wait_closed())
loop.run_until_complete(web_server.wait_closed())


@click.command(name='stores')
Expand Down Expand Up @@ -66,7 +74,7 @@ def run_bouncer(host, port):
@click.command(name='web')
def run_web(host, port):
"""Run ircb web server"""
webserver(host, port)
web.runserver(host, port)


@click.command(name='identd')
Expand Down
9 changes: 7 additions & 2 deletions ircb/web/app.py
Original file line number Diff line number Diff line change
Expand Up @@ -47,17 +47,22 @@ def init(loop, host='0.0.0.0', port=10000):
NetworkConnectionView,
name='network_connection')
srv = yield from loop.create_server(
app.make_handler(logger=logger, access_log=logger), '0.0.0.0', 10001)
app.make_handler(logger=logger, access_log=logger), host, port)
return srv


def createserver(loop, host='0.0.0.0', port=10000):
return loop.run_until_complete(init(loop, host, port))


def runserver(host='0.0.0.0', port=10000):
loop = asyncio.get_event_loop()
loop.run_until_complete(init(loop, host=host, port=port))
server = createserver(loop, host=host, port=port)
try:
loop.run_forever()
except KeyboardInterrupt:
pass
loop.run_until_complete(server.wait_closed())

if __name__ == '__main__':
runserver()

0 comments on commit bc138ff

Please sign in to comment.