the trailing while loop reuses the regex variable, which by then points at the angular brace pattern whenever stripAngular is YES. that pattern has two capture groups while the loop substitutes $1@im****$3, so NSRegularExpression raises NSInvalidArgumentException and the NS_HANDLER swallows it. give the @import pattern its own variable and use it in both the replacement and the loop. the replacement also used the template of the block above, which dropped the whole style element instead of masking the @import in place, so test_stringWithoutHTMLInjection failed. it passes again, and a case with stripAngular YES covers the loop.
Contribute
SOGo is a collaborative effort in order to create the best Free and Open Source groupware solution.
There are multiple ways you can contribute to the project
- Documentation reviews, enhancements and translations
- Feature requests or by sharing your ideas (see the roadmap)
- Participate in the discussion on mailing lists
- Patches for bugs or enhancements
- Provide new translations
Source Code
You can browse the lastest version of the source code online from Alinto's github repository:
To compile SOGo, you first need to obtain the source code of both SOGo and SOPE. The source code of SOPE and SOGo can be obtained from Alinto's github repositories:
The source code of the SOGo Connector extension for Thunderbird 78+ can be obtained from Alinto's github repository:
Please refer to the FAQ for compilation instructions.
Dev Container
A dev container is available to use, read more there read more there
Translations
SOGo and its associated components are available in various languages. The following list describes the official translations alongside their maintainers:
- [en] English - Alinto
- [ar] Arabic - Anass Ahmed
- [eu] Basque - Gorka Gonzalez
- [bs_BA] Bosnian - Refik Bećirović
- [pr_BR] Brazilian Portuguese - Alexandre Marcilio
- [bg] Bulgarian - Todor Todorov
- [ca] Catalan - Hector M. Rulot Segovia
- [zh_CN] Chinese (China) - Thomas Kuiper
- [zh_TW] Chinese (Taiwan)
- [hr_HR] Croatian - Jens Riecken
- [cs] Czech - Šimon Halamásek
- [da_DK] Danish (Denmark) - Altibox
- [nl] Dutch - Roel van Os
- [fi] Finnish - Kari Salmu
- [fr] French - Alinto
- [gl] Galician - Simon Lang
- [de] German - Alexander Greiner-Baer
- [he] Hebrew - Raz Aidlitz
- [hu] Hungarian - Sándor Kuti
- [id] Indonesian - Woka
- [is] Icelandic - Anna Jonna Armannsdottir
- [it] Italian - Alessio Fattorini
- [jp] Japanese - Ryo Yamamoto
- [kk] Kazakh - Nazym Idrissova
- [lv] Latvian - Juris Balandis
- [lt] Lithuanian - Mantas Liobė
- [mk_MK] Macedonian - Miroslav Jovanovic
- [sr_ME] Montenegrin - Ivan Pleskonjić
- [nb_NO] Norwegian (Bokmål) - Jan Ivar Karlsen / Altibox
- [nn_NO] Norwegian (Nynorsk) - Altibox
- [pl] Polish - Paweł Bogusławski
- [pt] Portuguese - Eduardo Crispim
- [ro_RO] Romanian - Vasile Razvan Luca
- [ru] Russian - Alex Kabakaev
- [sr] Serbian - Bogdanović Bojan
- [sr@latin)] Serbian (Latin) - Zlatko Štulić
- [sk] Slovak - Martin Pastor
- [sl_SI] Slovenian - Jens Riecken
- [es_AR] Spanish (Argentina) - Federico Alberto Sayd
- [es_ES] Spanish (Spain) - Dominique Couot
- [sv] Swedish - Peter Johansson
- [tr_TR] Turkish (Turkey) - Muhammed Yalçınkaya, Sinan Kurşunoğlu
- [uk] Ukrainian - Oleksa Stasevych
- [cy] Welsh - Iona Bailey
If you would like to translate the software in an other language, please consult the FAQ.