Commit Graph

482 Commits

Author SHA1 Message Date
Matthieu Gautier 3991e648ed Be able to get the reader index from a search result. 2017-07-17 18:16:11 +02:00
Matthieu Gautier 8d39b0b343 Search result objects now have a get_content method.
This was not necessary when searching in only one zim file as `url` was
enough to get the article (and so the content).

If we want to search in several zim in the same time, we need a way to get
the content directly.
2017-07-17 18:16:11 +02:00
Matthieu Gautier 4a51dd9e00 Fix memory link.
If a `searcher` is already created we must delete it.
If we set the pointer to NULL before, we will never delete it.
2017-07-17 18:16:11 +02:00
Matthieu Gautier d0371cd133 Suggestions now use xapian database when available.
If a embedded fulltext database is present, suggestion will search in it :
 - insensitive case search.
 - search for terms in the middle of the title.
 - xapian will try to complete the last word of the query (as if a '*'
   were added at the end)
2017-07-17 17:17:13 +02:00
Matthieu Gautier f76e9d2dbf Format all the code using clang-format.
Add a script `format_code.sh` to easily format the code.
2017-07-05 15:22:34 +02:00
Matthieu Gautier 96f199a327 Dump the version to 0.2.0
Time to make a release.
2017-06-27 14:26:13 +02:00
Steve Wills 4f57e765e5
Fix type error in build
Compilation fails on clang 3.4.1 (and presumably later, tho I haven't tested) with

```
src/reader.cpp:131:59: error: no viable conversion from 'iterator' (aka '__map_iterator<typename __base::iterator>') to 'std::map<std::string, unsigned int>::const_iterator' (aka '__map_const_iterator<typename __base::const_iterator>')
      std::map<std::string, unsigned int>::const_iterator it = counterMap.find("text/html");
                                                          ^    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/v1/map:713:29: note: candidate constructor (the implicit copy constructor) not viable: no known conversion from 'iterator' (aka '__map_iterator<typename __base::iterator>') to 'const std::__1::__map_const_iterator<std::__1::__tree_const_iterator<std::__1::__value_type<std::__1::basic_string<char>, unsigned int>, std::__1::__tree_node<std::__1::__value_type<std::__1::basic_string<char>, unsigned int>, void *> *, long> > &' for 1st argument
class _LIBCPP_TYPE_VIS_ONLY __map_const_iterator
                            ^
```

because we are not using the right type for the map iterator. As we are using
C++11, let's use `auto` and make compiler set the right type for us.
2017-06-16 08:47:59 -04:00
Matthieu Gautier eb2c750431 Use the android abi instead of cpu_family as install dir name.
Android will look in specific repository to find native libs.
We need to use the `android_abi` name defined in the cross_compilation
file instead of `cpu_family`.
2017-06-14 10:20:18 +02:00
Matthieu Gautier c44b2acb56 Re-add xapian searcher in kiwix-lib.
libzim only know how to read embedded full text index in a zim file.
This is nice as we want to embedded the full text index in zim file and
not have separated full text index.

However, we still have some zim+separated index we have to read.
So we have to support the search in separated index for a while.
2017-05-24 16:08:00 +02:00
Matthieu Gautier 7005b65901 Check that 'M/Counter' exists before trying to read it.
Some old zim files may not have a 'Counter` metadata article.
We have to handle this correctly.
2017-05-23 15:26:01 +02:00
Matthieu Gautier 2e43b7e82d Update kiwix-lib to new kiwix-android way of building.
`kiwix-android` is using `kiwix-lib` as an external java application now.
So we need `kiwix-lib` build system to also install application files
(manifest, resources, ..).
2017-04-24 16:37:31 +02:00
Matthieu Gautier 3be4d92c53 Correctly check if we are compiling for linux or not.
In C++11 `linux` is not a reserved word, so compilators do not define it.
A correct way to check if we are compiling for linux is to check for
`__linux__`.
2017-04-10 14:28:25 +02:00
Matthieu Gautier 44a77f5846 Update android jni wrapper to new API. 2017-04-10 14:28:25 +02:00
Matthieu Gautier 5ca419bee7 Use the new search API in zimlib.
We do not use xapian anymore. This is all handled by zimlib.
2017-04-10 14:28:25 +02:00
Matthieu Gautier 37f29da63e Beautify a bit the code.
No real change. Just do less code or use higher level API.
2017-04-10 14:28:25 +02:00
Matthieu Gautier 94670847ef Use const when possible in the reader.
Most read operation do not modify the content. So let's use const
as far as possible.
2017-04-10 14:28:25 +02:00
Matthieu Gautier ef661a2e25 Move unicode headers in cpp.
Unicode headers ends by defining the DONE symbol in a enum.
It can clash with other includes.
(For instance the httpd.h from apache who use `#define DONE -2`).

Both project should not declare such common symbols publicly but we have
to do with them anyway.
2017-04-06 16:17:00 +02:00
Matthieu Gautier e28dbe7c7e Remove the indexer functionnality from kiwix-lib.
This is not used anymore.
2017-04-06 15:35:30 +02:00
Matthieu Gautier ce6c782b66 Do not use remove readStopWords method.
Commit b8d950c removes this symbol.
The indexer is not used anymore and will be soon removed.
So for now, just remove the call to readStopWords until we totally
remove the indexer code.
2017-04-06 13:20:59 +02:00
Matthieu Gautier b8d950c1a0 Use the stop words stored in the database to configure the queryparser.
To properly search in the xapian database, we need to use the same
stop words that the ones used during the indexing.
2017-04-04 17:06:49 +02:00
Matthieu Gautier 998db0eb2b Use the language stored in the database to configure the queryparser.
To properly search in the xapian database, we need a stemmer using the
same language that the one used during the indexing.
2017-04-04 17:06:49 +02:00
Matthieu Gautier 72e41082ca The `Result` class is not in the `kiwix` namespace.
The commit 83d2725 adapt the jni wrapper to the new search API but try to
use the `Result` class from the `kiwix` namespace but `Result` is not in
the namespace.

A correct fix would be to move `Result` in `kiwix` but it also change the
API for other tools (kiwix-tools). As we will move the search
functionality in `zimlib` it is better to just do this silly fix and
update the API latter when moving the search functionality.
2017-03-29 17:12:23 +02:00
Matthieu Gautier cecb65e314 Remove C++11 syntax introduced by commit 9be2abe.
The `for( auto elem: elems)` syntax is a C++11 syntax.
We are not using C++11 (even if it would be good idea).
This works on recent compiler (on Fedora 25) but fails on older one
(on Travis).
2017-03-28 17:14:25 +02:00
Matthieu Gautier 074c1bcffa Try to generate the snippet if it is not present in the database.
We generate the snippet from the content of the article in the zim so
we need to have a access to the reader.
2017-03-21 16:28:03 +01:00
Matthieu Gautier 9be2abedf3 Check if a valuemaps metadata is available in the database and use it.
This way, we do not make assumption of where the values are stored.
2017-03-21 16:26:03 +01:00
Matthieu Gautier 83d27255cf Do not create all the results at once. Be a bit lazy.
We don't need to generate a vector of result when we do a search.
We better to just keep the handle to the current MSetIterator and
generate the wanted values when needed.
2017-03-21 16:20:17 +01:00
Matthieu Gautier 72a6b578e6 Fix meson's project version. 2017-03-21 16:01:07 +01:00
Matthieu Gautier 43703a9d58 Add JNI wrapper for android.
This wrapper mainly come from the already existing android part.
2017-03-07 20:14:29 +01:00
Matthieu Gautier aafe9a4435 [ANDROID] Deactivate some features if we are compiling for android.
Android libc doesn't support all thread feature (as pthread_cancel).
Do not compile those files if we are compiling for android.
2017-02-22 16:56:21 +01:00
Matthieu Gautier 84796abb4c Make use of ctpp2 optional. 2017-02-22 12:05:44 +01:00
Matthieu Gautier 72f1be3dbd We must include <time.h> with mingw.
This is a error anyway, linux or window. So just add the include.
2017-01-17 15:54:44 +01:00
Matthieu Gautier 753a39beb0 Fix header include for cross-compilation to Windows.
On unix, filenames are case sensitive and all include files are lowercase.
2017-01-17 10:20:59 +01:00
Matthieu Gautier 4afe3e8ddc "myhtmlparse.h" is a private header. Remove it from indexer.h. 2017-01-03 11:51:31 +01:00
Matthieu Gautier cba71b4e75 Add a new script to compile resources.
- No more dependency to reswrap binary (everything is done in python)
- Resource strings can be directly accessed.
  As side effect, it add a check at compilation if the resource is
  declared and compiled in the binary.
- The resource content can be overwritten at runtime with a env variable.

There is also few clean in the static as some files shoul be in the tools
directory.

The compile_resource script is install to let other project use it.
2016-12-23 13:06:12 +01:00
Matthieu Gautier 8ce1fb0ba8 Switch build system to mesonbuild.
There is no more integrated build of dependencies in the build system.
Dependencies are discovered using pkg-config except for ctpp2 where there
is no pkg-config file.
2016-12-22 12:01:20 +01:00
Kelson 1c68cf87b9 Fix ft index open for chunked files #346 2016-10-17 13:16:43 +02:00
Kelson d328c4ffb0 Remove exec permission on source files 2016-10-14 17:04:47 +02:00
Kelson 75da598ba8 Add kiwix::removeAccents for Android 2016-10-14 16:59:32 +02:00
Kelson 2889d7c651 Make fulltext searcher Android compatible 2016-10-14 13:12:26 +02:00
Kelson 01794e6e91 New Reader::getZimFilePath() 2016-10-14 13:11:14 +02:00
Matthieu Gautier 82cba79179 Do not make unnecessary copy when serving binary content.
Binary content do not need to be modified, so we don't need to copy it.
We can directly serve it from the internal zim (cluster) buffer.

The handle_content function now getArticleObjectByDecodedUrl instead of
getContentByDecodedUrl.

This is to get the mimetype of the article and copy the content only when
needed (getContentByDecodedUrl always copy the content).
Thus, handle_content is a bit more complex as it need to do some
manipulation previously made in getContentByDecodedUrl.

The main change is that if the content is binary, we serve the content
with a callback response who will get the content chunks directly from
the blob buffer.
2016-10-07 18:23:47 +02:00
Matthieu Gautier 657fc05225 Fix url of the fulltext index.
The fulltext index in the zim is at the url /Z/fulltextIndex/xapian.
We do not need to specifie the Z in the url as this is automatically add with the namespace.
2016-10-03 15:39:00 +02:00
Matthieu Gautier e526026407 Properly fail when creating XapianSearcher on a zim without embedded index.
The XapianSearcher creation must fail with a exception if we cannot open
the xapian database.
So, if we try to open a zim and there is no embedded index, we must fail.

We raise the custom exception NoXapianIndexInZim in this case.
2016-10-03 13:32:59 +02:00
kelson42 e3c2a13fa6 Add Reader::hasFulltextIndex 2016-10-02 18:29:08 +02:00
kelson42 39ad3313df Add Reader::urlExists 2016-10-02 17:16:39 +02:00
kelson42 c1b5eb42bf Fix a problem with 'name' metatag 2016-09-11 10:26:12 +02:00
kelson42 934a15a0b4 Fix kiwix-mange problem with relative paths 2016-09-04 21:43:26 +02:00
Kelson 1500cb8329 Implement ZIM reader getTags() and getName() 2016-09-04 20:41:10 +02:00
Kelson fc9f3a3a25 Implement ZIM reader getTags() and getName() 2016-09-04 19:59:22 +02:00
Matthieu Gautier 6074b5e557 Add support of embedded ft-index in zim for kiwix-serve and kiwix-search.
- kiwix-search will try the embedded ft-index if no indexPath is specified
  in the library.xml or command argument.
- kiwix-search also uses xapianSearcher and xapianSearcher needs zimlib,
  so add zimlib in compilation flag for searcher.
- kiwix-serve already depends on zimlib.
2016-08-11 17:50:25 +02:00
kelson42 d384131341 remove useless code 2016-07-04 21:31:11 +02:00
Chris Li 801e622644 add "eng" to stop word map + pragma mark in indexer.cpp + progress calculation 2016-07-04 21:10:03 +02:00
Chris Li 566a01ce7f optional progress callback + progress calculation fix 2016-07-04 20:59:57 +02:00
Kelson d5e5cd9340 Deal with new glass/single_file Xapian indexes 2016-06-20 23:35:13 +02:00
dattaz 8c443855c7 correction of double inclusion 2016-05-21 19:08:44 +02:00
Emmanuel Engelhart 009d08fe89 Simplify suggestion init 2015-08-22 15:42:21 +02:00
Emmanuel Engelhart a1486e05d3 Fix regression by suggestion search 2015-08-16 19:22:10 +02:00
Emmanuel Engelhart f3c4556431 Fix to get new getSuggestions() working on Android 2015-08-16 18:09:18 +02:00
Emmanuel Engelhart e829d7428d Better suggestion search 2015-08-16 17:18:29 +02:00
kelson42 7903458e38 Fix hardlinking in copyFile() 2015-04-09 14:26:11 +02:00
Kelson42 54d9445148 Update 2015-03-02 16:17:06 +01:00
Emmanuel Engelhart dc60455cd3 in copyFile() try to make a link if possible, copy the content otherwise 2015-02-21 16:56:38 +01:00
Emmanuel Engelhart b2c38ebfc2 update 2015-02-19 16:43:02 +01:00
Emmanuel Engelhart 999a5b07ae New version 2015-02-19 16:20:49 +01:00
Kelson42 78db06e127 Merge branch 'master' of ssh://git.code.sf.net/p/kiwix/kiwix
Conflicts:
	CHANGELOG
2015-01-08 12:55:53 +01:00
Kelson42 8287a64172 FIXED: kiwix-serve XSS attack vulnerability (#763) 2015-01-08 12:51:42 +01:00
Kelson42 45ad751d89 New function getMimeTypeByUrl() 2014-12-08 01:37:06 +01:00
Kelson42 d7fd4064ab FIXED: Buggy pagination in fulltext result page 2014-11-24 20:52:46 +01:00
Kelson42 4290eaf751 + Avoid to load the welcome page by loading random ones 2014-10-18 18:14:46 +02:00
Julian Harty 378c66e16c Revert "Re move ANDROID pragma. This is not useful anymore (libicu) is now included"
This reverts commit 8a458417aa612409b8da9a44b9015786c2063244.
2014-10-08 10:44:55 +01:00
kelson42 f6f49a63ce Re move ANDROID pragma. This is not useful anymore (libicu) is now included 2014-10-01 20:26:43 +02:00
Kelson42 49d13f09f1 + search filter addtionaly on language ISO code 2014-09-23 13:20:46 +02:00
Kelson42 bc161034c1 + Fix unstable fulltext library search 2014-09-20 16:05:19 +02:00
Kelson42 517a02b814 + fix taskbar CSS 2014-09-18 14:54:49 +02:00
Kelson42 4beccfbc0b + improve taskbar CSS 2014-09-18 14:50:11 +02:00
Kelson42 ec6c0b2ea3 + fix kiwix-serve taskbar css 2014-09-18 14:22:47 +02:00
Kelson42 f6dedb11b9 + fix tasbar css 2014-09-18 14:17:56 +02:00
Kelson42 436d57976e + improve kiwix-serve taskbar css 2014-09-18 14:08:36 +02:00
Kelson42 d8a924121b + more robus mimetype retrieving 2014-09-14 18:40:39 +02:00
kelson42 c1a8b4a206 + small optim 2014-08-31 19:27:23 -06:00
kelson42 45fccb2e38 + bool Manager::setBookIndex(const string id, const string path) 2014-08-30 10:37:52 -06:00
kelson42 baf8e37b4f Speedup mimetype detection in kiwix-serve 2014-08-29 19:10:01 -06:00
kelson42 f585bed1cb FIXED: kiwix-serve crash if unattended search "start" & "end" values 2014-08-28 13:36:58 -06:00
kelson42 518ce6635d + fix a few problem with the autocompletebox on kiwix-serve 2014-08-27 21:08:14 -06:00
kelson42 1cc94e1b95 + simplifaction of the code = cleaning 2014-08-27 17:13:29 -06:00
kelson42 a353513c9c NEW: Improve file size display in kiwix-serve 2014-08-27 13:22:34 -06:00
Kelson42 86ef9800cc + new smaller version 2014-07-28 13:38:54 +02:00
kelson42 beae77db89 Avoid kiwix-serve taskbar jquery dependencies to conflict with potential other version (in the ZIM file) 2014-07-20 22:06:52 +02:00
kelson42 d6d7274b0f + Fix code in ZIM reader class breaking DOM integrity 2014-07-19 19:29:51 +02:00
kelson42 17724fe70b + fix Doctype HTML line (was breaking Opera output) 2014-07-09 21:11:34 +02:00
Cristian Patrasciuc 5a695963d5 Port networkTools.cpp to Mac OS X.
On Mac OS X the ioctl(SIOCGIFCONF) call will return all IPv4, IPv6
and MAC addresses, so we have to filter only the ones that have
sa_family equal to AF_INET.

I also added the common interface names for Mac OS X (en0 and en1),
to the getBestPublicIp() function. I refactored a bit the code so
that addition and reordering are easier.

Bugs: https://sourceforge.net/p/kiwix/bugs/658/
2014-06-17 17:46:54 +02:00
renaud gaudin 1b192c2557 Added 10.0.0.0 private network scheme 2014-05-31 13:53:46 +00:00
Shivam a37fd98585 Updated resourceTools.h to reflect moved toolbar css file (not sure if necessary) 2014-05-25 18:10:44 -04:00
Shivam b341b9654d Added a random article button for server mode 2014-05-25 12:25:13 -04:00
kelson42 0411b0988c + update license header 2014-05-22 19:08:10 +02:00
kelson42 e885cc342a + Avoid buffer overflow on linux 2014-05-22 19:05:42 +02:00
Kelson42 f69edcf9c0 + fix fileExists() for Windows 2014-05-19 23:55:56 +02:00
Kelson42 b3c352f71a + use _strdup on Windows 2014-05-16 15:06:06 +02:00
Kelson42 1faca99274 Merge branch 'master' of ssh://git.code.sf.net/p/kiwix/kiwix 2014-05-16 14:40:36 +02:00
Kelson42 2c530906c5 + XR29 port for Windows 2014-05-16 14:39:50 +02:00