streams/util/connect
zotlabs b13fb1cca9 command line connect utility.
Usage: util/connect uid|nick channel

uid|nick must be a local channel. The target channel can be any channel. If a nick is supplied as a target it is assumed to refer to a channel on the localhost unless @host is provided. RSS feeds and remote networks can also be connected, assuming the appropriate protocols are already enabled for the local channel. If the target channel is a non-forum on the local system and you wish bi-directional communication to be enabled you will probably need to use a second connnect command with the source and target reversed.

Examples:

	util/connect bob marketing

	Connects bob to the marketing channel

	util/connect marketing bob

	Connects the marketing channel to bob.

	util/connect 6 channelone@macgirvin.com

	Connects the channel with channel_id 6 to the Channel One public forum.

	util/connect bob https://mysite.foo/feed.rss

	Connects bob to an RSS feed if RSS feeds are allowed as connections on this site

	util/connect bob jb@diasp.org

	Connects bob to a diaspora account on diap.org (both the site and Bob's channel must previously have the Diaspora Protocol enabled).
2016-11-01 15:27:34 -07:00

64 lines
1.4 KiB
PHP
Executable file

#!/usr/bin/env php
<?php
// connect utility
if(! file_exists('include/cli_startup.php')) {
echo t('Run from the top level $Projectname web directory, as util/connect <args>') . PHP_EOL;
exit(1);
}
require_once('include/cli_startup.php');
require_once('include/follow.php');
cli_startup();
if($argc != 3) {
echo t('Usage: util/connect channel_id|channel_address channel[@hub]');
exit(1);
}
if(ctype_digit($argv[1])) {
$c = channelx_by_n($argv[1]);
}
else {
$c = channelx_by_nick($argv[1]);
}
if(! $c) {
echo t('Source channel not found.');
exit(1);
}
$result = new_contact($c['channel_id'],$argv[2],$c,false,false);
if($result['success'] == false) {
echo $result['message'];
exit(1);
}
$clone = array();
foreach($result['abook'] as $k => $v) {
if(strpos($k,'abook_') === 0) {
$clone[$k] = $v;
}
}
unset($clone['abook_id']);
unset($clone['abook_account']);
unset($clone['abook_channel']);
$abconfig = load_abconfig($c['channel_id'],$clone['abook_xchan']);
if($abconfig)
$clone['abconfig'] = $abconfig;
build_sync_packet($c['channel_id'], array('abook' => array($clone)), true);
$can_view_stream = intval(get_abconfig($c['channel_id'],$clone['abook_xchan'],'their_perms','view_stream'));
// If we can view their stream, pull in some posts
if(($can_view_stream) || ($result['abook']['xchan_network'] === 'rss'))
\Zotlabs\Daemon\Master::Summon(array('Onepoll',$result['abook']['abook_id']));
exit(0);