Skip to content
sls.hh 2.2 KiB
Newer Older
Seblu's avatar
Seblu committed
/*
  This file is part of SLS.
  Copyright (C) 2008 Sebastien LUTTRINGER (<contact@seblu.net> )

  SLS is free software; you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published by
  the Free Software Foundation; either version 2 of the License, or
  (at your option) any later version.

  SLS is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  GNU General Public License for more details.

  You should have received a copy of the GNU General Public License
  along with SLS; if not, write to the Free Software
  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  US
*/
Seblu's avatar
Seblu committed

#ifndef SLS_HH
# define SLS_HH

# define _REENTRANT

# include <cassert>
# include <ios>
# include <iostream>
# include <fstream>
# include <sstream>
# include <map>
Seblu's avatar
Seblu committed
# include <list>
Seblu's avatar
Seblu committed

typedef std::string string;
typedef std::stringstream sstream;
typedef std::ostream ostream;
typedef std::ifstream ifstream;
typedef std::ofstream ofstream;

enum {
  ERR_NO = 0,
  ERR_USAGE = 1,
  ERR_BADPARAM = 2,
  ERR_FILE = 3,
  ERR_NET = 4,
  ERR_PROTO = 5,
  ERR_AUTH = 6,
Seblu's avatar
Seblu committed
  ERR_DB = 7,
Seblu's avatar
Seblu committed
  ERR_NOMEM = 41,
  ERR_UNKNOWN = 42
};

// -----------------------------------------------------------------------------
// Gonstant
// -----------------------------------------------------------------------------

static const string VERSION = "1";
static const int MAX_LINE_SIZE = 512;

Seblu's avatar
Seblu committed

// -----------------------------------------------------------------------------
// Classes
// -----------------------------------------------------------------------------

// Host

struct Host {
  string login;
  string pass;
  string ipv4;
  int level;
};

typedef std::list<Host> Hosts;

// Group

struct Group {
  string name;
  Hosts hosts;
};

typedef std::list<Group> Groups;

// User
struct User {
  string login;
  string pass;
  int level;
  bool priv;
};

typedef std::list<User> Users;

// Script

struct Script {
  string name;
  string path;
  int level;
};

typedef std::list<Script> Scripts;

// Alias

struct Alias {
  string name;
  string val;
};

typedef std::list<Alias> Aliases;

Seblu's avatar
Seblu committed
#endif