aboutsummaryrefslogtreecommitdiffstats
path: root/util/connect
diff options
context:
space:
mode:
authorzotlabs <mike@macgirvin.com>2016-11-01 15:27:34 -0700
committerzotlabs <mike@macgirvin.com>2016-11-01 15:27:34 -0700
commitb13fb1cca92807a86b9802496c5f809263dcedfd (patch)
treeb8651e77bc74785b3bb2946d39cc5bb03bca0323 /util/connect
parent863ee9e6dd890d49602b67b9ffbed1bab816b54c (diff)
downloadvolse-hubzilla-b13fb1cca92807a86b9802496c5f809263dcedfd.tar.gz
volse-hubzilla-b13fb1cca92807a86b9802496c5f809263dcedfd.tar.bz2
volse-hubzilla-b13fb1cca92807a86b9802496c5f809263dcedfd.zip
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).
Diffstat (limited to 'util/connect')
-rwxr-xr-xutil/connect64
1 files changed, 64 insertions, 0 deletions
diff --git a/util/connect b/util/connect
new file mode 100755
index 000000000..eed14961c
--- /dev/null
+++ b/util/connect
@@ -0,0 +1,64 @@
+#!/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);