/* * This file is a part of CMSLU -- Content Management System like Unix * and is not publicly distributed * * Copyright (c) 2008-2009, Tomasz Sowa * All rights reserved. * */ #include "functions.h" void Functions::Clear() { table.clear(); } void Functions::ReadFunctions() { Clear(); Function f; f.item.user_id = -1; f.item.group_id = -1; f.item.privileges = 0755; f.item.parent_id = -1; // !! temporarily doesn't matter f.item.id = -1; f.item.type = Item::file; // in the future we will read these functions from the database f.code = FUN_LS; f.item.url = "ls"; table.insert( std::make_pair(f.item.url, f) ); f.code = FUN_CAT; f.item.url = "cat"; table.insert( std::make_pair(f.item.url, f) ); f.code = FUN_NODE; f.item.url = "node"; table.insert( std::make_pair(f.item.url, f) ); f.code = FUN_EMACS; f.item.url = "emacs"; table.insert( std::make_pair(f.item.url, f) ); f.code = FUN_MKDIR; f.item.url = "mkdir"; table.insert( std::make_pair(f.item.url, f) ); f.code = FUN_DEFAULT; f.item.url = "default"; table.insert( std::make_pair(f.item.url, f) ); f.code = FUN_PRIV; f.item.url = "priv"; table.insert( std::make_pair(f.item.url, f) ); f.code = FUN_RM; f.item.url = "rm"; table.insert( std::make_pair(f.item.url, f) ); f.code = FUN_LOGOUT; f.item.url = "logout"; table.insert( std::make_pair(f.item.url, f) ); f.code = FUN_LOGIN; f.item.url = "login"; table.insert( std::make_pair(f.item.url, f) ); f.code = FUN_RUN; f.item.url = "run"; table.insert( std::make_pair(f.item.url, f) ); f.code = FUN_WHO; f.item.url = "who"; table.insert( std::make_pair(f.item.url, f) ); f.code = FUN_LAST; f.item.url = "last"; table.insert( std::make_pair(f.item.url, f) ); f.code = FUN_CREATETHREAD; f.item.url = "createthread"; table.insert( std::make_pair(f.item.url, f) ); f.code = FUN_THREAD; f.item.url = "thread"; table.insert( std::make_pair(f.item.url, f) ); f.code = FUN_UPLOAD; f.item.url = "upload"; table.insert( std::make_pair(f.item.url, f) ); // functions which need more privileges f.code = FUN_RELOAD; f.item.url = "reload"; f.item.privileges = 0700; table.insert( std::make_pair(f.item.url, f) ); } Function * Functions::GetFunction(const std::string & name) { Table::iterator i = table.find(name); if( i == table.end() ) return 0; return &(i->second); } // !! in the future there will be a special container where we can search through the Code object Function * Functions::GetFunction(int code) { Table::iterator i = table.begin(); for( ; i != table.end() ; ++i ) { if( i->second.code == code ) return &(i->second); } return 0; }