add logging for kimmo; refs #155
This commit is contained in:
		| @@ -5,6 +5,7 @@ | |||||||
| //       1         2         3         4         5         6         7         8 | //       1         2         3         4         5         6         7         8 | ||||||
| // 45678901234567890123456789012345678901234567890123456789012345678901234567890 | // 45678901234567890123456789012345678901234567890123456789012345678901234567890 | ||||||
|  |  | ||||||
|  | #include <qbrowserlib/log.hxx> | ||||||
| #include <QtCore/QFile> | #include <QtCore/QFile> | ||||||
| #include <QtCore/QDir> | #include <QtCore/QDir> | ||||||
| #include <QtCore/QFileInfo> | #include <QtCore/QFileInfo> | ||||||
| @@ -22,7 +23,12 @@ class Storage: public QObject { | |||||||
|     //! Emitted if file content has changed. |     //! Emitted if file content has changed. | ||||||
|     void changed(); |     void changed(); | ||||||
|   public: |   public: | ||||||
|     Storage() {} |     Storage() { | ||||||
|  |       TRC; | ||||||
|  |     } | ||||||
|  |     ~Storage() { | ||||||
|  |       TRC; | ||||||
|  |     } | ||||||
|     /*! @return true if readable or writable */ |     /*! @return true if readable or writable */ | ||||||
|     bool valid() { |     bool valid() { | ||||||
|       return readable() || writeable(); |       return readable() || writeable(); | ||||||
| @@ -41,6 +47,11 @@ class Storage: public QObject { | |||||||
|     virtual QStringList read() = 0; |     virtual QStringList read() = 0; | ||||||
|     //! Writes storage content from string list. |     //! Writes storage content from string list. | ||||||
|     virtual bool write(const QStringList& out) = 0; |     virtual bool write(const QStringList& out) = 0; | ||||||
|  |   public Q_SLOTS: | ||||||
|  |     void emitChanged() { | ||||||
|  |       TRC; | ||||||
|  |       changed(); | ||||||
|  |     } | ||||||
| }; | }; | ||||||
|  |  | ||||||
| //! Implement @ref Storage for files. | //! Implement @ref Storage for files. | ||||||
| @@ -49,11 +60,12 @@ class FileStorage: public Storage { | |||||||
|   public: |   public: | ||||||
|     /*! @param file full path to storage file */ |     /*! @param file full path to storage file */ | ||||||
|     FileStorage(QString file): _file(file) { |     FileStorage(QString file): _file(file) { | ||||||
|  |       TRC; LOG<<"file: "<<file; | ||||||
|       _watcher.addPath(QFileInfo(_file).absolutePath()); |       _watcher.addPath(QFileInfo(_file).absolutePath()); | ||||||
|       assert(connect(&_watcher, SIGNAL(directoryChanged(const QString&)), |       assert(connect(&_watcher, SIGNAL(directoryChanged(const QString&)), | ||||||
|                      SLOT(setupWatcher()))); |                      SLOT(setupWatcher()))); | ||||||
|       assert(connect(&_watcher, SIGNAL(fileChanged(const QString&)), |       assert(connect(&_watcher, SIGNAL(fileChanged(const QString&)), | ||||||
|                      SIGNAL(changed()))); |                      SLOT(emitChanged()))); | ||||||
|     } |     } | ||||||
|     QString name() { |     QString name() { | ||||||
|       return _file.fileName(); |       return _file.fileName(); | ||||||
| @@ -67,6 +79,7 @@ class FileStorage: public Storage { | |||||||
|          QFileInfo(_file).absoluteDir().exists()); |          QFileInfo(_file).absoluteDir().exists()); | ||||||
|     } |     } | ||||||
|     QStringList read() { |     QStringList read() { | ||||||
|  |       TRC; | ||||||
|       QStringList res; |       QStringList res; | ||||||
|       if (readable()) { |       if (readable()) { | ||||||
|         if (_file.open(QIODevice::ReadOnly)) |         if (_file.open(QIODevice::ReadOnly)) | ||||||
| @@ -76,6 +89,7 @@ class FileStorage: public Storage { | |||||||
|       return res; |       return res; | ||||||
|     } |     } | ||||||
|     bool write(const QStringList& out) { |     bool write(const QStringList& out) { | ||||||
|  |       TRC; | ||||||
|       bool res(false); |       bool res(false); | ||||||
|       if (writeable()) { |       if (writeable()) { | ||||||
|         if (_file.open(QIODevice::WriteOnly)) |         if (_file.open(QIODevice::WriteOnly)) | ||||||
| @@ -86,13 +100,14 @@ class FileStorage: public Storage { | |||||||
|     } |     } | ||||||
|   private Q_SLOTS: |   private Q_SLOTS: | ||||||
|     void setupWatcher() { |     void setupWatcher() { | ||||||
|  |       TRC; | ||||||
|       bool watching(_watcher.files().size()); |       bool watching(_watcher.files().size()); | ||||||
|       if (watching) // remove watchlist if already existent |       if (watching) // remove watchlist if already existent | ||||||
|         _watcher.removePaths(_watcher.files()); |         _watcher.removePaths(_watcher.files()); | ||||||
|       if (readable()) { // add file to watchlist |       if (readable()) { // add file to watchlist | ||||||
|         _watcher.addPath(_file.fileName()); |         _watcher.addPath(_file.fileName()); | ||||||
|         if (!watching) // send change event if file is initially created |         if (!watching) // send change event if file is initially created | ||||||
|           changed(); |           emitChanged(); | ||||||
|       } |       } | ||||||
|     } |     } | ||||||
|   private: |   private: | ||||||
|   | |||||||
| @@ -250,6 +250,82 @@ class SmartCardAuth: public QObject { | |||||||
|  |  | ||||||
|   private: |   private: | ||||||
|  |  | ||||||
|  |     int minPinLen(const std::string& name) { | ||||||
|  |       TRC; LOG<<name.c_str(); | ||||||
|  |       try { | ||||||
|  |         pcsc::Connection pcsc; | ||||||
|  |         pcsc::Connection::Reader& reader(pcsc.reader(name)); | ||||||
|  | #ifndef Q_OS_MAC | ||||||
|  |         pcsc::Connection::Reader::Transaction lock(reader); | ||||||
|  | #endif | ||||||
|  |         // first try to read version info | ||||||
|  |         if (reader.transmit(0x00, 0xA4, 0x08, 0x0C, "\x3f\x00\x56\x49", 4) | ||||||
|  |             != std::string("\x90\x00", 2) || !reader) { | ||||||
|  |           LOG<<"Select File failed"; | ||||||
|  |           return -2; | ||||||
|  |         } | ||||||
|  |         std::string res(reader.transmit(0x00, 0xB0, 0x00, 0x00)); | ||||||
|  |         if (res.substr(res.size()-2)!=std::string("\x90\x00", 2)) { | ||||||
|  |           LOG<<"read error"; | ||||||
|  |           return -2; | ||||||
|  |         } | ||||||
|  |         LOG<<"version text is: "<<res.substr(4, res[3]).c_str(); | ||||||
|  |         // if (res.substr(4, res[3]) != "RAPost 2009" && | ||||||
|  |         //     res.substr(4, res[3]) != "RAPost 2010") { | ||||||
|  |         //   LOG<<"unsupported card"; | ||||||
|  |         //   return -2; | ||||||
|  |         // } | ||||||
|  |         if (retCode(reader.transmit(0x00, 0xA4, 0x00, 0x0C)) == 0x9000) { | ||||||
|  |           int value(retCode(reader.transmit(0x00, 0x20, 0x00, 0x81))); | ||||||
|  |           if ((value&0x63C0)==0x63C0) return value&0x0F; | ||||||
|  |         } else { | ||||||
|  |           LOG<<"**** ERROR in select MF while reading pin status"; | ||||||
|  |         } | ||||||
|  |         return -1; // locked | ||||||
|  |       } catch (const std::exception& x) { | ||||||
|  |         LOG<<"**** ERROR while reading pin status: "<<x.what(); | ||||||
|  |         return -2; | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |      | ||||||
|  |     int maxPinLen(const std::string& name) { | ||||||
|  |       TRC; LOG<<name.c_str(); | ||||||
|  |       try { | ||||||
|  |         pcsc::Connection pcsc; | ||||||
|  |         pcsc::Connection::Reader& reader(pcsc.reader(name)); | ||||||
|  | #ifndef Q_OS_MAC | ||||||
|  |         pcsc::Connection::Reader::Transaction lock(reader); | ||||||
|  | #endif | ||||||
|  |         // first try to read version info | ||||||
|  |         if (reader.transmit(0x00, 0xA4, 0x08, 0x0C, "\x3f\x00\x56\x49", 4) | ||||||
|  |             != std::string("\x90\x00", 2) || !reader) { | ||||||
|  |           LOG<<"Select File failed"; | ||||||
|  |           return -2; | ||||||
|  |         } | ||||||
|  |         std::string res(reader.transmit(0x00, 0xB0, 0x00, 0x00)); | ||||||
|  |         if (res.substr(res.size()-2)!=std::string("\x90\x00", 2)) { | ||||||
|  |           LOG<<"read error"; | ||||||
|  |           return -2; | ||||||
|  |         } | ||||||
|  |         LOG<<"version text is: "<<res.substr(4, res[3]).c_str(); | ||||||
|  |         // if (res.substr(4, res[3]) != "RAPost 2009" && | ||||||
|  |         //     res.substr(4, res[3]) != "RAPost 2010") { | ||||||
|  |         //   LOG<<"unsupported card"; | ||||||
|  |         //   return -2; | ||||||
|  |         // } | ||||||
|  |         if (retCode(reader.transmit(0x00, 0xA4, 0x00, 0x0C)) == 0x9000) { | ||||||
|  |           int value(retCode(reader.transmit(0x00, 0x20, 0x00, 0x81))); | ||||||
|  |           if ((value&0x63C0)==0x63C0) return value&0x0F; | ||||||
|  |         } else { | ||||||
|  |           LOG<<"**** ERROR in select MF while reading pin status"; | ||||||
|  |         } | ||||||
|  |         return -1; // locked | ||||||
|  |       } catch (const std::exception& x) { | ||||||
|  |         LOG<<"**** ERROR while reading pin status: "<<x.what(); | ||||||
|  |         return -2; | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |      | ||||||
|     int retries(const std::string& name) { |     int retries(const std::string& name) { | ||||||
|       TRC; LOG<<name.c_str(); |       TRC; LOG<<name.c_str(); | ||||||
|       try { |       try { | ||||||
|   | |||||||
| @@ -3,6 +3,10 @@ QMAKE_LIBDIR += @top_builddir@/src/qbrowserlib | |||||||
| QMAKE_LIBDIR += @top_builddir@/src/qbrowserlib/release | QMAKE_LIBDIR += @top_builddir@/src/qbrowserlib/release | ||||||
| QMAKE_LIBS += -lqbrowserlib | QMAKE_LIBS += -lqbrowserlib | ||||||
|  |  | ||||||
|  | macx { | ||||||
|  |   CONFIG += x86 | ||||||
|  | } | ||||||
|  |  | ||||||
| HEADERS = @srcdir@/filewatch.hxx | HEADERS = @srcdir@/filewatch.hxx | ||||||
|  |  | ||||||
| SOURCES = @srcdir@/filewatch.cxx | SOURCES = @srcdir@/filewatch.cxx | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user