#MiniUPnPC 2.2.8 zmieniło niekompatybilnie API: funkcja `UPNP_GetValidIGD()` teraz automatycznie pobiera zewnętrzny adres IP i kopiuje go do nowych parametrów funkcji (czyniąc wołanie `UPNP_GetExternalIPAddress()` zbędnym). Przesunęły się też zwracane wartości (wzdych).

Przyszło więc mi trochę ożywić projekt #PSHS. Właśnie do #Gentoo trafiła wersja 0.4.3 z kilkoma istotnymi zmianami: zmianą licencji na GPL-2+, i przesunięciem zakresu wspieranych wersji MiniUPnPC, OpenSSL i libevent (usunięta wersja 0.4.2 przypadkiem zepsuła zgodność z libevent-2.1).

Przy okazji aktualizacji kodu do API #OpenSSL 3 (by pozbyć się nieaktualnych funkcji), odkryłem, że zatoczyło ono koło. OpenSSL 1.0 miało prostą funkcję `RSA_generate_key()`. Dla wersji 1.1, zastąpiłem ją złożoną, wręcz "surową" w użyciu `RSA_generate_key_ex()`. A w 3.0 dostajemy jeszcze prostsze `EVP_RSA_gen()`.

https://github.com/projg2/pshs/compare/v0.4.2...v0.4.3

Comparing v0.4.2...v0.4.3 · projg2/pshs

Contribute to projg2/pshs development by creating an account on GitHub.

GitHub

#MiniUPnPC 2.2.8 introduced a breaking API change: the `UPNP_GetValidIGD()` now gets the external IP address and writes it to the newly added arguments (rendering `UPNP_GetExternalIPAddress()` redundant). The return values also shifted in place (sigh).

This made me finally revive #PSHS a bit. I've just pushed 0.4.3 to #Gentoo with a number of important changes: relicensing to GPL-2+ and shift of supported MiniUPnPC, OpenSSL and libevent version ranges (the removed 0.4.2 version accidentally broke compatibility with libevent-2.1).

While updating to the #OpenSSL 3 API (to fix deprecation warnings), I've discovered that it made a full circle. First, OpenSSL 1.0 had a simple `RSA_generate_key()` function. Then, for 1.1 I had to replace with it complex, almost "raw" `RSA_generate_key_ex()`. And for 3.0, it's back to even simpler `EVP_RSA_gen()`.

https://github.com/projg2/pshs/compare/v0.4.2...v0.4.3

Comparing v0.4.2...v0.4.3 · projg2/pshs

Contribute to projg2/pshs development by creating an account on GitHub.

GitHub