Giter Site home page Giter Site logo

mxlgv / dino Goto Github PK

View Code? Open in Web Editor NEW

This project forked from dino/dino

11.0 11.0 7.0 10.13 MB

This is Dino+ A modern XMPP/Jabber client software, based on Dino

License: GNU General Public License v3.0

C++ 1.51% Python 0.04% C 1.29% Vala 90.25% CSS 0.39% CMake 4.77% Meson 1.30% Shell 0.37% NSIS 0.08%
dino jabber xmpp

dino's People

Contributors

alyssarosenzweig avatar aristofan-kif avatar bobufa avatar brainblasted avatar clearlyclaire avatar codedust avatar comradekingu avatar dos1 avatar eerielili avatar fiaxh avatar giantplaceholder avatar hrxi avatar igsha avatar inputmice avatar jmallach avatar jubalh avatar kkonsw avatar linkmauve avatar mar-v-in avatar mid1221213 avatar mxlgv avatar rahix avatar roobre avatar sdhand avatar selurvedu avatar sshikaree avatar vlomovtsev avatar xavidcr92 avatar yuubi-san avatar zash avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

dino's Issues

Migrate Dino+ build to Meson from cmake

This is for the purpose of tracking our efforts of porting the build procedure to Meson. The goal here is to unify the process between OSes. As of now, it'll still require usage of mingw64 on Windows, since we're not going to drop GnuTLS in favor of OpenSSL for the time being.

org.gnome.Platform 44 is end-of-life

Installing the flatpak (Dino+ version 0.4.3.4) on up-to-date Armbian 24.2.1 (Debian 12), I get the following warning:

Info: runtime org.gnome.Platform branch 44 is end-of-life, with reason:
   The GNOME 44 runtime is no longer supported as of March 20, 2024. Please ask your application developer to migrate to a supported platform.
Info: applications using this runtime:
   im.dino.Dino

New versioning system

The tags should now look like this: a.b.c.d, where a.b.c is the latest version of the original Dino. d - changes made as part of the Dino+ project.

Thus the next release of Dino+ v0.4.3.4

Replace GnuTLS by OpenSSL

Motivation

Native building through msvc on windows is possible with openssl library.
It is recommended to use meson because it is native tool to build vala and glib-oriented projects.

What works

  1. Dino can be built on windows using mingw + cmake or meson + gnutls.
  2. Dino can be built though meson with openssl but w/o ICE plugin. That's why calling does not work now.

Analysis

The GnuTLS library is used in the ICE plugin to establish encrypted session.
There are 2 parts in the plugin (dtls_srtp.vala):

  • Certificate generation and maniplation through X509.
  • Session manipulation:
    • create TLS connection via UDP (DTLS);
    • extract certificates from session;
    • handshaking;
    • support SRTP profile;
    • set priority profile string, e.g., NORMAL:!VERS-TLS-ALL:+VERS-DTLS-ALL:+CTYPE-CLI-X509.

It seems all of the above features are supported by openssl.
There is no much information about DTLS handshaking between openssl and gnutls.
The first part (X509) can be easily ported on openssl.

The most unlear part is SRTP support, set priority string and handshaking.

Dino+'s flatpak fails to run on arm64

After installing the Dino+ 0.4.3.4 flatpak on Armbian 24.2.1 (Debian 12) on an aarch64 machine, and rebooting, I tried running flatpak run im.dino.Dino, but the output is:


Note that the directory

'/home/tim/.local/share/flatpak/exports/share'

is not in the search path set by the XDG_DATA_DIRS environment variable, so
applications installed by Flatpak may not appear on your desktop until the
session is restarted.

bwrap: execvp ldconfig: Exec format error
error: ldconfig failed, exit status 256

This may be related to flatpak/flatpak#5228

Dino+ no longer compiles with MinGW

After updating MinGW Dino+ does not build. One of the problems is with HINSTANCE.
Suggested fix:

diff --git a/libdino/src/service/util.vala b/libdino/src/service/util.vala
index 496994c8..22708c74 100644
--- a/libdino/src/service/util.vala
+++ b/libdino/src/service/util.vala
@@ -6,7 +6,7 @@ namespace Dino {
 public class Util {
     #if _WIN32
     [CCode (cname = "ShellExecuteA", cheader_filename = "windows.h")]
-    private static extern int ShellExecuteA(int* hwnd, string operation, string file, string parameters, string directory, int showCmd);
+    private static extern int* ShellExecuteA(int* hwnd, string operation, string file, string parameters, string directory, int showCmd);

     [CCode (cname = "CoInitialize", cheader_filename = "windows.h")]
     private static extern int CoInitialize(void* reserved);
@@ -14,7 +14,7 @@ public class Util {
     [CCode (cname = "CoUninitialize", cheader_filename = "windows.h")]
     private static extern void CoUninitialize();

-    private static int ShellExecute(string operation, string file) {
+    private static int* ShellExecute(string operation, string file) {
         CoInitialize(null);
         var result = ShellExecuteA(null, operation, file, null, null, 1);
         CoUninitialize();

The second error is related to Yolort:

C:/msys64/home/user/dino/plugins/windows-notification/yolort/include/winrt/yolort_impl/winrt/Windows.UI.Notifications.h:554:173: error: conversion from 'winrt::impl::bind_in<std::chrono::time_point<winrt::clock, std::chrono::duration<long long int, std::ratio<1, 10000000
> > > >' to 'int64_t' {aka 'long long int'} is ambiguous
  554 |         check_hresult(WINRT_IMPL_SHIM(Windows::UI::Notifications::IScheduledToastNotificationFactory)->CreateScheduledToastNotificationRecurring(*(void**)(&content), impl::bind_in(deliveryTime), impl::bind_in(snoozeInterval), maximumSnoozeCount, &value));

There is no solution yet...

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.