1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 package net.fckeditor.tool;
22
23 import java.io.File;
24 import java.io.InputStream;
25
26 import org.apache.commons.io.FilenameUtils;
27 import org.devlib.schmidt.imageinfo.ImageInfo;
28 import org.slf4j.Logger;
29 import org.slf4j.LoggerFactory;
30
31 import net.fckeditor.handlers.ConnectorHandler;
32
33
34
35
36
37
38 public class UtilsFile {
39
40 private static final Logger logger = LoggerFactory.getLogger(UtilsFile.class);
41
42
43
44
45
46
47
48
49 public static String sanitizeFileName(final String fileName) {
50 if (fileName == null)
51 return null;
52 if (fileName.equals(""))
53 return "";
54
55 String name = (ConnectorHandler.isForceSingleExtension()) ? UtilsFile.forceSingleExtension(fileName)
56 : fileName;
57
58
59 return name.replaceAll("\\/|\\/|\\||:|\\?|\\*|\"|<|>|\\p{Cntrl}", "_");
60 }
61
62
63
64
65
66
67
68 public static String sanitizeFolderName(final String folderName) {
69 if (folderName == null)
70 return null;
71 if (folderName.equals(""))
72 return "";
73
74
75 return folderName.replaceAll("\\.|\\/|\\/|\\||:|\\?|\\*|\"|<|>|\\p{Cntrl}", "_");
76 }
77
78
79
80
81
82
83
84 public static boolean isImage(final InputStream in) {
85 ImageInfo ii = new ImageInfo();
86 ii.setInput(in);
87 return ii.check();
88 }
89
90
91
92
93
94
95
96
97 public static boolean isValidPath(final String path) {
98 if (Utils.isEmpty(path))
99 return false;
100 if (!path.startsWith("/"))
101 return false;
102 if (!path.endsWith("/"))
103 return false;
104
105 if (!path.equals(FilenameUtils.separatorsToUnix(FilenameUtils
106 .normalize(path))))
107 return false;
108
109 return true;
110 }
111
112
113
114
115
116
117
118 public static String forceSingleExtension(final String filename) {
119 return filename.replaceAll("\\.(?![^.]+$)", "_");
120 }
121
122
123
124
125
126
127
128
129 public static boolean isSingleExtension(final String filename) {
130 return filename.matches("[^\\.]+\\.[^\\.]+");
131 }
132
133
134
135
136
137 public static void checkDirAndCreate(File dir) {
138 if (!dir.exists()) {
139 dir.mkdirs();
140 logger.debug("Dir '{}' successfully created", dir);
141 }
142 }
143
144 }