[-]
[+]
|
Changed |
_service:tar_git:harbour-sailimgur.changes
|
|
[-]
[+]
|
Changed |
_service:tar_git:harbour-sailimgur.spec
^
|
|
[-]
[+]
|
Changed |
_service
^
|
@@ -2,6 +2,6 @@
<service name="tar_git">
<param name="url">https://github.com/walokra/sailimgur</param>
<param name="branch">master</param>
- <param name="revision">0df7bc5caf44129e39b11d0056cfb84608771dd0</param>
+ <param name="revision">45b23440a66cdd0e45a32df3e451227e8e58bff2</param>
</service>
</services>
\ No newline at end of file
|
[-]
[+]
|
Changed |
_service:tar_git:harbour-sailimgur-0.10.0.tar.bz2/COPYING
^
|
(renamed from LICENSE)
|
[-]
[+]
|
Changed |
_service:tar_git:harbour-sailimgur-0.10.0.tar.bz2/Readme.md
^
|
@@ -1,20 +1,18 @@
# Sailimgur
-Sailimgur is an imgur app for Sailfish OS and provides basic imgur browsing functionality and search.
-It's developed using Qt/QML and JavaScript.
+Sailimgur is an imgur app for Sailfish OS and provides basic imgur browsing functionality and search. It's developed using Qt/QML and JavaScript.
-## Build for development
+## ToDo
-If you want to build Sailimgur from source, fill in the API CLIENT_ID and CLIENT_SECRET for imgur service in src/main.cpp.
-You can get the API keys by [Registering an application for imgur API](https://api.imgur.com/oauth2/addclient).
+- Internationalization support.
-## Downloads
+## Build for testing
+
+If you want to build Sailimgur from source, fill in the API client_id and clientSecret for imgur service in src/qml/pages/Constant.qml.
-Latest development release for Sailfish OS:
+## Downloads
-- [SailfishOS Open Build Service & Chum](https://build.sailfishos.org/package/show/home:walokra:sailfishos/sailimgur)
-- [OpenRepos](https://openrepos.net/content/walokra/sailimgur)
-- [Rule of tech: Sailimgur](http://ruleoftech.com/lab/sailimgur)
+Latest development release for Sailfish OS: [Rule of tech: Sailimgur](http://ruleoftech.com/lab/sailimgur)
## License
|
[-]
[+]
|
Changed |
_service:tar_git:harbour-sailimgur-0.10.0.tar.bz2/harbour-sailimgur.pro
^
|
@@ -16,13 +16,11 @@
HEADERS += \
src/imageuploader.h \
- src/sailimgur.h \
- src/simplecrypt.h
+ src/sailimgur.h
SOURCES += main.cpp \
src/imageuploader.cpp \
- src/sailimgur.cpp \
- src/simplecrypt.cpp
+ src/sailimgur.cpp
OTHER_FILES = \
rpm/harbour-sailimgur.changes \
|
[-]
[+]
|
Changed |
_service:tar_git:harbour-sailimgur-0.10.0.tar.bz2/main.cpp
^
|
@@ -9,10 +9,6 @@
#include "src/imageuploader.h"
#include "src/sailimgur.h"
-#include "src/simplecrypt.h"
-
-#define CLIENT_ID "44f3bd95ad7db12"
-#define CLIENT_SECRET "AwLij1UYyeMhkq3xUEvNu3DH9/1YEMbtcZb3pQ5GwLB5yviiARnO5X3N+6VS"
/**
* Clears the web cache, because Qt 5.2 WebView chokes on caches from older Qt versions.
@@ -43,10 +39,6 @@
int main(int argc, char *argv[])
{
- SimpleCrypt *crypto = new SimpleCrypt();
- crypto->setKey(0xd2fa13b37d936b07);
- QString client_secret = crypto->decryptToString(QString(CLIENT_SECRET));
-
QScopedPointer<QGuiApplication> app(SailfishApp::application(argc, argv));
clearWebCache();
@@ -60,9 +52,6 @@
view->rootContext()->setContextProperty("APP_VERSION", APP_VERSION);
view->rootContext()->setContextProperty("APP_RELEASE", APP_RELEASE);
- view->rootContext()->setContextProperty("CLIENT_ID", CLIENT_ID);
- view->rootContext()->setContextProperty("CLIENT_SECRET", client_secret);
-
Sailimgur mgr;
view->rootContext()->setContextProperty("sailimgurMgr", &mgr);
|
[-]
[+]
|
Changed |
_service:tar_git:harbour-sailimgur-0.10.0.tar.bz2/qml/pages/Constant.qml
^
|
@@ -6,8 +6,11 @@
property string appName : "Sailimgur";
- property string clientId : CLIENT_ID;
- property string clientSecret : CLIENT_SECRET;
+ // imgur API key/secret
+ // The OAuth2 key/secret pair below are only for testing
+ // Release version in Jolla Store / OpenRepos has a different key pair
+ property string clientId : "";
+ property string clientSecret : "";
property string userAgent : appName + " " + APP_VERSION + "-" + APP_RELEASE + "(Jolla; Qt; SailfishOS)";
|
|
Deleted |
_service:tar_git:harbour-sailimgur-0.10.1.tar.bz2/appicons/172x172/apps/harbour-sailimgur.png
^
|
[-]
[+]
|
Deleted |
_service:tar_git:harbour-sailimgur-0.10.1.tar.bz2/src/simplecrypt.cpp
^
|
@@ -1,252 +0,0 @@
-/*
-Copyright (c) 2011, Andre Somers
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- * Neither the name of the Rathenau Instituut, Andre Somers nor the
- names of its contributors may be used to endorse or promote products
- derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL ANDRE SOMERS BE LIABLE FOR ANY
-DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR #######; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-#include "simplecrypt.h"
-#include <QByteArray>
-#include <QtDebug>
-#include <QtGlobal>
-#include <QDateTime>
-#include <QCryptographicHash>
-#include <QDataStream>
-
-SimpleCrypt::SimpleCrypt():
- m_key(0),
- m_compressionMode(CompressionAuto),
- m_protectionMode(ProtectionChecksum),
- m_lastError(ErrorNoError)
-{
- qsrand(uint(QDateTime::currentMSecsSinceEpoch() & 0xFFFF));
-}
-
-SimpleCrypt::SimpleCrypt(quint64 key):
- m_key(key),
- m_compressionMode(CompressionAuto),
- m_protectionMode(ProtectionChecksum),
- m_lastError(ErrorNoError)
-{
- qsrand(uint(QDateTime::currentMSecsSinceEpoch() & 0xFFFF));
- splitKey();
-}
-
-void SimpleCrypt::setKey(quint64 key)
-{
- m_key = key;
- splitKey();
-}
-
-void SimpleCrypt::splitKey()
-{
- m_keyParts.clear();
- m_keyParts.resize(8);
- for (int i=0;i<8;i++) {
- quint64 part = m_key;
- for (int j=i; j>0; j--)
- part = part >> 8;
- part = part & 0xff;
- m_keyParts[i] = static_cast<char>(part);
- }
-}
-
-QByteArray SimpleCrypt::encryptToByteArray(const QString& plaintext)
-{
- QByteArray plaintextArray = plaintext.toUtf8();
- return encryptToByteArray(plaintextArray);
-}
-
-QByteArray SimpleCrypt::encryptToByteArray(QByteArray plaintext)
-{
- if (m_keyParts.isEmpty()) {
- qWarning() << "No key set.";
- m_lastError = ErrorNoKeySet;
- return QByteArray();
- }
-
-
- QByteArray ba = plaintext;
-
- CryptoFlags flags = CryptoFlagNone;
- if (m_compressionMode == CompressionAlways) {
- ba = qCompress(ba, 9); //maximum compression
- flags |= CryptoFlagCompression;
- } else if (m_compressionMode == CompressionAuto) {
- QByteArray compressed = qCompress(ba, 9);
- if (compressed.count() < ba.count()) {
- ba = compressed;
- flags |= CryptoFlagCompression;
- }
- }
-
- QByteArray integrityProtection;
- if (m_protectionMode == ProtectionChecksum) {
- flags |= CryptoFlagChecksum;
- QDataStream s(&integrityProtection, QIODevice::WriteOnly);
- s << qChecksum(ba.constData(), ba.length());
- } else if (m_protectionMode == ProtectionHash) {
- flags |= CryptoFlagHash;
- QCryptographicHash hash(QCryptographicHash::Sha1);
- hash.addData(ba);
-
- integrityProtection += hash.result();
- }
-
- //prepend a random char to the string
- char randomChar = char(qrand() & 0xFF);
- ba = randomChar + integrityProtection + ba;
-
- int pos(0);
- char lastChar(0);
-
- int cnt = ba.count();
-
- while (pos < cnt) {
- ba[pos] = ba.at(pos) ^ m_keyParts.at(pos % 8) ^ lastChar;
- lastChar = ba.at(pos);
- ++pos;
- }
-
- QByteArray resultArray;
- resultArray.append(char(0x03)); //version for future updates to algorithm
- resultArray.append(char(flags)); //encryption flags
- resultArray.append(ba);
-
- m_lastError = ErrorNoError;
- return resultArray;
-}
-
-QString SimpleCrypt::encryptToString(const QString& plaintext)
-{
- QByteArray plaintextArray = plaintext.toUtf8();
- QByteArray cypher = encryptToByteArray(plaintextArray);
- QString cypherString = QString::fromLatin1(cypher.toBase64());
- return cypherString;
-}
-
-QString SimpleCrypt::encryptToString(QByteArray plaintext)
-{
- QByteArray cypher = encryptToByteArray(plaintext);
- QString cypherString = QString::fromLatin1(cypher.toBase64());
- return cypherString;
-}
-
-QString SimpleCrypt::decryptToString(const QString &cyphertext)
-{
- QByteArray cyphertextArray = QByteArray::fromBase64(cyphertext.toLatin1());
- QByteArray plaintextArray = decryptToByteArray(cyphertextArray);
- QString plaintext = QString::fromUtf8(plaintextArray, plaintextArray.size());
-
- return plaintext;
-}
-
-QString SimpleCrypt::decryptToString(QByteArray cypher)
-{
- QByteArray ba = decryptToByteArray(cypher);
- QString plaintext = QString::fromUtf8(ba, ba.size());
-
- return plaintext;
-}
-
-QByteArray SimpleCrypt::decryptToByteArray(const QString& cyphertext)
-{
- QByteArray cyphertextArray = QByteArray::fromBase64(cyphertext.toLatin1());
- QByteArray ba = decryptToByteArray(cyphertextArray);
-
- return ba;
-}
-
-QByteArray SimpleCrypt::decryptToByteArray(QByteArray cypher)
-{
- if (m_keyParts.isEmpty()) {
- qWarning() << "No key set.";
- m_lastError = ErrorNoKeySet;
- return QByteArray();
- }
-
- QByteArray ba = cypher;
-
- if( cypher.count() < 3 )
- return QByteArray();
-
- char version = ba.at(0);
-
- if (version !=3) { //we only work with version 3
- m_lastError = ErrorUnknownVersion;
- qWarning() << "Invalid version or not a cyphertext.";
- return QByteArray();
- }
-
|
[-]
[+]
|
Deleted |
_service:tar_git:harbour-sailimgur-0.10.1.tar.bz2/src/simplecrypt.h
^
|
@@ -1,225 +0,0 @@
-/*
-Copyright (c) 2011, Andre Somers
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- * Neither the name of the Rathenau Instituut, Andre Somers nor the
- names of its contributors may be used to endorse or promote products
- derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL ANDRE SOMERS BE LIABLE FOR ANY
-DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR #######; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifndef SIMPLECRYPT_H
-#define SIMPLECRYPT_H
-#include <QString>
-#include <QVector>
-#include <QFlags>
-
-/**
- @short Simple encryption and decryption of strings and byte arrays
-
- This class provides a simple implementation of encryption and decryption
- of strings and byte arrays.
-
- @warning The encryption provided by this class is NOT strong encryption. It may
- help to shield things from curious eyes, but it will NOT stand up to someone
- determined to break the encryption. Don't say you were not warned.
-
- The class uses a 64 bit key. Simply create an instance of the class, set the key,
- and use the encryptToString() method to calculate an encrypted version of the input string.
- To decrypt that string again, use an instance of SimpleCrypt initialized with
- the same key, and call the decryptToString() method with the encrypted string. If the key
- matches, the decrypted version of the string will be returned again.
-
- If you do not provide a key, or if something else is wrong, the encryption and
- decryption function will return an empty string or will return a string containing nonsense.
- lastError() will return a value indicating if the method was succesful, and if not, why not.
-
- SimpleCrypt is prepared for the case that the encryption and decryption
- algorithm is changed in a later version, by prepending a version identifier to the cypertext.
- */
-class SimpleCrypt
-{
-public:
- /**
- CompressionMode describes if compression will be applied to the data to be
- encrypted.
- */
- enum CompressionMode {
- CompressionAuto, /*!< Only apply compression if that results in a shorter plaintext. */
- CompressionAlways, /*!< Always apply compression. Note that for short inputs, a compression may result in longer data */
- CompressionNever /*!< Never apply compression. */
- };
- /**
- IntegrityProtectionMode describes measures taken to make it possible to detect problems with the data
- or wrong decryption keys.
-
- Measures involve adding a checksum or a cryptograhpic hash to the data to be encrypted. This
- increases the length of the resulting cypertext, but makes it possible to check if the plaintext
- appears to be valid after decryption.
- */
- enum IntegrityProtectionMode {
- ProtectionNone, /*!< The integerity of the encrypted data is not protected. It is not really possible to detect a wrong key, for instance. */
- ProtectionChecksum,/*!< A simple checksum is used to verify that the data is in order. If not, an empty string is returned. */
- ProtectionHash /*!< A cryptographic hash is used to verify the integrity of the data. This method produces a much stronger, but longer check */
- };
- /**
- Error describes the type of error that occured.
- */
- enum Error {
- ErrorNoError, /*!< No error occurred. */
- ErrorNoKeySet, /*!< No key was set. You can not encrypt or decrypt without a valid key. */
- ErrorUnknownVersion, /*!< The version of this data is unknown, or the data is otherwise not valid. */
- ErrorIntegrityFailed, /*!< The integrity check of the data failed. Perhaps the wrong key was used. */
- };
-
- /**
- Constructor.
-
- Constructs a SimpleCrypt instance without a valid key set on it.
- */
- SimpleCrypt();
- /**
- Constructor.
-
- Constructs a SimpleCrypt instance and initializes it with the given @arg key.
- */
- explicit SimpleCrypt(quint64 key);
-
- /**
- (Re-) initializes the key with the given @arg key.
- */
- void setKey(quint64 key);
- /**
- Returns true if SimpleCrypt has been initialized with a key.
- */
- bool hasKey() const {return !m_keyParts.isEmpty();}
-
- /**
- Sets the compression mode to use when encrypting data. The default mode is Auto.
-
- Note that decryption is not influenced by this mode, as the decryption recognizes
- what mode was used when encrypting.
- */
- void setCompressionMode(CompressionMode mode) {m_compressionMode = mode;}
- /**
- Returns the CompressionMode that is currently in use.
- */
- CompressionMode compressionMode() const {return m_compressionMode;}
-
- /**
- Sets the integrity mode to use when encrypting data. The default mode is Checksum.
-
- Note that decryption is not influenced by this mode, as the decryption recognizes
- what mode was used when encrypting.
- */
- void setIntegrityProtectionMode(IntegrityProtectionMode mode) {m_protectionMode = mode;}
- /**
- Returns the IntegrityProtectionMode that is currently in use.
- */
- IntegrityProtectionMode integrityProtectionMode() const {return m_protectionMode;}
-
- /**
- Returns the last error that occurred.
- */
- Error lastError() const {return m_lastError;}
-
- /**
- Encrypts the @arg plaintext string with the key the class was initialized with, and returns
- a cyphertext the result. The result is a base64 encoded version of the binary array that is the
- actual result of the string, so it can be stored easily in a text format.
- */
- QString encryptToString(const QString& plaintext) ;
- /**
- Encrypts the @arg plaintext QByteArray with the key the class was initialized with, and returns
- a cyphertext the result. The result is a base64 encoded version of the binary array that is the
- actual result of the encryption, so it can be stored easily in a text format.
- */
- QString encryptToString(QByteArray plaintext) ;
- /**
- Encrypts the @arg plaintext string with the key the class was initialized with, and returns
- a binary cyphertext in a QByteArray the result.
-
- This method returns a byte array, that is useable for storing a binary format. If you need
- a string you can store in a text file, use encryptToString() instead.
- */
- QByteArray encryptToByteArray(const QString& plaintext) ;
- /**
- Encrypts the @arg plaintext QByteArray with the key the class was initialized with, and returns
- a binary cyphertext in a QByteArray the result.
-
- This method returns a byte array, that is useable for storing a binary format. If you need
- a string you can store in a text file, use encryptToString() instead.
- */
- QByteArray encryptToByteArray(QByteArray plaintext) ;
-
- /**
- Decrypts a cyphertext string encrypted with this class with the set key back to the
- plain text version.
-
- If an error occured, such as non-matching keys between encryption and decryption,
- an empty string or a string containing nonsense may be returned.
- */
- QString decryptToString(const QString& cyphertext) ;
- /**
- Decrypts a cyphertext string encrypted with this class with the set key back to the
- plain text version.
-
- If an error occured, such as non-matching keys between encryption and decryption,
- an empty string or a string containing nonsense may be returned.
- */
- QByteArray decryptToByteArray(const QString& cyphertext) ;
- /**
- Decrypts a cyphertext binary encrypted with this class with the set key back to the
- plain text version.
-
- If an error occured, such as non-matching keys between encryption and decryption,
- an empty string or a string containing nonsense may be returned.
- */
- QString decryptToString(QByteArray cypher) ;
- /**
- Decrypts a cyphertext binary encrypted with this class with the set key back to the
- plain text version.
-
|
[-]
[+]
|
Changed |
_service:tar_git:harbour-sailimgur.yaml
^
|
@@ -1,10 +1,10 @@
Name: harbour-sailimgur
Summary: Sailimgur is an Imgur app for Sailfish OS, powered by Qt and QML
-Version: 0.10.1
+Version: 0.10.0
Release: 1
Group: Applications/Internet
URL: http://ruleoftech.com/lab/sailimgur
-License: GPLv3
+License: LICENSE
Sources:
- '%{name}-%{version}.tar.bz2'
Description: |
|