<?php
/*! @file

    @id $Id$
*/
//       1         2         3         4         5         6         7         8
// 45678901234567890123456789012345678901234567890123456789012345678901234567890

/// Send a message to the server
/** Server checks if user exists and has
    a valid public key. More test could be added later.

    @param $user The name of the user that send the message.

    @param $msg The armored signed and encrypted message. There is a
                limit of 100000 bytes for the message.

    @return
      - success() if the message has been stored successfully
      - error() in case of any error

    @api Send Message to Server
*/
function send($user, $msg) {
  try {
    require_once("opendb.php");
    $user = $db->real_escape_string($user);
    $msg = $db->real_escape_string($msg);
    if (strlen($_REQUEST['msg'])>100000) error("message is too long");
    $q = $db->query("select pubkey from user where name='$user';");
    if (!$q || $q->num_rows!=1) error("user not found on server");
    $pubkey = gnupg_import($pgp, $q->fetch_row()[0]);
    if (!$pubkey) error("wrong identity");
    $q = $db->query("insert into message (user, msg) values ('$user', '$msg');");
    if (!$q) {
      error_log("Error storing message: ".$db->error);
      error("storing message failed");
    }
    success("message stored");
  } catch (Exception $e) {
    error_log("Error storing message: ".$e->message);
    error("storing message failed");
  }
}
send($_REQUEST['user'], $_REQUEST['msg']);
?>