Skip to content

Commit

Permalink
Merge pull request #1389 from msiemczyk/5.30.0-agfa
Browse files Browse the repository at this point in the history
IEI-307387 Add support for accepted calling AE titles to storescp and…
  • Loading branch information
msiemczyk committed Mar 6, 2024
2 parents 617cde4 + f68d535 commit 009abcc
Show file tree
Hide file tree
Showing 6 changed files with 49 additions and 16 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -48,12 +48,14 @@
import org.dcm4che3.util.SafeClose;
import org.dcm4che3.util.StreamUtils;
import org.dcm4che3.util.StringUtils;
import org.slf4j.Logger;

import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.security.GeneralSecurityException;
import java.text.MessageFormat;
import java.util.Arrays;
import java.util.Properties;
import java.util.ResourceBundle;

Expand Down Expand Up @@ -196,6 +198,15 @@ public static void addAEOptions(Options opts) {
addSocketOptions(opts);
addTLSOptions(opts);
}

public static void addAcceptedCallingAETs(Options opts) {
opts.addOption(Option.builder()
.hasArgs()
.argName("aet")
.desc(rb.getString("accepted-calling-aets"))
.longOpt("accept")
.build());
}

public static void addRequestTimeoutOption(Options opts) {
opts.addOption(Option.builder()
Expand Down Expand Up @@ -488,7 +499,7 @@ public static int priorityOf(CommandLine cl) {
? Priority.LOW
: Priority.NORMAL;
}

public static int getIntOption(CommandLine cl, String opt, int defVal) {
String optVal = cl.getOptionValue(opt);
if (optVal == null)
Expand Down Expand Up @@ -551,6 +562,14 @@ public static void configure(Connection conn, CommandLine cl)
conn.setTcpNoDelay(!cl.hasOption("tcp-delay"));
configureTLS(conn, cl);
}

public static void configureAcceptedCallingAETitles(ApplicationEntity ae, CommandLine cl, Logger log) {
String[] aets = cl.getOptionValues("accept");
if (aets != null) {
ae.setAcceptedCallingAETitles(aets);
log.info("Accepted Calling AE titles are {}.", Arrays.toString(aets));
}
}

public static boolean configureTLSCipher(Connection conn, CommandLine cl) throws ParseException {
if (cl.hasOption("tls"))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@ for incoming association requests. If no local IP address of the network \
interface is specified, connections on any/all local addresses are accepted. \
If an AE Title is specified, only requests with matching Called AE Title will \
be accepted.
accepted-calling-aets=One ore more AE Title(s) that SCP should accept. By default SCP \
accepts any calling AE title.
max-pdulen-rcv=specifies maximal length of received P-DATA TF PDUs \
communicated during association establishment. 0 indicates that no maximum \
length is specified. 16378 by default
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -605,6 +605,7 @@ private static CommandLine parseComandLine(String[] args)
CLIUtils.addConnectTimeoutOption(opts);
CLIUtils.addAcceptTimeoutOption(opts);
CLIUtils.addAEOptions(opts);
CLIUtils.addAcceptedCallingAETs(opts);
CLIUtils.addCommonOptions(opts);
CLIUtils.addSendTimeoutOption(opts);
CLIUtils.addStoreTimeoutOption(opts);
Expand Down Expand Up @@ -759,6 +760,7 @@ public static void main(String[] args) {
CLIUtils.configure(main.fsInfo, cl);
CLIUtils.configureBindServer(main.conn, main.ae, cl);
CLIUtils.configure(main.conn, cl);
CLIUtils.configureAcceptedCallingAETitles(main.ae, cl, LOG);
configureDicomFileSet(main, cl);
configureTransferCapability(main, cl);
configureInstanceAvailability(main, cl);
Expand Down Expand Up @@ -789,7 +791,7 @@ public static void main(String[] args) {
System.exit(2);
}
}

private static void configureRelationalLenient(DcmQRSCP main, CommandLine cl) {
main.setRelationalLenient(cl.hasOption("relational-lenient"));
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,13 +47,12 @@
import java.util.concurrent.ScheduledExecutorService;

import org.apache.commons.cli.CommandLine;
import org.apache.commons.cli.Option.Builder;
import org.apache.commons.cli.Options;
import org.apache.commons.cli.Option;
import org.apache.commons.cli.Options;
import org.apache.commons.cli.ParseException;
import org.dcm4che3.data.Attributes;
import org.dcm4che3.data.Tag;
import org.dcm4che3.data.UID;
import org.dcm4che3.data.Attributes;
import org.dcm4che3.io.DicomOutputStream;
import org.dcm4che3.net.ApplicationEntity;
import org.dcm4che3.net.Association;
Expand Down Expand Up @@ -137,6 +136,7 @@ public static void main(String[] args) {
IanSCP main = new IanSCP();
CLIUtils.configureBindServer(main.conn, main.ae, cl);
CLIUtils.configure(main.conn, cl);
CLIUtils.configureAcceptedCallingAETitles(main.ae, cl, LOG);
configureTransferCapability(main.ae, cl);
main.setStatus(CLIUtils.getIntOption(cl, "status", 0));
main.setStorageDirectory(getStorageDirectory(cl));
Expand All @@ -161,6 +161,7 @@ private static CommandLine parseComandLine(String[] args) throws ParseException
Options opts = new Options();
CLIUtils.addBindServerOption(opts);
CLIUtils.addAEOptions(opts);
CLIUtils.addAcceptedCallingAETs(opts);
CLIUtils.addCommonOptions(opts);
addStorageDirectoryOptions(opts);
addTransferCapabilityOptions(opts);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,14 +47,13 @@
import java.util.concurrent.ScheduledExecutorService;

import org.apache.commons.cli.CommandLine;
import org.apache.commons.cli.Option.Builder;
import org.apache.commons.cli.Options;
import org.apache.commons.cli.Option;
import org.apache.commons.cli.Options;
import org.apache.commons.cli.ParseException;
import org.dcm4che3.data.Tag;
import org.dcm4che3.data.UID;
import org.dcm4che3.data.Attributes;
import org.dcm4che3.data.IOD;
import org.dcm4che3.data.Tag;
import org.dcm4che3.data.UID;
import org.dcm4che3.data.ValidationResult;
import org.dcm4che3.io.DicomInputStream;
import org.dcm4che3.io.DicomOutputStream;
Expand Down Expand Up @@ -141,6 +140,7 @@ public static void main(String[] args) {
MppsSCP main = new MppsSCP();
CLIUtils.configureBindServer(main.conn, main.ae, cl);
CLIUtils.configure(main.conn, cl);
CLIUtils.configureAcceptedCallingAETitles(main.ae, cl, LOG);
configureTransferCapability(main.ae, cl);
configureStorageDirectory(main, cl);
configureIODs(main, cl);
Expand All @@ -165,13 +165,14 @@ private static CommandLine parseComandLine(String[] args) throws ParseException
Options opts = new Options();
CLIUtils.addBindServerOption(opts);
CLIUtils.addAEOptions(opts);
CLIUtils.addAcceptedCallingAETs(opts);
CLIUtils.addCommonOptions(opts);
addStorageDirectoryOptions(opts);
addTransferCapabilityOptions(opts);
addIODOptions(opts);
return CLIUtils.parseComandLine(args, opts, rb, MppsSCP.class);
}

@SuppressWarnings("static-access")
private static void addStorageDirectoryOptions(Options opts) {
opts.addOption(null, "ignore", false,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,22 +44,28 @@
import java.nio.file.StandardCopyOption;
import java.util.Properties;
import java.util.ResourceBundle;
import java.util.UUID;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;

import org.apache.commons.cli.CommandLine;
import org.apache.commons.cli.Options;
import org.apache.commons.cli.Option;
import org.apache.commons.cli.Options;
import org.apache.commons.cli.ParseException;
import org.dcm4che3.data.Tag;
import org.dcm4che3.data.Attributes;
import org.dcm4che3.data.Tag;
import org.dcm4che3.data.VR;
import org.dcm4che3.io.DicomInputStream;
import org.dcm4che3.io.DicomOutputStream;
import org.dcm4che3.io.DicomInputStream.IncludeBulkData;
import org.dcm4che3.net.*;
import org.dcm4che3.io.DicomOutputStream;
import org.dcm4che3.net.ApplicationEntity;
import org.dcm4che3.net.Association;
import org.dcm4che3.net.Connection;
import org.dcm4che3.net.Device;
import org.dcm4che3.net.Dimse;
import org.dcm4che3.net.PDVInputStream;
import org.dcm4che3.net.Status;
import org.dcm4che3.net.TransferCapability;
import org.dcm4che3.net.pdu.PresentationContext;
import org.dcm4che3.net.service.BasicCEchoSCP;
import org.dcm4che3.net.service.BasicCStoreSCP;
Expand Down Expand Up @@ -245,6 +251,7 @@ private static CommandLine parseComandLine(String[] args)
Options opts = new Options();
CLIUtils.addBindServerOption(opts);
CLIUtils.addAEOptions(opts);
CLIUtils.addAcceptedCallingAETs(opts);
CLIUtils.addCommonOptions(opts);
addStatusOption(opts);
addDelayOption(opts, "receive-delay");
Expand Down Expand Up @@ -322,6 +329,7 @@ public static void main(String[] args) {
StoreSCP main = new StoreSCP();
CLIUtils.configureBindServer(main.conn, main.ae, cl);
CLIUtils.configure(main.conn, cl);
CLIUtils.configureAcceptedCallingAETitles(main.ae, cl, LOG);
main.setStatus(CLIUtils.getIntOption(cl, "status", 0));
main.setReceiveDelays(CLIUtils.getIntsOption(cl, "receive-delay"));
main.setResponseDelays(CLIUtils.getIntsOption(cl, "response-delay"));
Expand All @@ -345,7 +353,7 @@ public static void main(String[] args) {
System.exit(2);
}
}

private static void configureStorageDirectory(StoreSCP main, CommandLine cl) {
if (!cl.hasOption("ignore")) {
main.setStorageDirectory(
Expand Down

0 comments on commit 009abcc

Please sign in to comment.