summaryrefslogtreecommitdiff
path: root/src/org/noreply/fancydress/directory/OutgoingMMTPSection.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/org/noreply/fancydress/directory/OutgoingMMTPSection.java')
-rw-r--r--src/org/noreply/fancydress/directory/OutgoingMMTPSection.java74
1 files changed, 74 insertions, 0 deletions
diff --git a/src/org/noreply/fancydress/directory/OutgoingMMTPSection.java b/src/org/noreply/fancydress/directory/OutgoingMMTPSection.java
new file mode 100644
index 0000000..8b9ca9b
--- /dev/null
+++ b/src/org/noreply/fancydress/directory/OutgoingMMTPSection.java
@@ -0,0 +1,74 @@
+/* $Id$ */
+package org.noreply.fancydress.directory;
+
+import org.bouncycastle.util.encoders.Base64;
+import org.noreply.fancydress.directory.parser.*;
+import org.noreply.fancydress.misc.Util;
+import org.noreply.fancydress.crypto.*;
+import org.noreply.fancydress.status.*;
+import java.util.*;
+import java.text.ParseException;
+import java.net.InetAddress;
+import java.net.UnknownHostException;
+
+/* FIXME: parse allow/deny ACLs */
+
+/**
+ * Represent an Outgoing/MMTP section of a server descriptor.
+ *
+ * @see ServerDescriptor
+ */
+public class OutgoingMMTPSection {
+ /*
+ * version we understand.
+ */
+ private static final String VERSION = "0.1";
+
+ private String name;
+
+ /* Required */
+ private String version;
+ private String[] protocols;
+
+ /**
+ * Construct an Outgoing/MMTP section.
+ *
+ * @param section the section to parse.
+ * @throws Mix3BadServerFormatException if the Section is syntactially invalid.
+ */
+ public OutgoingMMTPSection(DirectorySection section)
+ throws Mix3BadServerFormatException
+ {
+ name = section.getName();
+ parseOutgoingMMTPSection(section);
+ }
+
+ /**
+ * Parse an Outgoing/MMTP section.
+ *
+ * @param section the section to parse.
+ * @throws Mix3BadServerFormatException if the Section is syntactially invalid.
+ */
+ private void parseOutgoingMMTPSection(DirectorySection section) throws Mix3BadServerFormatException {
+ /* Check Version */
+ DirectoryEntry entryVersion = section.getEntry("Version");
+ if (entryVersion == null)
+ throw new Mix3BadServerFormatException("Version not in " + name + " section");
+ version = entryVersion.getValue();
+ if (! version.equals(VERSION))
+ /* We have to ignore unknown Versions */
+ throw new Mix3BadServerUnrecognizedVersionException("Unrecognized " + name + " Version "+version);
+
+ /* mandatory entries */
+ DirectoryEntry entryProtocols = section.getEntry("Protocols");
+
+ /* check if mandatory entries are available */
+ if (entryProtocols == null)
+ throw new Mix3BadServerFormatException("Protocols not in " + name + " section");
+ protocols = Util.tokenize(entryProtocols.getValue(), ',');
+ }
+
+ public String[] getProtocols() {
+ return protocols;
+ }
+}