diff options
author | Giuseppe Bilotta <giuseppe.bilotta@gmail.com> | 2021-06-09 08:06:17 +0200 |
---|---|---|
committer | Matthias Hecker <36882671+mattzque@users.noreply.github.com> | 2021-06-09 13:49:34 +0200 |
commit | 744be8fffda676653475d3034786e8ee246de609 (patch) | |
tree | 77507d28265139b93fbaf48a70bf85765b3935c7 | |
parent | 464e8afad5d3c72378b680f4579773adbd089f8f (diff) |
Partial revert: reintroduce rbot-remote
It now interfaces with the webservice 'dispatch' feature
instead of the previous remotectl plugin, but the external API
remains the same, for compatibility with existing users.
-rw-r--r-- | Rakefile | 2 | ||||
-rwxr-xr-x | bin/rbot-remote | 74 | ||||
-rw-r--r-- | man/rbot-remote.xml | 217 | ||||
-rw-r--r-- | rbot.gemspec | 3 |
4 files changed, 294 insertions, 2 deletions
@@ -7,7 +7,7 @@ rule '.1' => ['.xml'] do |t| sh "xsltproc -nonet -o #{t.name} /usr/share/sgml/docbook/stylesheet/xsl/nwalsh/manpages/docbook.xsl #{t.source}" end -task :manpages => ['man/rbot.1'] +task :manpages => ['man/rbot.1', 'man/rbot-remote.1'] SPECFILE = 'rbot.gemspec' # The Rakefile is also used after installing the gem, to build diff --git a/bin/rbot-remote b/bin/rbot-remote new file mode 100755 index 00000000..0c1cd578 --- /dev/null +++ b/bin/rbot-remote @@ -0,0 +1,74 @@ +#! /usr/bin/ruby + +require 'uri' +require 'net/http' +require 'optparse' + +#++ +# +# :title: webserver dispatch example script +# +# Author:: jsn (dmitry kim) <dmitry dot kim at gmail dot org> +# Copyright:: (C) 2007 dmitry kim +# License:: in public domain +# Modified by:: Giuseppe "Oblomov" Bilotta <giuseppe dot bilotta at gmail dot com> +# Copyright:: (C) 2020 Giuseppe Bilotta + +user = nil +pw = nil +dst = nil +uri = 'http://localhost:7268/dispatch' + +opts = OptionParser.new +opts.on('-u', '--user <user>', "remote user (mandatory)") { |v| user = v } +opts.on('-p', '--password <pw>', "remote user password (mandatory)") { |v| pw = v } +opts.on('-d', '--destination <user or #channel>') { |v| dst = v } +opts.on('-r', '--uri <drb uri>', "rbot url (#{uri})") { |v| uri = v } +opts.on('-h', '--help', "this message") { |v| pw = nil } # sorry! +opts.on('-a', '--about', "what it's all about.") { |v| + puts <<EOF +This is just a proof-of-concept example for the rbot webserver dispatch feature. +This program reads lines of text from the standard input and sends them to a specified irc +channel or user via rbot. Make sure you enable the webservice dispatch feature +before use. + +The necessary setup is: + 1) # create a new rbot user ("rmuser", in this example) with a password + # ("rmpw", in this example). in an open query to rbot: + + <you> user create rmuser rmpw + <rbot> created botuser remote + + 2) # add a permission to say for your newly created remote user: + + <you> allow rmuser to do say #channel message + <rbot> okies! + + 3) # run the #{$0} and type something. the message should + # show up on your channel / arrive as an irc private message. + + [you@yourhost ~]$ ./bin/rbot-remote -u rmuser -p rmpw -d '#your-channel' + hello, world! + <Ctrl-D> + [you@yourhost ~]$ +EOF + exit 0 +} +opts.parse! + +if !pw || !user || !dst + puts opts.to_s + exit 0 +end + +uri = URI(uri) +uri.user = user +uri.password = pw + +loop { + s = gets or break + s.chomp! + resp = Net::HTTP.post_form(uri, 'command' => ['say', dst, s].join(' ')) + puts [resp.code, resp.message, resp.body].join("\t") +} + diff --git a/man/rbot-remote.xml b/man/rbot-remote.xml new file mode 100644 index 00000000..b68b4ef0 --- /dev/null +++ b/man/rbot-remote.xml @@ -0,0 +1,217 @@ +<?xml version='1.0' encoding='utf-8'?> +<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN" +"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [ + +<!-- + +Process this file with an XSLT processor: `xsltproc \ +-''-nonet /usr/share/sgml/docbook/stylesheet/xsl/nwalsh/\ +manpages/docbook.xsl manpage.dbk'. A manual page +<package>.<section> will be generated. You may view the +manual page with: nroff -man <package>.<section> | less'. A +typical entry in a Makefile or Makefile.am is: + +DB2MAN=/usr/share/sgml/docbook/stylesheet/xsl/nwalsh/\ +manpages/docbook.xsl +XP=xsltproc -''-nonet + +manpage.1: manpage.dbk + $(XP) $(DB2MAN) $< + +The xsltproc binary is found in the xsltproc package. The +XSL files are in docbook-xsl. Please remember that if you +create the nroff version in one of the debian/rules file +targets (such as build), you will need to include xsltproc +and docbook-xsl in your Build-Depends control field. + +--> + + <!-- Fill in your name for FIRSTNAME and SURNAME. --> + <!ENTITY dhfirstname "<firstname>Marc</firstname>"> + <!ENTITY dhsurname "<surname>Dequènes</surname>"> + <!ENTITY gbgname "<firstname>Giuseppe</firstname>"> + <!ENTITY gbfname "<surname>Bilotta</surname>"> + <!-- Please adjust the date whenever revising the manpage. --> + <!ENTITY dhdate "<date>20100701</date>"> + <!-- SECTION should be 1-8, maybe w/ subsection other parameters are + allowed: see man(7), man(1). --> + <!ENTITY dhsection "<manvolnum>1</manvolnum>"> + <!ENTITY dhemail "<email>Duck@DuckCorp.org</email>"> + <!ENTITY gbemail "<email>giuseppe.bilotta@gmail.com</email>"> + <!ENTITY dhusername "Marc Dequènes (Duck)"> + <!ENTITY gbusername "Giuseppe Bilotta"> + <!ENTITY dhucapp "<refentrytitle>RBOT-REMOTE</refentrytitle>"> + <!ENTITY dhapp "rbot-remote"> + <!ENTITY dhpackage "rbot"> + <!ENTITY dhpackageversion "0.9.15"> + + <!ENTITY debian "<productname>Debian</productname>"> + <!ENTITY gnu "<acronym>GNU</acronym>"> + <!ENTITY gpl "&gnu; <acronym>GPL</acronym>"> +]> + +<refentry id="&dhapp;.1"> + + <refentryinfo> + <productname>&dhapp;</productname> + <authorgroup> + <author> + &dhfirstname; + &dhsurname; + &dhemail; + <contrib>&debian; package maintainer</contrib> + </author> + <author> + &gbgname; + &gbfname; + &gbemail; + <contrib>&dhapp; maintainer</contrib> + </author> + </authorgroup> + <copyright> + <year>2004-2009</year> + <holder>&dhusername;</holder> + </copyright> + <copyright> + <year>2010</year> + <holder>&gbusername;</holder> + </copyright> + &dhdate; + </refentryinfo> + + <refmeta> + &dhucapp; + &dhsection; + <refmiscinfo class="manual">&dhapp; man page</refmiscinfo> + <refmiscinfo class="source">&dhpackage;</refmiscinfo> + <refmiscinfo class="version">&dhpackageversion;</refmiscinfo> + </refmeta> + + <refnamediv> + <refname>&dhapp;</refname> + + <refpurpose>IRC bot written in ruby</refpurpose> + </refnamediv> + + <refsynopsisdiv> + <cmdsynopsis> + <command>&dhapp;</command> + + <group choice="req"> + <group choice="req"> + <arg><option>-u USER</option></arg> + <arg><option>--user USER</option></arg> + </group> + <group choice="req"> + <arg><option>-p PASSWORD</option></arg> + <arg><option>--password PASSWORD</option></arg> + </group> + </group> + <group choice="opt"> + <group choice="req"> + <arg><option>-d DEST</option></arg> + <arg><option>--destination DEST</option></arg> + </group> + <group choice="req"> + <arg><option>-r DRB_URI</option></arg> + <arg><option>--uri DRB_URI</option></arg> + </group> + <group choice="req"> + <arg><option>-h</option></arg> + <arg><option>--help</option></arg> + </group> + <group choice="req"> + <arg><option>-a</option></arg> + <arg><option>--about</option></arg> + </group> + </group> + + </cmdsynopsis> + </refsynopsisdiv> + <refsect1> + <title>DESCRIPTION</title> + + <para><command>&dhapp;</command> is a proof-of-concept example for + rbot druby-based api. This program reads lines of text from the standard + input and sends them to a specified irc channel or user via rbot. + </para> + + <para>Make sure you have the remotectl plugin loaded and assigned the needed + rights to the user before use. + </para> + + </refsect1> + <refsect1> + <title>OPTIONS</title> + + <para>This program follow the usual &gnu; command line syntax, + with long options starting with two dashes (`-'). A summary of + options is included below.</para> + + <variablelist> + <varlistentry> + <term><option>-u <parameter>USER</parameter></option></term> + <term><option>--user <parameter>USER</parameter></option></term> + <listitem> + <para>Remote user.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term><option>-p <parameter>PASSWORD</parameter></option></term> + <term><option>--password <parameter>PASSWORD</parameter></option></term> + <listitem> + <para>Remote user password.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term><option>-d <parameter>DEST</parameter></option></term> + <term><option>--destination <parameter>DEST</parameter></option></term> + <listitem> + <para>Destination for message (user or channel).</para> + </listitem> + </varlistentry> + + <varlistentry> + <term><option>-r <parameter>DRB_URI</parameter></option></term> + <term><option>--uri <parameter>DRB_URI</parameter></option></term> + <listitem> + <para>Rbot url.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term><option>-h</option></term> + <term><option>--help</option></term> + <listitem> + <para>Show summary of options.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term><option>-a</option></term> + <term><option>--about</option></term> + <listitem> + <para>Tell what it's all about.</para> + </listitem> + </varlistentry> + </variablelist> + </refsect1> + <refsect1> + <title>VERSION</title> + + <para>This manual page was written by &dhusername; &dhemail; for + the &debian; system (but may be used by others). Permission is + granted to copy, distribute and/or modify this document under + the terms of the &gnu; General Public License, Version 3 or + any later version published by the Free Software Foundation. + </para> + <para> + On Debian systems, the complete text of the GNU General Public + License can be found in /usr/share/common-licenses/GPL. + </para> + + </refsect1> +</refentry> + diff --git a/rbot.gemspec b/rbot.gemspec index 7792c3dd..f5ee4d3f 100644 --- a/rbot.gemspec +++ b/rbot.gemspec @@ -27,6 +27,7 @@ Gem::Specification.new do |s| 'INSTALL', 'Usage_en.txt', 'man/rbot.xml', + 'man/rbot-remote.xml', 'setup.rb', 'launch_here.rb', 'po/*.pot', @@ -34,7 +35,7 @@ Gem::Specification.new do |s| ] s.bindir = 'bin' - s.executables = ['rbot', 'rbotdb'] + s.executables = ['rbot', 'rbotdb', 'rbot-remote'] s.extensions = 'Rakefile' s.rdoc_options = ['--exclude', 'post-install.rb', |