# SUM - Secure Ultimate Messenger

SUM is a simple secure desktop instant messenger for local networks.
No server infrastructure is needed. All communication is encrypted and nothing saved on any server.

download

### confidentiality

SUM uses RSA encryption for sending messages and files. The optional php backend only holds the encrypted data for locating other users, not for communication.

### authenticity

SUM offers a key management. This allows the receiver to verify the identity of the other user for every single message.

### full featured chat

SUM is a full featured instant messenger chat application for your desktop. User can create rooms, set avatars, send files, send links, use emoticons, ...

Download and unzip `sum.zip`. You can start sum by executing sum.exe.
You can configure SUM by adding `config.ini` in the same folder as your `sum.exe`. You can also enter the path of the `config.ini` as command line argument for `sum.exe`.
Before you can use SUM you have to configure first how your chat clients will find each other. You can choose between using a network drive (shared directory) or using a php based backend script on a webserver.

#### Using a network drive or shared directory

If you use a shared folder as backend then insert following values in your `config.ini`. You have to specify `myserver/simfolder`:

    userlist = file
    user_file = //myserver/simfolder/userfile.json
    user_file_extended = //myserver/simfolder/?
    lock_file = //myserver/simfolder/userfile.lock

#### Using the little backend script on a webserver

You can also use the backend.php on your webserver. This little script saves the userlist in a sqlite database (you don't have to configure anything, just give the script write permissions to the folder backend.php is in). Before the SUM client saves the data in the backend.php script it encrypts it. You can specify the AES password. Only your clients can decrypt the data stored on the webserver.

    userlist = web
    web_url = http://myserver/sum/backend.php
    aes_key = mysecretpassword
    sha256_salt = anysaltstring

### Configuration

You can configure following values in your `config.ini`. See default.ini for default settings.

Parameter | Description
--- | ---
userlist | use `file` or `web` for using file based or web based (backend.php) userlist management
web_url | if you use `web` for parameter `userlist` this specifies the url where backend.php runs
aes_key | This specifies the AES password for encrypting the userfile and any data the backend.php script will save on server
sha256_salt | salt for password hashing
user_file | if you use `file` for parameter `userlist` this specifies the path of the userlist file where all users register themself
user_file_extended | if you use `file` for parameter `userlist` this specifies the path of the file where a user saves data as their avatar, key, ip and port which changes rarely
lock_file | if you use `file` for parameter `userlist` this specifies the lock file for ensuring that only one user access the userfile at once
iv | initialization vector for AES encryption
language | language `de` for German, `en` for English
version_file | path of version file. There you can enter the newest SUM version and all user which has a lower version will get a note about an update
version_update | url to the newest version for downloading
version_update_intervall | how often version file will be checked
user_timeout | set user status to offline after ms inactivity
user_remove | remove users from list after ms inactivity
user_list_update_intervall | update every n seconds users entry in userlist file
lock_stale | max age in milliseconds of lock file (when user quits before release lock file)
lock_retry_minimum | retry in minimum random ms when file is locked
lock_retry_maximum | retry in maximum random ms when file is locked
notification_reminder | timeout for notification about unread messages reminder in ms
excluded_ips | ips which will be ignored on creating server (e.g. for excluding local virtual machine network devices)
conversation_items | amount of chat messages until "show more" will be shown
about_url | url for menue entry 'about sum'
highlight_languages_value | supported highlight.js languages in code input selection (replace value by language key)
welcome_text | welcome text which will be shown on startup