Created
October 8, 2016 19:45
-
-
Save kobigurk/0e0f61faa8031c77198b37bd995d6eb3 to your computer and use it in GitHub Desktop.
This file contains hidden or 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
'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