-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
02047a8
commit e288ca2
Showing
18 changed files
with
600 additions
and
111 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
#!/usr/bin/env node | ||
|
||
var program = require('commander'); | ||
|
||
program | ||
.version(require('../package').version) | ||
|
||
.command('run', 'Run the axle server') | ||
.command('install', 'Install the axle services to run all the time') | ||
.command('uninstall', 'Remove the axle services (you should be ashamed)') | ||
// .command('status', 'Check on the ') | ||
// .command('daemon', 'Run the axle-server daemon') | ||
|
||
.parse(process.argv); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
#!/usr/bin/env node | ||
|
||
require('coffee-script'); | ||
require('../lib/cli').daemon(); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
#!/usr/bin/env node | ||
|
||
require('coffee-script'); | ||
require('../lib/cli').install(); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
#!/usr/bin/env node | ||
|
||
require('coffee-script'); | ||
require('../lib/cli').run_server(); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
#!/usr/bin/env node | ||
|
||
require('coffee-script'); | ||
require('../lib/cli').uninstall(); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,50 +1,11 @@ | ||
exports.version = require('./package').version | ||
|
||
exports.Configuration = require './lib/configuration' | ||
|
||
exports.Axle = require './lib/axle' | ||
exports.Logger = require './lib/logger' | ||
exports.Client = require './lib/client' | ||
exports.Server = require './lib/server' | ||
exports.Service = require './lib/service' | ||
|
||
exports.start_server = -> | ||
require 'colors' | ||
coupler = require 'coupler' | ||
|
||
log = -> console.log '[' + 'axle'.cyan + '] ' + arguments[0] | ||
|
||
axle = new exports.Axle(process.env.PORT || 3000) | ||
coupler.accept(tcp: 1313).provide(axle: (connection) -> new exports.Service(axle, connection)) | ||
|
||
axle.on 'listening', (address) -> log 'Listening on port ' + address.port.toString().green | ||
axle.on 'route:add', (route) -> log 'Added'.green + ' route ' + route.host + ' => ' + route.endpoint | ||
axle.on 'route:remove', (route) -> log 'Removed'.red + ' route ' + route.host + ' => ' + route.endpoint | ||
axle.on 'route:match', (from, to) -> log 'Routing ' + from.yellow + ' to ' + "#{to.host}:#{to.port}".green | ||
axle.on 'route:miss', (host) -> log 'No route for ' + host.red | ||
|
||
axle.start() | ||
axle | ||
|
||
exports.start_client = -> | ||
require 'colors' | ||
coupler = require 'coupler' | ||
|
||
log = -> console.log '[' + 'axle'.cyan + '] ' + arguments[0] | ||
|
||
if process.env.AXLE_DOMAINS? | ||
domains = process.env.AXLE_DOMAINS.split(',') | ||
else | ||
try | ||
pkg = require(process.cwd() + '/package') | ||
domains ?= pkg.axle_domains | ||
domains ?= "#{pkg.name}.localhost.dev" | ||
domains ?= [] | ||
domains = [domains] unless Array.isArray(domains) | ||
|
||
return null unless domains? | ||
|
||
axle_service = coupler.connect(tcp: 1313).consume('axle') | ||
client = new exports.Client(axle_service, domains) | ||
|
||
client.on 'listening', (server) -> log 'Listening on port ' + server.address().port.toString().green | ||
client.on 'connected', -> log 'Listening on ' + client.domains.map((d) -> d.green).join(', ') | ||
client.on 'reconnected', -> log 'Reconnected'.green + ' to axle service' | ||
client.on 'disconnected', -> log 'Lost Connection'.yellow + ' to axle service' | ||
|
||
client.start() | ||
client | ||
exports.Dns = require './lib/dns' | ||
exports.OsxResolverManager = require './lib/osx_resolver_manager' |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,120 @@ | ||
# - axle registry | ||
# - tcp service | ||
# - dns server | ||
# - proxy | ||
# - web server for status | ||
|
||
os = require 'os' | ||
axle = require '../index' | ||
walkabout = require 'walkabout' | ||
exec = require('child_process').exec | ||
|
||
Logger = axle.Logger | ||
|
||
AXLE_RESOLVER = """ | ||
# Resolver for axle | ||
nameserver 127.0.0.1 | ||
port #{axle.Configuration.dns.port} | ||
""" | ||
|
||
AXLE_PLIST_FILE = walkabout('/Library/LaunchAgents/com.mattinsler.axle.plist') | ||
AXLE_DAEMON_PLIST = """ | ||
<?xml version="1.0" encoding="UTF-8"?> | ||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> | ||
<plist version="1.0"> | ||
<dict> | ||
<key>Label</key> | ||
<string>com.mattinsler.axle</string> | ||
<key>ProgramArguments</key> | ||
<array> | ||
<string>#{process.execPath}</string> | ||
<string>#{walkabout(__dirname).join('../bin/axle-server-run').absolute_path}</string> | ||
</array> | ||
<key>KeepAlive</key> | ||
<true/> | ||
<key>RunAtLoad</key> | ||
<true/> | ||
<key>Debug</key> | ||
<true/> | ||
<key>StandardOutPath</key> | ||
<string>/var/log/com.mattinsler.axle.log</string> | ||
<key>StandardErrorPath</key> | ||
<string>/var/log/com.mattinsler.axle.log</string> | ||
</dict> | ||
</plist> | ||
""" | ||
|
||
exports.install = -> | ||
Logger.info 'install' | ||
|
||
return Logger.error('Try running with sudo') unless process.getuid() is 0 | ||
|
||
Logger.info 'mkdirp /etc/resolver' | ||
walkabout('/etc/resolver').mkdirp_sync() | ||
# Logger.info 'write /etc/resolver/axle' | ||
# walkabout('/etc/resolver/axle').write_file_sync(AXLE_RESOLVER) | ||
|
||
Logger.info 'write', AXLE_PLIST_FILE.absolute_path | ||
walkabout(AXLE_PLIST_FILE.dirname).mkdirp_sync() | ||
AXLE_PLIST_FILE.write_file_sync(AXLE_DAEMON_PLIST) | ||
|
||
Logger.info 'launch axle server' | ||
exec "launchctl unload #{AXLE_PLIST_FILE.absolute_path}", -> | ||
exec "launchctl load #{AXLE_PLIST_FILE.absolute_path}", -> | ||
Logger.info 'ok' | ||
|
||
exports.uninstall = -> | ||
Logger.info 'uninstall' | ||
|
||
return Logger.error('Try running with sudo') unless process.getuid() is 0 | ||
|
||
# Logger.info 'rm /etc/resolver/axle' | ||
# walkabout('/etc/resolver/axle').unlink_sync() if walkabout('/etc/resolver/axle').exists_sync() | ||
|
||
Logger.info 'stop axle server' | ||
exec "launchctl unload #{AXLE_PLIST_FILE.absolute_path}", -> | ||
Logger.info 'rm', AXLE_PLIST_FILE.absolute_path | ||
AXLE_PLIST_FILE.unlink_sync() if AXLE_PLIST_FILE.exists_sync() | ||
|
||
Logger.info 'ok' | ||
|
||
exports.run_client = -> | ||
client = new axle.Client() | ||
|
||
if process.env.AXLE_DOMAINS? | ||
client.domains = process.env.AXLE_DOMAINS.split(',') | ||
else | ||
try | ||
pkg = require(process.cwd() + '/package') | ||
client.domains ?= pkg['axle-domains'] | ||
client.domains ?= ["#{pkg.name}.localhost.dev"] | ||
client.domains ?= [] | ||
client.domains = [domains] unless Array.isArray(domains) | ||
|
||
client.start() | ||
|
||
exports.run_server = -> | ||
Logger.info 'server' | ||
|
||
return Logger.error('Try running with sudo') unless process.getuid() is 0 | ||
|
||
instance = new axle.Axle() | ||
|
||
servers = [] | ||
servers.push(new axle.Server(instance)) if instance.config.server.enabled | ||
servers.push(new axle.Service(instance)) if instance.config.service.enabled | ||
servers.push(new axle.Dns(instance)) if instance.config.dns.enabled | ||
|
||
servers.push(new axle.OsxResolverManager(instance)) if os.platform() is 'darwin' | ||
|
||
servers.forEach (s) -> s.start() | ||
|
||
process.on 'SIGTERM', -> | ||
servers.forEach (s) -> s.stop() | ||
Logger.info 'bye bye' | ||
process.exit(0) | ||
|
||
Logger.info 'started' | ||
|
||
exports.daemon = -> | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.