xmppc.h

  1/*
  2 * @file xmppc.h
  3 *
  4 * vim: expandtab:ts=2:sts=2:sw=2
  5 *
  6 * @copyright 
  7 *
  8 * Copyright (C) 2020 Anoxinon e.V.
  9 *
 10 * This file is part of xmppc.
 11 *
 12 * xmppc is free software: you can redistribute it and/or modify
 13 * it under the terms of the GNU General Public License as published by
 14 * the Free Software Foundation, either version 3 of the License, or
 15 * (at your option) any later version.
 16 *
 17 * xmppc is distributed in the hope that it will be useful,
 18 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 20 * GNU General Public License for more details.
 21 *
 22 * You should have received a copy of the GNU General Public License
 23 * along with Foobar.  If not, see <http://www.gnu.org/licenses/>.
 24 *
 25 * German
 26 *
 27 * Diese Datei ist Teil von xmppc.
 28 *
 29 * xmppc ist Freie Software: Sie können es unter den Bedingungen
 30 * der GNU General Public License, wie von der Free Software Foundation,
 31 * Version 3 der Lizenz oder (nach Ihrer Wahl) jeder neueren
 32 * veröffentlichten Version, weiter verteilen und/oder modifizieren.
 33 *
 34 * xmppc wird in der Hoffnung, dass es nützlich sein wird, aber
 35 * OHNE JEDE GEWÄHRLEISTUNG, bereitgestellt; sogar ohne die implizite
 36 * Gewährleistung der MARKTFÄHIGKEIT oder EIGNUNG FÜR EINEN BESTIMMTEN ZWECK.
 37 * Siehe die GNU General Public License für weitere Details.
 38 *
 39 * Sie sollten eine Kopie der GNU General Public License zusammen mit diesem
 40 * Programm erhalten haben. Wenn nicht, siehe <https://www.gnu.org/licenses/>.
 41 */
 42
 43#ifndef XMPPC_XMPPC_H__
 44#define XMPPC_XMPPC_H__
 45
 46#include "config.h"
 47
 48#include <stdarg.h>
 49#include <stdio.h>
 50#include <strophe.h>
 51
 52#define ANSI_COLOR_RED      "\x1b[31m"
 53#define ANSI_COLOR_GREEN    "\x1b[32m"
 54#define ANSI_COLOR_YELLOW   "\x1b[33m"
 55#define ANSI_COLOR_BLUE     "\x1b[34m"
 56#define ANSI_COLOR_MAGENTA  "\x1b[35m"
 57#define ANSI_COLOR_CYAN     "\x1b[36m"
 58
 59#define ANSI_COLOR_B_RED    "\x1b[91m"
 60
 61
 62/**
 63 * XMPPC Level of Logging
 64 *
 65 */
 66typedef enum loglevel { 
 67  ERROR = 0,
 68  WARN  = 1,
 69  INFO  = 2,
 70  DEBUG = 3,
 71  TRACE = 4
 72} loglevel_t;
 73
 74typedef enum mode { UNKOWN, ACCOUNT, ROSTER, MESSAGE, MUC, OMEMO, PGP, OPENPGP, MONITOR } xmppc_mode_t;
 75
 76typedef struct {
 77  /** log level **/
 78  loglevel_t loglevel;
 79  xmpp_ctx_t *ctx;
 80  xmpp_conn_t *conn;
 81  xmppc_mode_t mode;
 82} xmppc_t;
 83
 84#define INIT_XMPPC(X) xmppc_t X = {.loglevel = ERROR, .ctx = NULL, .conn = NULL, .mode = UNKOWN}
 85
 86typedef void (*ExecuteHandler)(xmppc_t *, int, char **);
 87
 88void logError(xmppc_t *xmppc_t, const char *fmt, ...);
 89
 90void logWarn(xmppc_t *xmppc, const char *fmt, ...);
 91
 92void logInfo(xmppc_t *xmppc, const char *fmt, ...);
 93
 94void logDebug(xmppc_t *xmppc, const char *fmt, ...);
 95
 96int xmppc_context(xmppc_t *xmppc, int level);
 97
 98int xmppc_connect(xmppc_t *_xmppc, char *jid, char *password);
 99
100#endif // XMPPC_XMPPC_H__