Git Product home page Git Product logo

dino's Issues

Cannot receive files with characters not allowed on Windows

Windows file names cannot contain certain characters: \/:*?"<>|
Files with these characters sent to users on Windows fail to transfer.

In order for Windows users to be able to receive these files, the file names must be sanitized when saved by Dino+ to local storage.

Certain file downloads stall out & general delay on receiving files

I've noticed that certain file downloads stall out on the client. For example, this screenshot gets stuck at 88% without fail.
2024-08-13 05_08_49
Another screenshot I found gets stuck at 74%.
2024-08-13 03_25_30
I am unsure what determines the exact % they get stuck at.

In my tests, they both eventually finish downloading after 14-15 minutes consistently. My assumption is something times out after a set 15 minutes and allows the download to finish. Currently, I'm not sure what is causing this. I can confirm without a doubt that it's a client issue after comparing against different clients on the same server, as they have no delay at all. A friend corroborates that this issue happens with the upstream project too.

I have also noticed other issues with the file system - there are often times where it takes unusually long to show or pick up that a file was received.

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

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.

Setting for preview download maximum file size

Currently, the maximum file size for a preview download (automatically download instead of asking the user to manually accept the offer) is 5 MB by default. It would be nice to have a setting to adjust it higher.

Add panic button or ephemeral messages

Hello it would be very cool if you could add XEP-0466 or a panic button to delete all messages of a conversation at once and a panic button to delete all data.

Thanks,
liverfail

Update GNOME 44 runtime for dino flatpak

Receiving the following message when updating my flatpaks:

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

Can this get updated to use a newer version?

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

Potential social engineering vulnerability in Windows

Unfortunately, I discovered that for Windows I could easily run the executable directly from Dino!
The only thing that can stop the launch is UAC and then if the program asks for administrator rights.

I think running executable files should be prohibited for security reasons.

Heavy lag or freezing when loading large GIF files

The larger the GIF file, the harder it impacts Dino+'s performance. In some cases, it causes a complete freeze and the program to stop responding. I first noticed this issue when sending/receiving 10+ MB GIF files.

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.

Cannot build Dino+ from AUR

Hello. Here is the output from the terminal when trying to build the package

~ ❯ LANG=en paru -S dino-plus-git
:: Resolving dependencies...
:: Calculating conflicts...
:: Calculating inner conflicts...

:: Conflicts found:
    dino-plus-git: dino  

:: Conflicting packages will have to be confirmed manually

Aur (1) dino-plus-git-v0.4.3.fork.3.r14.gbec8a5b6-1

:: Proceed to review? [Y/n]: y

:: Downloading PKGBUILDs...
 PKGBUILDs up to date
 nothing new to review
fetching devel info...
==> Making package: dino-plus-git v0.4.3.fork.3.r14.gbec8a5b6-1 (Sat Aug 17 17:37:01 2024)
==> Retrieving sources...
  -> Updating dino git repo...
==> Validating source files with sha512sums...
    dino ... Skipped
==> Making package: dino-plus-git v0.4.3.fork.3.r14.gbec8a5b6-1 (Sat Aug 17 17:37:03 2024)
==> Checking runtime dependencies...
==> Checking buildtime dependencies...
==> Retrieving sources...
  -> Updating dino git repo...
==> Validating source files with sha512sums...
    dino ... Skipped
==> Removing existing $srcdir/ directory...
==> Extracting sources...
  -> Creating working copy of dino git repo...
Cloning into 'dino'...
done.
==> Starting pkgver()...
==> Updated version: dino-plus-git v0.4.3.4.r13.g80af0670-1
==> Sources are ready.
dino-plus-git-v0.4.3.fork.3.r14.gbec8a5b6-1: parsing pkg list...
==> Making package: dino-plus-git v0.4.3.4.r13.g80af0670-1 (Sat Aug 17 17:37:06 2024)
==> Checking runtime dependencies...
==> Checking buildtime dependencies...
==> WARNING: Using existing $srcdir/ tree
==> Starting pkgver()...
==> Removing existing $pkgdir/ directory...
==> Starting build()...
-!- CMake required.
==> ERROR: A failure occurred in build().
    Aborting...
error: failed to build 'dino-plus-git-v0.4.3.fork.3.r14.gbec8a5b6-1': 
error: packages failed to build: dino-plus-git-v0.4.3.fork.3.r14.gbec8a5b6-1

Distribution: Artix Linux with latest updates
paru version: v2.0.3

Cannot download a file multiple times

If a user downloads/uploads a file, and the file in local storage is later deleted, they cannot download it again. It only shows the file being offered and gives non-functional options to open/save it. While the option to locally delete a file/message is not yet implemented, it's still possible that users could lose files through other means.

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.