1/* 2 * Copyright 2015 Haiku, Inc. All rights reserved. 3 * Distributed under the terms of the MIT License. 4 * 5 * Authors: 6 * Axel D��rfler, <axeld@pinc-software.de> 7 */ 8 9 10#include <Catalog.h> 11#include <NetworkSettings.h> 12#include <NetworkSettingsAddOn.h> 13 14#include "ServiceListItem.h" 15#include "ServiceView.h" 16 17 18using namespace BNetworkKit; 19 20 21#undef B_TRANSLATION_CONTEXT 22#define B_TRANSLATION_CONTEXT "TelnetServiceAddOn" 23 24 25class TelnetServiceAddOn : public BNetworkSettingsAddOn { 26public: 27 TelnetServiceAddOn(image_id image, 28 BNetworkSettings& settings); 29 virtual ~TelnetServiceAddOn(); 30 31 virtual BNetworkSettingsItem* 32 CreateNextItem(uint32& cookie); 33}; 34 35 36class TelnetServiceItem : public BNetworkSettingsItem { 37public: 38 TelnetServiceItem(BNetworkSettings& settings); 39 virtual ~TelnetServiceItem(); 40 41 virtual BNetworkSettingsType 42 Type() const; 43 44 virtual BListItem* ListItem(); 45 virtual BView* View(); 46 47 virtual status_t Revert(); 48 virtual bool IsRevertable(); 49 50 virtual void SettingsUpdated(uint32 which); 51 52private: 53 BNetworkSettings& fSettings; 54 BListItem* fItem; 55 ServiceView* fView; 56}; 57 58 59// #pragma mark - 60 61 62TelnetServiceItem::TelnetServiceItem(BNetworkSettings& settings) 63 : 64 fSettings(settings), 65 fItem(new ServiceListItem("telnet", B_TRANSLATE("Telnet server"), 66 settings)), 67 fView(NULL) 68{ 69} 70 71 72TelnetServiceItem::~TelnetServiceItem() 73{ 74 if (fView->Parent() == NULL) 75 delete fView; 76 77 delete fItem; 78} 79 80 81BNetworkSettingsType 82TelnetServiceItem::Type() const 83{ 84 return B_NETWORK_SETTINGS_TYPE_SERVICE; 85} 86 87 88BListItem* 89TelnetServiceItem::ListItem() 90{ 91 return fItem; 92} 93 94 95BView* 96TelnetServiceItem::View() 97{ 98 if (fView == NULL) { 99 fView = new ServiceView("telnet", "telnetd", 100 B_TRANSLATE("Telnet server"), 101 B_TRANSLATE("The Telnet server allows you to remotely access " 102 "your machine with a terminal session using the telnet " 103 "protocol.\n\nPlease note that it is an insecure and " 104 "unencrypted connection."), fSettings); 105 } 106 107 return fView; 108} 109 110 111status_t 112TelnetServiceItem::Revert() 113{ 114 return fView != NULL ? fView->Revert() : B_OK; 115} 116 117 118bool 119TelnetServiceItem::IsRevertable() 120{ 121 return fView != NULL ? fView->IsRevertable() : false; 122} 123 124 125void 126TelnetServiceItem::SettingsUpdated(uint32 which) 127{ 128 if (fView != NULL) 129 fView->SettingsUpdated(which); 130} 131 132 133// #pragma mark - 134 135 136TelnetServiceAddOn::TelnetServiceAddOn(image_id image, 137 BNetworkSettings& settings) 138 : 139 BNetworkSettingsAddOn(image, settings) 140{ 141} 142 143 144TelnetServiceAddOn::~TelnetServiceAddOn() 145{ 146} 147 148 149BNetworkSettingsItem* 150TelnetServiceAddOn::CreateNextItem(uint32& cookie) 151{ 152 if (cookie++ == 0) 153 return new TelnetServiceItem(Settings()); 154 155 return NULL; 156} 157 158 159// #pragma mark - 160 161 162extern "C" 163BNetworkSettingsAddOn* 164instantiate_network_settings_add_on(image_id image, BNetworkSettings& settings) 165{ 166 return new TelnetServiceAddOn(image, settings); 167} 168