Project "Tuxbox-GIT: apps": The branch, master has been updated via c931c9eb31c78842af8b13cfb615daed6635aaf7 (commit) from 0f0e7bf3f426d9beb188d921db1afa4b581fa4b9 (commit)
Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit c931c9eb31c78842af8b13cfb615daed6635aaf7 Author: m4r...@gmx.de <m4r...@gmx.de> Date: Mon May 25 19:48:46 2015 +0200 convert most char[...] configuration values to std::string based on martii's code with some changes for dbox use struct for network_nfs stuff remove deprecated support for smbfs mount fix MAC editing if saved char is 'A-F' and first keypress is keydown Signed-off-by: GetAway <get-a...@t-online.de> diff --git a/tuxbox/neutrino/src/gui/moviebrowser.cpp b/tuxbox/neutrino/src/gui/moviebrowser.cpp index 1d40283..5132b3f 100644 --- a/tuxbox/neutrino/src/gui/moviebrowser.cpp +++ b/tuxbox/neutrino/src/gui/moviebrowser.cpp @@ -962,8 +962,8 @@ int CMovieBrowser::exec(const char* path, const int playstate) //umount automount dirs for(int i = 0; i < NETWORK_NFS_NR_OF_ENTRIES; i++) { - if(g_settings.network_nfs_automount[i]) - umount2(g_settings.network_nfs_local_dir[i],MNT_FORCE); + if(g_settings.network_nfs[i].automount) + umount2(g_settings.network_nfs[i].local_dir.c_str(), MNT_FORCE); } #ifdef ENABLE_GUI_MOUNT CFSMounter::automount(); @@ -3771,9 +3771,9 @@ CDirMenu::CDirMenu(std::vector<MB_DIR>* dir_list) { for(int nfs = 0; nfs < NETWORK_NFS_NR_OF_ENTRIES; nfs++) { - if(g_settings.network_nfs_local_dir[nfs][0] != 0) + if(!g_settings.network_nfs[nfs].local_dir.empty()) { - std::string tmp = g_settings.network_nfs_local_dir[nfs]; + std::string tmp = g_settings.network_nfs[nfs].local_dir; int result = (*dirList)[i].name.compare( 0,tmp.size(),tmp) ; //printf("[CDirMenu] (nfs%d) %s == (mb%d) %s (%d)\n",nfs,g_settings.network_nfs_local_dir[nfs],i,(*dirList)[i].name.c_str(),result); @@ -3809,27 +3809,25 @@ int CDirMenu::exec(CMenuTarget* parent, const std::string & actionKey) { if(dirState[number] == DIR_STATE_SERVER_DOWN) { - std::string command = "ether-wake "; - command += g_settings.network_nfs_mac[dirNfsMountNr[number]]; - printf("try to start server: %s\n",command.c_str()); - if(system(command.c_str()) != 0) + printf("try to start server: %s %s\n","ether-wake", g_settings.network_nfs[dirNfsMountNr[number]].mac.c_str()); + if (my_system(2, "ether-wake", g_settings.network_nfs[dirNfsMountNr[number]].mac.c_str()) != 0) perror("ether-wake failed"); - dirOptionText[number]="STARTE SERVER"; + dirOptionText[number] = "STARTE SERVER"; } #ifdef ENABLE_GUI_MOUNT else if(dirState[number] == DIR_STATE_NOT_MOUNTED) { printf("[CDirMenu] try to mount %d,%d\n",number,dirNfsMountNr[number]); CFSMounter::MountRes res; - res = CFSMounter::mount( g_settings.network_nfs_ip[dirNfsMountNr[number]].c_str(), - g_settings.network_nfs_dir[dirNfsMountNr[number]] , - g_settings.network_nfs_local_dir[dirNfsMountNr[number]] , - (CFSMounter::FSType)g_settings.network_nfs_type[dirNfsMountNr[number]] , - g_settings.network_nfs_username[dirNfsMountNr[number]] , - g_settings.network_nfs_password[dirNfsMountNr[number]] , - g_settings.network_nfs_mount_options1[dirNfsMountNr[number]] , - g_settings.network_nfs_mount_options2[dirNfsMountNr[number]] ); + res = CFSMounter::mount (g_settings.network_nfs[dirNfsMountNr[number]].ip, + g_settings.network_nfs[dirNfsMountNr[number]].dir, + g_settings.network_nfs[dirNfsMountNr[number]].local_dir, + (CFSMounter::FSType)g_settings.network_nfs[dirNfsMountNr[number]].type, + g_settings.network_nfs[dirNfsMountNr[number]].username, + g_settings.network_nfs[dirNfsMountNr[number]].password, + g_settings.network_nfs[dirNfsMountNr[number]].mount_options1, + g_settings.network_nfs[dirNfsMountNr[number]].mount_options2 ); if(res == CFSMounter::MRES_OK) // if mount is successful we set the state to active in any case { *(*dirList)[number].used = true; @@ -3872,7 +3870,7 @@ void CDirMenu::updateDirState(void) // 1st ping server if(dirNfsMountNr[i] != -1) { - int retvalue = pingthost(g_settings.network_nfs_ip[dirNfsMountNr[i]].c_str(), 500); // get ping for 60ms - increased + int retvalue = pingthost(g_settings.network_nfs[dirNfsMountNr[i]].ip.c_str(), 500); // get ping for 60ms - increased if (retvalue == 0)//LOCALE_PING_UNREACHABLE { dirOptionText[i] = g_Locale->getText(LOCALE_RECDIRCHOOSER_SERVER_DOWN); @@ -3881,7 +3879,7 @@ void CDirMenu::updateDirState(void) #ifdef ENABLE_GUI_MOUNT else if (retvalue == 1)//LOCALE_PING_OK { - if(CFSMounter::isMounted (g_settings.network_nfs_local_dir[dirNfsMountNr[i]]) == 0) + if(CFSMounter::isMounted (g_settings.network_nfs[dirNfsMountNr[i]].local_dir)) { dirOptionText[i] = g_Locale->getText(LOCALE_RECDIRCHOOSER_NOT_MOUNTED); dirState[i] = DIR_STATE_NOT_MOUNTED; diff --git a/tuxbox/neutrino/src/gui/nfs.cpp b/tuxbox/neutrino/src/gui/nfs.cpp index 0f0cb61..be0c9c3 100644 --- a/tuxbox/neutrino/src/gui/nfs.cpp +++ b/tuxbox/neutrino/src/gui/nfs.cpp @@ -61,19 +61,26 @@ CNFSMountGui::CNFSMountGui() m_nfs_sup = CFSMounter::FS_UNPROBED; m_cifs_sup = CFSMounter::FS_UNPROBED; m_lufs_sup = CFSMounter::FS_UNPROBED; - m_smbfs_sup = CFSMounter::FS_UNPROBED; - } - -const char * nfs_entry_printf_string[4] = +std::string CNFSMountGui::getEntryString(int i) { - "NFS %s:%s -> %s auto: %4s", - "CIFS //%s/%s -> %s auto: %4s", - "FTPFS %s/%s -> %s auto: %4s", - "SMBFS //%s%s -> %s auto: %4s" -}; - + std::string res; + switch(g_settings.network_nfs[i].type) { + case CFSMounter::NFS: res = "NFS " + g_settings.network_nfs[i].ip + ":"; break; + case CFSMounter::CIFS: res = "CIFS //" + g_settings.network_nfs[i].ip + "/"; break; + case CFSMounter::LUFS: res = "FTPS " + g_settings.network_nfs[i].ip + "/"; break; + } + if (g_settings.network_nfs[i].dir.empty() || g_settings.network_nfs[i].local_dir.empty() || g_settings.network_nfs[i].ip.empty()) + return ""; + return res + + FILESYSTEM_ENCODING_TO_UTF8(g_settings.network_nfs[i].dir.c_str()) + + " -> " + + FILESYSTEM_ENCODING_TO_UTF8(g_settings.network_nfs[i].local_dir.c_str()) + + " (auto: " + + g_Locale->getText(g_settings.network_nfs[i].automount ? LOCALE_MESSAGEBOX_YES : LOCALE_MESSAGEBOX_NO) + + ")"; +} int CNFSMountGui::exec( CMenuTarget* parent, const std::string & actionKey ) { @@ -89,22 +96,14 @@ int CNFSMountGui::exec( CMenuTarget* parent, const std::string & actionKey ) if (m_lufs_sup == CFSMounter::FS_UNPROBED) m_lufs_sup = CFSMounter::fsSupported(CFSMounter::LUFS); - if (m_smbfs_sup == CFSMounter::FS_UNPROBED) - m_smbfs_sup = CFSMounter::fsSupported(CFSMounter::SMBFS); - - printf("SUPPORT: NFS: %d, CIFS: %d, LUFS: %d, SMBFS: %d\n", m_nfs_sup, m_cifs_sup, m_lufs_sup, m_smbfs_sup); + printf("SUPPORT: NFS: %d, CIFS: %d, LUFS: %d\n", m_nfs_sup, m_cifs_sup, m_lufs_sup); if (actionKey.empty()) { parent->hide(); for(int i=0 ; i < NETWORK_NFS_NR_OF_ENTRIES; i++) { - sprintf(m_entry[i], - nfs_entry_printf_string[(g_settings.network_nfs_type[i] == (int) CFSMounter::NFS) ? 0 : ((g_settings.network_nfs_type[i] == (int) CFSMounter::CIFS) ? 1 : ((g_settings.network_nfs_type[i] == (int) CFSMounter::SMBFS) ? 3 : 2))], - g_settings.network_nfs_ip[i].c_str(), - FILESYSTEM_ENCODING_TO_UTF8(g_settings.network_nfs_dir[i]), - FILESYSTEM_ENCODING_TO_UTF8(g_settings.network_nfs_local_dir[i]), - g_Locale->getText(g_settings.network_nfs_automount[i] ? LOCALE_MESSAGEBOX_YES : LOCALE_MESSAGEBOX_NO)); + m_entry[i] = getEntryString(i); } returnval = menu(); } @@ -114,23 +113,18 @@ int CNFSMountGui::exec( CMenuTarget* parent, const std::string & actionKey ) returnval = menuEntry(actionKey[10]-'0'); for(int i=0 ; i < NETWORK_NFS_NR_OF_ENTRIES; i++) { - sprintf(m_entry[i], - nfs_entry_printf_string[(g_settings.network_nfs_type[i] == (int) CFSMounter::NFS) ? 0 : ((g_settings.network_nfs_type[i] == (int) CFSMounter::CIFS) ? 1 : ((g_settings.network_nfs_type[i] == (int) CFSMounter::SMBFS) ? 3 : 2))], - g_settings.network_nfs_ip[i].c_str(), - FILESYSTEM_ENCODING_TO_UTF8(g_settings.network_nfs_dir[i]), - FILESYSTEM_ENCODING_TO_UTF8(g_settings.network_nfs_local_dir[i]), - g_Locale->getText(g_settings.network_nfs_automount[i] ? LOCALE_MESSAGEBOX_YES : LOCALE_MESSAGEBOX_NO)); - sprintf(ISO_8859_1_entry[i],ZapitTools::UTF8_to_Latin1(m_entry[i]).c_str()); + m_entry[i] = getEntryString(i); + ISO_8859_1_entry[i] = ZapitTools::UTF8_to_Latin1(m_entry[i].c_str()); } } else if(actionKey.substr(0,7)=="domount") { int nr=atoi(actionKey.substr(7,1).c_str()); CFSMounter::MountRes mres = CFSMounter::mount( - g_settings.network_nfs_ip[nr].c_str(), g_settings.network_nfs_dir[nr], - g_settings.network_nfs_local_dir[nr], (CFSMounter::FSType) g_settings.network_nfs_type[nr], - g_settings.network_nfs_username[nr], g_settings.network_nfs_password[nr], - g_settings.network_nfs_mount_options1[nr], g_settings.network_nfs_mount_options2[nr]); + g_settings.network_nfs[nr].ip, g_settings.network_nfs[nr].dir, + g_settings.network_nfs[nr].local_dir, (CFSMounter::FSType) g_settings.network_nfs[nr].type, + g_settings.network_nfs[nr].username, g_settings.network_nfs[nr].password, + g_settings.network_nfs[nr].mount_options1, g_settings.network_nfs[nr].mount_options2); if (mres == CFSMounter::MRES_OK || mres == CFSMounter::MRES_FS_ALREADY_MOUNTED) mountMenuEntry[nr]->iconName = NEUTRINO_ICON_MOUNTED; else @@ -145,8 +139,8 @@ int CNFSMountGui::exec( CMenuTarget* parent, const std::string & actionKey ) CFileBrowser b; b.Dir_Mode=true; - if (b.exec(g_settings.network_nfs_local_dir[nr])) - strcpy(g_settings.network_nfs_local_dir[nr], b.getSelectedFile()->Name.c_str()); + if (b.exec(g_settings.network_nfs[nr].local_dir.c_str())) + g_settings.network_nfs[nr].local_dir = b.getSelectedFile()->Name; returnval = menu_return::RETURN_REPAINT; } @@ -161,9 +155,9 @@ int CNFSMountGui::menu() for(int i=0 ; i < NETWORK_NFS_NR_OF_ENTRIES ; i++) { std::string s2 = "mountentry" + to_string(i); - sprintf(ISO_8859_1_entry[i],ZapitTools::UTF8_to_Latin1(m_entry[i]).c_str()); + ISO_8859_1_entry[i] = ZapitTools::UTF8_to_Latin1(m_entry[i].c_str()); mountMenuEntry[i] = new CMenuForwarder("", true, ISO_8859_1_entry[i], this, s2.c_str()); - if (CFSMounter::isMounted(g_settings.network_nfs_local_dir[i])) + if (CFSMounter::isMounted(g_settings.network_nfs[i].local_dir)) mountMenuEntry[i]->iconName = NEUTRINO_ICON_MOUNTED; else mountMenuEntry[i]->iconName = NEUTRINO_ICON_NOT_MOUNTED; @@ -185,78 +179,64 @@ const CMenuOptionChooser::keyval NFS_TYPE_OPTIONS[NFS_TYPE_OPTION_COUNT] = { { CFSMounter::NFS , LOCALE_NFS_TYPE_NFS }, { CFSMounter::CIFS, LOCALE_NFS_TYPE_CIFS }, - { CFSMounter::LUFS, LOCALE_NFS_TYPE_LUFS }, - { CFSMounter::SMBFS, LOCALE_NFS_TYPE_SMBFS } + { CFSMounter::LUFS, LOCALE_NFS_TYPE_LUFS } }; int CNFSMountGui::menuEntry(int nr) { - char *dir,*local_dir, *username, *password, *options1, *options2, *mac; - int* automount; - int* type; - std::string cmd = "domount" + to_string(nr); - std::string cmd2 = "dir" + to_string(nr); - - dir = g_settings.network_nfs_dir[nr]; - local_dir = g_settings.network_nfs_local_dir[nr]; - username = g_settings.network_nfs_username[nr]; - password = g_settings.network_nfs_password[nr]; - automount = &g_settings.network_nfs_automount[nr]; - type = &g_settings.network_nfs_type[nr]; - options1 = g_settings.network_nfs_mount_options1[nr]; - options2 = g_settings.network_nfs_mount_options2[nr]; - mac = g_settings.network_nfs_mac[nr]; - - /* rewrite fstype in new entries */ - if(strlen(local_dir)==0) - { - if(m_cifs_sup != CFSMounter::FS_UNSUPPORTED && m_nfs_sup == CFSMounter::FS_UNSUPPORTED && m_lufs_sup == CFSMounter::FS_UNSUPPORTED && m_smbfs_sup == CFSMounter::FS_UNSUPPORTED) - *type = (int) CFSMounter::CIFS; - - else if(m_lufs_sup != CFSMounter::FS_UNSUPPORTED && m_cifs_sup == CFSMounter::FS_UNSUPPORTED && m_nfs_sup == CFSMounter::FS_UNSUPPORTED && m_smbfs_sup == CFSMounter::FS_UNSUPPORTED) - *type = (int) CFSMounter::LUFS; - - else if(m_smbfs_sup != CFSMounter::FS_UNSUPPORTED && m_cifs_sup == CFSMounter::FS_UNSUPPORTED && m_nfs_sup == CFSMounter::FS_UNSUPPORTED && m_lufs_sup == CFSMounter::FS_UNSUPPORTED) - *type = (int) CFSMounter::SMBFS; - } - bool typeEnabled = (m_cifs_sup != CFSMounter::FS_UNSUPPORTED && m_nfs_sup != CFSMounter::FS_UNSUPPORTED && m_lufs_sup != CFSMounter::FS_UNSUPPORTED && m_smbfs_sup != CFSMounter::FS_UNSUPPORTED) || - (m_cifs_sup != CFSMounter::FS_UNSUPPORTED && *type != (int)CFSMounter::CIFS) || - (m_nfs_sup != CFSMounter::FS_UNSUPPORTED && *type != (int)CFSMounter::NFS) || - (m_lufs_sup != CFSMounter::FS_UNSUPPORTED && *type != (int)CFSMounter::LUFS) || - (m_smbfs_sup != CFSMounter::FS_UNSUPPORTED && *type != (int)CFSMounter::SMBFS); + /* rewrite fstype in new entries */ + if(g_settings.network_nfs[nr].local_dir.empty()) { + if(m_cifs_sup != CFSMounter::FS_UNSUPPORTED && m_nfs_sup == CFSMounter::FS_UNSUPPORTED && m_lufs_sup == CFSMounter::FS_UNSUPPORTED) + g_settings.network_nfs[nr].type = (int) CFSMounter::CIFS; + else if(m_lufs_sup != CFSMounter::FS_UNSUPPORTED && m_cifs_sup == CFSMounter::FS_UNSUPPORTED && m_nfs_sup == CFSMounter::FS_UNSUPPORTED) + g_settings.network_nfs[nr].type = (int) CFSMounter::LUFS; + } + bool typeEnabled = (m_cifs_sup != CFSMounter::FS_UNSUPPORTED && m_nfs_sup != CFSMounter::FS_UNSUPPORTED && m_lufs_sup != CFSMounter::FS_UNSUPPORTED) || + (m_cifs_sup != CFSMounter::FS_UNSUPPORTED && g_settings.network_nfs[nr].type != (int)CFSMounter::CIFS) || + (m_nfs_sup != CFSMounter::FS_UNSUPPORTED && g_settings.network_nfs[nr].type != (int)CFSMounter::NFS) || + (m_lufs_sup != CFSMounter::FS_UNSUPPORTED && g_settings.network_nfs[nr].type != (int)CFSMounter::LUFS); CMenuWidget mountMenuEntryW(LOCALE_NFS_MOUNT, NEUTRINO_ICON_STREAMING,720); mountMenuEntryW.addIntroItems(); - CIPInput ipInput(LOCALE_NFS_IP, g_settings.network_nfs_ip[nr]); - CStringInputSMS dirInput(LOCALE_NFS_DIR, dir, 30, NONEXISTANT_LOCALE, NONEXISTANT_LOCALE,"abcdefghijklmnopqrstuvwxyz0123456789-_.,:|!?/ "); - CMenuOptionChooser *automountInput= new CMenuOptionChooser(LOCALE_NFS_AUTOMOUNT, automount, MESSAGEBOX_NO_YES_OPTIONS, MESSAGEBOX_NO_YES_OPTION_COUNT, true); - CStringInputSMS options1Input(LOCALE_NFS_MOUNT_OPTIONS, options1, 30, NONEXISTANT_LOCALE, NONEXISTANT_LOCALE, "abcdefghijklmnopqrstuvwxyz0123456789-_=.,:|!?/ "); - CMenuForwarder *options1_fwd = new CMenuForwarder(LOCALE_NFS_MOUNT_OPTIONS, true, options1, &options1Input); - CStringInputSMS options2Input(LOCALE_NFS_MOUNT_OPTIONS, options2, 30, NONEXISTANT_LOCALE, NONEXISTANT_LOCALE, "abcdefghijklmnopqrstuvwxyz0123456789-_=.,:|!?/ "); - CMenuForwarder *options2_fwd = new CMenuForwarder(LOCALE_NFS_MOUNT_OPTIONS, true, options2, &options2Input); - CStringInputSMS userInput(LOCALE_NFS_USERNAME, username, 30, NONEXISTANT_LOCALE, NONEXISTANT_LOCALE, "abcdefghijklmnopqrstuvwxyz0123456789-_.,:|!?/ "); - CMenuForwarder *username_fwd = new CMenuForwarder(LOCALE_NFS_USERNAME, (*type != (int)CFSMounter::NFS), username, &userInput); - CStringInputSMS passInput(LOCALE_NFS_PASSWORD, password, 30, NONEXISTANT_LOCALE, NONEXISTANT_LOCALE, "abcdefghijklmnopqrstuvwxyz0123456789-_.,:|!?/ "); - CMenuForwarder *password_fwd = new CMenuForwarder(LOCALE_NFS_PASSWORD, (*type != (int)CFSMounter::NFS), NULL, &passInput); - CMACInput macInput(LOCALE_RECORDINGMENU_SERVER_MAC, g_settings.network_nfs_mac[nr]); - CMenuForwarder * macInput_fwd = new CMenuForwarder(LOCALE_RECORDINGMENU_SERVER_MAC, true, g_settings.network_nfs_mac[nr], &macInput); - CMenuForwarder *mountnow_fwd = new CMenuForwarder(LOCALE_NFS_MOUNTNOW, !(CFSMounter::isMounted(g_settings.network_nfs_local_dir[nr])), NULL, this, cmd.c_str()); + + CIPInput ipInput(LOCALE_NFS_IP, g_settings.network_nfs[nr].ip); + CStringInputSMS dirInput(LOCALE_NFS_DIR, &g_settings.network_nfs[nr].dir, 30, false, NONEXISTANT_LOCALE, NONEXISTANT_LOCALE,"abcdefghijklmnopqrstuvwxyz0123456789-_.,:|!?/ "); + + CMenuOptionChooser *automountInput= new CMenuOptionChooser(LOCALE_NFS_AUTOMOUNT, &g_settings.network_nfs[nr].automount, MESSAGEBOX_NO_YES_OPTIONS, MESSAGEBOX_NO_YES_OPTION_COUNT, true); + + CStringInputSMS options1Input(LOCALE_NFS_MOUNT_OPTIONS, &g_settings.network_nfs[nr].mount_options1, 30, false, NONEXISTANT_LOCALE, NONEXISTANT_LOCALE, "abcdefghijklmnopqrstuvwxyz0123456789-_=.,:|!?/ "); + CMenuForwarder *options1_fwd = new CMenuForwarder(LOCALE_NFS_MOUNT_OPTIONS, true, g_settings.network_nfs[nr].mount_options1, &options1Input); + + CStringInputSMS options2Input(LOCALE_NFS_MOUNT_OPTIONS, &g_settings.network_nfs[nr].mount_options2, 30, false, NONEXISTANT_LOCALE, NONEXISTANT_LOCALE, "abcdefghijklmnopqrstuvwxyz0123456789-_=.,:|!?/ "); + CMenuForwarder *options2_fwd = new CMenuForwarder(LOCALE_NFS_MOUNT_OPTIONS, true, g_settings.network_nfs[nr].mount_options2, &options2Input); + + CStringInputSMS userInput(LOCALE_NFS_USERNAME, &g_settings.network_nfs[nr].username, 30, false, NONEXISTANT_LOCALE, NONEXISTANT_LOCALE, "abcdefghijklmnopqrstuvwxyz0123456789-_.,:|!?/ "); + CMenuForwarder *username_fwd = new CMenuForwarder(LOCALE_NFS_USERNAME, (g_settings.network_nfs[nr].type != (int)CFSMounter::NFS), NULL, &userInput); + + CStringInputSMS passInput(LOCALE_NFS_PASSWORD, &g_settings.network_nfs[nr].password, 30, false, NONEXISTANT_LOCALE, NONEXISTANT_LOCALE, "abcdefghijklmnopqrstuvwxyz0123456789-_.,:|!?/ "); + CMenuForwarder *password_fwd = new CMenuForwarder(LOCALE_NFS_PASSWORD, (g_settings.network_nfs[nr].type != (int)CFSMounter::NFS), NULL, &passInput); + + CMACInput macInput(LOCALE_RECORDINGMENU_SERVER_MAC, g_settings.network_nfs[nr].mac); + CMenuForwarder * macInput_fwd = new CMenuForwarder(LOCALE_RECORDINGMENU_SERVER_MAC, true, g_settings.network_nfs[nr].mac, &macInput); + + CMenuForwarder *mountnow_fwd = new CMenuForwarder(LOCALE_NFS_MOUNTNOW, !(CFSMounter::isMounted(g_settings.network_nfs[nr].local_dir)), NULL, this, ("domount" + to_string(nr)).c_str(), CRCInput::RC_red); mountnow_fwd->setItemButton(NEUTRINO_ICON_BUTTON_OKAY, true); COnOffNotifier notifier(CFSMounter::NFS); notifier.addItem(username_fwd); notifier.addItem(password_fwd); - mountMenuEntryW.addItem(new CMenuOptionChooser(LOCALE_NFS_TYPE, type, NFS_TYPE_OPTIONS, NFS_TYPE_OPTION_COUNT, typeEnabled, ¬ifier)); - mountMenuEntryW.addItem(new CMenuForwarder(LOCALE_NFS_IP , true, g_settings.network_nfs_ip[nr], &ipInput )); - mountMenuEntryW.addItem(new CMenuForwarder(LOCALE_NFS_DIR , true, dir , &dirInput )); - mountMenuEntryW.addItem(new CMenuForwarder(LOCALE_NFS_LOCALDIR, true, local_dir , this , cmd2.c_str())); + mountMenuEntryW.addItem(new CMenuOptionChooser(LOCALE_NFS_TYPE, &g_settings.network_nfs[nr].type, NFS_TYPE_OPTIONS, NFS_TYPE_OPTION_COUNT, typeEnabled, ¬ifier )); + mountMenuEntryW.addItem(new CMenuForwarder(LOCALE_NFS_IP , true, g_settings.network_nfs[nr].ip, &ipInput )); + mountMenuEntryW.addItem(new CMenuForwarder(LOCALE_NFS_DIR , true, g_settings.network_nfs[nr].dir, &dirInput )); + mountMenuEntryW.addItem(new CMenuForwarder(LOCALE_NFS_LOCALDIR, true, g_settings.network_nfs[nr].local_dir, this, ("dir" + to_string(nr)).c_str() )); mountMenuEntryW.addItem(automountInput); mountMenuEntryW.addItem(options1_fwd); mountMenuEntryW.addItem(options2_fwd); mountMenuEntryW.addItem(username_fwd); mountMenuEntryW.addItem(password_fwd); mountMenuEntryW.addItem(macInput_fwd); + mountMenuEntryW.addItem(GenericMenuSeparatorLine); mountMenuEntryW.addItem(mountnow_fwd); int ret = mountMenuEntryW.exec(this,""); @@ -293,7 +273,7 @@ int CNFSUmountGui::menu() for (CFSMounter::MountInfos::const_iterator it = infos.begin(); it != infos.end(); ++it) { - if(it->type == "nfs" || it->type == "cifs" || it->type == "lufs" || it->type == "smbfs") + if(it->type == "nfs" || it->type == "cifs" || it->type == "lufs") { count++; std::string s1 = it->device; @@ -334,8 +314,8 @@ int CNFSSmallMenu::exec( CMenuTarget* parent, const std::string & actionKey ) //umount automount dirs for(int i = 0; i < NETWORK_NFS_NR_OF_ENTRIES; i++) { - if(g_settings.network_nfs_automount[i]) - umount2(g_settings.network_nfs_local_dir[i],MNT_FORCE); + if(g_settings.network_nfs[i].automount) + umount2(g_settings.network_nfs[i].local_dir.c_str(), MNT_FORCE); } CFSMounter::automount(); return menu_return::RETURN_REPAINT; diff --git a/tuxbox/neutrino/src/gui/nfs.h b/tuxbox/neutrino/src/gui/nfs.h index ea2c343..d8e0ddb 100644 --- a/tuxbox/neutrino/src/gui/nfs.h +++ b/tuxbox/neutrino/src/gui/nfs.h @@ -45,15 +45,16 @@ class CNFSMountGui : public CMenuTarget int menu(); int menuEntry(int nr); - char m_entry[NETWORK_NFS_NR_OF_ENTRIES][200]; - char ISO_8859_1_entry[NETWORK_NFS_NR_OF_ENTRIES][200]; + std::string m_entry[NETWORK_NFS_NR_OF_ENTRIES]; + std::string ISO_8859_1_entry[NETWORK_NFS_NR_OF_ENTRIES]; + + std::string getEntryString(int i); CMenuForwarder* mountMenuEntry[NETWORK_NFS_NR_OF_ENTRIES]; CFSMounter::FS_Support m_nfs_sup; CFSMounter::FS_Support m_cifs_sup; CFSMounter::FS_Support m_lufs_sup; - CFSMounter::FS_Support m_smbfs_sup; public: CNFSMountGui(); diff --git a/tuxbox/neutrino/src/gui/widget/dirchooser.cpp b/tuxbox/neutrino/src/gui/widget/dirchooser.cpp index 8582903..683cac1 100755 --- a/tuxbox/neutrino/src/gui/widget/dirchooser.cpp +++ b/tuxbox/neutrino/src/gui/widget/dirchooser.cpp @@ -166,7 +166,7 @@ void CRecDirChooser::initMenu(void) //printf("dir %d = nfs: %d\n",i,nfsIndex[i]); if( nfsIndex[i] != -1) { - int retvalue = pingthost(g_settings.network_nfs_ip[nfsIndex[i]].c_str(),60); // send ping and wait 60ms + int retvalue = pingthost(g_settings.network_nfs[nfsIndex[i]].ip.c_str(),60); // send ping and wait 60ms if (retvalue == 0)//LOCALE_PING_UNREACHABLE { dirOptionText[i] = g_Locale->getText(LOCALE_RECDIRCHOOSER_SERVER_DOWN); @@ -176,7 +176,7 @@ void CRecDirChooser::initMenu(void) else if (retvalue == 1)//LOCALE_PING_OK { // check if we can get more dir informations - if( CFSMounter::isMounted (g_settings.network_nfs_local_dir[nfsIndex[i]]) == 0) + if (CFSMounter::isMounted (g_settings.network_nfs[nfsIndex[i]].local_dir)) { dirOptionText[i] = g_Locale->getText(LOCALE_RECDIRCHOOSER_NOT_MOUNTED); get_size = false; @@ -288,8 +288,8 @@ int getNFSIDOfDir(const char * dir) bool loop = true; for (int i = 0; i < NETWORK_NFS_NR_OF_ENTRIES && loop; i++) { - if (g_settings.network_nfs_local_dir[i][0] != 0 && - strstr(dir,g_settings.network_nfs_local_dir[i]) == dir) + if (g_settings.network_nfs[i].local_dir[0] != 0 && + g_settings.network_nfs[i].local_dir == dir) { result = i; loop = false; @@ -330,7 +330,7 @@ int getFirstFreeRecDirNr(int min_free_gb) if( nfs_id != -1 ) { printf("NFS%d", nfs_id); - int retvalue = pingthost(g_settings.network_nfs_ip[nfs_id].c_str(),60); // ping for 60 ms + int retvalue = pingthost(g_settings.network_nfs[nfs_id].ip.c_str(), 60); // ping for 60 ms if (retvalue == 0) //LOCALE_PING_UNREACHABLE { printf(",Server down "); @@ -338,16 +338,16 @@ int getFirstFreeRecDirNr(int min_free_gb) #ifdef ENABLE_GUI_MOUNT else if (retvalue == 1) //LOCALE_PING_OK { - if(CFSMounter::isMounted (g_settings.network_nfs_local_dir[nfs_id]) == 0) + if (CFSMounter::isMounted (g_settings.network_nfs[nfs_id].local_dir)) { - CFSMounter::MountRes mres = CFSMounter::mount(g_settings.network_nfs_ip[nfs_id].c_str(), - g_settings.network_nfs_dir[nfs_id], - g_settings.network_nfs_local_dir[nfs_id], - (CFSMounter::FSType) g_settings.network_nfs_type[nfs_id], - g_settings.network_nfs_username[nfs_id], - g_settings.network_nfs_password[nfs_id], - g_settings.network_nfs_mount_options1[nfs_id], - g_settings.network_nfs_mount_options2[nfs_id]); + CFSMounter::MountRes mres = CFSMounter::mount(g_settings.network_nfs[nfs_id].ip, + g_settings.network_nfs[nfs_id].dir, + g_settings.network_nfs[nfs_id].local_dir, + (CFSMounter::FSType) g_settings.network_nfs[nfs_id].type, + g_settings.network_nfs[nfs_id].username, + g_settings.network_nfs[nfs_id].password, + g_settings.network_nfs[nfs_id].mount_options1, + g_settings.network_nfs[nfs_id].mount_options2 ); if (mres != CFSMounter::MRES_OK) { printf(",mount failed"); diff --git a/tuxbox/neutrino/src/gui/widget/mountchooser.cpp b/tuxbox/neutrino/src/gui/widget/mountchooser.cpp index deb9c87..1f29061 100644 --- a/tuxbox/neutrino/src/gui/widget/mountchooser.cpp +++ b/tuxbox/neutrino/src/gui/widget/mountchooser.cpp @@ -48,21 +48,20 @@ CMountChooser::CMountChooser(const neutrino_locale_t Name, const std::string & I char indexStr[2]; for(int i=0 ; i < NETWORK_NFS_NR_OF_ENTRIES ; i++) { - if (g_settings.network_nfs_local_dir[i] != NULL && - strcmp(g_settings.network_nfs_local_dir[i],"") != 0 && - (strstr(g_settings.network_nfs_mount_options1[i],"rw") != NULL || - strstr(g_settings.network_nfs_mount_options2[i],"rw") != NULL)) + if (!g_settings.network_nfs[i].local_dir.empty() && + (g_settings.network_nfs[i].mount_options1.find("rw") != string::npos || + g_settings.network_nfs[i].mount_options2.find("rw") != string::npos)) { - std::string s(g_settings.network_nfs_local_dir[i]); + std::string s(g_settings.network_nfs[i].local_dir); s += " ("; - s += g_settings.network_nfs_ip[i]; + s += g_settings.network_nfs[i].ip; s += ":"; - s += g_settings.network_nfs_dir[i]; + s += g_settings.network_nfs[i].dir; s +=")"; snprintf(indexStr,2,"%d",i); CMenuForwarder* fw = new CMenuForwarder(s.c_str(), true, NULL, this, (std::string("MID:") + std::string(indexStr)).c_str()); fw->setItemButton(NEUTRINO_ICON_BUTTON_OKAY, true); - addItem(fw, (strcmp(selectedLocalDir, g_settings.network_nfs_local_dir[i]) == 0)); + addItem(fw, selectedLocalDir == g_settings.network_nfs[i].local_dir); } } } @@ -80,8 +79,9 @@ int CMountChooser::exec(CMenuTarget* parent, const std::string & actionKey) { if (index) *index = mount_id; - if (localDir) - strcpy(localDir,g_settings.network_nfs_local_dir[mount_id]); + + if (localDir.empty()) // ??? + localDir = g_settings.network_nfs[mount_id].local_dir; } hide(); return menu_return::RETURN_EXIT; diff --git a/tuxbox/neutrino/src/gui/widget/mountchooser.h b/tuxbox/neutrino/src/gui/widget/mountchooser.h index da7a030..d22dd07 100644 --- a/tuxbox/neutrino/src/gui/widget/mountchooser.h +++ b/tuxbox/neutrino/src/gui/widget/mountchooser.h @@ -52,7 +52,7 @@ class CMountChooser : public CMenuWidget { private: int * index; - char * localDir; + std::string localDir; public: diff --git a/tuxbox/neutrino/src/gui/widget/stringinput_ext.cpp b/tuxbox/neutrino/src/gui/widget/stringinput_ext.cpp index 74c6bdc..7db7e6b 100644 --- a/tuxbox/neutrino/src/gui/widget/stringinput_ext.cpp +++ b/tuxbox/neutrino/src/gui/widget/stringinput_ext.cpp @@ -537,40 +537,41 @@ void CDateInput::onAfterExec() } //-----------------------------#################################------------------------------------------------------- -CMACInput::CMACInput(const neutrino_locale_t Name, char* Value, const neutrino_locale_t Hint_1, const neutrino_locale_t Hint_2, CChangeObserver* Observ) - : CExtendedInput(Name, Value, Hint_1, Hint_2, Observ) +CMACInput::CMACInput(const neutrino_locale_t Name, std::string & Value, const neutrino_locale_t Hint_1, const neutrino_locale_t Hint_2, CChangeObserver* Observ) + : CExtendedInput(Name, MAC, Hint_1, Hint_2, Observ) { - addInputField( new CExtendedInput_Item_Char("0123456789ABCDEF") ); - addInputField( new CExtendedInput_Item_Char("0123456789ABCDEF") ); + mac = &Value; + addInputField( new CExtendedInput_Item_Char("0123456789abcdef") ); + addInputField( new CExtendedInput_Item_Char("0123456789abcdef") ); addInputField( new CExtendedInput_Item_Spacer(20) ); - addInputField( new CExtendedInput_Item_Char("0123456789ABCDEF") ); - addInputField( new CExtendedInput_Item_Char("0123456789ABCDEF") ); + addInputField( new CExtendedInput_Item_Char("0123456789abcdef") ); + addInputField( new CExtendedInput_Item_Char("0123456789abcdef") ); addInputField( new CExtendedInput_Item_Spacer(20) ); - addInputField( new CExtendedInput_Item_Char("0123456789ABCDEF") ); - addInputField( new CExtendedInput_Item_Char("0123456789ABCDEF") ); + addInputField( new CExtendedInput_Item_Char("0123456789abcdef") ); + addInputField( new CExtendedInput_Item_Char("0123456789abcdef") ); addInputField( new CExtendedInput_Item_Spacer(20) ); - addInputField( new CExtendedInput_Item_Char("0123456789ABCDEF") ); - addInputField( new CExtendedInput_Item_Char("0123456789ABCDEF") ); + addInputField( new CExtendedInput_Item_Char("0123456789abcdef") ); + addInputField( new CExtendedInput_Item_Char("0123456789abcdef") ); addInputField( new CExtendedInput_Item_Spacer(20) ); - addInputField( new CExtendedInput_Item_Char("0123456789ABCDEF") ); - addInputField( new CExtendedInput_Item_Char("0123456789ABCDEF") ); + addInputField( new CExtendedInput_Item_Char("0123456789abcdef") ); + addInputField( new CExtendedInput_Item_Char("0123456789abcdef") ); addInputField( new CExtendedInput_Item_Spacer(20) ); - addInputField( new CExtendedInput_Item_Char("0123456789ABCDEF") ); - addInputField( new CExtendedInput_Item_Char("0123456789ABCDEF") ); + addInputField( new CExtendedInput_Item_Char("0123456789abcdef") ); + addInputField( new CExtendedInput_Item_Char("0123456789abcdef") ); addInputField( new CExtendedInput_Item_newLiner(30) ); calculateDialog(); } void CMACInput::onBeforeExec() { - if (value[0] == 0) /* strcmp(value, "") == 0 */ + if (mac->empty()) { strcpy(value, "00:00:00:00:00:00"); //printf("[neutrino] value-before(2): %s\n", value); return; } int _mac[6]; - sscanf( value, "%x:%x:%x:%x:%x:%x", &_mac[0], &_mac[1], &_mac[2], &_mac[3], &_mac[4], &_mac[5] ); + sscanf( mac->c_str(), "%x:%x:%x:%x:%x:%x", &_mac[0], &_mac[1], &_mac[2], &_mac[3], &_mac[4], &_mac[5] ); snprintf(value, 20, "%02x:%02x:%02x:%02x:%02x:%02x", _mac[0], _mac[1], _mac[2], _mac[3], _mac[4], _mac[5]); } @@ -580,7 +581,11 @@ void CMACInput::onAfterExec() sscanf( value, "%x:%x:%x:%x:%x:%x", &_mac[0], &_mac[1], &_mac[2], &_mac[3], &_mac[4], &_mac[5] ); snprintf(value, 20, "%02x:%02x:%02x:%02x:%02x:%02x", _mac[0], _mac[1], _mac[2], _mac[3], _mac[4], _mac[5]); if(strcmp(value,"00:00:00:00:00:00")==0) - value[0] = 0; /* strcpy(value, ""); */ + { + (*mac) = ""; + } + else + (*mac) = value; } //-----------------------------#################################------------------------------------------------------- diff --git a/tuxbox/neutrino/src/gui/widget/stringinput_ext.h b/tuxbox/neutrino/src/gui/widget/stringinput_ext.h index 5d281d3..d280dcb 100644 --- a/tuxbox/neutrino/src/gui/widget/stringinput_ext.h +++ b/tuxbox/neutrino/src/gui/widget/stringinput_ext.h @@ -181,12 +181,15 @@ class CDateInput : public CExtendedInput class CMACInput : public CExtendedInput { + char MAC[32]; + std::string * mac; + protected: virtual void onBeforeExec(); virtual void onAfterExec(); public: - CMACInput(const neutrino_locale_t Name, char* Value, const neutrino_locale_t Hint_1 = LOCALE_IPSETUP_HINT_1, const neutrino_locale_t Hint_2 = LOCALE_IPSETUP_HINT_2, CChangeObserver* Observ = NULL); + CMACInput(const neutrino_locale_t Name, std::string & Value, const neutrino_locale_t Hint_1 = LOCALE_IPSETUP_HINT_1, const neutrino_locale_t Hint_2 = LOCALE_IPSETUP_HINT_2, CChangeObserver* Observ = NULL); }; //---------------------------------------------------------------------------------------------------- diff --git a/tuxbox/neutrino/src/neutrino.cpp b/tuxbox/neutrino/src/neutrino.cpp index 852fb75..451a06e 100644 --- a/tuxbox/neutrino/src/neutrino.cpp +++ b/tuxbox/neutrino/src/neutrino.cpp @@ -450,16 +450,16 @@ int CNeutrinoApp::loadSetup() for(int i=0 ; i < NETWORK_NFS_NR_OF_ENTRIES ; i++) { std::string i_str(to_string(i)); - g_settings.network_nfs_ip[i] = configfile.getString("network_nfs_ip_" + i_str, ""); - strcpy( g_settings.network_nfs_dir[i] , configfile.getString("network_nfs_dir_" + i_str, "").c_str() ); - strcpy( g_settings.network_nfs_local_dir[i] , configfile.getString("network_nfs_local_dir_" + i_str, "").c_str() ); - g_settings.network_nfs_automount[i] = configfile.getInt32 ("network_nfs_automount_" + i_str, 0); - g_settings.network_nfs_type[i] = configfile.getInt32 ("network_nfs_type_" + i_str, 0); - strcpy( g_settings.network_nfs_username[i] , configfile.getString("network_nfs_username_" + i_str, "").c_str() ); - strcpy( g_settings.network_nfs_password[i] , configfile.getString("network_nfs_password_" + i_str, "").c_str() ); - strcpy( g_settings.network_nfs_mount_options1[i], configfile.getString("network_nfs_mount_options1_" + i_str, "ro,soft,udp" ).c_str() ); - strcpy( g_settings.network_nfs_mount_options2[i], configfile.getString("network_nfs_mount_options2_" + i_str, "nolock,rsize=8192,wsize=8192" ).c_str() ); - strcpy( g_settings.network_nfs_mac[i] , configfile.getString("network_nfs_mac" + i_str, "11:22:33:44:55:66").c_str() ); + g_settings.network_nfs[i].ip = configfile.getString("network_nfs_ip_" + i_str, ""); + g_settings.network_nfs[i].dir = configfile.getString("network_nfs_dir_" + i_str, ""); + g_settings.network_nfs[i].local_dir = configfile.getString("network_nfs_local_dir_" + i_str, ""); + g_settings.network_nfs[i].automount = configfile.getInt32 ("network_nfs_automount_" + i_str, 0); + g_settings.network_nfs[i].type = configfile.getInt32 ("network_nfs_type_" + i_str, 0); + g_settings.network_nfs[i].username = configfile.getString("network_nfs_username_" + i_str, ""); + g_settings.network_nfs[i].password = configfile.getString("network_nfs_password_" + i_str, ""); + g_settings.network_nfs[i].mount_options1 = configfile.getString("network_nfs_mount_options1_" + i_str, "ro,soft,udp" ); + g_settings.network_nfs[i].mount_options2 = configfile.getString("network_nfs_mount_options2_" + i_str, "nolock,rsize=8192,wsize=8192" ); + g_settings.network_nfs[i].mac = configfile.getString("network_nfs_mac" + i_str, "11:22:33:44:55:66"); } g_settings.filesystem_is_utf8 = configfile.getBool("filesystem_is_utf8" , true ); @@ -542,7 +542,7 @@ int CNeutrinoApp::loadSetup() g_settings.recording_server_ip = configfile.getString("recording_server_ip", "10.10.10.10"); strcpy( g_settings.recording_server_port, configfile.getString( "recording_server_port", "4000").c_str() ); g_settings.recording_server_wakeup = configfile.getInt32( "recording_server_wakeup", 0 ); - strcpy( g_settings.recording_server_mac, configfile.getString( "recording_server_mac", "11:22:33:44:55:66").c_str() ); + g_settings.recording_server_mac = configfile.getString("recording_server_mac", "11:22:33:44:55:66"); g_settings.recording_vcr_no_scart = configfile.getInt32( "recording_vcr_no_scart", false); g_settings.recording_max_rectime = configfile.getInt32( "recording_max_rectime", 4 ); strcpy( g_settings.recording_splitsize_default, configfile.getString( "recording_splitsize_default", "2048").c_str() ); @@ -981,16 +981,16 @@ void CNeutrinoApp::saveSetup() for(int i=0 ; i < NETWORK_NFS_NR_OF_ENTRIES ; i++) { std::string i_str(to_string(i)); - configfile.setString("network_nfs_ip_" + i_str , g_settings.network_nfs_ip[i] ); - configfile.setString("network_nfs_dir_" + i_str , g_settings.network_nfs_dir[i] ); - configfile.setString("network_nfs_local_dir_" + i_str , g_settings.network_nfs_local_dir[i] ); - configfile.setInt32 ("network_nfs_automount_" + i_str , g_settings.network_nfs_automount[i]); - configfile.setInt32 ("network_nfs_type_" + i_str , g_settings.network_nfs_type[i]); - configfile.setString("network_nfs_username_" + i_str , g_settings.network_nfs_username[i] ); - configfile.setString("network_nfs_password_" + i_str , g_settings.network_nfs_password[i] ); - configfile.setString("network_nfs_mount_options1_" + i_str, g_settings.network_nfs_mount_options1[i]); - configfile.setString("network_nfs_mount_options2_" + i_str, g_settings.network_nfs_mount_options2[i]); - configfile.setString("network_nfs_mac_" + i_str , g_settings.network_nfs_mac[i]); + configfile.setString("network_nfs_ip_" + i_str , g_settings.network_nfs[i].ip ); + configfile.setString("network_nfs_dir_" + i_str , g_settings.network_nfs[i].dir ); + configfile.setString("network_nfs_local_dir_" + i_str , g_settings.network_nfs[i].local_dir ); + configfile.setInt32 ("network_nfs_automount_" + i_str , g_settings.network_nfs[i].automount ); + configfile.setInt32 ("network_nfs_type_" + i_str , g_settings.network_nfs[i].type ); + configfile.setString("network_nfs_username_" + i_str , g_settings.network_nfs[i].username ); + configfile.setString("network_nfs_password_" + i_str , g_settings.network_nfs[i].password ); + configfile.setString("network_nfs_mount_options1_" + i_str, g_settings.network_nfs[i].mount_options1 ); + configfile.setString("network_nfs_mount_options2_" + i_str, g_settings.network_nfs[i].mount_options2 ); + configfile.setString("network_nfs_mac_" + i_str , g_settings.network_nfs[i].mac ); } configfile.setBool ( "filesystem_is_utf8" , g_settings.filesystem_is_utf8); #ifdef ENABLE_SAMBASERVER @@ -1752,24 +1752,24 @@ bool CNeutrinoApp::doGuiRecord(char * preselectedDir, bool addTimer, char * file int nfs_nr = getNFSIDOfDir(recDir.c_str()); if(nfs_nr != -1) { - recDir = g_settings.network_nfs_local_dir[nfs_nr]; + recDir = g_settings.network_nfs[nfs_nr].local_dir; #ifdef ENABLE_GUI_MOUNT - if (!CFSMounter::isMounted(g_settings.network_nfs_local_dir[nfs_nr])) + if (!CFSMounter::isMounted(g_settings.network_nfs[nfs_nr].local_dir)) { printf("not mounted, try to mount: %d\n",nfs_nr); CFSMounter::MountRes mres = - CFSMounter::mount(g_settings.network_nfs_ip[nfs_nr].c_str(), - g_settings.network_nfs_dir[nfs_nr], - g_settings.network_nfs_local_dir[nfs_nr], - (CFSMounter::FSType) g_settings.network_nfs_type[nfs_nr], - g_settings.network_nfs_username[nfs_nr], - g_settings.network_nfs_password[nfs_nr], - g_settings.network_nfs_mount_options1[nfs_nr], - g_settings.network_nfs_mount_options2[nfs_nr]); + CFSMounter::mount(g_settings.network_nfs[nfs_nr].ip, + g_settings.network_nfs[nfs_nr].dir, + g_settings.network_nfs[nfs_nr].local_dir, + (CFSMounter::FSType) g_settings.network_nfs[nfs_nr].type, + g_settings.network_nfs[nfs_nr].username, + g_settings.network_nfs[nfs_nr].password, + g_settings.network_nfs[nfs_nr].mount_options1, + g_settings.network_nfs[nfs_nr].mount_options2); if (mres != CFSMounter::MRES_OK) { doRecord = false; - std::string msg = mntRes2Str(mres) + "\nDir: " + g_settings.network_nfs_local_dir[nfs_nr]; + std::string msg = mntRes2Str(mres) + "\nDir: " + g_settings.network_nfs[nfs_nr].local_dir; ShowMsgUTF(LOCALE_MESSAGEBOX_ERROR, msg.c_str(), CMessageBox::mbrBack, CMessageBox::mbBack,NEUTRINO_ICON_ERROR, 450, 10); // UTF-8 } @@ -2969,7 +2969,8 @@ int CNeutrinoApp::handleMsg(const neutrino_msg_t m, neutrino_msg_data_t data) if( g_settings.recording_server_wakeup ) { - if (my_system(2, "ether-wake", g_settings.recording_server_mac) != 0) + printf("[neutrino] waking up %s (rec-server)\n", g_settings.recording_server_mac.c_str()); + if (my_system(2, "ether-wake", g_settings.recording_server_mac.c_str()) != 0) perror("ether-wake failed"); } if (g_settings.recording_type == RECORDING_FILE) @@ -2977,10 +2978,10 @@ int CNeutrinoApp::handleMsg(const neutrino_msg_t m, neutrino_msg_data_t data) char * recDir = eventinfo->recordingDir; for (int i=0 ; i < NETWORK_NFS_NR_OF_ENTRIES ; i++) { - if (strcmp(g_settings.network_nfs_local_dir[i],recDir) == 0) + if (g_settings.network_nfs[i].local_dir == recDir) { - printf("[neutrino] waking up %s (%s)\n",g_settings.network_nfs_ip[i].c_str(),recDir); - if (my_system(2, "ether-wake", g_settings.network_nfs_mac[i]) != 0) + printf("[neutrino] waking up %s (%s)\n", g_settings.network_nfs[i].ip.c_str(), recDir); + if (my_system(2, "ether-wake", g_settings.network_nfs[i].mac.c_str()) != 0) perror("ether-wake failed"); break; } @@ -3897,13 +3898,13 @@ void CNeutrinoApp::startNextRecording() printf("[neutrino.cpp] trying to mount %s\n",recDir); for(int i=0 ; i < NETWORK_NFS_NR_OF_ENTRIES ; i++) { - if (strcmp(g_settings.network_nfs_local_dir[i],recDir) == 0) + if (g_settings.network_nfs[i].local_dir == recDir) { CFSMounter::MountRes mres = - CFSMounter::mount(g_settings.network_nfs_ip[i].c_str(), g_settings.network_nfs_dir[i], - g_settings.network_nfs_local_dir[i], (CFSMounter::FSType) g_settings.network_nfs_type[i], - g_settings.network_nfs_username[i], g_settings.network_nfs_password[i], - g_settings.network_nfs_mount_options1[i], g_settings.network_nfs_mount_options2[i]); + CFSMounter::mount(g_settings.network_nfs[i].ip, g_settings.network_nfs[i].dir, + g_settings.network_nfs[i].local_dir, (CFSMounter::FSType) g_settings.network_nfs[i].type, + g_settings.network_nfs[i].username, g_settings.network_nfs[i].password, + g_settings.network_nfs[i].mount_options1, g_settings.network_nfs[i].mount_options2); if (mres == CFSMounter::MRES_OK) { printf("[neutrino.cpp] mount successful\n"); diff --git a/tuxbox/neutrino/src/system/fsmounter.cpp b/tuxbox/neutrino/src/system/fsmounter.cpp index 334d492..c612e02 100644 --- a/tuxbox/neutrino/src/system/fsmounter.cpp +++ b/tuxbox/neutrino/src/system/fsmounter.cpp @@ -104,8 +104,6 @@ bool insert_modules(const CFSMounter::FSType fstype) return (system("insmod cifs") == 0); else if (fstype == CFSMounter::LUFS) return (system("insmod lufs") == 0); - else if (fstype == CFSMounter::SMBFS) - return (system("insmod smbfs") == 0); return false; } @@ -121,8 +119,6 @@ bool remove_modules(const CFSMounter::FSType fstype) return (system("rmmod cifs") == 0); else if (fstype == CFSMounter::LUFS) return (system("rmmod lufs") == 0); - else if (fstype == CFSMounter::SMBFS) - return (system("rmmod smbfs") == 0); return false; } @@ -136,8 +132,6 @@ CFSMounter::FS_Support CFSMounter::fsSupported(const CFSMounter::FSType fstype, fsname = "cifs"; else if (fstype == CFSMounter::LUFS) fsname = "lufs"; - else if (fstype == CFSMounter::SMBFS) - fsname = "smbfs"; if (in_proc_filesystems(fsname)) return CFSMounter::FS_READY; @@ -163,10 +157,10 @@ CFSMounter::FS_Support CFSMounter::fsSupported(const CFSMounter::FSType fstype, return CFSMounter::FS_UNSUPPORTED; } -bool CFSMounter::isMounted(const char * const local_dir) +bool CFSMounter::isMounted(const std::string &local_dir) { std::ifstream in; - if (local_dir == NULL) + if (local_dir.empty()) return false; #ifdef PATH_MAX @@ -174,8 +168,8 @@ bool CFSMounter::isMounted(const char * const local_dir) #else char mount_point[4096]; #endif - if (realpath(local_dir, mount_point) == NULL) { - printf("[CFSMounter] could not resolve dir: %s: %s\n",local_dir, strerror(errno)); + if (realpath(local_dir.c_str(), mount_point) == NULL) { + printf("[CFSMounter] could not resolve dir: %s: %s\n", local_dir.c_str(), strerror(errno)); return false; } in.open("/proc/mounts", std::ifstream::in); @@ -192,11 +186,11 @@ bool CFSMounter::isMounted(const char * const local_dir) return false; } -CFSMounter::MountRes CFSMounter::mount(const char * const ip, const char * const dir, const char * const local_dir, - const FSType fstype, const char * const username, const char * const password, - char * options1, char * options2) +CFSMounter::MountRes CFSMounter::mount(const std::string &ip, const std::string &dir, const std::string &local_dir, + const FSType fstype, const std::string &username, const std::string &password, + std::string options1, std::string options2) { - std::stringstream cmd; + std::string cmd; pthread_mutex_init(&g_mut, NULL); pthread_cond_init(&g_cond, NULL); g_mntstatus=-1; @@ -209,70 +203,92 @@ CFSMounter::MountRes CFSMounter::mount(const char * const ip, const char * const return MRES_FS_NOT_SUPPORTED; } - printf("[CFSMounter] Mount(%d) %s:%s -> %s\n", (int) fstype, ip, dir, local_dir); + printf("[CFSMounter] Mount(%d) %s:%s -> %s\n", (int) fstype, ip.c_str(), dir.c_str(), local_dir.c_str()); if (isMounted(local_dir)) { - printf("[CFSMounter] FS mount error %s already mounted\n", local_dir); + printf("[CFSMounter] FS mount error %s already mounted\n", local_dir.c_str()); return MRES_FS_ALREADY_MOUNTED; } - if(options1[0] == '\0') + if(options1.empty()) { - strcpy(options1,options2); - options2[0] = '\0'; + options1 = options2; + options2 = ""; } - - if((options1[0] == '\0') && (options2[0] == '\0')) + + if(options1.empty() && options2.empty()) { if(fstype == NFS) { - strcpy(options1,"ro,soft,udp"); - strcpy(options2,"nolock,rsize=8192,wsize=8192"); + options1 = "ro,soft,udp"; + options2 = "nolock,rsize=8192,wsize=8192"; } else if(fstype == CIFS) { - strcpy(options1,"ro"); - strcpy(options2,""); + options1 = "ro"; + options2 = ""; } else if(fstype == LUFS) { - strcpy(options1,""); - strcpy(options2,""); - } - else if(fstype == SMBFS) - { - strcpy(options1,""); - strcpy(options2,""); + options1 = ""; + options2 = ""; } } if(fstype == NFS) { - cmd << "mount -t nfs " << ip << ":" << dir << " " << local_dir << " -o " << options1; + cmd = "mount -t nfs "; + cmd += ip; + cmd += ':'; + cmd += dir; + cmd += ' '; + cmd += local_dir; + cmd += " -o "; + cmd += options1; } else if(fstype == CIFS) { - cmd << "mount -t cifs " << ip << "/" << dir << " " << local_dir << " -o username=" << username - << ",password=" << password << ",unc=//" << ip << "/" << dir << "," << options1; - } - else if(fstype == SMBFS) - { - cmd << "smbmount //" << ip << "/" << dir << " " << password << " " << "-I" << " " << ip << " " - << "-U" << " " << username << " " << "-c \"mount " << local_dir << "\"" << " "; + cmd = "mount -t cifs //"; + cmd += ip; + cmd += '/'; + cmd += dir; + cmd += ' '; + cmd += local_dir; + cmd += " -o username="; + cmd += username; + cmd += ",password="; + cmd += password; + //cmd += ",unc=//"; for whats needed? + //cmd += ip; + //cmd += '/'; + //cmd += dir; + //cmd += ','; + //cmd += options1; } else { - cmd << "lufsd none " << local_dir << " -o fs=ftpfs,username=" << username - << ",password=" << password << ",host=" << ip << ",root=/" << dir << "," << options1; + cmd = "lufsd none "; + cmd += local_dir; + cmd += " -o fs=ftpfs,username="; + cmd += username; + cmd += ",password="; + cmd += password; + cmd += ",host="; + cmd += ip; + cmd += ",root=/"; + cmd += dir; + cmd += ','; + cmd += options1; } - if (options2[0] !='\0') + if (!options2.empty()) { - cmd << "," << options2; + cmd += ','; + cmd += options2; } - pthread_create(&g_mnt, 0, mount_thread, (void *) cmd.str().c_str()); + pthread_create(&g_mnt, 0, mount_thread, (void *) cmd.c_str()); struct timespec timeout; int retcode; @@ -286,10 +302,11 @@ CFSMounter::MountRes CFSMounter::mount(const char * const ip, const char * const pthread_cancel(g_mnt); } pthread_mutex_unlock(&g_mut); + pthread_join(g_mnt, NULL); if ( g_mntstatus != 0 ) { - printf("[CFSMounter] FS mount error: \"%s\"\n", cmd.str().c_str()); + printf("[CFSMounter] FS mount error: \"%s\"\n", cmd.c_str()); return (retcode == ETIMEDOUT) ? MRES_TIMEOUT : MRES_UNKNOWN; } return MRES_OK; @@ -301,12 +318,12 @@ bool CFSMounter::automount() bool res = true; for(int i = 0; i < NETWORK_NFS_NR_OF_ENTRIES; i++) { - if(g_settings.network_nfs_automount[i]) + if(g_settings.network_nfs[i].automount) { - res = (MRES_OK == mount(g_settings.network_nfs_ip[i].c_str(), g_settings.network_nfs_dir[i], g_settings.network_nfs_local_dir[i], - (FSType) g_settings.network_nfs_type[i], g_settings.network_nfs_username[i], - g_settings.network_nfs_password[i], g_settings.network_nfs_mount_options1[i], - g_settings.network_nfs_mount_options2[i])) && res; + res = (MRES_OK == mount(g_settings.network_nfs[i].ip, g_settings.network_nfs[i].dir, g_settings.network_nfs[i].local_dir, + (FSType) g_settings.network_nfs[i].type, g_settings.network_nfs[i].username, + g_settings.network_nfs[i].password, g_settings.network_nfs[i].mount_options1, + g_settings.network_nfs[i].mount_options2)) && res; } } return res; @@ -357,8 +374,7 @@ void CFSMounter::getMountedFS(MountInfos& info) in.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); if (mi.type == "nfs" || mi.type == "cifs" || - mi.type == "lufs" || - mi.type == "smbfs") + mi.type == "lufs" ) { info.push_back(mi); printf("[CFSMounter] mounted fs: dev: %s, mp: %s, type: %s\n", diff --git a/tuxbox/neutrino/src/system/fsmounter.h b/tuxbox/neutrino/src/system/fsmounter.h index 986ce5a..4f51534 100644 --- a/tuxbox/neutrino/src/system/fsmounter.h +++ b/tuxbox/neutrino/src/system/fsmounter.h @@ -60,8 +60,7 @@ class CFSMounter { NFS = 0, CIFS = 1, - LUFS = 2, - SMBFS = 3 + LUFS = 2 }; enum MountRes @@ -96,10 +95,10 @@ class CFSMounter */ public: CFSMounter(); - static bool isMounted(const char * const local_dir); - static CFSMounter::MountRes mount(const char * const ip, const char * const dir, const char * const local_dir, - const FSType fstype, const char * const username, const char * const password, - char * options1, char * options2); + static bool isMounted(const std::string &local_dir); + static CFSMounter::MountRes mount(const std::string &ip, const std::string &dir, const std::string &local_dir, + const FSType fstype, const std::string &username, const std::string &password, + std::string options1, std::string options2); static bool automount(); static CFSMounter::UMountRes umount(const char * const dir = NULL); static void getMountedFS(MountInfos& fs); diff --git a/tuxbox/neutrino/src/system/settings.h b/tuxbox/neutrino/src/system/settings.h index 17e1ca4..a8e37b9 100644 --- a/tuxbox/neutrino/src/system/settings.h +++ b/tuxbox/neutrino/src/system/settings.h @@ -192,16 +192,18 @@ struct SNeutrinoSettings //network #define NETWORK_NFS_NR_OF_ENTRIES 8 - std::string network_nfs_ip[NETWORK_NFS_NR_OF_ENTRIES]; - char network_nfs_mac[NETWORK_NFS_NR_OF_ENTRIES][31]; - char network_nfs_local_dir[NETWORK_NFS_NR_OF_ENTRIES][100]; - char network_nfs_dir[NETWORK_NFS_NR_OF_ENTRIES][100]; - int network_nfs_automount[NETWORK_NFS_NR_OF_ENTRIES]; - char network_nfs_mount_options1[NETWORK_NFS_NR_OF_ENTRIES][31]; - char network_nfs_mount_options2[NETWORK_NFS_NR_OF_ENTRIES][31]; - int network_nfs_type[NETWORK_NFS_NR_OF_ENTRIES]; - char network_nfs_username[NETWORK_NFS_NR_OF_ENTRIES][31]; - char network_nfs_password[NETWORK_NFS_NR_OF_ENTRIES][31]; +struct { + std::string ip; + std::string mac; + std::string local_dir; + std::string dir; + int automount; + std::string mount_options1; + std::string mount_options2; + int type; + std::string username; + std::string password; +} network_nfs[NETWORK_NFS_NR_OF_ENTRIES]; //personalization int personalize_pinstatus; @@ -261,7 +263,7 @@ struct SNeutrinoSettings std::string recording_server_ip; char recording_server_port[10]; int recording_server_wakeup; - char recording_server_mac[31]; + std::string recording_server_mac; int recording_vcr_no_scart; int recording_max_rectime; char recording_splitsize_default[10]; ----------------------------------------------------------------------- Summary of changes: tuxbox/neutrino/src/gui/moviebrowser.cpp | 36 ++--- tuxbox/neutrino/src/gui/nfs.cpp | 162 +++++++++----------- tuxbox/neutrino/src/gui/nfs.h | 7 +- tuxbox/neutrino/src/gui/widget/dirchooser.cpp | 28 ++-- tuxbox/neutrino/src/gui/widget/mountchooser.cpp | 20 ++-- tuxbox/neutrino/src/gui/widget/mountchooser.h | 2 +- tuxbox/neutrino/src/gui/widget/stringinput_ext.cpp | 39 +++-- tuxbox/neutrino/src/gui/widget/stringinput_ext.h | 5 +- tuxbox/neutrino/src/neutrino.cpp | 83 +++++----- tuxbox/neutrino/src/system/fsmounter.cpp | 122 +++++++++------- tuxbox/neutrino/src/system/fsmounter.h | 11 +- tuxbox/neutrino/src/system/settings.h | 24 ++-- 12 files changed, 272 insertions(+), 267 deletions(-) -- Tuxbox-GIT: apps ------------------------------------------------------------------------------ One dashboard for servers and applications across Physical-Virtual-Cloud Widest out-of-the-box monitoring support with 50+ applications Performance metrics, stats and reports that give you Actionable Insights Deep dive visibility with transaction tracing using APM Insight. http://ad.doubleclick.net/ddm/clk/290420510;117567292;y _______________________________________________ Tuxbox-cvs-commits mailing list Tuxbox-cvs-commits@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/tuxbox-cvs-commits