Working Debian package!

dh_python
B.J. Dweck 2020-10-07 12:13:36 +02:00
parent e5273708ea
commit b093177248
54 changed files with 1748 additions and 12 deletions

21
example/Vagrantfile vendored
View File

@ -64,24 +64,21 @@ Vagrant.configure("2") do |config|
# Ansible, Chef, Docker, Puppet and Salt are also available. Please see the
# documentation for more information about their specific syntax and use.
config.vm.provision "file", source: "../torch.conf", destination: "~/torch/"
config.vm.provision "file", source: "../torch-agent.py", destination: "~/torch/"
config.vm.provision "file", source: "../torch.service", destination: "~/torch/"
config.vm.provision "file", source: "../install-ubuntu2004.sh", destination: "~/torch/"
config.vm.provision "file", source: "torch-agent_0.0.1-1_all.deb", destination: "~/"
config.vm.provision "file", source: "agent-config", destination: "~/torch-conf"
config.vm.provision "shell", inline: <<-SHELL
sudo -- sh -c "echo '10.0.2.2 mqtt.example.com' >> /etc/hosts"
cd torch
sudo ./install-ubuntu2004.sh
sudo cp -f ../torch-conf/* /etc/torch/
sudo -- sh -c "echo '10.0.2.2 mqtt.example.com' >> /etc/hosts"
sudo apt update
sudo apt install -y ./torch-agent_0.0.1-1_all.deb
sudo cp -f torch-conf/* /etc/torch/
sudo chown -R torch /etc/torch
sudo systemctl restart torch
sudo systemctl enable torch-agent
sudo systemctl start torch-agent
SHELL
end

Binary file not shown.

View File

@ -0,0 +1,2 @@
./debian/src/usr/share/torch-agent
./debian/src/etc/torch

View File

@ -0,0 +1,27 @@
# Automatically added by dh_installsystemd/12.10ubuntu1
if [ "$1" = "configure" ] || [ "$1" = "abort-upgrade" ] || [ "$1" = "abort-deconfigure" ] || [ "$1" = "abort-remove" ] ; then
if deb-systemd-helper debian-installed 'torch-agent.service'; then
# This will only remove masks created by d-s-h on package removal.
deb-systemd-helper unmask 'torch-agent.service' >/dev/null || true
if deb-systemd-helper --quiet was-enabled 'torch-agent.service'; then
# Create new symlinks, if any.
deb-systemd-helper enable 'torch-agent.service' >/dev/null || true
fi
fi
# Update the statefile to add new symlinks (if any), which need to be cleaned
# up on purge. Also remove old symlinks.
deb-systemd-helper update-state 'torch-agent.service' >/dev/null || true
fi
# End automatically added section
# Automatically added by dh_installsystemd/12.10ubuntu1
if [ "$1" = "configure" ] || [ "$1" = "abort-upgrade" ] || [ "$1" = "abort-deconfigure" ] || [ "$1" = "abort-remove" ] ; then
if [ -d /run/systemd/system ]; then
systemctl --system daemon-reload >/dev/null || true
if [ -n "$2" ]; then
deb-systemd-invoke try-restart 'torch-agent.service' >/dev/null || true
fi
fi
fi
# End automatically added section

View File

@ -0,0 +1,5 @@
# Automatically added by dh_installsystemd/12.10ubuntu1
if [ -d /run/systemd/system ] && [ "$1" = remove ]; then
deb-systemd-invoke stop 'torch-agent.service' >/dev/null || true
fi
# End automatically added section

View File

@ -0,0 +1,6 @@
torch-agent for Debian
---------------------
<possible notes regarding this package - if none, delete this file>
-- Benjamin Dweck <bjdweck@gmail.com> Tue, 06 Oct 2020 15:53:02 +0200

View File

@ -0,0 +1,10 @@
torch-agent for Debian
---------------------
<this file describes information about the source package, see Debian policy
manual section 4.14. You WILL either need to modify or delete this file>
-- Benjamin Dweck <bjdweck@gmail.com> Tue, 06 Oct 2020 15:53:02 +0200

View File

@ -0,0 +1,5 @@
torch-agent (0.0.1-1) unstable; urgency=medium
* Initial release
-- Benjamin Dweck <bjdweck@gmail.com> Tue, 06 Oct 2020 15:53:02 +0200

View File

@ -0,0 +1,16 @@
Source: torch-agent
Section: net
Priority: optional
Maintainer: Benjamin Dweck <bjdweck@gmail.com>
Build-Depends: debhelper-compat (= 12)
Standards-Version: 4.4.1
Homepage: https://rudefox.io
#Vcs-Browser: https://salsa.debian.org/debian/torch-agent
#Vcs-Git: https://salsa.debian.org/debian/torch-agent.git
Package: torch-agent
Architecture: all
Depends: ssh, tor, python3-pip, ${misc:Depends}
Description: TORch is a solution for creating an SSH-via-Tor
backdoor on a remote device as a means of fallback remote
management and initial headless device configuration.

View File

@ -0,0 +1,23 @@
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: torch-agent
Upstream-Contact: bjdweck@gmail.com
Source: https://rudefox.io
Files: debian/*
Copyright: 2020 Benjamin Dweck <bjdweck@gmail.com>
License: GPL-2+
This package is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
.
This package is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>
.
On Debian systems, the complete text of the GNU General
Public License version 2 can be found in "/usr/share/common-licenses/GPL-2".

View File

@ -0,0 +1 @@
torch-agent

View File

@ -0,0 +1,2 @@
torch-agent_0.0.1-1_all.deb net optional
torch-agent_0.0.1-1_amd64.buildinfo net optional

View File

@ -0,0 +1,56 @@
.\" Hey, EMACS: -*- nroff -*-
.\" (C) Copyright 2020 Benjamin Dweck <bjdweck@gmail.com>,
.\"
.\" First parameter, NAME, should be all caps
.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
.\" other parameters are allowed: see man(7), man(1)
.TH Torch-agent SECTION "October 6 2020"
.\" Please adjust this date whenever revising the manpage.
.\"
.\" Some roff macros, for reference:
.\" .nh disable hyphenation
.\" .hy enable hyphenation
.\" .ad l left justify
.\" .ad b justify to both left and right margins
.\" .nf disable filling
.\" .fi enable filling
.\" .br insert line break
.\" .sp <n> insert n+1 empty lines
.\" for manpage-specific macros, see man(7)
.SH NAME
torch-agent \- program to do something
.SH SYNOPSIS
.B torch-agent
.RI [ options ] " files" ...
.br
.B bar
.RI [ options ] " files" ...
.SH DESCRIPTION
This manual page documents briefly the
.B torch-agent
and
.B bar
commands.
.PP
.\" TeX users may be more comfortable with the \fB<whatever>\fP and
.\" \fI<whatever>\fP escape sequences to invode bold face and italics,
.\" respectively.
\fBtorch-agent\fP is a program that...
.SH OPTIONS
These programs follow the usual GNU command line syntax, with long
options starting with two dashes (`-').
A summary of options is included below.
For a complete description, see the Info files.
.TP
.B \-h, \-\-help
Show summary of options.
.TP
.B \-v, \-\-version
Show version of program.
.SH SEE ALSO
.BR bar (1),
.BR baz (1).
.br
The programs are documented fully by
.IR "The Rise and Fall of a Fooish Bar" ,
available via the Info system.

View File

@ -0,0 +1,154 @@
<!doctype refentry PUBLIC "-//OASIS//DTD DocBook V4.1//EN" [
<!-- Process this file with docbook-to-man to generate an nroff manual
page: `docbook-to-man manpage.sgml > manpage.1'. You may view
the manual page with: `docbook-to-man manpage.sgml | nroff -man |
less'. A typical entry in a Makefile or Makefile.am is:
manpage.1: manpage.sgml
docbook-to-man $< > $@
The docbook-to-man binary is found in the docbook-to-man package.
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
docbook-to-man in your Build-Depends control field.
-->
<!-- Fill in your name for FIRSTNAME and SURNAME. -->
<!ENTITY dhfirstname "<firstname>FIRSTNAME</firstname>">
<!ENTITY dhsurname "<surname>SURNAME</surname>">
<!-- Please adjust the date whenever revising the manpage. -->
<!ENTITY dhdate "<date>October 6 2020</date>">
<!-- SECTION should be 1-8, maybe w/ subsection other parameters are
allowed: see man(7), man(1). -->
<!ENTITY dhsection "<manvolnum>SECTION</manvolnum>">
<!ENTITY dhemail "<email>bjdweck@gmail.com</email>">
<!ENTITY dhusername "Benjamin Dweck">
<!ENTITY dhucpackage "<refentrytitle>Torch-agent</refentrytitle>">
<!ENTITY dhpackage "torch-agent">
<!ENTITY debian "<productname>Debian</productname>">
<!ENTITY gnu "<acronym>GNU</acronym>">
<!ENTITY gpl "&gnu; <acronym>GPL</acronym>">
]>
<refentry>
<refentryinfo>
<address>
&dhemail;
</address>
<author>
&dhfirstname;
&dhsurname;
</author>
<copyright>
<year>2003</year>
<holder>&dhusername;</holder>
</copyright>
&dhdate;
</refentryinfo>
<refmeta>
&dhucpackage;
&dhsection;
</refmeta>
<refnamediv>
<refname>&dhpackage;</refname>
<refpurpose>program to do something</refpurpose>
</refnamediv>
<refsynopsisdiv>
<cmdsynopsis>
<command>&dhpackage;</command>
<arg><option>-e <replaceable>this</replaceable></option></arg>
<arg><option>--example <replaceable>that</replaceable></option></arg>
</cmdsynopsis>
</refsynopsisdiv>
<refsect1>
<title>DESCRIPTION</title>
<para>This manual page documents briefly the
<command>&dhpackage;</command> and <command>bar</command>
commands.</para>
<para>This manual page was written for the &debian; distribution
because the original program does not have a manual page.
Instead, it has documentation in the &gnu;
<application>Info</application> format; see below.</para>
<para><command>&dhpackage;</command> is a program that...</para>
</refsect1>
<refsect1>
<title>OPTIONS</title>
<para>These programs follow the usual &gnu; command line syntax,
with long options starting with two dashes (`-'). A summary of
options is included below. For a complete description, see the
<application>Info</application> files.</para>
<variablelist>
<varlistentry>
<term><option>-h</option>
<option>--help</option>
</term>
<listitem>
<para>Show summary of options.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>-v</option>
<option>--version</option>
</term>
<listitem>
<para>Show version of program.</para>
</listitem>
</varlistentry>
</variablelist>
</refsect1>
<refsect1>
<title>SEE ALSO</title>
<para>bar (1), baz (1).</para>
<para>The programs are documented fully by <citetitle>The Rise and
Fall of a Fooish Bar</citetitle> available via the
<application>Info</application> system.</para>
</refsect1>
<refsect1>
<title>AUTHOR</title>
<para>This manual page was written by &dhusername; &dhemail; for
the &debian; system (and 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 2 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>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:2
sgml-indent-data:t
sgml-parent-document:nil
sgml-default-dtd-file:nil
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
-->

View File

@ -0,0 +1,291 @@
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!--
`xsltproc -''-nonet \
-''-param man.charmap.use.subset "0" \
-''-param make.year.ranges "1" \
-''-param make.single.year.ranges "1" \
/usr/share/xml/docbook/stylesheet/docbook-xsl/manpages/docbook.xsl \
manpage.xml'
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/docbook-xsl/manpages/docbook.xsl
XP = xsltproc -''-nonet -''-param man.charmap.use.subset "0"
manpage.1: manpage.xml
$(XP) $(DB2MAN) $<
The xsltproc binary is found in the xsltproc package. The XSL files are in
docbook-xsl. A description of the parameters you can use can be found in the
docbook-xsl-doc-* packages. 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.
Alternatively use the xmlto command/package. That will also automatically
pull in xsltproc and docbook-xsl.
Notes for using docbook2x: docbook2x-man does not automatically create the
AUTHOR(S) and COPYRIGHT sections. In this case, please add them manually as
<refsect1> ... </refsect1>.
To disable the automatic creation of the AUTHOR(S) and COPYRIGHT sections
read /usr/share/doc/docbook-xsl/doc/manpages/authors.html. This file can be
found in the docbook-xsl-doc-html package.
Validation can be done using: `xmllint -''-noout -''-valid manpage.xml`
General documentation about man-pages and man-page-formatting:
man(1), man(7), http://www.tldp.org/HOWTO/Man-Page/
-->
<!-- Fill in your name for FIRSTNAME and SURNAME. -->
<!ENTITY dhfirstname "FIRSTNAME">
<!ENTITY dhsurname "SURNAME">
<!-- dhusername could also be set to "&dhfirstname; &dhsurname;". -->
<!ENTITY dhusername "Benjamin Dweck">
<!ENTITY dhemail "bjdweck@gmail.com">
<!-- SECTION should be 1-8, maybe w/ subsection other parameters are
allowed: see man(7), man(1) and
http://www.tldp.org/HOWTO/Man-Page/q2.html. -->
<!ENTITY dhsection "SECTION">
<!-- TITLE should be something like "User commands" or similar (see
http://www.tldp.org/HOWTO/Man-Page/q2.html). -->
<!ENTITY dhtitle "torch-agent User Manual">
<!ENTITY dhucpackage "Torch-agent">
<!ENTITY dhpackage "torch-agent">
]>
<refentry>
<refentryinfo>
<title>&dhtitle;</title>
<productname>&dhpackage;</productname>
<authorgroup>
<author>
<firstname>&dhfirstname;</firstname>
<surname>&dhsurname;</surname>
<contrib>Wrote this manpage for the Debian system.</contrib>
<address>
<email>&dhemail;</email>
</address>
</author>
</authorgroup>
<copyright>
<year>2007</year>
<holder>&dhusername;</holder>
</copyright>
<legalnotice>
<para>This manual page was written for the Debian system
(and may be used by others).</para>
<para>Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU General Public License,
Version 2 or (at your option) 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
<filename>/usr/share/common-licenses/GPL</filename>.</para>
</legalnotice>
</refentryinfo>
<refmeta>
<refentrytitle>&dhucpackage;</refentrytitle>
<manvolnum>&dhsection;</manvolnum>
</refmeta>
<refnamediv>
<refname>&dhpackage;</refname>
<refpurpose>program to do something</refpurpose>
</refnamediv>
<refsynopsisdiv>
<cmdsynopsis>
<command>&dhpackage;</command>
<!-- These are several examples, how syntaxes could look -->
<arg choice="plain"><option>-e <replaceable>this</replaceable></option></arg>
<arg choice="opt"><option>--example=<parameter>that</parameter></option></arg>
<arg choice="opt">
<group choice="req">
<arg choice="plain"><option>-e</option></arg>
<arg choice="plain"><option>--example</option></arg>
</group>
<replaceable class="option">this</replaceable>
</arg>
<arg choice="opt">
<group choice="req">
<arg choice="plain"><option>-e</option></arg>
<arg choice="plain"><option>--example</option></arg>
</group>
<group choice="req">
<arg choice="plain"><replaceable>this</replaceable></arg>
<arg choice="plain"><replaceable>that</replaceable></arg>
</group>
</arg>
</cmdsynopsis>
<cmdsynopsis>
<command>&dhpackage;</command>
<!-- Normally the help and version options make the programs stop
right after outputting the requested information. -->
<group choice="opt">
<arg choice="plain">
<group choice="req">
<arg choice="plain"><option>-h</option></arg>
<arg choice="plain"><option>--help</option></arg>
</group>
</arg>
<arg choice="plain">
<group choice="req">
<arg choice="plain"><option>-v</option></arg>
<arg choice="plain"><option>--version</option></arg>
</group>
</arg>
</group>
</cmdsynopsis>
</refsynopsisdiv>
<refsect1 id="description">
<title>DESCRIPTION</title>
<para>This manual page documents briefly the
<command>&dhpackage;</command> and <command>bar</command>
commands.</para>
<para>This manual page was written for the Debian distribution
because the original program does not have a manual page.
Instead, it has documentation in the GNU <citerefentry>
<refentrytitle>info</refentrytitle>
<manvolnum>1</manvolnum>
</citerefentry> format; see below.</para>
<para><command>&dhpackage;</command> is a program that...</para>
</refsect1>
<refsect1 id="options">
<title>OPTIONS</title>
<para>The program follows the usual GNU command line syntax,
with long options starting with two dashes (`-'). A summary of
options is included below. For a complete description, see the
<citerefentry>
<refentrytitle>info</refentrytitle>
<manvolnum>1</manvolnum>
</citerefentry> files.</para>
<variablelist>
<!-- Use the variablelist.term.separator and the
variablelist.term.break.after parameters to
control the term elements. -->
<varlistentry>
<term><option>-e <replaceable>this</replaceable></option></term>
<term><option>--example=<replaceable>that</replaceable></option></term>
<listitem>
<para>Does this and that.</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>-v</option></term>
<term><option>--version</option></term>
<listitem>
<para>Show version of program.</para>
</listitem>
</varlistentry>
</variablelist>
</refsect1>
<refsect1 id="files">
<title>FILES</title>
<variablelist>
<varlistentry>
<term><filename>/etc/foo.conf</filename></term>
<listitem>
<para>The system-wide configuration file to control the
behaviour of <application>&dhpackage;</application>. See
<citerefentry>
<refentrytitle>foo.conf</refentrytitle>
<manvolnum>5</manvolnum>
</citerefentry> for further details.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><filename>${HOME}/.foo.conf</filename></term>
<listitem>
<para>The per-user configuration file to control the
behaviour of <application>&dhpackage;</application>. See
<citerefentry>
<refentrytitle>foo.conf</refentrytitle>
<manvolnum>5</manvolnum>
</citerefentry> for further details.</para>
</listitem>
</varlistentry>
</variablelist>
</refsect1>
<refsect1 id="environment">
<title>ENVIRONMENT</title>
<variablelist>
<varlistentry>
<term><envar>FOO_CONF</envar></term>
<listitem>
<para>If used, the defined file is used as configuration
file (see also <xref linkend="files"/>).</para>
</listitem>
</varlistentry>
</variablelist>
</refsect1>
<refsect1 id="diagnostics">
<title>DIAGNOSTICS</title>
<para>The following diagnostics may be issued
on <filename class="devicefile">stderr</filename>:</para>
<variablelist>
<varlistentry>
<term><errortext>Bad configuration file. Exiting.</errortext></term>
<listitem>
<para>The configuration file seems to contain a broken configuration
line. Use the <option>--verbose</option> option, to get more info.
</para>
</listitem>
</varlistentry>
</variablelist>
<para><command>&dhpackage;</command> provides some return codes, that can
be used in scripts:</para>
<segmentedlist>
<segtitle>Code</segtitle>
<segtitle>Diagnostic</segtitle>
<seglistitem>
<seg><errorcode>0</errorcode></seg>
<seg>Program exited successfully.</seg>
</seglistitem>
<seglistitem>
<seg><errorcode>1</errorcode></seg>
<seg>The configuration file seems to be broken.</seg>
</seglistitem>
</segmentedlist>
</refsect1>
<refsect1 id="bugs">
<!-- Or use this section to tell about upstream BTS. -->
<title>BUGS</title>
<para>The program is currently limited to only work
with the <package>foobar</package> library.</para>
<para>The upstreams <acronym>BTS</acronym> can be found
at <ulink url="http://bugzilla.foo.tld"/>.</para>
</refsect1>
<refsect1 id="see_also">
<title>SEE ALSO</title>
<!-- In alpabetical order. -->
<para><citerefentry>
<refentrytitle>bar</refentrytitle>
<manvolnum>1</manvolnum>
</citerefentry>, <citerefentry>
<refentrytitle>baz</refentrytitle>
<manvolnum>1</manvolnum>
</citerefentry>, <citerefentry>
<refentrytitle>foo.conf</refentrytitle>
<manvolnum>5</manvolnum>
</citerefentry></para>
<para>The programs are documented fully by <citetitle>The Rise and
Fall of a Fooish Bar</citetitle> available via the <citerefentry>
<refentrytitle>info</refentrytitle>
<manvolnum>1</manvolnum>
</citerefentry> system.</para>
</refsect1>
</refentry>

View File

@ -0,0 +1,77 @@
#!/bin/sh
# postinst script for torch-agent
#
# see: dh_installdeb(1)
set -e
# summary of how this script can be called:
# * <postinst> `configure' <most-recently-configured-version>
# * <old-postinst> `abort-upgrade' <new version>
# * <conflictor's-postinst> `abort-remove' `in-favour' <package>
# <new-version>
# * <postinst> `abort-remove'
# * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
# <failed-install-package> <version> `removing'
# <conflicting-package> <version>
# for details, see https://www.debian.org/doc/debian-policy/ or
# the debian-policy package
USER="torch"
GROUP="debian-tor"
TORRC="/etc/tor/torrc"
configure_tor_controller() {
TORRC_CHANGED=0
if ! grep -q "^ControlPort [0-9]\+" $TORRC; then
sed -i '/^#ControlPort 9051/s/^#//' $TORRC
TORRC_CHANGED=1
fi
if ! grep -q "^CookieAuthentication 1" $TORRC; then
sed -i '/^#CookieAuthentication 1/s/^#//' $TORRC
TORRC_CHANGED=1
fi
if ! grep -q "^CookieAuthFileGroupReadable 1" $TORRC; then
echo "CookieAuthFileGroupReadable 1" >> $TORRC
TORRC_CHANGED=1
fi
if [ $TORRC_CHANGED -eq 1 ]; then
systemctl reload tor
fi
}
case "$1" in
configure)
if ! getent passwd $USER >/dev/null ; then
useradd -r -g $GROUP $USER
fi
chown $USER /etc/torch
chown $USER /etc/torch/torch.conf
chown $USER /usr/share/torch-agent/torch-agent.py
configure_tor_controller
;;
abort-upgrade|abort-remove|abort-deconfigure)
;;
*)
echo "postinst called with unknown argument \`$1'" >&2
exit 1
;;
esac
# dh_installdeb will replace this with shell code automatically
# generated by other debhelper scripts.
#DEBHELPER#
exit 0

View File

@ -0,0 +1,49 @@
#!/bin/sh
# postrm script for torch-agent
#
# see: dh_installdeb(1)
set -e
# summary of how this script can be called:
# * <postrm> `remove'
# * <postrm> `purge'
# * <old-postrm> `upgrade' <new-version>
# * <new-postrm> `failed-upgrade' <old-version>
# * <new-postrm> `abort-install'
# * <new-postrm> `abort-install' <old-version>
# * <new-postrm> `abort-upgrade' <old-version>
# * <disappearer's-postrm> `disappear' <overwriter>
# <overwriter-version>
# for details, see https://www.debian.org/doc/debian-policy/ or
# the debian-policy package
USER="torch"
case "$1" in
purge|abort-install)
rm -rf /etc/torch
rm -f /usr/share/torch-agent/torch-agent.py
if [ -x "$(command -v deluser)" ]; then
deluser --quiet --system $USER > /dev/null || true
else
echo >&2 "not removing $USER system account because deluser command was not found"
fi
;;
remove)
;;
upgrade|failed-upgrade|abort-upgrade|disappear)
;;
*)
echo "postrm called with unknown argument \`$1'" >&2
exit 1
;;
esac
# dh_installdeb will replace this with shell code automatically
# generated by other debhelper scripts.
#DEBHELPER#
exit 0

View File

@ -0,0 +1,39 @@
#!/bin/sh
# preinst script for torch-agent
#
# see: dh_installdeb(1)
set -e
# summary of how this script can be called:
# * <new-preinst> `install'
# * <new-preinst> `install' <old-version>
# * <new-preinst> `upgrade' <old-version>
# * <old-preinst> `abort-upgrade' <new-version>
# for details, see https://www.debian.org/doc/debian-policy/ or
# the debian-policy package
case "$1" in
install|upgrade)
sudo -H pip3 install stem paho-mqtt PySocks
mkdir -p /etc/torch
mkdir -p /usr/share/torch-agent
;;
abort-upgrade)
;;
*)
echo "preinst called with unknown argument \`$1'" >&2
exit 1
;;
esac
# dh_installdeb will replace this with shell code automatically
# generated by other debhelper scripts.
#DEBHELPER#
exit 0

View File

@ -0,0 +1,38 @@
#!/bin/sh
# prerm script for torch-agent
#
# see: dh_installdeb(1)
set -e
# summary of how this script can be called:
# * <prerm> `remove'
# * <old-prerm> `upgrade' <new-version>
# * <new-prerm> `failed-upgrade' <old-version>
# * <conflictor's-prerm> `remove' `in-favour' <package> <new-version>
# * <deconfigured's-prerm> `deconfigure' `in-favour'
# <package-being-installed> <version> `removing'
# <conflicting-package> <version>
# for details, see https://www.debian.org/doc/debian-policy/ or
# the debian-policy package
case "$1" in
remove|upgrade|deconfigure)
;;
failed-upgrade)
;;
*)
echo "prerm called with unknown argument \`$1'" >&2
exit 1
;;
esac
# dh_installdeb will replace this with shell code automatically
# generated by other debhelper scripts.
#DEBHELPER#
exit 0

32
torch-agent-0.0.1/debian/rules Executable file
View File

@ -0,0 +1,32 @@
#!/usr/bin/make -f
# See debhelper(7) (uncomment to enable)
# output every command that modifies files on the build system.
#export DH_VERBOSE = 1
# see FEATURE AREAS in dpkg-buildflags(1)
#export DEB_BUILD_MAINT_OPTIONS = hardening=+all
# see ENVIRONMENT in dpkg-buildflags(1)
# package maintainers to append CFLAGS
#export DEB_CFLAGS_MAINT_APPEND = -Wall -pedantic
# package maintainers to append LDFLAGS
#export DEB_LDFLAGS_MAINT_APPEND = -Wl,--as-needed
%:
dh $@
override_dh_installsystemd:
dh_installsystemd --no-start --no-enable
override_dh_installinit:
# --no-enable only on init-system-helpers (>= 1.51)
#dh_installinit --no-start --no-enable
dh_installinit --no-start --no-enable
# dh_make generated override targets
# This is example for Cmake (See https://bugs.debian.org/641051 )
#override_dh_auto_configure:
# dh_auto_configure -- # -DCMAKE_LIBRARY_PATH=$(DEB_HOST_MULTIARCH)

View File

@ -0,0 +1,11 @@
# For more information on what jobs are run see:
# https://salsa.debian.org/salsa-ci-team/pipeline
#
# To enable the jobs, go to your repository (at salsa.debian.org)
# and click over Settings > CI/CD > Expand (in General pipelines).
# In "Custom CI config path" write debian/salsa-ci.yml and click
# in "Save Changes". The CI tests will run after the next commit.
---
include:
- https://salsa.debian.org/salsa-ci-team/pipeline/raw/master/salsa-ci.yml
- https://salsa.debian.org/salsa-ci-team/pipeline/raw/master/pipeline-jobs.yml

View File

@ -0,0 +1 @@
3.0 (quilt)

View File

@ -0,0 +1,2 @@
debian/src/usr/share/torch-agent/torch-agent.py
debian/src/etc/torch/torch.conf

View File

@ -0,0 +1,19 @@
[tor]
ProxyPort = 9050
ControllerPort = 9051
[ssh]
Port = 22
[mqtt]
BrokerHost = mqtt.example.com # OR example1i3uyrbfoi3fi.onion
BrokerPort = 1883
ClientID = my-client
Topic = example/topic
### Options for Using TLS
#RequireCertificate = true
#CaFile = ca.crt
#CertFile = client.crt
#KeyFile = client.key

View File

@ -0,0 +1,98 @@
from stem.control import Controller
import stem.connection
import paho.mqtt.client as mqtt
import ssl
import socks
import socket
import json
import configparser
import argparse
from datetime import datetime
from os import environ
parser = argparse.ArgumentParser(description='Broadcast SSH hidden service hostname via MQTT')
parser.add_argument('--config-dir', nargs='?', dest='configPath', default='/etc/torch',
help='configuration directory (default: /etc/torch)')
args = parser.parse_args()
configPath = args.configPath
if "TORCH_CONFIG_DIR" in environ:
configPath = environ.get("TORCH_CONFIG_DIR")
if not configPath.endswith("/"):
configPath = configPath + "/"
print("Using torch configuration path: " + configPath)
config = configparser.ConfigParser()
config.read(configPath + "torch.conf")
torProxyPort = config['tor'].getint('ProxyPort', fallback = 9050)
torControllerPort = config['tor'].getint('ControllerPort', fallback = 9051)
sshPort = config['ssh'].getint('Port', fallback = 22)
mqttConfig = config['mqtt']
mqttBrokerHost = mqttConfig.get('BrokerHost', fallback = "localhost")
mqttBrokerPort = mqttConfig.getint('BrokerPort', fallback = 1883)
clientID = mqttConfig.get('ClientID', fallback = socket.gethostname())
mqttTopic = mqttConfig.get('Topic', fallback = "torch/%s/onion_url" % (clientID))
mqttRequireCertificate = mqttConfig.getboolean(
'RequireCertificate',
fallback = False)
mqttCaFile = configPath + mqttConfig.get('CaFile')
mqttCertFile = configPath + mqttConfig.get('CertFile')
mqttKeyFile = configPath + mqttConfig.get('KeyFile')
with Controller.from_port(port = torControllerPort) as controller:
protocolInfo = stem.connection.get_protocolinfo(controller)
stem.connection.authenticate_safecookie(
controller,
protocolInfo.cookie_path)
print("Connected to Tor on port %s" % (torControllerPort))
service = controller.create_ephemeral_hidden_service(
sshPort,
detached = True)
onionAddress = "%s.onion" % (service.service_id)
print("Created Tor Hidden Service for local port %s at %s" % (sshPort, onionAddress))
payload = {
'clientId': clientID,
'timestamp': datetime.now().strftime("%d-%b-%Y (%H:%M:%S.%f)"),
'onionAddress': onionAddress,
'sshPort': sshPort
}
client = mqtt.Client()
protocol = "mqtt"
if mqttRequireCertificate:
client.tls_set(
ca_certs = mqttCaFile,
certfile = mqttCertFile,
keyfile = mqttKeyFile,
cert_reqs=ssl.CERT_REQUIRED)
protocol = "mqtts"
if mqttBrokerHost.endswith(".onion"):
client.proxy_set(proxy_type=socks.SOCKS5, proxy_addr="localhost", proxy_port=torProxyPort)
client.tls_insecure_set(True)
client.connect(mqttBrokerHost, mqttBrokerPort, 60)
client.publish(mqttTopic, json.dumps(payload))
print("Connected to MQTT Broker at %s://%s:%s/%s" % (protocol, mqttBrokerHost, mqttBrokerPort, mqttTopic))
print("Published payload: " + json.dumps(payload))
client.disconnect()
print("Disconnected from MQTT Broker")

View File

@ -0,0 +1,2 @@
README.Debian
README.source

View File

@ -0,0 +1,4 @@
#
# Regular cron jobs for the torch-agent package
#
0 4 * * * root [ -x /usr/bin/torch-agent_maintenance ] && /usr/bin/torch-agent_maintenance

View File

@ -0,0 +1 @@
dh_installsystemd

View File

@ -0,0 +1,20 @@
Document: torch-agent
Title: Debian torch-agent Manual
Author: <insert document author here>
Abstract: This manual describes what torch-agent is
and how it can be used to
manage online manuals on Debian systems.
Section: unknown
Format: debiandoc-sgml
Files: /usr/share/doc/torch-agent/torch-agent.sgml.gz
Format: postscript
Files: /usr/share/doc/torch-agent/torch-agent.ps.gz
Format: text
Files: /usr/share/doc/torch-agent/torch-agent.text.gz
Format: HTML
Index: /usr/share/doc/torch-agent/html/index.html
Files: /usr/share/doc/torch-agent/html/*.html

View File

@ -0,0 +1,2 @@
debian/src/usr/share/torch-agent /usr/share/
debian/src/etc/torch /etc/

View File

@ -0,0 +1,19 @@
# Automatically added by dh_installsystemd/12.10ubuntu1
if [ -d /run/systemd/system ]; then
systemctl --system daemon-reload >/dev/null || true
fi
# End automatically added section
# Automatically added by dh_installsystemd/12.10ubuntu1
if [ "$1" = "remove" ]; then
if [ -x "/usr/bin/deb-systemd-helper" ]; then
deb-systemd-helper mask 'torch-agent.service' >/dev/null || true
fi
fi
if [ "$1" = "purge" ]; then
if [ -x "/usr/bin/deb-systemd-helper" ]; then
deb-systemd-helper purge 'torch-agent.service' >/dev/null || true
deb-systemd-helper unmask 'torch-agent.service' >/dev/null || true
fi
fi
# End automatically added section

View File

@ -0,0 +1,13 @@
[Unit]
Description=TORch Agent: MQTT Publisher for Tor Hidden SSH Service URL
After=tor.service ssh.service
Requires=tor.service ssh.service
[Service]
Environment=PYTHONUNBUFFERED=1
ExecStart=/usr/bin/python3 /usr/share/torch-agent/torch-agent.py
User=torch
Group=debian-tor
[Install]
WantedBy=multi-user.target ssh.service tor.service

View File

@ -0,0 +1,2 @@
misc:Depends=
misc:Pre-Depends=

View File

@ -0,0 +1 @@
/etc/torch/torch.conf

View File

@ -0,0 +1,12 @@
Package: torch-agent
Version: 0.0.1-1
Architecture: all
Maintainer: Benjamin Dweck <bjdweck@gmail.com>
Installed-Size: 29
Depends: ssh, tor, python3-pip
Section: net
Priority: optional
Homepage: https://rudefox.io
Description: TORch is a solution for creating an SSH-via-Tor
backdoor on a remote device as a means of fallback remote
management and initial headless device configuration.

View File

@ -0,0 +1,5 @@
1e2c6dfcdaab533fa279eef51cdaa500 lib/systemd/system/torch-agent.service
de899b3b2dbb67f357d153425a8421cd usr/share/doc/torch-agent/README.Debian
507827efdf54541d719f3a27e1a1db5f usr/share/doc/torch-agent/changelog.Debian.gz
7d50b1cef77999609862e52053d3ed74 usr/share/doc/torch-agent/copyright
94f2830be2c7420e0f1c4556fc08f1ec usr/share/torch-agent/torch-agent.py

View File

@ -0,0 +1,104 @@
#!/bin/sh
# postinst script for torch-agent
#
# see: dh_installdeb(1)
set -e
# summary of how this script can be called:
# * <postinst> `configure' <most-recently-configured-version>
# * <old-postinst> `abort-upgrade' <new version>
# * <conflictor's-postinst> `abort-remove' `in-favour' <package>
# <new-version>
# * <postinst> `abort-remove'
# * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
# <failed-install-package> <version> `removing'
# <conflicting-package> <version>
# for details, see https://www.debian.org/doc/debian-policy/ or
# the debian-policy package
USER="torch"
GROUP="debian-tor"
TORRC="/etc/tor/torrc"
configure_tor_controller() {
TORRC_CHANGED=0
if ! grep -q "^ControlPort [0-9]\+" $TORRC; then
sed -i '/^#ControlPort 9051/s/^#//' $TORRC
TORRC_CHANGED=1
fi
if ! grep -q "^CookieAuthentication 1" $TORRC; then
sed -i '/^#CookieAuthentication 1/s/^#//' $TORRC
TORRC_CHANGED=1
fi
if ! grep -q "^CookieAuthFileGroupReadable 1" $TORRC; then
echo "CookieAuthFileGroupReadable 1" >> $TORRC
TORRC_CHANGED=1
fi
if [ $TORRC_CHANGED -eq 1 ]; then
systemctl reload tor
fi
}
case "$1" in
configure)
if ! getent passwd $USER >/dev/null ; then
useradd -r -g $GROUP $USER
fi
chown $USER /etc/torch
chown $USER /etc/torch/torch.conf
chown $USER /usr/share/torch-agent/torch-agent.py
configure_tor_controller
;;
abort-upgrade|abort-remove|abort-deconfigure)
;;
*)
echo "postinst called with unknown argument \`$1'" >&2
exit 1
;;
esac
# dh_installdeb will replace this with shell code automatically
# generated by other debhelper scripts.
# Automatically added by dh_installsystemd/12.10ubuntu1
if [ "$1" = "configure" ] || [ "$1" = "abort-upgrade" ] || [ "$1" = "abort-deconfigure" ] || [ "$1" = "abort-remove" ] ; then
if deb-systemd-helper debian-installed 'torch-agent.service'; then
# This will only remove masks created by d-s-h on package removal.
deb-systemd-helper unmask 'torch-agent.service' >/dev/null || true
if deb-systemd-helper --quiet was-enabled 'torch-agent.service'; then
# Create new symlinks, if any.
deb-systemd-helper enable 'torch-agent.service' >/dev/null || true
fi
fi
# Update the statefile to add new symlinks (if any), which need to be cleaned
# up on purge. Also remove old symlinks.
deb-systemd-helper update-state 'torch-agent.service' >/dev/null || true
fi
# End automatically added section
# Automatically added by dh_installsystemd/12.10ubuntu1
if [ "$1" = "configure" ] || [ "$1" = "abort-upgrade" ] || [ "$1" = "abort-deconfigure" ] || [ "$1" = "abort-remove" ] ; then
if [ -d /run/systemd/system ]; then
systemctl --system daemon-reload >/dev/null || true
if [ -n "$2" ]; then
deb-systemd-invoke try-restart 'torch-agent.service' >/dev/null || true
fi
fi
fi
# End automatically added section
exit 0

View File

@ -0,0 +1,68 @@
#!/bin/sh
# postrm script for torch-agent
#
# see: dh_installdeb(1)
set -e
# summary of how this script can be called:
# * <postrm> `remove'
# * <postrm> `purge'
# * <old-postrm> `upgrade' <new-version>
# * <new-postrm> `failed-upgrade' <old-version>
# * <new-postrm> `abort-install'
# * <new-postrm> `abort-install' <old-version>
# * <new-postrm> `abort-upgrade' <old-version>
# * <disappearer's-postrm> `disappear' <overwriter>
# <overwriter-version>
# for details, see https://www.debian.org/doc/debian-policy/ or
# the debian-policy package
USER="torch"
case "$1" in
purge|abort-install)
rm -rf /etc/torch
rm -f /usr/share/torch-agent/torch-agent.py
if [ -x "$(command -v deluser)" ]; then
deluser --quiet --system $USER > /dev/null || true
else
echo >&2 "not removing $USER system account because deluser command was not found"
fi
;;
remove)
;;
upgrade|failed-upgrade|abort-upgrade|disappear)
;;
*)
echo "postrm called with unknown argument \`$1'" >&2
exit 1
;;
esac
# dh_installdeb will replace this with shell code automatically
# generated by other debhelper scripts.
# Automatically added by dh_installsystemd/12.10ubuntu1
if [ -d /run/systemd/system ]; then
systemctl --system daemon-reload >/dev/null || true
fi
# End automatically added section
# Automatically added by dh_installsystemd/12.10ubuntu1
if [ "$1" = "remove" ]; then
if [ -x "/usr/bin/deb-systemd-helper" ]; then
deb-systemd-helper mask 'torch-agent.service' >/dev/null || true
fi
fi
if [ "$1" = "purge" ]; then
if [ -x "/usr/bin/deb-systemd-helper" ]; then
deb-systemd-helper purge 'torch-agent.service' >/dev/null || true
deb-systemd-helper unmask 'torch-agent.service' >/dev/null || true
fi
fi
# End automatically added section
exit 0

View File

@ -0,0 +1,39 @@
#!/bin/sh
# preinst script for torch-agent
#
# see: dh_installdeb(1)
set -e
# summary of how this script can be called:
# * <new-preinst> `install'
# * <new-preinst> `install' <old-version>
# * <new-preinst> `upgrade' <old-version>
# * <old-preinst> `abort-upgrade' <new-version>
# for details, see https://www.debian.org/doc/debian-policy/ or
# the debian-policy package
case "$1" in
install|upgrade)
sudo -H pip3 install stem paho-mqtt PySocks
mkdir -p /etc/torch
mkdir -p /usr/share/torch-agent
;;
abort-upgrade)
;;
*)
echo "preinst called with unknown argument \`$1'" >&2
exit 1
;;
esac
# dh_installdeb will replace this with shell code automatically
# generated by other debhelper scripts.
exit 0

View File

@ -0,0 +1,7 @@
#!/bin/sh
set -e
# Automatically added by dh_installsystemd/12.10ubuntu1
if [ -d /run/systemd/system ] && [ "$1" = remove ]; then
deb-systemd-invoke stop 'torch-agent.service' >/dev/null || true
fi
# End automatically added section

View File

@ -0,0 +1,19 @@
[tor]
ProxyPort = 9050
ControllerPort = 9051
[ssh]
Port = 22
[mqtt]
BrokerHost = mqtt.example.com # OR example1i3uyrbfoi3fi.onion
BrokerPort = 1883
ClientID = my-client
Topic = example/topic
### Options for Using TLS
#RequireCertificate = true
#CaFile = ca.crt
#CertFile = client.crt
#KeyFile = client.key

View File

@ -0,0 +1,13 @@
[Unit]
Description=TORch Agent: MQTT Publisher for Tor Hidden SSH Service URL
After=tor.service ssh.service
Requires=tor.service ssh.service
[Service]
Environment=PYTHONUNBUFFERED=1
ExecStart=/usr/bin/python3 /usr/share/torch-agent/torch-agent.py
User=torch
Group=debian-tor
[Install]
WantedBy=multi-user.target ssh.service tor.service

View File

@ -0,0 +1,6 @@
torch-agent for Debian
---------------------
<possible notes regarding this package - if none, delete this file>
-- Benjamin Dweck <bjdweck@gmail.com> Tue, 06 Oct 2020 15:53:02 +0200

View File

@ -0,0 +1,23 @@
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: torch-agent
Upstream-Contact: bjdweck@gmail.com
Source: https://rudefox.io
Files: debian/*
Copyright: 2020 Benjamin Dweck <bjdweck@gmail.com>
License: GPL-2+
This package is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
.
This package is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>
.
On Debian systems, the complete text of the GNU General
Public License version 2 can be found in "/usr/share/common-licenses/GPL-2".

View File

@ -0,0 +1,98 @@
from stem.control import Controller
import stem.connection
import paho.mqtt.client as mqtt
import ssl
import socks
import socket
import json
import configparser
import argparse
from datetime import datetime
from os import environ
parser = argparse.ArgumentParser(description='Broadcast SSH hidden service hostname via MQTT')
parser.add_argument('--config-dir', nargs='?', dest='configPath', default='/etc/torch',
help='configuration directory (default: /etc/torch)')
args = parser.parse_args()
configPath = args.configPath
if "TORCH_CONFIG_DIR" in environ:
configPath = environ.get("TORCH_CONFIG_DIR")
if not configPath.endswith("/"):
configPath = configPath + "/"
print("Using torch configuration path: " + configPath)
config = configparser.ConfigParser()
config.read(configPath + "torch.conf")
torProxyPort = config['tor'].getint('ProxyPort', fallback = 9050)
torControllerPort = config['tor'].getint('ControllerPort', fallback = 9051)
sshPort = config['ssh'].getint('Port', fallback = 22)
mqttConfig = config['mqtt']
mqttBrokerHost = mqttConfig.get('BrokerHost', fallback = "localhost")
mqttBrokerPort = mqttConfig.getint('BrokerPort', fallback = 1883)
clientID = mqttConfig.get('ClientID', fallback = socket.gethostname())
mqttTopic = mqttConfig.get('Topic', fallback = "torch/%s/onion_url" % (clientID))
mqttRequireCertificate = mqttConfig.getboolean(
'RequireCertificate',
fallback = False)
mqttCaFile = configPath + mqttConfig.get('CaFile')
mqttCertFile = configPath + mqttConfig.get('CertFile')
mqttKeyFile = configPath + mqttConfig.get('KeyFile')
with Controller.from_port(port = torControllerPort) as controller:
protocolInfo = stem.connection.get_protocolinfo(controller)
stem.connection.authenticate_safecookie(
controller,
protocolInfo.cookie_path)
print("Connected to Tor on port %s" % (torControllerPort))
service = controller.create_ephemeral_hidden_service(
sshPort,
detached = True)
onionAddress = "%s.onion" % (service.service_id)
print("Created Tor Hidden Service for local port %s at %s" % (sshPort, onionAddress))
payload = {
'clientId': clientID,
'timestamp': datetime.now().strftime("%d-%b-%Y (%H:%M:%S.%f)"),
'onionAddress': onionAddress,
'sshPort': sshPort
}
client = mqtt.Client()
protocol = "mqtt"
if mqttRequireCertificate:
client.tls_set(
ca_certs = mqttCaFile,
certfile = mqttCertFile,
keyfile = mqttKeyFile,
cert_reqs=ssl.CERT_REQUIRED)
protocol = "mqtts"
if mqttBrokerHost.endswith(".onion"):
client.proxy_set(proxy_type=socks.SOCKS5, proxy_addr="localhost", proxy_port=torProxyPort)
client.tls_insecure_set(True)
client.connect(mqttBrokerHost, mqttBrokerPort, 60)
client.publish(mqttTopic, json.dumps(payload))
print("Connected to MQTT Broker at %s://%s:%s/%s" % (protocol, mqttBrokerHost, mqttBrokerPort, mqttTopic))
print("Published payload: " + json.dumps(payload))
client.disconnect()
print("Disconnected from MQTT Broker")

View File

@ -0,0 +1,38 @@
# Example watch control file for uscan
# Rename this file to "watch" and then you can run the "uscan" command
# to check for upstream updates and more.
# See uscan(1) for format
# Compulsory line, this is a version 4 file
version=4
# PGP signature mangle, so foo.tar.gz has foo.tar.gz.sig
#opts="pgpsigurlmangle=s%$%.sig%"
# HTTP site (basic)
#http://example.com/downloads.html \
# files/torch-agent-([\d\.]+)\.tar\.gz debian uupdate
# Uncomment to examine an FTP server
#ftp://ftp.example.com/pub/torch-agent-(.*)\.tar\.gz debian uupdate
# SourceForge hosted projects
# http://sf.net/torch-agent/ torch-agent-(.*)\.tar\.gz debian uupdate
# GitHub hosted projects
#opts="filenamemangle=s%(?:.*?)?v?(\d[\d.]*)\.tar\.gz%<project>-$1.tar.gz%" \
# https://github.com/<user>/torch-agent/tags \
# (?:.*?/)?v?(\d[\d.]*)\.tar\.gz debian uupdate
# PyPI
# https://pypi.debian.net/torch-agent/torch-agent-(.+)\.(?:zip|tgz|tbz|txz|(?:tar\.(?:gz|bz2|xz)))
# Direct Git
# opts="mode=git" http://git.example.com/torch-agent.git \
# refs/tags/v([\d\.]+) debian uupdate
# Uncomment to find new files on GooglePages
# http://example.googlepages.com/foo.html torch-agent-(.*)\.tar\.gz

Binary file not shown.

35
torch-agent_0.0.1-1.dsc Normal file
View File

@ -0,0 +1,35 @@
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512
Format: 3.0 (quilt)
Source: torch-agent
Binary: torch-agent
Architecture: all
Version: 0.0.1-1
Maintainer: Benjamin Dweck <bjdweck@gmail.com>
Homepage: https://rudefox.io
Standards-Version: 4.4.1
Build-Depends: debhelper-compat (= 12)
Package-List:
torch-agent deb net optional arch=all
Checksums-Sha1:
75a6ce9e0ad9f4ed0d2d31348c9db1238bd4f39d 9788 torch-agent_0.0.1.orig.tar.xz
4b3e734647e0e62bbb17c1ed5dbbd853462613f9 9636 torch-agent_0.0.1-1.debian.tar.xz
Checksums-Sha256:
30c630f9fdbaea2337a3e8701e753ef45a094b9403e77f9a42b2bd2ca63e8dc5 9788 torch-agent_0.0.1.orig.tar.xz
0ffd62a08673dfc3d0a7544eb62398b8fd3bd0aa71bfd19c1a8dd816c430ec1b 9636 torch-agent_0.0.1-1.debian.tar.xz
Files:
267a824b2a18ef73dcda05da7e99a4b5 9788 torch-agent_0.0.1.orig.tar.xz
ee6afe9f8ff5b6cade07a66f9075c505 9636 torch-agent_0.0.1-1.debian.tar.xz
-----BEGIN PGP SIGNATURE-----
iQFGBAEBCgAwFiEEFNiF9i0uBB0TW5u+27VgOYC/OIMFAl988dMSHGJqZHdlY2tA
Z21haWwuY29tAAoJENu1YDmAvziDfVkIAIKkS0PLQsDNUu3cJ+3UY1PboECjQdSb
0SpNuS61gRFJED9yoRg9XO5DMnpfp1qhVoZF0/wJSfel4Mbvyf8KPTpDYja9ZAkH
sjFwfqmvB2Po2VAE64ym/j7HCOGSMle6+f+NrcpDiEi592UzHR6iFi6iy8YwjhDa
xFmUJp4tPu62IUqOtASOMuQHGsY2c0j18Ev5Su0Z303MmfEp+bc/Y99lISU8cwHs
xPxOhsPCVj55E1wEi6hFeCy7sxh28W796fqOuCWKLYjIbIk2VRZC7clZ/dLn3hHk
RoXsSsBM5eFTK7uGKAOXCe1+AHZgsdnOU8XxnbvDMMbHYaaz7rnTNrw=
=pqDg
-----END PGP SIGNATURE-----

BIN
torch-agent_0.0.1-1_all.deb Normal file

Binary file not shown.

View File

@ -0,0 +1,195 @@
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512
Format: 1.0
Source: torch-agent
Binary: torch-agent
Architecture: all source
Version: 0.0.1-1
Checksums-Md5:
0abbdb3e83d948e0076ba9298c5f5502 1397 torch-agent_0.0.1-1.dsc
526fa2edc26efa17ce067b6b8b7780b5 5200 torch-agent_0.0.1-1_all.deb
Checksums-Sha1:
e88b32f193b3a57dd8717d02c643b6096b11e468 1397 torch-agent_0.0.1-1.dsc
816e7a65d14e02df230346565496a2bfb4ace2ad 5200 torch-agent_0.0.1-1_all.deb
Checksums-Sha256:
9b9a4486d39a88c09e1bd648560cd0c70cbba0e40bed9305e540e551db31d55e 1397 torch-agent_0.0.1-1.dsc
1560cd30b4944162d0ea4f2e4c5402527d06587c98a907820c36ec455633aede 5200 torch-agent_0.0.1-1_all.deb
Build-Origin: Ubuntu
Build-Architecture: amd64
Build-Date: Wed, 07 Oct 2020 00:38:11 +0200
Build-Tainted-By:
merged-usr-via-symlinks
usr-local-has-libraries
usr-local-has-programs
Installed-Build-Depends:
autoconf (= 2.69-11.1),
automake (= 1:1.16.1-4ubuntu6),
autopoint (= 0.19.8.1-10build1),
autotools-dev (= 20180224.1),
base-files (= 11ubuntu5.1),
base-passwd (= 3.5.47),
bash (= 5.0-6ubuntu1.1),
binutils (= 2.34-6ubuntu1),
binutils-common (= 2.34-6ubuntu1),
binutils-x86-64-linux-gnu (= 2.34-6ubuntu1),
bsdmainutils (= 11.1.2ubuntu3),
bsdutils (= 1:2.34-0.1ubuntu9),
build-essential (= 12.8ubuntu1),
bzip2 (= 1.0.8-2),
coreutils (= 8.30-3ubuntu2),
cpp (= 4:9.3.0-1ubuntu2),
cpp-9 (= 9.3.0-10ubuntu2),
dash (= 0.5.10.2-6),
debconf (= 1.5.73),
debhelper (= 12.10ubuntu1),
debianutils (= 4.9.1),
dh-autoreconf (= 19),
dh-strip-nondeterminism (= 1.7.0-1),
diffutils (= 1:3.7-3),
dpkg (= 1.19.7ubuntu3),
dpkg-dev (= 1.19.7ubuntu3),
dwz (= 0.13-5),
file (= 1:5.38-4),
findutils (= 4.7.0-1ubuntu1),
g++ (= 4:9.3.0-1ubuntu2),
g++-9 (= 9.3.0-10ubuntu2),
gawk (= 1:5.0.1+dfsg-1),
gcc (= 4:9.3.0-1ubuntu2),
gcc-10-base (= 10-20200411-0ubuntu1),
gcc-9 (= 9.3.0-10ubuntu2),
gcc-9-base (= 9.3.0-10ubuntu2),
gettext (= 0.19.8.1-10build1),
gettext-base (= 0.19.8.1-10build1),
grep (= 3.4-1),
groff-base (= 1.22.4-4build1),
gzip (= 1.10-0ubuntu4),
hostname (= 3.23),
init-system-helpers (= 1.57),
install-info (= 6.7.0.dfsg.2-5),
intltool-debian (= 0.35.0+20060710.5),
libacl1 (= 2.2.53-6),
libarchive-zip-perl (= 1.67-2),
libasan5 (= 9.3.0-10ubuntu2),
libatomic1 (= 10-20200411-0ubuntu1),
libattr1 (= 1:2.4.48-5),
libaudit-common (= 1:2.8.5-2ubuntu6),
libaudit1 (= 1:2.8.5-2ubuntu6),
libbinutils (= 2.34-6ubuntu1),
libblkid1 (= 2.34-0.1ubuntu9),
libbsd0 (= 0.10.0-1),
libbz2-1.0 (= 1.0.8-2),
libc-bin (= 2.31-0ubuntu9),
libc-dev-bin (= 2.31-0ubuntu9),
libc6 (= 2.31-0ubuntu9),
libc6-dev (= 2.31-0ubuntu9),
libcap-ng0 (= 0.7.9-2.1build1),
libcc1-0 (= 10-20200411-0ubuntu1),
libcroco3 (= 0.6.13-1),
libcrypt-dev (= 1:4.4.10-10ubuntu4),
libcrypt1 (= 1:4.4.10-10ubuntu4),
libctf-nobfd0 (= 2.34-6ubuntu1),
libctf0 (= 2.34-6ubuntu1),
libdb5.3 (= 5.3.28+dfsg1-0.6ubuntu2),
libdebconfclient0 (= 0.251ubuntu1),
libdebhelper-perl (= 12.10ubuntu1),
libdpkg-perl (= 1.19.7ubuntu3),
libelf1 (= 0.176-1.1build1),
libffi7 (= 3.3-4),
libfile-stripnondeterminism-perl (= 1.7.0-1),
libgcc-9-dev (= 9.3.0-10ubuntu2),
libgcc-s1 (= 10-20200411-0ubuntu1),
libgcrypt20 (= 1.8.5-5ubuntu1),
libgdbm-compat4 (= 1.18.1-5),
libgdbm6 (= 1.18.1-5),
libglib2.0-0 (= 2.64.3-1~ubuntu20.04.1),
libgmp10 (= 2:6.2.0+dfsg-4),
libgomp1 (= 10-20200411-0ubuntu1),
libgpg-error0 (= 1.37-1),
libicu66 (= 66.1-2ubuntu2),
libisl22 (= 0.22.1-1),
libitm1 (= 10-20200411-0ubuntu1),
liblsan0 (= 10-20200411-0ubuntu1),
liblz4-1 (= 1.9.2-2),
liblzma5 (= 5.2.4-1ubuntu1),
libmagic-mgc (= 1:5.38-4),
libmagic1 (= 1:5.38-4),
libmount1 (= 2.34-0.1ubuntu9),
libmpc3 (= 1.1.0-1),
libmpfr6 (= 4.0.2-1),
libpam-modules (= 1.3.1-5ubuntu4),
libpam-modules-bin (= 1.3.1-5ubuntu4),
libpam-runtime (= 1.3.1-5ubuntu4),
libpam0g (= 1.3.1-5ubuntu4),
libpcre2-8-0 (= 10.34-7),
libpcre3 (= 2:8.39-12build1),
libperl5.30 (= 5.30.0-9build1),
libpipeline1 (= 1.5.2-2build1),
libquadmath0 (= 10-20200411-0ubuntu1),
libreadline8 (= 8.0-4),
libseccomp2 (= 2.4.3-1ubuntu3.20.04.3),
libselinux1 (= 3.0-1build2),
libsigsegv2 (= 2.12-2),
libsmartcols1 (= 2.34-0.1ubuntu9),
libstdc++-9-dev (= 9.3.0-10ubuntu2),
libstdc++6 (= 10-20200411-0ubuntu1),
libsub-override-perl (= 0.09-2),
libsystemd0 (= 245.4-4ubuntu3.2),
libtinfo6 (= 6.2-0ubuntu2),
libtool (= 2.4.6-14),
libtsan0 (= 10-20200411-0ubuntu1),
libubsan1 (= 10-20200411-0ubuntu1),
libuchardet0 (= 0.0.6-3build1),
libudev1 (= 245.4-4ubuntu3.2),
libunistring2 (= 0.9.10-2),
libuuid1 (= 2.34-0.1ubuntu9),
libxml2 (= 2.9.10+dfsg-5),
libzstd1 (= 1.4.4+dfsg-3),
linux-libc-dev (= 5.4.0-47.51),
login (= 1:4.8.1-1ubuntu5.20.04),
lsb-base (= 11.1.0ubuntu2),
m4 (= 1.4.18-4),
make (= 4.2.1-1.2),
man-db (= 2.9.1-1),
mawk (= 1.3.4.20200120-2),
ncurses-base (= 6.2-0ubuntu2),
ncurses-bin (= 6.2-0ubuntu2),
patch (= 2.7.6-6),
perl (= 5.30.0-9build1),
perl-base (= 5.30.0-9build1),
perl-modules-5.30 (= 5.30.0-9build1),
po-debconf (= 1.0.21),
readline-common (= 8.0-4),
sed (= 4.7-1),
sensible-utils (= 0.0.12+nmu1),
sysvinit-utils (= 2.96-2.1ubuntu1),
tar (= 1.30+dfsg-7),
tzdata (= 2020a-0ubuntu0.20.04),
util-linux (= 2.34-0.1ubuntu9),
xz-utils (= 5.2.4-1ubuntu1),
zlib1g (= 1:1.2.11.dfsg-2ubuntu1)
Environment:
DEB_BUILD_OPTIONS="parallel=4"
LANG="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
SOURCE_DATE_EPOCH="1601992382"
-----BEGIN PGP SIGNATURE-----
iQFGBAEBCgAwFiEEFNiF9i0uBB0TW5u+27VgOYC/OIMFAl988dQSHGJqZHdlY2tA
Z21haWwuY29tAAoJENu1YDmAvziDbhIH/RLtAHLasxrim/3qkhGJAUApkzoIhxEZ
feWBwQ5nncKnt9vNRaQVOuQ4GWVRcpNtEQGWc+6/XE9U28XcOMZ/DMlvt8laFOCp
w4mmTpzFUnskXaNHqNEP3en85Opb7eeQCOJjuvEvUmo8lk5jtASXcxT7pNcDlb3X
NAXUyO22s81SHB1TnnwXOfIKLV5duo0pSJxZ+QwKoQtfYIuyHNvilvr8DaoKiltp
a2EjwyBWPfdJHHnKcv2Zyye65eQOr3VE8dP6k5OQWcuC2bHh84YgwyN6cmgWaELt
XlCu5sA5TPzNbO0gyVOtMBnyZ3B9tQ80Yzu/UWIiVTfTUzyMF8nugNI=
=l2RV
-----END PGP SIGNATURE-----

View File

@ -0,0 +1,49 @@
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512
Format: 1.8
Date: Tue, 06 Oct 2020 15:53:02 +0200
Source: torch-agent
Binary: torch-agent
Architecture: source all
Version: 0.0.1-1
Distribution: unstable
Urgency: medium
Maintainer: Benjamin Dweck <bjdweck@gmail.com>
Changed-By: Benjamin Dweck <bjdweck@gmail.com>
Description:
torch-agent - TORch is a solution for creating an SSH-via-Tor
Changes:
torch-agent (0.0.1-1) unstable; urgency=medium
.
* Initial release
Checksums-Sha1:
e88b32f193b3a57dd8717d02c643b6096b11e468 1397 torch-agent_0.0.1-1.dsc
75a6ce9e0ad9f4ed0d2d31348c9db1238bd4f39d 9788 torch-agent_0.0.1.orig.tar.xz
4b3e734647e0e62bbb17c1ed5dbbd853462613f9 9636 torch-agent_0.0.1-1.debian.tar.xz
816e7a65d14e02df230346565496a2bfb4ace2ad 5200 torch-agent_0.0.1-1_all.deb
d6de1f688aefa348cbcb38513c0418731a32be6c 6115 torch-agent_0.0.1-1_amd64.buildinfo
Checksums-Sha256:
9b9a4486d39a88c09e1bd648560cd0c70cbba0e40bed9305e540e551db31d55e 1397 torch-agent_0.0.1-1.dsc
30c630f9fdbaea2337a3e8701e753ef45a094b9403e77f9a42b2bd2ca63e8dc5 9788 torch-agent_0.0.1.orig.tar.xz
0ffd62a08673dfc3d0a7544eb62398b8fd3bd0aa71bfd19c1a8dd816c430ec1b 9636 torch-agent_0.0.1-1.debian.tar.xz
1560cd30b4944162d0ea4f2e4c5402527d06587c98a907820c36ec455633aede 5200 torch-agent_0.0.1-1_all.deb
98ac5666f20bfc2c3a7f803db6ac769df8be8f7f9a65742651c988e7104e5c34 6115 torch-agent_0.0.1-1_amd64.buildinfo
Files:
0abbdb3e83d948e0076ba9298c5f5502 1397 net optional torch-agent_0.0.1-1.dsc
267a824b2a18ef73dcda05da7e99a4b5 9788 net optional torch-agent_0.0.1.orig.tar.xz
ee6afe9f8ff5b6cade07a66f9075c505 9636 net optional torch-agent_0.0.1-1.debian.tar.xz
526fa2edc26efa17ce067b6b8b7780b5 5200 net optional torch-agent_0.0.1-1_all.deb
22b4edf1ac9a92dd878357a8ea5ba939 6115 net optional torch-agent_0.0.1-1_amd64.buildinfo
-----BEGIN PGP SIGNATURE-----
iQFGBAEBCgAwFiEEFNiF9i0uBB0TW5u+27VgOYC/OIMFAl988dQSHGJqZHdlY2tA
Z21haWwuY29tAAoJENu1YDmAvziDZJEH/0jFrjHV/crXnpwtzLt81CBJPTs84Uhp
crgNc1Dh6cul4a78mIlNMr/aTTAHUqV0PuOAuNsrsNZA0LBPH9Fa/sFuQAQVp8UC
TFffl9gt+s8UnR+JyYVW29PU/bLyrFeZPYYOrH/4xJ1houxgtAFgUh3B40cbX/26
CKyR4xMOFdtccSsZVJkPewrTHKDF1hibh4isK53/mHeCUnrlzosoZn873ZallEFD
tgbnmfMfx+ILlraz5L5UqghMZp+v8UqGuFV8D2EOC0XyRcpCpqlkioflUmL1AHML
KBqLg28oKmF56wyGfZgygzTUt/5tWTehjNwn36Ro+ZKbDMy1topS6aw=
=ufxl
-----END PGP SIGNATURE-----

Binary file not shown.