mirror of
https://github.com/seiichiro0185/sailotp.git
synced 2024-11-01 01:38:25 +00:00
Version 1.1
Added URL-decoding for OTP-titles when scanning QR-codes. Fixes github issue #4
This commit is contained in:
parent
e2e3fd71c8
commit
8725b13639
5 changed files with 114 additions and 3 deletions
73
fileio.cpp
Normal file
73
fileio.cpp
Normal file
|
@ -0,0 +1,73 @@
|
||||||
|
#include "fileio.h"
|
||||||
|
#include <QFile>
|
||||||
|
#include <QTextStream>
|
||||||
|
|
||||||
|
FileIO::FileIO(QObject *parent) :
|
||||||
|
QObject(parent)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
QString FileIO::read()
|
||||||
|
{
|
||||||
|
if (mSource.isEmpty()){
|
||||||
|
emit error("source is empty");
|
||||||
|
return QString();
|
||||||
|
}
|
||||||
|
|
||||||
|
QFile file(mSource);
|
||||||
|
QString fileContent;
|
||||||
|
if ( file.open(QIODevice::ReadOnly) ) {
|
||||||
|
QString line;
|
||||||
|
QTextStream t( &file );
|
||||||
|
do {
|
||||||
|
line = t.readLine();
|
||||||
|
fileContent += line;
|
||||||
|
} while (!line.isNull());
|
||||||
|
|
||||||
|
file.close();
|
||||||
|
} else {
|
||||||
|
emit error("Unable to open the file");
|
||||||
|
return QString();
|
||||||
|
}
|
||||||
|
return fileContent;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool FileIO::write(const QString& data)
|
||||||
|
{
|
||||||
|
if (mSource.isEmpty())
|
||||||
|
return false;
|
||||||
|
|
||||||
|
QFile file(mSource);
|
||||||
|
if (!file.open(QFile::WriteOnly | QFile::Truncate))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
QTextStream out(&file);
|
||||||
|
out << data;
|
||||||
|
|
||||||
|
file.close();
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool FileIO::exists()
|
||||||
|
{
|
||||||
|
if (mSource.isEmpty()) {
|
||||||
|
emit error("Source is empty!");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
QFile file(mSource);
|
||||||
|
return file.exists();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool FileIO::exists(const QString& filename)
|
||||||
|
{
|
||||||
|
if (filename.isEmpty()) {
|
||||||
|
emit error("Source is empty!");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
QFile file(filename);
|
||||||
|
return file.exists();
|
||||||
|
}
|
35
fileio.h
Normal file
35
fileio.h
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
#ifndef FILEIO_H
|
||||||
|
#define FILEIO_H
|
||||||
|
|
||||||
|
#include <QObject>
|
||||||
|
|
||||||
|
class FileIO : public QObject
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
Q_PROPERTY(QString source
|
||||||
|
READ source
|
||||||
|
WRITE setSource
|
||||||
|
NOTIFY sourceChanged)
|
||||||
|
explicit FileIO(QObject *parent = 0);
|
||||||
|
|
||||||
|
Q_INVOKABLE QString read();
|
||||||
|
Q_INVOKABLE bool write(const QString& data);
|
||||||
|
Q_INVOKABLE bool exists();
|
||||||
|
Q_INVOKABLE bool exists(const QString& filename);
|
||||||
|
|
||||||
|
QString source() { return mSource; };
|
||||||
|
|
||||||
|
public slots:
|
||||||
|
void setSource(const QString& source) { mSource = source; };
|
||||||
|
|
||||||
|
signals:
|
||||||
|
void sourceChanged(const QString& source);
|
||||||
|
void error(const QString& msg);
|
||||||
|
|
||||||
|
private:
|
||||||
|
QString mSource;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // FILEIO_H
|
|
@ -6,7 +6,7 @@ function decode(url) {
|
||||||
if (url.search(/^otpauth:\/\/[th]otp\/.*?.*/) != -1) {
|
if (url.search(/^otpauth:\/\/[th]otp\/.*?.*/) != -1) {
|
||||||
var ret = {"type": "", "title": "", "secret": "", "counter": ""};
|
var ret = {"type": "", "title": "", "secret": "", "counter": ""};
|
||||||
ret.type = url.slice(10,14).toUpperCase();
|
ret.type = url.slice(10,14).toUpperCase();
|
||||||
ret.title = url.slice(15, url.indexOf("?"));
|
ret.title = decodeURIComponent(url.slice(15, url.indexOf("?")));
|
||||||
var pstr = url.slice(url.indexOf("?")+1, url.length);
|
var pstr = url.slice(url.indexOf("?")+1, url.length);
|
||||||
var params = pstr.split("&");
|
var params = pstr.split("&");
|
||||||
|
|
||||||
|
|
|
@ -1,2 +1,5 @@
|
||||||
|
* Fri May 22 2015 Stefan Brand <sailfish@seiichiro0185.org> 1.1-1
|
||||||
|
- Added URL-decoding for OTP-titles when scanning QR-codes
|
||||||
|
|
||||||
* Tue Jul 01 2014 Stefan Brand <sailfish@seiichiro0185.org> 1.0-1
|
* Tue Jul 01 2014 Stefan Brand <sailfish@seiichiro0185.org> 1.0-1
|
||||||
- Added harbour-compatible QR-Reader
|
- Added harbour-compatible QR-Reader
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
Name: harbour-sailotp
|
Name: harbour-sailotp
|
||||||
Summary: SailOTP
|
Summary: SailOTP
|
||||||
Version: 1.0
|
Version: 1.1
|
||||||
Release: 2
|
Release: 1
|
||||||
Group: Security
|
Group: Security
|
||||||
URL: https://github.com/seiichiro0185/sailotp/
|
URL: https://github.com/seiichiro0185/sailotp/
|
||||||
License: "BSD\t"
|
License: "BSD\t"
|
||||||
|
|
Loading…
Reference in a new issue