fixed problems in basic config and added language setting

git-svn-id: https://svn.berlios.de/svnroot/repos/yacy/trunk@1799 6c8d7289-2bf4-0310-a012-ef5d649a1542
This commit is contained in:
orbiter 2006-03-02 22:25:46 +00:00
parent e9a2586c7a
commit a4682e2810
9 changed files with 129 additions and 93 deletions

View File

@ -1,7 +1,7 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html>
<head>
<title>YaCy '#[clientname]#': Advanced Config</title>
<title>YaCy '#[clientname]#': Basic Configuration</title>
#%env/templates/metas.template%#
<script>
<!--
@ -23,14 +23,17 @@ Your YaCy Peer needs some basic information to operate properly
<form action="ConfigBasic.html" method="post" enctype="multipart/form-data">
<ol>
<li>#(statusName)#<img src="/env/grafics/warning.png">Your peer name has not been customized; please set your own peer name::<img src="/env/grafics/ok.png" height="32px" width="32px">You have a nice peer name#(/statusName)#<br>
Peer Name: <input type="text" name="peername" value="#[defaultName]#" size="16" maxlength="32"><br></li>
<li>#(statusPassword)#<img src="/env/grafics/warning.png">Please set a password for your peer to protect your settings (> 3 characters); if this is successful you will be asked to log in with these values immediately::<img src="/env/grafics/ok.png" height="32px" width="32px">Password is set#(/statusPassword)#<br>
<li><img src="/env/grafics/ok.png" height="32px" width="32px">&nbsp;Select a language for this interface:<br>
<input type="radio" name="language" value="de" #(langDeutsch)#::checked#(/langDeutsch)#>Deutsch&nbsp;
<input type="radio" name="language" value="default" #(langEnglish)#::checked#(/langEnglish)#>English<br><br></li>
<li>#(statusPassword)#<img src="/env/grafics/warning.png">&nbsp;Please set a password for your peer to protect your settings (> 3 characters); if this is successful you will be asked to log in with these values immediately.::<img src="/env/grafics/ok.png" height="32px" width="32px">&nbsp;Password is set#(/statusPassword)#<br>
Peer User: <input type="text" name="adminuser" value="#[defaultUser]#" size="16" maxlength="32"><br>
Peer Password: <input type="text" name="adminpw1" value="" size="16" maxlength="32"><br>
Peer Password: <input type="text" name="adminpw2" value="" size="16" maxlength="32">(repeat same password)<br></li>
<li>#(statusPort)#<img src="/env/grafics/warning.png">Your peer cannot be reached from outside; please open your firewall for this port and/or set a virtual server option in your router to allow connections on this port::<img src="/env/grafics/ok.png" height="32px" width="32px">Your peer can be reached by other peers#(/statusPort)#<br>
Peer Port: <input type="text" name="port" value="#[defaultPort]#" size="5" maxlength="5"><br></li>
Peer Password: <input type="password" name="adminpw1" value="" size="16" maxlength="32"><br>
Peer Password: <input type="password" name="adminpw2" value="" size="16" maxlength="32">(repeat same password)<br><br></li>
<li>#(statusName)#<img src="/env/grafics/warning.png">&nbsp;Your peer name has not been customized; please set your own peer name::<img src="/env/grafics/ok.png" height="32px" width="32px">&nbsp;You have a nice peer name#(/statusName)#<br>
Peer Name: <input type="text" name="peername" value="#[defaultName]#" size="20" maxlength="32"><br><br></li>
<li>#(statusPort)#<img src="/env/grafics/warning.png">&nbsp;Your peer cannot be reached from outside (which is not fatal, but would be good for the YaCy network); please open your firewall for this port and/or set a virtual server option in your router to allow connections on this port.::<img src="/env/grafics/ok.png" height="32px" width="32px">&nbsp;Your peer can be reached by other peers#(/statusPort)#<br>
Peer Port: <input type="text" name="port" value="#[defaultPort]#" size="5" maxlength="5"><br><br></li>
</ol>
<br>&nbsp;&nbsp;&nbsp;&nbsp;<input type="submit" name="set" value="Set Configuration">
</form>
@ -39,14 +42,13 @@ Your YaCy Peer needs some basic information to operate properly
#(nextStep)#
Your basic configuration is complete! You can now (for example):
<ul>
<li><a href="index.html">start searching the web without censoring</a>,</li>
<li><a href="IndexCreate_p.html">start your own crawl and contribute to the global index</a>,</li>
<li><a href="ConfigProfile.html">set a personal peer profile (optional settings)</a>, or</li>
<li>just <a href="Network.html">monitor at the network page what the other peers are doing</a>;</li>
<li>to shut down your peer, please go to the <a href="Status.html">Status Page</a> and click on the Shutdown button.</li>
<li><a href="index.html">start an uncensored search</a>;</li>
<li><a href="IndexCreate_p.html">start your own crawl</a> and contribute to the global index, or create your own private web index;</li>
<li><a href="ConfigProfile_p.html">set a personal peer profile</a> (optional settings); or</li>
<li>just <a href="Network.html">monitor at the network page</a> what the other peers are doing</li>
</ul>::
Your Peer name is a default name; please set another peer name. If this does not work, the name is probably taken by someone else. Please try to choose another one.::
You did not set a user name and/or a password. Some pages are protected by passwords. You should set a password here to secure your YaCy peer.::
Your Peer name is a default name; please set another peer name. If this does not work, the name is probably taken by someone else. Please try to choose another one.::
You did not open a port in your firewall or your router does not forward the server port to your peer. This is needed if you want to fully participate in the YaCy network. You can also use your peer without opening it, but this is not recomended.
#(/nextStep)#
#%env/templates/footer.template%#

View File

@ -47,6 +47,9 @@
// javac -classpath .:../classes ConfigBasic_p.java
// if the shell's current path is HTROOT
import java.io.File;
import de.anomic.data.translator;
import de.anomic.http.httpHeader;
import de.anomic.kelondro.kelondroBase64Order;
import de.anomic.plasma.plasmaSwitchboard;
@ -64,7 +67,9 @@ public class ConfigBasic {
// return variable that accumulates replacements
plasmaSwitchboard sb = (plasmaSwitchboard) env;
serverObjects prop = new serverObjects();
String langPath = new File(env.getRootPath(), env.getConfig("langPath", "DATA/LOCALE")).toString();
String lang = env.getConfig("htLocaleSelection", "default");
int authentication = sb.adminAuthenticated(header);
if (authentication < 2) {
// must authenticate
@ -72,7 +77,15 @@ public class ConfigBasic {
return prop;
}
serverInstantThread.oneTimeJob(sb.yc, "peerPing", null, 0);
if ((yacyCore.seedDB.mySeed.isVirgin()) || (yacyCore.seedDB.mySeed.isJunior())) {
serverInstantThread.oneTimeJob(sb.yc, "peerPing", null, 0);
try {Thread.sleep(3000);} catch (InterruptedException e) {} // wait a little bit for success of ping
}
// language settings
if ((post != null) && (!(post.get("language", "default").equals(lang)))) {
translator.changeLang(env, langPath, post.get("language", "default") + ".lng");
}
// password settings
String user = (post == null) ? "" : (String) post.get("adminuser", "");
@ -97,17 +110,14 @@ public class ConfigBasic {
// check if peer name already exists
yacySeed oldSeed = yacyCore.seedDB.lookupByName(peerName);
if ((oldSeed == null) || (env.getConfig("peerName", "").equals(peerName))) {
if ((peerName.length() >= 3) && (oldSeed == null) && (!(env.getConfig("peerName", "").equals(peerName)))) {
// the name is new
boolean nameOK = (peerName.length() <= 80);
for (int i = 0; i < peerName.length(); i++) {
if ("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_".indexOf(peerName.charAt(i)) < 0)
nameOK = false;
}
if (nameOK) {
// set values
env.setConfig("peerName", peerName);
}
if (nameOK) env.setConfig("peerName", peerName);
}
// check port
@ -119,15 +129,15 @@ public class ConfigBasic {
}
// check if values are proper
boolean properName = (env.getConfig("peerName","").length() > 0) && (env.getConfig("peerName","0").charAt(0) > '9');
boolean properPW = (env.getConfig("adminAccount", "").length() == 0) && (env.getConfig("adminAccountBase64MD5", "").length() > 0);
boolean properPort = yacyCore.seedDB.mySeed.isSenior();
boolean properName = (env.getConfig("peerName","").length() >= 3) && (!(yacySeed.isDefaultPeerName(env.getConfig("peerName",""))));
boolean properPort = (yacyCore.seedDB.mySeed.isSenior()) || (yacyCore.seedDB.mySeed.isPrincipal());
prop.put("statusName", (properName) ? 1 : 0);
prop.put("statusPassword", (properPW) ? 1 : 0);
prop.put("statusPort", (properPort) ? 1 : 0);
if (properName) {
if (properPW) {
if (properPW) {
if (properName) {
if (properPort) {
prop.put("nextStep", 0);
} else {
@ -144,7 +154,17 @@ public class ConfigBasic {
prop.put("defaultName", env.getConfig("peerName", ""));
prop.put("defaultUser", "admin");
prop.put("defaultPort", env.getConfig("port", "8080"));
lang = env.getConfig("htLocaleSelection", "default"); // re-assign lang, may have changed
if (lang.equals("default")) {
prop.put("langDeutsch", 0);
prop.put("langEnglish", 1);
} else if (lang.equals("de")) {
prop.put("langDeutsch", 1);
prop.put("langEnglish", 0);
} else {
prop.put("langDeutsch", 0);
prop.put("langEnglish", 0);
}
return prop;
}

View File

@ -6,7 +6,8 @@
</head>
<body marginheight="0" marginwidth="0" leftmargin="0" topmargin="0">
#%env/templates/header.template%#
<br><br>
#%env/templates/submenuConfig.template%#
<br>
<h2>Language selection</h2>
<p>
You can change the language of the YaCy-webinterface with translation files.
@ -41,7 +42,7 @@
Available Languages:
</td>
<td valign="top" class="TableCellLight">
<form action="Language_p.html">
<form action="ConfigLanguage_p.html">
<select size="10" name="lang">
#{langlist}#
<option value="#[file]#">#[name]#</option>
@ -54,7 +55,7 @@
</tr>
<tr>
<td valign="top" class="TableCellDark">
<form action="Language_p.html">
<form action="ConfigLanguage_p.html">
Install new language from URL:
</td>
<td valign="top" class="TableCellLight">

View File

@ -64,48 +64,7 @@ import de.anomic.server.serverSwitch;
import de.anomic.data.translator;
public class Language_p {
public static HashMap langMap(serverSwitch env) {
String[] ms = env.getConfig("htLocaleLang", "").split(",");
HashMap map = new HashMap();
int p;
for (int i = 0; i < ms.length; i++) {
p = ms[i].indexOf("/");
if (p > 0)
map.put(ms[i].substring(0, p), ms[i].substring(p + 1));
}
return map;
}
private static boolean changeLang(serverSwitch env, String langPath, String lang) {
if (lang.equals("default")) {
env.setConfig("htLocaleSelection", "default");
return true;
}
String htRootPath = env.getConfig("htRootPath", "htroot");
File sourceDir = new File(env.getRootPath(), htRootPath);
File destDir = new File(env.getConfig("htLocalePath","DATA/HTDOCS/locale"), lang.substring(0, lang.length() - 4));// cut
// .lng
//File destDir = new File(env.getRootPath(), htRootPath + "/locale/" + lang.substring(0, lang.length() - 4));// cut
// .lng
File translationFile = new File(langPath, lang);
//if (translator.translateFiles(sourceDir, destDir, translationFile, "html")) {
if(translator.translateFilesRecursive(sourceDir, destDir,
translationFile, "html,template,inc", "locale")){
env.setConfig("htLocaleSelection", lang.substring(0, lang.length() - 4));
try {
BufferedWriter bw = new BufferedWriter(new PrintWriter(new FileWriter(new File(destDir, "version"))));
bw.write(env.getConfig("svnRevision", "Error getting Version"));
bw.close();
} catch (IOException e) {
// Error
}
return true;
}
return false;
}
public class ConfigLanguage_p {
public static serverObjects respond(httpHeader header, serverObjects post, serverSwitch env) {
//listManager.switchboard = (plasmaSwitchboard) env;
@ -125,7 +84,7 @@ public class Language_p {
if (post != null){
//change language
if(post.containsKey("use_button")){
changeLang(env, langPath, (String)post.get("lang"));
translator.changeLang(env, langPath, (String)post.get("lang"));
//delete language file
}else if(post.containsKey("delete")){
@ -157,16 +116,15 @@ public class Language_p {
return prop;
}
if(post.containsKey("use_lang") && ((String)post.get("use_lang")).equals("on")){
changeLang(env, langPath, url.substring(url.lastIndexOf("/"), url.length()));
translator.changeLang(env, langPath, url.substring(url.lastIndexOf("/"), url.length()));
}
}
}
//reread language files
langFiles = listManager.getDirListing(langPath);
int i;
HashMap langNames = langMap(env);
HashMap langNames = translator.langMap(env);
String langKey, langName;
//virtual entry

View File

@ -56,13 +56,12 @@
<tr><td class="MenuHeader">&nbsp;Peer&nbsp;Control</td></tr>
<tr><td class="MenuItem">&nbsp;<img border="0" src="/env/grafics/lock.gif" align="top">&nbsp;<a href="/ConfigBasic.html" class="MenuItemLink">Basic Configuration</a></td></tr>
<tr><td class="MenuItem">&nbsp;<img border="0" src="/env/grafics/lock.gif" align="top">&nbsp;<a href="/Settings_p.html" class="MenuItemLink">Advanced Settings</a></td></tr>
<tr><td class="MenuItem">&nbsp;<a href="/Status.html" accesskey="t" class="MenuItemLink">Status</a></td></tr>
<tr><td class="MenuItem">&nbsp;<a href="/Network.html" accesskey="w" class="MenuItemLink">Network</a></td></tr>
<tr><td class="MenuItem">&nbsp;<a href="/News.html" accesskey="n" class="MenuItemLink">News</a></td></tr>
<tr><td class="MenuItem">&nbsp;<a href="/Status.html" accesskey="t" class="MenuItemLink">Status &amp; Shutdown</a></td></tr>
<tr><td class="MenuItem">&nbsp;<a href="/Network.html" accesskey="w" class="MenuItemLink">Network Monitor</a></td></tr>
<tr><td class="MenuItem">&nbsp;<a href="/News.html" accesskey="n" class="MenuItemLink">News System</a></td></tr>
<tr><td class="MenuItem">&nbsp;<img border="0" src="/env/grafics/lock.gif" align="top">&nbsp;<a href="/ViewLog_p.html" class="MenuItemLink">Log</a></td></tr>
<tr><td class="MenuItem">&nbsp;<img border="0" src="/env/grafics/lock.gif" align="top">&nbsp;<a href="/PerformanceQueues_p.html" class="MenuItemLink">Performance</a></td></tr>
<tr><td class="MenuItem">&nbsp;<img border="0" src="/env/grafics/lock.gif" align="top">&nbsp;<a href="/Connections_p.html" class="MenuItemLink">Connections</a></td></tr>
<tr><td class="MenuItem">&nbsp;<img border="0" src="/env/grafics/lock.gif" align="top">&nbsp;<a href="/Language_p.html" class="MenuItemLink">Language</a></td></tr>
<tr><td class="MenuItem">&nbsp;<img border="0" src="/env/grafics/lock.gif" align="top">&nbsp;<a href="/Skins_p.html" class="MenuItemLink">Skins</a></td></tr>
<tr><td class="MenuSpacer"></td></tr>

View File

@ -1,14 +1,17 @@
<table width="100%" border="0" cellpadding="0" cellspacing="0" class="SubMenu">
<tr height="10"><td colspan="5" class="MenuHeader">&nbsp;Peer Configuration Menu</td></tr>
<tr height="2"><td colspan="5"></td></tr>
<tr height="10"><td colspan="7" class="MenuHeader">&nbsp;Peer Configuration Menu</td></tr>
<tr height="2"><td colspan="7"></td></tr>
<tr class="TableHeader">
<td width="40%" class="MenuSubItem">&nbsp;<img border="0" src="/env/grafics/lock.gif" align="top">&nbsp;
<a href="/ConfigBasic.html" class="MenuItemLink">Basic Configuraion</a>&nbsp;</td>
<td width="25%" class="MenuSubItem">&nbsp;<img border="0" src="/env/grafics/lock.gif" align="top">&nbsp;
<a href="/ConfigBasic.html" class="MenuItemLink">Basic Settings</a>&nbsp;</td>
<td class="MenuSubSpacer"></td>
<td width="40%" class="MenuSubItem">&nbsp;<img border="0" src="/env/grafics/lock.gif" align="top">&nbsp;
<a href="/ConfigProfile_p.html" class="MenuItemLink">Profile Configuraion</a>&nbsp;</td>
<td width="25%" class="MenuSubItem">&nbsp;<img border="0" src="/env/grafics/lock.gif" align="top">&nbsp;
<a href="/ConfigLanguage_p.html" class="MenuItemLink">Language</a>&nbsp;</td>
<td class="MenuSubSpacer"></td>
<td width="20%" class="MenuSubItem">&nbsp;<img border="0" src="/env/grafics/lock.gif" align="top">&nbsp;
<a href="/ConfigAdvanced_p.html" class="MenuItemLink">Advanced Configuration</a>&nbsp;</td>
<td width="25%" class="MenuSubItem">&nbsp;<img border="0" src="/env/grafics/lock.gif" align="top">&nbsp;
<a href="/ConfigProfile_p.html" class="MenuItemLink">Profile</a>&nbsp;</td>
<td class="MenuSubSpacer"></td>
<td width="25%" class="MenuSubItem">&nbsp;<img border="0" src="/env/grafics/lock.gif" align="top">&nbsp;
<a href="/ConfigAdvanced_p.html" class="MenuItemLink">Advanced</a>&nbsp;</td>
</tr>
</table>

View File

@ -51,8 +51,10 @@ import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.Vector;
@ -60,6 +62,7 @@ import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.lang.IndexOutOfBoundsException;
import de.anomic.server.serverSwitch;
import de.anomic.server.logging.serverLog;
import de.anomic.data.listManager;
@ -228,4 +231,44 @@ public class translator {
return true;
}
public static HashMap langMap(serverSwitch env) {
String[] ms = env.getConfig("htLocaleLang", "").split(",");
HashMap map = new HashMap();
int p;
for (int i = 0; i < ms.length; i++) {
p = ms[i].indexOf("/");
if (p > 0)
map.put(ms[i].substring(0, p), ms[i].substring(p + 1));
}
return map;
}
public static boolean changeLang(serverSwitch env, String langPath, String lang) {
if ((lang.equals("default")) || (lang.equals("default.lng"))) {
env.setConfig("htLocaleSelection", "default");
return true;
}
String htRootPath = env.getConfig("htRootPath", "htroot");
File sourceDir = new File(env.getRootPath(), htRootPath);
File destDir = new File(env.getConfig("htLocalePath","DATA/HTDOCS/locale"), lang.substring(0, lang.length() - 4));// cut
// .lng
//File destDir = new File(env.getRootPath(), htRootPath + "/locale/" + lang.substring(0, lang.length() - 4));// cut
// .lng
File translationFile = new File(langPath, lang);
//if (translator.translateFiles(sourceDir, destDir, translationFile, "html")) {
if(translator.translateFilesRecursive(sourceDir, destDir,
translationFile, "html,template,inc", "locale")){
env.setConfig("htLocaleSelection", lang.substring(0, lang.length() - 4));
try {
BufferedWriter bw = new BufferedWriter(new PrintWriter(new FileWriter(new File(destDir, "version"))));
bw.write(env.getConfig("svnRevision", "Error getting Version"));
bw.close();
} catch (IOException e) {
// Error
}
return true;
}
return false;
}
}

View File

@ -59,7 +59,6 @@ import de.anomic.http.httpc;
import de.anomic.plasma.plasmaSwitchboard;
import de.anomic.server.serverCore;
import de.anomic.server.serverDate;
import de.anomic.server.serverSystem;
import de.anomic.tools.disorderSet;
import de.anomic.yacy.yacySeed;
@ -97,10 +96,7 @@ public class yacyPeerActions {
public void updateMySeed() {
if (sb.getConfig("peerName", "anomic").equals("anomic")) {
// generate new peer name
String newPeerName = serverCore.publicIP() + yacyCore.speedKey + serverSystem.infoKey() + (System.currentTimeMillis() & 99);
newPeerName = newPeerName.replace('.', '-');
newPeerName = newPeerName.replace('_', '-');
sb.setConfig("peerName", newPeerName);
sb.setConfig("peerName", yacySeed.makeDefaultPeerName());
}
seedDB.mySeed.put(yacySeed.NAME, sb.getConfig("peerName", "nameless"));
if ((serverCore.portForwardingEnabled) && (serverCore.portForwarding != null)) {

View File

@ -76,6 +76,7 @@ import de.anomic.plasma.plasmaSwitchboard;
import de.anomic.server.serverCodings;
import de.anomic.server.serverDate;
import de.anomic.server.serverCore;
import de.anomic.server.serverSystem;
import de.anomic.tools.bitfield;
import de.anomic.tools.crypt;
@ -185,6 +186,19 @@ public class yacySeed {
this.available = 0;
}
public static String makeDefaultPeerName() {
// generate a default peer name
String name = serverCore.publicIP() + "-" + yacyCore.speedKey + "dpn" + serverSystem.infoKey() + (System.currentTimeMillis() & 99);
name = name.replace('.', '-');
name = name.replace('_', '-');
return name;
}
public static boolean isDefaultPeerName(String name) {
return ((name != null) && (name.length() > 10) && (name.charAt(0) <= '9') && (name.charAt(name.length() - 1) <= '9') && (name.indexOf("dpn") > 0));
}
/**
* try to get the IP<br>
* @return the IP or null