/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* vim: set et sw=2 ts=2: */ /*************************************************************************** * admin_connection.cc * * Thu Feb 3 09:33:44 CET 2011 * Copyright 2011 Bent Bisballe Nyeng * deva@aasimon.org ****************************************************************************/ /* * This file is part of Pracro. * * Pracro 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. * * Pracro 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 Pracro; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ #include "admin_connection.h" #include "debug.h" static std::string admin_sessionunlock(Environment &env, std::string id) { Session *session = env.sessions.session(id); if(session) { if(session->isreadonly) { env.sessions.deleteSession(id); return "Session " + id + " was 'readonly' and has been discarded."; } else { session->setActive(false); return "Session " + id + " has been deactivated (set to idle)."; } } return "Session " + id + " does not exist or has been committed."; } AdminConnection::AdminConnection(Environment &e, headers_t a, std::string u) : env(e), args(a), uri(u) {} AdminConnection::~AdminConnection() {} bool AdminConnection::handle(const char *data, size_t size) { if(data == NULL && size == 0) { if(uri == "/sessionunlock" && args.find("id") != args.end()) { reply = admin_sessionunlock(env, args["id"]); return true; } reply = "Try something else..."; return false; } return true; } std::string AdminConnection::getResponse() { return reply; } headers_t AdminConnection::getHeaders() { headers_t hdrs; return hdrs; } #ifdef TEST_ADMIN_CONNECTION //deps: //cflags: //libs: #include "test.h" TEST_BEGIN; // TODO: Put some testcode here (see test.h for usable macros). TEST_END; #endif/*TEST_ADMIN_CONNECTION*/