Hello community,
here is the log from the commit of package EternalTerminal for openSUSE:Factory
checked in at 2020-02-18 10:38:28
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/EternalTerminal (Old)
and /work/SRC/openSUSE:Factory/.EternalTerminal.new.26092 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "EternalTerminal"
Tue Feb 18 10:38:28 2020 rev:3 rq:774819 version:6.0.6
Changes:
--------
--- /work/SRC/openSUSE:Factory/EternalTerminal/EternalTerminal.changes
2019-12-27 14:01:33.948895128 +0100
+++
/work/SRC/openSUSE:Factory/.EternalTerminal.new.26092/EternalTerminal.changes
2020-02-18 10:39:13.348799690 +0100
@@ -1,0 +2,6 @@
+Mon Feb 17 09:58:16 UTC 2020 - Michael Vetter <[email protected]>
+
+- Update to 6.0.6:
+ * Generate passkeys on server (#280)
+
+-------------------------------------------------------------------
Old:
----
et-v6.0.5.tar.gz
New:
----
et-v6.0.6.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ EternalTerminal.spec ++++++
--- /var/tmp/diff_new_pack.nscJx3/_old 2020-02-18 10:39:15.792804677 +0100
+++ /var/tmp/diff_new_pack.nscJx3/_new 2020-02-18 10:39:15.792804677 +0100
@@ -1,7 +1,7 @@
#
# spec file for package EternalTerminal
#
-# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2020 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -18,7 +18,7 @@
%global _firewalld_dir %{_prefix}/lib/firewalld
Name: EternalTerminal
-Version: 6.0.5
+Version: 6.0.6
Release: 0
Summary: Remote shell that survives IP roaming and disconnect
License: Apache-2.0
++++++ et-v6.0.5.tar.gz -> et-v6.0.6.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/EternalTerminal-et-v6.0.5/.circleci/config.yml
new/EternalTerminal-et-v6.0.6/.circleci/config.yml
--- old/EternalTerminal-et-v6.0.5/.circleci/config.yml 2019-12-26
03:07:16.000000000 +0100
+++ new/EternalTerminal-et-v6.0.6/.circleci/config.yml 2020-02-15
04:41:24.000000000 +0100
@@ -104,7 +104,7 @@
command: mkdir -p ~/.ssh/ && echo -e "Host
github.com\n\tStrictHostKeyChecking no\n" >> ~/.ssh/config
- run:
name: Install system dependencies
- command: brew upgrade python@2 python; brew install cmake; brew
install protobuf libsodium gflags
+ command: brew remove python@2; brew upgrade python; brew install
cmake; brew install protobuf libsodium gflags
- checkout
- run:
name: Init submodules
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/EternalTerminal-et-v6.0.5/.github/FUNDING.yml
new/EternalTerminal-et-v6.0.6/.github/FUNDING.yml
--- old/EternalTerminal-et-v6.0.5/.github/FUNDING.yml 1970-01-01
01:00:00.000000000 +0100
+++ new/EternalTerminal-et-v6.0.6/.github/FUNDING.yml 2020-02-15
04:41:24.000000000 +0100
@@ -0,0 +1,3 @@
+# These are supported funding model platforms
+
+github: MisterTea
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/EternalTerminal-et-v6.0.5/CMakeLists.txt
new/EternalTerminal-et-v6.0.6/CMakeLists.txt
--- old/EternalTerminal-et-v6.0.5/CMakeLists.txt 2019-12-26
03:07:16.000000000 +0100
+++ new/EternalTerminal-et-v6.0.6/CMakeLists.txt 2020-02-15
04:41:24.000000000 +0100
@@ -1,5 +1,5 @@
cmake_minimum_required (VERSION 3.0.2)
-project (EternalTCP VERSION 6.0.5)
+project (EternalTCP VERSION 6.0.6)
SET(CMAKE_MODULE_PATH
"${CMAKE_SOURCE_DIR}/external_imported/sanitizers-cmake/cmake"
${CMAKE_MODULE_PATH})
FIND_PACKAGE(Sanitizers)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/EternalTerminal-et-v6.0.5/README.md
new/EternalTerminal-et-v6.0.6/README.md
--- old/EternalTerminal-et-v6.0.5/README.md 2019-12-26 03:07:16.000000000
+0100
+++ new/EternalTerminal-et-v6.0.6/README.md 2020-02-15 04:41:24.000000000
+0100
@@ -53,7 +53,7 @@
sudo yum -y install epel-release
sudo yum install cmake3
sudo yum install boost-devel libsodium-devel ncurses-devel protobuf-devel \
-protobuf-compiler cmake gflags-devel
+protobuf-compiler cmake gflags-devel protobuf-lite-devel
```
Download and install from source:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/EternalTerminal-et-v6.0.5/deployment/arch.Dockerfile
new/EternalTerminal-et-v6.0.6/deployment/arch.Dockerfile
--- old/EternalTerminal-et-v6.0.5/deployment/arch.Dockerfile 2019-12-26
03:07:16.000000000 +0100
+++ new/EternalTerminal-et-v6.0.6/deployment/arch.Dockerfile 2020-02-15
04:41:24.000000000 +0100
@@ -2,7 +2,7 @@
LABEL maintainer="Jason Gauci ([email protected])"
RUN pacman -Syu --noconfirm
-RUN pacman -Syu --noconfirm jq git base-devel sudo go openssh
+RUN pacman -Syu --noconfirm jq git base-devel sudo go openssh emacs
RUN useradd builduser
RUN passwd -d builduser
RUN printf 'builduser ALL=(ALL) ALL\n' | tee -a /etc/sudoers # Allow the
builduser passwordless sudo
@@ -25,9 +25,9 @@
RUN git config --global user.name "Foo Bar"
WORKDIR /home/builduser
-RUN git clone https://aur.archlinux.org/eternalterminal.git arch_et
+RUN git clone ssh://[email protected]/eternalterminal.git arch_et
-RUN git clone --branch release [email protected]:MisterTea/EternalTerminal.git
+RUN git clone --branch `curl
https://api.github.com/repos/mistertea/EternalTerminal/releases/latest | jq
'.tag_name' | sed 's/"//g'` [email protected]:MisterTea/EternalTerminal.git
RUN mkdir -p EternalTerminal/build
WORKDIR /home/builduser/EternalTerminal/build
RUN cmake ..
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/EternalTerminal-et-v6.0.5/deployment/debian/Vagrantfile
new/EternalTerminal-et-v6.0.6/deployment/debian/Vagrantfile
--- old/EternalTerminal-et-v6.0.5/deployment/debian/Vagrantfile 2019-12-26
03:07:16.000000000 +0100
+++ new/EternalTerminal-et-v6.0.6/deployment/debian/Vagrantfile 2020-02-15
04:41:24.000000000 +0100
@@ -12,12 +12,12 @@
# Every Vagrant development environment requires a box. You can search for
# boxes at https://vagrantcloud.com/search.
- config.vm.box = "debian/stretch64"
+ config.vm.box = "debian/buster64"
config.ssh.shell = "sh"
config.vm.provider "virtualbox" do |v|
v.memory = 2048
- v.cpus = 4
+ v.cpus = 8
end
# Disable automatic box update checking. If you disable this, then
@@ -75,7 +75,9 @@
# Puppet, Chef, Ansible, Salt, and Docker are also available. Please see the
# documentation for more information about their specific syntax and use.
config.vm.provision "shell", privileged: true, inline: <<-SHELL
- apt update && apt install -y build-essential git curl devscripts aptly dput
jq libsodium-dev libprotobuf-dev protobuf-compiler cmake libutempter-dev
debhelper dh-systemd pbuilder ubuntu-dev-tools openssh-server qemu
qemu-user-static debootstrap binfmt-support
+ apt update
+ DEBIAN_FRONTEND=noninteractive DEBIAN_PRIORITY=critical apt -q -y -o
"Dpkg::Options::=--force-confdef" -o "Dpkg::Options::=--force-confold" upgrade
+ apt install -y build-essential git curl devscripts aptly dput jq
libsodium-dev libprotobuf-dev protobuf-compiler cmake libutempter-dev debhelper
git-lfs dh-systemd pbuilder ubuntu-dev-tools openssh-server qemu
qemu-user-static debootstrap binfmt-support
SHELL
config.vm.provision "shell", privileged: false, inline: <<-SHELL
@@ -84,8 +86,11 @@
git config --global user.name "Jason Gauci"
sudo chmod -R 0700 ~/.gnupg ~/.ssh
+ git lfs install
echo
"PBUILDERSATISFYDEPENDSCMD=/usr/lib/pbuilder/pbuilder-satisfydepends-apt" >
~/.pbuilderrc
+ echo "default-cache-ttl 34560000
+max-cache-ttl 34560000" > ~/.gnupg/gpg-agent.conf
ssh-keyscan github.com >> ~/.ssh/known_hosts
git clone --branch release [email protected]:MisterTea/EternalTerminal.git
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/EternalTerminal-et-v6.0.5/deployment/debian/build_all_deb.sh
new/EternalTerminal-et-v6.0.6/deployment/debian/build_all_deb.sh
--- old/EternalTerminal-et-v6.0.5/deployment/debian/build_all_deb.sh
2019-12-26 03:07:16.000000000 +0100
+++ new/EternalTerminal-et-v6.0.6/deployment/debian/build_all_deb.sh
2020-02-15 04:41:24.000000000 +0100
@@ -3,7 +3,7 @@
wget `curl
https://api.github.com/repos/mistertea/EternalTerminal/releases/latest | jq
'.tarball_url' | sed 's/"//g'` -O `curl
https://api.github.com/repos/mistertea/EternalTerminal/releases/latest | jq
'.tag_name' | sed 's/"//g' | sed 's/et-v/et_/g' | sed 's/$/.orig.tar.gz/g'`
-for distro in `distro-info --supported | grep -v experimental`; do
+for distro in `distro-info --supported | grep -v experimental | grep -v sid`;
do
rm -Rf EternalTerminal/debian
cp -Rf debian_SOURCE EternalTerminal/debian
sed -i "s/##DISTRO##/${distro}/g" EternalTerminal/debian/changelog
@@ -23,11 +23,11 @@
pbuilder-dist ${distro} arm64 update
pbuilder-dist ${distro} arm64 build *.dsc
- aptly repo add et-${distro} ~/pbuilder/${distro}*_result/*.deb
+ aptly repo add -force-replace=true et-${distro}
~/pbuilder/${distro}*_result/*.deb
aptly publish drop ${distro} || true
aptly publish repo et-${distro}
done
-rsync -raz --delete --progress ~/.aptly/public/*
~/github/debian-et/debian-source/
+rsync -raz --delete --progress ~/.aptly/public/* ~/debian-et/debian-source/
echo "Go to ~/debian-et/ and push the new packages."
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/EternalTerminal-et-v6.0.5/deployment/debian/debian_SOURCE/changelog
new/EternalTerminal-et-v6.0.6/deployment/debian/debian_SOURCE/changelog
--- old/EternalTerminal-et-v6.0.5/deployment/debian/debian_SOURCE/changelog
2019-12-26 03:07:16.000000000 +0100
+++ new/EternalTerminal-et-v6.0.6/deployment/debian/debian_SOURCE/changelog
2020-02-15 04:41:24.000000000 +0100
@@ -1,3 +1,15 @@
+et (6.0.5-##DISTRO##2) ##DISTRO##; urgency=medium
+
+ * Add arm64 build on Ubuntu
+
+ -- Jason Gauci <[email protected]> Sat, 25 Jan 2020 16:36:51 -0800
+
+et (6.0.5-##DISTRO##1) ##DISTRO##; urgency=medium
+
+ * Various compatibility fixes
+
+ -- Jason Gauci <[email protected]> Mon, 14 Oct 2019 16:36:51 -0800
+
et (6.0.4-##DISTRO##2) ##DISTRO##; urgency=medium
* Fix bug in et.service
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/EternalTerminal-et-v6.0.5/deployment/fedora.Dockerfile
new/EternalTerminal-et-v6.0.6/deployment/fedora.Dockerfile
--- old/EternalTerminal-et-v6.0.5/deployment/fedora.Dockerfile 2019-12-26
03:07:16.000000000 +0100
+++ new/EternalTerminal-et-v6.0.6/deployment/fedora.Dockerfile 2020-02-15
04:41:24.000000000 +0100
@@ -5,7 +5,7 @@
RUN mkdir .ssh
COPY id_rsa .ssh/
COPY id_rsa.pub .ssh/
-RUN chmod 0400 .ssh/id_rsa
+RUN chmod -R 0700 ~/.ssh
ENV KRB5_TRACE="/dev/stdout kinit [email protected]"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/EternalTerminal-et-v6.0.5/src/base/Headers.hpp
new/EternalTerminal-et-v6.0.6/src/base/Headers.hpp
--- old/EternalTerminal-et-v6.0.5/src/base/Headers.hpp 2019-12-26
03:07:16.000000000 +0100
+++ new/EternalTerminal-et-v6.0.6/src/base/Headers.hpp 2020-02-15
04:41:24.000000000 +0100
@@ -78,6 +78,8 @@
#include "ThreadPool.h"
+#include <sodium.h>
+
using namespace std;
namespace google {}
@@ -199,6 +201,20 @@
return FD_ISSET(fd, &fdset);
}
+inline string genRandomAlphaNum(int len) {
+ static const char alphanum[] =
+ "0123456789"
+ "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
+ "abcdefghijklmnopqrstuvwxyz";
+ string s(len, '\0');
+
+ for (int i = 0; i < len; ++i) {
+ s[i] = alphanum[randombytes_uniform(sizeof(alphanum) - 1)];
+ }
+
+ return s;
+}
+
} // namespace et
inline bool operator==(const google::protobuf::MessageLite& msg_a,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/EternalTerminal-et-v6.0.5/src/terminal/SshSetupHandler.cpp
new/EternalTerminal-et-v6.0.6/src/terminal/SshSetupHandler.cpp
--- old/EternalTerminal-et-v6.0.5/src/terminal/SshSetupHandler.cpp
2019-12-26 03:07:16.000000000 +0100
+++ new/EternalTerminal-et-v6.0.6/src/terminal/SshSetupHandler.cpp
2020-02-15 04:41:24.000000000 +0100
@@ -4,20 +4,6 @@
#include <sys/wait.h>
namespace et {
-string genRandom(int len) {
- static const char alphanum[] =
- "0123456789"
- "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
- "abcdefghijklmnopqrstuvwxyz";
- string s(len, '\0');
-
- for (int i = 0; i < len; ++i) {
- s[i] = alphanum[randombytes_uniform(sizeof(alphanum) - 1)];
- }
-
- return s;
-}
-
string genCommand(const string &passkey, const string &id,
const string &clientTerm, const string &user, bool kill,
const string &command_prefix, const string &options) {
@@ -46,8 +32,12 @@
// Default to xterm-256color
clientTerm = envString;
}
- string passkey = genRandom(32);
- string id = genRandom(16);
+ string passkey = genRandomAlphaNum(32);
+ string id = genRandomAlphaNum(16);
+
+ id[0] = id[1] = id[2] = 'X'; // For compatibility with old servers that do
+ // not generate their own keys
+
string cmdoptions{"--verbose=" + std::to_string(vlevel)};
if (!serverFifo.empty()) {
cmdoptions += " --serverfifo=" + serverFifo;
@@ -112,15 +102,9 @@
}
auto idpasskey = sshBuffer.substr(passKeyIndex + 10, 16 + 1 + 32);
auto idpasskey_splited = split(idpasskey, '/');
- string returned_id = idpasskey_splited[0];
- string returned_passkey = idpasskey_splited[1];
- if (returned_id == id && returned_passkey == passkey) {
- LOG(INFO) << "etserver started";
- } else {
- LOG(FATAL) << "client/server idpasskey doesn't match: " << id
- << " != " << returned_id << " or " << passkey
- << " != " << returned_passkey;
- }
+ id = idpasskey_splited[0];
+ passkey = idpasskey_splited[1];
+ LOG(INFO) << "etserver started";
} catch (const runtime_error &err) {
cout << "Error initializing connection" << err.what() << endl;
}
@@ -163,21 +147,19 @@
idpasskey.erase(idpasskey.find_last_not_of(" \n\r\t") + 1);
idpasskey = idpasskey.substr(0, 16 + 1 + 32);
auto idpasskey_splited = split(idpasskey, '/');
- string returned_id = idpasskey_splited[0];
- string returned_passkey = idpasskey_splited[1];
- if (returned_id == id && returned_passkey == passkey) {
- LOG(INFO) << "jump client started.";
- } else {
- LOG(FATAL) << "client/server idpasskey doesn't match: " << id
- << " != " << returned_id << " or " << passkey
- << " != " << returned_passkey;
- }
+ id = idpasskey_splited[0];
+ passkey = idpasskey_splited[1];
} catch (const runtime_error &err) {
cout << "Error initializing connection" << err.what() << endl;
}
}
}
}
+
+ if (id.length() == 0 || passkey.length() == 0) {
+ LOG(FATAL) << "Somehow missing id or passkey: " << id.length() << " "
+ << passkey.length();
+ }
return id + "/" + passkey;
}
} // namespace et
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/EternalTerminal-et-v6.0.5/src/terminal/TerminalMain.cpp
new/EternalTerminal-et-v6.0.6/src/terminal/TerminalMain.cpp
--- old/EternalTerminal-et-v6.0.5/src/terminal/TerminalMain.cpp 2019-12-26
03:07:16.000000000 +0100
+++ new/EternalTerminal-et-v6.0.6/src/terminal/TerminalMain.cpp 2020-02-15
04:41:24.000000000 +0100
@@ -103,8 +103,20 @@
exit(1);
}
auto tokens = split(stdinData, '_');
- idpasskey = tokens[0];
- FATAL_FAIL(setenv("TERM", tokens[1].c_str(), 1));
+ if (tokens.size() == 2) {
+ idpasskey = tokens[0];
+ if (idpasskey.substr(0, 3) == std::string("XXX")) {
+ // New client connecting to new server, throw away passkey and
+ // regenerate
+ string passkey = genRandomAlphaNum(32);
+ string id = genRandomAlphaNum(16);
+ idpasskey = id + string("/") + passkey;
+ }
+
+ FATAL_FAIL(setenv("TERM", tokens[1].c_str(), 1));
+ } else {
+ LOG(FATAL) << "Invalid number of tokens: " << tokens.size();
+ }
} else {
string idpasskey = result["idpasskey"].as<string>();
if (result.count("idpasskeyfile")) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/EternalTerminal-et-v6.0.5/src/terminal/TerminalServerMain.cpp
new/EternalTerminal-et-v6.0.6/src/terminal/TerminalServerMain.cpp
--- old/EternalTerminal-et-v6.0.5/src/terminal/TerminalServerMain.cpp
2019-12-26 03:07:16.000000000 +0100
+++ new/EternalTerminal-et-v6.0.6/src/terminal/TerminalServerMain.cpp
2020-02-15 04:41:24.000000000 +0100
@@ -116,6 +116,10 @@
serverFifo = result["serverfifo"].as<string>();
}
+ if (result.count("port")) {
+ port = result["port"].as<int>();
+ }
+
GOOGLE_PROTOBUF_VERIFY_VERSION;
srand(1);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/EternalTerminal-et-v6.0.5/src/terminal/UserTerminalRouter.cpp
new/EternalTerminal-et-v6.0.6/src/terminal/UserTerminalRouter.cpp
--- old/EternalTerminal-et-v6.0.5/src/terminal/UserTerminalRouter.cpp
2019-12-26 03:07:16.000000000 +0100
+++ new/EternalTerminal-et-v6.0.6/src/terminal/UserTerminalRouter.cpp
2020-02-15 04:41:24.000000000 +0100
@@ -36,7 +36,6 @@
LOG(FATAL) << "Got an invalid packet header: " <<
int(packet.getHeader());
}
TerminalUserInfo tui =
stringToProto<TerminalUserInfo>(packet.getPayload());
- VLOG(1) << "Got id/passkey: " << tui.id() << "/" << tui.passkey();
tui.set_fd(terminalFd);
idInfoMap[tui.id()] = tui;
return IdKeyPair({tui.id(), tui.passkey()});