
Research
Two Malicious Rust Crates Impersonate Popular Logger to Steal Wallet Keys
Socket uncovers malicious Rust crates impersonating fast_log to steal Solana and Ethereum wallet keys from source code.
LAN media server, IPTV broadcaster, and media converter.
Pre-Requisites
Installation
Usage
Woobi UI
Configuration
Woobi.Sources
Screen Shots
Contributing
License
You need ffmpeg and node >= v4.
yarn install woobi
var Woobi = require('woobi');
Woobi.init({
channelPort: 13000,
host: 'studio',
loadSaved: true,
proxy: {
port: 7001,
nodeadmin: false,
host: '0.0.0.0',
keystone: true, // required to save channel configs
auth: false, // set to true once you create a new user @ /keystone
},
adapters: [
{
name: 'mysql',
adapter: 'mysql',
config: {
user: 'MYSQLUSER',
pass: 'MYSQLPASS',
host: 'MYSQLHOST',
database: 'MYSQLDB'
},
}
]
});
http://localhost:7001
If you set the proxy
option you can use the Woobi UI.
@param - options - Object
@param - callback - Function
return Promise
option | type | info |
---|---|---|
host | String | Host to use to access Woobi UI and api routes. |
proxy | false|Object | Optional server for api routes and Woobi UI. |
adapters | Object|Array | Adapters for local media. |
loadSaved | Boolean | Load saved channels on boot that are set to autostart. |
channelPort | Number | If a port is not supplied the port will be pulled starting at this number. |
mediaPath | String | Full path to store saved HLS files. Defaults to /module_path/media |
media passthrough route | String | Api route to direct access media. |
media passthrough path | String | Replace the path above with the actual server path. |
video passthrough route | String | Api route to direct access videos. |
video passthrough path | String | Replace the path above with the actual server path. |
option | type | info |
---|---|---|
host | String | Host to start on. default 0.0.0.0 |
port | Object | Port for api routes and Woobi UI access. |
keystone | Boolean | Use keystone if you want to save channel configs from the UI. |
nodeadmin | Boolean | Load the nodeadmin app. |
auth | Boolean | Used with keystone. Set to false at first to create a new user @ http://localhost/keystone |
You can add any keystone option to the proxy configuration.
If you want to use channel saving and do not want to use keystone, then attach a mongoose model toWoobi.libs._mongo.ChannelConfig.model
option | type | info |
---|---|---|
name | String | Unique name for the adapter. Can be accessed at Woobi.libs[name] |
adapter | Object | Port for api routes and Woobi UI access. |
config | Object | |
config.user | String | username |
config.pass | String | password |
config.host | String | host |
config.database | String | database |
note - The default adapter name should be mysql.
@param - options - Object
@param - callback - Function
let file = new Woobi.Sources.File({
name: 'Test',
file: '/home/woobi/Pitures/woobi.mp3'
});
option | type | info |
---|---|---|
name | String | Unique name for asset |
file | Object | Full path to file. |
@param - options - Object
@param - callback - Function
let fluent = new Woobi.Sources.Fluent({
name: 'Test',
file: '/home/woobi/Videos/woobi.mp4',
streamable: true
});
option | type | info |
---|---|---|
name | String | Unique name for asset |
file | Object | optional Full path to file. |
stream | Object | optional Source stream. |
progress | Boolean | Emit progress info. |
metadata | Object | Object of information about file. Should be flat with exception of the art key(an Array). |
seek | Number | |
inputFormat | String | |
inputOptions | Array|String | |
outputOptions | Array|String | |
videoFilters | Object | |
onlyOptions | Array|String | |
encode | Boolean | |
streamable | Boolean | |
format | String |
@param - options - Object
@param - callback - Function
let program = new Woobi.Sources.Program({
name: 'TV',
program: 'gnutv',
arg: '-channels /home/woobi/dvb/channels.conf -out udp 10.10.10.82 13333 WAGA5',
redo: '-channels /home/woobi/dvb/channels.conf -out udp 10.10.10.82 13333 ##CMD##',
});
option | type | info |
---|---|---|
name | String | Unique name for asset |
program | String | Program name. |
args | String | Argument String. |
redo | String | String used to restart program. |
@param - options - Object
@param - callback - Function
let updSource = new Woobi.Sources.UDP({
name: 'UDPSource',
host: '10.10.10.10',
port: 7005
});
option | type | info |
---|---|---|
name | String | Unique name for asset |
host | String | |
port | Number |
let bridge = new Woobi.Streams.bridge();
normal passthrough stream
@param - options - Object
@param - callback - Function
let hls = new Woobi.Streams.HLS({
name: 'Test',
file: '/home/woobi/Videos/woobi.mp4',
streamable: true
});
option | type | info |
---|---|---|
name | String | Unique name for asset |
file | Object | optional Full path to file. |
stream | Object | optional Source stream. |
progress | Boolean | Emit progress info. |
metadata | Object | Object of information about file. Should be flat with exception of the art key(an Array). |
seek | Number | |
inputFormat | String | |
inputOptions | Array|String | |
outputOptions | Array|String | |
onlyOptions | Array|String | |
hlsOptions | Array|String | |
passthrough | Boolean | |
streamable | Boolean | |
format | String |
@param - options - Object
@param - callback - Function
let mpegts = new Woobi.Streams.MpegTS({
name: 'Test',
file: '/home/woobi/Videos/woobi.mp4',
streamable: true
});
option | type | info |
---|---|---|
name | String | Unique name for asset |
program | String | |
path | String | |
urlPath | String | |
source | Object | input source. |
video | String | |
audio | String | |
other | String | |
segment | String |
@param - source - Stream
@param - rate - Number @param - onEnd - Function
let throttle = new Woobi.Streams.throttle(stream, 1000);
// throttle.stream.pipe(somewhere)
let transformer = new Woobi.Streams.transform();
transform stream
@param - options - Object
@param - callback - Function
let updStream = new Woobi.Streams.UDP({
name: 'UDPSource',
host: '10.10.10.11',
port: 7006
});
option | type | info |
---|---|---|
name | String | Unique name for asset |
host | String | |
port | Number |
Use Woobi.addChannel(name, opts).then()
to add channels instead of directly with new Woobi.Channel(name, opts, callback)
. This gives a directory of channels for iptv.
/**
* grabbing a tv tuner card
**/
Woobi.addChannel('TV', {
loop: true,
assets: [
{
type: 'program',
name: 'Air',
arg: 'gnutv -channels /home/woobi/dvb/channels.conf -out udp 10.10.10.82 13333 WAGA5',
redo: 'gnutv -channels /home/woobi/dvb/channels.conf -out udp 10.10.10.82 13333 ##CMD##',
},
{
type: 'udpSink',
port: 13333,
host: '10.10.10.82',
name: 'AirTV',
},
{
type: 'udpStream',
port: 13333,
host: '10.10.10.87',
name: 'streamAir'
},
],
}, (err) => {
if(err) console.log('##ERROR##',err);
});
/**
* using the library adapter
**/
Woobi.libs.mysql.movies()
.then((movies) => {
movies = movies.map(r => {
return { name: r.name, file: r.file, progress: true, metadata: r, encode: false }
});
return Woobi.addChannel('recentMovies', {
files: movies,
loop: true,
noTransition: true,
hls: {
type: 'hls',
name: 'movieChannel',
passthrough: true, // uses the stream as is / no transcoding
}
});
})
.catch((err) => {
if(err) debug('##ERROR##',err);
});
// channel is now available at Woobi.channels['movieChannel']
FAQs
stream media across a lan
The npm package woobi receives a total of 3 weekly downloads. As such, woobi popularity was classified as not popular.
We found that woobi demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Socket uncovers malicious Rust crates impersonating fast_log to steal Solana and Ethereum wallet keys from source code.
Research
A malicious package uses a QR code as steganography in an innovative technique.
Research
/Security News
Socket identified 80 fake candidates targeting engineering roles, including suspected North Korean operators, exposing the new reality of hiring as a security function.