>> That's possible to do with qmake already, but you'll have to build
resource files manually via custom targets
Great! Where can I read about this? Is there any examples?
>> You can wrap this whole expression into function and replace that
>> function with empty one:
>> function printPasswordToDebug() {
>> console.debug('password: ',
>> someFunctionWhichReturnsPasswordFromProtectedStorage());
>> }
>> and replace printPasswordToDebug
Yeah, it could work in theory, but in practice there already a lot of
places which would require such a modification. This solution just
doesn't scale. Moreover, resulting binary will contain
string 'console.debug('password: ',
someFunctionWhichReturnsPasswordFromProtectedStorage());' (well, maybe
not if qml compiler was enabled).
ср, 24 апр. 2019 г. в 22:19, Alexander Ivash <[email protected]>:
>
> ср, 24 апр. 2019 г. в 22:08, Konstantin Tokarev <[email protected]>:
> >
> >
> >
> > 24.04.2019, 22:01, "Alexander Ivash" <[email protected]>:
> > > What I really need is some 'plugin' to qmake which would allow to
> > > modify qml files on the fly before placing it into resources (but not
> > > touching them on filesystem!). In ideal world, yeah.
> >
> > That's possible to do with qmake already, but you'll have to build
> > resource files manually via custom targets
> >
> > >
> > > ср, 24 апр. 2019 г. в 21:51, Alexander Ivash <[email protected]>:
> > >> 2Jerome:
> > >>
> > >> The issue is that even if that function will be doing nothing, logging
> > >> data (which might be sensitive) can be captured via hooks / dump
> > >> analysis etc. I really need to pre-processes to eliminate not only
> > >> function call but also function parameters completely. Think about
> > >> this scenario:
> > >>
> > >> console.debug('password: ',
> > >> someFunctionWhichReturnsPasswordFromProtectedStorage());
> >
> > You can wrap this whole expression into function and replace that
> > function with empty one:
> >
> > function printPasswordToDebug() {
> > console.debug('password: ',
> > someFunctionWhichReturnsPasswordFromProtectedStorage());
> > }
> >
> > and replace printPasswordToDebug
> >
> > >>
> > >> In this case even if console.debug will be replaced with empty
> > >> function, 'someFunctionWhichReturnsPasswordFromProtectedStorage()'
> > >> will be executed anyway and as the result password will appear
> > >> somewhere in JS heap so after capturing dump it will be simpler to
> > >> find it.
> > >>
> > >> 2Tomasz:
> > >>
> > >> In fact I would love to use logging category, but only for debug
> > >> builds. But I have some requirements to minimize risk of sensitive
> > >> data leak via logging. And to make a life of reverse engineers a bit
> > >> more complicated if you like. So ideally no logging-related functions
> > >> (and their parameters too!) should be visible in release build.
> > >>
> > >> ср, 24 апр. 2019 г. в 21:27, Jérôme Godbout <[email protected]>:
> > >> >
> > >> > Maybe you can overload the functor directly into the code and import
> > >> the file only if in debug mode (optional module):
> > >> > http://udidu.blogspot.com/2012/12/override-console-functions.html
> > >> >
> > >> > That could also be helpful to split the log into multiple receiver.
> > >> >
> > >> > Not sure if this would work, but maybe you can override the
> > >> console.log command into the QQmlScriptEngine and define a new
> > >> javascript function that does nothing. Maybe into the your main.cpp
> > >> where you create the QQmlEngine you can call the rootContext()
> > >> QQmlContext object, maybe you can extract the console object with
> > >> QVariant contextProperty() and set the debug() property of it with a
> > >> QQmlExpression, I cannot glue all this together, but maybe something
> > >> into that direction could be done before you start loading the main qml
> > >> file. This is far fetched by might work but it seem overcomplicated to
> > >> me.
> > >> >
> > >> > -----Original Message-----
> > >> > From: Interest <[email protected]> On Behalf Of
> > >> Alexander Ivash
> > >> > Sent: April 24, 2019 12:56 PM
> > >> > To: interestqt-project.org <[email protected]>
> > >> > Subject: [Interest] QML preprocessing
> > >> >
> > >> > I understand that this topic was raised a lot of times and that this
> > >> is not QML-way. But, what options do I have in case of requirements to
> > >> eliminate all the logging for release builds?
> > >> >
> > >> > Is there any hidden magic in qmake, like 'QMAKE_SUBSTITUTES' but more
> > >> flexible to substitute all the 'console.debug....' with '//
> > >> console.debug' right before adding qml into resources?
> > >> >
> > >> > p.s. Yea, I'm aware of selectors, but would like to avoid having both
> > >> component-with-logging.qml and component-with-no-logging.qml
> > >> >
> > >> > Regards, Alexander
> > >> > _______________________________________________
> > >> > Interest mailing list
> > >> > [email protected]
> > >> > https://lists.qt-project.org/listinfo/interest
> > >
> > > _______________________________________________
> > > Interest mailing list
> > > [email protected]
> > > https://lists.qt-project.org/listinfo/interest
> >
> > --
> > Regards,
> > Konstantin
> >
_______________________________________________
Interest mailing list
[email protected]
https://lists.qt-project.org/listinfo/interest