Skip to content

Instantly share code, notes, and snippets.

@kobigurk
Created October 8, 2016 19:45
Show Gist options
  • Save kobigurk/0e0f61faa8031c77198b37bd995d6eb3 to your computer and use it in GitHub Desktop.
Save kobigurk/0e0f61faa8031c77198b37bd995d6eb3 to your computer and use it in GitHub Desktop.
'use strict'
if(process.env.ENV === 'dev') delete process.versions['electron']
const fs = require('fs')
const path = require('path')
const ipfsd = require('ipfsd-ctl')
const IpfsApi = require('ipfs-api')
const Logger = require('logplease')
const Orbit = require('./src/Orbit')
const irc = require('irc')
const client = new irc.Client('irc.freenode.net', 'orbitbot', {
channels: ['#orbit-relay-test']
})
client.addListener('error', function(message) {
console.log('error: ', message);
})
const keystorePath = path.join(process.cwd(), '/server/keys')
require('logplease').setLogLevel('DEBUG')
// dev|debug
const MODE = process.env.ENV ? process.env.ENV : 'debug'
const logger = Logger.create("Orbit.Index-Native")
var appDataDir = process.cwd()
const ipfsDataDir = process.env.IPFS_PATH
? path.resolve(process.env.IPFS_PATH)
: path.join(appDataDir, '/ipfs')
const orbitDataDir = (MODE === 'dev')
? path.join(process.cwd() , '/data') // put orbit's data to './data' in dev mode
: path.join(appDataDir, '/orbit-data')
// Make sure we have the Orbit data directory
if (!fs.existsSync(appDataDir))
fs.mkdirSync(appDataDir)
if (!fs.existsSync(orbitDataDir))
fs.mkdirSync(orbitDataDir)
try {
let opts = {}
opts['Addresses.API'] = '/ip4/0.0.0.0/tcp/5001'
opts['Addresses.Swarm'] = ['/ip4/0.0.0.0/tcp/4001']
opts['Addresses.Gateway'] = '/ip4/0.0.0.0/tcp/8080'
let ipfsDaemon
ipfsd.local(ipfsDataDir, opts, (err, node) => {
if(err) throw err
ipfsDaemon = node
logger.info("Initializing IPFS daemon")
logger.debug(`Using IPFS repo at '${node.path}'`)
ipfsDaemon.init({ directory: ipfsDataDir }, (err, node) => {
// Ignore error (usually "repo already exists")
if (!err) {
logger.info("Starting IPFS daemon")
ipfsDaemon.startDaemon(['--enable-pubsub-experiment'], (err, ipfs) => {
console.log(ipfs);
if (err) throw err
global.ipfsInstance = IpfsApi(ipfs.apiHost, ipfs.apiPort)
let orbit = new Orbit(global.ipfsInstance, { keystorePath: keystorePath })
orbit.events.on('message', (channel, message) => {
orbit.getPost(message.payload.value)
.then((data) => {
orbit.getUser(data.meta.from)
.then((user) => {
console.log(user.name, data.content)
if (user.name != 'ircbot') {
client.say('#orbit-relay-test', `${user.name}: ${data.content}`);
}
})
})
})
orbit.events.on('connected', () => {
setTimeout(() => {
orbit.join('orbit-relay-test')
}, 3000)
})
orbit.events.on('joined', () => orbit.send('orbit-relay-test', 'hello!'))
orbit.connect('ircbot')
client.addListener('message', (from, to, message) => {
console.log(from, message)
orbit.send('orbit-relay-test', `${from}: ${message}`)
})
global.gatewayAddress = node.gatewayAddr ? node.gatewayAddr + '/ipfs/' : 'localhost:8080/ipfs/'
logger.info("IPFS daemon started at", ipfs.apiHost, ipfs.apiPort)
logger.info("Gateway at", global.gatewayAddress)
// Load the dist build or connect to webpack-dev-server
const indexUrl = MODE === 'dev'
? 'http://localhost:8000/'
: 'file://' + __dirname + '/client/dist/index.html'
})
}
})
})
} catch(e) {
logger.error("Error in index-native:", e)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment