diff --git a/locales/de.lng b/locales/de.lng index 8de7210a6..46583f3df 100644 --- a/locales/de.lng +++ b/locales/de.lng @@ -104,6 +104,11 @@ Augmented Browsing:==Angereichertes Browsing: Enables or disables augmented browsing. If enabled, all websites will be modified during loading.==Schaltet angereichertes Browsing an oder ab. Wenn aktiviert werden alle Webseite während des Ladens modifiziert. #----------------------------- +#File: Autocrawl_p.html +#--------------------------- +"Save"=="Speichern" +#----------------------------- + #File: Blacklist_p.html #--------------------------- Blacklist Administration==Blacklist Verwaltung diff --git a/locales/fr.lng b/locales/fr.lng index 126e146c8..912f628f0 100644 --- a/locales/fr.lng +++ b/locales/fr.lng @@ -9,7 +9,7 @@ # This file is maintained by gDupont # This file is written by gDupont, Marsupoil, Mikayé, Moubai -# If you find any mistakes or untranslated strings in this file please don't hesitate to email them to the maintainer. +# If you find any mistakes or untranslated strings in this file please don't hesitate to email them to the maintainer. #File: ConfigLanguage_p.html #--------------------------- @@ -21,53 +21,157 @@ ==gDupont #----------------------------- +#File: AccessGrid_p.html +#--------------------------- +YaCy Network Access==Accès réseau +Server Access Grid==Grille d'accès au serveur +This images shows incoming connections to your YaCy peer and outgoing connections from your peer to other peers and web servers==Cette image montre les connexions entrant vers votre instance YaCy et les connexions sortant de votre instance vers les autres pairs et serveurs web +#----------------------------- + #File: Blacklist_p.html #--------------------------- -Blacklist Manager==Gestionnaire des listes noire -Used Blacklist engine:==Moteur de liste noire utilisé: -This function provides an URL filter to the proxy; any blacklisted URL is blocked from being loaded.==Cette fonction fournit un filtre d'URL sur le serveur Proxy;. Toute URL provenant de la liste noire ne pourra être chargé. -You can define several blacklists and activate them separately.==Vous pouvez définir de nombreuses listes noires et les activer séparément. -You may also provide your blacklist to other peers by sharing them; in return you may==Vous pouvez aussi partager vos listes noires avec d'autres noeuds du réseau; en retour vous pourrez -collect blacklist entries from other peers.==collecter celles des autres. +This function provides an URL filter to the proxy; any blacklisted URL is blocked==Cette fonction permet d'ajouter un filtrage d'URL au proxy; toute URL présente dans la liste noire est bloquée. +Blacklist Administration==Administration de liste noire +from being loaded. You can define several blacklists and activate them separately.==Vous pouvez définir plusieurs listes noires et les activer séparément. +Select list to edit:==Sélectionnez la liste à éditer : +Create new list:==Créer une nouvelle liste : +Edit list==Modifier la liste +These are the domain name/path patterns in==Motifs de noms de domaine/adresses dans +Blacklist Pattern==Entrées +Edit selected pattern(s)==Editer l(es) entrée(s) sélectionnée(s) +Delete selected pattern(s)==Supprimer l(es) entrée(s) sélectionnée(s) +Move selected pattern(s) to==Déplacer l(es) entrée(s) sélectionnée(s) vers +Add new pattern:==Ajouter une nouvelle entrée : +The right '*', after the '/', can be replaced by a==Le caractère '*' à droite, après le '/', peut être remplacé par une +>regular expression<==>expression régulière< +a complete <==une < +(slow)==(lent) +Show entries:==Afficher les entrées : +Entries per page:==Entrées par page : +"set"=="Appliquer" +Edit existing pattern(s):==Modifier l(es) entrée(s) existante(s) +"Save URL pattern(s)"=="Enregistrer" +Settings for this list==Paramètres de la liste +"create"=="Créer" +Add URL pattern==Ajouter +You may also provide your blacklist to other peers by sharing them; in return you may==Vous pouvez aussi partager vos listes noires avec les autres noeuds du réseau; en retour vous pourrez +collect blacklist entries from other peers.==importer celles des autres. +Share/don't share this list==Partager/Ne pas partager +Delete this list==Supprimer +"Save"=="Appliquer" Active list:==Liste active: No blacklist selected==Aucune liste noire sélectionnée -Select list:==Sélectionner une liste: not shared::shared==non partagé::partagé -"select"=="sélectionner" -New list:==Nouvelle liste: -"create"=="créer" -Settings for this list==Paramètres de cette liste -"Save"=="Sauvegarder" -Share/don't share this list==Partager/ne pas partager cette liste -Delete this list==Supprimer cette liste -Edit this list==éditer cette liste -These are the domain name / path patterns in this blacklist:==Les noms de domaines/ modèle de chemin dans la liste noire: -You can select them here for deletion==Vous pouvez les sélectionner pour la suppression -Delete URL pattern==Supprimer le modèle d'URL -Add URL pattern==Ajouter un modèle d'URL -Import blacklist items from...==Importer les données d'une liste noire depuis... -other YaCy peers:==Autre noeud Yacy: -file:==fichiers: -"Load new blacklist items"=="Charger les nouvelles données de la liste noire" -#URL:==URL: -was removed from blacklist==a(ont) été supprimé(s) de la liste noire -was added to the blacklist==a(ont) été ajouté(s) à la liste noire Activate this list for==Activer cette liste pour #----------------------------- +#File: AccessTracker_p.html +#--------------------------- +Access Tracker==Suivi des connexions +Server Access Overview==Vue d'ensemble des accès serveur +This is a list of #[num]# requests to the local http server within the last hour.==Liste des #[num]# requêtes vers le serveur http local pendant l'heure précédente. +Showing #[num]# requests.==Affichage de #[num]# requêtes. +>Host<==>Hôte< +>Path<==>Chemin< +Access Count During==Nombre d'accès par période prédécente +last Second==Seconde +last Minute==Minute +last 10 Minutes==10 Minutes +last Hour==Heure +The following hosts are registered as source for brute-force requests to protected pages==Les hôtes suivants sont enregistrés comme sources pour des requêtes de force brute vers des pages protégées +Access Times==Temps d'Accès +Server Access Details==Détails des Accès Serveur +Local Search Log==Recherche dans le journal local +Local Search Host Tracker==Suivi des recherches locales +Remote Search Log==Journal des recherches distantes +Success:==Succès: +Remote Search Host Tracker==Suivi des recherches distantes +This is a list of searches that had been requested from this' peer search interface==Liste des requêtes lancées depuis l'interface de recherche de cette instance +Showing #[num]# entries from a total of #[total]# requests.==Affichage de #[num]# entrées sur un total de #[tota]# requêtes. +Requesting Host==Hôte appelant +Expected Results==Résultats attendus +Returned Results==Résultats renvoyés +Used Time (ms)==Temps utilisé (ms) +URL fetch (ms)==Récupération d'URL (ms) +Snippet comp (ms)==Traitement de 'Snippet' (ms) +Query==Requête +Search Word Hashes==Hash des mots recherchés +Count==Décompte +Queries Per Last Hour==Requêtes sur l'heure précédente +Access Dates==Dates d'accès +This is a list of searches that had been requested from remote peer search interface==Liste des recherches effectuées depuis l'interface de recherche de pairs distants +This is a list of requests (max. 1000) to the local http server within the last hour.==Liste des requêtes (max. 1000) vers le serveur http local pendant l'heure précédente. +#----------------------------- + +#File: BlacklistImpExp_p.html +#--------------------------- +Blacklist Import==Import de liste noire +Used Blacklist engine:==Gestionnaire de liste noire utilisé : +Import blacklist items from...==Imorter des entrées de liste noire depuis... +other YaCy peers:==D'autres pairs YaCy : +"Load new blacklist items"=="Importer" +plain text file:<==Un fichier texte brut :< +XML file:==Un fichier XML : +Upload a regular text file which contains one blacklist entry per line.==Importer un fichier texte brut contenant une entrée de liste noire par ligne. +Upload an XML file which contains one or more blacklists.==Importer un fichier XML contenant une ou plusieurs listes noires. +Export blacklist items to...==Exporter les éléments de liste noire vers... +Here you can export a blacklist as an XML file. This file will contain additional==Vous pouvez exporter ici une liste noire vers un fichier XML. Ce fichier contient des informations supplémentaires +information about which cases a blacklist is activated for.==décrivant les cas pour lesquels cette liste noire est activée. +"Export list as XML"=="Export XML" +Here you can export a blacklist as a regular text file with one blacklist entry per line.==Vous pouvez exporter ici une liste noire vers un fichier texte brut contenant une entrée de liste noire par ligne. +This file will not contain any additional information==Ce fichier ne contiendra aucune information supplémentaire +"Export list as text"=="Export texte" +URL:==Une URL : +#----------------------------- + +#File: AugmentedBrowsing_p.html +#--------------------------- +Augmented Browsing<==Navigation augmentée< +URL Proxy Settings<==Configuration du Proxy< +With this settings you can activate or deactivate URL proxy which is the method used for augmentation.==Avec cette configuration, vous pouvez activer ou désactiver le proxy utilisé pour la navigation augmentée. +Service call: ==Appel du service : +, where parameter is the url of an external web page.==, où parameter est l'url d'une page web externe. +>URL proxy:<==>Proxy:< +>Enabled<==>Activé< +Globally enables or disables URL proxy via ==Active ou désactive globalement le proxy via +Show search results via URL proxy:==Afficher les résultats de recherche via le proxy : +Enables or disables URL proxy for all search results. If enabled, all search results will be tunneled through URL proxy.==Active ou désactive le proxy pour tous les résultats de recherche. Lorsqu'activé, tous les résultats de recherche seront encapsulés par le proxy. +Alternatively you may add this javascript to your browser favorites/short-cuts, which will reload the current browser address==Alternativement vous pouvez ajouter ce JavaScript aux favoris/marques-pages de votre navigateur, qui rechargera l'adresse courante +via the YaCy proxy servlet.==via la servlet proxy de YaCy. +or right-click this link and add to favorites:==ou bien faites un clic droit sur ce lien et créez un marque-page : +Restrict URL proxy use:==Restriction d'utilisation du proxy +Define client filter. Default: ==Définit un filtre client. Par défaut : +URL substitution:==Substitution d'URL : +Define URL substitution rules which allow navigating in proxy environment. Possible values: all, domainlist. Default: domainlist.==Définit les règles de substitution d'URL qui permettent de naviguer avec le proxy. Valeurs possibles : all, domainlist. Par défaut: domainlist. +"Submit"=="Enregistrer" +#----------------------------- + #File: Blog.html #--------------------------- +Comments==Commentaires +Edit<==Modifier< +previous entries==Entrées précédentes +next entries==Entrées suivantes +new entry==Nouvelle entrée +import XML-File==Importer des données XML +export as XML==Exporter en XML +Comments:==Commentaires : +deactivated==désactivés +>activated==>activés +moderated==modérés +Are you sure==Etes-vous sûr +that you want to delete==de vouloir supprimer +Confirm deletion==Confirmation +Yes, delete it.==Oui, supprimer. +No, leave it.==Non, conserver. by==par >edit==>éditer >delete==>supprimer -show more entries==montrer plus d'entrées -new entry==nouvelle entrée -import XML-File==importer des données XML -export as XML==exporter en XML Blog-Home==Accueil du blog Author:==Auteur: Subject:==Titre: Text:==Texte: +>edit==>éditer You can use==Vous pouvez utiliser Yacy-Wiki Code==le code YaCy-Wiki here.==ici. @@ -78,15 +182,43 @@ here.==ici. No changes have been submitted so far!==Aucun changement n'a été soumis ! Access denied==Accès refusé To edit or create blog-entries you need to be logged in as Admin or User who has Blog rights.==Pour éditer ou créer des entrées dans ce blog, vous devez être enregistré en tant qu'administrateur ou en tant qu'utilisateur avec des droits d'accès au blog. -Are you sure==êtes vous sûr -that you want to delete #[subject]# by #[author]#?==ce que vous souhaitez supprimer #[subject]# de #[author]# ? -Yes, delete it.==Oui, le supprimer. -No, leave it.==Non, le laisser. Import was successful!==L'importation a réussi ! Import failed, maybe the supplied file was no valid blog-backup?==L'importation a échoué, peut-être que le fichier importé n'était pas une archive de blog valide? Please select the XML-file you want to import:==Sélectionnez le fichier XML que vous souhaitez importer : #----------------------------- +#File: BlacklistCleaner_p.html +#--------------------------- +Blacklist Cleaner==Nettoyage de Liste Noire +Here you can remove or edit illegal or double blacklist-entries.==Vous pouvez nettoyer ici les entrées de liste noire incorrectes ou en double. +"Check"=="Vérifier" +Allow regular expressions in host part of blacklist entries.==Autoriser les expressions régulières dans la partie hôte des entrées de liste noire. +The blacklist-cleaner only works for the following blacklist-engines up to now:==Le nettoyeur de blacklist fonctionne seulement pour les gestionnaires de liste noire suivants jusqu'à maintenant : +Illegal Entries in #[blList]# for==Entrées incorrectes dans #[blList]# pour +Deleted #[delCount]# entries==#[delCount]# entrées supprimées +Altered #[alterCount]# entries!==#[alterCount]# entrées modifiées! +Two wildcards in host-part==Deux caractères génériques dans la partie hôte +Either subdomain or wildcard==Soit un sous-domaine soit un caractère générique +Path is invalid Regex==Le chemin est une expression régulière non valide +Wildcard not on begin or end==Pas de caractère générique au début ou à la fin +Host contains illegal chars==L'hôte contient des caractères incorrects +Double==Doublon +"Change Selected"=="Modifier Sélectionné" +"Delete Selected"=="Supprimer Sélectionné" +No Blacklist selected==Pas de blacklist sélectionnée +#----------------------------- + +#File: BlacklistTest_p.html +#--------------------------- +Blacklist Test==Test de liste noire +Used Blacklist engine:==Gestionnaire de liste noire : +Test list:==Test de liste : +The tested URL was==URL testée : +It is blocked for the following cases:==Blocage dans les cas suivants : +Search==Recherche +Surftips==Recommendations +#----------------------------- + #File: Bookmarks.html #--------------------------- YaCy '#[clientname]#': Bookmarks==YaCy '#[clientname]#': Marque-pages @@ -155,15 +287,6 @@ Time used==Temps utilisé Save User==Sauvegarder l'utilisateur #----------------------------- -#File: ConfigAdvanced_p.html -#--------------------------- -Advanced Config==Configuration avancée -Here are all configuration options from YaCy.==Toutes les options de configuration de YaCy sont ici. -You can change anything, but some options need a restart, and some options can crash YaCy, if wrong values are used.==Vous pouvez tout changer, mais certaines options nécessitent un redémarrage et certaines autres peuvent provoquer l'arrêt de YaCy si elles sont mal choisies. -For explanation please look into defaults/yacy.init==Pour des explications, regardez dans le fichier « defaults/yacy.init ». -"Save"=="Sauvegarder" -#----------------------------- - #File: ConfigBasic.html #--------------------------- Access Configuration==Configuration de l'accès @@ -270,6 +393,15 @@ You can use==Vous pouvez utiliser here.==ici. #----------------------------- +#File: ConfigProperties_p.html +#--------------------------- +Advanced Config==Configuration avancée +Here are all configuration options from YaCy.==Toutes les options de configuration de YaCy sont ici. +You can change anything, but some options need a restart, and some options can crash YaCy, if wrong values are used.==Vous pouvez tout changer, mais certaines options nécessitent un redémarrage et certaines autres peuvent provoquer l'arrêt de YaCy si elles sont mal choisies. +For explanation please look into defaults/yacy.init==Pour des explications, regardez dans le fichier « defaults/yacy.init ». +"Save"=="Sauvegarder" +#----------------------------- + #File: ConfigSkins_p.html #--------------------------- Skin Selection==Choix de thème @@ -2300,8 +2432,8 @@ Timing Settings for Search Sequence==Paramètres temporels la recherche Ranking and Heuristics==Classement et heuristique #Solr Ranking Config==Solr Ranking Config #RWI Ranking Config==RWI Ranking Config ->Heuristics<==>==Heuristiques< -#--------------------------- +>Heuristics<==>Heuristiques< +#----------------------------- #File: env/templates/submenuUseCaseAccount.template #--------------------------- diff --git a/locales/master.lng.xlf b/locales/master.lng.xlf index ce9715450..597df0df3 100644 --- a/locales/master.lng.xlf +++ b/locales/master.lng.xlf @@ -190,6 +190,62 @@ + + + + >Autocrawler< + + + Autocrawler automatically selects and adds tasks to the local crawl queue. + + + This will work best when there are already quite a few domains in the index. + + + Autocralwer Configuration + + + You need to restart for some settings to be applied + + + Enable Autocrawler: + + + Deep crawl every: + + + Warning: if this is bigger than "Rows to fetch" only shallow crawls will run. + + + Rows to fetch at once: + + + Recrawl only older than # days: + + + Get hosts by query: + + + Can be any valid Solr query. + + + Shallow crawl depth (0 to 2): + + + Deep crawl depth (1 to 5): + + + Index text: + + + Index media: + + + "Save" + + + + @@ -560,6 +616,9 @@ Please select the XML-file you want to import: + + Text: + diff --git a/locales/sk.lng b/locales/sk.lng index a414777f5..125e8acb0 100644 --- a/locales/sk.lng +++ b/locales/sk.lng @@ -137,15 +137,6 @@ Show==Zobraz Bookmarks per page.==záloziek na stránku. #----------------------------- -#File: ConfigAdvanced_p.html -#--------------------------- -Advanced Config==Pokrocile nastavenia -Here are all configuration options from YaCy.==Tu sa nachadzaju vsetky konfiguracne nastavenia YaCy. -You can change anything, but some options need a restart, and some options can crash YaCy, if wrong values are used.==Vsetky konfiguracne nastavenia mozu byt zmenene, avsak niektore volby vyzaduju restart a niektore mozu sposobit pad YaCy v pripade zadnia nespravnych hodnot. -For explanation please look into defaults/yacy.init==Vysvetlenie najdete v subore defaults/yacy.init -"Save"=="Uloz" -#----------------------------- - #File: ConfigBasic.html #--------------------------- Select a language for the interface==Zvolte jazyk web rozhrania @@ -223,6 +214,15 @@ Comment==Komentár "Save"=="Uloz profil" #----------------------------- +#File: ConfigProperties_p.html +#--------------------------- +Advanced Config==Pokrocile nastavenia +Here are all configuration options from YaCy.==Tu sa nachadzaju vsetky konfiguracne nastavenia YaCy. +You can change anything, but some options need a restart, and some options can crash YaCy, if wrong values are used.==Vsetky konfiguracne nastavenia mozu byt zmenene, avsak niektore volby vyzaduju restart a niektore mozu sposobit pad YaCy v pripade zadnia nespravnych hodnot. +For explanation please look into defaults/yacy.init==Vysvetlenie najdete v subore defaults/yacy.init +"Save"=="Uloz" +#----------------------------- + #File: ConfigSkins_p.html #--------------------------- Skin Selection==Vyber skinov @@ -1852,7 +1852,6 @@ user page.==stranky pouzivatelov. #File: ViewFile.html #--------------------------- -YaCy '#[clientname]#': View URL Content==YaCy '#[clientname]#': Zobraz obsah URL adresy View URL Content==Zobraz obsah URL adresy #URL==URL #Hash==Hash diff --git a/source/net/yacy/cora/date/GenericFormatter.java b/source/net/yacy/cora/date/GenericFormatter.java index 16c6084d2..663c95f6c 100644 --- a/source/net/yacy/cora/date/GenericFormatter.java +++ b/source/net/yacy/cora/date/GenericFormatter.java @@ -137,14 +137,18 @@ public class GenericFormatter extends AbstractFormatter implements DateFormatter * @throws ParseException */ public Calendar parse(final String timeString, final String UTCOffset) throws ParseException { - // FIXME: This method returns an incorrect date, check callers! - // ex: de.anomic.server.serverDate.parseShortSecond("20070101120000", "+0200").toGMTString() - // => 1 Jan 2007 13:00:00 GMT if (timeString == null || timeString.isEmpty()) { return Calendar.getInstance(UTCtimeZone); } if (UTCOffset == null || UTCOffset.isEmpty()) { return Calendar.getInstance(UTCtimeZone); } - return parse(timeString, UTCDiff(UTCOffset)); + return parse(timeString, UTCDiff(UTCOffset)); // offset expected in min } + /** + * Calculates the time offset in minutes given as timezoneoffsetstring (diffString) + * e.g. "+0300" returns 180 + * + * @param diffString with fixed timezone format + * @return parsed timezone string in minutes + */ private static int UTCDiff(final String diffString) { if (diffString.length() != 5) throw new IllegalArgumentException("UTC String malformed (wrong size):" + diffString); boolean ahead = true; @@ -153,7 +157,7 @@ public class GenericFormatter extends AbstractFormatter implements DateFormatter else throw new IllegalArgumentException("UTC String malformed (wrong sign):" + diffString); final int oh = NumberTools.parseIntDecSubstring(diffString, 1, 3); final int om = NumberTools.parseIntDecSubstring(diffString, 3); - return (int) ((ahead) ? 1 : -1 * (oh * AbstractFormatter.hourMillis + om * AbstractFormatter.minuteMillis)); + return (int) ( ((ahead) ? 1 : -1) * (oh * 60 + om)); } /** diff --git a/source/net/yacy/cora/document/id/DigestURL.java b/source/net/yacy/cora/document/id/DigestURL.java index 40328b1c4..21dd3a04b 100644 --- a/source/net/yacy/cora/document/id/DigestURL.java +++ b/source/net/yacy/cora/document/id/DigestURL.java @@ -244,11 +244,12 @@ public class DigestURL extends MultiProtocolURL implements Serializable { // find rootpath int rootpathStart = 0; int rootpathEnd = this.path.length() - 1; - if (!this.path.isEmpty() && this.path.charAt(0) == '/') + if (!this.path.isEmpty() && (this.path.charAt(0) == '/' || this.path.charAt(0) == '\\')) rootpathStart = 1; if (this.path.endsWith("/")) rootpathEnd = this.path.length() - 2; p = this.path.indexOf('/', rootpathStart); + if (this.isFile() && p < 0) p = this.path.indexOf('\\', rootpathStart); // double-check for windows path (if it's a file url) String rootpath = ""; if (p > 0 && p < rootpathEnd) { rootpath = this.path.substring(rootpathStart, p); @@ -264,7 +265,7 @@ public class DigestURL extends MultiProtocolURL implements Serializable { final StringBuilder hashs = new StringBuilder(12); assert hashs.length() == 0; // form the 'local' part of the hash - final String normalform = toNormalform(true, true); + final String normalform = toNormalform(true, true); // normalizes also Windows backslash in path to '/' for file url final String b64l = Base64Order.enhancedCoder.encode(Digest.encodeMD5Raw(normalform)); if (b64l.length() < 5) return null; hashs.append(b64l.substring(0, 5)); // 5 chars diff --git a/source/net/yacy/cora/document/id/MultiProtocolURL.java b/source/net/yacy/cora/document/id/MultiProtocolURL.java index 64570dd4c..536b26224 100644 --- a/source/net/yacy/cora/document/id/MultiProtocolURL.java +++ b/source/net/yacy/cora/document/id/MultiProtocolURL.java @@ -216,7 +216,13 @@ public class MultiProtocolURL implements Serializable, Comparable= 0) { + q = url.indexOf("?", p + 3); + } + } int r; if (q < 0) { if ((r = url.indexOf('@', p + 3)) < 0) { @@ -832,7 +838,7 @@ public class MultiProtocolURL implements Serializable, Comparable= 0) { // normalize windows backslash (important for hash computation) + urlPath = urlPath.replace('\\', '/'); + } u.append(urlPath); String result = u.toString(); diff --git a/source/net/yacy/document/Document.java b/source/net/yacy/document/Document.java index a594878e2..75b56606f 100644 --- a/source/net/yacy/document/Document.java +++ b/source/net/yacy/document/Document.java @@ -638,10 +638,13 @@ dc_rights return v; } + /** + * We find all links that are part of a reference inside a url + * + * @param links links is either a Set of AnchorURL, Strings (with urls) or htmlFilterImageEntries + * @return map with contained urls as key and "ref" as value + */ private static Map allReflinks(final Collection links) { - // links is either a Set of Strings (with urls) or - // htmlFilterImageEntries - // we find all links that are part of a reference inside a url final Map v = new HashMap(); final Iterator i = links.iterator(); Object o; @@ -663,7 +666,9 @@ dc_rights continue loop; } u = url.toNormalform(true); - if ((pos = u.toLowerCase().indexOf("http://", 7)) > 0) { + + // find start of a referenced http url + if ((pos = u.toLowerCase().indexOf("http://", 7)) > 0) { // 7 = skip the protocol part of the source url i.remove(); u = u.substring(pos); while ((pos = u.toLowerCase().indexOf("http://", 7)) > 0) @@ -673,16 +678,30 @@ dc_rights v.put(url, "ref"); continue loop; } - if ((pos = u.toLowerCase().indexOf("/www.", 7)) > 0) { + + // find start of a referenced https url + if ((pos = u.toLowerCase().indexOf("https://", 7)) > 0) { // 7 = skip the protocol part of the source url i.remove(); - u = "http:/" + u.substring(pos); - while ((pos = u.toLowerCase().indexOf("/www.", 7)) > 0) - u = "http:/" + u.substring(pos); + u = u.substring(pos); + while ((pos = u.toLowerCase().indexOf("https://", 7)) > 0) + u = u.substring(pos); url = new AnchorURL(u); if (!(v.containsKey(url))) v.put(url, "ref"); continue loop; } + + if ((pos = u.toLowerCase().indexOf("/www.", 11)) > 0) { // 11 = skip protocol part + www of source url "http://www." + i.remove(); + u = url.getProtocol()+":/" + u.substring(pos); + while ((pos = u.toLowerCase().indexOf("/www.", 11)) > 0) + u = url.getProtocol()+":/" + u.substring(pos); + + AnchorURL addurl = new AnchorURL(u); + if (!(v.containsKey(addurl))) + v.put(addurl, "ref"); + continue loop; + } } catch (final MalformedURLException e) { } return v; diff --git a/test/java/net/yacy/cora/document/id/DigestURLTest.java b/test/java/net/yacy/cora/document/id/DigestURLTest.java index 587a4ee27..33eaec695 100644 --- a/test/java/net/yacy/cora/document/id/DigestURLTest.java +++ b/test/java/net/yacy/cora/document/id/DigestURLTest.java @@ -2,6 +2,7 @@ package net.yacy.cora.document.id; import java.net.MalformedURLException; import junit.framework.TestCase; +import net.yacy.cora.document.encoding.ASCII; import org.junit.Test; public class DigestURLTest extends TestCase { @@ -30,4 +31,23 @@ public class DigestURLTest extends TestCase { } } + /** + * Test hash() of DigestURL and File protocol to deliver same hash for + * allowed Windows or Java notation of same file + */ + @Test + public void testHash_ForFile() throws MalformedURLException { + String winUrlStr = "file:///C:\\tmp\\test.html"; // allowed Windows notation + String javaUrlStr = "file:///C:/tmp/test.html"; // allowed Java notation for Windows file system + + DigestURL winUrl = new DigestURL(winUrlStr); + DigestURL javaUrl = new DigestURL(javaUrlStr); + + String winHashResult = ASCII.String(winUrl.hash()); + String javaHashResult = ASCII.String(javaUrl.hash()); + + assertEquals("hash for same file url", javaHashResult, winHashResult); + + } + } diff --git a/test/java/net/yacy/cora/document/id/MultiProtocolURLTest.java b/test/java/net/yacy/cora/document/id/MultiProtocolURLTest.java index 9ada0285c..c8d012a7f 100644 --- a/test/java/net/yacy/cora/document/id/MultiProtocolURLTest.java +++ b/test/java/net/yacy/cora/document/id/MultiProtocolURLTest.java @@ -127,6 +127,9 @@ public class MultiProtocolURLTest { new String[]{"http://www.yacy.net?query=test", "www.yacy.net"}, new String[]{"http://www.yacy.net:?query=test", "www.yacy.net"}, new String[]{"//www.yacy.net:?query=test", "www.yacy.net"}, + + new String[]{"http://www.yacy.net?data=1/2/3", "www.yacy.net"}, + new String[]{"http://www.yacy.net?url=http://test.com", "www.yacy.net"} }; for (int i = 0; i < testStrings.length; i++) {