Markopy
Utilizing Markov Models for brute forcing attacks
term.cpp
Go to the documentation of this file.
1 /** @file term.cpp
2  * @brief Terminal handler for pretty stuff like colors
3  * @authors Ata Hakçıl
4  *
5  * @copydoc Markov::API::CLI::Terminal
6  */
7 
8 #include "term.h"
9 #include <string>
10 
11 using namespace Markov::API::CLI;
12 
13 //Windows text processing is different from unix systems, so use windows header and text attributes
14 #ifdef _WIN32
15 
16 HANDLE Terminal::_stdout;
17 HANDLE Terminal::_stderr;
18 
19 std::map<Terminal::color, DWORD> Terminal::colormap = {
20  {Terminal::color::BLACK, 0},
21  {Terminal::color::BLUE, 1},
22  {Terminal::color::GREEN, 2},
23  {Terminal::color::CYAN, 3},
24  {Terminal::color::RED, 4},
25  {Terminal::color::MAGENTA, 5},
26  {Terminal::color::BROWN, 6},
27  {Terminal::color::LIGHTGRAY, 7},
28  {Terminal::color::DARKGRAY, 8},
29  {Terminal::color::YELLOW, 14},
30  {Terminal::color::WHITE, 15},
31  {Terminal::color::RESET, 15},
32 };
33 
34 
35 Terminal::Terminal() {
36  Terminal::_stdout = GetStdHandle(STD_OUTPUT_HANDLE);
37  Terminal::_stderr = GetStdHandle(STD_ERROR_HANDLE);
38 }
39 
40 std::ostream& operator<<(std::ostream& os, const Terminal::color& c) {
41  SetConsoleTextAttribute(Terminal::_stdout, Terminal::colormap.find(c)->second);
42  return os;
43 }
44 
45 #else
46 
47 std::map<Terminal::color, int> Terminal::colormap = {
60 };
61 
63  /*this->;*/
64 }
65 
66 std::ostream& operator<<(std::ostream& os, const Terminal::color& c) {
67  char buf[6];
68  sprintf(buf,"%d",Terminal::colormap.find(c)->second);
69  os << "\e[1;" << buf << "m";
70  return os;
71 }
72 
73 
74 
75 
76 #endif