cypht-org / cypht Goto Github PK
View Code? Open in Web Editor NEWCypht: Lightweight Open Source webmail written in PHP and JavaScript
Home Page: http://cypht.org
License: GNU Lesser General Public License v2.1
Cypht: Lightweight Open Source webmail written in PHP and JavaScript
Home Page: http://cypht.org
License: GNU Lesser General Public License v2.1
Nowadays it's quite common to send e.g. calendar invitations by email. Such email may have many Content-Type:
headers. E.g. Google Calendar sends:
Content-Type: multipart/mixed
Content-Type: multipart/alternative
Content-Type: text/plain
Content-Type: text/html
Content-Type: text/calendar
Content-Type: application/ics
The ics part has Disposition: attachment
, but all others are "inline". It would be very nice to have separate viewers (e.g. as Cypth modules) for different types - I can think of 3 basic ones (text/plain, text/html, text/calendar) and one more as my little personal wish (text/x-markdown and text/markdown). These viewer might be configurable (e.g. it's insecure to download all embedded/linked images when viewing the text/html content, so in configuration there would be a choice "show immediately" or "show a button load images" instead by default).
The goal would be to allow switching between them on demand. In a long run, some semantics can be used - e.g. the text/calendar viewer might render it using schema.org under the hood or provide direct links accept
deny
tentative
in case you have a Gmail account.
The main problem here seems to be latency introduced by having gmail contacts included in the autocomplete search results, which causes the autcomplete list to be laggy and update even after making a selection. We should cache those contacts in the session, and continue to tweak and improve the javascript.
Viewing the message details from a github message leaves a lot to be desired. There is no page title at all, and no context about what the message refers to (new commit, new issue, etc).
Probably should be a bit more specific :)
Add a "add to calendar" link to the imap message view when the message contains a text/calendar part. The link should convert the calendar to our internal format and add it to the calendar events.
Some very basic tagging/labeling (so that it doesn't bloat the user interface) with filtering based on these tags/labels would be nice to have.
The implementation would use just IMAP flags/keywords (see an older short article with useful hints: http://deflexion.com/2006/05/server-side-message-labels). And of course, I wouldn't pay attention to Mozilla-based clients etc. and just left the default tag set blank without any presets. I.e. solely up to the user what the tags will be (if the user wanted old-thunderbird-compatible tags, then he can just write them as $My_awesome_tag4
to exchange the fourth Mozilla tag with this one).
The compose page is very limited right now, it needs:
We need a system to attach files to outbound messages. I want files to be encrypted with the long hm_session key (uploaded but orphaned files are a problem), then un-encrypted just in time for sending. While we are at it, we should think about "compose sessions". By that I mean, opening multiple compose pages could result in an outbound E-mail containing an inadvertent attachment (meant for a different compose instance).
The account module set only supports creating new accounts. We should add support for deleting accounts, updating passwords, and viewing the current account list. These features are only applicable when using the DB auth configuration setting.
I have just installed the current master version according to the installation instructions. Whenever I try to access the generated (and symlinked) site folder, I get stuck a redirect loop. The symlink is not the problem, as copying the folder to the site root does not work either.
I have included an excerpt from the Apache access log below. The error log does not show anything.
[...]
84.46.xxx.xxx - - [11/Feb/2016:19:44:07 +0100] "GET /cypht/ HTTP/1.0" 303 354 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.103 Safari/537.36"
84.46.xxx.xxx - - [11/Feb/2016:19:44:07 +0100] "GET /cypht/ HTTP/1.0" 303 354 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.103 Safari/537.36"
84.46.xxx.xxx - - [11/Feb/2016:19:44:08 +0100] "GET /cypht/ HTTP/1.0" 303 354 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.103 Safari/537.36"
84.46.xxx.xxx - - [11/Feb/2016:19:44:08 +0100] "GET /cypht/ HTTP/1.0" 303 354 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.103 Safari/537.36"
[...]
nginx/1.8.1 (reverse proxy)
Apache/2.4.7 (application server)
PHP 5.5.9-1ubuntu4.14
Ubuntu 14.04.3 LTS
My setup is: ArchLinux + PHP + PHP-FPM + Dovecot. I am no expert in this stuff. So...
imap-login: Disconnected (no auth attempts in 0 secs): user=<>
So... What i'm doing wrong?
Currently we read attachments into memory to format them to be sent. We need to do this one line at a time so we don't overflow available memory with larger attachments.
for some reason using the forge.js encryption on a value stored in local storage causes the decrypted value to have incorrect character encoding. It's likely not a bug in forge itself but something we are doing incorrectly. I added a comment to the ini file that this setting is experimental and should be avoided for now. The problem appears to be triggered when a string with a non-ascii character is pulled from the DOM using zepto then stored in the local storage. Open retrieval non-ascii chars are munged.
Some module sets require an ini file to be present with pre-generated api keys (wordpress, github) as do gmail and outlook oauth2 based IMAP connections. Add this to the existing install page.
I just wantet to try out cypth but when accessing the page i get
Fatal error: Can't use method return value in write context in /var/www/cypht/hm3-master/modules/core/modules.php on line 848
It doesent matter, if I use the main dir or the site dir as document root.
# php -v
PHP 5.4.39-0+deb7u2 (cli) (built: Mar 25 2015 08:33:29)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2014 Zend Technologies
How much security support is planned for Cypth? There is a growing interest in end-to-end encryption and some new web mail clients try to support PGP (e.g. Mailpile). Roundcube guys have a nice discussion about issues with PGP implementation on http://trac.roundcube.net/wiki/Dev_Encryption and the combined solution seems viable.
Seems like only 4 IMAP servers are supported. I must admit: I really have more than that...
Do you have any Demo or screenshots?
This appears to be a race condition between submitting a message to be sent and background requests, but I'm unsure why it logs the user out. The outbound message is sent, which is even weirder. I have disabled the send button while the background draft saving occurs which helps, but there is still something fishy going on here.
Many of the interface languages were generated with the google translate api - from what I have been told they are hilariously bad. Remove these and leave the 2 (?) actual translations.
Add missing strings per the debug output for each page to the remaining translation files
When I select a message and click delete, the message is still in the folder where it was located before. Also, it takes me back to the 'Home' screen; it would be nice if it could redirect me to the same page where I was before. Even better, asynchronous call?
If I choose to display the raw view of the message, I got it again if I go back to this message in the same session.
I suggest that clicking again on "Raw" will hide it.
Noticed this while testing adding/removing IMAP folders to the combined source list. For some reason when using db sessions the source fails to add/remove.
I copied the sample ini file and the only thing i changed is auth_type=IMAP
.
PHP Fatal error: Class 'Hm_Auth_IMAP' not found in /var/www/cypht/hm3-master/lib/session.php on line 118
I am aware that the comment says the imap module must be enabled
but it is present in the "modules" line at the end of the file. Am I missing something, is there something else what needs to be done? I din't find a hint what to do.
What is your long term plan for contacts? Is there a way to import them currently? So far I am very impressed. This is exactly what I have been looking for.
When I add an email account through nux, it doesn't automatically show up on the sidebar. I have to first hide it, and then show it, for it to show up on the sidebar.
Are there any plans to support threaded or chat view of messages?
Currently there is only one server side draft saved when you open the compose page and write an outbound message. This is fine unless you open multiple compose pages. We need to introduce the concept of a "compose session" that ties the server side draft to the compose page instance so we can properly support multiple compose windows simultaneously.
I tested the software yesterday and I saw strange characters (I think that they were utf8 encodings) in the folder names of a yahoo imap account.
The folder names were in Greek
On mobile the page header area gets borked when the title is too long. Fix with some CSS
We need vcard based event support. We should allow saving events in both the db and the filesystem just like user settings.
Hello
Currently if an IMAP message is composed in HTML only, nothing is shown in inline message view
Markers are:
Content-Type: text/html; charset=utf-8
Content-Transfer-Encoding: quoted-printable
We should have a line like below at least.
text / html 7bit utf-8 Download
A nice-to-have is a "View" link to open the content part in a popup window. It is useful when you trust the sender and don't want to download the html to read it.
When unflagging a message on the combined "flagged" view, we should immediately remove it from the list. Currently it stays in the list until the next auto or manual update occurs.
It would be great if I could choose Read/Unread/Flag/Unflag/Delete messages in the search results the same way that I can do in combined inbox
Even when I have multiple accounts added, I can only view the emails under their direct inbox. 'Email => All', 'Main => Everything', and 'Main => Unread' all tell me I'm 'so alone'....
When checking for translation, I saw that accentuated chars are displayed as raw html in the top-right bar where there is the filter information, namely the scan delay (è
is rendered as è
). This does not occur on other areas like menu or main parts. The title of the right area (the one after the check-box) displays the right accentuated character.
Lots of development has happened since the themes module set was created. Themes all need to be reviewed for issues
Do you have any file manager?
Values are concatenated when they should not be, and overall the history page looks awful. This module set needs some design love!
When I was adding IMAP servers I always had to type "993" into the port field. It would be nice if those port fields are prepopulated with meaningful values. I'd suggest
IMAP: 993
POP3: 995
SMTP: 465
Inline message viewing needs to be expanded to include all message types Cypht supports. Currently it only handles IMAP and RSS/ATOM messages.
We need both an internal contacts system, and the ability to interact with other contact/address sources. A standard internal contact system is almost done, the main thing that needs attention is how it's used on the compose page. I started an auto-complete system, but it needs work!
The idea behind this module set is simple: Use javascript to capture a list of URLs and details about the messages you have viewed since logging in. Use this data to display a simple list of message history to make it easier to jump back to something you read earlier. For some reason (probably multiple reasons) it fails to capture all messages in the list.
In modules/contacts/site.js
autocomplete_contact()
there is a check for minimal length of the requested string. 4
is used as minimum, which is in my opinion not necessary as in practice we're interested in every single character, because of emails of very short length and very long length [email protected]
[email protected]
[email protected]
[email protected]
Andreas Withe Super Extra Long German Name <andreaswithsuperextralonggermanname@superextralongdomainbecausewecan.com>
being next to each other. I wouldn't worry about the overhead introduced by changing the minimum to 1
as nobody types thousands of requests per second (so AJAX and PHP would be fine) and regarding the backend DB, it's suited for such load.
Also, I wonder if contact_suggestions[i]
in autocomplete_contact_results()
shouldn't be converted to HTML tag attribute compatible string as according to https://tools.ietf.org/html/rfc2822#section-3.4 , the domain part can contain really interesting characters potentially invalid in attribute strings (non white space controls, character references, "
, '
to name a few). I myself wouldn't trust at all that the DB content is clean ;)
We need to set the IMAP flag on a message we replied to, then display an icon in the flags column of message lists.
Are there any plans to support message filtering? It would be sufficient to provide just a list of extended regular expressions applied line-by-line on all headers and a list of actions for each regexp in case it matched.
I've tried to add a SMTP server and I have chosen the wrong port. The connection failed and my input (not much, only the account name and the server address) was lost because the side reloaded. Having the fields prepopulated with the values of the last try would be more comfortable.
After latest git pull (commit a9be096), I have the following output :
# php scripts/config_gen.php
scanning module core ...
scanning module contacts ...
scanning module feeds ...
scanning module imap ...
scanning module smtp ...
scanning module site ...
scanning module account ...
scanning module idle_timer ...
scanning module calendar ...
scanning module themes ...
scanning module nux ...
scanning module developer ...
scanning module github ...
scanning module wordpress ...
scanning module history ...
scanning module saved_searches ...
scanning module nasa ...
sh: 431: 1: not found
sh: echo: I/O error
site.css file created
sh: 2906: 1: not found
sh: echo: I/O error
site.js file created
hm3.rc file written
creating production site
I don't know if it could be related to my setup or not (site.css is 0 byte)
Currently we have a set of CLI scripts to create the Cypht configuration and add/remove/modify user accounts (when using the DB authentication method). It would be great to have a web based version of these to make installation easier, especially for shared hosting environments.
By now the source (Account /Feed Name) is only available in a TD element inside of a TR element. if the source is added as a class, users can add their own styling based on the account.
The Unseen class is in a DIV that is a child of the subject TD. I think that class should also be given to the TR element, so that styling of the complete message in the list is possible.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.