Skip to content
This repository was archived by the owner on Nov 1, 2025. It is now read-only.

Commit f635d07

Browse files
authored
Update OutlineManager.cs
1 parent cc8d778 commit f635d07

File tree

1 file changed

+68
-7
lines changed

1 file changed

+68
-7
lines changed

OutlineManager.cs

Lines changed: 68 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
using OutlineManager.Types;
88
using Newtonsoft.Json.Linq;
99
using System.Linq;
10+
using Newtonsoft.Json;
1011
using OutlineManagerExceptions;
1112

1213
namespace OutlineManager
@@ -91,6 +92,51 @@ private static bool CallRequest(string urlMethod, string method, JObject args, o
9192
}
9293
}
9394

95+
/// <summary>
96+
/// Get Info about Outline Server
97+
/// </summary>
98+
/// <returns>Outline Server Info in <see cref="T:OutlineManager.Types.OutlineServer" /></returns>
99+
/// <exception cref="OutlineManagerException"></exception>
100+
public OutlineServer GetOutlineServer() {
101+
CallRequest("server", "GET", out var data);
102+
return JsonConvert.DeserializeObject<OutlineServer>(data);
103+
}
104+
105+
///<summary>
106+
/// Changes the hostname for access keys.
107+
/// Must be a valid hostname or IP address.
108+
/// If it's a hostname, DNS must be set up independently of this API.
109+
///</summary>
110+
/// <returns><b>True</b>, if the hostname was changed succesfully</returns>
111+
public bool ChangeHostname(string newHostname) {
112+
return CallRequest("server/hostname-for-access-keys", "PUT", new JObject { {"hostname", newHostname} }, out _);
113+
}
114+
115+
///<summary>
116+
/// Changes the default port for newly created access keys.
117+
/// This can be a port already used for access keys.
118+
///</summary>
119+
/// <returns><b>True</b>, if the port was changed succesfully</returns>
120+
public bool ChangePort(int newPort) {
121+
return CallRequest("server/port-for-new-access-keys", "PUT", new JObject { {"port", newPort} }, out _);
122+
}
123+
124+
///<summary>
125+
/// Rename the Outline Server
126+
///</summary>
127+
/// <returns><b>True</b>, if the server name was changed succesfully</returns>
128+
public bool RenameServer(string newName) {
129+
return CallRequest("name", "PUT", new JObject { {"name", newName} }, out _);
130+
}
131+
132+
///<summary>
133+
/// Change Metrics Sharing
134+
///</summary>
135+
/// <returns><b>True</b>, if the metrics sharing was changed succesfully</returns>
136+
public bool ChangeMetricsSharing(bool newParam) {
137+
return CallRequest("metrics/enabled", "PUT", new JObject { {"metricsEnabled", newParam} }, out _);
138+
}
139+
94140
/// <summary>
95141
/// Get Outline key in <see cref="T:OutlineManager.Types.OutlineKey" /> by ID
96142
/// </summary>
@@ -116,17 +162,31 @@ public OutlineKey GetKeyById(int id)
116162
/// <param name="name">Name of key</param>
117163
/// <returns></returns>
118164
/// <exception cref="OutlineManagerException"></exception>
119-
public OutlineKey GetKeyByName(string name)
165+
public OutlineKey GetKeyByName(string name, SearchMethod searchMethod)
120166
{
121167
var list = GetKeys();
122168
OutlineKey oKey = new OutlineKey() { Id = -1 };
123169
foreach (var key in list)
124-
if (key.Name.ToLower() == name.ToLower())
125-
oKey = key;
126-
else if(key.Name == name)
127-
oKey = key;
128-
else if (key.Name.ToLower().StartsWith(name.ToLower()))
129-
oKey = key;
170+
switch (searchMethod)
171+
{
172+
case SearchMethod.StartsWith:
173+
if (key.Name.StartsWith(name))
174+
oKey = key;
175+
break;
176+
case SearchMethod.StartsWithToLower:
177+
if (key.Name.ToLower().StartsWith(name.ToLower()))
178+
oKey = key;
179+
break;
180+
case SearchMethod.Equality:
181+
if (key.Name == name)
182+
oKey = key;
183+
break;
184+
case SearchMethod.EqualityToLower:
185+
if (key.Name.ToLower() == name.ToLower())
186+
oKey = key;
187+
break;
188+
}
189+
130190
if (oKey.Id == -1)
131191
throw new OutlineManagerException("Key not exist or not found by name in your Outline Server");
132192
else
@@ -223,3 +283,4 @@ public List<TransferredData> GetTransferredData()
223283
}
224284
}
225285
}
286+

0 commit comments

Comments
 (0)