- * convertNewline2P ist eine regex-routine zum umwandeln von 2 oder mehr newlines (\n)
- * in den html-tag <p>
- * nur sinnvoll, wenn text nicht im html-format eingegeben
- */
- public static String convertNewline2P(String haystack) {
- return re_brbr2p.substituteAll(haystack,"\n</p><p>");
- }
-
- /**
- * convertNewline2Break ist eine regex-routine zum umwandeln von 1 newline (\n)
- * in den html-tag <br>
- * nur sinnvoll, wenn text nicht im html-format eingegeben
- */
- public static String convertNewline2Break(String haystack) {
- return re_newline2br.substituteAll(haystack,"$0<br />");
- }
-
- /**
- * createMailLinks wandelt text im email-adressenformat
- * in einen klickbaren link um
- * nur sinnvoll, wenn text nicht im html-format eingegeben
- */
- public static String createMailLinks(String haystack) {
- return re_mail.substituteAll(haystack,"<a href=\"mailto:$0\">$0</a>");
- }
-
-
- /**
- * createMailLinks wandelt text im email-adressenformat
- * in einen klickbaren link um
- * nur sinnvoll, wenn text nicht im html-format eingegeben
- */
- public static String createMailLinks(String haystack, String imageRoot, String mailImage) {
- return re_mail.substituteAll(haystack,"<img src=\""+imageRoot+"/"+mailImage+"\" border=\"0\"/> <a href=\"mailto:$0\">$0</a>");
- }
-
-
- /**
- * createURLLinks wandelt text im url-format
- * in einen klickbaren link um
- * nur sinnvoll, wenn text nicht im html-format eingegeben
- */
- public static String createURLLinks(String haystack) {
- return re_url.substituteAll(haystack,"<a href=\"$0\">$0</a>");
- }
-
- /**
- * this routine takes text in url format and makes
- * a clickaeble "<href>" link removing any "illegal" html tags
- * @param haystack, the url
- * @param title, the href link text
- * @param imagRoot, the place to find icons
- * @param extImage, the url of the icon to show next to the link
- * @return a String containing the url
- */
- public static String createURLLinks(String haystack, String title, String imageRoot,String extImage) {
- if (title == null) {
- return re_url.substituteAll(haystack,"<img src=\""+imageRoot+"/"+extImage+"\" border=\"0\"/> <a href=\"$0\">$0</a>");
- } else {
- title = removeHTMLTags(title);
- return re_url.substituteAll(haystack,"<img src=\""+imageRoot+"/"+extImage+"\" border=\"0\"/> <a href=\"$0\">"+title+"</a>");
- }
- }
-
- /**
- * this routine takes text in url format and makes
- * a clickaeble "<href>" link removing any "illegal" html tags
- * @param haystack, the url
- * @param imageRoot, the place to find icons
- * @param extImage, the url of the icon to show next to the link
- * @param intImage, unused
- * @return a String containing the url
- */
- public static String createURLLinks(String haystack, String title, String imageRoot,String extImage,String intImage) {
- return createURLLinks(haystack, title, imageRoot, extImage);
- }
-
- /**
- * this method deletes all html tags
- */
- public static final String removeHTMLTags(String haystack){
- return re_tags.substituteAll(haystack,"");
- }
-
- /**
- * this method deletes all but the approved tags html tags
- * it also deletes approved tags which contain malicious-looking attributes and doesn't work at all
- */
- public static String approveHTMLTags(String haystack){
- try {
- String approvedTags="a|img|h1|h2|h3|h4|h5|h6|br|b|i|strong|p";
- String badAttributes="onAbort|onBlur|onChange|onClick|onDblClick|onDragDrop|onError|onFocus|onKeyDown|onKeyPress|onKeyUp|onLoad|onMouseDown|onMouseMove|onMouseOut|onMouseOver|onMouseUp|onMove|onReset|onResize|onSelect|onSubmit|onUnload";
- String approvedProtocols="rtsp|http|ftp|https|freenet|mailto";
-
- // kill all the bad tags that have attributes
- String s = "<\\s*/?\\s*(?!(("+approvedTags+")\\s))\\w+\\s[^>]*>";
- RE regex = new RE(s,RE.REG_ICASE);
- haystack = regex.substituteAll(haystack,"");
-
- // kill all the bad tags that are attributeless
- regex = new RE("<\\s*/?\\s*(?!(("+approvedTags+")\\s*>))\\w+\\s*>",RE.REG_ICASE);
- haystack = regex.substituteAll(haystack,"");
-
- // kill all the tags which have a javascript attribute like onLoad
- regex = new RE("<[^>]*("+badAttributes+")[^>]*>",RE.REG_ICASE);
- haystack = regex.substituteAll(haystack,"");
-
- // kill all the tags which include a url to an unacceptable protocol
- regex = new RE("<\\s*a\\s+[^>]*href=(?!(\'|\")?("+approvedProtocols+"))[^>]*>",RE.REG_ICASE);
- haystack = regex.substituteAll(haystack,"");
-
- return haystack;
- } catch(REException ex){
- ex.printStackTrace();
- return null;
- }
- }
-
-
- /**
- * createHTML ruft alle regex-methoden zum unwandeln eines nicht
- * htmlcodierten string auf und returnt einen htmlcodierten String
- */
- public static String createHTML(String content){
- content=convertNewline2Break(content);
- content=convertNewline2P(content);
- content=createMailLinks(content);
- content=createURLLinks(content);
- return content;
- }
-
-
- /**
- * createHTML ruft alle regex-methoden zum unwandeln eines nicht
- * htmlcodierten string auf und returnt einen htmlcodierten String
- */
- public static String createHTML(String content,String producerDocRoot,String mailImage,String extImage,String intImage){
- content=convertNewline2Break(content);
- content=convertNewline2P(content);
- content=createMailLinks(content,producerDocRoot,mailImage);
- content=createURLLinks(content,null,producerDocRoot,extImage,intImage);
- return content;
- }
-
- /**