parent
b5b28e9e3e
commit
098edef3d1
@ -0,0 +1,3 @@
|
|||||||
|
|
||||||
|
#include "project_lib.h"
|
||||||
|
#include "my_tupe.h"
|
@ -0,0 +1,159 @@
|
|||||||
|
#include "system_cmd_quotas.h"
|
||||||
|
|
||||||
|
namespace Quotas_sys {
|
||||||
|
Quotas_sys::Quotas_sys() {
|
||||||
|
map_hw_or_sw["ext2"] = "hw";
|
||||||
|
map_hw_or_sw["ext3"] = "hw";
|
||||||
|
map_hw_or_sw["nfs"] = "sw";
|
||||||
|
map_hw_or_sw["NFS"] = "sw";
|
||||||
|
}
|
||||||
|
void Quotas_sys::format_cmd_quotas_ubconfig(struct struct_quotas& _struct_quota) {
|
||||||
|
string key = "DISK_QUOTA[";
|
||||||
|
key += ":" + _struct_quota.device + "]";
|
||||||
|
string value = _struct_quota.name + ":" + _struct_quota.cmd;
|
||||||
|
(*map_gui_cfg)[key] = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Quotas_sys::format_cmd_quotas_system(struct struct_quotas& _struct_quota) {
|
||||||
|
string key = "DISK_QUOTA[";
|
||||||
|
key += ":" + _struct_quota.device + "]";
|
||||||
|
string value = _struct_quota.name + ":" + _struct_quota.cmd;
|
||||||
|
(*map_gui_cfg)[key] = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Quotas_sys::off_quota_ubconfig(Gtk::ComboBoxText* combo_box, string quota_type) {
|
||||||
|
string partition = combo_box->get_active_text();
|
||||||
|
string key = "DISK_QUOTA[" + quota_type + ":" + partition + "]";
|
||||||
|
string value = "disable";
|
||||||
|
(*map_gui_cfg)[key] = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Quotas_sys::set_map_gui(map_str_str &map_gui) {
|
||||||
|
map_gui_cfg = &map_gui;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Quotas_sys::check_on_quotas_system(string cmd) {
|
||||||
|
string response = obj_process_call.call_all_sections(cmd);
|
||||||
|
if (response.length() > 0) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
struct status_quotas Quotas_sys::check_on_quotas_system_2_hw(string params) {
|
||||||
|
string cmd = "quotaon -ugPvp " + params;
|
||||||
|
string response = obj_process_call.call_all_sections(cmd);
|
||||||
|
struct status_quotas status;
|
||||||
|
if (response.length() > 0 && response.find("Cannot find mountpoint for device ") == string::npos) {
|
||||||
|
status.status = true;
|
||||||
|
vector<string> vec_str = Utils::split(response, '\n');
|
||||||
|
string array_str[3] = {"group", "user", "project"};
|
||||||
|
for (int index = 0; index < 3; index++) {
|
||||||
|
string u_g_p = array_str[index];
|
||||||
|
for (const string& vec_u_g_p : vec_str) {
|
||||||
|
if (vec_u_g_p.find(u_g_p) != string::npos && vec_u_g_p.find("accounting") != string::npos ) {
|
||||||
|
if (index == 0) {
|
||||||
|
status.group = true;
|
||||||
|
}
|
||||||
|
else if (index == 1) {
|
||||||
|
status.user = true;
|
||||||
|
}
|
||||||
|
else if (index == 2) {
|
||||||
|
status.project = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (vec_u_g_p.find(u_g_p) != string::npos && vec_u_g_p.find("enforced") != string::npos){
|
||||||
|
if (index == 0) {
|
||||||
|
status.group = false;
|
||||||
|
}
|
||||||
|
else if (index == 1) {
|
||||||
|
status.user = false;
|
||||||
|
}
|
||||||
|
else if (index == 2) {
|
||||||
|
status.project = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
status.group = false;
|
||||||
|
status.user = false;
|
||||||
|
status.project = false;
|
||||||
|
status.status = false;
|
||||||
|
}
|
||||||
|
return status;
|
||||||
|
|
||||||
|
}
|
||||||
|
bool Quotas_sys::on_quota_hw(string partition, string cmd_hw, string cmd_sw) {
|
||||||
|
if (map_hw_or_sw.find(partition) != map_hw_or_sw.end()) {
|
||||||
|
if (map_hw_or_sw[partition] == "hw") {
|
||||||
|
obj_process_system.call(cmd_hw, "");
|
||||||
|
obj_process_system.call("ubconfig set config SERVICESSTART+=,quotaon.service", "");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else if (map_hw_or_sw[partition] == "sw") {
|
||||||
|
obj_process_system.call(cmd_sw, "");
|
||||||
|
obj_process_system.call("ubconfig set config SERVICESSTART+=,quotaon.service", "");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
bool Quotas_sys::on_quota_sw(string partition, int mode) {
|
||||||
|
if (map_hw_or_sw.find(partition) != map_hw_or_sw.end()) {
|
||||||
|
string cmd = "";
|
||||||
|
if (mode == 0) {
|
||||||
|
cmd += "mount -vo remount,usrquota " + partition;
|
||||||
|
cmd += "quotacheck -ucm " + partition;
|
||||||
|
cmd += "quotaon -uv " + partition;
|
||||||
|
}
|
||||||
|
else if (mode == 1) {
|
||||||
|
cmd += "mount -vo remount,grpquota " + partition;
|
||||||
|
cmd += "quotacheck -gcm " + partition;
|
||||||
|
cmd += "quotaon -gv " + partition;
|
||||||
|
}
|
||||||
|
else if (mode == 2) {
|
||||||
|
cmd += "quotaon -ugPv " + partition;
|
||||||
|
}
|
||||||
|
else if (mode == 3) {
|
||||||
|
cmd += "quotaon -augPv";
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
cmd += "ubconfig set config SERVICESSTART+=,quotaon.service";
|
||||||
|
obj_process_system.call(cmd, "");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void Quotas_sys::off_quota_system(Gtk::ComboBoxText* combo_box, string quota_type) {
|
||||||
|
string partition = combo_box->get_active_text();
|
||||||
|
string cmd = "";
|
||||||
|
if (map_hw_or_sw.find(partition) != map_hw_or_sw.end()) {
|
||||||
|
if (map_hw_or_sw[partition] == "hw") {
|
||||||
|
cmd = "tune2fs -Q ^" + quota_type + " " + partition;
|
||||||
|
}
|
||||||
|
else if (map_hw_or_sw[partition] == "sw") {
|
||||||
|
cmd = "quotaoff -u " + quota_type.substr(0,1) + " " + partition;
|
||||||
|
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
// TODO:
|
||||||
|
// Убрать после тестирования
|
||||||
|
throw "Опа цэ!";
|
||||||
|
}
|
||||||
|
obj_process_system.call(cmd, "");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,29 @@
|
|||||||
|
#ifndef SYSTEM_CMD_QUOTAS
|
||||||
|
#define SYSTEM_CMD_QUOTAS
|
||||||
|
#include "project_lib.h"
|
||||||
|
#include "my_type.h"
|
||||||
|
#include "my_process.h"
|
||||||
|
#include "util.h"
|
||||||
|
|
||||||
|
namespace Quotas_sys {
|
||||||
|
class Quotas_sys {
|
||||||
|
public:
|
||||||
|
map_str_str map_hw_or_sw;
|
||||||
|
|
||||||
|
map_str_str* map_gui_cfg;
|
||||||
|
My_Process::My_Process_system obj_process_system = My_Process::My_Process_system();
|
||||||
|
My_Process::My_Process_call obj_process_call = My_Process::My_Process_call();
|
||||||
|
public:
|
||||||
|
Quotas_sys();
|
||||||
|
void set_map_gui(map_str_str &map_gui);
|
||||||
|
void format_cmd_quotas_ubconfig(struct struct_quotas& _struct_quota);
|
||||||
|
void format_cmd_quotas_system(struct struct_quotas& _struct_quota);
|
||||||
|
void off_quota_ubconfig(Gtk::ComboBoxText* combo_box, string quota_type);
|
||||||
|
void off_quota_system(Gtk::ComboBoxText* combo_box, string quota_type);
|
||||||
|
bool check_on_quotas_system(string cmd);
|
||||||
|
struct status_quotas check_on_quotas_system_2_hw(string params);
|
||||||
|
bool on_quota_hw(string partition, string cmd_hw, string cmd_sw);
|
||||||
|
bool on_quota_sw(string partition, int mode);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
#endif
|
Loading…
Reference in new issue