Merge pull request #374 from BenWiederhake/dev-builtinkey-debian
Don't use a file for the pubkey; merge Debian stuff - Don't use a file for the pubkey: Reading the pubkey caused a lot of pain in the past. Nobody complained about the format change, and there is only one Telegram pubkey anyway. So it's reasonable to assume that this feature is completely pointless. Also, tgl carries a hardcoded copy of the key anyway. So reading the key from memory instead of the filesystem is much less painful, and has essentially no cost. - merge Debian stuff: I stopped trying to push this into the Debian repository, since Telegram, tgl, and telegram-purple are too fast-paced and unstable. However, there was someone who wanted a package, and I dislike the bad state of the Ubuntu package. Including this complete and up-to-date debian/ folder means: users can easily build their own .deb package, and the Ubuntu package will hopefully see an increase in quality (at least debian/copyright, please).
This commit is contained in:
commit
a443ee1a5a
22 changed files with 396 additions and 167 deletions
|
@ -121,7 +121,6 @@ noicon_install: $(PRPL_LIBNAME) $(LOCALE_MOS)
|
|||
mkdir -m $(DIR_PERM) -p $(DESTDIR)$(PLUGIN_DIR_PURPLE)
|
||||
install -m $(FILE_PERM) $(PRPL_LIBNAME) $(DESTDIR)$(PLUGIN_DIR_PURPLE)/$(PRPL_NAME)
|
||||
mkdir -m $(DIR_PERM) -p $(DESTDIR)/etc/telegram-purple
|
||||
install -m $(FILE_PERM) tg-server.tglpub $(DESTDIR)/etc/telegram-purple/server.tglpub
|
||||
# Assume that the user does not use AppStream if she doesn't want icons
|
||||
@for lang in $(LOCALES); do \
|
||||
mkdir -p $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES; \
|
||||
|
@ -133,7 +132,7 @@ noicon_install: $(PRPL_LIBNAME) $(LOCALE_MOS)
|
|||
noicon_uninstall:
|
||||
rm -f $(DESTDIR)$(PLUGIN_DIR_PURPLE)/$(PRPL_NAME)
|
||||
rm -f $(DESTDIR)/etc/telegram-purple/server.pub # TODO: Remove this in later versions
|
||||
rm -f $(DESTDIR)/etc/telegram-purple/server.tglpub
|
||||
rm -f $(DESTDIR)/etc/telegram-purple/server.tglpub # TODO: Remove this in later versions
|
||||
# TODO: Delete all installed .mo's, no matter what LINGUAS says.
|
||||
@for lang in $(LOCALES); do \
|
||||
echo "removing $(localedir)/$$lang/LC_MESSAGES/$(gettext_package).mo"; \
|
||||
|
|
|
@ -106,7 +106,6 @@ strip: $(PRPL_LIBNAME)
|
|||
install: $(PRPL_LIBNAME) $(LOCALES)
|
||||
mkdir -m $(DIR_PERM) -p $(PLUGIN_DIR_PURPLE)
|
||||
install -m $(FILE_PERM) $(PRPL_LIBNAME) $(PLUGIN_DIR_PURPLE)/$(PRPL_NAME)
|
||||
install -m $(FILE_PERM) tg-server.tglpub $(DATA_ROOT_DIR_PURPLE)/server.tglpub
|
||||
ifeq ($(COPY_ICONS),no)
|
||||
@echo "Not copying icons due to configure-option --disable-icons."
|
||||
@echo " If you're using Finch, Empathy, or Telepathy, then this is a good idea."
|
||||
|
|
48
README.md
48
README.md
|
@ -41,10 +41,8 @@ https://aur.archlinux.org/packages/telegram-purple/
|
|||
|
||||
#### Debian
|
||||
|
||||
At the time of writing, the package hasn't been accepted yet.
|
||||
Please first check if it's already available to you: `sudo apt-get install telegram-purple`
|
||||
|
||||
If this doesn't work because the package doesn't exist (yet), please build it from source.
|
||||
You can build it from source (see following section) or build a `.deb` file
|
||||
for your package manager.
|
||||
|
||||
|
||||
Building From Source
|
||||
|
@ -85,12 +83,6 @@ this indicates that this version is in fact much further than just
|
|||
|
||||
##### Debian / Ubuntu
|
||||
|
||||
We are working on a Debian package! Please first check if it's already available to you: `sudo apt-get install telegram-purple`
|
||||
|
||||
If the above works, then you should stop here: It is now installed.
|
||||
|
||||
If the above fails: Don't worry, just continue building it by yourself. Next you need to install these dependencies:
|
||||
|
||||
sudo apt-get install libgcrypt20-dev libpurple-dev libwebp-dev gettext build-essential
|
||||
|
||||
|
||||
|
@ -223,17 +215,16 @@ Building the Debian Package
|
|||
If you just need a `.deb`, simply do:
|
||||
|
||||
sudo apt-get install debhelper
|
||||
git checkout debian-master
|
||||
git submodule update --recursive
|
||||
fakeroot ./debian/rules binary
|
||||
|
||||
And you're done! The `.deb` is in the directory at which you started.
|
||||
And you're done! The `telegram-purple_….deb` and `telegram-purple-dbgsym_….deb` files
|
||||
are in the parent directory.
|
||||
To show some info about it, try this:
|
||||
|
||||
dpkg --info telegram-purple_*.deb
|
||||
|
||||
`debian-master` always points to a version that was submitted to Debian. (Note that this doesn't exist yet, as we haven't released to Debian yet.)
|
||||
`debian-develop` is the candidate for the next submission.
|
||||
Please note that installing the debugging symbols (`dbgsym`)
|
||||
help a lot in troubleshooting, so please do install them, too!
|
||||
|
||||
#### Debian Maintainers ####
|
||||
|
||||
|
@ -244,16 +235,15 @@ Here's how you can generate a `.orig.tar.gz`:
|
|||
|
||||
make dist
|
||||
|
||||
Note that these are incompatible with the old `debian/genorigtar.sh`
|
||||
tarballs, and can't be made compatible easily. If you need the tarball
|
||||
from "back then", see the documentation there.
|
||||
|
||||
This command requires the original tar to exist (and will fail otherwise,
|
||||
although the error message will be misleading) will build all further files,
|
||||
The following command requires the original tar to exist,
|
||||
and will build all further files,
|
||||
specifically `.debian.tar.xz`, `.dsc`, `.deb`, and `.changes`:
|
||||
|
||||
dpkg-buildpackage
|
||||
|
||||
If this fails with a cryptic error message,
|
||||
first make sure that the `….orig.tar` really is in place.
|
||||
|
||||
For the upload, you should use `pbuilder` and similar to build the package
|
||||
in a more minimalistic environment. That covers the official part of the work-flow.
|
||||
|
||||
|
@ -265,6 +255,8 @@ and `.dsc` files, do this:
|
|||
false # Move tar to parent directory, by hand
|
||||
dpkg-source -b .
|
||||
|
||||
Note that we no longer actively try to get it into the Debian repository.
|
||||
|
||||
1.3.0
|
||||
-----
|
||||
|
||||
|
@ -281,15 +273,11 @@ Discussion / Help
|
|||
|
||||
As we want to avoid OpenSSL, it has become necessary to replace the PEM file format. This means that if you use a custom pubkey (which you really REALLY shouldn't be doing), you have to adapt, sorry.
|
||||
|
||||
We no longer ship `tg-server.pub` (old format), but instead `tg-server.tglpub` (new format). If you have a `.pub` and want to continue using telegram-purple, please use this (hopefully highly portable) tool: [pem2bignum](https://github.com/BenWiederhake/pem2bignum)
|
||||
|
||||
You can also write your own conversion tool if you prefer. The format is really simple:
|
||||
|
||||
1. `e`, the public exponent, encoded as big endian 32 bit fixed length (e.g. `0x00 01 00 01` for 65537)
|
||||
2. `n_len`, the length of `n` in bytes, encoded as big endian 32 bit fixed length (e.g. `0x00 00 01 00` for a 2048-bit = 256-byte key)
|
||||
3. `n_raw`, the raw modulus, encoded as big endian, using the previously indicated length (e.g. `0xC1 50 02 3E [248 bytes omitted] 21 79 25 1F` in the case of telegram's public RSA key.)
|
||||
|
||||
If you are interested in developing a non-OpenSSL-licensed converter, look into [insane-triangle-banana](https://github.com/BenWiederhake/insane-triangle-banana).
|
||||
We no longer read the public key of the Telegram servers from a file.
|
||||
If you really need a different public key, and know what you're doing
|
||||
(e.g., connecting to some kind of test environment internal to Telegram,
|
||||
which also is a very bad idea), you need to find the call to `tgl_set_rsa_key_direct` in `telegram-purple.c`,
|
||||
and provide the key directly by yourself.
|
||||
|
||||
|
||||
FAQ
|
||||
|
|
8
debian/.gitignore
vendored
Normal file
8
debian/.gitignore
vendored
Normal file
|
@ -0,0 +1,8 @@
|
|||
/files
|
||||
/telegram-purple/
|
||||
/telegram-purple.*
|
||||
|
||||
/.debhelper/
|
||||
/autoreconf.after
|
||||
/autoreconf.before
|
||||
/debhelper-build-stamp
|
121
debian/README.source
vendored
Normal file
121
debian/README.source
vendored
Normal file
|
@ -0,0 +1,121 @@
|
|||
Packing, unpacking, and modifying (as per §4.14)
|
||||
================================================
|
||||
|
||||
1. Generate the fully patched source, in a form ready for editing, that
|
||||
would be built to create Debian packages.
|
||||
|
||||
This step does not need any special attention. The standard invocation
|
||||
of "dpkg-source -x" does exactly what is needed.
|
||||
|
||||
2. Modify the source and save those modifications so that they will be
|
||||
applied when building the package.
|
||||
== AND ==
|
||||
3. Remove source modifications that are currently being applied when
|
||||
building the package.
|
||||
|
||||
There is no standard procedure for this package. Please note that:
|
||||
- quilt seems to be the default tool for this kind of work.
|
||||
- git-buildpackage (gbp) might not work as expected, so I refrained
|
||||
from trying it for this task. See below.
|
||||
|
||||
So far, issues reported against the project have been resolved quickly
|
||||
enough to avoid scenarios that usually need the d/patches/ directory.
|
||||
|
||||
4. Generate a *.orig.tar.gz from the git repository, e.g., upgrade the
|
||||
Debian source package to a new upstream version.
|
||||
|
||||
Easy way:
|
||||
use the provided orig-tars, e.g., 'telegram-purple_1.2.6.orig.tar.gz'
|
||||
|
||||
Hard way (the procedure used to create these files):
|
||||
$ git clone --recursive --branch debian-master \
|
||||
https://github.com/majn/telegram-purple.git
|
||||
$ cd telegram-purple
|
||||
...$ make dist
|
||||
|
||||
The output should look like this:
|
||||
Refresh commit.h
|
||||
./gen-origtar
|
||||
mv -f bin/result.tar.gz telegram-purple_deb-v1.2.4-2-161-gb5272d4.orig.tar.gz
|
||||
|
||||
The following approaches do NOT work:
|
||||
- Github's "download source tar", as this leaves out submodules.
|
||||
- git-buildpackage (gpb). No support for submodules-within-submodules.
|
||||
|
||||
The file README.md of the project contains some hints about how to
|
||||
build packages, so here's a cheat sheet:
|
||||
- Just build a *.deb, ideal for local use:
|
||||
fakeroot ./debian/rules binary
|
||||
- Build the package for analysis, e.g. lintian:
|
||||
dpkg-buildpackage
|
||||
- Only produce a *.dsc and *.debian.tar.xz file:
|
||||
( cd .. && dpkg-source -b telegram-purple )
|
||||
- Run pbuilder (needs the previous step):
|
||||
( cd .. && sudo pbuilder --build telegram-purple_*.dsc )
|
||||
|
||||
|
||||
|
||||
Package name
|
||||
============
|
||||
|
||||
At the time of writing (2016-01-03), the Debian repository contained
|
||||
the following libpurple-backends:
|
||||
- pidgin-encryption
|
||||
- pidgin-latex
|
||||
- pidgin-otr
|
||||
- pidgin-plugin-pack
|
||||
- pidgin-privacy-please
|
||||
So following that tradition, this package would be called "pidgin-telegram".
|
||||
|
||||
However, this would have a lot of disadvantages:
|
||||
- This is a frontend-agnostic backend that works with Adium, pidgin,
|
||||
and Finch. We hope that it works nicely with all other frontends, too.
|
||||
Calling it "pidgin-something" would be highly misleading.
|
||||
- All error messages and their translations would need to be adapted
|
||||
- paths would need to change that aren't configurable
|
||||
- some users are expecting the name to be "telegram-purple"
|
||||
(at least initially)
|
||||
|
||||
Overall, we consider this a needlessly confusing convention, and
|
||||
intentionally break with it.
|
||||
|
||||
|
||||
|
||||
Packaging libtgl separately (as per §4.13)
|
||||
==========================================
|
||||
|
||||
No.
|
||||
|
||||
So far, ABI-compatibility was broken between virtually every other
|
||||
commit to libtgl, and the library is still under development. The
|
||||
latest "stable" release is heavily outdated and can no longer be used
|
||||
productively (missing features, known breaking bugs, etc.), so if we were to
|
||||
package tgl we would need to repackage it constantly, with no defined
|
||||
concept of version, soname, or anything reliable. No other program
|
||||
(*including* tg-cli) can be expected to use the same version of libtgl
|
||||
as telegram-purple does. (This might happen every now and then, but
|
||||
that would be random chance. Finally, it's highly unlikely that someone
|
||||
installs and uses both telegram-purple and tg-cli.)
|
||||
|
||||
Packaging "tl-parser" or the intermediate "generate" program is also a
|
||||
bad idea: One *could* do that, but it's only useful for libtgl. So
|
||||
there is a significant lack of users.
|
||||
|
||||
Note that tl-parser is a relatively (in comparison to the rest of
|
||||
libtgl) stable, portable application (not library). The output format
|
||||
hasn't changed in a over a year. If you believe that these six files
|
||||
will be used by a lot of people, I'll be happy to package tl-parser for
|
||||
you. However, please note that this would require at least two
|
||||
packages: tl-parser (binary), tl-parser-dev (headers), and possibly
|
||||
libtl-parser (common object files).
|
||||
|
||||
In short: there's no set of component that could be packaged in a more
|
||||
clever way.
|
||||
|
||||
|
||||
|
||||
About this document
|
||||
===================
|
||||
|
||||
This is not written in Markdown. All formatting is in the hope of
|
||||
making it easy to read.
|
27
debian/changelog
vendored
Normal file
27
debian/changelog
vendored
Normal file
|
@ -0,0 +1,27 @@
|
|||
telegram-purple (1.3.1-1) UNRELEASED; urgency=medium
|
||||
|
||||
* New upstream release
|
||||
* No longer actively try to push it into Debian: too unstable.
|
||||
If you really want a .deb file, see README.md in the toplevel directory.
|
||||
|
||||
-- Ben Wiederhake <Ben.Wiederhake@gmail.com> Mon, 10 Apr 2017 23:31:32 +0200
|
||||
|
||||
telegram-purple (1.3.0-1) unstable; urgency=medium
|
||||
|
||||
[ Hugues Morisset ]
|
||||
* Initial Release (Closes: #833793)
|
||||
|
||||
[ Ben Wiederhake ]
|
||||
* Please note that due to the format-switch in 1.2.6, the file
|
||||
/etc/telegram-purple/server.pub is obsolete for all version after it.
|
||||
It is ignored to allow for smooth transition from old, manual
|
||||
installations, and may be removed in future versions.
|
||||
* New upstream release
|
||||
- Add translations and plural support
|
||||
- Fix lots of bugs around secret chats (still not perfect, though)
|
||||
- Fix behavior around hibernation
|
||||
- Fix display errors and false warnings
|
||||
- Fix crash on 'unsupported' media
|
||||
- Support supergroups and channels
|
||||
|
||||
-- Ben Wiederhake <Ben.Wiederhake@gmail.com> Mon, 22 Aug 2016 20:59:47 +0200
|
1
debian/compat
vendored
Normal file
1
debian/compat
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
9
|
42
debian/control
vendored
Normal file
42
debian/control
vendored
Normal file
|
@ -0,0 +1,42 @@
|
|||
Source: telegram-purple
|
||||
Section: net
|
||||
Priority: optional
|
||||
Maintainer: Ben Wiederhake <Ben.Wiederhake@gmail.com>
|
||||
Uploaders:
|
||||
Hugues Morisset <morisset.hugues@gmail.com>
|
||||
Build-Depends:
|
||||
autotools-dev,
|
||||
debhelper (>= 9),
|
||||
dh-autoreconf,
|
||||
libgcrypt20-dev,
|
||||
libglib2.0-dev,
|
||||
libpurple-dev,
|
||||
libwebp-dev,
|
||||
pkg-config,
|
||||
zlib1g-dev
|
||||
Standards-Version: 3.9.8
|
||||
Homepage: https://github.com/majn/telegram-purple
|
||||
Vcs-Git: https://github.com/majn/telegram-purple.git
|
||||
Vcs-Browser: https://github.com/majn/telegram-purple
|
||||
|
||||
Package: telegram-purple
|
||||
Architecture: any
|
||||
Depends:
|
||||
${misc:Depends},
|
||||
${shlibs:Depends}
|
||||
Suggests:
|
||||
pidgin | finch
|
||||
Description: Purple plugin to support Telegram
|
||||
Plugin for purple which lets you use and manage your Telegram account
|
||||
like any other account in purple. Some features like self-destruct
|
||||
messages are currently in development.
|
||||
X-Comment: Traditionally, this plugin should be named "telegram-pidgin".
|
||||
However, this plugin is also designed to work with at least Adium,
|
||||
Finch, and hopefully all other libpurple-frontends, so this name would
|
||||
be highly misleading. Furthermore, the plugin refers to itself as
|
||||
"telegram-purple", and changing this (e.g. via a patch) would be highly
|
||||
non-trivial and fragile. Finally, several users know this plugin under
|
||||
the name telegram-purple only, so naming the Debian package differently
|
||||
would be another source of confusion. Thus we intentionally break with
|
||||
this tradition, and re-used the name telegram-purple from the original
|
||||
project.
|
102
debian/copyright
vendored
Normal file
102
debian/copyright
vendored
Normal file
|
@ -0,0 +1,102 @@
|
|||
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
|
||||
Upstream-Name: pidgin-telegram
|
||||
Source: https://github.com/majn/telegram-purple
|
||||
|
||||
Files: *
|
||||
Copyright: 2014-2015 Matthias Jentsch <mtthsjntsch@gmail.com>
|
||||
2014 Vitaly Valtman <mail@vysheng.ru>
|
||||
2014 Christopher Althaus <althaus.christopher@gmail.com>
|
||||
2014 Markus Endres <endresma45241@th-nuernberg.de>
|
||||
License: GPL-2+
|
||||
|
||||
Files: AppStream/telegram-purple.metainfo.untranslated.xml
|
||||
Copyright: 2015 Jiri Eischmann <eischmann@redhat.com>
|
||||
License: GFDL-NIV
|
||||
License-Grant:
|
||||
<metadata_license>GFDL-1.3</metadata_license>
|
||||
|
||||
Files: debian/*
|
||||
Copyright: 2015 Hugues Morisset <morisset.hugues@gmail.com>
|
||||
2015 Ben Wiederhake <BenWiederhake.GitHub@gmail.com>
|
||||
License: GPL-2+
|
||||
|
||||
Files: tgl/*
|
||||
Copyright: 2013-2015 Vitaly Valtman <mail@vysheng.ru>
|
||||
2015 Matthias Jentsch <mtthsjntsch@gmail.com>
|
||||
2015 Ben Wiederhake <BenWiederhake.GitHub@gmx.de>
|
||||
License: LGPL-2.1+
|
||||
|
||||
Files: tgl/tl-parser/*
|
||||
Copyright: 2015 Matthias Jentsch <mtthsjntsch@gmail.com>
|
||||
2015 Vitaly Valtman <mail@vysheng.ru>
|
||||
2015 Christopher Althaus <althaus.christopher@gmail.com>
|
||||
2015 Markus Endres <endresma45241@th-nuernberg.de>
|
||||
License: GPL-2+
|
||||
|
||||
Files: tgl/tl-parser/portable_endian.h
|
||||
Copyright: 2013-2014 Mathias Panzenböck <grosser.meister.morti@gmx.net>
|
||||
2015 PkmX <pkmx.tw@gmail.com>
|
||||
License: BSD-3-clause or Expat or Apache-2
|
||||
License-Grant:
|
||||
I, Mathias Panzenböck, place this file hereby into the public domain.
|
||||
Use it at your own risk for whatever you like. In case there are
|
||||
jurisdictions that don't support putting things in the public domain
|
||||
you can also consider it to be "dual licensed" under the BSD, MIT and
|
||||
Apache licenses, if you want to. This code is trivial anyway. Consider
|
||||
it an example on how to get the endian conversion functions on
|
||||
different platforms.
|
||||
FIXME:
|
||||
This is a tag for the sole purpose and hope that one day, someone
|
||||
searches for "Fixme" (possibly case-sensitive). Thus, the issue in the
|
||||
following "Comment" field can be found in both the Debian archive and
|
||||
the original project.
|
||||
Comment:
|
||||
This is a comment from the person who wrote this debian/copyright file.
|
||||
.
|
||||
The licensing was obviously meant to be "use whatever". However, we
|
||||
have to mirror it precisely, and verbatim. I took the freedom to
|
||||
interprete the terms "the MIT licenses" as "Expat"; "the BSD licenses"
|
||||
as BSD 3-clause; and "the Apache licenses" as Apache 2.0. I do this
|
||||
in order to keep the list reasonably small and close enough. However,
|
||||
someone who understands the legal implications should take a close
|
||||
look at this.
|
||||
|
||||
License: LGPL-2.1+
|
||||
On Debian systems, the complete text of the GNU Lesser General
|
||||
Public License can be found in "/usr/share/common-licenses/LGPL-2.1".
|
||||
|
||||
License: GPL-2+
|
||||
On Debian systems, the complete text of the GNU General Public License
|
||||
version 2 can be found in "/usr/share/common-licenses/GPL-2".
|
||||
|
||||
License: BSD-3-clause
|
||||
On Debian systems, the complete text of the Revised BSD License
|
||||
(3-clause) can be found in "/usr/share/common-licenses/GPL-3".
|
||||
|
||||
License: Apache-2
|
||||
On Debian systems, the complete text of version 2.0 of the Apache License
|
||||
can be found in ‘/usr/share/common-licenses/Apache-2.0’.
|
||||
|
||||
License: GFDL-NIV
|
||||
On Debian systems, the complete text of version 1.3 of the GNU Free
|
||||
Document License ‘/usr/share/common-licenses/GFDL-1.3’.
|
||||
|
||||
License: Expat
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of this software and associated documentation files (the
|
||||
"Software"), to deal in the Software without restriction, including
|
||||
without limitation the rights to use, copy, modify, merge, publish,
|
||||
distribute, sublicense, and/or sell copies of the Software, and to
|
||||
permit persons to whom the Software is furnished to do so, subject to
|
||||
the following conditions:
|
||||
.
|
||||
The above copyright notice and this permission notice shall be included
|
||||
in all copies or substantial portions of the Software.
|
||||
.
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
1
debian/docs
vendored
Normal file
1
debian/docs
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
AUTHORS
|
22
debian/rules
vendored
Executable file
22
debian/rules
vendored
Executable file
|
@ -0,0 +1,22 @@
|
|||
#!/usr/bin/make -f
|
||||
|
||||
DPKG_EXPORT_BUILDFLAGS = 1
|
||||
include /usr/share/dpkg/default.mk
|
||||
|
||||
|
||||
%:
|
||||
dh $@ --parallel --with autoreconf
|
||||
|
||||
# dh_auto_clean tries to "make distclean", but we don't have that target.
|
||||
override_dh_auto_clean:
|
||||
test ! -e Makefile || $(MAKE) clean
|
||||
|
||||
## http://wiki.debian.org/onlyjob/get-orig-source
|
||||
PKD := $(shell dirname $(realpath $(firstword $(MAKEFILE_LIST))))
|
||||
PKG := $(shell dpkg-parsechangelog -l$(PKD)/changelog --show-field=Source)
|
||||
VER ?= $(shell dpkg-parsechangelog -l$(PKD)/changelog --show-field=Version | cut -d- -f1)
|
||||
.PHONY: get-orig-source
|
||||
get-orig-source: $(info I: $(PKG)_$(VER))
|
||||
@echo "# Downloading for ${PKD}"
|
||||
uscan --noconf --verbose --rename --destdir=$(CURDIR) \
|
||||
--check-dirname-level=0 --force-download --download-version "$(VER)" $(PKD)
|
1
debian/source/format
vendored
Normal file
1
debian/source/format
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
3.0 (quilt)
|
1
debian/source/options
vendored
Normal file
1
debian/source/options
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
extend-diff-ignore = "(^|/)(config\.(h|log|status)|Makefile)$"
|
27
debian/upstream/metadata
vendored
Normal file
27
debian/upstream/metadata
vendored
Normal file
|
@ -0,0 +1,27 @@
|
|||
Bug-Database: https://github.com/majn/telegram-purple/issues/
|
||||
Bug-Submit: https://github.com/majn/telegram-purple/issues/new
|
||||
#Cite-As: <a href="https://github.com/majn/telegram-purple">telegram-purple</ a>
|
||||
## Intentionally left out, to make sure that we don't accidentally break someone's
|
||||
## workflow. We err on the side of not prescribing anyone how to cite this work.
|
||||
#Changelog: https://github.com/majn/telegram-purple/blob/master/CHANGELOG.md
|
||||
## Intentionally left out as it's already outdated at the time of writing.
|
||||
#Contact: https://goo.gl/QHttTR
|
||||
## The development chat group.
|
||||
## Intentionally left out as the link changes constantly.
|
||||
## https://github.com/majn/telegram-purple#group-chat
|
||||
## for a recent link.
|
||||
#Donation: See 'Contact'
|
||||
#FAQ: https://github.com/majn/telegram-purple/#faq
|
||||
## Intentionally left out: no real content yet.
|
||||
Name: telegram-purple
|
||||
## Might be superfluous, but I want to confirm that the upstream name is
|
||||
## indeed telegram-purple, hence the package name in Debian.
|
||||
Repository: https://github.com/majn/telegram-purple/
|
||||
Repository-Browse: https://github.com/majn/telegram-purple/
|
||||
Security-Contact:
|
||||
Main developer: Matthias Jentch <mtthsjntsch AT gmail DOT com>
|
||||
Debian packager: Ben Wiederhake <Ben DOT Wiederhake AT gmail DOT com>
|
||||
# Development channel (public): https://goo.gl/QHttTR
|
||||
## Intentionally left out as the link changes constantly.
|
||||
## https://github.com/majn/telegram-purple#group-chat
|
||||
## for a recent link.
|
17
debian/watch
vendored
Normal file
17
debian/watch
vendored
Normal file
|
@ -0,0 +1,17 @@
|
|||
version=4
|
||||
opts="\
|
||||
downloadurlmangle=s/tag\/v(.*)$/download\/v$1\/telegram-purple_$1.orig.tar.gz/,\
|
||||
filenamemangle=s/.*tag\/v(.*)$/telegram-purple_$1.orig.tar.gz/,\
|
||||
uversionmangle=s/-(beta\d*)$/~$1/,\
|
||||
" \
|
||||
https://github.com/majn/telegram-purple/releases \
|
||||
/tag/v([\d\.]*(?:-beta\d*)?) \
|
||||
debian \
|
||||
uupdate
|
||||
|
||||
# Rationales (from bottom up):
|
||||
# - There will always be tags of the style "v1.2.5", so search for that
|
||||
# - The "beta" group must be non-capturing, otherwise uscan tries to concatenate them (e.g. "1.2.3-beta.-beta")
|
||||
# - Github tars are unusable; use the (hopefully attached) origtar
|
||||
# - Beta-releases should be ordered before the "main" release (was never relevant so far)
|
||||
# - Spacing in order to have exactly one rule per line
|
|
@ -35,68 +35,6 @@
|
|||
#define STATE_FILE_MAGIC 0x28949a93
|
||||
#define SECRET_CHAT_FILE_MAGIC 0x37a1988a
|
||||
|
||||
static gboolean read_ui32 (int fd, unsigned int *ret) {
|
||||
typedef char check_int_size[(sizeof (int) >= 4) ? 1 : -1];
|
||||
(void) sizeof (check_int_size);
|
||||
|
||||
unsigned char buf[4];
|
||||
if (4 != read (fd, buf, 4)) {
|
||||
return 0;
|
||||
}
|
||||
// Ugly but works.
|
||||
*ret = 0;
|
||||
*ret |= buf[0];
|
||||
*ret <<= 8;
|
||||
*ret |= buf[1];
|
||||
*ret <<= 8;
|
||||
*ret |= buf[2];
|
||||
*ret <<= 8;
|
||||
*ret |= buf[3];
|
||||
return 1;
|
||||
}
|
||||
|
||||
int read_pubkey_file (const char *name, struct rsa_pubkey *dst) {
|
||||
// Just to make sure nobody reads garbage.
|
||||
dst->e = 0;
|
||||
dst->n_len = 0;
|
||||
dst->n_raw = NULL;
|
||||
|
||||
int pubkey_fd = open (name, O_RDONLY | O_BINARY);
|
||||
if (pubkey_fd < 0) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
unsigned int e;
|
||||
unsigned int n_len;
|
||||
if (!read_ui32 (pubkey_fd, &e) || !read_ui32 (pubkey_fd, &n_len) // Ensure successful reads
|
||||
|| n_len < 128 || n_len > 1024 || e < 5) { // Ensure (at least remotely) sane parameters.
|
||||
close (pubkey_fd);
|
||||
return 0;
|
||||
}
|
||||
|
||||
unsigned char *n_raw = malloc (n_len);
|
||||
if (!n_raw) {
|
||||
close (pubkey_fd);
|
||||
return 0;
|
||||
}
|
||||
|
||||
gint readret;
|
||||
readret = read (pubkey_fd, n_raw, n_len);
|
||||
if (readret <= 0 || (n_len != (guint) readret)) {
|
||||
free (n_raw);
|
||||
close (pubkey_fd);
|
||||
return 0;
|
||||
}
|
||||
close (pubkey_fd);
|
||||
|
||||
dst->e = e;
|
||||
dst->n_len = n_len;
|
||||
dst->n_raw = n_raw;
|
||||
|
||||
info ("read pubkey file: n_len=%u e=%u", n_len, e);
|
||||
return 1;
|
||||
}
|
||||
|
||||
void read_state_file (struct tgl_state *TLS) {
|
||||
char *name = 0;
|
||||
name = g_strdup_printf("%s/%s", TLS->base_path, "state");
|
||||
|
@ -440,20 +378,6 @@ gchar *get_config_dir (char const *username) {
|
|||
return dir;
|
||||
}
|
||||
|
||||
gchar *get_user_pk_path () {
|
||||
/*
|
||||
This can't be conditional on whether or not we're using telepathy, because
|
||||
then we would need to make sure that `make local_install` also knows about
|
||||
that location. So we *always* use ${HOME}/.purple/telegram-purple,
|
||||
even when the other files aren't in this folder.
|
||||
Note that this is only visible when using Telepathy/Empathy with
|
||||
local_install, which should be kinda rare anyway (use telepathy-morse!).
|
||||
*/
|
||||
return g_strconcat (g_get_home_dir(), G_DIR_SEPARATOR_S, ".purple",
|
||||
G_DIR_SEPARATOR_S, "telegram-purple",
|
||||
G_DIR_SEPARATOR_S, user_pk_filename, NULL);
|
||||
}
|
||||
|
||||
gchar *get_download_dir (struct tgl_state *TLS) {
|
||||
assert (TLS->base_path);
|
||||
static gchar *dir;
|
||||
|
|
|
@ -22,14 +22,6 @@
|
|||
|
||||
#include "telegram-purple.h"
|
||||
|
||||
struct rsa_pubkey {
|
||||
unsigned int e;
|
||||
unsigned int n_len;
|
||||
unsigned char *n_raw;
|
||||
};
|
||||
|
||||
gboolean read_pubkey_file (const char *name, struct rsa_pubkey *dst);
|
||||
|
||||
void read_state_file (struct tgl_state *TLS);
|
||||
void read_auth_file (struct tgl_state *TLS);
|
||||
void write_auth_file (struct tgl_state *TLS);
|
||||
|
@ -40,7 +32,6 @@ void write_secret_chat_file (struct tgl_state *TLS);
|
|||
void write_secret_chat_gw (struct tgl_state *TLS, void *extra, int success, struct tgl_secret_chat *E);
|
||||
|
||||
gchar *get_config_dir (char const *username);
|
||||
gchar *get_user_pk_path ();
|
||||
gchar *get_download_dir (struct tgl_state *TLS);
|
||||
|
||||
int tgp_visualize_key (struct tgl_state *TLS, unsigned char* sha1_key);
|
||||
|
|
|
@ -18,6 +18,8 @@
|
|||
Copyright Matthias Jentsch, Vitaly Valtman, Ben Wiederhake, Christopher Althaus 2014-2015
|
||||
*/
|
||||
|
||||
#include <mtproto-key.h>
|
||||
|
||||
#include "telegram-purple.h"
|
||||
#include "commit.h"
|
||||
|
||||
|
@ -37,12 +39,6 @@ static void update_secret_chat_handler (struct tgl_state *TLS, struct tgl_secret
|
|||
static void update_on_failed_login (struct tgl_state *TLS);
|
||||
|
||||
const char *config_dir = "telegram-purple";
|
||||
const char *user_pk_filename = "server.tglpub";
|
||||
#ifdef WIN32
|
||||
const char *pk_path = "server.tglpub";
|
||||
#else
|
||||
const char *pk_path = "/etc/telegram-purple/server.tglpub";
|
||||
#endif
|
||||
|
||||
struct tgl_update_callback tgp_callback = {
|
||||
.new_msg = update_message_handler,
|
||||
|
@ -541,46 +537,9 @@ static void tgprpl_login (PurpleAccount * acct) {
|
|||
tgl_set_download_directory (TLS, get_download_dir(TLS));
|
||||
debug ("base configuration path: '%s'", TLS->base_path);
|
||||
|
||||
struct rsa_pubkey pubkey;
|
||||
#ifdef WIN32
|
||||
gchar *global_pk_path = g_strdup_printf("%s/%s", DATADIR, pk_path);
|
||||
#else
|
||||
gchar *global_pk_path = g_strdup(pk_path);
|
||||
#endif
|
||||
debug ("trying global pubkey at %s", global_pk_path);
|
||||
gboolean global_pk_loaded = read_pubkey_file (global_pk_path, &pubkey);
|
||||
g_free(global_pk_path);
|
||||
|
||||
tgl_set_verbosity (TLS, 4);
|
||||
if (global_pk_loaded) {
|
||||
info ("using global pubkey");
|
||||
tgl_set_rsa_key_direct (TLS, pubkey.e, pubkey.n_len, pubkey.n_raw);
|
||||
} else {
|
||||
char *user_pk_path = get_user_pk_path ();
|
||||
debug ("trying local pubkey at %s", user_pk_path);
|
||||
gboolean user_pk_loaded = read_pubkey_file (user_pk_path, &pubkey);
|
||||
|
||||
if (user_pk_loaded) {
|
||||
info ("using local pubkey");
|
||||
tgl_set_rsa_key_direct (TLS, pubkey.e, pubkey.n_len, pubkey.n_raw);
|
||||
} else {
|
||||
failure ("both didn't work. abort.");
|
||||
char *cause = g_strdup_printf (_("Unable to sign on as %s: file (public key) not found."),
|
||||
purple_account_get_username (acct));
|
||||
purple_connection_error_reason (gc, PURPLE_CONNECTION_ERROR_INVALID_SETTINGS, cause);
|
||||
char *long_hint = g_strdup_printf (
|
||||
_("Make sure telegram-purple is installed properly,\n"
|
||||
"including the .tglpub file.\n"
|
||||
"If you're running SELinux (e.g. when using Tails),\n"
|
||||
"try 'make local_install', or simply copy\n"
|
||||
"%1$s to %2$s."), pk_path, user_pk_path);
|
||||
purple_notify_message (_telegram_protocol, PURPLE_NOTIFY_MSG_ERROR, cause,
|
||||
long_hint, NULL, NULL, NULL);
|
||||
g_free (cause);
|
||||
g_free (long_hint);
|
||||
return;
|
||||
}
|
||||
}
|
||||
tgl_set_rsa_key_direct (TLS, tglmp_get_default_e(),
|
||||
tglmp_get_default_key_len(),
|
||||
tglmp_get_default_key());
|
||||
|
||||
tgl_set_ev_base (TLS, conn);
|
||||
tgl_set_net_methods (TLS, &tgp_conn_methods);
|
||||
|
|
|
@ -92,19 +92,18 @@ Section "MainSection" SEC01
|
|||
|
||||
SetOutPath "$PidginDir\locale"
|
||||
File /nonfatal "/oname=bg\LC_MESSAGES\telegram-purple.mo" "po\bg.mo"
|
||||
File /nonfatal "/oname=cs_CZ\LC_MESSAGES\telegram-purple.mo" "po\cs_CZ.mo"
|
||||
File /nonfatal "/oname=de_DE\LC_MESSAGES\telegram-purple.mo" "po\de_DE.mo"
|
||||
File /nonfatal "/oname=es_AR\LC_MESSAGES\telegram-purple.mo" "po\es_AR.mo"
|
||||
File /nonfatal "/oname=fr\LC_MESSAGES\telegram-purple.mo" "po\fr.mo"
|
||||
File /nonfatal "/oname=it_IT\LC_MESSAGES\telegram-purple.mo" "po\it_IT.mo"
|
||||
File /nonfatal "/oname=nl\LC_MESSAGES\telegram-purple.mo" "po\nl.mo"
|
||||
File /nonfatal "/oname=pl_PL\LC_MESSAGES\telegram-purple.mo" "po\pl_PL.mo"
|
||||
File /nonfatal "/oname=pt_BR\LC_MESSAGES\telegram-purple.mo" "po\pt_BR.mo"
|
||||
File /nonfatal "/oname=ru_RU\LC_MESSAGES\telegram-purple.mo" "po\ru_RU.mo"
|
||||
File /nonfatal "/oname=sq\LC_MESSAGES\telegram-purple.mo" "po\sq.mo"
|
||||
File /nonfatal "/oname=uk\LC_MESSAGES\telegram-purple.mo" "po\uk.mo"
|
||||
|
||||
SetOutPath "$PidginDir"
|
||||
File "/oname=server.tglpub" "tg-server.tglpub"
|
||||
File "${WIN32_DEV_TOP}\libgpg-error-1.12-2\bin\libgpg-error-0.dll"
|
||||
File "${WIN32_DEV_TOP}\libgcrypt-1.6.3\bin\libgcrypt-20.dll"
|
||||
File "${WIN32_DEV_TOP}\libwebp-0.4.3-1\bin\libwebp-5.dll"
|
||||
|
|
|
@ -94,7 +94,6 @@ Section "MainSection" SEC01
|
|||
File /nonfatal "/oname=%\LC_MESSAGES\telegram-purple.mo" "po\%.mo"
|
||||
|
||||
SetOutPath "$PidginDir"
|
||||
File "/oname=server.tglpub" "tg-server.tglpub"
|
||||
File "${WIN32_DEV_TOP}\libgpg-error-1.12-2\bin\libgpg-error-0.dll"
|
||||
File "${WIN32_DEV_TOP}\libgcrypt-1.6.3\bin\libgcrypt-20.dll"
|
||||
File "${WIN32_DEV_TOP}\libwebp-0.4.3-1\bin\libwebp-5.dll"
|
||||
|
|
|
@ -16,6 +16,7 @@ ${PLUGIN_TESTS}: %: test/bin/% test/tmp/user
|
|||
|
||||
.PHONY: check
|
||||
check: ${PLUGIN_TESTS} test/tmp/user
|
||||
@echo "'make check' passed."
|
||||
|
||||
.PHONY: recheck
|
||||
recheck: clean-test check
|
||||
|
|
BIN
tg-server.tglpub
BIN
tg-server.tglpub
Binary file not shown.
Loading…
Add table
Reference in a new issue