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
18 using namespace BNetworkKit;
19
20
21 #undef B_TRANSLATION_CONTEXT
22 #define B_TRANSLATION_CONTEXT "TelnetServiceAddOn"
23
24
25 class TelnetServiceAddOn : public BNetworkSettingsAddOn {
26 public:
27 TelnetServiceAddOn(image_id image,
28 BNetworkSettings& settings);
29 virtual ~TelnetServiceAddOn();
30
31 virtual BNetworkSettingsItem*
32 CreateNextItem(uint32& cookie);
33 };
34
35
36 class TelnetServiceItem : public BNetworkSettingsItem {
37 public:
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
52 private:
53 BNetworkSettings& fSettings;
54 BListItem* fItem;
55 ServiceView* fView;
56 };
57
58
59 // #pragma mark -
60
61
TelnetServiceItem(BNetworkSettings & settings)62 TelnetServiceItem::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
~TelnetServiceItem()72 TelnetServiceItem::~TelnetServiceItem()
73 {
74 if (fView->Parent() == NULL)
75 delete fView;
76
77 delete fItem;
78 }
79
80
81 BNetworkSettingsType
Type() const82 TelnetServiceItem::Type() const
83 {
84 return B_NETWORK_SETTINGS_TYPE_SERVICE;
85 }
86
87
88 BListItem*
ListItem()89 TelnetServiceItem::ListItem()
90 {
91 return fItem;
92 }
93
94
95 BView*
View()96 TelnetServiceItem::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
111 status_t
Revert()112 TelnetServiceItem::Revert()
113 {
114 return fView != NULL ? fView->Revert() : B_OK;
115 }
116
117
118 bool
IsRevertable()119 TelnetServiceItem::IsRevertable()
120 {
121 return fView != NULL ? fView->IsRevertable() : false;
122 }
123
124
125 void
SettingsUpdated(uint32 which)126 TelnetServiceItem::SettingsUpdated(uint32 which)
127 {
128 if (fView != NULL)
129 fView->SettingsUpdated(which);
130 }
131
132
133 // #pragma mark -
134
135
TelnetServiceAddOn(image_id image,BNetworkSettings & settings)136 TelnetServiceAddOn::TelnetServiceAddOn(image_id image,
137 BNetworkSettings& settings)
138 :
139 BNetworkSettingsAddOn(image, settings)
140 {
141 }
142
143
~TelnetServiceAddOn()144 TelnetServiceAddOn::~TelnetServiceAddOn()
145 {
146 }
147
148
149 BNetworkSettingsItem*
CreateNextItem(uint32 & cookie)150 TelnetServiceAddOn::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
162 extern "C"
163 BNetworkSettingsAddOn*
instantiate_network_settings_add_on(image_id image,BNetworkSettings & settings)164 instantiate_network_settings_add_on(image_id image, BNetworkSettings& settings)
165 {
166 return new TelnetServiceAddOn(image, settings);
167 }
168