Coder Social home page Coder Social logo

kaffeine / telegram-qt Goto Github PK

View Code? Open in Web Editor NEW
160.0 16.0 57.0 6.32 MB

Qt-based library for Telegram network

License: GNU Lesser General Public License v2.1

CMake 1.13% QMake 0.52% C++ 96.94% C 0.10% QML 1.26% Dockerfile 0.03% Shell 0.02%
qt qt5 telegram server telegram-server

telegram-qt's Issues

MSVC CMake

Maybe fix problem
CMake Error: TARGETS given no DESTINATION

install(
TARGETS TelegramQt${QT_VERSION_MAJOR}Qml DESTINATION ${INSTALL_QML_IMPORT_DIR}/TelegramQt
LIBRARY DESTINATION ${INSTALL_QML_IMPORT_DIR}/TelegramQt
COMPONENT Library
)

**#**install(TARGETS TelegramQt${QT_VERSION_MAJOR}Qml DESTINATION ${INSTALL_QML_IMPORT_DIR}/TelegramQt)
install(FILES qmldir plugins.qmltypes DESTINATION ${INSTALL_QML_IMPORT_DIR}/TelegramQt)

Properly process update of chats without accessHash

A chat object from Updates typically has a subset of Chat properties from that of GetDialogs.
Especially an object from Updates has no AccessHash and currently it breaks any further access to that chat.

Updates received after GetDialogs override accessHash making the chat inaccessible. We have to properly process such Updates and probably update only the needed values.

Update:

TLUpdates(Updates) {
    updates: QVector(TLUpdate(UpdateEditChannelMessage) {
        message: TLMessage(Message) {
            flags: 58560
            id: 277
            toId: TLPeer(PeerChannel) {
                channelId: 1374347484
            }
            date: 1546154527
            message: <text>
            replyMarkup: TLReplyMarkup(ReplyInlineMarkup) {
                rows: QVector(TLKeyboardButtonRow(KeyboardButtonRow) {
                    buttons: QVector(TLKeyboardButton(KeyboardButtonCallback) {
                        text: 1 317
                        data: 73656e645f7265616374696f6e5f30
                    }, TLKeyboardButton(KeyboardButtonCallback) {
                        text: 2 2.3K
                        data: 73656e645f7265616374696f6e5f31
                    }, TLKeyboardButton(KeyboardButtonCallback) {
                        text: 3 266
                        data: 73656e645f7265616374696f6e5f32
                    })
                })
            }
            entities: QVector(TLMessageEntity(MessageEntityTextUrl) {
                offset: 57
                length: 5
                url: http://t.me/address/111
            })
            views: 999
            editDate: 1546203087
        }
        pts: 22222
        ptsCount: 1
    })
    users: QVector()
    chats: QVector(TLChat(Channel) {
        flags: 4192
        id: 1374347484
        title: Chat title
        username: chatname
        photo: TLChatPhoto(ChatPhoto) {
            photoSmall: TLFileLocation(FileLocation) {
                dcId: 2
                volumeId: 235137777
                localId: 266666
                secret: 7354674039851243333
            }
            photoBig: TLFileLocation(FileLocation) {
                dcId: 2
                volumeId: 235134444
                localId: 264444
                secret: 11777733401610977766
            }
        }
        date: 1514566666
        version: 0
    })
    date: 1546207777
    seq: 0
}

Typical chat object in the getDialogs respond:


TLChat(Channel) {
        flags: 8288
        id: 1007454380
        accessHash: 12585072710627688359
        title: Reddit
        username: RedditTop
        photo: TLChatPhoto(ChatPhoto) {
            photoSmall: TLFileLocation(FileLocation) {
                dcId: 2
                volumeId: 713315988
                localId: 61305
                secret: 17238258621322230518
            }
            photoBig: TLFileLocation(FileLocation) {
                dcId: 2
                volumeId: 713315988
                localId: 61307
                secret: 429123949706685596
            }
        }
        date: 1527080586
        version: 0
    }

Optimize memory allocation on Telegram API calls

Generated Telegram API methods implementation can reserve the exact amount of memory in the output byte array.

The generated code should be readable, so:

  • The size calculation code line length should be limited to 120 symbols
  • It's OK for Strings and ByteArrays to treat length bytes as 4 (better than use ternary operators)
  • The addendums (except Strings and ByteArrays) should have inline comments (TLValue constant name for functions, argument/member name in all other cases; size bytes should be decorated as "4 /* size bytes */")

Commits:

  • Introduce sizeInBytes() const methods for all TLTypes
  • Introduce output.reserve() generation for all methods

Bonus:

  • Make sizeInBytes() constexpr if possible:
    • The type has only one tlType value
    • The type has no complex or Strings/ByteArrays members
    • E.g.: TLContact, TLContactSuggested, TLContactLink, TLContactBlocked, etc...

Expected diff would look like:

quint64 CTelegramConnection::accountCheckUsername(const QString &username)
{
    QByteArray output;
+   output.reserve(4 /* AccountCheckUsername */
+                  + username.size() + 4 /* size bytes */);
    CTelegramStream outputStream(&output, /* write */ true);
    outputStream << TLValue::AccountCheckUsername;
    outputStream << username;
    return sendEncryptedPackage(output);
}
...

quint64 CTelegramConnection::accountReportPeer(const TLInputPeer &peer,
                                               const TLReportReason &reason)
{
    QByteArray output;
+   output.reserve(4 /* AccountReportPeer */ + peer.sizeInBytes() + reason.sizeInBytes());
    CTelegramStream outputStream(&output, /* write */ true);
    outputStream << TLValue::AccountReportPeer;
    outputStream << peer;
    outputStream << reason;
    return sendEncryptedPackage(output);
}

quint64 CTelegramConnection::accountResetAuthorization(quint64 hash)
{
    QByteArray output;
+   output.reserve(4 /* AccountResetAuthorization */ + 8 /* hash */);
    CTelegramStream outputStream(&output, /* write */ true);
    outputStream << TLValue::AccountResetAuthorization;
    outputStream << hash;
    return sendEncryptedPackage(output);
}
quint64 CTelegramConnection::authBindTempAuthKey(quint64 permAuthKeyId, quint64 nonce,
                                                 quint32 expiresAt,
                                                 const QByteArray &encryptedMessage)
{
    QByteArray output;
+   output.reserve(4 /* AuthBindTempAuthKey */ + 8 /* permAuthKeyId */ + 8 /* nonce */
+                  + 4 /* expiresAt */
+                  + encryptedMessage.size() + 4 /* size bytes */);
    CTelegramStream outputStream(&output, /* write */ true);
    outputStream << TLValue::AuthBindTempAuthKey;
    outputStream << permAuthKeyId;
    outputStream << nonce;
    outputStream << expiresAt;
    outputStream << encryptedMessage;
    return sendEncryptedPackage(output);
}

Guide

hey guys,

Just a bit newbie in these kind of issues.. Would you please help me with compiling ?
I need Cmake, Open SS, MySQl ( not sure) also I have full installation of Visual Studio 2012 /
but when I just use cmake to generate project file , I get errors like this :
Would you please give a good and step by step guide to compile it?

The C compiler identification is unknown
The CXX compiler identification is unknown
CMake Error at CMakeLists.txt:1 (project):
No CMAKE_C_COMPILER could be found.

CMake Error at CMakeLists.txt:1 (project):
No CMAKE_CXX_COMPILER could be found.

Configuring incomplete, errors occurred!
See also "D:/bot/testg/CMakeFiles/CMakeOutput.log".
See also "D:/bot/testg/CMakeFiles/CMakeError.log".

Successful authorization, but error of RPC Error 401: AUTH_KEY_UNREGISTERED

Добрый день, с Вами можно общаться по-русски?
Good afternoon.
I want to use libTelegramQt. I perform operations just as it is made in testApp. Authorization takes place successfully, the status of connection becomes ConnectionStateAuthenticated. But at any requests which demand auth_key_id I receive an error of RPC Error 401: AUTH_KEY_UNREGISTERED.
In the console of debugging I watch, auth_key successfully remains at authorization and goes when sending requests.
Prompt what to pay attention to what I can incorrectly do?
I cause restoreConnection, connection is restored, auth_key remains, further getInitialUsers automatically is caused (), both inquiries return mistakes. My also any other calls of methods.
What do these variables in Utis.cpp mean?

static const QByteArray s_hardcodedRsaDataKey ("0c150023e2f70db7985ded064759cfecf0af328e69a41daf4d6f01b53813"
"5a6f91f8f8b2a0ec9ba9720ce352efcf6c5680ffc424bd634864902de0b4"
"bd6d49f4e580230e3ae97d95c8b19442b3c0a10d8f5633fecedd6926a7f6"
"dab0ddb7d457f9ea81b8465fcd6fffeed114011df91c059caedaf97625f6"
"c96ecc74725556934ef781d866b34f011fce4d835a090196e9a5f0e4449a"
"f7eb697ddb9076494ca5f81104a305b6dd27665722c46b60e5df680fb16b"
"210607ef217652e60236c255f6a28315f4083a96791d7214bf64c1df4fd0"
"db1944fb26a2a57031b32eee64ad15a8ba68885cde74a5bfc920f6abf59b"
"a5c75506373e7130f9042da922179251f");
static const QByteArray s_hardcodedRsaDataExp("010001");
static const quint64 s_hardcodedRsaDataFingersprint(0xc3b42b026ce86b21);

How to change their value? In case of application registration I was given out only RSA PUBLIC KEY which differs on length from hardcodedRsaDataKey. If I add the RSA PUBLIC KEY instead of hardcodedRsaDataKey, then at me there does not take place connection with the server.
Thanks.
I apply a conclusion from the debugging console.

Отладка запущена
&"warning: GDB: Failed to set controlling terminal: \320\235\320\265\320\277\321\200\320\270\320\274\320\265\320\275\320\270\320\274\321\213\320\271 \320\272 \320\264\320\260\320\275\320\275\320\276\320\274\321\203 \321\203\321\201\321\202\321\200\320\276\320\271\321\201\321\202\320\262\321\203 ioctl\n"
bool CTelegramDispatcher::restoreConnection(const QByteArray&) Format version: 4
bool CTelegramDispatcher::restoreConnection(const QByteArray&) "149.154.167.50"
restoreConnection установил authKey= "\x91\x06\xA1""9\xC8\xB5\xE7\x8C\x9C\xD9o\x94h6\xAC\xDB\x04\x87\xA7\xF4\x8F\xCD\xAD!\x90\x8E\xC7\xB7,\xB9\xBB\x19\x9E\x9E\x85\xE2 \xB4\xDB\x17\xC1\xDFkC\xE1\x89v~P\xDEi\xC7\xA2\x96v!Fto\x1D\xF7\xB5V\xA6o\xCB;'\x8D{\xA1Y\x00\xF9hsJsQb\xB7\xE7Zq\xE3\x82\xFB\xBC=q\x98\xA9\xAB\x04\xF7SP\xC4\xB0\xB5)\xF6\xF0\xFC&\xE6\x1E\x97\xE7T'\xD3""A\x05\x83.\x8A\x83.\xE7\xB6V\x98\xBE\x02hD\f\x01""B\x8D\xB4\xEE{\x18\xBB\xC2LE\xE8""5\xFA\x9C@]\xF8=\xF4Ko\xB3\xB6\x0E\x14\xAC\x92\xA7\xE8\x91zJ\x05\xC6\x0B\x10x\xE4@\xB8\\V1\x07QIw\x04\xC4\x88\x89\xE9/\xE9q\x95\xAE\xD8\x8F\xA5\xA3\x03}\xB2\xD2\xFC\xA9xb\x9C\x16\xC2.\xB4\xD0\x10\xD6uOr\xB9T\x1BM\xF9\xDD^k\x8D""1t\x8B\xEE&qA\xCB\xF5\xC6\xB5p\x97$\xFD\xAB""dD;\x16""3\x13RMe\x98\xCA""d\x99T\xF9\xC1'C\xFF\xFA\xF5v"
CTelegramConnection* CTelegramDispatcher::createConnection(const TLDcOption&) 2 "149.154.167.50" 443
void CTelegramConnection::setAuthKey(const QByteArray&) key: "9106a139c8b5e78c9cd96f946836acdb0487a7f48fcdad21908ec7b72cb9bb199e9e85e220b4db17c1df6b43e189767e50de69c7a296762146746f1df7b556a66fcb3b278d7ba15900f968734a735162b7e75a71e382fbbc3d7198a9ab04f75350c4b0b529f6f0fc26e61e97e75427d34105832e8a832ee7b65698be0268440c01428db4ee7b18bbc24c45e835fa9c405df83df44b6fb3b60e14ac92a7e8917a4a05c60b1078e440b85c56310751497704c48889e92fe97195aed88fa5a3037db2d2fca978629c16c22eb4d010d6754f72b9541b4df9dd5e6b8d31748bee267141cbf5c6b5709724fdab64443b163313524d6598ca649954f9c12743fffaf576" keyId: 5415603553999387343 auxHash: 15739787217883350970
void CTelegramDispatcher::setConnectionState(TelegramNamespace::ConnectionState) TelegramNamespace::ConnectionState(ConnectionStateConnecting)
void CTelegramDispatcher::onConnectionStatusChanged(int, int, quint32) status CTelegramConnection::ConnectionStatus(ConnectionStatusConnecting) reason CTelegramConnection::ConnectionStatusReason(ConnectionStatusReasonLocal) dc 2
void CTelegramConnection::startAuthTimer()
void CTelegramDispatcher::onConnectionAuthChanged(int, quint32) CTelegramConnection(0xb2602b68) auth CTelegramConnection::AuthState(AuthStateSignedIn) dc 2
void CTelegramDispatcher::onConnectionAuthChanged(int, quint32) Delayed packages: () 0
CTelegramDispatcher::continueInitialization( CTelegramDispatcher::InitializationStep(StepSignIn) ) on top of QFlags<CTelegramDispatcher::InitializationStep>(StepFirst)
отправка m_authId= 5415603553999387343
void CTelegramConnection::stopAuthTimer()
void CTelegramDispatcher::onConnectionStatusChanged(int, int, quint32) status CTelegramConnection::ConnectionStatus(ConnectionStatusConnected) reason CTelegramConnection::ConnectionStatusReason(ConnectionStatusReasonRemote) dc 2
void CTelegramConnection::onTransportReadyRead() Received different server salt: 8062699163366606297 (remote) vs 4406907682947276709 (local)
"Bad message 6476463135250790104/1: Code 48 (Incorrect server salt)."
отправка m_authId= 5415603553999387343
Local serverSalt fixed to 8062699163366606297
void CTelegramConnection::processMessageAck(CTelegramStream&) Package 6476463135753301244 acked
Core: Got DC Configuration.
1 "149.154.175.50" 443
1 "2001:0b28:f23d:f001:0000:0000:0000:000a" 443
2 "149.154.167.51" 443
2 "2001:067c:04e8:f002:0000:0000:0000:000a" 443
3 "149.154.175.100" 443
3 "2001:0b28:f23d:f003:0000:0000:0000:000a" 443
4 "149.154.167.92" 443
4 "2001:067c:04e8:f004:0000:0000:0000:000a" 443
4 "149.154.165.120" 443
5 "91.108.56.180" 443
5 "2001:0b28:f23f:f005:0000:0000:0000:000a" 443
CTelegramDispatcher::continueInitialization( CTelegramDispatcher::InitializationStep(StepDcConfiguration) ) on top of QFlags<CTelegramDispatcher::InitializationStep>(StepSignIn)
void CTelegramDispatcher::setConnectionState(TelegramNamespace::ConnectionState) TelegramNamespace::ConnectionState(ConnectionStateAuthenticated)
отправка m_authId= 5415603553999387343
отправка m_authId= 5415603553999387343
void CTelegramDispatcher::ensureMainConnectToWantedDc() Nothing to do. Wanted DC is already connected.
bool CTelegramConnection::processRpcError(CTelegramStream&, quint64, TLValue) "RPC Error 401: AUTH_KEY_UNREGISTERED for message 6476463136461970800 UsersGetUsers (dc 2|149.154.167.50:443)"
void CTelegramConnection::processMessageAck(CTelegramStream&) Package 6476463136461970804 acked
bool CTelegramConnection::processRpcError(CTelegramStream&, quint64, TLValue) "RPC Error 401: AUTH_KEY_UNREGISTERED for message 6476463136461970804 UsersGetUsers (dc 2|149.154.167.50:443)"
QThread: Destroyed while thread is still running
Отладка завершена

Improve connection control API

initConnection(), restoreConnection() and closeConnection() are not intuitive names.

  1. Use Qt-style naming connectToServer(), disconnectFromServer(), etc.
  2. Split secret and dc configuration setup from connection control methods

GeneratorNG: Add flags description to generated Connection methods

The generated code diff should look like:

quint64 CTelegramConnection::messagesSendMessage(quint32 flags, const TLInputPeer &peer...
{
    QByteArray output;
    CTelegramStream outputStream(&output, /* write */ true);
    outputStream << TLValue::MessagesSendMessage;
    outputStream << flags;
-   if (flags & 1 << 1) {
+   if (flags & 1 << 1) { // no_webpage
        outputStream << TLTrue();
    }
-   if (flags & 1 << 4) {
+   if (flags & 1 << 4) { // broadcast
        outputStream << TLTrue();
    }
    outputStream << peer;
-   if (flags & 1 << 0) {
+   if (flags & 1 << 0) { // reply_to_msg_id
        outputStream << replyToMsgId;
    }

Implement channels support

  • Use scheme with channels support (layer 45)
  • Regenerate sources
  • Implement messaging
  • Implement channel difference (depends on #31 Expose dialogues)
  • Properly store channel messages (exp multimedia)
  • Test

Disconnecting not always detected

CTelegramDispatcher::whenConnectionStatusChanged doesn't seem to do anything when disconnecting happens and reason is not ConnectionStatusReasonTimeout.
I had this in my log:

void CTelegramDispatcher::whenConnectionStatusChanged(int, int, quint32) status 0 reason 0 dc 2

After that Morse was still "online" but did not receive any messages. Switching Morse to offline and back online got the messages flowing again.

Incorrect paths in generated cmake config

I am trying to package telegram-qt but the cmake config file contains wrong paths:

$ cat $(nix-build -A libsForQt5.telegram)/lib/cmake/TelegramQt5/TelegramQt5Config.cmake 
# TelegramQt5Config.cmake is generated by CMake from telegram-qt/TelegramQtConfig.cmake.in.
# Any changed value in this file will be overwritten by CMake.

# set the version number
set(TELEGRAM_QT5_VERSION_MAJOR 0)
set(TELEGRAM_QT5_VERSION_MINOR 1)
set(TELEGRAM_QT5_VERSION_PATCH 0)
set(TELEGRAM_QT5_VERSION 0.1.0)

# set the directories
if(NOT TELEGRAM_QT5_INSTALL_DIR)
   set(TELEGRAM_QT5_INSTALL_DIR "/nix/store/fd2vy5svxj51f2g67sqs1wcm6223r48b-telegram-qt-0.1.0")
endif(NOT TELEGRAM_QT5_INSTALL_DIR)

set(TELEGRAM_QT5_INCLUDE_DIR              "${TELEGRAM_QT5_INSTALL_DIR}//nix/store/fd2vy5svxj51f2g67sqs1wcm6223r48b-telegram-qt-0.1.0/include/telegram-qt5")
set(TELEGRAM_QT5_LIB_DIR                  "${TELEGRAM_QT5_INSTALL_DIR}//nix/store/fd2vy5svxj51f2g67sqs1wcm6223r48b-telegram-qt-0.1.0/lib")

set(TELEGRAM_QT5_LIBRARIES -L${TELEGRAM_QT5_LIB_DIR} -ltelegram-qt5)

For example, TELEGRAM_QT5_LIB_DIR resolves to /nix/store/90m1a9961hcag9pspws53qk246gkg5hj-telegram-qt-0.1.0//nix/store/90m1a9961hcag9pspws53qk246gkg5hj-telegram-qt-0.1.0/lib.

I use the following cmake flags:

-DCMAKE_BUILD_TYPE=Release -DCMAKE_SKIP_BUILD_RPATH=ON -DCMAKE_INSTALL_INCLUDEDIR=/nix/store/90m1a9961hcag9pspws53qk246gkg5hj-telegram-qt-0.1.0/include -DCMAKE_INSTALL_LIBDIR=/nix/store/90m1a9961hcag9pspws53qk246gkg5hj-telegram-qt-0.1.0/lib -DCMAKE_INSTALL_NAME_DIR=/nix/store/90m1a9961hcag9pspws53qk246gkg5hj-telegram-qt-0.1.0/lib -DCMAKE_INSTALL_PREFIX=/nix/store/90m1a9961hcag9pspws53qk246gkg5hj-telegram-qt-0.1.0  

Comparing the TelegramQtConfig.cmake.in file

set(TELEGRAM_QT@QT_VERSION_MAJOR@_INCLUDE_DIR "${TELEGRAM_QT@QT_VERSION_MAJOR@_INSTALL_DIR}/@TELEGRAM_QT_INCLUDE_DIR@")
set(TELEGRAM_QT@QT_VERSION_MAJOR@_LIB_DIR "${TELEGRAM_QT@QT_VERSION_MAJOR@_INSTALL_DIR}/@TELEGRAM_QT_LIB_DIR@")

with a similar one from telepathy-qt

https://github.com/TelepathyIM/telepathy-qt/blob/f81ae2d33ff36baa7938b4f89fa51372c9ff1fcc/TelepathyQt/TelepathyQtServiceConfig.cmake.in#L18-L19

tells me, the issue is probably here.

Make connection secret info to be Scheme-independent

CTelegramDispatcher::restoreConnection() and CTelegramDispatcher::connectionSecretInfo() should work via CRawStream instead of CTelegramStream.
Currently secret data format depends on scheme, so update to a new scheme changes format without a real reason.

Implement message key verification

BaseRpcLayer::processPackage() should match received messageKey against the one calculate from decrypted message.

Note: server should send 0x6cfe (qint32 = -404) in case of key mismatch.

Add fingerprintHex property to DeclarativeRsaKey

It would be useful to show key fingerprint in (settings) UI, especially in case of a custom key.

Expected result:

Q_PROPERTY(QString fingerprint READ fingerprint NOTIFY fingerprintChanged)

in DeclarativeRsaKey
Expected fingerprint value is a string such as "0x6f4fb0abf4f43172". Please take care of constant string size and add leading zeros if needed.
Invalid keys should have null (constructed by default) string fingerprint.

Telegram-qt vs Telegram

Hi,
Is it possible to send messages to other Telegram client apps using your library?
I could send and receive messages only between 2 Telegram-qt testapp, but those messages aren't displayed at mobile and win apps.
BR,
Aleks

Hide all private symbols

  1. set(CMAKE_CXX_VISIBILITY_PRESET hidden)
  2. Add TELEGRAMQT_AUTOTEST_EXPORT to enable private API tests in developer mode.

Make a SIP for PyQt lovers

Thanks for this great library!
Could you please make a SIP package for PyQt5 to be used in Python apps? :-)

Question for BlackBerry 10

Hi Alexander!

I'm a BlackBerry 10 dev (as a hobby) and looking for some useful libs which could help me to build Telegram client for BB 10. Is it possible with your lib? I mean I want to implement fully-featured (or almost) client, or at least messaging with all features: text, smiles, stickers etc.

Also, if so, BB 10 supports only Qt 4.8, not greater. Is it will be very big effort to compile your lib for qt 4.8 with some patches? I need only stable backend, all native UI and BB 10 look and feel I can implement without any problems.

Thanks!

cmake policy CMP0053 is not set

Building master, I see the following warning:

CMake Warning (dev) at /nix/store/n74jhpy1p48knf8gxiha95hisi47h9lj-qtbase-5.9.1-dev/lib/cmake/Qt5/Qt5ModuleLocation.cmake:4 (set):
  Policy CMP0053 is not set: Simplify variable reference and escape sequence
  evaluation.  Run "cmake --help-policy CMP0053" for policy details.  Use the
  cmake_policy command to set the policy and suppress this warning.

  For input:

    '${_qt5_install_prefix}/Qt5@module@/Qt5@[email protected]'

  the old evaluation rules produce:

    '/nix/store/n74jhpy1p48knf8gxiha95hisi47h9lj-qtbase-5.9.1-dev/lib/cmake/Qt5/Qt5Config.cmake'

  but the new evaluation rules produce:

    '/nix/store/n74jhpy1p48knf8gxiha95hisi47h9lj-qtbase-5.9.1-dev/lib/cmake/Qt5@module@/Qt5@[email protected]'

  Using the old result for compatibility since the policy is not set.
Call Stack (most recent call first):
  /nix/store/n74jhpy1p48knf8gxiha95hisi47h9lj-qtbase-5.9.1-dev/lib/cmake/Qt5/Qt5Config.cmake:25 (include)
  imports/TelegramQtQml/CMakeLists.txt:3 (find_package)

getting error 401 AUTH_KEY_UNREGISTERED when using secret file

Hi there,

I've been using the testApp to develop my client and maybe I'm missing something. When I register following the USAGE file I manage to connect and see the messages. Then I save the secretfile and log out. However when I use the secretfile to connect again, I get 401 AUTH_KEY_UNREGISTERED errors. I'm not sure it is related with a bad understanding or due to QT4.7 incompatibility. Did you see this behavior already?

Thanks for your time!

Can't cmake on Debian Stretch

Hello,

I'm unable to build telegram-qt on Debian Stretch/Testing, it alway fails with following error when I use cmake telegram-qt (within repo)

CMake Error at CMakeLists.txt:68 (QT5_WRAP_CPP):
  Unknown CMake command "QT5_WRAP_CPP".


CMake Warning (dev) in CMakeLists.txt:
  No cmake_minimum_required command is present.  A line of code such as

    cmake_minimum_required(VERSION 3.3)

  should be added at the top of the file.  The version specified may be lower
  if you wish to support older CMake versions for this project.  For more
  information run "cmake --help-policy CMP0000".
This warning is for project developers.  Use -Wno-dev to suppress it.

-- Configuring incomplete, errors occurred!

Have installed qt5.
cmake . in repo throws

CMake Error at /usr/share/cmake-3.3/Modules/FindPackageHandleStandardArgs.cmake:148 (message):
  Could NOT find OpenSSL, try to set the path to OpenSSL root folder in the
  system variable OPENSSL_ROOT_DIR (missing: OPENSSL_LIBRARIES
  OPENSSL_INCLUDE_DIR)
Call Stack (most recent call first):
  /usr/share/cmake-3.3/Modules/FindPackageHandleStandardArgs.cmake:388 (_FPHSA_FAILURE_MESSAGE)
  /usr/share/cmake-3.3/Modules/FindOpenSSL.cmake:334 (find_package_handle_standard_args)
  CMakeLists.txt:37 (find_package)


-- Configuring incomplete, errors occurred!

I have openssl installed.
Thx

What does this do?

Sorry if you think I have not made enough research and shouldn't ask this question, but here goes.

I use telegram on Linux. I don't know much about qt. Do I benefit from installing your thing?

Saw it on the Arch Linux community/telegram-qt, so I though it must be something pretty dope. But I don't understand what it does. Your README is probably fine for anyone that already knows what this does, but for a layman like me that's just browsing for cool programs, it's not very informative.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.