Coder Social home page Coder Social logo

asctime / ev2w Goto Github PK

View Code? Open in Web Editor NEW
3.0 4.0 0.0 76.77 MB

Gnome Evolution email client for Windows (MinGW64 x64)

License: GNU Lesser General Public License v2.1

Makefile 33.73% C 45.18% Perl 0.04% Shell 5.26% C++ 0.01% DIGITAL Command Language 0.02% NewLisp 0.01% M4 0.35% CSS 0.09% HTML 15.24% TeX 0.09% Python 0.01% Roff 0.01%
caldav email evolution gnome gtk2 imap imap-client ldap webcal windows-10

ev2w's Introduction

Ev2W

Gnome EVOLUTION email client and calendar ported to MSYS2/MinGW64 using GTK.

DIY open-source email security tool for Windows. Update and refresh of original work courtesy Novell, Inc., The GNOME Foundation, SUSE and Debian Linux groups, the MSYS2 team and others. Evolution usage is granted under the GNU Lesser General Public License (LGPL).

What is working? User interface, GCONF, dll plugins and printing. Tested protocols include email send-receive over SMTP and IMAP with CRAM-MD5, LDAP and CalDAV, all using SSL/TLS (implicit) and STARTTLS (opportunistic) encryption types. HTML images over HTTPS also load. SSLv3 is still enabled but is not advised for security reasons. Successfully tested with GMail(via 2FA), Outlook.com, Exchange and Linux services like Dovecot, Courier IMAP, OpenLDAP, DAViCal, etc. Full-time encryption (e.g. IMAP port 993) needs to be configured as "SSL". This is just how the interface was, "SSL" really meant any implicit encryption type. And like older versions of Outlook, "TLS" actually referred to STARTTLS elevation from the unencrypted port.
What is not working yet? Camel PGP digital signature functions still need to be ported to Windows (fork).

How does it work?
This project is not yet "average-user ready". Ev2W needs to be compiled and installed from source code. For now, Ev2W functions from within an existing MinGW64 directory structure, with executable and dlls in 'bin', configuration in 'etc', assets in 'share', etc. So users will need to install core GTK2-related packages from the MSYS2 project w64-x86_64 binaries (not MSYS, MinGW32 or CLANG). TLS requires MinGW64 NSS/NSPR development libraries built with SQLite support. Users will also need to clone, build and install all of the dependency libraries under "asctime/Ev2W-Depends". We have carefully organised example GNU Makefile structures in each subfolder of each related Ev2W project, in a 'mingw64' sub-sub-folder. Users are free to use these directly, or simply as a guide in rolling their own. Constructive feedback is welcome. Evolution 2.32 REQUIRES a running DBUS daemon and GCONF-2 installation on Windows, which provides compile-time dependencies as well runtime inter-process communication and configuration. Bonobo/CORBA is not required for compiling Ev2W.

What is the goal?
Getting the existing "last-known-to-be-working" Windows codebase fully operational under MinGW64 would be a start. The experience would probably be very useful in launching a MinGW64 release of Evolution 3.x upstream, GTK3-based, improved security with all GCONF dependencies re-pointed to the Windows native registry. Project is LGPL, so there is no obvious benefit to directly support LLVM toolchains. Nor do we have a requirement for a 32-bit version (might change).


Evolution email client for WIndows 10

ev2w's People

Contributors

asctime avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

ev2w's Issues

Gtk crash when creating Task / Memo etc from existing

For example, when creating a Task from a Message we get backtrace:

(evolution.exe:2388): Gdk-CRITICAL **: 17:27:59.823: gdk_property_delete: assert
ion 'window != NULL' failed
(evolution.exe:2388): evolution-mail-DEBUG: 17:28:04.025:
Message ID selected: 97927, cursor: 98008, total selected: 1

(evolution.exe:2388): Gdk-CRITICAL **: 17:28:04.301: gdk_property_delete: assert
ion 'window != NULL' failed
[New Thread 2388.0x854]
[New Thread 2388.0x3aac]

(evolution.exe:2388): GLib-CRITICAL **: 17:28:15.379: g_main_context_push_thread
_default: assertion 'acquired_context' failed

(evolution.exe:2388): GLib-CRITICAL **: 17:28:15.385: g_main_context_push_thread
_default: assertion 'acquired_context' failed
**
GLib:ERROR:../glib-2.72.0/glib/gmain.c:3489:g_main_context_acquire: assertion fa
iled: (context->owner_count == 0)
Bail out! GLib:ERROR:../glib-2.72.0/glib/gmain.c:3489:g_main_context_acquire: as
sertion failed: (context->owner_count == 0)

Thread 1 received signal SIGTRAP, Trace/breakpoint trap.
0x00007ffb86f2b503 in KERNELBASE!DebugBreak ()
   from C:\Windows\System32\KernelBase.dll
(gdb) bt full
#0  0x00007ffb86f2b503 in KERNELBASE!DebugBreak ()
   from C:\Windows\System32\KernelBase.dll
No symbol table info available.
#1  0x0000000064a353a8 in g_abort ()
   from mingw64\bin\libglib-2.0-0.dll
No symbol table info available.
#2  0x0000000064a21345 in g_assertion_message ()
   from mingw64\bin\libglib-2.0-0.dll
No symbol table info available.
#3  0x0000000064a213a2 in g_assertion_message_expr ()
   from mingw64\bin\libglib-2.0-0.dll
No symbol table info available.
#4  0x00000000649f6b7c in g_main_context_acquire ()
   from mingw64\bin\libglib-2.0-0.dll
No symbol table info available.
#5  0x00000000649f78d6 in g_main_context_iterate.isra ()
   from mingw64\bin\libglib-2.0-0.dll
No symbol table info available.
#6  0x00000000649f7e63 in g_main_loop_run ()
   from mingw64\bin\libglib-2.0-0.dll
No symbol table info available.
#7  0x0000000061848b90 in ?? ()
   from mingw64\bin\libgtk-win32-2.0-0.dll
No symbol table info available.
#8  0x00000000004035c1 in ?? ()
...

MSVC doesn't support gdb dwarf2 but further confirmed suspicion that the crash originates with the liborg-gnome-mail-to-task.dll plugin:
mail-to-task-plugin-crash

"set follow-fork-mode child" allows mingw64 gdb debugging of the plugin:

#8  0x000000006b4c22b5 in set_attachments (message=0x6237a90, comp=0x61f6f00,
    client=0x63c2400) at ../../../plugins/mail-to-task/mail-to-task.c:369
        attachment_list = <optimized out>
...
#9  do_mail_to_event (data=0xcb4fcb0)
    at ../../../plugins/mail-to-task/mail-to-task.c:835
        message = <optimized out>
        icalprop = <optimized out>

Which is:
set_attachments (client, comp, message);

Attachments in Appointments, Tasks and Memos often doesn't work anyway (even in Linux version, esp. in CalDAV). It was probably safe to ignore this in Linux at the time, but under Windows it crashes the main process. ifdef mail-to-task.c line 835 out for G_OS_WIN32 fixes for now, but should be re-visited should we support event attachments later.

Attempting to create a duplicate contact in LDAP causes crash

Camel debug: e-utils-ERROR ** : .. : eab-contact-duplicate-detected

Should trigger warning dialog, not crash the interface.

Probably something that was never addressed in the original code?
TBH I think this is going to be an easy one so adding "good first issue" label.

Birthday and Anniversary format error

Contacts' birthdays and anniversaries cannot be defined directly in some locales.
Most of the time results in an "incorrect format" error when using dd/mm/yyyy (Euopean format issue?)
Precise cause to be determined, as sometimes contact birthdays can be successfully saved using local storage.
Setting these values for a contact stored in OpenLDAP always results in an error (not tested in all locale settings).

Current workaround in OpenLDAP seems to be editing birthDate and anniversary information directly in LDAP using reverse order. e.g. setting contact birthDate as "1999-10-30" will thereafter correctly display in Ev2W as "30/10/1999" (ref e_contact_date_from_string())

The syntax OID for birthDate (OID 1.3.6.1.4.1.8506.1.2.11) is 1.3.6.1.4.1.1466.115.121.1.15{128} (arbitrary UTF-8 per rfc2252 sub 6.10. Directory String)

Possibly related issues reported upstream around this release.

Look at e_date_edit_date_is_valid (widgets/misc/e-dateedit.c)

focus_tracker_editable_update_actions broken

Using EFocusTracker to update menus of the module windows results in undefined behavior. For example: after selecting message text, "Edit"->"Copy" does not appear in the email message windows widget's right-click context menu as expected. It likewise remins unavailable ("greyed-out") in the toolbar menu. If text is first selected and system-clipboard-copied via CTRL-C, then the copy option returns to the right-click and the toolbar menus as expected, and is selectable. When text from an event description is selected, the top menu also does not work but the context menu actually does. Results in different commands active/inactive from each other in the same calendar window, which is probably wrong. Again, the menu becomes responsive once text is copied to the system clipboard using CTRL-C. This issue only affects HTML-mode editing.

As a work-around, using cut/copy/paste keyboard shortcuts do not have this problem and work as expected. The issue lies with EFocusTracker callback sensitivity updating the menus. EFocusTracker relies on, well, focus (e.g. which gtk widget is currently targeted as momentarily in-use). On Linux this isn't an issue but has been raised multiple times for Windows, especially for newer versions: https://superuser.com/questions/1266646/xwindows-gtk-focus-bug The fact the the menus correct themselves after a "CTRL-C copy" is futher indicative of this being the culprit, as edit-copy grabs focus in GTK. Accordingly, any menu using EFocusTracker's focus-based-sensitivity is likely compromised at times. (e.g. the code around "Do nothing. EFocusTracker handles this").

TLS connection issues

TLS connections often fail entirely due to lack of proper code support. Alternatives include SMTP with local mbox, tunneling or trying another protocol. Opportunistic STARTTLS also failing. Older SSLv3 unaffected.

Inline images in HTML messages encoding issues

Inline images, esp. signature images, often are not displayed in gmail, squirrelmail, etc.

Note this is a very old issue of the original code, but still should be considered a bug as original code presents this functionality, albeit flawed.

Cannot use remote folder for Sent Items over SSL

This is a known limitation of Evolution v2.
Was not fixed until 3.1 and it was then determined that there would be no backport.

Essentially, IMAP + SSL will not allow External Sent Items storage

Options: Use local folder for sent item storage or use an IMAP tunnel for encryption.

Starting second instance causes crash (Windows)

For example, clicking a mailto: link in Windows currently crashes a running EV2W process. Patch with something like WIn32 API RegisterWaitForSingleObject and multiple-instance startup prevention.

Printing issues

Gtk.PrintOperation requires additional code on WIN32 to set printing units.

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.