diff --git a/htroot/Crawler_p.java b/htroot/Crawler_p.java index a69628e94..6663fe06f 100644 --- a/htroot/Crawler_p.java +++ b/htroot/Crawler_p.java @@ -27,7 +27,6 @@ import java.io.File; import java.io.FileInputStream; -import java.io.IOException; import java.io.Writer; import java.net.MalformedURLException; import java.util.Date; @@ -46,7 +45,6 @@ import net.yacy.cora.services.federated.yacy.CacheStrategy; import net.yacy.document.parser.html.ContentScraper; import net.yacy.document.parser.html.TransformerWriter; import net.yacy.kelondro.data.meta.DigestURI; -import net.yacy.kelondro.index.RowSpaceExceededException; import net.yacy.kelondro.logging.Log; import net.yacy.kelondro.util.FileUtils; import net.yacy.peers.NewsPool; @@ -62,7 +60,7 @@ import de.anomic.data.BookmarkHelper; import de.anomic.data.BookmarksDB; import de.anomic.data.ListManager; import de.anomic.data.WorkTables; -import de.anomic.data.ymark.YMarkEntry; +import de.anomic.data.ymark.YMarkTables; import de.anomic.server.serverObjects; import de.anomic.server.serverSwitch; @@ -376,31 +374,21 @@ public class Crawler_p { String tagStr = tags.toString(); if (tagStr.length() > 2 && tagStr.startsWith("[") && tagStr.endsWith("]")) tagStr = tagStr.substring(1, tagStr.length() - 2); - // we will create always a bookmark to use this to track crawled hosts - final YMarkEntry bmk = new YMarkEntry(); - bmk.put(YMarkEntry.BOOKMARK.URL.key(), url.toNormalform(true, false)); - bmk.put(YMarkEntry.BOOKMARK.TITLE.key(), title); - bmk.put(YMarkEntry.BOOKMARK.DESC.key(), description); - bmk.put(YMarkEntry.BOOKMARK.PUBLIC.key(), "false"); - bmk.put(YMarkEntry.BOOKMARK.TAGS.key(), tagStr); - bmk.put(YMarkEntry.BOOKMARK.FOLDERS.key(), "/crawlStart"); - - try { - sb.tables.bookmarks.addBookmark("admin", bmk, false, false); - } catch (final IOException e) { - Log.logException(e); - } catch (final RowSpaceExceededException e) { - } - + // we will create always a bookmark to use this to track crawled hosts final BookmarksDB.Bookmark bookmark = sb.bookmarksDB.createBookmark(crawlingStart, "admin"); if (bookmark != null) { bookmark.setProperty(BookmarksDB.Bookmark.BOOKMARK_TITLE, title); + bookmark.setProperty(BookmarksDB.Bookmark.BOOKMARK_DESCRIPTION, description); bookmark.setOwner("admin"); bookmark.setPublic(false); bookmark.setTags(tags, true); sb.bookmarksDB.saveBookmark(bookmark); } - + + // do the same for ymarks + // TODO: could a non admin user add crawls? + sb.tables.bookmarks.createBookmark(sb.loader, url, YMarkTables.USER_ADMIN, true, "crawlStart", "/Crawl Start"); + // liftoff! prop.put("info", "8");//start msg prop.putHTML("info_crawlingURL", post.get("crawlingURL")); diff --git a/htroot/api/ymarks/add_ymark.html b/htroot/api/ymarks/add_ymark.html new file mode 100644 index 000000000..ec376281a --- /dev/null +++ b/htroot/api/ymarks/add_ymark.html @@ -0,0 +1,14 @@ + + +
+Status: error
+ :: +Status: ok
+ #(/status)# + + \ No newline at end of file diff --git a/htroot/api/ymarks/add_ymark.java b/htroot/api/ymarks/add_ymark.java index 128eb57a1..77f137d34 100644 --- a/htroot/api/ymarks/add_ymark.java +++ b/htroot/api/ymarks/add_ymark.java @@ -1,8 +1,11 @@ import java.io.IOException; import net.yacy.cora.protocol.RequestHeader; +import net.yacy.document.Parser.Failure; +import net.yacy.kelondro.data.meta.DigestURI; import net.yacy.kelondro.index.RowSpaceExceededException; import net.yacy.kelondro.logging.Log; import net.yacy.search.Switchboard; +import net.yacy.search.index.Segments; import de.anomic.data.UserDB; import de.anomic.data.ymark.YMarkEntry; import de.anomic.data.ymark.YMarkTables; @@ -24,35 +27,62 @@ public class add_ymark { if(isAdmin || isAuthUser) { final String bmk_user = (isAuthUser ? user.getUserName() : YMarkTables.USER_ADMIN); - String url = post.get(YMarkEntry.BOOKMARK.URL.key(),YMarkEntry.BOOKMARK.URL.deflt()); - boolean hasProtocol = false; - for (YMarkTables.PROTOCOLS p : YMarkTables.PROTOCOLS.values()) { - if(url.toLowerCase().startsWith(p.protocol())) { - hasProtocol = true; - break; - } - } - if (!hasProtocol) { - url=YMarkTables.PROTOCOLS.HTTP.protocol(url); - } - - final YMarkEntry bmk = new YMarkEntry(); - - bmk.put(YMarkEntry.BOOKMARK.URL.key(), url); - bmk.put(YMarkEntry.BOOKMARK.TITLE.key(), post.get(YMarkEntry.BOOKMARK.TITLE.key(),YMarkEntry.BOOKMARK.TITLE.deflt())); - bmk.put(YMarkEntry.BOOKMARK.DESC.key(), post.get(YMarkEntry.BOOKMARK.DESC.key(),YMarkEntry.BOOKMARK.DESC.deflt())); - bmk.put(YMarkEntry.BOOKMARK.PUBLIC.key(), post.get(YMarkEntry.BOOKMARK.PUBLIC.key(),YMarkEntry.BOOKMARK.PUBLIC.deflt())); - bmk.put(YMarkEntry.BOOKMARK.TAGS.key(), YMarkUtil.cleanTagsString(post.get(YMarkEntry.BOOKMARK.TAGS.key(),YMarkEntry.BOOKMARK.TAGS.deflt()))); - bmk.put(YMarkEntry.BOOKMARK.FOLDERS.key(), YMarkUtil.cleanFoldersString(post.get(YMarkEntry.BOOKMARK.FOLDERS.key(),YMarkEntry.FOLDERS_UNSORTED))); - - try { - sb.tables.bookmarks.addBookmark(bmk_user, bmk, false, false); + if(post.containsKey("redirect") && post.get("redirect").length() > 0) { + prop.put("redirect_url", post.get("redirect")); + prop.put("redirect", "1"); + } + + if(post.containsKey("urlHash")) { + final String urlHash = post.get("urlHash",YMarkUtil.EMPTY_STRING); + final DigestURI url = sb.indexSegments.segment(Segments.Process.PUBLIC).urlMetadata().load(urlHash.getBytes()).metadata().url(); + final String folders = post.get(YMarkEntry.BOOKMARK.FOLDERS.key(),YMarkEntry.FOLDERS_UNSORTED); + final String tags = post.get(YMarkEntry.BOOKMARK.TAGS.key(),YMarkUtil.EMPTY_STRING); + try { + sb.tables.bookmarks.createBookmark(sb.loader, url, bmk_user, true, tags, folders); + prop.put("status", "1"); } catch (IOException e) { - Log.logException(e); + // TODO Auto-generated catch block + Log.logException(e); + } catch (Failure e) { + // TODO Auto-generated catch block + Log.logException(e); } catch (RowSpaceExceededException e) { - } - - prop.put("result", "1"); + // TODO Auto-generated catch block + Log.logException(e); + } + + } else if(post.containsKey(YMarkEntry.BOOKMARK.URL.key())) { + String url = post.get(YMarkEntry.BOOKMARK.URL.key(),YMarkEntry.BOOKMARK.URL.deflt()); + boolean hasProtocol = false; + for (YMarkTables.PROTOCOLS p : YMarkTables.PROTOCOLS.values()) { + if(url.toLowerCase().startsWith(p.protocol())) { + hasProtocol = true; + break; + } + } + if (!hasProtocol) { + url=YMarkTables.PROTOCOLS.HTTP.protocol(url); + } + + final YMarkEntry bmk = new YMarkEntry(); + + bmk.put(YMarkEntry.BOOKMARK.URL.key(), url); + bmk.put(YMarkEntry.BOOKMARK.TITLE.key(), post.get(YMarkEntry.BOOKMARK.TITLE.key(),YMarkEntry.BOOKMARK.TITLE.deflt())); + bmk.put(YMarkEntry.BOOKMARK.DESC.key(), post.get(YMarkEntry.BOOKMARK.DESC.key(),YMarkEntry.BOOKMARK.DESC.deflt())); + bmk.put(YMarkEntry.BOOKMARK.PUBLIC.key(), post.get(YMarkEntry.BOOKMARK.PUBLIC.key(),YMarkEntry.BOOKMARK.PUBLIC.deflt())); + bmk.put(YMarkEntry.BOOKMARK.TAGS.key(), YMarkUtil.cleanTagsString(post.get(YMarkEntry.BOOKMARK.TAGS.key(),YMarkEntry.BOOKMARK.TAGS.deflt()))); + bmk.put(YMarkEntry.BOOKMARK.FOLDERS.key(), YMarkUtil.cleanFoldersString(post.get(YMarkEntry.BOOKMARK.FOLDERS.key(),YMarkEntry.FOLDERS_UNSORTED))); + + try { + sb.tables.bookmarks.addBookmark(bmk_user, bmk, false, false); + } catch (IOException e) { + Log.logException(e); + } catch (RowSpaceExceededException e) { + } + prop.put("status", "1"); + } else { + prop.put("status", "0"); + } } else { prop.put(YMarkTables.USER_AUTHENTICATE,YMarkTables.USER_AUTHENTICATE_MSG); } diff --git a/htroot/api/ymarks/add_ymark.xml b/htroot/api/ymarks/add_ymark.xml index 64389d7a6..a72c699cc 100644 --- a/htroot/api/ymarks/add_ymark.xml +++ b/htroot/api/ymarks/add_ymark.xml @@ -1,2 +1,2 @@ -something went wrong
+ #(status)# +Status: error
:: -done
- #(/result)# +Status: ok
+ #(/status)#