included setting to allow or disallow access to key channels without
This commit is contained in:
parent
c869a07bd6
commit
9a1a7f4626
|
@ -44,9 +44,13 @@ namespace SparkleLib {
|
||||||
string uri = SparkleConfig.DefaultConfig.GetFolderOptionalAttribute (
|
string uri = SparkleConfig.DefaultConfig.GetFolderOptionalAttribute (
|
||||||
folder_name, "announcements_url");
|
folder_name, "announcements_url");
|
||||||
|
|
||||||
|
// Key to turn the channel access more safely.
|
||||||
string key = SparkleConfig.DefaultConfig.GetFolderOptionalAttribute (
|
string key = SparkleConfig.DefaultConfig.GetFolderOptionalAttribute (
|
||||||
folder_name, "key");
|
folder_name, "key");
|
||||||
|
|
||||||
|
// Identifier to define access in IRC channel when no key is defined
|
||||||
|
string dangerous_access = SparkleConfig.DefaultConfig.GetFolderOptionalAttribute (
|
||||||
|
folder_name, "dangerous_access");
|
||||||
|
|
||||||
if (uri == null) {
|
if (uri == null) {
|
||||||
// This is SparkleShare's centralized notification service.
|
// This is SparkleShare's centralized notification service.
|
||||||
|
@ -57,6 +61,13 @@ namespace SparkleLib {
|
||||||
uri = "irc://204.62.14.135/";
|
uri = "irc://204.62.14.135/";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// This action ensures that the Sparkleshare function normally when the key is not defined.
|
||||||
|
// It is recommended that the user asked a question to see whether or not to allow access
|
||||||
|
// to the channel without a key.
|
||||||
|
if (dangerous_access == null) {
|
||||||
|
dangerous_access = "yes";
|
||||||
|
}
|
||||||
|
|
||||||
Uri announce_uri = new Uri (uri);
|
Uri announce_uri = new Uri (uri);
|
||||||
|
|
||||||
// We use only one listener per server to keep
|
// We use only one listener per server to keep
|
||||||
|
@ -78,10 +89,10 @@ namespace SparkleLib {
|
||||||
listeners.Add (new SparkleListenerTcp (announce_uri, folder_identifier));
|
listeners.Add (new SparkleListenerTcp (announce_uri, folder_identifier));
|
||||||
break;
|
break;
|
||||||
case "irc":
|
case "irc":
|
||||||
listeners.Add (new SparkleListenerIrc (announce_uri, folder_identifier, key));
|
listeners.Add (new SparkleListenerIrc (announce_uri, folder_identifier, key, dangerous_access));
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
listeners.Add (new SparkleListenerIrc (announce_uri, folder_identifier, key));
|
listeners.Add (new SparkleListenerIrc (announce_uri, folder_identifier, key, dangerous_access));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -30,9 +30,10 @@ namespace SparkleLib {
|
||||||
private IrcClient client;
|
private IrcClient client;
|
||||||
private string nick;
|
private string nick;
|
||||||
private string key;
|
private string key;
|
||||||
|
private string dangerous_access;
|
||||||
|
|
||||||
|
|
||||||
public SparkleListenerIrc (Uri server, string folder_identifier, string key) :
|
public SparkleListenerIrc (Uri server, string folder_identifier, string key, string dangerous_access) :
|
||||||
base (server, folder_identifier)
|
base (server, folder_identifier)
|
||||||
{
|
{
|
||||||
// Try to get a uniqueish nickname
|
// Try to get a uniqueish nickname
|
||||||
|
@ -42,8 +43,12 @@ namespace SparkleLib {
|
||||||
// with a number, so prefix an alphabetic character
|
// with a number, so prefix an alphabetic character
|
||||||
this.nick = "s" + this.nick.Substring (0, 7);
|
this.nick = "s" + this.nick.Substring (0, 7);
|
||||||
|
|
||||||
|
// Key to access the channel
|
||||||
this.key = key;
|
this.key = key;
|
||||||
|
|
||||||
|
// Allow access to the channel
|
||||||
|
this.dangerous_access = dangerous_access;
|
||||||
|
|
||||||
base.channels.Add ("#" + folder_identifier);
|
base.channels.Add ("#" + folder_identifier);
|
||||||
|
|
||||||
this.client = new IrcClient () {
|
this.client = new IrcClient () {
|
||||||
|
@ -112,11 +117,16 @@ namespace SparkleLib {
|
||||||
foreach (string channel in base.channels) {
|
foreach (string channel in base.channels) {
|
||||||
SparkleHelpers.DebugInfo ("ListenerIrc", "Joining channel " + channel);
|
SparkleHelpers.DebugInfo ("ListenerIrc", "Joining channel " + channel);
|
||||||
if (key != null) {
|
if (key != null) {
|
||||||
SparkleHelpers.DebugInfo ("ListenerIrc", "Ussing key");
|
SparkleHelpers.DebugInfo ("ListenerIrc", "Key set to access the channel");
|
||||||
this.client.RfcJoin (channel, key);
|
this.client.RfcJoin (channel, key);
|
||||||
this.client.RfcMode (channel, "+k " + key);
|
this.client.RfcMode (channel, "+k " + key);
|
||||||
} else {
|
} else {
|
||||||
|
if (dangerous_access == "yes") {
|
||||||
|
SparkleHelpers.DebugInfo ("ListenerIrc", "Accessing a dangerous channel change the setting to not access");
|
||||||
this.client.RfcJoin (channel);
|
this.client.RfcJoin (channel);
|
||||||
|
} else {
|
||||||
|
SparkleHelpers.DebugInfo ("ListenerIrc", "Dangerous channel change the setting to access");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
this.client.RfcMode (channel, "+s");
|
this.client.RfcMode (channel, "+s");
|
||||||
}
|
}
|
||||||
|
@ -146,16 +156,21 @@ namespace SparkleLib {
|
||||||
if (IsConnected) {
|
if (IsConnected) {
|
||||||
SparkleHelpers.DebugInfo ("ListenerIrc", "Joining channel " + channel);
|
SparkleHelpers.DebugInfo ("ListenerIrc", "Joining channel " + channel);
|
||||||
if (key != null) {
|
if (key != null) {
|
||||||
SparkleHelpers.DebugInfo ("ListenerIrc", "Ussing key");
|
SparkleHelpers.DebugInfo ("ListenerIrc", "Key set to access the channel");
|
||||||
this.client.RfcJoin (channel, key);
|
this.client.RfcJoin (channel, key);
|
||||||
this.client.RfcMode (channel, "+k " + key);
|
this.client.RfcMode (channel, "+k " + key);
|
||||||
} else {
|
} else {
|
||||||
|
if (dangerous_access == "yes") {
|
||||||
|
SparkleHelpers.DebugInfo ("ListenerIrc", "Accessing a dangerous channel change the setting to not access");
|
||||||
this.client.RfcJoin (channel);
|
this.client.RfcJoin (channel);
|
||||||
|
} else {
|
||||||
|
SparkleHelpers.DebugInfo ("ListenerIrc", "Dangerous channel change the setting to access");
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
this.client.RfcMode (channel, "+s");
|
this.client.RfcMode (channel, "+s");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public override void Announce (SparkleAnnouncement announcement)
|
public override void Announce (SparkleAnnouncement announcement)
|
||||||
|
|
Loading…
Reference in a new issue